Commit 6a67fd6b1083eb8a00517209b0a2cae58988c1f4
1 parent
d9e9eda5
预算报表:添加同比去年差异;新增报表:线路时刻表分析明细;
Showing
20 changed files
with
1542 additions
and
182 deletions
src/main/java/com/bsth/controller/forms/BudgetController.java
| ... | ... | @@ -188,4 +188,37 @@ public class BudgetController extends BaseController<Budget, Integer>{ |
| 188 | 188 | } |
| 189 | 189 | return service.timeSum(date, date2, type, key); |
| 190 | 190 | } |
| 191 | + | |
| 192 | + @RequestMapping(value = "/timeAnaly", method = RequestMethod.POST) | |
| 193 | + public Map<String, Object> timeAnaly(@RequestParam Map<String, Object> map) throws Exception{ | |
| 194 | + String company = ""; | |
| 195 | + if(map.get("company")!=null){ | |
| 196 | + company=map.get("company").toString(); | |
| 197 | + } | |
| 198 | + String subCompany = ""; | |
| 199 | + if(map.get("subCompany")!=null){ | |
| 200 | + subCompany=map.get("subCompany").toString(); | |
| 201 | + } | |
| 202 | + String date = ""; | |
| 203 | + if(map.get("date")!=null){ | |
| 204 | + date=map.get("date").toString(); | |
| 205 | + } | |
| 206 | + String line = ""; | |
| 207 | + if(map.get("line")!=null){ | |
| 208 | + line=map.get("line").toString(); | |
| 209 | + } | |
| 210 | + String model = ""; | |
| 211 | + if(map.get("model")!=null){ | |
| 212 | + model=map.get("model").toString(); | |
| 213 | + } | |
| 214 | + String type = ""; | |
| 215 | + if(map.get("type")!=null){ | |
| 216 | + type=map.get("type").toString(); | |
| 217 | + } | |
| 218 | + String key = ""; | |
| 219 | + if(map.get("key")!=null){ | |
| 220 | + key=map.get("key").toString(); | |
| 221 | + } | |
| 222 | + return service.timeAnaly(company, subCompany, date, line, model, type, key); | |
| 223 | + } | |
| 191 | 224 | } | ... | ... |
src/main/java/com/bsth/repository/schedule/SchedulePlanInfoRepository.java
| ... | ... | @@ -160,4 +160,12 @@ public interface SchedulePlanInfoRepository extends BaseRepository<SchedulePlanI |
| 160 | 160 | "where schedule_date >= ?1 and schedule_date <= ?2 " + |
| 161 | 161 | "group by schedule_date, xl_bm, j_gh, s_gh ", nativeQuery = true) |
| 162 | 162 | List<Object[]> findPersonnelSchedule(Date date1, Date date2); |
| 163 | + | |
| 164 | + @Query(value="select s from SchedulePlanInfo s where s.xlBm = ?1 and s.ttInfo = ?2 " | |
| 165 | + + "and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?3 order by s.lpName,bcs") | |
| 166 | + List<SchedulePlanInfo> findPlanByTTinfo(String xlBm, String ttInfo, String scheduleDate); | |
| 167 | + | |
| 168 | + @Query(value="select s from SchedulePlanInfo s where s.xlBm = ?1 " | |
| 169 | + + "and DATE_FORMAT(s.scheduleDate,'%Y-%m-%d') = ?2 order by s.lpName,bcs") | |
| 170 | + List<SchedulePlanInfo> findPlanByXlAndDate(String xlBm, String scheduleDate); | |
| 163 | 171 | } | ... | ... |
src/main/java/com/bsth/repository/schedule/TTInfoBxDetailRepository.java
| ... | ... | @@ -2,9 +2,15 @@ package com.bsth.repository.schedule; |
| 2 | 2 | |
| 3 | 3 | import com.bsth.entity.schedule.TTInfoBxDetail; |
| 4 | 4 | import com.bsth.repository.BaseRepository; |
| 5 | + | |
| 6 | +import java.util.List; | |
| 7 | + | |
| 8 | +import org.springframework.data.jpa.repository.Query; | |
| 5 | 9 | import org.springframework.stereotype.Repository; |
| 6 | 10 | |
| 7 | 11 | @Repository |
| 8 | 12 | public interface TTInfoBxDetailRepository extends BaseRepository<TTInfoBxDetail, Long> { |
| 9 | 13 | |
| 14 | + @Query(value = "select tt from TTInfoBxDetail tt where tt.ttinfo.id = ?1 and tt.xl.id = ?2 and tt.lp.id = ?3") | |
| 15 | + List<TTInfoBxDetail> findBxDetail( Long ttinfoId, Integer xl, Long lpId); | |
| 10 | 16 | } | ... | ... |
src/main/java/com/bsth/service/forms/BudgetService.java
| ... | ... | @@ -26,4 +26,7 @@ public interface BudgetService extends BaseService<Budget, Integer> { |
| 26 | 26 | public List<Map<String, Object>> budgetSum(String year, String nature, String type, String key); |
| 27 | 27 | |
| 28 | 28 | public List<Map<String, Object>> timeSum(String date, String date2, String type, String key) throws Exception; |
| 29 | + | |
| 30 | + public Map<String, Object> timeAnaly(String company, String subCompany, String date, | |
| 31 | + String line, String model, String type, String key) throws Exception; | |
| 29 | 32 | } | ... | ... |
src/main/java/com/bsth/service/forms/impl/BudgetServiceImpl.java
| ... | ... | @@ -38,6 +38,7 @@ import com.bsth.entity.calc.CalcStatistics; |
| 38 | 38 | import com.bsth.entity.forms.Budget; |
| 39 | 39 | import com.bsth.entity.forms.Revenue; |
| 40 | 40 | import com.bsth.entity.schedule.SchedulePlanInfo; |
| 41 | +import com.bsth.entity.schedule.TTInfoBxDetail; | |
| 41 | 42 | import com.bsth.repository.calc.CalcStatisticsRepository; |
| 42 | 43 | import com.bsth.repository.form.BudgetRepository; |
| 43 | 44 | import com.bsth.repository.form.RevenueRepository; |
| ... | ... | @@ -45,6 +46,7 @@ import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; |
| 45 | 46 | import com.bsth.repository.schedule.CarConfigInfoRepository; |
| 46 | 47 | import com.bsth.repository.schedule.EmployeeConfigInfoRepository; |
| 47 | 48 | import com.bsth.repository.schedule.SchedulePlanInfoRepository; |
| 49 | +import com.bsth.repository.schedule.TTInfoBxDetailRepository; | |
| 48 | 50 | import com.bsth.service.LineService; |
| 49 | 51 | import com.bsth.service.forms.BudgetService; |
| 50 | 52 | import com.bsth.service.impl.BaseServiceImpl; |
| ... | ... | @@ -78,6 +80,9 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 78 | 80 | private ScheduleRealInfoRepository scheduleRealRepository; |
| 79 | 81 | |
| 80 | 82 | @Autowired |
| 83 | + private TTInfoBxDetailRepository ttInfoBxDetailRepository; | |
| 84 | + | |
| 85 | + @Autowired | |
| 81 | 86 | JdbcTemplate jdbcTemplate; |
| 82 | 87 | |
| 83 | 88 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| ... | ... | @@ -420,6 +425,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 420 | 425 | @Override |
| 421 | 426 | public List<Map<String, Object>> budgetMileage(String year, String tttt, String kkk) { |
| 422 | 427 | // TODO Auto-generated method stub |
| 428 | + SimpleDateFormat sdfYY = new SimpleDateFormat("YYYY"); | |
| 423 | 429 | SimpleDateFormat sdfMM = new SimpleDateFormat("MM"); |
| 424 | 430 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); |
| 425 | 431 | Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>(); |
| ... | ... | @@ -427,6 +433,15 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 427 | 433 | List<Budget> findByYear = repository.findByYear(year); |
| 428 | 434 | List<CalcStatistics> list = calcStatisticsRepository.selectByDateAndLineTj3(year+"-01-01", year+"-12-31"); |
| 429 | 435 | |
| 436 | + String year_1 = ""; | |
| 437 | + try { | |
| 438 | + year_1 = sdfYY.format(sdfYY.parse((Integer.valueOf(year)-1)+"")); | |
| 439 | + } catch (ParseException e) { | |
| 440 | + // TODO Auto-generated catch block | |
| 441 | + e.printStackTrace(); | |
| 442 | + } | |
| 443 | + List<CalcStatistics> scheduleList_1 = calcStatisticsRepository.selectByDateAndLineTj3(year_1+"-01-01", year_1+"-12-31"); | |
| 444 | + | |
| 430 | 445 | Map<String, Map<String, Object>> xlMap = new HashMap<String, Map<String, Object>>(); |
| 431 | 446 | List<Map<String, Object>> xlList = new ArrayList<Map<String, Object>>(); |
| 432 | 447 | |
| ... | ... | @@ -439,7 +454,6 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 439 | 454 | if(b.getFormalMileage()==null || b.getFormalMileage() < 0d){ |
| 440 | 455 | continue; |
| 441 | 456 | } |
| 442 | - System.out.println(b.getId()); | |
| 443 | 457 | String gsBm = b.getGsBm(); |
| 444 | 458 | String xlBm = b.getXlBm(); |
| 445 | 459 | String xlName = b.getXlName(); |
| ... | ... | @@ -461,6 +475,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 461 | 475 | for(int i = 1; i <= 12; i++){ |
| 462 | 476 | m.put("mon"+i, ""); |
| 463 | 477 | m.put("bud"+i, ""); |
| 478 | + m.put("pre"+i, ""); | |
| 464 | 479 | } |
| 465 | 480 | String bud = "bud" + Integer.valueOf(b.getYear().split("-")[1]); |
| 466 | 481 | if(b.getFormalMileage()!=null){ |
| ... | ... | @@ -497,10 +512,6 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 497 | 512 | } |
| 498 | 513 | m.put(bud, b.getFormalMileage()); |
| 499 | 514 | } |
| 500 | - System.out.println(m); | |
| 501 | - System.out.println(b.getBudgetMileage()); | |
| 502 | - System.out.println(b.getChangeMileage()); | |
| 503 | - System.out.println(b.getFormalMileage()); | |
| 504 | 515 | } |
| 505 | 516 | } |
| 506 | 517 | |
| ... | ... | @@ -526,6 +537,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 526 | 537 | for(int i = 1; i <= 12; i++){ |
| 527 | 538 | m.put("mon"+i, ""); |
| 528 | 539 | m.put("bud"+i, ""); |
| 540 | + m.put("pre"+i, ""); | |
| 529 | 541 | } |
| 530 | 542 | m.put("monAll", "0"); |
| 531 | 543 | xlMap.put(key, m); |
| ... | ... | @@ -542,16 +554,46 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 542 | 554 | } |
| 543 | 555 | } |
| 544 | 556 | |
| 545 | - for(Map<String, Object> m : xlList){ | |
| 546 | - BigDecimal monAll = new BigDecimal("0"); | |
| 547 | - for(int i = 1; i <= 12; i++){ | |
| 548 | - if(m.get("mon"+i).toString().length() > 0){ | |
| 549 | - BigDecimal val = new BigDecimal(m.get("mon"+i).toString()); | |
| 550 | - monAll = monAll.add(val); | |
| 557 | + for(CalcStatistics cs1 : scheduleList_1){ // 去年公里 | |
| 558 | + String gsdm = cs1.getGsdm(); | |
| 559 | + String xlBm = cs1.getXl(); | |
| 560 | + String xlName = cs1.getXlName(); | |
| 561 | + int sfyy = lineNature.containsKey(xlBm)&&lineNature.get(xlBm)?1:0; | |
| 562 | + int sfjc = xlName.contains("机场")?1:0; | |
| 563 | + | |
| 564 | + String key = gsdm + "_" + xlBm; | |
| 565 | + if(!(xlMap.containsKey(key))){ | |
| 566 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 567 | + m.put("gsBm", gsdm); | |
| 568 | + m.put("gsName", BasicData.businessCodeNameMap.get(gsdm)); | |
| 569 | + m.put("xlBm", xlBm); | |
| 570 | + m.put("xlName", xlName); | |
| 571 | + m.put("sfyy", sfyy); | |
| 572 | + m.put("sfjc", sfjc); | |
| 573 | + m.put("budget", ""); | |
| 574 | + m.put("change", ""); | |
| 575 | + m.put("formal", ""); | |
| 576 | + for(int i = 1; i <= 12; i++){ | |
| 577 | + m.put("mon"+i, ""); | |
| 578 | + m.put("bud"+i, ""); | |
| 579 | + m.put("pre"+i, ""); | |
| 551 | 580 | } |
| 581 | + m.put("monAll", "0"); | |
| 582 | + xlMap.put(key, m); | |
| 583 | + xlList.add(m); | |
| 552 | 584 | } |
| 553 | - m.put("monAll", monAll.doubleValue()); | |
| 554 | - | |
| 585 | + Map<String, Object> map = xlMap.get(key); | |
| 586 | + String pre = "pre" + Integer.valueOf(sdfMM.format(cs1.getDate())); | |
| 587 | + String val = map.get(pre).toString(); | |
| 588 | + BigDecimal num = new BigDecimal(cs1.getSjzlc().toString()); | |
| 589 | + if(val.length() == 0){ | |
| 590 | + map.put(pre, num.doubleValue()); | |
| 591 | + } else { | |
| 592 | + map.put(pre, new BigDecimal(val).add(num).doubleValue()); | |
| 593 | + } | |
| 594 | + } | |
| 595 | + | |
| 596 | + for(Map<String, Object> m : xlList){ | |
| 555 | 597 | String gsBm = m.get("gsBm").toString(); |
| 556 | 598 | int type = Integer.valueOf(m.get("sfyy").toString()); |
| 557 | 599 | int item = Integer.valueOf(m.get("sfjc").toString()) == 1 ? 0 : 1; |
| ... | ... | @@ -594,7 +636,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 594 | 636 | } |
| 595 | 637 | } |
| 596 | 638 | for(int i = 1; i <= 12; i++){ |
| 597 | - String mon = "mon"+i, bud = "bud"+i; | |
| 639 | + String mon = "mon"+i, bud = "bud"+i, pre = "pre"+i; | |
| 598 | 640 | if(m.get(mon).toString().length() > 0){ |
| 599 | 641 | if(map.get(mon).toString().length() > 0){ |
| 600 | 642 | map.put(mon, new BigDecimal(m.get(mon).toString()).add( |
| ... | ... | @@ -611,20 +653,48 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 611 | 653 | map.put(bud, new BigDecimal(m.get(bud).toString()).doubleValue()); |
| 612 | 654 | } |
| 613 | 655 | } |
| 656 | + if(m.get(pre).toString().length() > 0){ | |
| 657 | + if(map.get(pre).toString().length() > 0){ | |
| 658 | + map.put(pre, new BigDecimal(m.get(pre).toString()).add( | |
| 659 | + new BigDecimal(map.get(pre).toString())).doubleValue()); | |
| 660 | + } else { | |
| 661 | + map.put(pre, new BigDecimal(m.get(pre).toString()).doubleValue()); | |
| 662 | + } | |
| 663 | + } | |
| 614 | 664 | } |
| 615 | 665 | List<Map<String, Object>>dataList = (List<Map<String, Object>>)map.get("dataList"); |
| 616 | 666 | dataList.add(m); |
| 617 | 667 | } |
| 618 | 668 | |
| 669 | + BigDecimal monAll = new BigDecimal("0"); | |
| 670 | + BigDecimal preAll = new BigDecimal("0"); | |
| 619 | 671 | for(int i = 1; i <= 12; i++){ |
| 620 | 672 | if(m.get("mon"+i).toString().length() > 0){ |
| 621 | 673 | BigDecimal val = new BigDecimal(m.get("mon"+i).toString()); |
| 674 | + monAll = monAll.add(val); | |
| 622 | 675 | val = val.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); |
| 623 | 676 | m.put("mon"+i, val.doubleValue()); |
| 624 | 677 | } |
| 678 | + if(m.get("pre"+i).toString().length() > 0){ | |
| 679 | + BigDecimal val = new BigDecimal(m.get("pre"+i).toString()); | |
| 680 | + preAll = preAll.add(val); | |
| 681 | + val = val.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 682 | + m.put("pre"+i, val.doubleValue()); | |
| 683 | + if(m.get("mon"+i).toString().length() > 0){ | |
| 684 | + BigDecimal monVal = new BigDecimal(m.get("mon"+i).toString()); | |
| 685 | + BigDecimal sub = monVal.subtract(val); | |
| 686 | + m.put("sub"+i, sub.doubleValue() > 0 ? "+" + sub.doubleValue() : sub.doubleValue()); | |
| 687 | + } else { | |
| 688 | + m.put("sub"+i, "-" + val.doubleValue()); | |
| 689 | + } | |
| 690 | + } | |
| 625 | 691 | } |
| 626 | 692 | monAll = monAll.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); |
| 693 | + preAll = preAll.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 694 | + Double subAll = monAll.subtract(preAll).doubleValue(); | |
| 627 | 695 | m.put("monAll", monAll.doubleValue()); |
| 696 | + m.put("preAll", preAll.doubleValue()); | |
| 697 | + m.put("subAll", subAll > 0 ? "+" + subAll : subAll); | |
| 628 | 698 | |
| 629 | 699 | if(m.get("formal").toString().length() > 0 && m.get("monAll").toString().length() > 0 |
| 630 | 700 | && new BigDecimal(m.get("formal").toString()).doubleValue() > 0d){ |
| ... | ... | @@ -634,7 +704,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 634 | 704 | new BigDecimal(100)).divide( |
| 635 | 705 | new BigDecimal(1), 2, BigDecimal.ROUND_HALF_UP)+ "%"); |
| 636 | 706 | BigDecimal diff = monAll.subtract(formal); |
| 637 | - m.put("diff", diff.doubleValue() > 0 ? "+" + diff.toString() : diff.toString()); | |
| 707 | + m.put("diff", diff.doubleValue() > 0 ? "+" + diff.doubleValue() : diff.doubleValue()); | |
| 638 | 708 | } else { |
| 639 | 709 | m.put("complete", ""); |
| 640 | 710 | m.put("diff", ""); |
| ... | ... | @@ -684,6 +754,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 684 | 754 | for(String key : strs){ |
| 685 | 755 | Map<String, Object> m = keyMap.get(key); |
| 686 | 756 | BigDecimal monAll = new BigDecimal("0"); |
| 757 | + BigDecimal preAll = new BigDecimal("0"); | |
| 687 | 758 | for(int i = 1; i <= 12; i++){ |
| 688 | 759 | if(m.get("mon"+i).toString().length() > 0){ |
| 689 | 760 | BigDecimal val = new BigDecimal(m.get("mon"+i).toString()); |
| ... | ... | @@ -691,9 +762,26 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 691 | 762 | val = val.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); |
| 692 | 763 | m.put("mon"+i, val.doubleValue()); |
| 693 | 764 | } |
| 765 | + if(m.get("pre"+i).toString().length() > 0){ | |
| 766 | + BigDecimal val = new BigDecimal(m.get("pre"+i).toString()); | |
| 767 | + preAll = preAll.add(val); | |
| 768 | + val = val.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 769 | + m.put("pre"+i, val.doubleValue()); | |
| 770 | + if(m.get("mon"+i).toString().length() > 0){ | |
| 771 | + BigDecimal monVal = new BigDecimal(m.get("mon"+i).toString()); | |
| 772 | + BigDecimal sub = monVal.subtract(val); | |
| 773 | + m.put("sub"+i, sub.doubleValue() > 0 ? "+" + sub.doubleValue() : sub.doubleValue()); | |
| 774 | + } else { | |
| 775 | + m.put("sub"+i, "-" + val.doubleValue()); | |
| 776 | + } | |
| 777 | + } | |
| 694 | 778 | } |
| 695 | 779 | monAll = monAll.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); |
| 780 | + preAll = preAll.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 781 | + Double subAll = monAll.subtract(preAll).doubleValue(); | |
| 696 | 782 | m.put("monAll", monAll.doubleValue()); |
| 783 | + m.put("preAll", preAll.doubleValue()); | |
| 784 | + m.put("subAll", subAll > 0 ? "+" + subAll : subAll); | |
| 697 | 785 | |
| 698 | 786 | if(m.get("formal").toString().length() > 0 && m.get("monAll").toString().length() > 0 |
| 699 | 787 | && new BigDecimal(m.get("formal").toString()).doubleValue() > 0d){ |
| ... | ... | @@ -703,7 +791,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 703 | 791 | new BigDecimal(100)).divide( |
| 704 | 792 | new BigDecimal(1), 2, BigDecimal.ROUND_HALF_UP)+ "%"); |
| 705 | 793 | BigDecimal diff = monAll.subtract(formal); |
| 706 | - m.put("diff", diff.doubleValue() > 0 ? "+" + diff.toString() : diff.toString()); | |
| 794 | + m.put("diff", diff.doubleValue() > 0 ? "+" + diff.doubleValue() : diff.doubleValue()); | |
| 707 | 795 | } else { |
| 708 | 796 | m.put("complete", ""); |
| 709 | 797 | m.put("diff", ""); |
| ... | ... | @@ -774,6 +862,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 774 | 862 | @Override |
| 775 | 863 | public List<Map<String, Object>> budgetPerson(String year, String tttt, String kkk) { |
| 776 | 864 | // TODO Auto-generated method stub |
| 865 | + SimpleDateFormat sdfYY = new SimpleDateFormat("YYYY"); | |
| 777 | 866 | SimpleDateFormat sdfMM = new SimpleDateFormat("MM"); |
| 778 | 867 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); |
| 779 | 868 | Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>(); |
| ... | ... | @@ -781,6 +870,15 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 781 | 870 | List<Budget> findByYear = repository.findByYear(year); |
| 782 | 871 | List<Revenue> list = revenueRepository.findByDates(year+"-01-01", year+"-12-31"); |
| 783 | 872 | |
| 873 | + String year_1 = ""; | |
| 874 | + try { | |
| 875 | + year_1 = sdfYY.format(sdfYY.parse((Integer.valueOf(year)-1)+"")); | |
| 876 | + } catch (ParseException e) { | |
| 877 | + // TODO Auto-generated catch block | |
| 878 | + e.printStackTrace(); | |
| 879 | + } | |
| 880 | + List<Revenue> revenueList_1 = revenueRepository.findByDates(year_1+"-01-01", year_1+"-12-31"); | |
| 881 | + | |
| 784 | 882 | Map<String, Map<String, Object>> xlMap = new HashMap<String, Map<String, Object>>(); |
| 785 | 883 | List<Map<String, Object>> xlList = new ArrayList<Map<String, Object>>(); |
| 786 | 884 | |
| ... | ... | @@ -814,6 +912,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 814 | 912 | for(int i = 1; i <= 12; i++){ |
| 815 | 913 | m.put("mon"+i, ""); |
| 816 | 914 | m.put("bud"+i, ""); |
| 915 | + m.put("pre"+i, ""); | |
| 817 | 916 | } |
| 818 | 917 | String bud = "bud" + Integer.valueOf(b.getYear().split("-")[1]); |
| 819 | 918 | if(b.getFormalPerson()!=null){ |
| ... | ... | @@ -875,6 +974,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 875 | 974 | for(int i = 1; i <= 12; i++){ |
| 876 | 975 | m.put("mon"+i, ""); |
| 877 | 976 | m.put("bud"+i, ""); |
| 977 | + m.put("pre"+i, ""); | |
| 878 | 978 | } |
| 879 | 979 | m.put("monAll", "0"); |
| 880 | 980 | xlMap.put(key, m); |
| ... | ... | @@ -891,16 +991,48 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 891 | 991 | } |
| 892 | 992 | } |
| 893 | 993 | |
| 894 | - for(Map<String, Object> m : xlList){ | |
| 895 | - BigDecimal monAll = new BigDecimal("0"); | |
| 896 | - for(int i = 1; i <= 12; i++){ | |
| 897 | - if(m.get("mon"+i).toString().length() > 0){ | |
| 898 | - BigDecimal val = new BigDecimal(m.get("mon"+i).toString()); | |
| 899 | - monAll = monAll.add(val); | |
| 994 | + for(Revenue cs1 : revenueList_1){ // 去年人次与营收 | |
| 995 | + String gsBm = cs1.getGsBm(); | |
| 996 | + String xlBm = cs1.getXlBm(); | |
| 997 | + String xlName = cs1.getXlName(); | |
| 998 | + int sfyy = lineNature.containsKey(xlBm)&&lineNature.get(xlBm)?1:0; | |
| 999 | + int sfjc = xlName.contains("机场")?1:0; | |
| 1000 | + | |
| 1001 | + { // 去年人次 | |
| 1002 | + String key = gsBm + "_" + xlBm; | |
| 1003 | + if(!(xlMap.containsKey(key))){ | |
| 1004 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 1005 | + m.put("gsBm", gsBm); | |
| 1006 | + m.put("gsName", BasicData.businessCodeNameMap.get(gsBm)); | |
| 1007 | + m.put("xlBm", xlBm); | |
| 1008 | + m.put("xlName", xlName); | |
| 1009 | + m.put("sfyy", sfyy); | |
| 1010 | + m.put("sfjc", sfjc); | |
| 1011 | + m.put("budget", ""); | |
| 1012 | + m.put("change", ""); | |
| 1013 | + m.put("formal", ""); | |
| 1014 | + for(int i = 1; i <= 12; i++){ | |
| 1015 | + m.put("mon"+i, ""); | |
| 1016 | + m.put("bud"+i, ""); | |
| 1017 | + m.put("pre"+i, ""); | |
| 1018 | + } | |
| 1019 | + m.put("monAll", "0"); | |
| 1020 | + xlMap.put(key, m); | |
| 1021 | + xlList.add(m); | |
| 1022 | + } | |
| 1023 | + Map<String, Object> map = xlMap.get(key); | |
| 1024 | + String pre = "pre" + Integer.valueOf(sdfMM.format(cs1.getScheduleDate())); | |
| 1025 | + String val = map.get(pre).toString(); | |
| 1026 | + BigDecimal num = new BigDecimal(cs1.getNum().toString()); | |
| 1027 | + if(val.length() == 0){ | |
| 1028 | + map.put(pre, num.doubleValue()); | |
| 1029 | + } else { | |
| 1030 | + map.put(pre, new BigDecimal(val).add(num).doubleValue()); | |
| 900 | 1031 | } |
| 901 | 1032 | } |
| 902 | - m.put("monAll", monAll.doubleValue()); | |
| 903 | - | |
| 1033 | + } | |
| 1034 | + | |
| 1035 | + for(Map<String, Object> m : xlList){ | |
| 904 | 1036 | String gsBm = m.get("gsBm").toString(); |
| 905 | 1037 | int type = Integer.valueOf(m.get("sfyy").toString()); |
| 906 | 1038 | int item = Integer.valueOf(m.get("sfjc").toString()) == 1 ? 0 : 1; |
| ... | ... | @@ -943,7 +1075,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 943 | 1075 | } |
| 944 | 1076 | } |
| 945 | 1077 | for(int i = 1; i <= 12; i++){ |
| 946 | - String mon = "mon"+i, bud = "bud"+i; | |
| 1078 | + String mon = "mon"+i, bud = "bud"+i, pre = "pre"+i; | |
| 947 | 1079 | if(m.get(mon).toString().length() > 0){ |
| 948 | 1080 | if(map.get(mon).toString().length() > 0){ |
| 949 | 1081 | map.put(mon, new BigDecimal(m.get(mon).toString()).add( |
| ... | ... | @@ -960,20 +1092,48 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 960 | 1092 | map.put(bud, new BigDecimal(m.get(bud).toString()).doubleValue()); |
| 961 | 1093 | } |
| 962 | 1094 | } |
| 1095 | + if(m.get(pre).toString().length() > 0){ | |
| 1096 | + if(map.get(pre).toString().length() > 0){ | |
| 1097 | + map.put(pre, new BigDecimal(m.get(pre).toString()).add( | |
| 1098 | + new BigDecimal(map.get(pre).toString())).doubleValue()); | |
| 1099 | + } else { | |
| 1100 | + map.put(pre, new BigDecimal(m.get(pre).toString()).doubleValue()); | |
| 1101 | + } | |
| 1102 | + } | |
| 963 | 1103 | } |
| 964 | 1104 | List<Map<String, Object>>dataList = (List<Map<String, Object>>)map.get("dataList"); |
| 965 | 1105 | dataList.add(m); |
| 966 | 1106 | } |
| 967 | 1107 | |
| 1108 | + BigDecimal monAll = new BigDecimal("0"); | |
| 1109 | + BigDecimal preAll = new BigDecimal("0"); | |
| 968 | 1110 | for(int i = 1; i <= 12; i++){ |
| 969 | 1111 | if(m.get("mon"+i).toString().length() > 0){ |
| 970 | 1112 | BigDecimal val = new BigDecimal(m.get("mon"+i).toString()); |
| 1113 | + monAll = monAll.add(val); | |
| 971 | 1114 | val = val.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); |
| 972 | 1115 | m.put("mon"+i, val.doubleValue()); |
| 973 | 1116 | } |
| 1117 | + if(m.get("pre"+i).toString().length() > 0){ | |
| 1118 | + BigDecimal val = new BigDecimal(m.get("pre"+i).toString()); | |
| 1119 | + preAll = preAll.add(val); | |
| 1120 | + val = val.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1121 | + m.put("pre"+i, val.doubleValue()); | |
| 1122 | + if(m.get("mon"+i).toString().length() > 0){ | |
| 1123 | + BigDecimal monVal = new BigDecimal(m.get("mon"+i).toString()); | |
| 1124 | + BigDecimal sub = monVal.subtract(val); | |
| 1125 | + m.put("sub"+i, sub.doubleValue() > 0 ? "+" + sub.doubleValue() : sub.doubleValue()); | |
| 1126 | + } else { | |
| 1127 | + m.put("sub"+i, "-" + val.doubleValue()); | |
| 1128 | + } | |
| 1129 | + } | |
| 974 | 1130 | } |
| 975 | 1131 | monAll = monAll.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); |
| 1132 | + preAll = preAll.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1133 | + Double subAll = monAll.subtract(preAll).doubleValue(); | |
| 976 | 1134 | m.put("monAll", monAll.doubleValue()); |
| 1135 | + m.put("preAll", preAll.doubleValue()); | |
| 1136 | + m.put("subAll", subAll > 0 ? "+" + subAll : subAll); | |
| 977 | 1137 | |
| 978 | 1138 | if(m.get("formal").toString().length() > 0 && m.get("monAll").toString().length() > 0 |
| 979 | 1139 | && new BigDecimal(m.get("formal").toString()).doubleValue() > 0d){ |
| ... | ... | @@ -983,7 +1143,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 983 | 1143 | new BigDecimal(100)).divide( |
| 984 | 1144 | new BigDecimal(1), 2, BigDecimal.ROUND_HALF_UP)+ "%"); |
| 985 | 1145 | BigDecimal diff = monAll.subtract(formal); |
| 986 | - m.put("diff", diff.doubleValue() > 0 ? "+" + diff.toString() : diff.toString()); | |
| 1146 | + m.put("diff", diff.doubleValue() > 0 ? "+" + diff.doubleValue() : diff.doubleValue()); | |
| 987 | 1147 | } else { |
| 988 | 1148 | m.put("complete", ""); |
| 989 | 1149 | m.put("diff", ""); |
| ... | ... | @@ -1033,6 +1193,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1033 | 1193 | for(String key : strs){ |
| 1034 | 1194 | Map<String, Object> m = keyMap.get(key); |
| 1035 | 1195 | BigDecimal monAll = new BigDecimal("0"); |
| 1196 | + BigDecimal preAll = new BigDecimal("0"); | |
| 1036 | 1197 | for(int i = 1; i <= 12; i++){ |
| 1037 | 1198 | if(m.get("mon"+i).toString().length() > 0){ |
| 1038 | 1199 | BigDecimal val = new BigDecimal(m.get("mon"+i).toString()); |
| ... | ... | @@ -1040,9 +1201,26 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1040 | 1201 | val = val.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); |
| 1041 | 1202 | m.put("mon"+i, val.doubleValue()); |
| 1042 | 1203 | } |
| 1204 | + if(m.get("pre"+i).toString().length() > 0){ | |
| 1205 | + BigDecimal val = new BigDecimal(m.get("pre"+i).toString()); | |
| 1206 | + preAll = preAll.add(val); | |
| 1207 | + val = val.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1208 | + m.put("pre"+i, val.doubleValue()); | |
| 1209 | + if(m.get("mon"+i).toString().length() > 0){ | |
| 1210 | + BigDecimal monVal = new BigDecimal(m.get("mon"+i).toString()); | |
| 1211 | + BigDecimal sub = monVal.subtract(val); | |
| 1212 | + m.put("sub"+i, sub.doubleValue() > 0 ? "+" + sub.doubleValue() : sub.doubleValue()); | |
| 1213 | + } else { | |
| 1214 | + m.put("sub"+i, "-" + val.doubleValue()); | |
| 1215 | + } | |
| 1216 | + } | |
| 1043 | 1217 | } |
| 1044 | 1218 | monAll = monAll.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); |
| 1219 | + preAll = preAll.divide(new BigDecimal("10000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1220 | + Double subAll = monAll.subtract(preAll).doubleValue(); | |
| 1045 | 1221 | m.put("monAll", monAll.doubleValue()); |
| 1222 | + m.put("preAll", preAll.doubleValue()); | |
| 1223 | + m.put("subAll", subAll > 0 ? "+" + subAll : subAll); | |
| 1046 | 1224 | |
| 1047 | 1225 | if(m.get("formal").toString().length() > 0 && m.get("monAll").toString().length() > 0 |
| 1048 | 1226 | && new BigDecimal(m.get("formal").toString()).doubleValue() > 0d){ |
| ... | ... | @@ -1052,7 +1230,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1052 | 1230 | new BigDecimal(100)).divide( |
| 1053 | 1231 | new BigDecimal(1), 2, BigDecimal.ROUND_HALF_UP)+ "%"); |
| 1054 | 1232 | BigDecimal diff = monAll.subtract(formal); |
| 1055 | - m.put("diff", diff.doubleValue() > 0 ? "+" + diff.toString() : diff.toString()); | |
| 1233 | + m.put("diff", diff.doubleValue() > 0 ? "+" + diff.doubleValue() : diff.doubleValue()); | |
| 1056 | 1234 | } else { |
| 1057 | 1235 | m.put("complete", ""); |
| 1058 | 1236 | m.put("diff", ""); |
| ... | ... | @@ -1123,6 +1301,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1123 | 1301 | @Override |
| 1124 | 1302 | public List<Map<String, Object>> budgetAmounts(String year, String tttt, String kkk) { |
| 1125 | 1303 | // TODO Auto-generated method stub |
| 1304 | + SimpleDateFormat sdfYY = new SimpleDateFormat("YYYY"); | |
| 1126 | 1305 | SimpleDateFormat sdfMM = new SimpleDateFormat("MM"); |
| 1127 | 1306 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); |
| 1128 | 1307 | Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>(); |
| ... | ... | @@ -1130,6 +1309,16 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1130 | 1309 | List<Budget> findByYear = repository.findByYear(year); |
| 1131 | 1310 | List<Revenue> list = revenueRepository.findByDates(year+"-01-01", year+"-12-31"); |
| 1132 | 1311 | |
| 1312 | + String year_1 = ""; | |
| 1313 | + try { | |
| 1314 | + year_1 = sdfYY.format(sdfYY.parse((Integer.valueOf(year)-1)+"")); | |
| 1315 | + } catch (ParseException e) { | |
| 1316 | + // TODO Auto-generated catch block | |
| 1317 | + e.printStackTrace(); | |
| 1318 | + } | |
| 1319 | + List<CalcStatistics> scheduleList_1 = calcStatisticsRepository.selectByDateAndLineTj3(year_1+"-01-01", year_1+"-12-31"); | |
| 1320 | + List<Revenue> revenueList_1 = revenueRepository.findByDates(year_1+"-01-01", year_1+"-12-31"); | |
| 1321 | + | |
| 1133 | 1322 | Map<String, Map<String, Object>> xlMap = new HashMap<String, Map<String, Object>>(); |
| 1134 | 1323 | List<Map<String, Object>> xlList = new ArrayList<Map<String, Object>>(); |
| 1135 | 1324 | |
| ... | ... | @@ -1163,6 +1352,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1163 | 1352 | for(int i = 1; i <= 12; i++){ |
| 1164 | 1353 | m.put("mon"+i, ""); |
| 1165 | 1354 | m.put("bud"+i, ""); |
| 1355 | + m.put("pre"+i, ""); | |
| 1166 | 1356 | } |
| 1167 | 1357 | String bud = "bud" + Integer.valueOf(b.getYear().split("-")[1]); |
| 1168 | 1358 | if(b.getFormalAmounts()!=null){ |
| ... | ... | @@ -1225,6 +1415,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1225 | 1415 | for(int i = 1; i <= 12; i++){ |
| 1226 | 1416 | m.put("mon"+i, ""); |
| 1227 | 1417 | m.put("bud"+i, ""); |
| 1418 | + m.put("pre"+i, ""); | |
| 1228 | 1419 | } |
| 1229 | 1420 | m.put("monAll", "0"); |
| 1230 | 1421 | m.put("num", "0"); |
| ... | ... | @@ -1249,16 +1440,48 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1249 | 1440 | } |
| 1250 | 1441 | } |
| 1251 | 1442 | |
| 1252 | - for(Map<String, Object> m : xlList){ | |
| 1253 | - BigDecimal monAll = new BigDecimal("0"); | |
| 1254 | - for(int i = 1; i <= 12; i++){ | |
| 1255 | - if(m.get("mon"+i).toString().length() > 0){ | |
| 1256 | - BigDecimal val = new BigDecimal(m.get("mon"+i).toString()); | |
| 1257 | - monAll = monAll.add(val); | |
| 1443 | + for(Revenue cs1 : revenueList_1){ // 去年人次与营收 | |
| 1444 | + String gsBm = cs1.getGsBm(); | |
| 1445 | + String xlBm = cs1.getXlBm(); | |
| 1446 | + String xlName = cs1.getXlName(); | |
| 1447 | + int sfyy = lineNature.containsKey(xlBm)&&lineNature.get(xlBm)?1:0; | |
| 1448 | + int sfjc = xlName.contains("机场")?1:0; | |
| 1449 | + | |
| 1450 | + { // 去年营收 | |
| 1451 | + String key = gsBm + "_" + xlBm; | |
| 1452 | + if(!(xlMap.containsKey(key))){ | |
| 1453 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 1454 | + m.put("gsBm", gsBm); | |
| 1455 | + m.put("gsName", BasicData.businessCodeNameMap.get(gsBm)); | |
| 1456 | + m.put("xlBm", xlBm); | |
| 1457 | + m.put("xlName", xlName); | |
| 1458 | + m.put("sfyy", sfyy); | |
| 1459 | + m.put("sfjc", sfjc); | |
| 1460 | + m.put("budget", ""); | |
| 1461 | + m.put("change", ""); | |
| 1462 | + m.put("formal", ""); | |
| 1463 | + for(int i = 1; i <= 12; i++){ | |
| 1464 | + m.put("mon"+i, ""); | |
| 1465 | + m.put("bud"+i, ""); | |
| 1466 | + m.put("pre"+i, ""); | |
| 1467 | + } | |
| 1468 | + m.put("monAll", "0"); | |
| 1469 | + xlMap.put(key, m); | |
| 1470 | + xlList.add(m); | |
| 1471 | + } | |
| 1472 | + Map<String, Object> map = xlMap.get(key); | |
| 1473 | + String pre = "pre" + Integer.valueOf(sdfMM.format(cs1.getScheduleDate())); | |
| 1474 | + String val = map.get(pre).toString(); | |
| 1475 | + BigDecimal num = new BigDecimal(cs1.getAmount().toString()); | |
| 1476 | + if(val.length() == 0){ | |
| 1477 | + map.put(pre, num.doubleValue()); | |
| 1478 | + } else { | |
| 1479 | + map.put(pre, new BigDecimal(val).add(num).doubleValue()); | |
| 1258 | 1480 | } |
| 1259 | 1481 | } |
| 1260 | - m.put("monAll", monAll.doubleValue()); | |
| 1261 | - | |
| 1482 | + } | |
| 1483 | + | |
| 1484 | + for(Map<String, Object> m : xlList){ | |
| 1262 | 1485 | String gsBm = m.get("gsBm").toString(); |
| 1263 | 1486 | int type = Integer.valueOf(m.get("sfyy").toString()); |
| 1264 | 1487 | int item = Integer.valueOf(m.get("sfjc").toString()) == 1 ? 0 : 1; |
| ... | ... | @@ -1330,6 +1553,36 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1330 | 1553 | List<Map<String, Object>>dataList = (List<Map<String, Object>>)map.get("dataList"); |
| 1331 | 1554 | dataList.add(m); |
| 1332 | 1555 | } |
| 1556 | + | |
| 1557 | + BigDecimal monAll = new BigDecimal("0"); | |
| 1558 | + BigDecimal preAll = new BigDecimal("0"); | |
| 1559 | + for(int i = 1; i <= 12; i++){ | |
| 1560 | + if(m.get("mon"+i).toString().length() > 0){ | |
| 1561 | + BigDecimal val = new BigDecimal(m.get("mon"+i).toString()); | |
| 1562 | + monAll = monAll.add(val); | |
| 1563 | + val = val.divide(new BigDecimal("1000000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1564 | + m.put("mon"+i, val.doubleValue()); | |
| 1565 | + } | |
| 1566 | + if(m.get("pre"+i).toString().length() > 0){ | |
| 1567 | + BigDecimal val = new BigDecimal(m.get("pre"+i).toString()); | |
| 1568 | + preAll = preAll.add(val); | |
| 1569 | + val = val.divide(new BigDecimal("1000000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1570 | + m.put("pre"+i, val.doubleValue()); | |
| 1571 | + if(m.get("mon"+i).toString().length() > 0){ | |
| 1572 | + BigDecimal monVal = new BigDecimal(m.get("mon"+i).toString()); | |
| 1573 | + BigDecimal sub = monVal.subtract(val); | |
| 1574 | + m.put("sub"+i, sub.doubleValue() > 0 ? "+" + sub.doubleValue() : sub.doubleValue()); | |
| 1575 | + } else { | |
| 1576 | + m.put("sub"+i, "-" + val.doubleValue()); | |
| 1577 | + } | |
| 1578 | + } | |
| 1579 | + } | |
| 1580 | + BigDecimal monAll_ = monAll.divide(new BigDecimal("1000000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1581 | + preAll = preAll.divide(new BigDecimal("1000000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1582 | + Double subAll = monAll_.subtract(preAll).doubleValue(); | |
| 1583 | + m.put("monAll", monAll_.doubleValue()); | |
| 1584 | + m.put("preAll", preAll.doubleValue()); | |
| 1585 | + m.put("subAll", subAll > 0 ? "+" + subAll : subAll); | |
| 1333 | 1586 | |
| 1334 | 1587 | if(m.containsKey("num") && m.get("num").toString().length() > 0 |
| 1335 | 1588 | && Double.valueOf(m.get("num").toString()) > 0){ |
| ... | ... | @@ -1340,16 +1593,6 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1340 | 1593 | m.put("average", ""); |
| 1341 | 1594 | } |
| 1342 | 1595 | |
| 1343 | - for(int i = 1; i <= 12; i++){ | |
| 1344 | - if(m.get("mon"+i).toString().length() > 0){ | |
| 1345 | - BigDecimal val = new BigDecimal(m.get("mon"+i).toString()); | |
| 1346 | - val = val.divide(new BigDecimal("1000000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1347 | - m.put("mon"+i, val.doubleValue()); | |
| 1348 | - } | |
| 1349 | - } | |
| 1350 | - monAll = monAll.divide(new BigDecimal("1000000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1351 | - m.put("monAll", monAll.doubleValue()); | |
| 1352 | - | |
| 1353 | 1596 | if(m.get("formal").toString().length() > 0 && m.get("monAll").toString().length() > 0 |
| 1354 | 1597 | && new BigDecimal(m.get("formal").toString()).doubleValue() > 0d){ |
| 1355 | 1598 | BigDecimal formal = new BigDecimal(m.get("formal").toString()); |
| ... | ... | @@ -1358,7 +1601,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1358 | 1601 | new BigDecimal(100)).divide( |
| 1359 | 1602 | new BigDecimal(1), 2, BigDecimal.ROUND_HALF_UP)+ "%"); |
| 1360 | 1603 | BigDecimal diff = monAll.subtract(formal); |
| 1361 | - m.put("diff", diff.doubleValue() > 0 ? "+" + diff.toString() : diff.toString()); | |
| 1604 | + m.put("diff", diff.doubleValue() > 0 ? "+" + diff.doubleValue() : diff.doubleValue()); | |
| 1362 | 1605 | } else { |
| 1363 | 1606 | m.put("complete", ""); |
| 1364 | 1607 | m.put("diff", ""); |
| ... | ... | @@ -1417,6 +1660,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1417 | 1660 | Map<String, Object> m = keyMap.get(key); |
| 1418 | 1661 | |
| 1419 | 1662 | BigDecimal monAll = new BigDecimal("0"); |
| 1663 | + BigDecimal preAll = new BigDecimal("0"); | |
| 1420 | 1664 | for(int i = 1; i <= 12; i++){ |
| 1421 | 1665 | if(m.get("mon"+i).toString().length() > 0){ |
| 1422 | 1666 | BigDecimal val = new BigDecimal(m.get("mon"+i).toString()); |
| ... | ... | @@ -1424,7 +1668,26 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1424 | 1668 | val = val.divide(new BigDecimal("1000000"), 3, BigDecimal.ROUND_HALF_UP); |
| 1425 | 1669 | m.put("mon"+i, val.doubleValue()); |
| 1426 | 1670 | } |
| 1671 | + if(m.get("pre"+i).toString().length() > 0){ | |
| 1672 | + BigDecimal val = new BigDecimal(m.get("pre"+i).toString()); | |
| 1673 | + preAll = preAll.add(val); | |
| 1674 | + val = val.divide(new BigDecimal("1000000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1675 | + m.put("pre"+i, val.doubleValue()); | |
| 1676 | + if(m.get("mon"+i).toString().length() > 0){ | |
| 1677 | + BigDecimal monVal = new BigDecimal(m.get("mon"+i).toString()); | |
| 1678 | + BigDecimal sub = monVal.subtract(val); | |
| 1679 | + m.put("sub"+i, sub.doubleValue() > 0 ? "+" + sub.doubleValue() : sub.doubleValue()); | |
| 1680 | + } else { | |
| 1681 | + m.put("sub"+i, "-" + val.doubleValue()); | |
| 1682 | + } | |
| 1683 | + } | |
| 1427 | 1684 | } |
| 1685 | + BigDecimal monAll_ = monAll.divide(new BigDecimal("1000000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1686 | + preAll = preAll.divide(new BigDecimal("1000000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1687 | + Double subAll = monAll_.subtract(preAll).doubleValue(); | |
| 1688 | + m.put("monAll", monAll_.doubleValue()); | |
| 1689 | + m.put("preAll", preAll.doubleValue()); | |
| 1690 | + m.put("subAll", subAll > 0 ? "+" + subAll : subAll); | |
| 1428 | 1691 | |
| 1429 | 1692 | if(m.containsKey("num") && m.get("num").toString().length() > 0 |
| 1430 | 1693 | && Double.valueOf(m.get("num").toString()) > 0){ |
| ... | ... | @@ -1435,9 +1698,6 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1435 | 1698 | m.put("average", ""); |
| 1436 | 1699 | } |
| 1437 | 1700 | |
| 1438 | - monAll = monAll.divide(new BigDecimal("1000000"), 3, BigDecimal.ROUND_HALF_UP); | |
| 1439 | - m.put("monAll", monAll.doubleValue()); | |
| 1440 | - | |
| 1441 | 1701 | if(m.get("formal").toString().length() > 0 && m.get("monAll").toString().length() > 0 |
| 1442 | 1702 | && new BigDecimal(m.get("formal").toString()).doubleValue() > 0d){ |
| 1443 | 1703 | BigDecimal formal = new BigDecimal(m.get("formal").toString()); |
| ... | ... | @@ -1446,7 +1706,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1446 | 1706 | new BigDecimal(100)).divide( |
| 1447 | 1707 | new BigDecimal(1), 2, BigDecimal.ROUND_HALF_UP)+ "%"); |
| 1448 | 1708 | BigDecimal diff = monAll.subtract(formal); |
| 1449 | - m.put("diff", diff.doubleValue() > 0 ? "+" + diff.toString() : diff.toString()); | |
| 1709 | + m.put("diff", diff.doubleValue() > 0 ? "+" + diff.doubleValue() : diff.doubleValue()); | |
| 1450 | 1710 | } else { |
| 1451 | 1711 | m.put("complete", ""); |
| 1452 | 1712 | m.put("diff", ""); |
| ... | ... | @@ -1517,6 +1777,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1517 | 1777 | @Override |
| 1518 | 1778 | public List<Map<String, Object>> budgetSum(String year, String nature, String tttt, String kkk) { |
| 1519 | 1779 | // TODO Auto-generated method stub |
| 1780 | + SimpleDateFormat sdfYY = new SimpleDateFormat("YYYY"); | |
| 1520 | 1781 | SimpleDateFormat sdfMM = new SimpleDateFormat("MM"); |
| 1521 | 1782 | List<Map<String, Object>> resList = new ArrayList<Map<String, Object>>(); |
| 1522 | 1783 | Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>(); |
| ... | ... | @@ -1525,6 +1786,16 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1525 | 1786 | List<Revenue> revenueList = revenueRepository.findByDates(year+"-01-01", year+"-12-31"); |
| 1526 | 1787 | Map<String, Boolean> lineNature = lineService.lineNature(); |
| 1527 | 1788 | |
| 1789 | + String year_1 = ""; | |
| 1790 | + try { | |
| 1791 | + year_1 = sdfYY.format(sdfYY.parse((Integer.valueOf(year)-1)+"")); | |
| 1792 | + } catch (ParseException e) { | |
| 1793 | + // TODO Auto-generated catch block | |
| 1794 | + e.printStackTrace(); | |
| 1795 | + } | |
| 1796 | + List<CalcStatistics> scheduleList_1 = calcStatisticsRepository.selectByDateAndLineTj3(year_1+"-01-01", year_1+"-12-31"); | |
| 1797 | + List<Revenue> revenueList_1 = revenueRepository.findByDates(year_1+"-01-01", year_1+"-12-31"); | |
| 1798 | + | |
| 1528 | 1799 | Map<String, Map<String, Object>> xlMap = new HashMap<String, Map<String, Object>>(); |
| 1529 | 1800 | List<Map<String, Object>> xlList = new ArrayList<Map<String, Object>>(); |
| 1530 | 1801 | |
| ... | ... | @@ -1564,6 +1835,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1564 | 1835 | for(int i = 1; i <= 12; i++){ |
| 1565 | 1836 | m.put("mon"+i, ""); |
| 1566 | 1837 | m.put("bud"+i, ""); |
| 1838 | + m.put("pre"+i, ""); | |
| 1567 | 1839 | } |
| 1568 | 1840 | String bud = "bud" + Integer.valueOf(b.getYear().split("-")[1]); |
| 1569 | 1841 | if(b.getFormalMileage()!=null){ |
| ... | ... | @@ -1617,6 +1889,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1617 | 1889 | for(int i = 1; i <= 12; i++){ |
| 1618 | 1890 | m.put("mon"+i, ""); |
| 1619 | 1891 | m.put("bud"+i, ""); |
| 1892 | + m.put("pre"+i, ""); | |
| 1620 | 1893 | } |
| 1621 | 1894 | String bud = "bud" + Integer.valueOf(b.getYear().split("-")[1]); |
| 1622 | 1895 | if(b.getFormalPerson()!=null){ |
| ... | ... | @@ -1670,6 +1943,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1670 | 1943 | for(int i = 1; i <= 12; i++){ |
| 1671 | 1944 | m.put("mon"+i, ""); |
| 1672 | 1945 | m.put("bud"+i, ""); |
| 1946 | + m.put("pre"+i, ""); | |
| 1673 | 1947 | } |
| 1674 | 1948 | String bud = "bud" + Integer.valueOf(b.getYear().split("-")[1]); |
| 1675 | 1949 | if(b.getFormalAmounts()!=null){ |
| ... | ... | @@ -1740,6 +2014,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1740 | 2014 | for(int i = 1; i <= 12; i++){ |
| 1741 | 2015 | m.put("mon"+i, ""); |
| 1742 | 2016 | m.put("bud"+i, ""); |
| 2017 | + m.put("pre"+i, ""); | |
| 1743 | 2018 | } |
| 1744 | 2019 | m.put("monAll", "0"); |
| 1745 | 2020 | xlMap.put(key, m); |
| ... | ... | @@ -1756,7 +2031,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1756 | 2031 | } |
| 1757 | 2032 | } |
| 1758 | 2033 | |
| 1759 | - for(Revenue cs : revenueList){ | |
| 2034 | + for(Revenue cs : revenueList){ // 人次与营收 | |
| 1760 | 2035 | Boolean flag = true; |
| 1761 | 2036 | if("0".equals(nature)){ |
| 1762 | 2037 | flag = false; |
| ... | ... | @@ -1787,6 +2062,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1787 | 2062 | for(int i = 1; i <= 12; i++){ |
| 1788 | 2063 | m.put("mon"+i, ""); |
| 1789 | 2064 | m.put("bud"+i, ""); |
| 2065 | + m.put("pre"+i, ""); | |
| 1790 | 2066 | } |
| 1791 | 2067 | m.put("monAll", "0"); |
| 1792 | 2068 | xlMap.put(key2, m); |
| ... | ... | @@ -1817,6 +2093,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1817 | 2093 | for(int i = 1; i <= 12; i++){ |
| 1818 | 2094 | m.put("mon"+i, ""); |
| 1819 | 2095 | m.put("bud"+i, ""); |
| 2096 | + m.put("pre"+i, ""); | |
| 1820 | 2097 | } |
| 1821 | 2098 | m.put("monAll", "0"); |
| 1822 | 2099 | xlMap.put(key3, m); |
| ... | ... | @@ -1834,15 +2111,134 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1834 | 2111 | } |
| 1835 | 2112 | } |
| 1836 | 2113 | |
| 1837 | - for(Map<String, Object> m : xlList){ | |
| 1838 | - BigDecimal monAll = new BigDecimal("0"); | |
| 1839 | - for(int i = 1; i <= 12; i++){ | |
| 1840 | - if(m.get("mon"+i).toString().length() > 0){ | |
| 1841 | - BigDecimal val = new BigDecimal(m.get("mon"+i).toString()); | |
| 1842 | - monAll = monAll.add(val); | |
| 2114 | + for(CalcStatistics cs1 : scheduleList_1){ // 去年公里 | |
| 2115 | + Boolean flag = true; | |
| 2116 | + if("0".equals(nature)){ | |
| 2117 | + flag = false; | |
| 2118 | + } else if("1".equals(nature) && lineNature.containsKey(cs1.getXl()) && lineNature.get(cs1.getXl())){ | |
| 2119 | + flag = false; | |
| 2120 | + } else if("2".equals(nature) && !(lineNature.containsKey(cs1.getXl()) && lineNature.get(cs1.getXl()))){ | |
| 2121 | + flag = false; | |
| 2122 | + } | |
| 2123 | + if(flag){ | |
| 2124 | + continue; | |
| 2125 | + } | |
| 2126 | + String gsdm = cs1.getGsdm(); | |
| 2127 | + String xlBm = cs1.getXl(); | |
| 2128 | + String xlName = cs1.getXlName(); | |
| 2129 | + String key = gsdm + "_" + xlBm; | |
| 2130 | + String key1 = key + "_1"; | |
| 2131 | + if(!(xlMap.containsKey(key1))){ | |
| 2132 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 2133 | + m.put("gsBm", gsdm); | |
| 2134 | + m.put("gsName", BasicData.businessCodeNameMap.get(gsdm)); | |
| 2135 | + m.put("xlBm", xlBm); | |
| 2136 | + m.put("xlName", xlName); | |
| 2137 | + m.put("type", "公里"); | |
| 2138 | + m.put("budget", ""); | |
| 2139 | + m.put("change", ""); | |
| 2140 | + m.put("formal", ""); | |
| 2141 | + for(int i = 1; i <= 12; i++){ | |
| 2142 | + m.put("mon"+i, ""); | |
| 2143 | + m.put("bud"+i, ""); | |
| 2144 | + m.put("pre"+i, ""); | |
| 1843 | 2145 | } |
| 2146 | + m.put("monAll", "0"); | |
| 2147 | + xlMap.put(key1, m); | |
| 2148 | + xlList.add(m); | |
| 1844 | 2149 | } |
| 1845 | - m.put("monAll", monAll.doubleValue()); | |
| 2150 | + Map<String, Object> map = xlMap.get(key1); | |
| 2151 | + String pre = "pre" + Integer.valueOf(sdfMM.format(cs1.getDate())); | |
| 2152 | + String val = map.get(pre).toString(); | |
| 2153 | + BigDecimal num = new BigDecimal(cs1.getSjzlc().toString()); | |
| 2154 | + if(val.length() == 0){ | |
| 2155 | + map.put(pre, num.doubleValue()); | |
| 2156 | + } else { | |
| 2157 | + map.put(pre, new BigDecimal(val).add(num).doubleValue()); | |
| 2158 | + } | |
| 2159 | + } | |
| 2160 | + | |
| 2161 | + for(Revenue cs1 : revenueList_1){ // 去年人次与营收 | |
| 2162 | + Boolean flag = true; | |
| 2163 | + if("0".equals(nature)){ | |
| 2164 | + flag = false; | |
| 2165 | + } else if("1".equals(nature) && cs1.getSfyy()){ | |
| 2166 | + flag = false; | |
| 2167 | + } else if("2".equals(nature) && !(cs1.getSfyy())){ | |
| 2168 | + flag = false; | |
| 2169 | + } | |
| 2170 | + if(flag){ | |
| 2171 | + continue; | |
| 2172 | + } | |
| 2173 | + String gsBm = cs1.getGsBm(); | |
| 2174 | + String xlBm = cs1.getXlBm(); | |
| 2175 | + String xlName = cs1.getXlName(); | |
| 2176 | + | |
| 2177 | + { // 去年人次 | |
| 2178 | + String key2 = gsBm + "_" + xlBm + "_2"; | |
| 2179 | + if(!(xlMap.containsKey(key2))){ | |
| 2180 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 2181 | + m.put("gsBm", gsBm); | |
| 2182 | + m.put("gsName", BasicData.businessCodeNameMap.get(gsBm)); | |
| 2183 | + m.put("xlBm", xlBm); | |
| 2184 | + m.put("xlName", xlName); | |
| 2185 | + m.put("type", "人次"); | |
| 2186 | + m.put("budget", ""); | |
| 2187 | + m.put("change", ""); | |
| 2188 | + m.put("formal", ""); | |
| 2189 | + for(int i = 1; i <= 12; i++){ | |
| 2190 | + m.put("mon"+i, ""); | |
| 2191 | + m.put("bud"+i, ""); | |
| 2192 | + m.put("pre"+i, ""); | |
| 2193 | + } | |
| 2194 | + m.put("monAll", "0"); | |
| 2195 | + xlMap.put(key2, m); | |
| 2196 | + xlList.add(m); | |
| 2197 | + } | |
| 2198 | + Map<String, Object> map = xlMap.get(key2); | |
| 2199 | + String pre = "pre" + Integer.valueOf(sdfMM.format(cs1.getScheduleDate())); | |
| 2200 | + String val = map.get(pre).toString(); | |
| 2201 | + BigDecimal num = new BigDecimal(cs1.getNum().toString()); | |
| 2202 | + if(val.length() == 0){ | |
| 2203 | + map.put(pre, num.doubleValue()); | |
| 2204 | + } else { | |
| 2205 | + map.put(pre, new BigDecimal(val).add(num).doubleValue()); | |
| 2206 | + } | |
| 2207 | + } | |
| 2208 | + { // 去年营收 | |
| 2209 | + String key3 = gsBm + "_" + xlBm + "_3"; | |
| 2210 | + if(!(xlMap.containsKey(key3))){ | |
| 2211 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 2212 | + m.put("gsBm", gsBm); | |
| 2213 | + m.put("gsName", BasicData.businessCodeNameMap.get(gsBm)); | |
| 2214 | + m.put("xlBm", xlBm); | |
| 2215 | + m.put("xlName", xlName); | |
| 2216 | + m.put("type", "营收"); | |
| 2217 | + m.put("budget", ""); | |
| 2218 | + m.put("change", ""); | |
| 2219 | + m.put("formal", ""); | |
| 2220 | + for(int i = 1; i <= 12; i++){ | |
| 2221 | + m.put("mon"+i, ""); | |
| 2222 | + m.put("bud"+i, ""); | |
| 2223 | + m.put("pre"+i, ""); | |
| 2224 | + } | |
| 2225 | + m.put("monAll", "0"); | |
| 2226 | + xlMap.put(key3, m); | |
| 2227 | + xlList.add(m); | |
| 2228 | + } | |
| 2229 | + Map<String, Object> map = xlMap.get(key3); | |
| 2230 | + String pre = "pre" + Integer.valueOf(sdfMM.format(cs1.getScheduleDate())); | |
| 2231 | + String val = map.get(pre).toString(); | |
| 2232 | + BigDecimal num = new BigDecimal(cs1.getAmount().toString()); | |
| 2233 | + if(val.length() == 0){ | |
| 2234 | + map.put(pre, num.doubleValue()); | |
| 2235 | + } else { | |
| 2236 | + map.put(pre, new BigDecimal(val).add(num).doubleValue()); | |
| 2237 | + } | |
| 2238 | + } | |
| 2239 | + } | |
| 2240 | + | |
| 2241 | + for(Map<String, Object> m : xlList){ | |
| 1846 | 2242 | |
| 1847 | 2243 | String gsBm = m.get("gsBm").toString(); |
| 1848 | 2244 | String type = m.get("type").toString(); |
| ... | ... | @@ -1886,7 +2282,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1886 | 2282 | } |
| 1887 | 2283 | } |
| 1888 | 2284 | for(int i = 1; i <= 12; i++){ |
| 1889 | - String mon = "mon"+i, bud = "bud"+i; | |
| 2285 | + String mon = "mon"+i, bud = "bud"+i, pre = "pre"+i; | |
| 1890 | 2286 | if(m.get(mon).toString().length() > 0){ |
| 1891 | 2287 | if(map.get(mon).toString().length() > 0){ |
| 1892 | 2288 | map.put(mon, new BigDecimal(m.get(mon).toString()).add( |
| ... | ... | @@ -1903,6 +2299,14 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1903 | 2299 | map.put(bud, new BigDecimal(m.get(bud).toString()).doubleValue()); |
| 1904 | 2300 | } |
| 1905 | 2301 | } |
| 2302 | + if(m.get(pre).toString().length() > 0){ | |
| 2303 | + if(map.get(pre).toString().length() > 0){ | |
| 2304 | + map.put(pre, new BigDecimal(m.get(pre).toString()).add( | |
| 2305 | + new BigDecimal(map.get(pre).toString())).doubleValue()); | |
| 2306 | + } else { | |
| 2307 | + map.put(pre, new BigDecimal(m.get(pre).toString()).doubleValue()); | |
| 2308 | + } | |
| 2309 | + } | |
| 1906 | 2310 | } |
| 1907 | 2311 | List<Map<String, Object>>dataList = (List<Map<String, Object>>)map.get("dataList"); |
| 1908 | 2312 | dataList.add(m); |
| ... | ... | @@ -1912,15 +2316,35 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1912 | 2316 | if("营收".equals(m.get("type").toString())){ |
| 1913 | 2317 | digit = "1000000"; |
| 1914 | 2318 | } |
| 2319 | + BigDecimal monAll = new BigDecimal("0"); | |
| 2320 | + BigDecimal preAll = new BigDecimal("0"); | |
| 1915 | 2321 | for(int i = 1; i <= 12; i++){ |
| 1916 | 2322 | if(m.get("mon"+i).toString().length() > 0){ |
| 1917 | 2323 | BigDecimal val = new BigDecimal(m.get("mon"+i).toString()); |
| 2324 | + monAll = monAll.add(val); | |
| 1918 | 2325 | val = val.divide(new BigDecimal(digit), 3, BigDecimal.ROUND_HALF_UP); |
| 1919 | 2326 | m.put("mon"+i, val.doubleValue()); |
| 1920 | 2327 | } |
| 2328 | + if(m.get("pre"+i).toString().length() > 0){ | |
| 2329 | + BigDecimal val = new BigDecimal(m.get("pre"+i).toString()); | |
| 2330 | + preAll = preAll.add(val); | |
| 2331 | + val = val.divide(new BigDecimal(digit), 3, BigDecimal.ROUND_HALF_UP); | |
| 2332 | + m.put("pre"+i, val.doubleValue()); | |
| 2333 | + if(m.get("mon"+i).toString().length() > 0){ | |
| 2334 | + BigDecimal monVal = new BigDecimal(m.get("mon"+i).toString()); | |
| 2335 | + BigDecimal sub = monVal.subtract(val); | |
| 2336 | + m.put("sub"+i, sub.doubleValue() > 0 ? "+" + sub.doubleValue() : sub.doubleValue()); | |
| 2337 | + } else { | |
| 2338 | + m.put("sub"+i, "-" + val.doubleValue()); | |
| 2339 | + } | |
| 2340 | + } | |
| 1921 | 2341 | } |
| 1922 | 2342 | monAll = monAll.divide(new BigDecimal(digit), 3, BigDecimal.ROUND_HALF_UP); |
| 2343 | + preAll = preAll.divide(new BigDecimal(digit), 3, BigDecimal.ROUND_HALF_UP); | |
| 2344 | + Double subAll = monAll.subtract(preAll).doubleValue(); | |
| 1923 | 2345 | m.put("monAll", monAll.doubleValue()); |
| 2346 | + m.put("preAll", preAll.doubleValue()); | |
| 2347 | + m.put("subAll", subAll > 0 ? "+" + subAll : subAll); | |
| 1924 | 2348 | |
| 1925 | 2349 | if(m.get("formal").toString().length() > 0 && m.get("monAll").toString().length() > 0 |
| 1926 | 2350 | && new BigDecimal(m.get("formal").toString()).doubleValue() > 0d){ |
| ... | ... | @@ -1930,7 +2354,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1930 | 2354 | new BigDecimal(100)).divide( |
| 1931 | 2355 | new BigDecimal(1), 2, BigDecimal.ROUND_HALF_UP)+ "%"); |
| 1932 | 2356 | BigDecimal diff = monAll.subtract(formal); |
| 1933 | - m.put("diff", diff.doubleValue() > 0 ? "+" + diff.toString() : diff.toString()); | |
| 2357 | + m.put("diff", diff.doubleValue() > 0 ? "+" + diff.doubleValue() : diff.doubleValue()); | |
| 1934 | 2358 | } else { |
| 1935 | 2359 | m.put("complete", ""); |
| 1936 | 2360 | m.put("diff", ""); |
| ... | ... | @@ -1980,6 +2404,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1980 | 2404 | for(String key : strs){ |
| 1981 | 2405 | Map<String, Object> m = keyMap.get(key); |
| 1982 | 2406 | BigDecimal monAll = new BigDecimal("0"); |
| 2407 | + BigDecimal preAll = new BigDecimal("0"); | |
| 1983 | 2408 | String digit = "10000"; |
| 1984 | 2409 | if("营收".equals(m.get("type").toString())){ |
| 1985 | 2410 | digit = "1000000"; |
| ... | ... | @@ -1991,9 +2416,26 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 1991 | 2416 | val = val.divide(new BigDecimal(digit), 3, BigDecimal.ROUND_HALF_UP); |
| 1992 | 2417 | m.put("mon"+i, val.doubleValue()); |
| 1993 | 2418 | } |
| 2419 | + if(m.get("pre"+i).toString().length() > 0){ | |
| 2420 | + BigDecimal val = new BigDecimal(m.get("pre"+i).toString()); | |
| 2421 | + preAll = preAll.add(val); | |
| 2422 | + val = val.divide(new BigDecimal(digit), 3, BigDecimal.ROUND_HALF_UP); | |
| 2423 | + m.put("pre"+i, val.doubleValue()); | |
| 2424 | + if(m.get("mon"+i).toString().length() > 0){ | |
| 2425 | + BigDecimal monVal = new BigDecimal(m.get("mon"+i).toString()); | |
| 2426 | + BigDecimal sub = monVal.subtract(val); | |
| 2427 | + m.put("sub"+i, sub.doubleValue() > 0 ? "+" + sub.doubleValue() : sub.doubleValue()); | |
| 2428 | + } else { | |
| 2429 | + m.put("sub"+i, "-" + val.doubleValue()); | |
| 2430 | + } | |
| 2431 | + } | |
| 1994 | 2432 | } |
| 1995 | 2433 | monAll = monAll.divide(new BigDecimal(digit), 3, BigDecimal.ROUND_HALF_UP); |
| 2434 | + preAll = preAll.divide(new BigDecimal(digit), 3, BigDecimal.ROUND_HALF_UP); | |
| 2435 | + Double subAll = monAll.subtract(preAll).doubleValue(); | |
| 1996 | 2436 | m.put("monAll", monAll.doubleValue()); |
| 2437 | + m.put("preAll", preAll.doubleValue()); | |
| 2438 | + m.put("subAll", subAll > 0 ? "+" + subAll : subAll); | |
| 1997 | 2439 | |
| 1998 | 2440 | if(m.get("formal").toString().length() > 0 && m.get("monAll").toString().length() > 0 |
| 1999 | 2441 | && new BigDecimal(m.get("formal").toString()).doubleValue() > 0d){ |
| ... | ... | @@ -2003,7 +2445,7 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 2003 | 2445 | new BigDecimal(100)).divide( |
| 2004 | 2446 | new BigDecimal(1), 2, BigDecimal.ROUND_HALF_UP)+ "%"); |
| 2005 | 2447 | BigDecimal diff = monAll.subtract(formal); |
| 2006 | - m.put("diff", diff.doubleValue() > 0 ? "+" + diff.toString() : diff.toString()); | |
| 2448 | + m.put("diff", diff.doubleValue() > 0 ? "+" + diff.doubleValue() : diff.doubleValue()); | |
| 2007 | 2449 | } else { |
| 2008 | 2450 | m.put("complete", ""); |
| 2009 | 2451 | m.put("diff", ""); |
| ... | ... | @@ -2434,6 +2876,271 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 2434 | 2876 | |
| 2435 | 2877 | return resList; |
| 2436 | 2878 | } |
| 2879 | + | |
| 2880 | + @Override | |
| 2881 | + public Map<String, Object> timeAnaly(String company, String subCompany, String date, | |
| 2882 | + String line, String model, String tttt, String kkkk) throws Exception { | |
| 2883 | + // TODO Auto-generated method stub | |
| 2884 | + | |
| 2885 | + int | |
| 2886 | + zgf1 = 6 * 60 + 31, | |
| 2887 | + zgf2 = 8 * 60 + 30, | |
| 2888 | + wgf1 = 16 * 60 + 1, | |
| 2889 | + wgf2 = 18 * 60, | |
| 2890 | + xxsj = 90; | |
| 2891 | + | |
| 2892 | + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); | |
| 2893 | + Map<String, Object> resMap = new HashMap<String, Object>(); | |
| 2894 | + Map<String, Map<String, Object>> keyMap = new HashMap<String, Map<String, Object>>(); | |
| 2895 | + Map<String, List<SchedulePlanInfo>> keyList = new HashMap<String, List<SchedulePlanInfo>>(); | |
| 2896 | + List<SchedulePlanInfo> planList = new ArrayList<SchedulePlanInfo>(); | |
| 2897 | + List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); | |
| 2898 | + | |
| 2899 | + if(model.trim().length() > 0){ | |
| 2900 | + planList = schedulePlanRepository.findPlanByTTinfo(line, date, model); | |
| 2901 | + } else { | |
| 2902 | + planList = schedulePlanRepository.findPlanByXlAndDate(line, date); | |
| 2903 | + } | |
| 2904 | + | |
| 2905 | + for(SchedulePlanInfo plan : planList){ | |
| 2906 | + String gsBm = plan.getGsBm(); | |
| 2907 | + String fgsBm = plan.getFgsBm(); | |
| 2908 | + String xl = plan.getXl().toString(); | |
| 2909 | + String lp = plan.getLp().toString(); | |
| 2910 | + String ttInfo = plan.getTtInfo().toString(); | |
| 2911 | + String key = gsBm + "/" + fgsBm + "/" + xl + "/" + lp + "/" + ttInfo; | |
| 2912 | + if(!keyMap.containsKey(key)){ | |
| 2913 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 2914 | + m.put("gsBm", gsBm); | |
| 2915 | + m.put("fgsBm", fgsBm); | |
| 2916 | + m.put("gsName", BasicData.businessCodeNameMap.get(gsBm)); | |
| 2917 | + m.put("fgsName", BasicData.businessFgsCodeNameMap.get(fgsBm + "_" + gsBm)); | |
| 2918 | + m.put("xl", xl); | |
| 2919 | + m.put("xlName", plan.getXlName()); | |
| 2920 | + m.put("lp", lp); | |
| 2921 | + m.put("lpName", plan.getLpName()); | |
| 2922 | + m.put("outStation", ""); | |
| 2923 | + m.put("qdzName0", ""); | |
| 2924 | + m.put("zdzName0", ""); | |
| 2925 | + m.put("qdzName1", ""); | |
| 2926 | + m.put("zdzName1", ""); | |
| 2927 | + m.put("inStation", ""); | |
| 2928 | + keyMap.put(key, m); | |
| 2929 | + keyList.put(key, new ArrayList<SchedulePlanInfo>()); | |
| 2930 | + list.add(m); | |
| 2931 | + } | |
| 2932 | + keyList.get(key).add(plan); | |
| 2933 | + } | |
| 2934 | + | |
| 2935 | + Set<String> ecSet = new HashSet<String>(); // 人事配档数 | |
| 2936 | + Set<String> carSet = new HashSet<String>(); // 配车数 | |
| 2937 | + for(String key : keyList.keySet()){ | |
| 2938 | + String[] keys = key.split("/"); | |
| 2939 | + Long ttInfo = Long.valueOf(keys[4]); | |
| 2940 | + int xl = Integer.valueOf(keys[2]); | |
| 2941 | + Long lp = Long.valueOf(keys[3]); | |
| 2942 | + Map<String, Object> m = keyMap.get(key); | |
| 2943 | + int p_fcsj = 0, p_dzsj = 0; | |
| 2944 | + int yssj_bc = 0, yssj_all = 0, yssj_z = 0, yssj_w = 0, yssj_d = 0; | |
| 2945 | + int tzsj_bc = 0, tzsj_all = 0, tzsj_z = 0, tzsj_w = 0, tzsj_d = 0; | |
| 2946 | + int ksbc = 0, yybc = 0, zgs = 15; // 总工时:加上报到例保时间15分钟、复驶路牌10分钟 | |
| 2947 | + BigDecimal kslc = new BigDecimal(0), yylc = new BigDecimal(0); | |
| 2948 | + for(SchedulePlanInfo plan : keyList.get(key)){ | |
| 2949 | + String[] split = plan.getFcsj().split(":"); | |
| 2950 | + int fcsj = Integer.valueOf(split[0])*60 + Integer.valueOf(split[1]); | |
| 2951 | + int bcsj = plan.getBcsj(); | |
| 2952 | + if(fcsj < p_fcsj){ | |
| 2953 | + fcsj += 24*60; | |
| 2954 | + } | |
| 2955 | + int dzsj = fcsj + bcsj; | |
| 2956 | + | |
| 2957 | + String jGh = plan.getjGh() != null ? plan.getjGh().trim() : ""; | |
| 2958 | + String sGh = plan.getsGh() != null ? plan.getsGh().trim() : ""; | |
| 2959 | + String zbh = plan.getClZbh() != null ? plan.getClZbh().trim() : ""; | |
| 2960 | + ecSet.add(jGh + "/" + sGh); | |
| 2961 | + carSet.add(zbh); | |
| 2962 | + | |
| 2963 | + if(m.get("outStation").toString().length() == 0 && "out".equals(plan.getBcType())){ | |
| 2964 | + m.put("outStation", plan.getQdzName()!=null?plan.getQdzName():""); | |
| 2965 | + } | |
| 2966 | + if(m.get("qdzName0").toString().length() == 0 && "0".equals(plan.getXlDir()) | |
| 2967 | + && "normal".equals(plan.getBcType())){ | |
| 2968 | + m.put("qdzName0", plan.getQdzName()!=null?plan.getQdzName():""); | |
| 2969 | + m.put("zdzName0", plan.getZdzName()!=null?plan.getZdzName():""); | |
| 2970 | + } | |
| 2971 | + if(m.get("qdzName1").toString().length() == 0 && "1".equals(plan.getXlDir()) | |
| 2972 | + && "normal".equals(plan.getBcType())){ | |
| 2973 | + m.put("qdzName1", plan.getQdzName()!=null?plan.getQdzName():""); | |
| 2974 | + m.put("zdzName1", plan.getZdzName()!=null?plan.getZdzName():""); | |
| 2975 | + } | |
| 2976 | + if(m.get("inStation").toString().length() == 0 && "in".equals(plan.getBcType())){ | |
| 2977 | + m.put("inStation", plan.getZdzName()!=null?plan.getZdzName():""); | |
| 2978 | + } | |
| 2979 | + | |
| 2980 | + if(p_dzsj > 0 && fcsj - p_dzsj < xxsj){ | |
| 2981 | + zgs += dzsj - p_dzsj; | |
| 2982 | + } else { | |
| 2983 | + zgs += bcsj; | |
| 2984 | + } | |
| 2985 | + | |
| 2986 | + if("in/out/ldks".contains(plan.getBcType())){ | |
| 2987 | + ksbc += 1; | |
| 2988 | + kslc = kslc.add(BigDecimal.valueOf(plan.getJhlc())); | |
| 2989 | + } else { | |
| 2990 | + yybc += 1; | |
| 2991 | + yylc = yylc.add(BigDecimal.valueOf(plan.getJhlc())); | |
| 2992 | + } | |
| 2993 | + | |
| 2994 | + if(!("in/out/ldks".contains(plan.getBcType()))){ | |
| 2995 | + yssj_bc += 1; | |
| 2996 | + yssj_all += bcsj; | |
| 2997 | + if(fcsj <= zgf2 && dzsj >= zgf1){ | |
| 2998 | + int a = fcsj >= zgf1 ? fcsj : zgf1; | |
| 2999 | + int b = dzsj >= zgf2 ? zgf2 : dzsj; | |
| 3000 | + yssj_z += b - a; | |
| 3001 | + } | |
| 3002 | + if(fcsj <= wgf2 && dzsj >= wgf1){ | |
| 3003 | + int a = fcsj >= wgf1 ? fcsj : wgf1; | |
| 3004 | + int b = dzsj >= wgf2 ? wgf2 : dzsj; | |
| 3005 | + yssj_w += b - a; | |
| 3006 | + } | |
| 3007 | + yssj_d += bcsj; // 低谷运送时间,下面减去高峰时段的时间就是低谷时间 | |
| 3008 | + if(fcsj >= zgf1 && fcsj <= zgf2){ | |
| 3009 | + if(dzsj < zgf2){ | |
| 3010 | + yssj_d -= dzsj - fcsj; | |
| 3011 | + } else { | |
| 3012 | + yssj_d -= zgf2 - fcsj; | |
| 3013 | + } | |
| 3014 | + } else if(dzsj >= zgf1 && dzsj <= zgf2){ | |
| 3015 | + yssj_d -= dzsj - zgf1; | |
| 3016 | + } else if(fcsj < zgf1 && dzsj > zgf2){ | |
| 3017 | + yssj_d -= zgf2 - zgf1; | |
| 3018 | + } | |
| 3019 | + if(fcsj >= wgf1 && fcsj <= wgf2){ | |
| 3020 | + if(dzsj < wgf2){ | |
| 3021 | + yssj_d -= dzsj - fcsj; | |
| 3022 | + } else { | |
| 3023 | + yssj_d -= wgf2 - fcsj; | |
| 3024 | + } | |
| 3025 | + } else if(dzsj >= wgf1 && dzsj <= wgf2){ | |
| 3026 | + yssj_d -= dzsj - wgf1; | |
| 3027 | + } else if(fcsj < wgf1 && dzsj > wgf2){ | |
| 3028 | + yssj_d -= wgf2 - wgf1; | |
| 3029 | + } | |
| 3030 | + } | |
| 3031 | + | |
| 3032 | + if(!("in/out".contains(plan.getBcType()))){ | |
| 3033 | + int tzsj = fcsj - p_dzsj; // 停站时间,1、前个计划运送后到这个计划发车前;2、超过2小时或者下个班次为进出场时为空。 | |
| 3034 | + if(tzsj < 0){ | |
| 3035 | + tzsj = 0; | |
| 3036 | + } | |
| 3037 | + if(tzsj < xxsj){ | |
| 3038 | + tzsj_bc += 1; | |
| 3039 | + tzsj_all += tzsj; | |
| 3040 | + } | |
| 3041 | + if(tzsj > 0 && tzsj < xxsj){ | |
| 3042 | + if(p_dzsj <= zgf2 && fcsj >= zgf1){ | |
| 3043 | + int a = p_dzsj >= zgf1 ? p_dzsj : zgf1; | |
| 3044 | + int b = fcsj >= zgf2 ? zgf2 : fcsj; | |
| 3045 | + tzsj_z += b - a; | |
| 3046 | + } | |
| 3047 | + if(p_dzsj <= wgf2 && fcsj >= wgf1){ | |
| 3048 | + int a = p_dzsj >= wgf1 ? p_dzsj : wgf1; | |
| 3049 | + int b = fcsj >= wgf2 ? wgf2 : fcsj; | |
| 3050 | + tzsj_w += b - a; | |
| 3051 | + } | |
| 3052 | + tzsj_d += tzsj; // 低谷停站时间,下面减去高峰时段的时间就是低谷时间 | |
| 3053 | + if(p_dzsj >= zgf1 && p_dzsj <= zgf2){ | |
| 3054 | + if(fcsj < zgf2){ | |
| 3055 | + tzsj_d -= fcsj - p_dzsj; | |
| 3056 | + } else { | |
| 3057 | + tzsj_d -= zgf2 - p_dzsj; | |
| 3058 | + } | |
| 3059 | + } else if(fcsj >= zgf1 && fcsj <= zgf2){ | |
| 3060 | + tzsj_d -= fcsj - zgf1; | |
| 3061 | + } else if(p_dzsj < zgf1 && fcsj > zgf2){ | |
| 3062 | + tzsj_d -= zgf2 - zgf1; | |
| 3063 | + } | |
| 3064 | + if(p_dzsj >= wgf1 && p_dzsj <= wgf2){ | |
| 3065 | + if(fcsj < wgf2){ | |
| 3066 | + tzsj_d -= fcsj - p_dzsj; | |
| 3067 | + } else { | |
| 3068 | + tzsj_d -= wgf2 - p_dzsj; | |
| 3069 | + } | |
| 3070 | + } else if(fcsj >= wgf1 && fcsj <= wgf2){ | |
| 3071 | + tzsj_d -= fcsj - wgf1; | |
| 3072 | + } else if(p_dzsj < wgf1 && fcsj > wgf2){ | |
| 3073 | + tzsj_d -= wgf2 - wgf1; | |
| 3074 | + } | |
| 3075 | + } | |
| 3076 | + } | |
| 3077 | + | |
| 3078 | + p_fcsj = fcsj; | |
| 3079 | + p_dzsj = dzsj; | |
| 3080 | + } | |
| 3081 | + | |
| 3082 | + m.put("yssj_z", yssj_z); | |
| 3083 | + m.put("yssj_w", yssj_w); | |
| 3084 | + m.put("yssj_d", yssj_d); | |
| 3085 | + m.put("yssj_average", yssj_bc > 0 ? new BigDecimal(yssj_all).divide( | |
| 3086 | + new BigDecimal(yssj_bc), 2, BigDecimal.ROUND_HALF_UP) : ""); | |
| 3087 | + m.put("tzsj_z", tzsj_z); | |
| 3088 | + m.put("tzsj_w", tzsj_w); | |
| 3089 | + m.put("tzsj_d", tzsj_d); | |
| 3090 | + m.put("tzsj_average", tzsj_bc > 0 ? new BigDecimal(tzsj_all).divide( | |
| 3091 | + new BigDecimal(tzsj_bc), 2, BigDecimal.ROUND_HALF_UP) : ""); | |
| 3092 | + m.put("ksbc", ksbc); | |
| 3093 | + m.put("kslc", kslc); | |
| 3094 | + m.put("ks", ksbc + "/" + kslc); | |
| 3095 | + m.put("yybc", yybc); | |
| 3096 | + m.put("yylc", yylc); | |
| 3097 | + m.put("yy", yybc + "/" + yylc); | |
| 3098 | + m.put("yygs", yssj_all/60 + "." + yssj_all%60); | |
| 3099 | + m.put("zgs", zgs/60 + "." + zgs%60); | |
| 3100 | + | |
| 3101 | + String bx = ""; | |
| 3102 | + List<TTInfoBxDetail> findBxDetail = ttInfoBxDetailRepository.findBxDetail(ttInfo, xl, lp); | |
| 3103 | + if(findBxDetail.size() > 0){ | |
| 3104 | + for(TTInfoBxDetail b : findBxDetail){ | |
| 3105 | + if(b.getBxType1() != null && b.getBxType1().getDicDesc() != null){ | |
| 3106 | + bx += bx.length() > 0 ? "/" + b.getBxType1().getDicDesc() : b.getBxType1().getDicDesc(); | |
| 3107 | + } | |
| 3108 | + if(b.getBxType2() != null && b.getBxType2().getDicDesc() != null){ | |
| 3109 | + bx += bx.length() > 0 ? "/" + b.getBxType2().getDicDesc() : b.getBxType2().getDicDesc(); | |
| 3110 | + } | |
| 3111 | + } | |
| 3112 | + } | |
| 3113 | + m.put("bx", bx); | |
| 3114 | + } | |
| 3115 | + | |
| 3116 | + resMap.put("ecNum", ecSet.size()); | |
| 3117 | + resMap.put("carNum", carSet.size()); | |
| 3118 | + resMap.put("dataList", list); | |
| 3119 | + | |
| 3120 | + if(tttt.equals("export")){ | |
| 3121 | + SimpleDateFormat sdfMonth = new SimpleDateFormat("yyyy-MM-dd"), | |
| 3122 | + sdfSimple = new SimpleDateFormat("yyyyMMdd"); | |
| 3123 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 3124 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 3125 | + m.put("date", date); | |
| 3126 | + m.put("ecNum", ecSet.size()); | |
| 3127 | + m.put("carNum", carSet.size()); | |
| 3128 | + m.put("lineName", BasicData.lineCodeAllNameMap.get(line)); | |
| 3129 | + ReportUtils ee = new ReportUtils(); | |
| 3130 | + try { | |
| 3131 | + listI.add(list.iterator()); | |
| 3132 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 3133 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/timeAnaly.xls", | |
| 3134 | + path + "export/" + date + "-" + BasicData.lineCodeAllNameMap.get(line) + "-线路时刻表分析明细.xls"); | |
| 3135 | + } catch (Exception e) { | |
| 3136 | + // TODO: handle exception | |
| 3137 | + e.printStackTrace(); | |
| 3138 | + logger.info("", e); | |
| 3139 | + } | |
| 3140 | + } | |
| 3141 | + | |
| 3142 | + return resMap; | |
| 3143 | + } | |
| 2437 | 3144 | |
| 2438 | 3145 | public String[] createBudgetMap(List<Map<String, Object>> list, Map<String, Map<String, Object>> keyMap){ |
| 2439 | 3146 | |
| ... | ... | @@ -2479,8 +3186,11 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 2479 | 3186 | for(int i = 1; i <= 12; i++){ |
| 2480 | 3187 | m1.put("mon"+i, num); |
| 2481 | 3188 | m1.put("bud"+i, num); |
| 3189 | + m1.put("pre"+i, num); | |
| 3190 | + m1.put("sub"+i, ""); | |
| 2482 | 3191 | } |
| 2483 | 3192 | m1.put("monAll", "0"); |
| 3193 | + m1.put("subAll", "0"); | |
| 2484 | 3194 | m1.put("key", s); |
| 2485 | 3195 | m1.put("dataList", new ArrayList<Map<String, Object>>()); |
| 2486 | 3196 | list.add(m1); |
| ... | ... | @@ -2524,8 +3234,11 @@ public class BudgetServiceImpl extends BaseServiceImpl<Budget, Integer> implemen |
| 2524 | 3234 | for(int i = 1; i <= 12; i++){ |
| 2525 | 3235 | m1.put("mon"+i, num); |
| 2526 | 3236 | m1.put("bud"+i, num); |
| 3237 | + m1.put("pre"+i, num); | |
| 3238 | + m1.put("sub"+i, ""); | |
| 2527 | 3239 | } |
| 2528 | 3240 | m1.put("monAll", "0"); |
| 3241 | + m1.put("subAll", "0"); | |
| 2529 | 3242 | m1.put("key", s); |
| 2530 | 3243 | m1.put("dataList", new ArrayList<Map<String, Object>>()); |
| 2531 | 3244 | list.add(m1); |
| ... | ... | @@ -2564,11 +3277,8 @@ public String[] createBudgetMap_sum2(List<Map<String, Object>> list, Map<String, |
| 2564 | 3277 | } else if("0".equals(sp[1])){ |
| 2565 | 3278 | type = "小计"; |
| 2566 | 3279 | } |
| 2567 | - m1.put("gsName", gs);m1.put("type", type); | |
| 2568 | - for(int i = 1; i <= 12; i++){ | |
| 2569 | - m1.put("mon"+i, num); | |
| 2570 | - m1.put("bud"+i, num); | |
| 2571 | - } | |
| 3280 | + m1.put("gsName", gs); | |
| 3281 | + m1.put("type", type); | |
| 2572 | 3282 | m1.put("key", s); |
| 2573 | 3283 | m1.put("dataList", new ArrayList<Map<String, Object>>()); |
| 2574 | 3284 | list.add(m1); | ... | ... |
src/main/java/com/bsth/service/schedule/impl/PeopleCarPlanServiceImpl.java
| ... | ... | @@ -1221,20 +1221,27 @@ public class PeopleCarPlanServiceImpl implements PeopleCarPlanService { |
| 1221 | 1221 | isCancel = map.get("isCancel").toString().trim(); |
| 1222 | 1222 | } |
| 1223 | 1223 | try { |
| 1224 | + ArrayList<String> objList = new ArrayList<String>(); | |
| 1224 | 1225 | String sql = "select tt.id, tt.name from bsth_c_s_ttinfo tt left join" + |
| 1225 | 1226 | " (select tt_info from bsth_c_s_sp_info where 1=1"; |
| 1226 | - if(startDate.trim().length() > 0) | |
| 1227 | - sql += " and schedule_date >= '"+startDate+"'"; | |
| 1228 | - if(endDate.trim().length() > 0) | |
| 1229 | - sql += " and schedule_date <= '"+endDate+"'"; | |
| 1227 | + if(startDate.trim().length() > 0){ | |
| 1228 | + sql += " and schedule_date >= ?"; | |
| 1229 | + objList.add(startDate); | |
| 1230 | + } | |
| 1231 | + if(endDate.trim().length() > 0){ | |
| 1232 | + sql += " and schedule_date <= ?"; | |
| 1233 | + objList.add(endDate); | |
| 1234 | + } | |
| 1230 | 1235 | if(line.trim().length() != 0){ |
| 1231 | - sql += " and xl_bm = '"+line+"'"; | |
| 1236 | + sql += " and xl_bm = ?"; | |
| 1237 | + objList.add(line); | |
| 1232 | 1238 | } else { |
| 1233 | 1239 | return resList; |
| 1234 | 1240 | } |
| 1235 | 1241 | sql += " ) sp on sp.tt_info = tt.id where sp.tt_info is not null group by tt.id, tt.name"; |
| 1236 | 1242 | |
| 1237 | 1243 | resList = jdbcTemplate.query(sql, |
| 1244 | + objList.toArray(), | |
| 1238 | 1245 | new RowMapper<Map<String, Object>>(){ |
| 1239 | 1246 | @Override |
| 1240 | 1247 | public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException { | ... | ... |
src/main/resources/static/pages/forms/budget/budgetAmounts.html
| ... | ... | @@ -53,7 +53,7 @@ |
| 53 | 53 | <table class="table table-bordered table-hover table-checkable" id="forms"> |
| 54 | 54 | <thead style="text-align: center;"> |
| 55 | 55 | <tr> |
| 56 | - <th colspan="55"><label id="datetodate"></label> 预算营收明细表</th> | |
| 56 | + <th colspan="59"><label id="datetodate"></label> 预算营收明细表</th> | |
| 57 | 57 | </tr> |
| 58 | 58 | <tr> |
| 59 | 59 | <td style="min-width: 73px" rowspan="2">公司</td> |
| ... | ... | @@ -62,60 +62,73 @@ |
| 62 | 62 | <td style="min-width: 90px" rowspan="2">预算</td> |
| 63 | 63 | <td style="min-width: 90px" rowspan="2">预算调整</td> |
| 64 | 64 | <td style="min-width: 90px" rowspan="2">预算</br>正式稿</td> |
| 65 | - <td style="min-width: 90px" colspan="3">1月</td> | |
| 66 | - <td style="min-width: 90px" colspan="3">2月</td> | |
| 67 | - <td style="min-width: 90px" colspan="3">3月</td> | |
| 68 | - <td style="min-width: 90px" colspan="3">4月</td> | |
| 69 | - <td style="min-width: 90px" colspan="3">5月</td> | |
| 70 | - <td style="min-width: 90px" colspan="3">6月</td> | |
| 71 | - <td style="min-width: 90px" colspan="3">7月</td> | |
| 72 | - <td style="min-width: 90px" colspan="3">8月</td> | |
| 73 | - <td style="min-width: 90px" colspan="3">9月</td> | |
| 74 | - <td style="min-width: 90px" colspan="3">10月</td> | |
| 75 | - <td style="min-width: 90px" colspan="3">11月</td> | |
| 76 | - <td style="min-width: 90px" colspan="3">12月</td> | |
| 65 | + <td style="min-width: 90px" colspan="4">1月</td> | |
| 66 | + <td style="min-width: 90px" colspan="4">2月</td> | |
| 67 | + <td style="min-width: 90px" colspan="4">3月</td> | |
| 68 | + <td style="min-width: 90px" colspan="4">4月</td> | |
| 69 | + <td style="min-width: 90px" colspan="4">5月</td> | |
| 70 | + <td style="min-width: 90px" colspan="4">6月</td> | |
| 71 | + <td style="min-width: 90px" colspan="4">7月</td> | |
| 72 | + <td style="min-width: 90px" colspan="4">8月</td> | |
| 73 | + <td style="min-width: 90px" colspan="4">9月</td> | |
| 74 | + <td style="min-width: 90px" colspan="4">10月</td> | |
| 75 | + <td style="min-width: 90px" colspan="4">11月</td> | |
| 76 | + <td style="min-width: 90px" colspan="4">12月</td> | |
| 77 | 77 | <td style="min-width: 90px" rowspan="2">合计</td> |
| 78 | 78 | <td style="min-width: 90px" rowspan="2">预算</br>完成率</td> |
| 79 | 79 | <td style="min-width: 90px" rowspan="2">预算差异</td> |
| 80 | 80 | <td style="min-width: 80px" rowspan="2">平均票价</br>(元)</td> |
| 81 | + <td style="min-width: 90px" rowspan="2">相比去年差异</td> | |
| 81 | 82 | </tr> |
| 82 | 83 | <tr> |
| 83 | 84 | <td style="min-width: 80px">实际</td> |
| 84 | 85 | <td style="min-width: 80px">预算</td> |
| 85 | 86 | <td style="min-width: 80px">完成率</td> |
| 87 | + <td style="min-width: 80px">相比去年差异</td> | |
| 86 | 88 | <td style="min-width: 80px">实际</td> |
| 87 | 89 | <td style="min-width: 80px">预算</td> |
| 88 | 90 | <td style="min-width: 80px">完成率</td> |
| 91 | + <td style="min-width: 80px">相比去年差异</td> | |
| 89 | 92 | <td style="min-width: 80px">实际</td> |
| 90 | 93 | <td style="min-width: 80px">预算</td> |
| 91 | 94 | <td style="min-width: 80px">完成率</td> |
| 95 | + <td style="min-width: 80px">相比去年差异</td> | |
| 92 | 96 | <td style="min-width: 80px">实际</td> |
| 93 | 97 | <td style="min-width: 80px">预算</td> |
| 94 | 98 | <td style="min-width: 80px">完成率</td> |
| 99 | + <td style="min-width: 80px">相比去年差异</td> | |
| 95 | 100 | <td style="min-width: 80px">实际</td> |
| 96 | 101 | <td style="min-width: 80px">预算</td> |
| 97 | 102 | <td style="min-width: 80px">完成率</td> |
| 103 | + <td style="min-width: 80px">相比去年差异</td> | |
| 98 | 104 | <td style="min-width: 80px">实际</td> |
| 99 | 105 | <td style="min-width: 80px">预算</td> |
| 100 | 106 | <td style="min-width: 80px">完成率</td> |
| 107 | + <td style="min-width: 80px">相比去年差异</td> | |
| 101 | 108 | <td style="min-width: 80px">实际</td> |
| 102 | 109 | <td style="min-width: 80px">预算</td> |
| 103 | 110 | <td style="min-width: 80px">完成率</td> |
| 111 | + <td style="min-width: 80px">相比去年差异</td> | |
| 104 | 112 | <td style="min-width: 80px">实际</td> |
| 105 | 113 | <td style="min-width: 80px">预算</td> |
| 106 | 114 | <td style="min-width: 80px">完成率</td> |
| 115 | + <td style="min-width: 80px">相比去年差异</td> | |
| 107 | 116 | <td style="min-width: 80px">实际</td> |
| 108 | 117 | <td style="min-width: 80px">预算</td> |
| 109 | 118 | <td style="min-width: 80px">完成率</td> |
| 119 | + <td style="min-width: 80px">相比去年差异</td> | |
| 110 | 120 | <td style="min-width: 80px">实际</td> |
| 111 | 121 | <td style="min-width: 80px">预算</td> |
| 112 | 122 | <td style="min-width: 80px">完成率</td> |
| 123 | + <td style="min-width: 80px">相比去年差异</td> | |
| 113 | 124 | <td style="min-width: 80px">实际</td> |
| 114 | 125 | <td style="min-width: 80px">预算</td> |
| 115 | 126 | <td style="min-width: 80px">完成率</td> |
| 127 | + <td style="min-width: 80px">相比去年差异</td> | |
| 116 | 128 | <td style="min-width: 80px">实际</td> |
| 117 | 129 | <td style="min-width: 80px">预算</td> |
| 118 | 130 | <td style="min-width: 80px">完成率</td> |
| 131 | + <td style="min-width: 80px">相比去年差异</td> | |
| 119 | 132 | </tr> |
| 120 | 133 | </thead> |
| 121 | 134 | <tbody class="budget_amounts"> |
| ... | ... | @@ -145,60 +158,73 @@ |
| 145 | 158 | <td style="min-width: 90px" rowspan="2">预算</td> |
| 146 | 159 | <td style="min-width: 90px" rowspan="2">预算调整</td> |
| 147 | 160 | <td style="min-width: 90px" rowspan="2">预算</br>正式稿</td> |
| 148 | - <td style="min-width: 90px" colspan="3">1月</td> | |
| 149 | - <td style="min-width: 90px" colspan="3">2月</td> | |
| 150 | - <td style="min-width: 90px" colspan="3">3月</td> | |
| 151 | - <td style="min-width: 90px" colspan="3">4月</td> | |
| 152 | - <td style="min-width: 90px" colspan="3">5月</td> | |
| 153 | - <td style="min-width: 90px" colspan="3">6月</td> | |
| 154 | - <td style="min-width: 90px" colspan="3">7月</td> | |
| 155 | - <td style="min-width: 90px" colspan="3">8月</td> | |
| 156 | - <td style="min-width: 90px" colspan="3">9月</td> | |
| 157 | - <td style="min-width: 90px" colspan="3">10月</td> | |
| 158 | - <td style="min-width: 90px" colspan="3">11月</td> | |
| 159 | - <td style="min-width: 90px" colspan="3">12月</td> | |
| 161 | + <td style="min-width: 90px" colspan="4">1月</td> | |
| 162 | + <td style="min-width: 90px" colspan="4">2月</td> | |
| 163 | + <td style="min-width: 90px" colspan="4">3月</td> | |
| 164 | + <td style="min-width: 90px" colspan="4">4月</td> | |
| 165 | + <td style="min-width: 90px" colspan="4">5月</td> | |
| 166 | + <td style="min-width: 90px" colspan="4">6月</td> | |
| 167 | + <td style="min-width: 90px" colspan="4">7月</td> | |
| 168 | + <td style="min-width: 90px" colspan="4">8月</td> | |
| 169 | + <td style="min-width: 90px" colspan="4">9月</td> | |
| 170 | + <td style="min-width: 90px" colspan="4">10月</td> | |
| 171 | + <td style="min-width: 90px" colspan="4">11月</td> | |
| 172 | + <td style="min-width: 90px" colspan="4">12月</td> | |
| 160 | 173 | <td style="min-width: 90px" rowspan="2">合计</td> |
| 161 | 174 | <td style="min-width: 90px" rowspan="2">预算</br>完成率</td> |
| 162 | 175 | <td style="min-width: 90px" rowspan="2">预算差异</td> |
| 163 | 176 | <td style="min-width: 80px" rowspan="2">平均票价</br>(元)</td> |
| 177 | + <td style="min-width: 90px" rowspan="2">相比去年差异</td> | |
| 164 | 178 | </tr> |
| 165 | 179 | <tr> |
| 166 | 180 | <td style="min-width: 80px">实际</td> |
| 167 | 181 | <td style="min-width: 80px">预算</td> |
| 168 | 182 | <td style="min-width: 80px">完成率</td> |
| 183 | + <td style="min-width: 80px">相比去年差异</td> | |
| 169 | 184 | <td style="min-width: 80px">实际</td> |
| 170 | 185 | <td style="min-width: 80px">预算</td> |
| 171 | 186 | <td style="min-width: 80px">完成率</td> |
| 187 | + <td style="min-width: 80px">相比去年差异</td> | |
| 172 | 188 | <td style="min-width: 80px">实际</td> |
| 173 | 189 | <td style="min-width: 80px">预算</td> |
| 174 | 190 | <td style="min-width: 80px">完成率</td> |
| 191 | + <td style="min-width: 80px">相比去年差异</td> | |
| 175 | 192 | <td style="min-width: 80px">实际</td> |
| 176 | 193 | <td style="min-width: 80px">预算</td> |
| 177 | 194 | <td style="min-width: 80px">完成率</td> |
| 195 | + <td style="min-width: 80px">相比去年差异</td> | |
| 178 | 196 | <td style="min-width: 80px">实际</td> |
| 179 | 197 | <td style="min-width: 80px">预算</td> |
| 180 | 198 | <td style="min-width: 80px">完成率</td> |
| 199 | + <td style="min-width: 80px">相比去年差异</td> | |
| 181 | 200 | <td style="min-width: 80px">实际</td> |
| 182 | 201 | <td style="min-width: 80px">预算</td> |
| 183 | 202 | <td style="min-width: 80px">完成率</td> |
| 203 | + <td style="min-width: 80px">相比去年差异</td> | |
| 184 | 204 | <td style="min-width: 80px">实际</td> |
| 185 | 205 | <td style="min-width: 80px">预算</td> |
| 186 | 206 | <td style="min-width: 80px">完成率</td> |
| 207 | + <td style="min-width: 80px">相比去年差异</td> | |
| 187 | 208 | <td style="min-width: 80px">实际</td> |
| 188 | 209 | <td style="min-width: 80px">预算</td> |
| 189 | 210 | <td style="min-width: 80px">完成率</td> |
| 211 | + <td style="min-width: 80px">相比去年差异</td> | |
| 190 | 212 | <td style="min-width: 80px">实际</td> |
| 191 | 213 | <td style="min-width: 80px">预算</td> |
| 192 | 214 | <td style="min-width: 80px">完成率</td> |
| 215 | + <td style="min-width: 80px">相比去年差异</td> | |
| 193 | 216 | <td style="min-width: 80px">实际</td> |
| 194 | 217 | <td style="min-width: 80px">预算</td> |
| 195 | 218 | <td style="min-width: 80px">完成率</td> |
| 219 | + <td style="min-width: 80px">相比去年差异</td> | |
| 196 | 220 | <td style="min-width: 80px">实际</td> |
| 197 | 221 | <td style="min-width: 80px">预算</td> |
| 198 | 222 | <td style="min-width: 80px">完成率</td> |
| 223 | + <td style="min-width: 80px">相比去年差异</td> | |
| 199 | 224 | <td style="min-width: 80px">实际</td> |
| 200 | 225 | <td style="min-width: 80px">预算</td> |
| 201 | 226 | <td style="min-width: 80px">完成率</td> |
| 227 | + <td style="min-width: 80px">相比去年差异</td> | |
| 202 | 228 | </tr> |
| 203 | 229 | </thead> |
| 204 | 230 | <tbody class="budget_amounts_dataList" id="datas"> |
| ... | ... | @@ -208,7 +234,6 @@ |
| 208 | 234 | </div> |
| 209 | 235 | </div> |
| 210 | 236 | </div> |
| 211 | -</div> | |
| 212 | 237 | |
| 213 | 238 | <script> |
| 214 | 239 | $(function(){ |
| ... | ... | @@ -337,48 +362,61 @@ |
| 337 | 362 | <td>{{obj.mon1}}</td> |
| 338 | 363 | <td>{{obj.bud1}}</td> |
| 339 | 364 | <td>{{obj.com1}}</td> |
| 365 | + <td>{{obj.sub1}}</td> | |
| 340 | 366 | <td>{{obj.mon2}}</td> |
| 341 | 367 | <td>{{obj.bud2}}</td> |
| 342 | 368 | <td>{{obj.com2}}</td> |
| 369 | + <td>{{obj.sub2}}</td> | |
| 343 | 370 | <td>{{obj.mon3}}</td> |
| 344 | 371 | <td>{{obj.bud3}}</td> |
| 345 | 372 | <td>{{obj.com3}}</td> |
| 373 | + <td>{{obj.sub3}}</td> | |
| 346 | 374 | <td>{{obj.mon4}}</td> |
| 347 | 375 | <td>{{obj.bud4}}</td> |
| 348 | 376 | <td>{{obj.com4}}</td> |
| 377 | + <td>{{obj.sub4}}</td> | |
| 349 | 378 | <td>{{obj.mon5}}</td> |
| 350 | 379 | <td>{{obj.bud5}}</td> |
| 351 | 380 | <td>{{obj.com5}}</td> |
| 381 | + <td>{{obj.sub5}}</td> | |
| 352 | 382 | <td>{{obj.mon6}}</td> |
| 353 | 383 | <td>{{obj.bud6}}</td> |
| 354 | 384 | <td>{{obj.com6}}</td> |
| 385 | + <td>{{obj.sub6}}</td> | |
| 355 | 386 | <td>{{obj.mon7}}</td> |
| 356 | 387 | <td>{{obj.bud7}}</td> |
| 357 | 388 | <td>{{obj.com7}}</td> |
| 389 | + <td>{{obj.sub7}}</td> | |
| 358 | 390 | <td>{{obj.mon8}}</td> |
| 359 | 391 | <td>{{obj.bud8}}</td> |
| 360 | 392 | <td>{{obj.com8}}</td> |
| 393 | + <td>{{obj.sub8}}</td> | |
| 361 | 394 | <td>{{obj.mon9}}</td> |
| 362 | 395 | <td>{{obj.bud9}}</td> |
| 363 | 396 | <td>{{obj.com9}}</td> |
| 397 | + <td>{{obj.sub9}}</td> | |
| 364 | 398 | <td>{{obj.mon10}}</td> |
| 365 | 399 | <td>{{obj.bud10}}</td> |
| 366 | 400 | <td>{{obj.com10}}</td> |
| 401 | + <td>{{obj.sub10}}</td> | |
| 367 | 402 | <td>{{obj.mon11}}</td> |
| 368 | 403 | <td>{{obj.bud11}}</td> |
| 369 | 404 | <td>{{obj.com11}}</td> |
| 405 | + <td>{{obj.sub11}}</td> | |
| 370 | 406 | <td>{{obj.mon12}}</td> |
| 371 | 407 | <td>{{obj.bud12}}</td> |
| 372 | 408 | <td>{{obj.com12}}</td> |
| 409 | + <td>{{obj.sub12}}</td> | |
| 373 | 410 | <td>{{obj.monAll}}</td> |
| 374 | 411 | <td>{{obj.complete}}</td> |
| 375 | 412 | <td>{{obj.diff}}</td> |
| 376 | 413 | <td>{{obj.average}}</td> |
| 414 | + <td>{{obj.subAll}}</td> | |
| 377 | 415 | </tr> |
| 378 | 416 | {{/each}} |
| 379 | 417 | {{if list.length == 0}} |
| 380 | 418 | <tr> |
| 381 | - <td colspan="55"><h6 class="muted">没有找到相关数据</h6></td> | |
| 419 | + <td colspan="59"><h6 class="muted">没有找到相关数据</h6></td> | |
| 382 | 420 | </tr> |
| 383 | 421 | {{/if}} |
| 384 | 422 | </script> |
| ... | ... | @@ -393,48 +431,61 @@ |
| 393 | 431 | <td>{{obj.mon1}}</td> |
| 394 | 432 | <td>{{obj.bud1}}</td> |
| 395 | 433 | <td>{{obj.com1}}</td> |
| 434 | + <td>{{obj.sub1}}</td> | |
| 396 | 435 | <td>{{obj.mon2}}</td> |
| 397 | 436 | <td>{{obj.bud2}}</td> |
| 398 | 437 | <td>{{obj.com2}}</td> |
| 438 | + <td>{{obj.sub2}}</td> | |
| 399 | 439 | <td>{{obj.mon3}}</td> |
| 400 | 440 | <td>{{obj.bud3}}</td> |
| 401 | 441 | <td>{{obj.com3}}</td> |
| 442 | + <td>{{obj.sub3}}</td> | |
| 402 | 443 | <td>{{obj.mon4}}</td> |
| 403 | 444 | <td>{{obj.bud4}}</td> |
| 404 | 445 | <td>{{obj.com4}}</td> |
| 446 | + <td>{{obj.sub4}}</td> | |
| 405 | 447 | <td>{{obj.mon5}}</td> |
| 406 | 448 | <td>{{obj.bud5}}</td> |
| 407 | 449 | <td>{{obj.com5}}</td> |
| 450 | + <td>{{obj.sub5}}</td> | |
| 408 | 451 | <td>{{obj.mon6}}</td> |
| 409 | 452 | <td>{{obj.bud6}}</td> |
| 410 | 453 | <td>{{obj.com6}}</td> |
| 454 | + <td>{{obj.sub6}}</td> | |
| 411 | 455 | <td>{{obj.mon7}}</td> |
| 412 | 456 | <td>{{obj.bud7}}</td> |
| 413 | 457 | <td>{{obj.com7}}</td> |
| 458 | + <td>{{obj.sub7}}</td> | |
| 414 | 459 | <td>{{obj.mon8}}</td> |
| 415 | 460 | <td>{{obj.bud8}}</td> |
| 416 | 461 | <td>{{obj.com8}}</td> |
| 462 | + <td>{{obj.sub8}}</td> | |
| 417 | 463 | <td>{{obj.mon9}}</td> |
| 418 | 464 | <td>{{obj.bud9}}</td> |
| 419 | 465 | <td>{{obj.com9}}</td> |
| 466 | + <td>{{obj.sub9}}</td> | |
| 420 | 467 | <td>{{obj.mon10}}</td> |
| 421 | 468 | <td>{{obj.bud10}}</td> |
| 422 | 469 | <td>{{obj.com10}}</td> |
| 470 | + <td>{{obj.sub10}}</td> | |
| 423 | 471 | <td>{{obj.mon11}}</td> |
| 424 | 472 | <td>{{obj.bud11}}</td> |
| 425 | 473 | <td>{{obj.com11}}</td> |
| 474 | + <td>{{obj.sub11}}</td> | |
| 426 | 475 | <td>{{obj.mon12}}</td> |
| 427 | 476 | <td>{{obj.bud12}}</td> |
| 428 | 477 | <td>{{obj.com12}}</td> |
| 478 | + <td>{{obj.sub12}}</td> | |
| 429 | 479 | <td>{{obj.monAll}}</td> |
| 430 | 480 | <td>{{obj.complete}}</td> |
| 431 | 481 | <td>{{obj.diff}}</td> |
| 432 | 482 | <td>{{obj.average}}</td> |
| 483 | + <td>{{obj.subAll}}</td> | |
| 433 | 484 | </tr> |
| 434 | 485 | {{/each}} |
| 435 | 486 | {{if list.length == 0}} |
| 436 | 487 | <tr> |
| 437 | - <td colspan="55"><h6 class="muted">没有找到相关数据</h6></td> | |
| 488 | + <td colspan="59"><h6 class="muted">没有找到相关数据</h6></td> | |
| 438 | 489 | </tr> |
| 439 | 490 | {{/if}} |
| 440 | 491 | </script> |
| 441 | 492 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/forms/budget/budgetMileage.html
| ... | ... | @@ -53,7 +53,7 @@ |
| 53 | 53 | <table class="table table-bordered table-hover table-checkable" id="forms"> |
| 54 | 54 | <thead style="text-align: center;"> |
| 55 | 55 | <tr> |
| 56 | - <th colspan="54"><label id="datetodate"></label> 预算公里明细表</th> | |
| 56 | + <th colspan="58"><label id="datetodate"></label> 预算公里明细表</th> | |
| 57 | 57 | </tr> |
| 58 | 58 | <tr> |
| 59 | 59 | <td style="min-width: 73px" rowspan="2">公司</td> |
| ... | ... | @@ -62,59 +62,72 @@ |
| 62 | 62 | <td style="min-width: 90px" rowspan="2">预算</td> |
| 63 | 63 | <td style="min-width: 90px" rowspan="2">预算调整</td> |
| 64 | 64 | <td style="min-width: 90px" rowspan="2">预算</br>正式稿</td> |
| 65 | - <td style="min-width: 90px" colspan="3">1月</td> | |
| 66 | - <td style="min-width: 90px" colspan="3">2月</td> | |
| 67 | - <td style="min-width: 90px" colspan="3">3月</td> | |
| 68 | - <td style="min-width: 90px" colspan="3">4月</td> | |
| 69 | - <td style="min-width: 90px" colspan="3">5月</td> | |
| 70 | - <td style="min-width: 90px" colspan="3">6月</td> | |
| 71 | - <td style="min-width: 90px" colspan="3">7月</td> | |
| 72 | - <td style="min-width: 90px" colspan="3">8月</td> | |
| 73 | - <td style="min-width: 90px" colspan="3">9月</td> | |
| 74 | - <td style="min-width: 90px" colspan="3">10月</td> | |
| 75 | - <td style="min-width: 90px" colspan="3">11月</td> | |
| 76 | - <td style="min-width: 90px" colspan="3">12月</td> | |
| 65 | + <td style="min-width: 90px" colspan="4">1月</td> | |
| 66 | + <td style="min-width: 90px" colspan="4">2月</td> | |
| 67 | + <td style="min-width: 90px" colspan="4">3月</td> | |
| 68 | + <td style="min-width: 90px" colspan="4">4月</td> | |
| 69 | + <td style="min-width: 90px" colspan="4">5月</td> | |
| 70 | + <td style="min-width: 90px" colspan="4">6月</td> | |
| 71 | + <td style="min-width: 90px" colspan="4">7月</td> | |
| 72 | + <td style="min-width: 90px" colspan="4">8月</td> | |
| 73 | + <td style="min-width: 90px" colspan="4">9月</td> | |
| 74 | + <td style="min-width: 90px" colspan="4">10月</td> | |
| 75 | + <td style="min-width: 90px" colspan="4">11月</td> | |
| 76 | + <td style="min-width: 90px" colspan="4">12月</td> | |
| 77 | 77 | <td style="min-width: 90px" rowspan="2">合计</td> |
| 78 | 78 | <td style="min-width: 90px" rowspan="2">预算</br>完成率</td> |
| 79 | 79 | <td style="min-width: 90px" rowspan="2">预算差异</td> |
| 80 | + <td style="min-width: 90px" rowspan="2">相比去年差异</td> | |
| 80 | 81 | </tr> |
| 81 | 82 | <tr> |
| 82 | 83 | <td style="min-width: 80px">实际</td> |
| 83 | 84 | <td style="min-width: 80px">预算</td> |
| 84 | 85 | <td style="min-width: 80px">完成率</td> |
| 86 | + <td style="min-width: 80px">相比去年差异</td> | |
| 85 | 87 | <td style="min-width: 80px">实际</td> |
| 86 | 88 | <td style="min-width: 80px">预算</td> |
| 87 | 89 | <td style="min-width: 80px">完成率</td> |
| 90 | + <td style="min-width: 80px">相比去年差异</td> | |
| 88 | 91 | <td style="min-width: 80px">实际</td> |
| 89 | 92 | <td style="min-width: 80px">预算</td> |
| 90 | 93 | <td style="min-width: 80px">完成率</td> |
| 94 | + <td style="min-width: 80px">相比去年差异</td> | |
| 91 | 95 | <td style="min-width: 80px">实际</td> |
| 92 | 96 | <td style="min-width: 80px">预算</td> |
| 93 | 97 | <td style="min-width: 80px">完成率</td> |
| 98 | + <td style="min-width: 80px">相比去年差异</td> | |
| 94 | 99 | <td style="min-width: 80px">实际</td> |
| 95 | 100 | <td style="min-width: 80px">预算</td> |
| 96 | 101 | <td style="min-width: 80px">完成率</td> |
| 102 | + <td style="min-width: 80px">相比去年差异</td> | |
| 97 | 103 | <td style="min-width: 80px">实际</td> |
| 98 | 104 | <td style="min-width: 80px">预算</td> |
| 99 | 105 | <td style="min-width: 80px">完成率</td> |
| 106 | + <td style="min-width: 80px">相比去年差异</td> | |
| 100 | 107 | <td style="min-width: 80px">实际</td> |
| 101 | 108 | <td style="min-width: 80px">预算</td> |
| 102 | 109 | <td style="min-width: 80px">完成率</td> |
| 110 | + <td style="min-width: 80px">相比去年差异</td> | |
| 103 | 111 | <td style="min-width: 80px">实际</td> |
| 104 | 112 | <td style="min-width: 80px">预算</td> |
| 105 | 113 | <td style="min-width: 80px">完成率</td> |
| 114 | + <td style="min-width: 80px">相比去年差异</td> | |
| 106 | 115 | <td style="min-width: 80px">实际</td> |
| 107 | 116 | <td style="min-width: 80px">预算</td> |
| 108 | 117 | <td style="min-width: 80px">完成率</td> |
| 118 | + <td style="min-width: 80px">相比去年差异</td> | |
| 109 | 119 | <td style="min-width: 80px">实际</td> |
| 110 | 120 | <td style="min-width: 80px">预算</td> |
| 111 | 121 | <td style="min-width: 80px">完成率</td> |
| 122 | + <td style="min-width: 80px">相比去年差异</td> | |
| 112 | 123 | <td style="min-width: 80px">实际</td> |
| 113 | 124 | <td style="min-width: 80px">预算</td> |
| 114 | 125 | <td style="min-width: 80px">完成率</td> |
| 126 | + <td style="min-width: 80px">相比去年差异</td> | |
| 115 | 127 | <td style="min-width: 80px">实际</td> |
| 116 | 128 | <td style="min-width: 80px">预算</td> |
| 117 | 129 | <td style="min-width: 80px">完成率</td> |
| 130 | + <td style="min-width: 80px">相比去年差异</td> | |
| 118 | 131 | </tr> |
| 119 | 132 | </thead> |
| 120 | 133 | <tbody class="budget_mileage"> |
| ... | ... | @@ -144,59 +157,72 @@ |
| 144 | 157 | <td style="min-width: 90px" rowspan="2">预算</td> |
| 145 | 158 | <td style="min-width: 90px" rowspan="2">预算调整</td> |
| 146 | 159 | <td style="min-width: 90px" rowspan="2">预算</br>正式稿</td> |
| 147 | - <td style="min-width: 90px" colspan="3">1月</td> | |
| 148 | - <td style="min-width: 90px" colspan="3">2月</td> | |
| 149 | - <td style="min-width: 90px" colspan="3">3月</td> | |
| 150 | - <td style="min-width: 90px" colspan="3">4月</td> | |
| 151 | - <td style="min-width: 90px" colspan="3">5月</td> | |
| 152 | - <td style="min-width: 90px" colspan="3">6月</td> | |
| 153 | - <td style="min-width: 90px" colspan="3">7月</td> | |
| 154 | - <td style="min-width: 90px" colspan="3">8月</td> | |
| 155 | - <td style="min-width: 90px" colspan="3">9月</td> | |
| 156 | - <td style="min-width: 90px" colspan="3">10月</td> | |
| 157 | - <td style="min-width: 90px" colspan="3">11月</td> | |
| 158 | - <td style="min-width: 90px" colspan="3">12月</td> | |
| 160 | + <td style="min-width: 90px" colspan="4">1月</td> | |
| 161 | + <td style="min-width: 90px" colspan="4">2月</td> | |
| 162 | + <td style="min-width: 90px" colspan="4">3月</td> | |
| 163 | + <td style="min-width: 90px" colspan="4">4月</td> | |
| 164 | + <td style="min-width: 90px" colspan="4">5月</td> | |
| 165 | + <td style="min-width: 90px" colspan="4">6月</td> | |
| 166 | + <td style="min-width: 90px" colspan="4">7月</td> | |
| 167 | + <td style="min-width: 90px" colspan="4">8月</td> | |
| 168 | + <td style="min-width: 90px" colspan="4">9月</td> | |
| 169 | + <td style="min-width: 90px" colspan="4">10月</td> | |
| 170 | + <td style="min-width: 90px" colspan="4">11月</td> | |
| 171 | + <td style="min-width: 90px" colspan="4">12月</td> | |
| 159 | 172 | <td style="min-width: 90px" rowspan="2">合计</td> |
| 160 | 173 | <td style="min-width: 90px" rowspan="2">预算</br>完成率</td> |
| 161 | 174 | <td style="min-width: 90px" rowspan="2">预算差异</td> |
| 175 | + <td style="min-width: 90px" rowspan="2">相比去年差异</td> | |
| 162 | 176 | </tr> |
| 163 | 177 | <tr> |
| 164 | 178 | <td style="min-width: 80px">实际</td> |
| 165 | 179 | <td style="min-width: 80px">预算</td> |
| 166 | 180 | <td style="min-width: 80px">完成率</td> |
| 181 | + <td style="min-width: 80px">相比去年差异</td> | |
| 167 | 182 | <td style="min-width: 80px">实际</td> |
| 168 | 183 | <td style="min-width: 80px">预算</td> |
| 169 | 184 | <td style="min-width: 80px">完成率</td> |
| 185 | + <td style="min-width: 80px">相比去年差异</td> | |
| 170 | 186 | <td style="min-width: 80px">实际</td> |
| 171 | 187 | <td style="min-width: 80px">预算</td> |
| 172 | 188 | <td style="min-width: 80px">完成率</td> |
| 189 | + <td style="min-width: 80px">相比去年差异</td> | |
| 173 | 190 | <td style="min-width: 80px">实际</td> |
| 174 | 191 | <td style="min-width: 80px">预算</td> |
| 175 | 192 | <td style="min-width: 80px">完成率</td> |
| 193 | + <td style="min-width: 80px">相比去年差异</td> | |
| 176 | 194 | <td style="min-width: 80px">实际</td> |
| 177 | 195 | <td style="min-width: 80px">预算</td> |
| 178 | 196 | <td style="min-width: 80px">完成率</td> |
| 197 | + <td style="min-width: 80px">相比去年差异</td> | |
| 179 | 198 | <td style="min-width: 80px">实际</td> |
| 180 | 199 | <td style="min-width: 80px">预算</td> |
| 181 | 200 | <td style="min-width: 80px">完成率</td> |
| 201 | + <td style="min-width: 80px">相比去年差异</td> | |
| 182 | 202 | <td style="min-width: 80px">实际</td> |
| 183 | 203 | <td style="min-width: 80px">预算</td> |
| 184 | 204 | <td style="min-width: 80px">完成率</td> |
| 205 | + <td style="min-width: 80px">相比去年差异</td> | |
| 185 | 206 | <td style="min-width: 80px">实际</td> |
| 186 | 207 | <td style="min-width: 80px">预算</td> |
| 187 | 208 | <td style="min-width: 80px">完成率</td> |
| 209 | + <td style="min-width: 80px">相比去年差异</td> | |
| 188 | 210 | <td style="min-width: 80px">实际</td> |
| 189 | 211 | <td style="min-width: 80px">预算</td> |
| 190 | 212 | <td style="min-width: 80px">完成率</td> |
| 213 | + <td style="min-width: 80px">相比去年差异</td> | |
| 191 | 214 | <td style="min-width: 80px">实际</td> |
| 192 | 215 | <td style="min-width: 80px">预算</td> |
| 193 | 216 | <td style="min-width: 80px">完成率</td> |
| 217 | + <td style="min-width: 80px">相比去年差异</td> | |
| 194 | 218 | <td style="min-width: 80px">实际</td> |
| 195 | 219 | <td style="min-width: 80px">预算</td> |
| 196 | 220 | <td style="min-width: 80px">完成率</td> |
| 221 | + <td style="min-width: 80px">相比去年差异</td> | |
| 197 | 222 | <td style="min-width: 80px">实际</td> |
| 198 | 223 | <td style="min-width: 80px">预算</td> |
| 199 | 224 | <td style="min-width: 80px">完成率</td> |
| 225 | + <td style="min-width: 80px">相比去年差异</td> | |
| 200 | 226 | </tr> |
| 201 | 227 | </thead> |
| 202 | 228 | <tbody class="budget_mileage_dataList" id="datas"> |
| ... | ... | @@ -206,7 +232,6 @@ |
| 206 | 232 | </div> |
| 207 | 233 | </div> |
| 208 | 234 | </div> |
| 209 | -</div> | |
| 210 | 235 | |
| 211 | 236 | <script> |
| 212 | 237 | $(function(){ |
| ... | ... | @@ -335,47 +360,60 @@ |
| 335 | 360 | <td>{{obj.mon1}}</td> |
| 336 | 361 | <td>{{obj.bud1}}</td> |
| 337 | 362 | <td>{{obj.com1}}</td> |
| 363 | + <td>{{obj.sub1}}</td> | |
| 338 | 364 | <td>{{obj.mon2}}</td> |
| 339 | 365 | <td>{{obj.bud2}}</td> |
| 340 | 366 | <td>{{obj.com2}}</td> |
| 367 | + <td>{{obj.sub2}}</td> | |
| 341 | 368 | <td>{{obj.mon3}}</td> |
| 342 | 369 | <td>{{obj.bud3}}</td> |
| 343 | 370 | <td>{{obj.com3}}</td> |
| 371 | + <td>{{obj.sub3}}</td> | |
| 344 | 372 | <td>{{obj.mon4}}</td> |
| 345 | 373 | <td>{{obj.bud4}}</td> |
| 346 | 374 | <td>{{obj.com4}}</td> |
| 375 | + <td>{{obj.sub4}}</td> | |
| 347 | 376 | <td>{{obj.mon5}}</td> |
| 348 | 377 | <td>{{obj.bud5}}</td> |
| 349 | 378 | <td>{{obj.com5}}</td> |
| 379 | + <td>{{obj.sub5}}</td> | |
| 350 | 380 | <td>{{obj.mon6}}</td> |
| 351 | 381 | <td>{{obj.bud6}}</td> |
| 352 | 382 | <td>{{obj.com6}}</td> |
| 383 | + <td>{{obj.sub6}}</td> | |
| 353 | 384 | <td>{{obj.mon7}}</td> |
| 354 | 385 | <td>{{obj.bud7}}</td> |
| 355 | 386 | <td>{{obj.com7}}</td> |
| 387 | + <td>{{obj.sub7}}</td> | |
| 356 | 388 | <td>{{obj.mon8}}</td> |
| 357 | 389 | <td>{{obj.bud8}}</td> |
| 358 | 390 | <td>{{obj.com8}}</td> |
| 391 | + <td>{{obj.sub8}}</td> | |
| 359 | 392 | <td>{{obj.mon9}}</td> |
| 360 | 393 | <td>{{obj.bud9}}</td> |
| 361 | 394 | <td>{{obj.com9}}</td> |
| 395 | + <td>{{obj.sub9}}</td> | |
| 362 | 396 | <td>{{obj.mon10}}</td> |
| 363 | 397 | <td>{{obj.bud10}}</td> |
| 364 | 398 | <td>{{obj.com10}}</td> |
| 399 | + <td>{{obj.sub10}}</td> | |
| 365 | 400 | <td>{{obj.mon11}}</td> |
| 366 | 401 | <td>{{obj.bud11}}</td> |
| 367 | 402 | <td>{{obj.com11}}</td> |
| 403 | + <td>{{obj.sub11}}</td> | |
| 368 | 404 | <td>{{obj.mon12}}</td> |
| 369 | 405 | <td>{{obj.bud12}}</td> |
| 370 | 406 | <td>{{obj.com12}}</td> |
| 407 | + <td>{{obj.sub12}}</td> | |
| 371 | 408 | <td>{{obj.monAll}}</td> |
| 372 | 409 | <td>{{obj.complete}}</td> |
| 373 | 410 | <td>{{obj.diff}}</td> |
| 411 | + <td>{{obj.subAll}}</td> | |
| 374 | 412 | </tr> |
| 375 | 413 | {{/each}} |
| 376 | 414 | {{if list.length == 0}} |
| 377 | 415 | <tr> |
| 378 | - <td colspan="54"><h6 class="muted">没有找到相关数据</h6></td> | |
| 416 | + <td colspan="58"><h6 class="muted">没有找到相关数据</h6></td> | |
| 379 | 417 | </tr> |
| 380 | 418 | {{/if}} |
| 381 | 419 | </script> |
| ... | ... | @@ -390,47 +428,60 @@ |
| 390 | 428 | <td>{{obj.mon1}}</td> |
| 391 | 429 | <td>{{obj.bud1}}</td> |
| 392 | 430 | <td>{{obj.com1}}</td> |
| 431 | + <td>{{obj.sub1}}</td> | |
| 393 | 432 | <td>{{obj.mon2}}</td> |
| 394 | 433 | <td>{{obj.bud2}}</td> |
| 395 | 434 | <td>{{obj.com2}}</td> |
| 435 | + <td>{{obj.sub2}}</td> | |
| 396 | 436 | <td>{{obj.mon3}}</td> |
| 397 | 437 | <td>{{obj.bud3}}</td> |
| 398 | 438 | <td>{{obj.com3}}</td> |
| 439 | + <td>{{obj.sub3}}</td> | |
| 399 | 440 | <td>{{obj.mon4}}</td> |
| 400 | 441 | <td>{{obj.bud4}}</td> |
| 401 | 442 | <td>{{obj.com4}}</td> |
| 443 | + <td>{{obj.sub4}}</td> | |
| 402 | 444 | <td>{{obj.mon5}}</td> |
| 403 | 445 | <td>{{obj.bud5}}</td> |
| 404 | 446 | <td>{{obj.com5}}</td> |
| 447 | + <td>{{obj.sub5}}</td> | |
| 405 | 448 | <td>{{obj.mon6}}</td> |
| 406 | 449 | <td>{{obj.bud6}}</td> |
| 407 | 450 | <td>{{obj.com6}}</td> |
| 451 | + <td>{{obj.sub6}}</td> | |
| 408 | 452 | <td>{{obj.mon7}}</td> |
| 409 | 453 | <td>{{obj.bud7}}</td> |
| 410 | 454 | <td>{{obj.com7}}</td> |
| 455 | + <td>{{obj.sub7}}</td> | |
| 411 | 456 | <td>{{obj.mon8}}</td> |
| 412 | 457 | <td>{{obj.bud8}}</td> |
| 413 | 458 | <td>{{obj.com8}}</td> |
| 459 | + <td>{{obj.sub8}}</td> | |
| 414 | 460 | <td>{{obj.mon9}}</td> |
| 415 | 461 | <td>{{obj.bud9}}</td> |
| 416 | 462 | <td>{{obj.com9}}</td> |
| 463 | + <td>{{obj.sub9}}</td> | |
| 417 | 464 | <td>{{obj.mon10}}</td> |
| 418 | 465 | <td>{{obj.bud10}}</td> |
| 419 | 466 | <td>{{obj.com10}}</td> |
| 467 | + <td>{{obj.sub10}}</td> | |
| 420 | 468 | <td>{{obj.mon11}}</td> |
| 421 | 469 | <td>{{obj.bud11}}</td> |
| 422 | 470 | <td>{{obj.com11}}</td> |
| 471 | + <td>{{obj.sub11}}</td> | |
| 423 | 472 | <td>{{obj.mon12}}</td> |
| 424 | 473 | <td>{{obj.bud12}}</td> |
| 425 | 474 | <td>{{obj.com12}}</td> |
| 475 | + <td>{{obj.sub12}}</td> | |
| 426 | 476 | <td>{{obj.monAll}}</td> |
| 427 | 477 | <td>{{obj.complete}}</td> |
| 428 | 478 | <td>{{obj.diff}}</td> |
| 479 | + <td>{{obj.subAll}}</td> | |
| 429 | 480 | </tr> |
| 430 | 481 | {{/each}} |
| 431 | 482 | {{if list.length == 0}} |
| 432 | 483 | <tr> |
| 433 | - <td colspan="54"><h6 class="muted">没有找到相关数据</h6></td> | |
| 484 | + <td colspan="58"><h6 class="muted">没有找到相关数据</h6></td> | |
| 434 | 485 | </tr> |
| 435 | 486 | {{/if}} |
| 436 | 487 | </script> |
| 437 | 488 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/forms/budget/budgetPerson.html
| ... | ... | @@ -53,7 +53,7 @@ |
| 53 | 53 | <table class="table table-bordered table-hover table-checkable" id="forms"> |
| 54 | 54 | <thead style="text-align: center;"> |
| 55 | 55 | <tr> |
| 56 | - <th colspan="54"><label id="datetodate"></label> 预算人次明细表</th> | |
| 56 | + <th colspan="58"><label id="datetodate"></label> 预算人次明细表</th> | |
| 57 | 57 | </tr> |
| 58 | 58 | <tr> |
| 59 | 59 | <td style="min-width: 73px" rowspan="2">公司</td> |
| ... | ... | @@ -62,59 +62,72 @@ |
| 62 | 62 | <td style="min-width: 90px" rowspan="2">预算</td> |
| 63 | 63 | <td style="min-width: 90px" rowspan="2">预算调整</td> |
| 64 | 64 | <td style="min-width: 90px" rowspan="2">预算</br>正式稿</td> |
| 65 | - <td style="min-width: 90px" colspan="3">1月</td> | |
| 66 | - <td style="min-width: 90px" colspan="3">2月</td> | |
| 67 | - <td style="min-width: 90px" colspan="3">3月</td> | |
| 68 | - <td style="min-width: 90px" colspan="3">4月</td> | |
| 69 | - <td style="min-width: 90px" colspan="3">5月</td> | |
| 70 | - <td style="min-width: 90px" colspan="3">6月</td> | |
| 71 | - <td style="min-width: 90px" colspan="3">7月</td> | |
| 72 | - <td style="min-width: 90px" colspan="3">8月</td> | |
| 73 | - <td style="min-width: 90px" colspan="3">9月</td> | |
| 74 | - <td style="min-width: 90px" colspan="3">10月</td> | |
| 75 | - <td style="min-width: 90px" colspan="3">11月</td> | |
| 76 | - <td style="min-width: 90px" colspan="3">12月</td> | |
| 65 | + <td style="min-width: 90px" colspan="4">1月</td> | |
| 66 | + <td style="min-width: 90px" colspan="4">2月</td> | |
| 67 | + <td style="min-width: 90px" colspan="4">3月</td> | |
| 68 | + <td style="min-width: 90px" colspan="4">4月</td> | |
| 69 | + <td style="min-width: 90px" colspan="4">5月</td> | |
| 70 | + <td style="min-width: 90px" colspan="4">6月</td> | |
| 71 | + <td style="min-width: 90px" colspan="4">7月</td> | |
| 72 | + <td style="min-width: 90px" colspan="4">8月</td> | |
| 73 | + <td style="min-width: 90px" colspan="4">9月</td> | |
| 74 | + <td style="min-width: 90px" colspan="4">10月</td> | |
| 75 | + <td style="min-width: 90px" colspan="4">11月</td> | |
| 76 | + <td style="min-width: 90px" colspan="4">12月</td> | |
| 77 | 77 | <td style="min-width: 90px" rowspan="2">合计</td> |
| 78 | 78 | <td style="min-width: 90px" rowspan="2">预算</br>完成率</td> |
| 79 | 79 | <td style="min-width: 90px" rowspan="2">预算差异</td> |
| 80 | + <td style="min-width: 90px" rowspan="2">相比去年差异</td> | |
| 80 | 81 | </tr> |
| 81 | 82 | <tr> |
| 82 | 83 | <td style="min-width: 80px">实际</td> |
| 83 | 84 | <td style="min-width: 80px">预算</td> |
| 84 | 85 | <td style="min-width: 80px">完成率</td> |
| 86 | + <td style="min-width: 80px">相比去年差异</td> | |
| 85 | 87 | <td style="min-width: 80px">实际</td> |
| 86 | 88 | <td style="min-width: 80px">预算</td> |
| 87 | 89 | <td style="min-width: 80px">完成率</td> |
| 90 | + <td style="min-width: 80px">相比去年差异</td> | |
| 88 | 91 | <td style="min-width: 80px">实际</td> |
| 89 | 92 | <td style="min-width: 80px">预算</td> |
| 90 | 93 | <td style="min-width: 80px">完成率</td> |
| 94 | + <td style="min-width: 80px">相比去年差异</td> | |
| 91 | 95 | <td style="min-width: 80px">实际</td> |
| 92 | 96 | <td style="min-width: 80px">预算</td> |
| 93 | 97 | <td style="min-width: 80px">完成率</td> |
| 98 | + <td style="min-width: 80px">相比去年差异</td> | |
| 94 | 99 | <td style="min-width: 80px">实际</td> |
| 95 | 100 | <td style="min-width: 80px">预算</td> |
| 96 | 101 | <td style="min-width: 80px">完成率</td> |
| 102 | + <td style="min-width: 80px">相比去年差异</td> | |
| 97 | 103 | <td style="min-width: 80px">实际</td> |
| 98 | 104 | <td style="min-width: 80px">预算</td> |
| 99 | 105 | <td style="min-width: 80px">完成率</td> |
| 106 | + <td style="min-width: 80px">相比去年差异</td> | |
| 100 | 107 | <td style="min-width: 80px">实际</td> |
| 101 | 108 | <td style="min-width: 80px">预算</td> |
| 102 | 109 | <td style="min-width: 80px">完成率</td> |
| 110 | + <td style="min-width: 80px">相比去年差异</td> | |
| 103 | 111 | <td style="min-width: 80px">实际</td> |
| 104 | 112 | <td style="min-width: 80px">预算</td> |
| 105 | 113 | <td style="min-width: 80px">完成率</td> |
| 114 | + <td style="min-width: 80px">相比去年差异</td> | |
| 106 | 115 | <td style="min-width: 80px">实际</td> |
| 107 | 116 | <td style="min-width: 80px">预算</td> |
| 108 | 117 | <td style="min-width: 80px">完成率</td> |
| 118 | + <td style="min-width: 80px">相比去年差异</td> | |
| 109 | 119 | <td style="min-width: 80px">实际</td> |
| 110 | 120 | <td style="min-width: 80px">预算</td> |
| 111 | 121 | <td style="min-width: 80px">完成率</td> |
| 122 | + <td style="min-width: 80px">相比去年差异</td> | |
| 112 | 123 | <td style="min-width: 80px">实际</td> |
| 113 | 124 | <td style="min-width: 80px">预算</td> |
| 114 | 125 | <td style="min-width: 80px">完成率</td> |
| 126 | + <td style="min-width: 80px">相比去年差异</td> | |
| 115 | 127 | <td style="min-width: 80px">实际</td> |
| 116 | 128 | <td style="min-width: 80px">预算</td> |
| 117 | 129 | <td style="min-width: 80px">完成率</td> |
| 130 | + <td style="min-width: 80px">相比去年差异</td> | |
| 118 | 131 | </tr> |
| 119 | 132 | </thead> |
| 120 | 133 | <tbody class="budget_person"> |
| ... | ... | @@ -144,59 +157,72 @@ |
| 144 | 157 | <td style="min-width: 90px" rowspan="2">预算</td> |
| 145 | 158 | <td style="min-width: 90px" rowspan="2">预算调整</td> |
| 146 | 159 | <td style="min-width: 90px" rowspan="2">预算</br>正式稿</td> |
| 147 | - <td style="min-width: 90px" colspan="3">1月</td> | |
| 148 | - <td style="min-width: 90px" colspan="3">2月</td> | |
| 149 | - <td style="min-width: 90px" colspan="3">3月</td> | |
| 150 | - <td style="min-width: 90px" colspan="3">4月</td> | |
| 151 | - <td style="min-width: 90px" colspan="3">5月</td> | |
| 152 | - <td style="min-width: 90px" colspan="3">6月</td> | |
| 153 | - <td style="min-width: 90px" colspan="3">7月</td> | |
| 154 | - <td style="min-width: 90px" colspan="3">8月</td> | |
| 155 | - <td style="min-width: 90px" colspan="3">9月</td> | |
| 156 | - <td style="min-width: 90px" colspan="3">10月</td> | |
| 157 | - <td style="min-width: 90px" colspan="3">11月</td> | |
| 158 | - <td style="min-width: 90px" colspan="3">12月</td> | |
| 160 | + <td style="min-width: 90px" colspan="4">1月</td> | |
| 161 | + <td style="min-width: 90px" colspan="4">2月</td> | |
| 162 | + <td style="min-width: 90px" colspan="4">3月</td> | |
| 163 | + <td style="min-width: 90px" colspan="4">4月</td> | |
| 164 | + <td style="min-width: 90px" colspan="4">5月</td> | |
| 165 | + <td style="min-width: 90px" colspan="4">6月</td> | |
| 166 | + <td style="min-width: 90px" colspan="4">7月</td> | |
| 167 | + <td style="min-width: 90px" colspan="4">8月</td> | |
| 168 | + <td style="min-width: 90px" colspan="4">9月</td> | |
| 169 | + <td style="min-width: 90px" colspan="4">10月</td> | |
| 170 | + <td style="min-width: 90px" colspan="4">11月</td> | |
| 171 | + <td style="min-width: 90px" colspan="4">12月</td> | |
| 159 | 172 | <td style="min-width: 90px" rowspan="2">合计</td> |
| 160 | 173 | <td style="min-width: 90px" rowspan="2">预算</br>完成率</td> |
| 161 | 174 | <td style="min-width: 90px" rowspan="2">预算差异</td> |
| 175 | + <td style="min-width: 90px" rowspan="2">相比去年差异</td> | |
| 162 | 176 | </tr> |
| 163 | 177 | <tr> |
| 164 | 178 | <td style="min-width: 80px">实际</td> |
| 165 | 179 | <td style="min-width: 80px">预算</td> |
| 166 | 180 | <td style="min-width: 80px">完成率</td> |
| 181 | + <td style="min-width: 80px">相比去年差异</td> | |
| 167 | 182 | <td style="min-width: 80px">实际</td> |
| 168 | 183 | <td style="min-width: 80px">预算</td> |
| 169 | 184 | <td style="min-width: 80px">完成率</td> |
| 185 | + <td style="min-width: 80px">相比去年差异</td> | |
| 170 | 186 | <td style="min-width: 80px">实际</td> |
| 171 | 187 | <td style="min-width: 80px">预算</td> |
| 172 | 188 | <td style="min-width: 80px">完成率</td> |
| 189 | + <td style="min-width: 80px">相比去年差异</td> | |
| 173 | 190 | <td style="min-width: 80px">实际</td> |
| 174 | 191 | <td style="min-width: 80px">预算</td> |
| 175 | 192 | <td style="min-width: 80px">完成率</td> |
| 193 | + <td style="min-width: 80px">相比去年差异</td> | |
| 176 | 194 | <td style="min-width: 80px">实际</td> |
| 177 | 195 | <td style="min-width: 80px">预算</td> |
| 178 | 196 | <td style="min-width: 80px">完成率</td> |
| 197 | + <td style="min-width: 80px">相比去年差异</td> | |
| 179 | 198 | <td style="min-width: 80px">实际</td> |
| 180 | 199 | <td style="min-width: 80px">预算</td> |
| 181 | 200 | <td style="min-width: 80px">完成率</td> |
| 201 | + <td style="min-width: 80px">相比去年差异</td> | |
| 182 | 202 | <td style="min-width: 80px">实际</td> |
| 183 | 203 | <td style="min-width: 80px">预算</td> |
| 184 | 204 | <td style="min-width: 80px">完成率</td> |
| 205 | + <td style="min-width: 80px">相比去年差异</td> | |
| 185 | 206 | <td style="min-width: 80px">实际</td> |
| 186 | 207 | <td style="min-width: 80px">预算</td> |
| 187 | 208 | <td style="min-width: 80px">完成率</td> |
| 209 | + <td style="min-width: 80px">相比去年差异</td> | |
| 188 | 210 | <td style="min-width: 80px">实际</td> |
| 189 | 211 | <td style="min-width: 80px">预算</td> |
| 190 | 212 | <td style="min-width: 80px">完成率</td> |
| 213 | + <td style="min-width: 80px">相比去年差异</td> | |
| 191 | 214 | <td style="min-width: 80px">实际</td> |
| 192 | 215 | <td style="min-width: 80px">预算</td> |
| 193 | 216 | <td style="min-width: 80px">完成率</td> |
| 217 | + <td style="min-width: 80px">相比去年差异</td> | |
| 194 | 218 | <td style="min-width: 80px">实际</td> |
| 195 | 219 | <td style="min-width: 80px">预算</td> |
| 196 | 220 | <td style="min-width: 80px">完成率</td> |
| 221 | + <td style="min-width: 80px">相比去年差异</td> | |
| 197 | 222 | <td style="min-width: 80px">实际</td> |
| 198 | 223 | <td style="min-width: 80px">预算</td> |
| 199 | 224 | <td style="min-width: 80px">完成率</td> |
| 225 | + <td style="min-width: 80px">相比去年差异</td> | |
| 200 | 226 | </tr> |
| 201 | 227 | </thead> |
| 202 | 228 | <tbody class="budget_person_dataList" id="datas"> |
| ... | ... | @@ -206,7 +232,6 @@ |
| 206 | 232 | </div> |
| 207 | 233 | </div> |
| 208 | 234 | </div> |
| 209 | -</div> | |
| 210 | 235 | |
| 211 | 236 | <script> |
| 212 | 237 | $(function(){ |
| ... | ... | @@ -335,47 +360,60 @@ |
| 335 | 360 | <td>{{obj.mon1}}</td> |
| 336 | 361 | <td>{{obj.bud1}}</td> |
| 337 | 362 | <td>{{obj.com1}}</td> |
| 363 | + <td>{{obj.sub1}}</td> | |
| 338 | 364 | <td>{{obj.mon2}}</td> |
| 339 | 365 | <td>{{obj.bud2}}</td> |
| 340 | 366 | <td>{{obj.com2}}</td> |
| 367 | + <td>{{obj.sub2}}</td> | |
| 341 | 368 | <td>{{obj.mon3}}</td> |
| 342 | 369 | <td>{{obj.bud3}}</td> |
| 343 | 370 | <td>{{obj.com3}}</td> |
| 371 | + <td>{{obj.sub3}}</td> | |
| 344 | 372 | <td>{{obj.mon4}}</td> |
| 345 | 373 | <td>{{obj.bud4}}</td> |
| 346 | 374 | <td>{{obj.com4}}</td> |
| 375 | + <td>{{obj.sub4}}</td> | |
| 347 | 376 | <td>{{obj.mon5}}</td> |
| 348 | 377 | <td>{{obj.bud5}}</td> |
| 349 | 378 | <td>{{obj.com5}}</td> |
| 379 | + <td>{{obj.sub5}}</td> | |
| 350 | 380 | <td>{{obj.mon6}}</td> |
| 351 | 381 | <td>{{obj.bud6}}</td> |
| 352 | 382 | <td>{{obj.com6}}</td> |
| 383 | + <td>{{obj.sub6}}</td> | |
| 353 | 384 | <td>{{obj.mon7}}</td> |
| 354 | 385 | <td>{{obj.bud7}}</td> |
| 355 | 386 | <td>{{obj.com7}}</td> |
| 387 | + <td>{{obj.sub7}}</td> | |
| 356 | 388 | <td>{{obj.mon8}}</td> |
| 357 | 389 | <td>{{obj.bud8}}</td> |
| 358 | 390 | <td>{{obj.com8}}</td> |
| 391 | + <td>{{obj.sub8}}</td> | |
| 359 | 392 | <td>{{obj.mon9}}</td> |
| 360 | 393 | <td>{{obj.bud9}}</td> |
| 361 | 394 | <td>{{obj.com9}}</td> |
| 395 | + <td>{{obj.sub9}}</td> | |
| 362 | 396 | <td>{{obj.mon10}}</td> |
| 363 | 397 | <td>{{obj.bud10}}</td> |
| 364 | 398 | <td>{{obj.com10}}</td> |
| 399 | + <td>{{obj.sub10}}</td> | |
| 365 | 400 | <td>{{obj.mon11}}</td> |
| 366 | 401 | <td>{{obj.bud11}}</td> |
| 367 | 402 | <td>{{obj.com11}}</td> |
| 403 | + <td>{{obj.sub11}}</td> | |
| 368 | 404 | <td>{{obj.mon12}}</td> |
| 369 | 405 | <td>{{obj.bud12}}</td> |
| 370 | 406 | <td>{{obj.com12}}</td> |
| 407 | + <td>{{obj.sub12}}</td> | |
| 371 | 408 | <td>{{obj.monAll}}</td> |
| 372 | 409 | <td>{{obj.complete}}</td> |
| 373 | 410 | <td>{{obj.diff}}</td> |
| 411 | + <td>{{obj.subAll}}</td> | |
| 374 | 412 | </tr> |
| 375 | 413 | {{/each}} |
| 376 | 414 | {{if list.length == 0}} |
| 377 | 415 | <tr> |
| 378 | - <td colspan="54"><h6 class="muted">没有找到相关数据</h6></td> | |
| 416 | + <td colspan="58"><h6 class="muted">没有找到相关数据</h6></td> | |
| 379 | 417 | </tr> |
| 380 | 418 | {{/if}} |
| 381 | 419 | </script> |
| ... | ... | @@ -390,47 +428,60 @@ |
| 390 | 428 | <td>{{obj.mon1}}</td> |
| 391 | 429 | <td>{{obj.bud1}}</td> |
| 392 | 430 | <td>{{obj.com1}}</td> |
| 431 | + <td>{{obj.sub1}}</td> | |
| 393 | 432 | <td>{{obj.mon2}}</td> |
| 394 | 433 | <td>{{obj.bud2}}</td> |
| 395 | 434 | <td>{{obj.com2}}</td> |
| 435 | + <td>{{obj.sub2}}</td> | |
| 396 | 436 | <td>{{obj.mon3}}</td> |
| 397 | 437 | <td>{{obj.bud3}}</td> |
| 398 | 438 | <td>{{obj.com3}}</td> |
| 439 | + <td>{{obj.sub3}}</td> | |
| 399 | 440 | <td>{{obj.mon4}}</td> |
| 400 | 441 | <td>{{obj.bud4}}</td> |
| 401 | 442 | <td>{{obj.com4}}</td> |
| 443 | + <td>{{obj.sub4}}</td> | |
| 402 | 444 | <td>{{obj.mon5}}</td> |
| 403 | 445 | <td>{{obj.bud5}}</td> |
| 404 | 446 | <td>{{obj.com5}}</td> |
| 447 | + <td>{{obj.sub5}}</td> | |
| 405 | 448 | <td>{{obj.mon6}}</td> |
| 406 | 449 | <td>{{obj.bud6}}</td> |
| 407 | 450 | <td>{{obj.com6}}</td> |
| 451 | + <td>{{obj.sub6}}</td> | |
| 408 | 452 | <td>{{obj.mon7}}</td> |
| 409 | 453 | <td>{{obj.bud7}}</td> |
| 410 | 454 | <td>{{obj.com7}}</td> |
| 455 | + <td>{{obj.sub7}}</td> | |
| 411 | 456 | <td>{{obj.mon8}}</td> |
| 412 | 457 | <td>{{obj.bud8}}</td> |
| 413 | 458 | <td>{{obj.com8}}</td> |
| 459 | + <td>{{obj.sub8}}</td> | |
| 414 | 460 | <td>{{obj.mon9}}</td> |
| 415 | 461 | <td>{{obj.bud9}}</td> |
| 416 | 462 | <td>{{obj.com9}}</td> |
| 463 | + <td>{{obj.sub9}}</td> | |
| 417 | 464 | <td>{{obj.mon10}}</td> |
| 418 | 465 | <td>{{obj.bud10}}</td> |
| 419 | 466 | <td>{{obj.com10}}</td> |
| 467 | + <td>{{obj.sub10}}</td> | |
| 420 | 468 | <td>{{obj.mon11}}</td> |
| 421 | 469 | <td>{{obj.bud11}}</td> |
| 422 | 470 | <td>{{obj.com11}}</td> |
| 471 | + <td>{{obj.sub11}}</td> | |
| 423 | 472 | <td>{{obj.mon12}}</td> |
| 424 | 473 | <td>{{obj.bud12}}</td> |
| 425 | 474 | <td>{{obj.com12}}</td> |
| 475 | + <td>{{obj.sub12}}</td> | |
| 426 | 476 | <td>{{obj.monAll}}</td> |
| 427 | 477 | <td>{{obj.complete}}</td> |
| 428 | 478 | <td>{{obj.diff}}</td> |
| 479 | + <td>{{obj.subAll}}</td> | |
| 429 | 480 | </tr> |
| 430 | 481 | {{/each}} |
| 431 | 482 | {{if list.length == 0}} |
| 432 | 483 | <tr> |
| 433 | - <td colspan="54"><h6 class="muted">没有找到相关数据</h6></td> | |
| 484 | + <td colspan="58"><h6 class="muted">没有找到相关数据</h6></td> | |
| 434 | 485 | </tr> |
| 435 | 486 | {{/if}} |
| 436 | 487 | </script> |
| 437 | 488 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/forms/budget/budgetSum.html
| ... | ... | @@ -63,7 +63,7 @@ |
| 63 | 63 | <table class="table table-bordered table-hover table-checkable" id="forms"> |
| 64 | 64 | <thead style="text-align: center;"> |
| 65 | 65 | <tr> |
| 66 | - <th colspan="54"><label id="datetodate"></label> 预算汇总表</th> | |
| 66 | + <th colspan="57"><label id="datetodate"></label> 预算汇总表</th> | |
| 67 | 67 | </tr> |
| 68 | 68 | <tr> |
| 69 | 69 | <td style="min-width: 73px" rowspan="2">公司</td> |
| ... | ... | @@ -71,59 +71,72 @@ |
| 71 | 71 | <td style="min-width: 90px" rowspan="2">预算</td> |
| 72 | 72 | <td style="min-width: 90px" rowspan="2">预算调整</td> |
| 73 | 73 | <td style="min-width: 90px" rowspan="2">预算</br>正式稿</td> |
| 74 | - <td style="min-width: 90px" colspan="3">1月</td> | |
| 75 | - <td style="min-width: 90px" colspan="3">2月</td> | |
| 76 | - <td style="min-width: 90px" colspan="3">3月</td> | |
| 77 | - <td style="min-width: 90px" colspan="3">4月</td> | |
| 78 | - <td style="min-width: 90px" colspan="3">5月</td> | |
| 79 | - <td style="min-width: 90px" colspan="3">6月</td> | |
| 80 | - <td style="min-width: 90px" colspan="3">7月</td> | |
| 81 | - <td style="min-width: 90px" colspan="3">8月</td> | |
| 82 | - <td style="min-width: 90px" colspan="3">9月</td> | |
| 83 | - <td style="min-width: 90px" colspan="3">10月</td> | |
| 84 | - <td style="min-width: 90px" colspan="3">11月</td> | |
| 85 | - <td style="min-width: 90px" colspan="3">12月</td> | |
| 74 | + <td style="min-width: 90px" colspan="4">1月</td> | |
| 75 | + <td style="min-width: 90px" colspan="4">2月</td> | |
| 76 | + <td style="min-width: 90px" colspan="4">3月</td> | |
| 77 | + <td style="min-width: 90px" colspan="4">4月</td> | |
| 78 | + <td style="min-width: 90px" colspan="4">5月</td> | |
| 79 | + <td style="min-width: 90px" colspan="4">6月</td> | |
| 80 | + <td style="min-width: 90px" colspan="4">7月</td> | |
| 81 | + <td style="min-width: 90px" colspan="4">8月</td> | |
| 82 | + <td style="min-width: 90px" colspan="4">9月</td> | |
| 83 | + <td style="min-width: 90px" colspan="4">10月</td> | |
| 84 | + <td style="min-width: 90px" colspan="4">11月</td> | |
| 85 | + <td style="min-width: 90px" colspan="4">12月</td> | |
| 86 | 86 | <td style="min-width: 90px" rowspan="2">合计</td> |
| 87 | 87 | <td style="min-width: 90px" rowspan="2">预算</br>完成率</td> |
| 88 | 88 | <td style="min-width: 90px" rowspan="2">预算差异</td> |
| 89 | + <td style="min-width: 90px" rowspan="2">相比去年差异</td> | |
| 89 | 90 | </tr> |
| 90 | 91 | <tr> |
| 91 | 92 | <td style="min-width: 80px">实际</td> |
| 92 | 93 | <td style="min-width: 80px">预算</td> |
| 93 | 94 | <td style="min-width: 80px">完成率</td> |
| 95 | + <td style="min-width: 80px">相比去年差异</td> | |
| 94 | 96 | <td style="min-width: 80px">实际</td> |
| 95 | 97 | <td style="min-width: 80px">预算</td> |
| 96 | 98 | <td style="min-width: 80px">完成率</td> |
| 99 | + <td style="min-width: 80px">相比去年差异</td> | |
| 97 | 100 | <td style="min-width: 80px">实际</td> |
| 98 | 101 | <td style="min-width: 80px">预算</td> |
| 99 | 102 | <td style="min-width: 80px">完成率</td> |
| 103 | + <td style="min-width: 80px">相比去年差异</td> | |
| 100 | 104 | <td style="min-width: 80px">实际</td> |
| 101 | 105 | <td style="min-width: 80px">预算</td> |
| 102 | 106 | <td style="min-width: 80px">完成率</td> |
| 107 | + <td style="min-width: 80px">相比去年差异</td> | |
| 103 | 108 | <td style="min-width: 80px">实际</td> |
| 104 | 109 | <td style="min-width: 80px">预算</td> |
| 105 | 110 | <td style="min-width: 80px">完成率</td> |
| 111 | + <td style="min-width: 80px">相比去年差异</td> | |
| 106 | 112 | <td style="min-width: 80px">实际</td> |
| 107 | 113 | <td style="min-width: 80px">预算</td> |
| 108 | 114 | <td style="min-width: 80px">完成率</td> |
| 115 | + <td style="min-width: 80px">相比去年差异</td> | |
| 109 | 116 | <td style="min-width: 80px">实际</td> |
| 110 | 117 | <td style="min-width: 80px">预算</td> |
| 111 | 118 | <td style="min-width: 80px">完成率</td> |
| 119 | + <td style="min-width: 80px">相比去年差异</td> | |
| 112 | 120 | <td style="min-width: 80px">实际</td> |
| 113 | 121 | <td style="min-width: 80px">预算</td> |
| 114 | 122 | <td style="min-width: 80px">完成率</td> |
| 123 | + <td style="min-width: 80px">相比去年差异</td> | |
| 115 | 124 | <td style="min-width: 80px">实际</td> |
| 116 | 125 | <td style="min-width: 80px">预算</td> |
| 117 | 126 | <td style="min-width: 80px">完成率</td> |
| 127 | + <td style="min-width: 80px">相比去年差异</td> | |
| 118 | 128 | <td style="min-width: 80px">实际</td> |
| 119 | 129 | <td style="min-width: 80px">预算</td> |
| 120 | 130 | <td style="min-width: 80px">完成率</td> |
| 131 | + <td style="min-width: 80px">相比去年差异</td> | |
| 121 | 132 | <td style="min-width: 80px">实际</td> |
| 122 | 133 | <td style="min-width: 80px">预算</td> |
| 123 | 134 | <td style="min-width: 80px">完成率</td> |
| 135 | + <td style="min-width: 80px">相比去年差异</td> | |
| 124 | 136 | <td style="min-width: 80px">实际</td> |
| 125 | 137 | <td style="min-width: 80px">预算</td> |
| 126 | 138 | <td style="min-width: 80px">完成率</td> |
| 139 | + <td style="min-width: 80px">相比去年差异</td> | |
| 127 | 140 | </tr> |
| 128 | 141 | </thead> |
| 129 | 142 | <tbody class="budget_sum"> |
| ... | ... | @@ -152,59 +165,72 @@ |
| 152 | 165 | <td style="min-width: 90px" rowspan="2">预算</td> |
| 153 | 166 | <td style="min-width: 90px" rowspan="2">预算调整</td> |
| 154 | 167 | <td style="min-width: 90px" rowspan="2">预算</br>正式稿</td> |
| 155 | - <td style="min-width: 90px" colspan="3">1月</td> | |
| 156 | - <td style="min-width: 90px" colspan="3">2月</td> | |
| 157 | - <td style="min-width: 90px" colspan="3">3月</td> | |
| 158 | - <td style="min-width: 90px" colspan="3">4月</td> | |
| 159 | - <td style="min-width: 90px" colspan="3">5月</td> | |
| 160 | - <td style="min-width: 90px" colspan="3">6月</td> | |
| 161 | - <td style="min-width: 90px" colspan="3">7月</td> | |
| 162 | - <td style="min-width: 90px" colspan="3">8月</td> | |
| 163 | - <td style="min-width: 90px" colspan="3">9月</td> | |
| 164 | - <td style="min-width: 90px" colspan="3">10月</td> | |
| 165 | - <td style="min-width: 90px" colspan="3">11月</td> | |
| 166 | - <td style="min-width: 90px" colspan="3">12月</td> | |
| 168 | + <td style="min-width: 90px" colspan="4">1月</td> | |
| 169 | + <td style="min-width: 90px" colspan="4">2月</td> | |
| 170 | + <td style="min-width: 90px" colspan="4">3月</td> | |
| 171 | + <td style="min-width: 90px" colspan="4">4月</td> | |
| 172 | + <td style="min-width: 90px" colspan="4">5月</td> | |
| 173 | + <td style="min-width: 90px" colspan="4">6月</td> | |
| 174 | + <td style="min-width: 90px" colspan="4">7月</td> | |
| 175 | + <td style="min-width: 90px" colspan="4">8月</td> | |
| 176 | + <td style="min-width: 90px" colspan="4">9月</td> | |
| 177 | + <td style="min-width: 90px" colspan="4">10月</td> | |
| 178 | + <td style="min-width: 90px" colspan="4">11月</td> | |
| 179 | + <td style="min-width: 90px" colspan="4">12月</td> | |
| 167 | 180 | <td style="min-width: 90px" rowspan="2">合计</td> |
| 168 | 181 | <td style="min-width: 90px" rowspan="2">预算</br>完成率</td> |
| 169 | 182 | <td style="min-width: 90px" rowspan="2">预算差异</td> |
| 183 | + <td style="min-width: 90px" rowspan="2">相比去年差异</td> | |
| 170 | 184 | </tr> |
| 171 | 185 | <tr> |
| 172 | 186 | <td style="min-width: 80px">实际</td> |
| 173 | 187 | <td style="min-width: 80px">预算</td> |
| 174 | 188 | <td style="min-width: 80px">完成率</td> |
| 189 | + <td style="min-width: 80px">相比去年差异</td> | |
| 175 | 190 | <td style="min-width: 80px">实际</td> |
| 176 | 191 | <td style="min-width: 80px">预算</td> |
| 177 | 192 | <td style="min-width: 80px">完成率</td> |
| 193 | + <td style="min-width: 80px">相比去年差异</td> | |
| 178 | 194 | <td style="min-width: 80px">实际</td> |
| 179 | 195 | <td style="min-width: 80px">预算</td> |
| 180 | 196 | <td style="min-width: 80px">完成率</td> |
| 197 | + <td style="min-width: 80px">相比去年差异</td> | |
| 181 | 198 | <td style="min-width: 80px">实际</td> |
| 182 | 199 | <td style="min-width: 80px">预算</td> |
| 183 | 200 | <td style="min-width: 80px">完成率</td> |
| 201 | + <td style="min-width: 80px">相比去年差异</td> | |
| 184 | 202 | <td style="min-width: 80px">实际</td> |
| 185 | 203 | <td style="min-width: 80px">预算</td> |
| 186 | 204 | <td style="min-width: 80px">完成率</td> |
| 205 | + <td style="min-width: 80px">相比去年差异</td> | |
| 187 | 206 | <td style="min-width: 80px">实际</td> |
| 188 | 207 | <td style="min-width: 80px">预算</td> |
| 189 | 208 | <td style="min-width: 80px">完成率</td> |
| 209 | + <td style="min-width: 80px">相比去年差异</td> | |
| 190 | 210 | <td style="min-width: 80px">实际</td> |
| 191 | 211 | <td style="min-width: 80px">预算</td> |
| 192 | 212 | <td style="min-width: 80px">完成率</td> |
| 213 | + <td style="min-width: 80px">相比去年差异</td> | |
| 193 | 214 | <td style="min-width: 80px">实际</td> |
| 194 | 215 | <td style="min-width: 80px">预算</td> |
| 195 | 216 | <td style="min-width: 80px">完成率</td> |
| 217 | + <td style="min-width: 80px">相比去年差异</td> | |
| 196 | 218 | <td style="min-width: 80px">实际</td> |
| 197 | 219 | <td style="min-width: 80px">预算</td> |
| 198 | 220 | <td style="min-width: 80px">完成率</td> |
| 221 | + <td style="min-width: 80px">相比去年差异</td> | |
| 199 | 222 | <td style="min-width: 80px">实际</td> |
| 200 | 223 | <td style="min-width: 80px">预算</td> |
| 201 | 224 | <td style="min-width: 80px">完成率</td> |
| 225 | + <td style="min-width: 80px">相比去年差异</td> | |
| 202 | 226 | <td style="min-width: 80px">实际</td> |
| 203 | 227 | <td style="min-width: 80px">预算</td> |
| 204 | 228 | <td style="min-width: 80px">完成率</td> |
| 229 | + <td style="min-width: 80px">相比去年差异</td> | |
| 205 | 230 | <td style="min-width: 80px">实际</td> |
| 206 | 231 | <td style="min-width: 80px">预算</td> |
| 207 | 232 | <td style="min-width: 80px">完成率</td> |
| 233 | + <td style="min-width: 80px">相比去年差异</td> | |
| 208 | 234 | </tr> |
| 209 | 235 | </thead> |
| 210 | 236 | <tbody class="budget_sum_dataList" id="datas"> |
| ... | ... | @@ -339,47 +365,60 @@ |
| 339 | 365 | <td>{{obj.mon1}}</td> |
| 340 | 366 | <td>{{obj.bud1}}</td> |
| 341 | 367 | <td>{{obj.com1}}</td> |
| 368 | + <td>{{obj.sub1}}</td> | |
| 342 | 369 | <td>{{obj.mon2}}</td> |
| 343 | 370 | <td>{{obj.bud2}}</td> |
| 344 | 371 | <td>{{obj.com2}}</td> |
| 372 | + <td>{{obj.sub2}}</td> | |
| 345 | 373 | <td>{{obj.mon3}}</td> |
| 346 | 374 | <td>{{obj.bud3}}</td> |
| 347 | 375 | <td>{{obj.com3}}</td> |
| 376 | + <td>{{obj.sub3}}</td> | |
| 348 | 377 | <td>{{obj.mon4}}</td> |
| 349 | 378 | <td>{{obj.bud4}}</td> |
| 350 | 379 | <td>{{obj.com4}}</td> |
| 380 | + <td>{{obj.sub4}}</td> | |
| 351 | 381 | <td>{{obj.mon5}}</td> |
| 352 | 382 | <td>{{obj.bud5}}</td> |
| 353 | 383 | <td>{{obj.com5}}</td> |
| 384 | + <td>{{obj.sub5}}</td> | |
| 354 | 385 | <td>{{obj.mon6}}</td> |
| 355 | 386 | <td>{{obj.bud6}}</td> |
| 356 | 387 | <td>{{obj.com6}}</td> |
| 388 | + <td>{{obj.sub6}}</td> | |
| 357 | 389 | <td>{{obj.mon7}}</td> |
| 358 | 390 | <td>{{obj.bud7}}</td> |
| 359 | 391 | <td>{{obj.com7}}</td> |
| 392 | + <td>{{obj.sub7}}</td> | |
| 360 | 393 | <td>{{obj.mon8}}</td> |
| 361 | 394 | <td>{{obj.bud8}}</td> |
| 362 | 395 | <td>{{obj.com8}}</td> |
| 396 | + <td>{{obj.sub8}}</td> | |
| 363 | 397 | <td>{{obj.mon9}}</td> |
| 364 | 398 | <td>{{obj.bud9}}</td> |
| 365 | 399 | <td>{{obj.com9}}</td> |
| 400 | + <td>{{obj.sub9}}</td> | |
| 366 | 401 | <td>{{obj.mon10}}</td> |
| 367 | 402 | <td>{{obj.bud10}}</td> |
| 368 | 403 | <td>{{obj.com10}}</td> |
| 404 | + <td>{{obj.sub10}}</td> | |
| 369 | 405 | <td>{{obj.mon11}}</td> |
| 370 | 406 | <td>{{obj.bud11}}</td> |
| 371 | 407 | <td>{{obj.com11}}</td> |
| 408 | + <td>{{obj.sub11}}</td> | |
| 372 | 409 | <td>{{obj.mon12}}</td> |
| 373 | 410 | <td>{{obj.bud12}}</td> |
| 374 | 411 | <td>{{obj.com12}}</td> |
| 412 | + <td>{{obj.sub12}}</td> | |
| 375 | 413 | <td>{{obj.monAll}}</td> |
| 376 | 414 | <td>{{obj.complete}}</td> |
| 377 | 415 | <td>{{obj.diff}}</td> |
| 416 | + <td>{{obj.subAll}}</td> | |
| 378 | 417 | </tr> |
| 379 | 418 | {{/each}} |
| 380 | 419 | {{if list.length == 0}} |
| 381 | 420 | <tr> |
| 382 | - <td colspan="54"><h6 class="muted">没有找到相关数据</h6></td> | |
| 421 | + <td colspan="57"><h6 class="muted">没有找到相关数据</h6></td> | |
| 383 | 422 | </tr> |
| 384 | 423 | {{/if}} |
| 385 | 424 | </script> |
| ... | ... | @@ -395,47 +434,60 @@ |
| 395 | 434 | <td>{{obj.mon1}}</td> |
| 396 | 435 | <td>{{obj.bud1}}</td> |
| 397 | 436 | <td>{{obj.com1}}</td> |
| 437 | + <td>{{obj.sub1}}</td> | |
| 398 | 438 | <td>{{obj.mon2}}</td> |
| 399 | 439 | <td>{{obj.bud2}}</td> |
| 400 | 440 | <td>{{obj.com2}}</td> |
| 441 | + <td>{{obj.sub2}}</td> | |
| 401 | 442 | <td>{{obj.mon3}}</td> |
| 402 | 443 | <td>{{obj.bud3}}</td> |
| 403 | 444 | <td>{{obj.com3}}</td> |
| 445 | + <td>{{obj.sub3}}</td> | |
| 404 | 446 | <td>{{obj.mon4}}</td> |
| 405 | 447 | <td>{{obj.bud4}}</td> |
| 406 | 448 | <td>{{obj.com4}}</td> |
| 449 | + <td>{{obj.sub4}}</td> | |
| 407 | 450 | <td>{{obj.mon5}}</td> |
| 408 | 451 | <td>{{obj.bud5}}</td> |
| 409 | 452 | <td>{{obj.com5}}</td> |
| 453 | + <td>{{obj.sub5}}</td> | |
| 410 | 454 | <td>{{obj.mon6}}</td> |
| 411 | 455 | <td>{{obj.bud6}}</td> |
| 412 | 456 | <td>{{obj.com6}}</td> |
| 457 | + <td>{{obj.sub6}}</td> | |
| 413 | 458 | <td>{{obj.mon7}}</td> |
| 414 | 459 | <td>{{obj.bud7}}</td> |
| 415 | 460 | <td>{{obj.com7}}</td> |
| 461 | + <td>{{obj.sub7}}</td> | |
| 416 | 462 | <td>{{obj.mon8}}</td> |
| 417 | 463 | <td>{{obj.bud8}}</td> |
| 418 | 464 | <td>{{obj.com8}}</td> |
| 465 | + <td>{{obj.sub8}}</td> | |
| 419 | 466 | <td>{{obj.mon9}}</td> |
| 420 | 467 | <td>{{obj.bud9}}</td> |
| 421 | 468 | <td>{{obj.com9}}</td> |
| 469 | + <td>{{obj.sub9}}</td> | |
| 422 | 470 | <td>{{obj.mon10}}</td> |
| 423 | 471 | <td>{{obj.bud10}}</td> |
| 424 | 472 | <td>{{obj.com10}}</td> |
| 473 | + <td>{{obj.sub10}}</td> | |
| 425 | 474 | <td>{{obj.mon11}}</td> |
| 426 | 475 | <td>{{obj.bud11}}</td> |
| 427 | 476 | <td>{{obj.com11}}</td> |
| 477 | + <td>{{obj.sub11}}</td> | |
| 428 | 478 | <td>{{obj.mon12}}</td> |
| 429 | 479 | <td>{{obj.bud12}}</td> |
| 430 | 480 | <td>{{obj.com12}}</td> |
| 481 | + <td>{{obj.sub12}}</td> | |
| 431 | 482 | <td>{{obj.monAll}}</td> |
| 432 | 483 | <td>{{obj.complete}}</td> |
| 433 | 484 | <td>{{obj.diff}}</td> |
| 485 | + <td>{{obj.subAll}}</td> | |
| 434 | 486 | </tr> |
| 435 | 487 | {{/each}} |
| 436 | 488 | {{if list.length == 0}} |
| 437 | 489 | <tr> |
| 438 | - <td colspan="54"><h6 class="muted">没有找到相关数据</h6></td> | |
| 490 | + <td colspan="57"><h6 class="muted">没有找到相关数据</h6></td> | |
| 439 | 491 | </tr> |
| 440 | 492 | {{/if}} |
| 441 | 493 | </script> |
| 442 | 494 | \ No newline at end of file | ... | ... |
src/main/resources/static/pages/forms/budget/timeAnaly.html
0 → 100644
| 1 | +<style type="text/css"> | |
| 2 | + .table-bordered { | |
| 3 | + border: 1px solid; } | |
| 4 | + .table-bordered > thead > tr > th, | |
| 5 | + .table-bordered > thead > tr > td, | |
| 6 | + .table-bordered > tbody > tr > th, | |
| 7 | + .table-bordered > tbody > tr > td, | |
| 8 | + .table-bordered > tfoot > tr > th, | |
| 9 | + .table-bordered > tfoot > tr > td { | |
| 10 | + border: 1px solid; } | |
| 11 | + .table-bordered > thead > tr > th, | |
| 12 | + .table-bordered > thead > tr > td { | |
| 13 | + border-bottom-width: 2px; } | |
| 14 | + .table > tbody + tbody { | |
| 15 | + border-top: 1px solid; } | |
| 16 | + .merge{ | |
| 17 | + text-align:center; | |
| 18 | + vertical-align:middle; | |
| 19 | + } | |
| 20 | + #forms > thead > tr > th{ | |
| 21 | + min-width: 80px; | |
| 22 | + } | |
| 23 | + #works > tbody > tr{ | |
| 24 | + background-color: #FFFFFF; | |
| 25 | + } | |
| 26 | +</style> | |
| 27 | + | |
| 28 | +<div class="page-head"> | |
| 29 | + <div class="page-title"> | |
| 30 | + <h1>线路时刻表分析明细</h1> | |
| 31 | + </div> | |
| 32 | +</div> | |
| 33 | + | |
| 34 | +<div class="row"> | |
| 35 | + <div class="col-md-12"> | |
| 36 | + <div class="portlet light porttlet-fit bordered"> | |
| 37 | + <div class="portlet-title"> | |
| 38 | + <form id="history" class="form-inline" action=""> | |
| 39 | + <div style="display: inline-block; margin-left: 28px;" id="company1"> | |
| 40 | + <span class="item-label" style="width: 80px;">公司: </span> | |
| 41 | + <select class="form-control" name="company" id="company" style="width: 165px;"></select> | |
| 42 | + </div> | |
| 43 | + <div style="display: inline-block; margin-left: 21px;" id="subCompany1"> | |
| 44 | + <span class="item-label" style="width: 80px;">分公司: </span> | |
| 45 | + <select class="form-control" name="subCompany" id="subCompany" style="width: 165px;"></select> | |
| 46 | + </div> | |
| 47 | + <div style="display: inline-block;margin-left: 28px;"> | |
| 48 | + <span class="item-label" style="width: 80px;">日期: </span> | |
| 49 | + <input class="form-control" type="text" id="date" style="width: 165px;"/> | |
| 50 | + </div> | |
| 51 | + <div style="margin-top: 10px"></div> | |
| 52 | + <div style="display: inline-block; margin-left: 28px;"> | |
| 53 | + <span class="item-label" style="width: 80px;">线路: </span> | |
| 54 | + <select class="form-control" name="line" id="line" style="width: 165px;"></select> | |
| 55 | + </div> | |
| 56 | + <div style="display: inline-block; margin-left: 7px"> | |
| 57 | + <span class="item-label" style="width: 80px;">时刻类型: </span> | |
| 58 | + <select class="form-control" name="model" id="model" style="width: 165px;"> | |
| 59 | + <option value="">请选择...</option> | |
| 60 | + </select> | |
| 61 | + </div> | |
| 62 | + <div class="form-group" style="margin-left: 17px"> | |
| 63 | + <input class="btn btn-default" type="button" id="query" value="筛选"/> | |
| 64 | + <input class="btn btn-default" type="button" id="export" value="导出"/> | |
| 65 | + </div> | |
| 66 | + </form> | |
| 67 | + </div> | |
| 68 | + <div class="portlet-body"> | |
| 69 | + <label>单位:分钟</label> | |
| 70 | + <div class="row"> | |
| 71 | + <div class="table-container" id="countLine" style="margin-top: 10px;overflow:auto;min-width: 906px"> | |
| 72 | + <table class="table table-bordered table-hover table-checkable" id="forms"> | |
| 73 | + <thead> | |
| 74 | + <tr class="hidden"> | |
| 75 | + <th colspan="23"><label id="xlName"></label>线路时刻表分析明细</th> | |
| 76 | + </tr> | |
| 77 | + <tr class="hidden"> | |
| 78 | + <th>公司</th> | |
| 79 | + <th>分公司</th> | |
| 80 | + <th>线路</th> | |
| 81 | + <th>班型</th> | |
| 82 | + <th>路牌</th> | |
| 83 | + <th>出场</th> | |
| 84 | + <th>上行起始站</th> | |
| 85 | + <th>上行终点站</th> | |
| 86 | + <th>下行起点站</th> | |
| 87 | + <th>下行终点站</th> | |
| 88 | + <th>进场</th> | |
| 89 | + <th>早高峰运送时间<br/>(6:31-8:30)</th> | |
| 90 | + <th>晚高峰运送时间<br/>(16:01-18:00)</th> | |
| 91 | + <th>低谷运送时间</th> | |
| 92 | + <th>平均运送时间</th> | |
| 93 | + <th>早高峰停站时间<br/>(6:31-8:30)</th> | |
| 94 | + <th>晚高峰停站时间<br/>(16:01-18:00)</th> | |
| 95 | + <th>低谷停站时间</th> | |
| 96 | + <th>平均停站时间</th> | |
| 97 | + <th>空驶班次/空驶里程</th> | |
| 98 | + <th>运营班次/运营里程</th> | |
| 99 | + <th>营运工时<br/>(小时.分钟)</th> | |
| 100 | + <th>总工时<br/>(小时.分钟)</th> | |
| 101 | + </tr> | |
| 102 | + </thead> | |
| 103 | + <tbody> | |
| 104 | + | |
| 105 | + </tbody> | |
| 106 | + </table> | |
| 107 | + </div> | |
| 108 | + <div style="text-align: right;"> | |
| 109 | + <ul id="pagination" class="pagination"></ul> | |
| 110 | + </div> | |
| 111 | + </div> | |
| 112 | + </div> | |
| 113 | + </div> | |
| 114 | + </div> | |
| 115 | +</div> | |
| 116 | + | |
| 117 | +<script> | |
| 118 | + $(function(){ | |
| 119 | + | |
| 120 | + // 关闭左侧栏 | |
| 121 | + if (!$('body').hasClass('page-sidebar-closed')) | |
| 122 | + $('.menu-toggler.sidebar-toggler').click(); | |
| 123 | + | |
| 124 | + $("#countLine").height($(window).height()-280); | |
| 125 | + | |
| 126 | + var d = new Date(); | |
| 127 | + var year = d.getFullYear(); | |
| 128 | + var month = d.getMonth() + 1; | |
| 129 | + var day = d.getDate(); | |
| 130 | + if(month < 10) | |
| 131 | + month = "0" + month; | |
| 132 | + if(day < 10) | |
| 133 | + day = "0" + day; | |
| 134 | + var dateTime = year + "-" + month + "-" + day; | |
| 135 | + $("#date").datetimepicker({ | |
| 136 | + format : 'YYYY-MM-DD', | |
| 137 | + locale : 'zh-cn', | |
| 138 | + maxDate : dateTime | |
| 139 | + }); | |
| 140 | + $("#date").val(dateTime); | |
| 141 | + | |
| 142 | + var fage=false; | |
| 143 | + var xlList; | |
| 144 | + var obj = []; | |
| 145 | + | |
| 146 | + $.get('/report/lineList',function(result){ | |
| 147 | + xlList=result; | |
| 148 | + $.get('/user/companyData', function(result){ | |
| 149 | + obj = result; | |
| 150 | + var options = ''; | |
| 151 | + for(var i = 0; i < obj.length; i++){ | |
| 152 | + options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>'; | |
| 153 | + } | |
| 154 | + | |
| 155 | + if(obj.length ==0){ | |
| 156 | + $("#company1").css('display','none'); | |
| 157 | + }else if(obj.length ==1){ | |
| 158 | + $("#company1").css('display','none'); | |
| 159 | + if(obj[0].children.length == 1 || obj[0].children.length ==0) | |
| 160 | + $('#subCompany1').css('display','none'); | |
| 161 | + } | |
| 162 | + $('#company').html(options); | |
| 163 | + updateCompany(); | |
| 164 | + }); | |
| 165 | + }) | |
| 166 | + $("#company").on("change",updateCompany); | |
| 167 | + function updateCompany(){ | |
| 168 | + var company = $('#company').val(); | |
| 169 | + var options = ''; | |
| 170 | + for(var i = 0; i < obj.length; i++){ | |
| 171 | + if(obj[i].companyCode == company){ | |
| 172 | + var children = obj[i].children; | |
| 173 | + for(var j = 0; j < children.length; j++){ | |
| 174 | + options += '<option value="'+children[j].code+'">'+children[j].name+'</option>'; | |
| 175 | + } | |
| 176 | + } | |
| 177 | + } | |
| 178 | + $('#subCompany').html(options); | |
| 179 | + } | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + var tempData = {}; | |
| 184 | + $.get('/report/lineList',function(xlList){ | |
| 185 | + var data = []; | |
| 186 | + $.get('/user/companyData', function(result){ | |
| 187 | + for(var i = 0; i < result.length; i++){ | |
| 188 | + var companyCode = result[i].companyCode; | |
| 189 | + var children = result[i].children; | |
| 190 | + for(var j = 0; j < children.length; j++){ | |
| 191 | + var code = children[j].code; | |
| 192 | + for(var k=0;k < xlList.length;k++ ){ | |
| 193 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 194 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 195 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 196 | + } | |
| 197 | + } | |
| 198 | + } | |
| 199 | + } | |
| 200 | + initPinYinSelect2('#line',data,''); | |
| 201 | + line = data[0].id; | |
| 202 | + updateModel(); | |
| 203 | + }); | |
| 204 | + }); | |
| 205 | + | |
| 206 | + $("#line").on("change", function(){ | |
| 207 | + if($("#line").val() == " "){ | |
| 208 | + $("#company").attr("disabled", false); | |
| 209 | + $("#subCompany").attr("disabled", false); | |
| 210 | + } else { | |
| 211 | + var temp = tempData[$("#line").val()].split(":"); | |
| 212 | + $("#company").val(temp[0]); | |
| 213 | + updateCompany(); | |
| 214 | + $("#subCompany").val(temp[1]); | |
| 215 | + $("#company").attr("disabled", true); | |
| 216 | +// $("#subCompany").attr("disabled", true); | |
| 217 | + } | |
| 218 | + }); | |
| 219 | + | |
| 220 | + $("#query").on("click", function (){ | |
| 221 | + jsDoQuery(); | |
| 222 | + }); | |
| 223 | + | |
| 224 | + var line = $("#line").val(); | |
| 225 | + var date = $("#date").val(); | |
| 226 | + var model = $("#model").val(); | |
| 227 | + var company = $("#company").val(); | |
| 228 | + var subCompany = $("#subCompany").val(); | |
| 229 | + function jsDoQuery(pagination){ | |
| 230 | + $("#countLine").height($(window).height()-280); | |
| 231 | + if($("#date").val().trim().length == 0){ | |
| 232 | + layer.msg("请选择日期"); | |
| 233 | + return; | |
| 234 | + } | |
| 235 | + var params = {}; | |
| 236 | + line = $("#line").val(); | |
| 237 | + date = $("#date").val(); | |
| 238 | + model = $("#model").val(); | |
| 239 | + company = $("#company").val(); | |
| 240 | + subCompany = $("#subCompany").val(); | |
| 241 | + var lineName = $('#line option:selected').text(); | |
| 242 | + params['line'] = line; | |
| 243 | + params['date'] = date; | |
| 244 | + params['model'] = model; | |
| 245 | + params['company'] = company; | |
| 246 | + params['subCompany'] = subCompany; | |
| 247 | + params['type'] = "query"; | |
| 248 | + var i = layer.load(2); | |
| 249 | + $("#forms .hidden").removeClass("hidden"); | |
| 250 | + $post('/budget/timeAnaly', params, function(result){ | |
| 251 | + // 把数据填充到模版中 | |
| 252 | + var tbodyHtml = template('time_analy',{data:result}); | |
| 253 | + layer.close(i); | |
| 254 | + | |
| 255 | + // 把渲染好的模版html文本追加到表格中 | |
| 256 | + $('#forms tbody').html(tbodyHtml); | |
| 257 | + | |
| 258 | + $("#xlName").html(lineName + " - "); | |
| 259 | + }); | |
| 260 | + | |
| 261 | + } | |
| 262 | + | |
| 263 | + | |
| 264 | + $("#export").on("click",function(){ | |
| 265 | + if($("#date").val().trim().length == 0){ | |
| 266 | + layer.msg("请选择日期"); | |
| 267 | + return; | |
| 268 | + } | |
| 269 | + var params = {}; | |
| 270 | + line = $("#line").val(); | |
| 271 | + date = $("#date").val(); | |
| 272 | + model = $("#model").val(); | |
| 273 | + company = $("#company").val(); | |
| 274 | + subCompany = $("#subCompany").val(); | |
| 275 | + var lineName = $('#line option:selected').text(); | |
| 276 | + params['line'] = line; | |
| 277 | + params['date'] = date; | |
| 278 | + params['model'] = model; | |
| 279 | + params['company'] = company; | |
| 280 | + params['subCompany'] = subCompany; | |
| 281 | + params['type'] = "export"; | |
| 282 | + var i = layer.load(2); | |
| 283 | + $post('/budget/timeAnaly', params, function(result){ | |
| 284 | + window.open("/downloadFile/download?fileName=" | |
| 285 | + +date+"-"+lineName+"-线路时刻表分析明细"); | |
| 286 | + layer.close(i); | |
| 287 | + }); | |
| 288 | + }); | |
| 289 | + | |
| 290 | + $("#line").on("change", function(){ | |
| 291 | + line = $("#line").val(); | |
| 292 | + if(line == " ") | |
| 293 | + line = ""; | |
| 294 | + updateModel(); | |
| 295 | + }); | |
| 296 | + | |
| 297 | + $('#date').on("blur", function(){ | |
| 298 | + date = $("#date").val(); | |
| 299 | + updateModel(); | |
| 300 | + }); | |
| 301 | + | |
| 302 | + var flag = 0; | |
| 303 | + function updateModel(){ | |
| 304 | + if(flag == 1) | |
| 305 | + return; | |
| 306 | + flag = 1; | |
| 307 | + var treeData = []; | |
| 308 | + var params = {}; | |
| 309 | + params['line'] = line; | |
| 310 | + params['startDate'] = date; | |
| 311 | + params['endDate'] = date; | |
| 312 | + $get('/pcpc/getModel', params, function(result){ | |
| 313 | + treeData = createTreeData(result); | |
| 314 | + var options = '<option value="">请选择...</option>'; | |
| 315 | + $.each(treeData, function(i, g){ | |
| 316 | + options += '<option value="'+g.id+'">'+g.name+'</option>'; | |
| 317 | + }); | |
| 318 | + $('#model').html(options)/* .select2() */; | |
| 319 | + flag = 0; | |
| 320 | + }); | |
| 321 | + } | |
| 322 | + | |
| 323 | + /** | |
| 324 | + * 将模块List 转换为树结构 | |
| 325 | + * @param arr | |
| 326 | + * @returns {Array} | |
| 327 | + */ | |
| 328 | + function createTreeData(arr){ | |
| 329 | + var treeData = []; | |
| 330 | + var len = arr.length; | |
| 331 | + for(var i = 0; i < len; i ++){ | |
| 332 | + var pId = arr[i].pId; | |
| 333 | + arr[i].text = arr[i].name; | |
| 334 | + if(!pId){ | |
| 335 | + treeData.push(arr[i]); | |
| 336 | + } | |
| 337 | + | |
| 338 | + for(var j = 0; j < len; j ++){ | |
| 339 | + if(pId == arr[j].id){ | |
| 340 | + if(!arr[j].children) | |
| 341 | + arr[j].children = []; | |
| 342 | + arr[j].children.push(arr[i]); | |
| 343 | + break; | |
| 344 | + } | |
| 345 | + } | |
| 346 | + } | |
| 347 | + return treeData; | |
| 348 | + } | |
| 349 | + | |
| 350 | + }); | |
| 351 | + | |
| 352 | +</script> | |
| 353 | +<script type="text/html" id="time_analy"> | |
| 354 | + {{each data.dataList as obj i}} | |
| 355 | + <tr> | |
| 356 | + <td>{{obj.gsName}}</td> | |
| 357 | + <td>{{obj.fgsName}}</td> | |
| 358 | + <td>{{obj.xlName}}</td> | |
| 359 | + <td>{{obj.bx}}</td> | |
| 360 | + <td>{{obj.lpName}}</td> | |
| 361 | + <td>{{obj.outStation}}</td> | |
| 362 | + <td>{{obj.qdzName0}}</td> | |
| 363 | + <td>{{obj.zdzName0}}</td> | |
| 364 | + <td>{{obj.qdzName1}}</td> | |
| 365 | + <td>{{obj.zdzName1}}</td> | |
| 366 | + <td>{{obj.inStation}}</td> | |
| 367 | + <td>{{obj.yssj_z}}</td> | |
| 368 | + <td>{{obj.yssj_w}}</td> | |
| 369 | + <td>{{obj.yssj_d}}</td> | |
| 370 | + <td>{{obj.yssj_average}}</td> | |
| 371 | + <td>{{obj.tzsj_z}}</td> | |
| 372 | + <td>{{obj.tzsj_w}}</td> | |
| 373 | + <td>{{obj.tzsj_d}}</td> | |
| 374 | + <td>{{obj.tzsj_average}}</td> | |
| 375 | + <td>{{obj.ksbc}}/{{obj.kslc}}</td> | |
| 376 | + <td>{{obj.yybc}}/{{obj.yylc}}</td> | |
| 377 | + <td>{{obj.yygs}}</td> | |
| 378 | + <td>{{obj.zgs}}</td> | |
| 379 | + </tr> | |
| 380 | + {{/each}} | |
| 381 | + <tr><td colspan="2">合计配档数</td><td colspan="21">{{data.ecNum}}</td></tr> | |
| 382 | + <tr><td colspan="2">合计配车数</td><td colspan="21">{{data.carNum}}</td></tr> | |
| 383 | + {{if data.dataList.length == 0}} | |
| 384 | + <tr> | |
| 385 | + <td colspan="23"><h6 class="muted">没有找到相关数据</h6></td> | |
| 386 | + </tr> | |
| 387 | + {{/if}} | |
| 388 | +</script> | ... | ... |
src/main/resources/static/pages/forms/mould/budgetAmounts.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/budgetAmounts_data.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/budgetMileage.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/budgetMileage_data.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/budgetPerson.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/budgetPerson_data.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/budgetSum.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/budgetSum_data.xls
No preview for this file type
src/main/resources/static/pages/forms/mould/timeAnaly.xls
0 → 100644
No preview for this file type