Commit 6d79b0c9c4cb14895a482701ec95836e24dec96e
Merge branch 'pudong' of 192.168.168.201:panzhaov5/bsth_control into pudong
Showing
20 changed files
with
923 additions
and
255 deletions
src/main/java/com/bsth/controller/realcontrol/ScheduleRealInfoController.java
| ... | ... | @@ -23,9 +23,6 @@ import java.util.*; |
| 23 | 23 | @RequestMapping("/realSchedule") |
| 24 | 24 | public class ScheduleRealInfoController extends BaseController<ScheduleRealInfo, Long> { |
| 25 | 25 | |
| 26 | - /*@Autowired | |
| 27 | - GetSchedulePlanThread getSchedulePlanThread;*/ | |
| 28 | - | |
| 29 | 26 | @Autowired |
| 30 | 27 | ScheduleRealInfoService scheduleRealInfoService; |
| 31 | 28 | ... | ... |
src/main/java/com/bsth/controller/realcontrol/anomalyCheckController.java
| ... | ... | @@ -110,4 +110,14 @@ public class anomalyCheckController { |
| 110 | 110 | dayOfSchedule.removeExecPlan(nbbm); |
| 111 | 111 | return 1; |
| 112 | 112 | } |
| 113 | + | |
| 114 | + @RequestMapping(value = "/sch_re_calc_id_maps") | |
| 115 | + public int reCalcIdMaps(){ | |
| 116 | + return dayOfSchedule.reCalcIdMaps(); | |
| 117 | + } | |
| 118 | + | |
| 119 | + @RequestMapping(value = "/sch_size_string") | |
| 120 | + public String schSizeString(){ | |
| 121 | + return dayOfSchedule.sizeString(); | |
| 122 | + } | |
| 113 | 123 | } | ... | ... |
src/main/java/com/bsth/controller/report/ReportController.java
src/main/java/com/bsth/data/directive/DayOfDirectives.java
| ... | ... | @@ -15,6 +15,7 @@ import org.springframework.beans.factory.annotation.Autowired; |
| 15 | 15 | import org.springframework.stereotype.Component; |
| 16 | 16 | |
| 17 | 17 | import java.util.*; |
| 18 | +import java.util.concurrent.ConcurrentHashMap; | |
| 18 | 19 | |
| 19 | 20 | /** |
| 20 | 21 | * |
| ... | ... | @@ -52,8 +53,8 @@ public class DayOfDirectives { |
| 52 | 53 | |
| 53 | 54 | |
| 54 | 55 | static{ |
| 55 | - d60Map = new HashMap<>(); | |
| 56 | - d64Map = new HashMap<>(); | |
| 56 | + d60Map = new ConcurrentHashMap<>(); | |
| 57 | + d64Map = new ConcurrentHashMap<>(); | |
| 57 | 58 | pstDirectives = new LinkedList<>(); |
| 58 | 59 | } |
| 59 | 60 | ... | ... |
src/main/java/com/bsth/data/directive/DirectivesPstThread.java
| ... | ... | @@ -51,10 +51,6 @@ public class DirectivesPstThread extends Thread { |
| 51 | 51 | logger.warn("save 指令,发现 deleted=true 的班次,id=" + sch.getId()); |
| 52 | 52 | continue; |
| 53 | 53 | } |
| 54 | - if(dayOfSchedule.get(sch.getId()) == null){ | |
| 55 | - logger.warn("班次:" + sch.getId() + "不存在了,调度指令放弃入库。"); | |
| 56 | - continue; | |
| 57 | - } | |
| 58 | 54 | } |
| 59 | 55 | d60Repository.save(d60); |
| 60 | 56 | } | ... | ... |
src/main/java/com/bsth/data/schedule/DayOfSchedule.java
| ... | ... | @@ -14,9 +14,7 @@ import com.bsth.entity.schedule.SchedulePlanInfo; |
| 14 | 14 | import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; |
| 15 | 15 | import com.bsth.service.schedule.SchedulePlanInfoService; |
| 16 | 16 | import com.bsth.websocket.handler.SendUtils; |
| 17 | -import com.google.common.base.Predicate; | |
| 18 | 17 | import com.google.common.collect.ArrayListMultimap; |
| 19 | -import com.google.common.collect.Collections2; | |
| 20 | 18 | import org.apache.commons.lang3.StringUtils; |
| 21 | 19 | import org.joda.time.format.DateTimeFormat; |
| 22 | 20 | import org.joda.time.format.DateTimeFormatter; |
| ... | ... | @@ -37,6 +35,7 @@ import java.sql.SQLException; |
| 37 | 35 | import java.text.ParseException; |
| 38 | 36 | import java.text.SimpleDateFormat; |
| 39 | 37 | import java.util.*; |
| 38 | +import java.util.concurrent.ConcurrentHashMap; | |
| 40 | 39 | import java.util.concurrent.ConcurrentLinkedQueue; |
| 41 | 40 | |
| 42 | 41 | /** |
| ... | ... | @@ -100,11 +99,11 @@ public class DayOfSchedule { |
| 100 | 99 | nbbmScheduleMap = ArrayListMultimap.create(); |
| 101 | 100 | lpScheduleMap = ArrayListMultimap.create(); |
| 102 | 101 | |
| 103 | - id2SchedulMap = new HashMap<>(); | |
| 102 | + id2SchedulMap = new ConcurrentHashMap<>(); | |
| 104 | 103 | pstBuffer = new ConcurrentLinkedQueue<>(); |
| 105 | 104 | schFCSJComparator = new ScheduleComparator.FCSJ(); |
| 106 | 105 | currSchDateMap = new HashMap<>(); |
| 107 | - carExecutePlanMap = new HashMap<>(); | |
| 106 | + carExecutePlanMap = new ConcurrentHashMap<>(); | |
| 108 | 107 | |
| 109 | 108 | schedulePlanMap = new HashMap<>(); |
| 110 | 109 | } |
| ... | ... | @@ -266,7 +265,7 @@ public class DayOfSchedule { |
| 266 | 265 | public void clearRAMData(String lineCode) { |
| 267 | 266 | int count = 0; |
| 268 | 267 | List<ScheduleRealInfo> remList = new ArrayList<>(); |
| 269 | - Collection<ScheduleRealInfo> all = id2SchedulMap.values(); | |
| 268 | + Collection<ScheduleRealInfo> all = nbbmScheduleMap.values(); | |
| 270 | 269 | for (ScheduleRealInfo sch : all) { |
| 271 | 270 | if (sch.getXlBm().equals(lineCode)) |
| 272 | 271 | remList.add(sch); |
| ... | ... | @@ -431,7 +430,7 @@ public class DayOfSchedule { |
| 431 | 430 | ps.setInt(3, sch.getBcs()==null?0:sch.getBcs()); |
| 432 | 431 | ps.setInt(4, sch.getBcsj()==null?0:sch.getBcsj()); |
| 433 | 432 | ps.setString(5, sch.getClZbh()); |
| 434 | - ps.setDate(6, new java.sql.Date(sch.getCreateDate().getTime())); | |
| 433 | + ps.setTimestamp(6, new java.sql.Timestamp(sch.getCreateDate().getTime())); | |
| 435 | 434 | ps.setString(7, sch.getDfsj()); |
| 436 | 435 | ps.setInt(8, sch.getDirectiveState()); |
| 437 | 436 | ps.setInt(9, sch.getFcno()==null?0:sch.getFcno()); |
| ... | ... | @@ -447,12 +446,12 @@ public class DayOfSchedule { |
| 447 | 446 | ps.setString(19, sch.getRemarks()); |
| 448 | 447 | ps.setString(20, sch.getsGh()); |
| 449 | 448 | ps.setString(21, sch.getsName()); |
| 450 | - ps.setDate(22, new java.sql.Date(sch.getScheduleDate().getTime())); | |
| 449 | + ps.setTimestamp(22, new java.sql.Timestamp(sch.getScheduleDate().getTime())); | |
| 451 | 450 | ps.setString(23, sch.getScheduleDateStr()); |
| 452 | 451 | ps.setBoolean(24, sch.isSflj()); |
| 453 | 452 | ps.setLong(25, sch.getSpId()); |
| 454 | 453 | ps.setInt(26, sch.getStatus()); |
| 455 | - ps.setDate(27, new java.sql.Date(sch.getUpdateDate().getTime())); | |
| 454 | + ps.setTimestamp(27, new java.sql.Timestamp(sch.getUpdateDate().getTime())); | |
| 456 | 455 | ps.setString(28, sch.getXlBm()); |
| 457 | 456 | ps.setString(29, sch.getXlDir()); |
| 458 | 457 | ps.setString(30, sch.getXlName()); |
| ... | ... | @@ -512,7 +511,7 @@ public class DayOfSchedule { |
| 512 | 511 | public List<ScheduleRealInfo> findByLineCode(String lineCode) { |
| 513 | 512 | List<ScheduleRealInfo> rs = new ArrayList<>(); |
| 514 | 513 | |
| 515 | - Collection<ScheduleRealInfo> schs = id2SchedulMap.values(); | |
| 514 | + Collection<ScheduleRealInfo> schs = nbbmScheduleMap.values(); | |
| 516 | 515 | for (ScheduleRealInfo sch : schs) { |
| 517 | 516 | if (sch.getXlBm().equals(lineCode)) |
| 518 | 517 | rs.add(sch); |
| ... | ... | @@ -527,7 +526,7 @@ public class DayOfSchedule { |
| 527 | 526 | public Map<String, Collection<ScheduleRealInfo>> findByLineCodes(List<String> lineList) { |
| 528 | 527 | ArrayListMultimap<String, ScheduleRealInfo> mMap = ArrayListMultimap.create(); |
| 529 | 528 | |
| 530 | - Collection<ScheduleRealInfo> schs = id2SchedulMap.values(); | |
| 529 | + Collection<ScheduleRealInfo> schs = nbbmScheduleMap.values(); | |
| 531 | 530 | for (ScheduleRealInfo sch : schs) { |
| 532 | 531 | if (lineList.contains(sch.getXlBm())) { |
| 533 | 532 | mMap.put(sch.getXlBm(), sch); |
| ... | ... | @@ -584,24 +583,6 @@ public class DayOfSchedule { |
| 584 | 583 | return next(list, sch); |
| 585 | 584 | } |
| 586 | 585 | |
| 587 | - /** | |
| 588 | - * 下一个相同走向的班次 | |
| 589 | - * | |
| 590 | - * @param sch | |
| 591 | - * @return | |
| 592 | - */ | |
| 593 | - public ScheduleRealInfo nextSame(final ScheduleRealInfo sch) { | |
| 594 | - List<ScheduleRealInfo> list = nbbmScheduleMap.get(sch.getClZbh()); | |
| 595 | - Collection<ScheduleRealInfo> subList = Collections2.filter(list, new Predicate<ScheduleRealInfo>() { | |
| 596 | - | |
| 597 | - @Override | |
| 598 | - public boolean apply(ScheduleRealInfo item) { | |
| 599 | - return item.getXlDir().equals(sch.getXlDir()); | |
| 600 | - } | |
| 601 | - }); | |
| 602 | - return next(subList, sch); | |
| 603 | - } | |
| 604 | - | |
| 605 | 586 | |
| 606 | 587 | /** |
| 607 | 588 | * 下一个班次 |
| ... | ... | @@ -749,8 +730,7 @@ public class DayOfSchedule { |
| 749 | 730 | .calcRealDate(sch) |
| 750 | 731 | .calcAllTimeByFcsj(sch); |
| 751 | 732 | |
| 752 | - String nbbm = sch.getClZbh(); | |
| 753 | - nbbmScheduleMap.put(nbbm, sch); | |
| 733 | + nbbmScheduleMap.put(sch.getClZbh(), sch); | |
| 754 | 734 | |
| 755 | 735 | //主键索引 |
| 756 | 736 | id2SchedulMap.put(sch.getId(), sch); |
| ... | ... | @@ -767,7 +747,6 @@ public class DayOfSchedule { |
| 767 | 747 | } |
| 768 | 748 | |
| 769 | 749 | public void delete(ScheduleRealInfo sch) { |
| 770 | - //ScheduleRealInfo sch = id2SchedulMap.get(id); | |
| 771 | 750 | if (!sch.isSflj()) |
| 772 | 751 | return; |
| 773 | 752 | |
| ... | ... | @@ -807,36 +786,6 @@ public class DayOfSchedule { |
| 807 | 786 | return rs; |
| 808 | 787 | } |
| 809 | 788 | |
| 810 | - public boolean validTime(ScheduleRealInfo sch, Long ts) { | |
| 811 | - List<ScheduleRealInfo> list = nbbmScheduleMap.get(sch.getClZbh()); | |
| 812 | - int ci = list.indexOf(sch); | |
| 813 | - ScheduleRealInfo prve, next; | |
| 814 | - if (ci > 0) { | |
| 815 | - //之前班次实际时间不能大于该时间 | |
| 816 | - for (int i = ci - 1; i >= 0; i--) { | |
| 817 | - prve = list.get(i); | |
| 818 | - if (prve.getZdsjActualTime() != null && prve.getZdsjActualTime() > ts) | |
| 819 | - return false; | |
| 820 | - | |
| 821 | - if (prve.getFcsjActualTime() != null && prve.getFcsjActualTime() > ts) | |
| 822 | - return false; | |
| 823 | - } | |
| 824 | - } | |
| 825 | - | |
| 826 | - if (ci < list.size() - 1) { | |
| 827 | - //之后班次实际时间不能小于该时间 | |
| 828 | - for (int i = ci + 1; i < list.size(); i++) { | |
| 829 | - next = list.get(i); | |
| 830 | - if (next.getFcsjActualTime() != null && next.getFcsjActualTime() < ts) | |
| 831 | - return false; | |
| 832 | - | |
| 833 | - if (next.getZdsjActualTime() != null && next.getZdsjActualTime() < ts) | |
| 834 | - return false; | |
| 835 | - } | |
| 836 | - } | |
| 837 | - return true; | |
| 838 | - } | |
| 839 | - | |
| 840 | 789 | public void save(ScheduleRealInfo sch) { |
| 841 | 790 | sch.setUpdateDate(new Date()); |
| 842 | 791 | pstBuffer.add(sch); |
| ... | ... | @@ -860,26 +809,6 @@ public class DayOfSchedule { |
| 860 | 809 | return sch; |
| 861 | 810 | } |
| 862 | 811 | |
| 863 | - /** | |
| 864 | - * @Title: nextByBcType | |
| 865 | - * @Description: TODO(获取下一个指定班次类型的班次) | |
| 866 | - */ | |
| 867 | - public ScheduleRealInfo nextByBcType(ScheduleRealInfo sch, String bcType) { | |
| 868 | - List<ScheduleRealInfo> list = nbbmScheduleMap.get(sch.getClZbh()); | |
| 869 | - Collections.sort(list, schFCSJComparator); | |
| 870 | - | |
| 871 | - boolean flag = false; | |
| 872 | - for (ScheduleRealInfo temp : list) { | |
| 873 | - | |
| 874 | - if (flag && temp.getBcType().equals(bcType)) | |
| 875 | - return temp; | |
| 876 | - | |
| 877 | - if (temp == sch) { | |
| 878 | - flag = true; | |
| 879 | - } | |
| 880 | - } | |
| 881 | - return null; | |
| 882 | - } | |
| 883 | 812 | |
| 884 | 813 | /** |
| 885 | 814 | * 搜索离当前时间最近的一个指定类型的班次 |
| ... | ... | @@ -917,7 +846,7 @@ public class DayOfSchedule { |
| 917 | 846 | } |
| 918 | 847 | |
| 919 | 848 | public Collection<ScheduleRealInfo> findAll() { |
| 920 | - return id2SchedulMap.values(); | |
| 849 | + return nbbmScheduleMap.values(); | |
| 921 | 850 | } |
| 922 | 851 | |
| 923 | 852 | public boolean addExecPlan(ScheduleRealInfo sch) { |
| ... | ... | @@ -949,6 +878,8 @@ public class DayOfSchedule { |
| 949 | 878 | * @return |
| 950 | 879 | */ |
| 951 | 880 | public ScheduleRealInfo executeCurr(String nbbm) { |
| 881 | + if(StringUtils.isEmpty(nbbm)) | |
| 882 | + return null; | |
| 952 | 883 | return carExecutePlanMap.get(nbbm); |
| 953 | 884 | } |
| 954 | 885 | |
| ... | ... | @@ -984,12 +915,12 @@ public class DayOfSchedule { |
| 984 | 915 | } |
| 985 | 916 | |
| 986 | 917 | public void reCalcExecPlan(String nbbm) { |
| 987 | - //logger.info("reCalcExecPlan...: " + nbbm); | |
| 988 | 918 | List<ScheduleRealInfo> list = nbbmScheduleMap.get(nbbm); |
| 989 | 919 | Collections.sort(list, schFCSJComparator); |
| 990 | 920 | |
| 991 | 921 | ScheduleRealInfo sch = schAttrCalculator.calcCurrentExecSch(list); |
| 992 | - carExecutePlanMap.put(nbbm, sch); | |
| 922 | + if(null != sch) | |
| 923 | + carExecutePlanMap.put(nbbm, sch); | |
| 993 | 924 | } |
| 994 | 925 | |
| 995 | 926 | /** |
| ... | ... | @@ -1130,4 +1061,24 @@ public class DayOfSchedule { |
| 1130 | 1061 | } |
| 1131 | 1062 | return count; |
| 1132 | 1063 | } |
| 1064 | + | |
| 1065 | + /** | |
| 1066 | + * 重新计算ID对照map | |
| 1067 | + */ | |
| 1068 | + public int reCalcIdMaps(){ | |
| 1069 | + Collection<ScheduleRealInfo> all = findAll(); | |
| 1070 | + Map<Long, ScheduleRealInfo> id2SchedulMapCopy = new ConcurrentHashMap<>(); | |
| 1071 | + | |
| 1072 | + for(ScheduleRealInfo sch : all){ | |
| 1073 | + id2SchedulMapCopy.put(sch.getId(), sch); | |
| 1074 | + } | |
| 1075 | + | |
| 1076 | + id2SchedulMap = id2SchedulMapCopy; | |
| 1077 | + | |
| 1078 | + return id2SchedulMap.size(); | |
| 1079 | + } | |
| 1080 | + | |
| 1081 | + public String sizeString(){ | |
| 1082 | + return id2SchedulMap.size() + "/" + nbbmScheduleMap.size(); | |
| 1083 | + } | |
| 1133 | 1084 | } |
| 1134 | 1085 | \ No newline at end of file | ... | ... |
src/main/java/com/bsth/data/schedule/SchAttrCalculator.java
| ... | ... | @@ -206,6 +206,8 @@ public class SchAttrCalculator { |
| 206 | 206 | * @return |
| 207 | 207 | */ |
| 208 | 208 | public ScheduleRealInfo calcCurrentExecSch(List<ScheduleRealInfo> list) { |
| 209 | + if(list.size()==0) | |
| 210 | + return null; | |
| 209 | 211 | String lineCode = list.get(0).getXlBm(); |
| 210 | 212 | LineConfig conf = lineConfigData.get(lineCode); |
| 211 | 213 | ... | ... |
src/main/java/com/bsth/data/schedule/thread/SchedulePstThread.java
| ... | ... | @@ -7,9 +7,18 @@ import com.bsth.repository.realcontrol.ScheduleRealInfoRepository; |
| 7 | 7 | import org.slf4j.Logger; |
| 8 | 8 | import org.slf4j.LoggerFactory; |
| 9 | 9 | import org.springframework.beans.factory.annotation.Autowired; |
| 10 | -import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource; | |
| 11 | -import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; | |
| 10 | +import org.springframework.jdbc.core.BatchPreparedStatementSetter; | |
| 11 | +import org.springframework.jdbc.core.JdbcTemplate; | |
| 12 | +import org.springframework.jdbc.datasource.DataSourceTransactionManager; | |
| 12 | 13 | import org.springframework.stereotype.Component; |
| 14 | +import org.springframework.transaction.TransactionDefinition; | |
| 15 | +import org.springframework.transaction.TransactionStatus; | |
| 16 | +import org.springframework.transaction.support.DefaultTransactionDefinition; | |
| 17 | + | |
| 18 | +import java.sql.PreparedStatement; | |
| 19 | +import java.sql.SQLException; | |
| 20 | +import java.util.ArrayList; | |
| 21 | +import java.util.List; | |
| 13 | 22 | |
| 14 | 23 | /** |
| 15 | 24 | * @author PanZhao |
| ... | ... | @@ -24,18 +33,20 @@ public class SchedulePstThread extends Thread { |
| 24 | 33 | ScheduleRealInfoRepository scheduleRepository; |
| 25 | 34 | |
| 26 | 35 | @Autowired |
| 27 | - NamedParameterJdbcTemplate jdbcTemplate; | |
| 36 | + JdbcTemplate jdbcTemplate; | |
| 28 | 37 | |
| 29 | 38 | @Autowired |
| 30 | 39 | DayOfSchedule dayOfSchedule; |
| 31 | 40 | |
| 32 | 41 | Logger logger = LoggerFactory.getLogger(this.getClass()); |
| 33 | 42 | |
| 43 | + static List<ScheduleRealInfo> saveList = new ArrayList<>(); | |
| 44 | + | |
| 34 | 45 | @Override |
| 35 | 46 | public void run() { |
| 36 | 47 | |
| 37 | 48 | ScheduleRealInfo schedule; |
| 38 | - for (int i = 0; i < 1000; i++) { | |
| 49 | + for (int i = 0; i < 500; i++) { | |
| 39 | 50 | schedule = DayOfSchedule.pstBuffer.poll(); |
| 40 | 51 | if (null == schedule) |
| 41 | 52 | break; |
| ... | ... | @@ -45,46 +56,106 @@ public class SchedulePstThread extends Thread { |
| 45 | 56 | continue; |
| 46 | 57 | } |
| 47 | 58 | |
| 48 | - save(schedule); | |
| 59 | + saveList.add(schedule); | |
| 49 | 60 | } |
| 61 | + | |
| 62 | + //写入数据库 | |
| 63 | + save(); | |
| 50 | 64 | } |
| 51 | 65 | |
| 52 | - /** | |
| 53 | - * 班次更新到数据库,不走jpa | |
| 54 | - * | |
| 55 | - * @param sch | |
| 56 | - */ | |
| 57 | - public void save(ScheduleRealInfo sch) { | |
| 58 | - if (sch.getId() == null) { | |
| 59 | - logger.error("入库的班次没有ID, " + JSON.toJSONString(sch)); | |
| 60 | - return; | |
| 61 | - } | |
| 62 | 66 | |
| 63 | - if(sch.getSaveFailCount() > 5){ | |
| 64 | - logger.error("入库失败上限, " + JSON.toJSONString(sch)); | |
| 65 | - return; | |
| 66 | - } | |
| 67 | + private void save(){ | |
| 68 | + //记录同步数据 | |
| 69 | + logger.info("real schedule update size: " + saveList.size()); | |
| 70 | + logger.info(JSON.toJSONString(saveList)); | |
| 71 | + | |
| 72 | + //批量入库 | |
| 73 | + update2Db(); | |
| 74 | + | |
| 75 | + //清空容器 | |
| 76 | + saveList.clear(); | |
| 77 | + } | |
| 78 | + | |
| 79 | + private void update2Db(){ | |
| 80 | + final List<ScheduleRealInfo> pstList = saveList; | |
| 81 | + //编程式事务 | |
| 82 | + DataSourceTransactionManager tran = new DataSourceTransactionManager(jdbcTemplate.getDataSource()); | |
| 83 | + DefaultTransactionDefinition def = new DefaultTransactionDefinition(); | |
| 84 | + def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED); | |
| 85 | + TransactionStatus status = tran.getTransaction(def); | |
| 86 | + | |
| 87 | + try{ | |
| 88 | + //更新 | |
| 89 | + jdbcTemplate.batchUpdate("update bsth_c_s_sp_info_real set bc_type=?,bcs=?,bcsj=?,cl_zbh=?,create_date=?" + | |
| 90 | + ",dfsj=?,directive_state=?,fcno=?,fcsj=?,fcsj_actual=?,j_gh=?,j_name=?,jhlc=?,lp_name=?,qdz_code=?" + | |
| 91 | + ",qdz_name=?,real_exec_date=?,remarks=?,s_gh=?,s_name=?,schedule_date=?,schedule_date_str=?,sflj=?" + | |
| 92 | + ",sp_id=?,status=?,update_date=?,xl_bm=?,xl_dir=?,xl_name=?,zdsj=?,zdsj_actual=?,zdz_code=?,zdz_name=?" + | |
| 93 | + ",ccno=?,df_auto=?,fgs_bm=?,fgs_name=?,gs_bm=?,gs_name=?,online=?,adjust_exps=?,reissue=?,jhlc_orig=?" + | |
| 94 | + ",sigin_compate=?,drift_status=?,cc_service=?,major_station_name=? where id=?", new BatchPreparedStatementSetter() { | |
| 95 | + @Override | |
| 96 | + public void setValues(PreparedStatement ps, int i) throws SQLException { | |
| 97 | + ScheduleRealInfo sch = pstList.get(i); | |
| 98 | + ps.setString(1, sch.getBcType()); | |
| 99 | + ps.setInt(2, sch.getBcs()==null?0:sch.getBcs()); | |
| 100 | + ps.setInt(3, sch.getBcsj()==null?0:sch.getBcsj()); | |
| 101 | + ps.setString(4, sch.getClZbh()); | |
| 102 | + ps.setTimestamp(5, new java.sql.Timestamp(sch.getCreateDate().getTime())); | |
| 103 | + ps.setString(6, sch.getDfsj()); | |
| 104 | + ps.setInt(7, sch.getDirectiveState()); | |
| 105 | + ps.setInt(8, sch.getFcno()==null?0:sch.getFcno()); | |
| 106 | + ps.setString(9, sch.getFcsj()); | |
| 107 | + ps.setString(10, sch.getFcsjActual()); | |
| 108 | + ps.setString(11, sch.getjGh()); | |
| 109 | + ps.setString(12, sch.getjName()); | |
| 110 | + ps.setDouble(13, sch.getJhlc()); | |
| 111 | + ps.setString(14, sch.getLpName()); | |
| 112 | + ps.setString(15, sch.getQdzCode()); | |
| 113 | + ps.setString(16, sch.getQdzName()); | |
| 114 | + ps.setString(17, sch.getRealExecDate()); | |
| 115 | + ps.setString(18, sch.getRemarks()); | |
| 116 | + ps.setString(19, sch.getsGh()); | |
| 117 | + ps.setString(20, sch.getsName()); | |
| 118 | + ps.setTimestamp(21, new java.sql.Timestamp(sch.getScheduleDate().getTime())); | |
| 119 | + ps.setString(22, sch.getScheduleDateStr()); | |
| 120 | + ps.setBoolean(23, sch.isSflj()); | |
| 121 | + ps.setLong(24, sch.getSpId()); | |
| 122 | + ps.setInt(25, sch.getStatus()); | |
| 123 | + ps.setTimestamp(26, new java.sql.Timestamp(sch.getUpdateDate().getTime())); | |
| 124 | + ps.setString(27, sch.getXlBm()); | |
| 125 | + ps.setString(28, sch.getXlDir()); | |
| 126 | + ps.setString(29, sch.getXlName()); | |
| 127 | + ps.setString(30, sch.getZdsj()); | |
| 128 | + ps.setString(31, sch.getZdsjActual()); | |
| 129 | + ps.setString(32, sch.getZdzCode()); | |
| 130 | + ps.setString(33, sch.getZdzName()); | |
| 131 | + ps.setInt(34, sch.getCcno()==null?0:sch.getCcno()); | |
| 132 | + ps.setBoolean(35, sch.isDfAuto()); | |
| 133 | + ps.setString(36, sch.getFgsBm()); | |
| 134 | + ps.setString(37, sch.getFgsName()); | |
| 135 | + ps.setString(38, sch.getGsBm()); | |
| 136 | + ps.setString(39, sch.getGsName()); | |
| 137 | + ps.setBoolean(40, sch.isOnline()); | |
| 138 | + ps.setString(41, sch.getAdjustExps()); | |
| 139 | + ps.setBoolean(42, sch.isReissue()); | |
| 140 | + ps.setDouble(43, sch.getJhlcOrig()); | |
| 141 | + ps.setInt(44, sch.getSiginCompate()); | |
| 142 | + ps.setInt(45, sch.getDriftStatus()); | |
| 143 | + ps.setBoolean(46, sch.isCcService()); | |
| 144 | + ps.setString(47, sch.getMajorStationName()); | |
| 145 | + | |
| 146 | + ps.setLong(48, sch.getId()); | |
| 147 | + } | |
| 148 | + | |
| 149 | + @Override | |
| 150 | + public int getBatchSize() { | |
| 151 | + return pstList.size(); | |
| 152 | + } | |
| 153 | + }); | |
| 67 | 154 | |
| 68 | - try { | |
| 69 | - String sql = "UPDATE bsth_c_s_sp_info_real" + | |
| 70 | - " SET adjust_exps=:adjustExps, bc_type=:bcType, bcs=:bcs, bcsj=:bcsj, ccno=:ccno, cl_zbh=:clZbh, df_auto=:dfAuto," + | |
| 71 | - " dfsj=:dfsj, directive_state=:directiveState, fcno=:fcno, fcsj=:fcsj, fcsj_actual=:fcsjActual, fgs_bm=:fgsBm, fgs_name=:fgsName, gs_bm=:gsBm, gs_name=:gsName," + | |
| 72 | - " j_gh=:jGh, j_name=:jName, jhlc=:jhlc, jhlc_orig=:jhlcOrig, lp_name=:lpName, ONLINE=:online, qdz_code=:qdzCode, qdz_name=:qdzName," + | |
| 73 | - " real_exec_date=:realExecDate, reissue=:reissue, remarks=:remarks, s_gh=:sGh, s_name=:sName, schedule_date=:scheduleDate," + | |
| 74 | - " schedule_date_str=:scheduleDateStr, sflj=:sflj, sp_id=:spId, STATUS=:status, update_date=:updateDate, xl_bm=:xlBm, xl_dir=:xlDir, xl_name=:xlName," + | |
| 75 | - " zdsj=:zdsj, zdsj_actual=:zdsjActual, zdz_code=:zdzCode, zdz_name=:zdzName" + | |
| 76 | - " WHERE " + | |
| 77 | - " id=:id"; | |
| 78 | - | |
| 79 | - jdbcTemplate.update(sql, new BeanPropertySqlParameterSource(sch)); | |
| 80 | - sch.setSaveFailCount(0); | |
| 81 | - } catch (Exception e) { | |
| 82 | - //下次入库再试 | |
| 83 | - sch.setSaveFailCount(sch.getSaveFailCount()+1); | |
| 84 | - dayOfSchedule.save(sch); | |
| 85 | - | |
| 86 | - logger.error("班次 " + sch.getId() + "入库失败," + JSON.toJSONString(sch)); | |
| 87 | - logger.error("", e); | |
| 155 | + tran.commit(status); | |
| 156 | + }catch (Exception e){ | |
| 157 | + tran.rollback(status); | |
| 158 | + logger.error("同步数据库失败," , e); | |
| 88 | 159 | } |
| 89 | 160 | } |
| 90 | 161 | } | ... | ... |
src/main/java/com/bsth/service/forms/impl/FormsServiceImpl.java
| ... | ... | @@ -441,7 +441,7 @@ public class FormsServiceImpl implements FormsService { |
| 441 | 441 | + " r.cl_zbh,r.xl_bm, r.j_gh,r.gs_bm,r.fgs_bm,r.lp_name " |
| 442 | 442 | + "FROM bsth_c_s_sp_info_real r where 1=1 " |
| 443 | 443 | + " and r.schedule_date_str='"+date + "' " |
| 444 | - + " and r.xl_bm like '%"+line+"%' " | |
| 444 | + + " and r.xl_bm = '"+line+"' " | |
| 445 | 445 | + " and r.gs_bm like '%"+gsdmShif+"%' " |
| 446 | 446 | + " and r.fgs_bm like '%"+fgsdmShif+"%' ) t" |
| 447 | 447 | + " GROUP BY t.schedule_date,t.j_name,t.s_name, " |
| ... | ... | @@ -787,27 +787,25 @@ public class FormsServiceImpl implements FormsService { |
| 787 | 787 | List<Ylb> listYlb= ylbRepository.obtainYl(startDate, gsdm, fgsdm, xlbm, "", "xlbm"); |
| 788 | 788 | for (int i = 0; i < listYlb.size(); i++) { |
| 789 | 789 | Ylb y=listYlb.get(i); |
| 790 | - String jsy=y.getJsy(); | |
| 791 | - String line=y.getXlbm(); | |
| 792 | - String clzbh=y.getNbbm(); | |
| 793 | - List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>(); | |
| 794 | - List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>(); | |
| 795 | - for (int j = 0; j < listReal.size(); j++) { | |
| 796 | - ScheduleRealInfo s=listReal.get(j); | |
| 797 | - if(s.getjGh().equals(jsy) && s.getClZbh().equals(clzbh) | |
| 798 | - &&s.getXlBm().equals(line)){ | |
| 799 | - if(y.getLp()==null){ | |
| 800 | - newList.add(s); | |
| 801 | - Set<ChildTaskPlan> cts = s.getcTasks(); | |
| 802 | - if(cts != null && cts.size() > 0){ | |
| 803 | - newList_.add(s); | |
| 804 | - }else{ | |
| 805 | - if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){ | |
| 806 | - newList_.add(s); | |
| 807 | - } | |
| 808 | - } | |
| 809 | - }else{ | |
| 810 | - if(y.getLp().equals(s.getLpName())){ | |
| 790 | + boolean fage=false; | |
| 791 | + if(xlbm.equals("")){ | |
| 792 | + fage=true; | |
| 793 | + }else{ | |
| 794 | + if(xlbm.equals(y.getXlbm())){ | |
| 795 | + fage=true; | |
| 796 | + } | |
| 797 | + } | |
| 798 | + if(fage){ | |
| 799 | + String jsy=y.getJsy(); | |
| 800 | + String line=y.getXlbm(); | |
| 801 | + String clzbh=y.getNbbm(); | |
| 802 | + List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>(); | |
| 803 | + List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>(); | |
| 804 | + for (int j = 0; j < listReal.size(); j++) { | |
| 805 | + ScheduleRealInfo s=listReal.get(j); | |
| 806 | + if(s.getjGh().equals(jsy) && s.getClZbh().equals(clzbh) | |
| 807 | + &&s.getXlBm().equals(line)){ | |
| 808 | + if(y.getLp()==null){ | |
| 811 | 809 | newList.add(s); |
| 812 | 810 | Set<ChildTaskPlan> cts = s.getcTasks(); |
| 813 | 811 | if(cts != null && cts.size() > 0){ |
| ... | ... | @@ -817,65 +815,75 @@ public class FormsServiceImpl implements FormsService { |
| 817 | 815 | newList_.add(s); |
| 818 | 816 | } |
| 819 | 817 | } |
| 818 | + }else{ | |
| 819 | + if(y.getLp().equals(s.getLpName())){ | |
| 820 | + newList.add(s); | |
| 821 | + Set<ChildTaskPlan> cts = s.getcTasks(); | |
| 822 | + if(cts != null && cts.size() > 0){ | |
| 823 | + newList_.add(s); | |
| 824 | + }else{ | |
| 825 | + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){ | |
| 826 | + newList_.add(s); | |
| 827 | + } | |
| 828 | + } | |
| 829 | + } | |
| 820 | 830 | } |
| 821 | 831 | } |
| 822 | 832 | } |
| 833 | + double jhgl=culateMileageService.culateJhgl(newList); | |
| 834 | + double jhjcc=culateMileageService.culateJhJccgl(newList); | |
| 835 | + double yygl=culateMileageService.culateSjgl(newList_); | |
| 836 | + double ljgl=culateMileageService.culateLjgl(newList_); | |
| 837 | + double ksgl=culateMileageService.culateKsgl(newList_); | |
| 838 | + double jcgl=culateMileageService.culateJccgl(newList_); | |
| 839 | + | |
| 840 | + double zyygl=Arith.add(yygl, ljgl); | |
| 841 | + double zksgl=Arith.add(ksgl, jcgl); | |
| 842 | + | |
| 843 | + Singledata sin=new Singledata(); | |
| 844 | + sin.setJhlc(String.valueOf(Arith.add(zyygl,zksgl))); | |
| 845 | + | |
| 846 | + sin.setEmptMileage(String.valueOf(zksgl)); | |
| 847 | + sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc))); | |
| 848 | + sin.setxL(y.getXlbm()); | |
| 849 | + sin.setXlmc(BasicData.lineCode2NameMap.get(y.getXlbm())); | |
| 850 | + sin.setClzbh(clzbh); | |
| 851 | + sin.setJsy(jsy); | |
| 852 | + sin.setrQ(startDate); | |
| 853 | + sin.setjName(BasicData.allPerson.get(gsdm+"-"+jsy)); | |
| 854 | + sin.setSgh(""); | |
| 855 | + sin.setsName(""); | |
| 856 | + sin.setgS(BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm)); | |
| 857 | + sin.setHyl(df.format(y.getYh())); | |
| 858 | + sin.setJzl(df.format(y.getJzl())); | |
| 859 | + sin.setUnyyyl(df.format(y.getSh())); | |
| 860 | + listY.add(sin); | |
| 823 | 861 | } |
| 824 | - double jhgl=culateMileageService.culateJhgl(newList); | |
| 825 | - double jhjcc=culateMileageService.culateJhJccgl(newList); | |
| 826 | - double yygl=culateMileageService.culateSjgl(newList_); | |
| 827 | - double ljgl=culateMileageService.culateLjgl(newList_); | |
| 828 | - double ksgl=culateMileageService.culateKsgl(newList_); | |
| 829 | - double jcgl=culateMileageService.culateJccgl(newList_); | |
| 830 | 862 | |
| 831 | - double zyygl=Arith.add(yygl, ljgl); | |
| 832 | - double zksgl=Arith.add(ksgl, jcgl); | |
| 833 | - | |
| 834 | - Singledata sin=new Singledata(); | |
| 835 | - sin.setJhlc(String.valueOf(Arith.add(zyygl,zksgl))); | |
| 836 | - | |
| 837 | - sin.setEmptMileage(String.valueOf(zksgl)); | |
| 838 | - sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc))); | |
| 839 | - sin.setxL(y.getXlbm()); | |
| 840 | - sin.setXlmc(BasicData.lineCode2NameMap.get(y.getXlbm())); | |
| 841 | - sin.setClzbh(clzbh); | |
| 842 | - sin.setJsy(jsy); | |
| 843 | - sin.setrQ(startDate); | |
| 844 | - sin.setjName(BasicData.allPerson.get(gsdm+"-"+jsy)); | |
| 845 | - sin.setSgh(""); | |
| 846 | - sin.setsName(""); | |
| 847 | - sin.setgS(BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm)); | |
| 848 | - sin.setHyl(df.format(y.getYh())); | |
| 849 | - sin.setJzl(df.format(y.getJzl())); | |
| 850 | - sin.setUnyyyl(df.format(y.getSh())); | |
| 851 | - listY.add(sin); | |
| 852 | 863 | } |
| 853 | 864 | |
| 854 | 865 | List<Dlb> listDlb= dlbRepository.obtainDl(startDate, gsdm, fgsdm, xlbm, "", "xlbm"); |
| 855 | 866 | for (int i = 0; i < listDlb.size(); i++) { |
| 856 | - | |
| 857 | 867 | Dlb y=listDlb.get(i); |
| 858 | - String jsy=y.getJsy(); | |
| 859 | - String line=y.getXlbm(); | |
| 860 | - String clzbh=y.getNbbm(); | |
| 861 | - List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>(); | |
| 862 | - List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>(); | |
| 863 | - for (int j = 0; j < listReal.size(); j++) { | |
| 864 | - ScheduleRealInfo s=listReal.get(j); | |
| 865 | - if(s.getjGh().equals(jsy) && s.getClZbh().equals(clzbh) | |
| 866 | - &&s.getXlBm().equals(line)){ | |
| 867 | - if(y.getLp()==null){ | |
| 868 | - newList.add(s); | |
| 869 | - Set<ChildTaskPlan> cts = s.getcTasks(); | |
| 870 | - if(cts != null && cts.size() > 0){ | |
| 871 | - newList_.add(s); | |
| 872 | - }else{ | |
| 873 | - if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){ | |
| 874 | - newList_.add(s); | |
| 875 | - } | |
| 876 | - } | |
| 877 | - }else{ | |
| 878 | - if(y.getLp().equals(s.getLpName())){ | |
| 868 | + boolean fage=false; | |
| 869 | + if(xlbm.equals("")){ | |
| 870 | + fage=true; | |
| 871 | + }else{ | |
| 872 | + if(xlbm.equals(y.getXlbm())){ | |
| 873 | + fage=true; | |
| 874 | + } | |
| 875 | + } | |
| 876 | + if(fage){ | |
| 877 | + String jsy=y.getJsy(); | |
| 878 | + String line=y.getXlbm(); | |
| 879 | + String clzbh=y.getNbbm(); | |
| 880 | + List<ScheduleRealInfo> newList=new ArrayList<ScheduleRealInfo>(); | |
| 881 | + List<ScheduleRealInfo> newList_=new ArrayList<ScheduleRealInfo>(); | |
| 882 | + for (int j = 0; j < listReal.size(); j++) { | |
| 883 | + ScheduleRealInfo s=listReal.get(j); | |
| 884 | + if(s.getjGh().equals(jsy) && s.getClZbh().equals(clzbh) | |
| 885 | + &&s.getXlBm().equals(line)){ | |
| 886 | + if(y.getLp()==null){ | |
| 879 | 887 | newList.add(s); |
| 880 | 888 | Set<ChildTaskPlan> cts = s.getcTasks(); |
| 881 | 889 | if(cts != null && cts.size() > 0){ |
| ... | ... | @@ -885,38 +893,50 @@ public class FormsServiceImpl implements FormsService { |
| 885 | 893 | newList_.add(s); |
| 886 | 894 | } |
| 887 | 895 | } |
| 896 | + }else{ | |
| 897 | + if(y.getLp().equals(s.getLpName())){ | |
| 898 | + newList.add(s); | |
| 899 | + Set<ChildTaskPlan> cts = s.getcTasks(); | |
| 900 | + if(cts != null && cts.size() > 0){ | |
| 901 | + newList_.add(s); | |
| 902 | + }else{ | |
| 903 | + if(s.getZdsjActual()!=null && s.getFcsjActual()!=null){ | |
| 904 | + newList_.add(s); | |
| 905 | + } | |
| 906 | + } | |
| 907 | + } | |
| 888 | 908 | } |
| 889 | 909 | } |
| 890 | 910 | } |
| 911 | + double jhgl=culateMileageService.culateJhgl(newList); | |
| 912 | + double jhjcc=culateMileageService.culateJhJccgl(newList); | |
| 913 | + double yygl=culateMileageService.culateSjgl(newList_); | |
| 914 | + double ljgl=culateMileageService.culateLjgl(newList_); | |
| 915 | + double ksgl=culateMileageService.culateKsgl(newList_); | |
| 916 | + double jcgl=culateMileageService.culateJccgl(newList_); | |
| 917 | + | |
| 918 | + double zyygl=Arith.add(yygl, ljgl); | |
| 919 | + double zksgl=Arith.add(ksgl, jcgl); | |
| 920 | + | |
| 921 | + Singledata sin=new Singledata(); | |
| 922 | + sin.setJhlc(String.valueOf(Arith.add(zyygl,zksgl))); | |
| 923 | + | |
| 924 | + sin.setEmptMileage(String.valueOf(zksgl)); | |
| 925 | + sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc))); | |
| 926 | + sin.setxL(y.getXlbm()); | |
| 927 | + sin.setXlmc(BasicData.lineCode2NameMap.get(y.getXlbm())); | |
| 928 | + sin.setClzbh(clzbh); | |
| 929 | + sin.setJsy(jsy); | |
| 930 | + sin.setrQ(startDate); | |
| 931 | + sin.setjName(BasicData.allPerson.get(gsdm+"-"+jsy)); | |
| 932 | + sin.setSgh(""); | |
| 933 | + sin.setsName(""); | |
| 934 | + sin.setgS(BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm)); | |
| 935 | + sin.setHyl(df.format(y.getHd())); | |
| 936 | + sin.setJzl(df.format(y.getCdl())); | |
| 937 | + sin.setUnyyyl(df.format(y.getSh())); | |
| 938 | + listD.add(sin); | |
| 891 | 939 | } |
| 892 | - double jhgl=culateMileageService.culateJhgl(newList); | |
| 893 | - double jhjcc=culateMileageService.culateJhJccgl(newList); | |
| 894 | - double yygl=culateMileageService.culateSjgl(newList_); | |
| 895 | - double ljgl=culateMileageService.culateLjgl(newList_); | |
| 896 | - double ksgl=culateMileageService.culateKsgl(newList_); | |
| 897 | - double jcgl=culateMileageService.culateJccgl(newList_); | |
| 898 | - | |
| 899 | - double zyygl=Arith.add(yygl, ljgl); | |
| 900 | - double zksgl=Arith.add(ksgl, jcgl); | |
| 901 | - | |
| 902 | - Singledata sin=new Singledata(); | |
| 903 | - sin.setJhlc(String.valueOf(Arith.add(zyygl,zksgl))); | |
| 904 | - | |
| 905 | - sin.setEmptMileage(String.valueOf(zksgl)); | |
| 906 | - sin.setJhjl(String.valueOf(Arith.add(jhgl,jhjcc))); | |
| 907 | - sin.setxL(y.getXlbm()); | |
| 908 | - sin.setXlmc(BasicData.lineCode2NameMap.get(y.getXlbm())); | |
| 909 | - sin.setClzbh(clzbh); | |
| 910 | - sin.setJsy(jsy); | |
| 911 | - sin.setrQ(startDate); | |
| 912 | - sin.setjName(BasicData.allPerson.get(gsdm+"-"+jsy)); | |
| 913 | - sin.setSgh(""); | |
| 914 | - sin.setsName(""); | |
| 915 | - sin.setgS(BasicData.businessFgsCodeNameMap.get(fgsdm+"_"+gsdm)); | |
| 916 | - sin.setHyl(df.format(y.getHd())); | |
| 917 | - sin.setJzl(df.format(y.getCdl())); | |
| 918 | - sin.setUnyyyl(df.format(y.getSh())); | |
| 919 | - listD.add(sin); | |
| 920 | 940 | } |
| 921 | 941 | |
| 922 | 942 | Collections.sort(listY,new SingledataByXlbm()); | ... | ... |
src/main/java/com/bsth/service/oil/impl/YlbServiceImpl.java
| ... | ... | @@ -38,6 +38,7 @@ import com.bsth.entity.oil.Ylb; |
| 38 | 38 | import com.bsth.entity.oil.Ylxxb; |
| 39 | 39 | import com.bsth.entity.search.CustomerSpecs; |
| 40 | 40 | import com.bsth.repository.CarsRepository; |
| 41 | +import com.bsth.repository.LineRepository; | |
| 41 | 42 | import com.bsth.repository.oil.CylRepository; |
| 42 | 43 | import com.bsth.repository.oil.DlbRepository; |
| 43 | 44 | import com.bsth.repository.oil.YlbRepository; |
| ... | ... | @@ -73,6 +74,10 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS |
| 73 | 74 | @Autowired |
| 74 | 75 | CarsRepository carsRepository; |
| 75 | 76 | |
| 77 | + | |
| 78 | + @Autowired | |
| 79 | + LineRepository lineRepository; | |
| 80 | + | |
| 76 | 81 | @Autowired |
| 77 | 82 | ScheduleRealInfoService scheduleRealInfoService; |
| 78 | 83 | |
| ... | ... | @@ -1501,8 +1506,14 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS |
| 1501 | 1506 | try{ |
| 1502 | 1507 | String date = map.get("date").toString(); |
| 1503 | 1508 | String line = map.get("line").toString(); |
| 1504 | - String gsdm = map.get("gsdm").toString(); | |
| 1505 | - String fgsdm = map.get("fgsdm").toString(); | |
| 1509 | + List<Line> listLine=lineRepository.findLineByCode(line); | |
| 1510 | + String gsdm =""; | |
| 1511 | + String fgsdm =""; | |
| 1512 | + if(listLine.size()>0){ | |
| 1513 | + Line l=listLine.get(0); | |
| 1514 | + gsdm=l.getCompany(); | |
| 1515 | + fgsdm=l.getBrancheCompany(); | |
| 1516 | + } | |
| 1506 | 1517 | |
| 1507 | 1518 | List<Map<String, Object>> listpbYc=new ArrayList<Map<String, Object>>();//油车数据 |
| 1508 | 1519 | List<Map<String, Object>> listpbDc=new ArrayList<Map<String, Object>>();//电车数据 |
| ... | ... | @@ -1672,7 +1683,15 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS |
| 1672 | 1683 | t.setUpdatetime(new Date()); |
| 1673 | 1684 | } |
| 1674 | 1685 | } |
| 1675 | - repository.save(t); | |
| 1686 | + try { | |
| 1687 | + repository.save(t); | |
| 1688 | + } catch (Exception e) { | |
| 1689 | + // TODO: handle exception | |
| 1690 | + if(e.getMessage().indexOf("PK_YLB_UK")>0){ | |
| 1691 | + newMap.put("fage", "存在相同数据,数据已经过滤"); | |
| 1692 | + logger.info("油量存在相同数据,数据已经过滤"); | |
| 1693 | + } | |
| 1694 | + } | |
| 1676 | 1695 | |
| 1677 | 1696 | } |
| 1678 | 1697 | |
| ... | ... | @@ -1776,7 +1795,15 @@ public class YlbServiceImpl extends BaseServiceImpl<Ylb,Integer> implements YlbS |
| 1776 | 1795 | List<Dlb> updDlb=mapList.get("updList"); |
| 1777 | 1796 | for (int i = 0; i < updDlb.size(); i++) { |
| 1778 | 1797 | Dlb d=updDlb.get(i); |
| 1779 | - dlbRepository.save(d); | |
| 1798 | + try { | |
| 1799 | + dlbRepository.save(d); | |
| 1800 | + } catch (Exception e) { | |
| 1801 | + // TODO: handle exception | |
| 1802 | + if(e.getMessage().indexOf("PK_DLB_UK")>0){ | |
| 1803 | + newMap.put("fage", "存在相同数据,数据已经过滤"); | |
| 1804 | + logger.info("电量存在相同数据,数据已经过滤"); | |
| 1805 | + } | |
| 1806 | + } | |
| 1780 | 1807 | } |
| 1781 | 1808 | //重新获取电耗数据结束 |
| 1782 | 1809 | newMap.put("status", ResponseCode.SUCCESS); | ... | ... |
src/main/java/com/bsth/service/realcontrol/impl/ScheduleRealInfoServiceImpl.java
| ... | ... | @@ -77,7 +77,7 @@ import org.springframework.jdbc.core.JdbcTemplate; |
| 77 | 77 | import org.springframework.jdbc.core.RowMapper; |
| 78 | 78 | import org.springframework.stereotype.Service; |
| 79 | 79 | |
| 80 | -import java.io.*; | |
| 80 | +import java.io.File; | |
| 81 | 81 | import java.sql.ResultSet; |
| 82 | 82 | import java.sql.SQLException; |
| 83 | 83 | import java.text.DecimalFormat; |
| ... | ... | @@ -85,8 +85,6 @@ import java.text.ParseException; |
| 85 | 85 | import java.text.SimpleDateFormat; |
| 86 | 86 | import java.util.*; |
| 87 | 87 | import java.util.regex.Pattern; |
| 88 | -import java.util.zip.ZipEntry; | |
| 89 | -import java.util.zip.ZipOutputStream; | |
| 90 | 88 | |
| 91 | 89 | @Service |
| 92 | 90 | public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInfo, Long> |
| ... | ... | @@ -3346,6 +3344,8 @@ public class ScheduleRealInfoServiceImpl extends BaseServiceImpl<ScheduleRealInf |
| 3346 | 3344 | if("major".equals(bcType)){ |
| 3347 | 3345 | sch.setMajorStationName(majorStationName); |
| 3348 | 3346 | } |
| 3347 | + | |
| 3348 | + dayOfSchedule.save(sch); | |
| 3349 | 3349 | } |
| 3350 | 3350 | } catch (Exception e) { |
| 3351 | 3351 | logger.error("", e); | ... | ... |
src/main/java/com/bsth/service/report/ReportService.java
src/main/java/com/bsth/service/report/impl/ReportServiceImpl.java
| ... | ... | @@ -3343,6 +3343,121 @@ public class ReportServiceImpl implements ReportService{ |
| 3343 | 3343 | map.put("djgxx", mapList); |
| 3344 | 3344 | return map; |
| 3345 | 3345 | } |
| 3346 | + | |
| 3347 | + | |
| 3348 | + @Override | |
| 3349 | + public Map<String, Object> online(Map<String, Object> map) { | |
| 3350 | + String line =map.get("line").toString(); | |
| 3351 | + String date =map.get("date").toString(); | |
| 3352 | + String type =map.get("type").toString(); | |
| 3353 | + DecimalFormat df = new DecimalFormat("#0.00"); | |
| 3354 | + String sql="select cl_zbh from bsth_c_s_sp_info_real where " | |
| 3355 | + + " schedule_date_str ='"+date+"' and xl_bm='"+line+"' group by cl_zbh"; | |
| 3356 | + List<String> list= jdbcTemplate.query(sql, | |
| 3357 | + new RowMapper<String>(){ | |
| 3358 | + @Override | |
| 3359 | + public String mapRow(ResultSet rs, int rowNum) throws SQLException { | |
| 3360 | + String clzbh=rs.getString("cl_zbh"); | |
| 3361 | + return clzbh; | |
| 3362 | + } | |
| 3363 | + }); | |
| 3364 | + List<Line> lineList=lineRepository.findLineByCode(line); | |
| 3365 | + int qzpcs =0; | |
| 3366 | + for (int i = 0; i < lineList.size(); i++) { | |
| 3367 | + Line l=lineList.get(i); | |
| 3368 | + qzpcs = l.getWarrantCar()==null?0:l.getWarrantCar(); | |
| 3369 | + } | |
| 3370 | + | |
| 3371 | + SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); | |
| 3372 | + SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); | |
| 3373 | + int zxcl=0; | |
| 3374 | + try { | |
| 3375 | + Long date1 = simpleDateFormat.parse(date+" 00:00:01").getTime(); | |
| 3376 | + Long date2=simpleDateFormat.parse(date+" 23:59:59").getTime(); | |
| 3377 | + Date dates=simpleDateFormat.parse(date+" 00:00:00"); | |
| 3378 | + List<ArrivalInfo> lists=load_online(line,date1,date2,dates); | |
| 3379 | + for (int i = 0; i < list.size(); i++) { | |
| 3380 | + String nbbm=list.get(i); | |
| 3381 | + String sbbb=BasicData.deviceId2NbbmMap.inverse().get(nbbm); | |
| 3382 | + for (int j = 0; j < lists.size(); j++) { | |
| 3383 | + ArrivalInfo a=lists.get(i); | |
| 3384 | + if(a.getDeviceId().equals(sbbb)){ | |
| 3385 | + zxcl ++; | |
| 3386 | + break; | |
| 3387 | + } | |
| 3388 | + } | |
| 3389 | + | |
| 3390 | + } | |
| 3391 | + } catch (ParseException e) { | |
| 3392 | + // TODO Auto-generated catch block | |
| 3393 | + e.printStackTrace(); | |
| 3394 | + } | |
| 3395 | + map.put("xlName", BasicData.lineCode2NameMap.get(line)); | |
| 3396 | + map.put("qzpcs", qzpcs); | |
| 3397 | + map.put("ccs", list.size()); | |
| 3398 | + map.put("zxcl", zxcl); | |
| 3399 | + String zxl="0"; | |
| 3400 | + if(list.size()>0){ | |
| 3401 | + zxl = df.format(zxcl/list.size()); | |
| 3402 | + } | |
| 3403 | + map.put("zxl", zxl+"%"); | |
| 3404 | + | |
| 3405 | + if(type.equals("export")){ | |
| 3406 | + List<Map<String, Object>> lMap=new ArrayList<Map<String,Object>>(); | |
| 3407 | + | |
| 3408 | + List<Iterator<?>> listI = new ArrayList<Iterator<?>>(); | |
| 3409 | + Map<String, Object> m = new HashMap<String, Object>(); | |
| 3410 | + m.put("date", date); | |
| 3411 | + m.put("xlName", BasicData.lineCode2NameMap.get(line)); | |
| 3412 | + m.put("qzpcs", qzpcs); | |
| 3413 | + m.put("ccs", list.size()); | |
| 3414 | + m.put("zxcl", zxcl); | |
| 3415 | + m.put("zxl", zxl+"%"); | |
| 3416 | + lMap.add(m); | |
| 3417 | + ReportUtils ee = new ReportUtils(); | |
| 3418 | + try { | |
| 3419 | + listI.add(lMap.iterator()); | |
| 3420 | + String path = this.getClass().getResource("/").getPath() + "static/pages/forms/"; | |
| 3421 | + ee.excelReplace(listI, new Object[]{m}, path + "mould/onlinelist.xls", | |
| 3422 | + path + "export/车辆在线率统计.xls"); | |
| 3423 | + } catch (Exception e) { | |
| 3424 | + // TODO: handle exception | |
| 3425 | + e.printStackTrace(); | |
| 3426 | + } | |
| 3427 | + } | |
| 3428 | + return map; | |
| 3429 | + } | |
| 3430 | + | |
| 3431 | + public List<ArrivalInfo> load_online(String line,Long date1,Long date2,Date dates){ | |
| 3432 | + List<ArrivalInfo> list = null; | |
| 3433 | + Calendar cal = Calendar.getInstance(); | |
| 3434 | + cal.setTime(dates); | |
| 3435 | + //周数,表分区字段 | |
| 3436 | + int weeks_year = cal.get(Calendar.WEEK_OF_YEAR); | |
| 3437 | + | |
| 3438 | + Connection conn = null; | |
| 3439 | + PreparedStatement ps = null; | |
| 3440 | + ResultSet rs = null; | |
| 3441 | + | |
| 3442 | + String sql = "select * from bsth_c_arrival_info where line_id=? AND weeks_year=? AND ts > ? AND ts <=? order by ts"; | |
| 3443 | + try{ | |
| 3444 | + conn = DBUtils_MS.getConnection(); | |
| 3445 | + ps = conn.prepareStatement(sql); | |
| 3446 | + ps.setString(1,line); | |
| 3447 | + ps.setInt(2, weeks_year); | |
| 3448 | + ps.setLong(3, date1); | |
| 3449 | + ps.setLong(4, date2); | |
| 3450 | + rs = ps.executeQuery(); | |
| 3451 | + | |
| 3452 | + list = resultSet2Set(rs); | |
| 3453 | + }catch(Exception e){ | |
| 3454 | + logger.error("", e); | |
| 3455 | + }finally { | |
| 3456 | + DBUtils_MS.close(rs, ps, conn); | |
| 3457 | + } | |
| 3458 | + return list; | |
| 3459 | + } | |
| 3460 | + | |
| 3346 | 3461 | |
| 3347 | 3462 | } |
| 3348 | 3463 | ... | ... |
src/main/resources/logback.xml
| ... | ... | @@ -250,6 +250,29 @@ |
| 250 | 250 | <!--<appender-ref ref="STDOUT" />--> |
| 251 | 251 | <!--</logger>--> |
| 252 | 252 | |
| 253 | + <!-- 实际排班数据库更新日志 --> | |
| 254 | + <!-- 消息队列纪录 --> | |
| 255 | + <appender name="REAL_SCHEDULE_UPDATE" | |
| 256 | + class="ch.qos.logback.core.rolling.RollingFileAppender"> | |
| 257 | + <file>${LOG_BASE}/real_sch_db/update.log</file> | |
| 258 | + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> | |
| 259 | + <fileNamePattern>${LOG_BASE}/real_sch_db/update-%d{yyyy-MM-dd}.%i.log</fileNamePattern> | |
| 260 | + <timeBasedFileNamingAndTriggeringPolicy | |
| 261 | + class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> | |
| 262 | + <maxFileSize>100MB</maxFileSize> | |
| 263 | + </timeBasedFileNamingAndTriggeringPolicy> | |
| 264 | + </rollingPolicy> | |
| 265 | + | |
| 266 | + <layout class="ch.qos.logback.classic.PatternLayout"> | |
| 267 | + <pattern>%d{MM-dd HH:mm:ss.SSS} %-5level -%msg%n | |
| 268 | + </pattern> | |
| 269 | + </layout> | |
| 270 | + </appender> | |
| 271 | + <logger name="com.bsth.data.schedule.thread.SchedulePstThread" | |
| 272 | + level="INFO" additivity="false"> | |
| 273 | + <appender-ref ref="REAL_SCHEDULE_UPDATE" /> | |
| 274 | + </logger> | |
| 275 | + | |
| 253 | 276 | <!--JdbcTemplate的日志输出器 --> |
| 254 | 277 | <logger name="org.springframework.jdbc.core.StatementCreatorUtils" |
| 255 | 278 | additivity="false" level="INFO"> | ... | ... |
src/main/resources/static/pages/forms/mould/onlinelist.xls
0 → 100644
No preview for this file type
src/main/resources/static/pages/mforms/online/online.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 | + text-align: center;} | |
| 15 | + | |
| 16 | + .table > tbody + tbody { | |
| 17 | + border-top: 1px solid; } | |
| 18 | + .table>tbody>tr>td, .table>tbody>tr>th, .table>tfoot>tr>td, .table>tfoot>tr>th, .table>thead>tr>td, .table>thead>tr>th{ text-align: center; } | |
| 19 | +.table-checkable tr > th:first-child, .table-checkable tr > td:first-child { | |
| 20 | + text-align: center; | |
| 21 | + max-width: initial; | |
| 22 | + min-width: 40px; | |
| 23 | + padding-left: 0; | |
| 24 | + padding-right: 0; | |
| 25 | +} | |
| 26 | + | |
| 27 | +</style> | |
| 28 | + | |
| 29 | +<div class="page-head"> | |
| 30 | + <div class="page-title"> | |
| 31 | + <h1>车辆在线率统计表</h1> | |
| 32 | + </div> | |
| 33 | +</div> | |
| 34 | + | |
| 35 | +<div class="row"> | |
| 36 | + <div class="col-md-12"> | |
| 37 | + <div class="portlet light porttlet-fit bordered"> | |
| 38 | + <div class="portlet-title"> | |
| 39 | + <form class="form-inline" action="" method="post"> | |
| 40 | + <div style="display: inline-block; margin-left: 20px;" id="gsdmDiv_turn"> | |
| 41 | + <span class="item-label" style="width: 80px;">公司: </span> | |
| 42 | + <select class="form-control" name="company" id="gsdmTurn" style="width: 140px;"></select> | |
| 43 | + </div> | |
| 44 | + <div style="display: inline-block; margin-left: 20px;" id="fgsdmDiv_turn"> | |
| 45 | + <span class="item-label" style="width: 80px;">分公司: </span> | |
| 46 | + <select class="form-control" name="subCompany" id="fgsdmTurn" style="width: 140px;"></select> | |
| 47 | + </div> | |
| 48 | + <div style="display: inline-block; margin-left: 15px;"> | |
| 49 | + <span class="item-label" style="width: 80px;">线路: </span> | |
| 50 | + <select class="form-control" name="line" id="line" style="width: 120px;"></select> | |
| 51 | + </div> | |
| 52 | + <div style="display: inline-block;margin-left: 15px;"> | |
| 53 | + <span class="item-label" style="width: 80px;">日期: </span> | |
| 54 | + <input class="form-control" type="text" id="date" style="width: 120px;"/> | |
| 55 | + </div> | |
| 56 | + | |
| 57 | + <div class="form-group"> | |
| 58 | + <input class="btn btn-default" type="button" id="query" value="筛选"/> | |
| 59 | + <input class="btn btn-default" type="button" id="export" value="导出"/> | |
| 60 | + </div> | |
| 61 | + </form> | |
| 62 | + </div> | |
| 63 | + <div class="portlet-body"> | |
| 64 | + <div class="table-container" style="margin-top: 20px;overflow:auto;min-width: 1000px"> | |
| 65 | + <table class="table table-bordered table-hover table-checkable" id="forms1"> | |
| 66 | + <thead> | |
| 67 | + <tr> | |
| 68 | + <th colspan="6">车辆在线率统计表</th> | |
| 69 | + </tr> | |
| 70 | + <tr> | |
| 71 | + <td>日期</td> | |
| 72 | + <td>线路</td> | |
| 73 | + <td>权证配车数</td> | |
| 74 | + <td>实际出车数</td> | |
| 75 | + <td>在线车辆数</td> | |
| 76 | + <td>在线率</td> | |
| 77 | + </tr> | |
| 78 | + </thead> | |
| 79 | + <tbody id="tbody"> | |
| 80 | + | |
| 81 | + </tbody> | |
| 82 | + </table> | |
| 83 | + </div> | |
| 84 | + </div> | |
| 85 | + </div> | |
| 86 | + </div> | |
| 87 | +</div> | |
| 88 | + | |
| 89 | +<script> | |
| 90 | + $(function(){ | |
| 91 | + // 关闭左侧栏 | |
| 92 | + if (!$('body').hasClass('page-sidebar-closed')) | |
| 93 | + $('.menu-toggler.sidebar-toggler').click(); | |
| 94 | + | |
| 95 | + $("#date").datetimepicker({ | |
| 96 | + format : 'YYYY-MM-DD', | |
| 97 | + locale : 'zh-cn' | |
| 98 | + }); | |
| 99 | + | |
| 100 | + var d = new Date(); | |
| 101 | + var year = d.getFullYear(); | |
| 102 | + var month = d.getMonth() + 1; | |
| 103 | + var day = d.getDate(); | |
| 104 | + if(month < 10) | |
| 105 | + month = "0" + month; | |
| 106 | + if(day < 10) | |
| 107 | + day = "0" + day; | |
| 108 | + $("#date").val(year + "-" + month + "-" + day); | |
| 109 | + | |
| 110 | + var fage=false; | |
| 111 | + var xlList; | |
| 112 | + var obj = []; | |
| 113 | + | |
| 114 | + $.get('/report/lineList',function(result){ | |
| 115 | + xlList=result; | |
| 116 | + $.get('/user/companyData', function(result){ | |
| 117 | + obj = result; | |
| 118 | + var options = ''; | |
| 119 | + for(var i = 0; i < obj.length; i++){ | |
| 120 | + options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>'; | |
| 121 | + } | |
| 122 | + | |
| 123 | + if(obj.length ==0){ | |
| 124 | + $("#gsdmDiv_turn").css('display','none'); | |
| 125 | + }else if(obj.length ==1){ | |
| 126 | + $("#gsdmDiv_turn").css('display','none'); | |
| 127 | + if(obj[0].children.length == 1 || obj[0].children.length ==0) | |
| 128 | + $('#fgsdmDiv_turn').css('display','none'); | |
| 129 | + } | |
| 130 | + $('#gsdmTurn').html(options); | |
| 131 | + updateCompany(); | |
| 132 | + }); | |
| 133 | + }) | |
| 134 | + $("#gsdmTurn").on("change",updateCompany); | |
| 135 | + function updateCompany(){ | |
| 136 | + var company = $('#gsdmTurn').val(); | |
| 137 | + var options = ''; | |
| 138 | + for(var i = 0; i < obj.length; i++){ | |
| 139 | + if(obj[i].companyCode == company){ | |
| 140 | + var children = obj[i].children; | |
| 141 | + for(var j = 0; j < children.length; j++){ | |
| 142 | + options += '<option value="'+children[j].code+'">'+children[j].name+'</option>'; | |
| 143 | + } | |
| 144 | + } | |
| 145 | + } | |
| 146 | + $('#fgsdmTurn').html(options); | |
| 147 | + } | |
| 148 | + | |
| 149 | + var tempData = {}; | |
| 150 | + $.get('/report/lineList',function(xlList){ | |
| 151 | + var data = []; | |
| 152 | +// data.push({id: " ", text: "全部线路"}); | |
| 153 | + $.get('/user/companyData', function(result){ | |
| 154 | + for(var i = 0; i < result.length; i++){ | |
| 155 | + var companyCode = result[i].companyCode; | |
| 156 | + var children = result[i].children; | |
| 157 | + for(var j = 0; j < children.length; j++){ | |
| 158 | + var code = children[j].code; | |
| 159 | + for(var k=0;k < xlList.length;k++ ){ | |
| 160 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 161 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 162 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 163 | + } | |
| 164 | + } | |
| 165 | + } | |
| 166 | + } | |
| 167 | + initPinYinSelect2('#line',data,''); | |
| 168 | + | |
| 169 | + }); | |
| 170 | + }); | |
| 171 | + | |
| 172 | + $("#line").on("change", function(){ | |
| 173 | + if($("#line").val() == " "){ | |
| 174 | + $("#gsdmTurn").attr("disabled", false); | |
| 175 | + $("#fgsdmTurn").attr("disabled", false); | |
| 176 | + } else { | |
| 177 | + var temp = tempData[$("#line").val()].split(":"); | |
| 178 | + $("#gsdmTurn").val(temp[0]); | |
| 179 | + updateCompany(); | |
| 180 | + $("#fgsdmTurn").val(temp[1]); | |
| 181 | + $("#gsdmTurn").attr("disabled", true); | |
| 182 | + $("#fgsdmTurn").attr("disabled", true); | |
| 183 | + } | |
| 184 | + }); | |
| 185 | + | |
| 186 | + var line; | |
| 187 | + var date; | |
| 188 | + $("#query").on("click",function(){ | |
| 189 | + line = $("#line").val(); | |
| 190 | + date=$("#date").val(); | |
| 191 | + if(date!=''){ | |
| 192 | + $get('/report/online', | |
| 193 | + { line:line,date:date,type:'query'},function(result){ | |
| 194 | + // 把数据填充到模版中 | |
| 195 | + var tbodyHtml = template('online',result); | |
| 196 | + // 把渲染好的模版html文本追加到表格中 | |
| 197 | + $('#tbody').html(tbodyHtml); | |
| 198 | + }); | |
| 199 | + | |
| 200 | + }else{ | |
| 201 | + layer.msg("请选择时间!"); | |
| 202 | + } | |
| 203 | + }); | |
| 204 | + | |
| 205 | + $("#export").on("click",function(){ | |
| 206 | + line = $("#line").val(); | |
| 207 | + date=$("#date").val(); | |
| 208 | + $get('/report/online',{line:line,date:date,type:'export'},function(result){ | |
| 209 | + window.open("/downloadFile/download?fileName=车辆在线率统计"); | |
| 210 | + }); | |
| 211 | + }); | |
| 212 | + }); | |
| 213 | +</script> | |
| 214 | +<script type="text/html" id="online"> | |
| 215 | + <tr> | |
| 216 | + <td>{{date}}</td> | |
| 217 | + <td>{{xlName}}</td> | |
| 218 | + <td>{{qzpcs}}</td> | |
| 219 | + <td>{{ccs}}</td> | |
| 220 | + <td>{{zxcl}}</td> | |
| 221 | + <td>{{zxl}}</td> | |
| 222 | + </tr> | |
| 223 | +</script> | ... | ... |
src/main/resources/static/pages/oil/history/history.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 | + | |
| 15 | + .table > tbody + tbody { | |
| 16 | + border-top: 1px solid; } | |
| 17 | +</style> | |
| 18 | + | |
| 19 | +<div class="page-head"> | |
| 20 | + <div class="page-title"> | |
| 21 | + <h1>重新统计</h1> | |
| 22 | + </div> | |
| 23 | +</div> | |
| 24 | + | |
| 25 | +<div class="row"> | |
| 26 | + <div class="col-md-12"> | |
| 27 | + <div class="portlet light porttlet-fit bordered"> | |
| 28 | + <div class="portlet-title"> | |
| 29 | + <form class="form-inline" action=""> | |
| 30 | + <div style="display: inline-block; margin-left: 33px;" id="gsdmDiv_daily"> | |
| 31 | + <span class="item-label" style="width: 80px;">公司: </span> | |
| 32 | + <select class="form-control" name="company" id="gsdmDaily" style="width: 180px;"></select> | |
| 33 | + </div> | |
| 34 | + <div style="display: inline-block; margin-left: 24px;" id="fgsdmDiv_daily"> | |
| 35 | + <span class="item-label" style="width: 80px;">分公司: </span> | |
| 36 | + <select class="form-control" name="subCompany" id="fgsdmDaily" style="width: 180px;"></select> | |
| 37 | + </div> | |
| 38 | + <div style="margin-top: 2px"></div> | |
| 39 | + <div style="display: inline-block;margin-left: 33px;"> | |
| 40 | + <span class="item-label" style="width: 80px;">线路: </span> | |
| 41 | + <select class="form-control" name="line" id="line" style="width: 180px;"></select> | |
| 42 | + </div> | |
| 43 | + <div style="display: inline-block;margin-left: 24px;"> | |
| 44 | + <span class="item-label" style="width: 80px;"> 时间: </span> | |
| 45 | + <select class="form-control" id="date" style="width: 180px;"> | |
| 46 | + <option value="2017-11-07">2017-11-07</option> | |
| 47 | + </select> | |
| 48 | + </div> | |
| 49 | + <div class="form-group"> | |
| 50 | + <input class="btn btn-default" type="button" id="query" value="重新统计"/> | |
| 51 | + </div> | |
| 52 | + </form> | |
| 53 | + </div> | |
| 54 | + </div> | |
| 55 | + </div> | |
| 56 | +</div> | |
| 57 | + | |
| 58 | +<script> | |
| 59 | + $(function(){ | |
| 60 | + | |
| 61 | + // 关闭左侧栏 | |
| 62 | + if (!$('body').hasClass('page-sidebar-closed')) | |
| 63 | + $('.menu-toggler.sidebar-toggler').click(); | |
| 64 | + | |
| 65 | + function GetDateStr(AddDayCount) { | |
| 66 | + var dd = new Date(); | |
| 67 | + dd.setDate(dd.getDate()+AddDayCount);//获取AddDayCount天后的日期 | |
| 68 | + var y = dd.getFullYear(); | |
| 69 | + var m = dd.getMonth()+1;//获取当前月份的日期 | |
| 70 | + if(m<10){ | |
| 71 | + m="0" + m; | |
| 72 | + } | |
| 73 | + | |
| 74 | + var d = dd.getDate(); | |
| 75 | + if(d<10){ | |
| 76 | + d="0" +d; | |
| 77 | + } | |
| 78 | + return y+"-"+m+"-"+d; | |
| 79 | + } | |
| 80 | +// var optionsDate = ''; | |
| 81 | +// for(var i = -1; i > -4; i--){ | |
| 82 | +// optionsDate += '<option value="2017-11-01">'+2017-11-01+'</option>'; | |
| 83 | +// } | |
| 84 | +// $('#date').html(optionsDate); | |
| 85 | + var fage=false; | |
| 86 | + var xlList; | |
| 87 | + var obj = []; | |
| 88 | + | |
| 89 | + | |
| 90 | + $.get('/report/lineList',function(result){ | |
| 91 | + xlList=result; | |
| 92 | + $.get('/user/companyData', function(result){ | |
| 93 | + obj = result; | |
| 94 | + var options = ''; | |
| 95 | + for(var i = 0; i < obj.length; i++){ | |
| 96 | + options += '<option value="'+obj[i].companyCode+'">'+obj[i].companyName+'</option>'; | |
| 97 | + } | |
| 98 | + | |
| 99 | + if(obj.length ==0){ | |
| 100 | + $("#gsdmDiv_daily").css('display','none'); | |
| 101 | + }else if(obj.length ==1){ | |
| 102 | + $("#gsdmDiv_daily").css('display','none'); | |
| 103 | + if(obj[0].children.length == 1 || obj[0].children.length ==0) | |
| 104 | + $('#fgsdmDiv_daily').css('display','none'); | |
| 105 | + } | |
| 106 | + $('#gsdmDaily').html(options); | |
| 107 | + updateCompany(); | |
| 108 | + }); | |
| 109 | + }) | |
| 110 | + $("#gsdmDaily").on("change",updateCompany); | |
| 111 | + function updateCompany(){ | |
| 112 | + var company = $('#gsdmDaily').val(); | |
| 113 | + var options = ''; | |
| 114 | + for(var i = 0; i < obj.length; i++){ | |
| 115 | + if(obj[i].companyCode == company){ | |
| 116 | + var children = obj[i].children; | |
| 117 | + for(var j = 0; j < children.length; j++){ | |
| 118 | + options += '<option value="'+children[j].code+'">'+children[j].name+'</option>'; | |
| 119 | + } | |
| 120 | + } | |
| 121 | + } | |
| 122 | + $('#fgsdmDaily').html(options); | |
| 123 | +// initXl(); | |
| 124 | + } | |
| 125 | + | |
| 126 | + | |
| 127 | + var tempData = {}; | |
| 128 | + $.get('/report/lineList',function(xlList){ | |
| 129 | + var data = []; | |
| 130 | +// data.push({id: " ", text: "全部线路"}); | |
| 131 | + $.get('/user/companyData', function(result){ | |
| 132 | + for(var i = 0; i < result.length; i++){ | |
| 133 | + var companyCode = result[i].companyCode; | |
| 134 | + var children = result[i].children; | |
| 135 | + for(var j = 0; j < children.length; j++){ | |
| 136 | + var code = children[j].code; | |
| 137 | + for(var k=0;k < xlList.length;k++ ){ | |
| 138 | + if(xlList[k]["fgsbm"]==code && xlList[k]["gsbm"]==companyCode){ | |
| 139 | + data.push({id: xlList[k]["xlbm"], text: xlList[k]["xlname"]}); | |
| 140 | + tempData[xlList[k]["xlbm"]] = companyCode+":"+code; | |
| 141 | + } | |
| 142 | + } | |
| 143 | + } | |
| 144 | + } | |
| 145 | + initPinYinSelect2('#line',data,''); | |
| 146 | + | |
| 147 | + }); | |
| 148 | + }); | |
| 149 | + | |
| 150 | + $("#line").on("change", function(){ | |
| 151 | + if($("#line").val() == " "){ | |
| 152 | + $("#gsdmDaily").attr("disabled", false); | |
| 153 | + $("#fgsdmDaily").attr("disabled", false); | |
| 154 | + } else { | |
| 155 | + var temp = tempData[$("#line").val()].split(":"); | |
| 156 | + $("#gsdmDaily").val(temp[0]); | |
| 157 | + updateCompany(); | |
| 158 | + $("#fgsdmDaily").val(temp[1]); | |
| 159 | + $("#gsdmDaily").attr("disabled", true); | |
| 160 | + $("#fgsdmDaily").attr("disabled", true); | |
| 161 | + } | |
| 162 | + }); | |
| 163 | + | |
| 164 | + | |
| 165 | + var line; | |
| 166 | + var date; | |
| 167 | + var gsdmDaily; | |
| 168 | + var fgsdmDaily; | |
| 169 | + $("#query").on("click",function(){ | |
| 170 | + if($("#date").val() == null || $("#date").val().trim().length == 0){ | |
| 171 | + layer.msg("请选择时间"); | |
| 172 | + return; | |
| 173 | + } | |
| 174 | + line = $("#line").val(); | |
| 175 | + date = $("#date").val(); | |
| 176 | + gsdmDaily=$("#gsdmDaily").val(); | |
| 177 | + fgsdmDaily = $("#fgsdmDaily").val(); | |
| 178 | + $post('/ylb/updateHistory', {date:date,line:line,gsdm:gsdmDaily,fgsdm:fgsdmDaily}, | |
| 179 | + function (result) { | |
| 180 | + layer.msg("重新统计成功"); | |
| 181 | + }); | |
| 182 | + }); | |
| 183 | + | |
| 184 | +}); | |
| 185 | +</script> | ... | ... |
src/main/resources/static/pages/oil/list_ph.html
| ... | ... | @@ -59,10 +59,10 @@ |
| 59 | 59 | id="export"> <i class="fa fa-file-excel-o"></i> 导出Excel |
| 60 | 60 | </a></li> |
| 61 | 61 | |
| 62 | -<!-- <li class="divider"></li> --> | |
| 63 | -<!-- <li><a href="javascript:;" data-action="3" class="tool-action" --> | |
| 64 | -<!-- id="cxtj"> <i class="fa fa-file-excel-o"></i> 导出Excel --> | |
| 65 | -<!-- </a></li> --> | |
| 62 | + <li class="divider"></li> | |
| 63 | + <li><a href="javascript:;" data-action="3" class="tool-action" | |
| 64 | + id="cxtj"> <i class="fa fa-file-excel-o"></i> 重新统计 | |
| 65 | + </a></li> | |
| 66 | 66 | </ul> |
| 67 | 67 | </div> |
| 68 | 68 | </div> |
| ... | ... | @@ -972,16 +972,16 @@ onkeyup="this.value=this.value.replace(/[^(\d||/.)]/g,'').replace('.','$#$').rep |
| 972 | 972 | } |
| 973 | 973 | // } |
| 974 | 974 | |
| 975 | -// $("#cxtj").on("click", function () { | |
| 976 | -// if ($("#rq").val() != "") { | |
| 977 | -// // var params=getParamsList(); | |
| 978 | -// $post('/ylb/updateHistory', {date:'2017-10-01',line:'10845',gsdm:'55',fgsdm:'3'}, function (result) { | |
| 979 | -// window.open("/downloadFile/download?fileName="+$("#rq").val()+"进出场存油量" ); | |
| 980 | -// }); | |
| 981 | -// } else { | |
| 982 | -// layer.msg('请选择日期.'); | |
| 983 | -// } | |
| 984 | -// }); | |
| 975 | + $("#cxtj").on("click", function () { | |
| 976 | + if ($("#rq").val() != "") { | |
| 977 | +// var params=getParamsList(); | |
| 978 | + $post('/ylb/updateHistory', {date:'2017-11-07',line:'10708',gsdm:'26',fgsdm:'1'}, function (result) { | |
| 979 | + window.open("/downloadFile/download?fileName="+$("#rq").val()+"进出场存油量" ); | |
| 980 | + }); | |
| 981 | + } else { | |
| 982 | + layer.msg('请选择日期.'); | |
| 983 | + } | |
| 984 | + }); | |
| 985 | 985 | |
| 986 | 986 | //导出 |
| 987 | 987 | ... | ... |
src/main/resources/static/real_control_v2/fragments/north/nav/history_sch_maintain.html
| ... | ... | @@ -37,6 +37,8 @@ |
| 37 | 37 | </div> |
| 38 | 38 | <button class="uk-button">检索</button> |
| 39 | 39 | <a class="add_lp_link" ><i class="uk-icon-plus"></i> 临加路牌</a> |
| 40 | + <button id="reCountBtn" class="uk-button uk-button-danger uk-button-mini" style="position: absolute;right: 12px;bottom: 14px;"> | |
| 41 | + 重新统计</button> | |
| 40 | 42 | </fieldset> |
| 41 | 43 | </form> |
| 42 | 44 | </div> |
| ... | ... | @@ -414,6 +416,39 @@ |
| 414 | 416 | |
| 415 | 417 | return true; |
| 416 | 418 | } |
| 419 | + | |
| 420 | + /** | |
| 421 | + * 重新统计 | |
| 422 | + */ | |
| 423 | + $('#reCountBtn', modal).on('click', function () { | |
| 424 | + $(this).attr('disabled', 'disabled'); | |
| 425 | + $(this).prepend('<i class="uk-icon-spinner uk-icon-spin"></i>'); | |
| 426 | + | |
| 427 | + var rq = $('.h-s-time li.uk-active', modal).text(), | |
| 428 | + lineName = $('.h-s-line li.uk-active', modal).text(), | |
| 429 | + lineCode = $('.h-s-line li.uk-active', modal).data('id'); | |
| 430 | + | |
| 431 | + var that = this; | |
| 432 | + alt_confirm('确定要重新统计 ' + lineName + '('+rq+')的数据吗?',function () { | |
| 433 | + | |
| 434 | + var reCountEp = EventProxy.create('calcWaybill', 'ylbUpdate', function () { | |
| 435 | + $('i.uk-icon-spin', that).remove(); | |
| 436 | + $(this).removeAttr('disabled'); | |
| 437 | + notify_succ('重新统计成功!'); | |
| 438 | + }); | |
| 439 | + | |
| 440 | + //统计路单 -娄高峰 | |
| 441 | + gb_common.$get('/calcWaybill/generateNew', {date:rq, line: lineCode}, function () { | |
| 442 | + reCountEp.emitLater('calcWaybill'); | |
| 443 | + }); | |
| 444 | + | |
| 445 | + //统计油 -廖磊 | |
| 446 | + gb_common.$post('/ylb/updateHistory', {date:rq, line: lineCode}, function () { | |
| 447 | + reCountEp.emitLater('ylbUpdate'); | |
| 448 | + }); | |
| 449 | + | |
| 450 | + }, '我确定'); | |
| 451 | + }); | |
| 417 | 452 | })(); |
| 418 | 453 | </script> |
| 419 | 454 | </div> |
| 420 | 455 | \ No newline at end of file | ... | ... |
src/main/resources/static/real_control_v2/js/forms/wrap.html
| ... | ... | @@ -100,9 +100,13 @@ |
| 100 | 100 | //ed=d.format(f), |
| 101 | 101 | //sd=d.subtract(3, 'days').format(f); |
| 102 | 102 | |
| 103 | - $('#date', '.form-page-content').data('DateTimePicker') | |
| 104 | - .defaultDate(d.format(f)); | |
| 105 | - //.maxDate(ed).minDate(sd); | |
| 103 | + try{ | |
| 104 | + $('#date', '.form-page-content').data('DateTimePicker') | |
| 105 | + .defaultDate(d.format(f)); | |
| 106 | + //.maxDate(ed).minDate(sd); | |
| 107 | + }catch (e){ | |
| 108 | + console.log(e); | |
| 109 | + } | |
| 106 | 110 | |
| 107 | 111 | if($("#ddrbBody").length > 0){ |
| 108 | 112 | $("#ddrbBody").height("620px"); | ... | ... |