Commit 59abf235505580cd0a36f315c9a3c8703a92d375
1 parent
22c4d88d
Update
Showing
11 changed files
with
355 additions
and
9 deletions
src/main/java/com/bsth/controller/schedule/core/TTInfoController.java
| @@ -6,10 +6,7 @@ import com.bsth.entity.schedule.TTInfo; | @@ -6,10 +6,7 @@ import com.bsth.entity.schedule.TTInfo; | ||
| 6 | import com.bsth.service.schedule.TTInfoService; | 6 | import com.bsth.service.schedule.TTInfoService; |
| 7 | import com.bsth.service.schedule.exception.ScheduleException; | 7 | import com.bsth.service.schedule.exception.ScheduleException; |
| 8 | import org.springframework.beans.factory.annotation.Autowired; | 8 | import org.springframework.beans.factory.annotation.Autowired; |
| 9 | -import org.springframework.web.bind.annotation.RequestMapping; | ||
| 10 | -import org.springframework.web.bind.annotation.RequestMethod; | ||
| 11 | -import org.springframework.web.bind.annotation.RequestParam; | ||
| 12 | -import org.springframework.web.bind.annotation.RestController; | 9 | +import org.springframework.web.bind.annotation.*; |
| 13 | 10 | ||
| 14 | import java.util.HashMap; | 11 | import java.util.HashMap; |
| 15 | import java.util.Map; | 12 | import java.util.Map; |
| @@ -87,4 +84,18 @@ public class TTInfoController extends BController<TTInfo, Long> { | @@ -87,4 +84,18 @@ public class TTInfoController extends BController<TTInfo, Long> { | ||
| 87 | return rtn; | 84 | return rtn; |
| 88 | } | 85 | } |
| 89 | 86 | ||
| 87 | + @RequestMapping(value = "/backup/{ttinfo}", method = RequestMethod.GET) | ||
| 88 | + public Map<String, Object> backup(@PathVariable(value = "ttinfo") Long ttInfoId) { | ||
| 89 | + Map<String, Object> rtn = new HashMap<>(); | ||
| 90 | + try { | ||
| 91 | + // 备份时刻表 | ||
| 92 | + this.ttInfoService.backUp(ttInfoId); | ||
| 93 | + } catch (ScheduleException exp) { | ||
| 94 | + rtn.put("status", ResponseCode.ERROR); | ||
| 95 | + rtn.put("msg", exp.getMessage()); | ||
| 96 | + } | ||
| 97 | + | ||
| 98 | + return rtn; | ||
| 99 | + } | ||
| 100 | + | ||
| 90 | } | 101 | } |
| 91 | \ No newline at end of file | 102 | \ No newline at end of file |
src/main/java/com/bsth/entity/schedule/TTInfo.java
| 1 | package com.bsth.entity.schedule; | 1 | package com.bsth.entity.schedule; |
| 2 | 2 | ||
| 3 | import com.bsth.entity.Line; | 3 | import com.bsth.entity.Line; |
| 4 | +import com.bsth.service.schedule.utils.TimeTableProto; | ||
| 4 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | 5 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
| 5 | 6 | ||
| 6 | import javax.persistence.*; | 7 | import javax.persistence.*; |
| @@ -63,6 +64,9 @@ public class TTInfo extends BEntity { | @@ -63,6 +64,9 @@ public class TTInfo extends BEntity { | ||
| 63 | /** 特殊有效日期(格式:2001-01-01,多个用逗号隔开) */ | 64 | /** 特殊有效日期(格式:2001-01-01,多个用逗号隔开) */ |
| 64 | private String special_days; | 65 | private String special_days; |
| 65 | 66 | ||
| 67 | + /** 最近备份日期 */ | ||
| 68 | + private Date lastBackUpDate; | ||
| 69 | + | ||
| 66 | public TTInfo() {} | 70 | public TTInfo() {} |
| 67 | public TTInfo(Object id, Object xlid, Object name, Object nds, Object sds) { | 71 | public TTInfo(Object id, Object xlid, Object name, Object nds, Object sds) { |
| 68 | if (id != null) { | 72 | if (id != null) { |
| @@ -83,6 +87,32 @@ public class TTInfo extends BEntity { | @@ -83,6 +87,32 @@ public class TTInfo extends BEntity { | ||
| 83 | } | 87 | } |
| 84 | } | 88 | } |
| 85 | 89 | ||
| 90 | + /** | ||
| 91 | + * 输出proto生成的builder | ||
| 92 | + * @return | ||
| 93 | + */ | ||
| 94 | + public TimeTableProto.TTInfo.Builder toProtoBuilder() { | ||
| 95 | + // 注意部份空值处理,必须覆默认值,否则报nullexceptio | ||
| 96 | + return TimeTableProto.TTInfo.newBuilder() | ||
| 97 | + .setId(id) | ||
| 98 | + .setName(name) | ||
| 99 | + .setXl(xl.getId()) | ||
| 100 | + .setXlName(xl.getName()) | ||
| 101 | + .setXlDir(xlDir) | ||
| 102 | + .setQyrq(qyrq.getTime()) | ||
| 103 | + .setIsEnableDisTemplate(isEnableDisTemplate) | ||
| 104 | + .setIsCancel(isCancel) | ||
| 105 | + .setRuleDays(rule_days) | ||
| 106 | + .setSpecialDays(special_days) | ||
| 107 | + .setCreateUser(getCreateBy() == null ? 0 : getCreateBy().getId()) | ||
| 108 | + .setCreateUserName(getCreateBy() == null ? "" : getCreateBy().getUserName()) | ||
| 109 | + .setUpdateUser(getUpdateBy() == null ? 0 : getUpdateBy().getId()) | ||
| 110 | + .setUpdateUserName(getUpdateBy() == null ? "" : getUpdateBy().getUserName()) | ||
| 111 | + .setCreateDate(getCreateDate() == null ? 0l : getCreateDate().getTime()) | ||
| 112 | + .setUpdateDate(getUpdateDate() == null ? 0l : getUpdateDate().getTime()); | ||
| 113 | + | ||
| 114 | + } | ||
| 115 | + | ||
| 86 | public Long getId() { | 116 | public Long getId() { |
| 87 | return id; | 117 | return id; |
| 88 | } | 118 | } |
| @@ -178,4 +208,12 @@ public class TTInfo extends BEntity { | @@ -178,4 +208,12 @@ public class TTInfo extends BEntity { | ||
| 178 | public void setIsCancel(Boolean isCancel) { | 208 | public void setIsCancel(Boolean isCancel) { |
| 179 | this.isCancel = isCancel; | 209 | this.isCancel = isCancel; |
| 180 | } | 210 | } |
| 211 | + | ||
| 212 | + public Date getLastBackUpDate() { | ||
| 213 | + return lastBackUpDate; | ||
| 214 | + } | ||
| 215 | + | ||
| 216 | + public void setLastBackUpDate(Date lastBackUpDate) { | ||
| 217 | + this.lastBackUpDate = lastBackUpDate; | ||
| 218 | + } | ||
| 181 | } | 219 | } |
src/main/java/com/bsth/entity/schedule/TTInfoBackup.java
0 → 100644
| 1 | +package com.bsth.entity.schedule; | ||
| 2 | + | ||
| 3 | +import javax.persistence.*; | ||
| 4 | +import java.util.Date; | ||
| 5 | + | ||
| 6 | +/** | ||
| 7 | + * 时刻表信息备份。 | ||
| 8 | + * --不做关联信息,保存相应的关联id | ||
| 9 | + */ | ||
| 10 | +@Entity | ||
| 11 | +@Table(name="bsth_c_s_ttinfo_bak") | ||
| 12 | +public class TTInfoBackup { | ||
| 13 | + | ||
| 14 | + /** 主键Id */ | ||
| 15 | + @Id | ||
| 16 | + @GeneratedValue | ||
| 17 | + private Long id; | ||
| 18 | + | ||
| 19 | + /** 关联 bsth_c_line 主键,不做mapping */ | ||
| 20 | + @Column(nullable = false) | ||
| 21 | + private Integer xl; | ||
| 22 | + /** 线路名称 */ | ||
| 23 | + @Column(nullable = false) | ||
| 24 | + private String xlName; | ||
| 25 | + | ||
| 26 | + /** 关联 bsth_c_s_ttinfo 主键,不做mapping */ | ||
| 27 | + @Column(nullable = false) | ||
| 28 | + private Long ttInfo; | ||
| 29 | + /** 关联的时刻表名字 */ | ||
| 30 | + private String ttInfoName; | ||
| 31 | + | ||
| 32 | + /** 备份日期 */ | ||
| 33 | + @Column(nullable = false) | ||
| 34 | + private Date backUpDate; | ||
| 35 | + /** 备份的二进制内容(google protobuf格式) */ | ||
| 36 | + @Lob | ||
| 37 | + private byte[] backUpInfo; | ||
| 38 | + | ||
| 39 | + public Long getId() { | ||
| 40 | + return id; | ||
| 41 | + } | ||
| 42 | + | ||
| 43 | + public void setId(Long id) { | ||
| 44 | + this.id = id; | ||
| 45 | + } | ||
| 46 | + | ||
| 47 | + public Integer getXl() { | ||
| 48 | + return xl; | ||
| 49 | + } | ||
| 50 | + | ||
| 51 | + public void setXl(Integer xl) { | ||
| 52 | + this.xl = xl; | ||
| 53 | + } | ||
| 54 | + | ||
| 55 | + public String getXlName() { | ||
| 56 | + return xlName; | ||
| 57 | + } | ||
| 58 | + | ||
| 59 | + public void setXlName(String xlName) { | ||
| 60 | + this.xlName = xlName; | ||
| 61 | + } | ||
| 62 | + | ||
| 63 | + public Long getTtInfo() { | ||
| 64 | + return ttInfo; | ||
| 65 | + } | ||
| 66 | + | ||
| 67 | + public void setTtInfo(Long ttInfo) { | ||
| 68 | + this.ttInfo = ttInfo; | ||
| 69 | + } | ||
| 70 | + | ||
| 71 | + public String getTtInfoName() { | ||
| 72 | + return ttInfoName; | ||
| 73 | + } | ||
| 74 | + | ||
| 75 | + public void setTtInfoName(String ttInfoName) { | ||
| 76 | + this.ttInfoName = ttInfoName; | ||
| 77 | + } | ||
| 78 | + | ||
| 79 | + public Date getBackUpDate() { | ||
| 80 | + return backUpDate; | ||
| 81 | + } | ||
| 82 | + | ||
| 83 | + public void setBackUpDate(Date backUpDate) { | ||
| 84 | + this.backUpDate = backUpDate; | ||
| 85 | + } | ||
| 86 | + | ||
| 87 | + public byte[] getBackUpInfo() { | ||
| 88 | + return backUpInfo; | ||
| 89 | + } | ||
| 90 | + | ||
| 91 | + public void setBackUpInfo(byte[] backUpInfo) { | ||
| 92 | + this.backUpInfo = backUpInfo; | ||
| 93 | + } | ||
| 94 | +} |
src/main/java/com/bsth/entity/schedule/TTInfoDetail.java
| @@ -3,6 +3,7 @@ package com.bsth.entity.schedule; | @@ -3,6 +3,7 @@ package com.bsth.entity.schedule; | ||
| 3 | import com.bsth.entity.CarPark; | 3 | import com.bsth.entity.CarPark; |
| 4 | import com.bsth.entity.Line; | 4 | import com.bsth.entity.Line; |
| 5 | import com.bsth.entity.Station; | 5 | import com.bsth.entity.Station; |
| 6 | +import com.bsth.service.schedule.utils.TimeTableProto; | ||
| 6 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; | 7 | import com.fasterxml.jackson.annotation.JsonIgnoreProperties; |
| 7 | 8 | ||
| 8 | import javax.persistence.*; | 9 | import javax.persistence.*; |
| @@ -99,6 +100,35 @@ public class TTInfoDetail extends BEntity { | @@ -99,6 +100,35 @@ public class TTInfoDetail extends BEntity { | ||
| 99 | /** 备注 */ | 100 | /** 备注 */ |
| 100 | private String remark; | 101 | private String remark; |
| 101 | 102 | ||
| 103 | + /** | ||
| 104 | + * 输出proto生成的builder | ||
| 105 | + * @return | ||
| 106 | + */ | ||
| 107 | + public TimeTableProto.TTInfoDetail.Builder toProtoBuilder() { | ||
| 108 | + // 注意部份空值处理,必须覆默认值,否则报nullexception | ||
| 109 | + return TimeTableProto.TTInfoDetail.newBuilder() | ||
| 110 | + .setId(id) | ||
| 111 | + .setXl(xl.getId()) | ||
| 112 | + .setXlName(xl.getName()) | ||
| 113 | + .setLp(lp.getId()) | ||
| 114 | + .setLpName(lp.getLpName()) | ||
| 115 | + .setFcno(fcno) | ||
| 116 | + .setXlDir(xlDir) | ||
| 117 | + .setQdzCode(qdzCode) | ||
| 118 | + .setQdzName(qdzName) | ||
| 119 | + .setZdzCode(zdzCode) | ||
| 120 | + .setZdzName(zdzName) | ||
| 121 | + .setFcsj(fcsj) | ||
| 122 | + .setBcs(bcs) | ||
| 123 | + .setJhlc(jhlc) | ||
| 124 | + .setBcsj(bcsj) | ||
| 125 | + .setBcType(bcType) | ||
| 126 | + .setIsFB(isFB == null ? false : isFB) | ||
| 127 | + .setIsTS(isTS == null ? false : isTS) | ||
| 128 | + .setRemark(remark == null ? "" : remark) | ||
| 129 | + ; | ||
| 130 | + } | ||
| 131 | + | ||
| 102 | public Long getId() { | 132 | public Long getId() { |
| 103 | return id; | 133 | return id; |
| 104 | } | 134 | } |
src/main/java/com/bsth/repository/schedule/TTInfoBackupRepository.java
0 → 100644
| 1 | +package com.bsth.repository.schedule; | ||
| 2 | + | ||
| 3 | +import com.bsth.entity.schedule.TTInfoBackup; | ||
| 4 | +import com.bsth.repository.BaseRepository; | ||
| 5 | +import org.springframework.stereotype.Repository; | ||
| 6 | + | ||
| 7 | +/** | ||
| 8 | + * Created by xu on 17/7/13. | ||
| 9 | + */ | ||
| 10 | +@Repository | ||
| 11 | +public interface TTInfoBackupRepository extends BaseRepository<TTInfoBackup, Long> { | ||
| 12 | +} |
src/main/java/com/bsth/service/schedule/TTInfoService.java
| @@ -12,4 +12,6 @@ public interface TTInfoService extends BService<TTInfo, Long> { | @@ -12,4 +12,6 @@ public interface TTInfoService extends BService<TTInfo, Long> { | ||
| 12 | void validate_s_d(TTInfo ttInfo) throws ScheduleException; | 12 | void validate_s_d(TTInfo ttInfo) throws ScheduleException; |
| 13 | void toggleCancel(Long id) throws ScheduleException; | 13 | void toggleCancel(Long id) throws ScheduleException; |
| 14 | 14 | ||
| 15 | + void backUp(Long ttInfoId) throws ScheduleException; | ||
| 16 | + | ||
| 15 | } | 17 | } |
src/main/java/com/bsth/service/schedule/impl/TTInfoServiceImpl.java
| 1 | package com.bsth.service.schedule.impl; | 1 | package com.bsth.service.schedule.impl; |
| 2 | 2 | ||
| 3 | import com.bsth.entity.schedule.TTInfo; | 3 | import com.bsth.entity.schedule.TTInfo; |
| 4 | -import com.bsth.service.schedule.exception.ScheduleException; | 4 | +import com.bsth.entity.schedule.TTInfoBackup; |
| 5 | +import com.bsth.entity.schedule.TTInfoDetail; | ||
| 6 | +import com.bsth.repository.schedule.TTInfoBackupRepository; | ||
| 7 | +import com.bsth.repository.schedule.TTInfoDetailRepository; | ||
| 8 | +import com.bsth.repository.schedule.TTInfoRepository; | ||
| 5 | import com.bsth.service.schedule.TTInfoService; | 9 | import com.bsth.service.schedule.TTInfoService; |
| 10 | +import com.bsth.service.schedule.exception.ScheduleException; | ||
| 11 | +import com.bsth.service.schedule.utils.TimeTableProto; | ||
| 6 | import org.apache.commons.lang3.StringUtils; | 12 | import org.apache.commons.lang3.StringUtils; |
| 13 | +import org.slf4j.Logger; | ||
| 14 | +import org.slf4j.LoggerFactory; | ||
| 15 | +import org.springframework.beans.factory.annotation.Autowired; | ||
| 7 | import org.springframework.stereotype.Service; | 16 | import org.springframework.stereotype.Service; |
| 17 | +import org.springframework.transaction.annotation.Isolation; | ||
| 18 | +import org.springframework.transaction.annotation.Propagation; | ||
| 8 | import org.springframework.transaction.annotation.Transactional; | 19 | import org.springframework.transaction.annotation.Transactional; |
| 9 | import org.springframework.util.CollectionUtils; | 20 | import org.springframework.util.CollectionUtils; |
| 10 | 21 | ||
| 22 | +import java.io.PrintWriter; | ||
| 23 | +import java.io.StringWriter; | ||
| 24 | +import java.util.Date; | ||
| 11 | import java.util.HashMap; | 25 | import java.util.HashMap; |
| 12 | import java.util.List; | 26 | import java.util.List; |
| 13 | import java.util.Map; | 27 | import java.util.Map; |
| @@ -17,6 +31,15 @@ import java.util.Map; | @@ -17,6 +31,15 @@ import java.util.Map; | ||
| 17 | */ | 31 | */ |
| 18 | @Service | 32 | @Service |
| 19 | public class TTInfoServiceImpl extends BServiceImpl<TTInfo, Long> implements TTInfoService { | 33 | public class TTInfoServiceImpl extends BServiceImpl<TTInfo, Long> implements TTInfoService { |
| 34 | + /** 日志记录器 */ | ||
| 35 | + private static final Logger LOG = LoggerFactory.getLogger(TTInfoServiceImpl.class); | ||
| 36 | + | ||
| 37 | + @Autowired | ||
| 38 | + private TTInfoRepository ttInfoRepository; | ||
| 39 | + @Autowired | ||
| 40 | + private TTInfoDetailRepository ttInfoDetailRepository; | ||
| 41 | + @Autowired | ||
| 42 | + private TTInfoBackupRepository ttInfoBackupRepository; | ||
| 20 | 43 | ||
| 21 | @Override | 44 | @Override |
| 22 | public void validate_name(TTInfo ttInfo) throws ScheduleException { | 45 | public void validate_name(TTInfo ttInfo) throws ScheduleException { |
| @@ -112,4 +135,60 @@ public class TTInfoServiceImpl extends BServiceImpl<TTInfo, Long> implements TTI | @@ -112,4 +135,60 @@ public class TTInfoServiceImpl extends BServiceImpl<TTInfo, Long> implements TTI | ||
| 112 | ttInfo.setIsCancel(true); | 135 | ttInfo.setIsCancel(true); |
| 113 | } | 136 | } |
| 114 | } | 137 | } |
| 138 | + | ||
| 139 | + @Override | ||
| 140 | + @Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.READ_COMMITTED) | ||
| 141 | + public void backUp(Long ttInfoId) throws ScheduleException { | ||
| 142 | + LOG.info(">>>>>>开始备份时刻表<<<<<<"); | ||
| 143 | + | ||
| 144 | + try { | ||
| 145 | + // 获取原始数据 | ||
| 146 | + TTInfo ttInfo = ttInfoRepository.findOne(ttInfoId); | ||
| 147 | + List<TTInfoDetail> ttInfoDetails = ttInfoDetailRepository.findByTtinfoId(ttInfoId); | ||
| 148 | + | ||
| 149 | + // protobuf序列化成二进制数据 | ||
| 150 | + TimeTableProto.TTInfo.Builder tb = ttInfo.toProtoBuilder(); | ||
| 151 | + for (TTInfoDetail ttInfoDetail : ttInfoDetails) { | ||
| 152 | + tb.addBcInfo(ttInfoDetail.toProtoBuilder()); | ||
| 153 | + } | ||
| 154 | + byte[] backupbytes = tb.build().toByteArray(); | ||
| 155 | + LOG.info("......时刻表={}", ttInfo.getName()); | ||
| 156 | + LOG.info("......时刻表protoBuf字节数={}", backupbytes.length); | ||
| 157 | + | ||
| 158 | + // 更新备份日期 | ||
| 159 | + Date backupdate = new Date(); | ||
| 160 | + ttInfo.setLastBackUpDate(backupdate); | ||
| 161 | + | ||
| 162 | + // 保存备份数据 | ||
| 163 | + TTInfoBackup ttInfoBackup = new TTInfoBackup(); | ||
| 164 | + ttInfoBackup.setXl(ttInfo.getXl().getId()); | ||
| 165 | + ttInfoBackup.setXlName(ttInfo.getXl().getName()); | ||
| 166 | + ttInfoBackup.setTtInfo(ttInfoId); | ||
| 167 | + ttInfoBackup.setTtInfoName(ttInfo.getName()); | ||
| 168 | + ttInfoBackup.setBackUpDate(backupdate); | ||
| 169 | + ttInfoBackup.setBackUpInfo(backupbytes); | ||
| 170 | + | ||
| 171 | + ttInfoBackupRepository.save(ttInfoBackup); | ||
| 172 | +// System.out.println(backupbytes.length); | ||
| 173 | +// try { | ||
| 174 | +// | ||
| 175 | +// TimeTableProto.TTInfo tt1 = TimeTableProto.TTInfo.parseFrom(backupbytes); | ||
| 176 | +// System.out.println(tt1.getName()); | ||
| 177 | +// System.out.println(tt1.getBcInfoCount()); | ||
| 178 | +// } catch (Exception exp) { | ||
| 179 | +// exp.printStackTrace(); | ||
| 180 | +// } | ||
| 181 | + | ||
| 182 | + LOG.info(">>>>>>备份时刻表success<<<<<<"); | ||
| 183 | + } catch (Exception exp) { | ||
| 184 | + StringWriter stringWriter = new StringWriter(); | ||
| 185 | + PrintWriter printWriter = new PrintWriter(stringWriter); | ||
| 186 | + exp.printStackTrace(printWriter); | ||
| 187 | + LOG.info("......异常stack->{}", stringWriter.toString()); | ||
| 188 | + LOG.info(">>>>>>备份时刻表failed<<<<<<"); | ||
| 189 | + throw new ScheduleException(exp); | ||
| 190 | + } | ||
| 191 | + | ||
| 192 | + | ||
| 193 | + } | ||
| 115 | } | 194 | } |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-globalservice.js
| @@ -699,7 +699,25 @@ angular.module('ScheduleApp').factory( | @@ -699,7 +699,25 @@ angular.module('ScheduleApp').factory( | ||
| 699 | return dst; | 699 | return dst; |
| 700 | } | 700 | } |
| 701 | } | 701 | } |
| 702 | - }, | 702 | + } |
| 703 | + } | ||
| 704 | + ), | ||
| 705 | + | ||
| 706 | + backup: $resource( | ||
| 707 | + '/tic_ec/backup/:ttinfoid', | ||
| 708 | + {}, | ||
| 709 | + { | ||
| 710 | + do: { | ||
| 711 | + method: 'GET', | ||
| 712 | + transformResponse: function(rs) { | ||
| 713 | + var dst = angular.fromJson(rs); | ||
| 714 | + if (dst.status == 'SUCCESS') { | ||
| 715 | + return dst.data; | ||
| 716 | + } else { | ||
| 717 | + return dst; // 业务错误留给控制器处理 | ||
| 718 | + } | ||
| 719 | + } | ||
| 720 | + } | ||
| 703 | } | 721 | } |
| 704 | ) | 722 | ) |
| 705 | }; | 723 | }; |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/list.html
| @@ -9,7 +9,7 @@ | @@ -9,7 +9,7 @@ | ||
| 9 | <th style="width: 180px;">时刻表名称</th> | 9 | <th style="width: 180px;">时刻表名称</th> |
| 10 | <th style="width: 80px">上下行</th> | 10 | <th style="width: 80px">上下行</th> |
| 11 | <th style="width: 50px;">启用</th> | 11 | <th style="width: 50px;">启用</th> |
| 12 | - <th style="width: 120px">启用日期</th> | 12 | + <th style="width: 120px">启用/备份日期</th> |
| 13 | <th style="width: 80px">状态</th> | 13 | <th style="width: 80px">状态</th> |
| 14 | <th style="width: 60%">时刻表明细</th> | 14 | <th style="width: 60%">时刻表明细</th> |
| 15 | <th style="width: 40%">操作</th> | 15 | <th style="width: 40%">操作</th> |
| @@ -76,7 +76,24 @@ | @@ -76,7 +76,24 @@ | ||
| 76 | <span ng-bind="info.isEnableDisTemplate | dict:'truefalseType':'未知' "></span> | 76 | <span ng-bind="info.isEnableDisTemplate | dict:'truefalseType':'未知' "></span> |
| 77 | </td> | 77 | </td> |
| 78 | <td> | 78 | <td> |
| 79 | - <span ng-bind="info.qyrq | date: 'yyyy-MM-dd'"></span> | 79 | + <div> |
| 80 | + <a href="#"> | ||
| 81 | + <span ng-bind="info.qyrq | date: 'yyyy-MM-dd'"></span> | ||
| 82 | + </a> | ||
| 83 | + </div> | ||
| 84 | + <div> | ||
| 85 | + <a href="#" | ||
| 86 | + tooltip-animation="false" | ||
| 87 | + tooltip-placement="top" | ||
| 88 | + uib-tooltip="备份时间:{{info.lastBackUpDate | date: 'yyyy-MM-dd HH:mm:ss' }}" | ||
| 89 | + tooltip-class="headClass"> | ||
| 90 | + | ||
| 91 | + <i class="fa fa-hdd-o" aria-hidden="true"></i> | ||
| 92 | + <span ng-bind="info.lastBackUpDate | date: 'yyyy-MM-dd'"></span> | ||
| 93 | + </a> | ||
| 94 | + | ||
| 95 | + </div> | ||
| 96 | + | ||
| 80 | </td> | 97 | </td> |
| 81 | <td> | 98 | <td> |
| 82 | <span class="glyphicon glyphicon-ok" ng-if="info.isCancel == '0'"></span> | 99 | <span class="glyphicon glyphicon-ok" ng-if="info.isCancel == '0'"></span> |
| @@ -94,6 +111,10 @@ | @@ -94,6 +111,10 @@ | ||
| 94 | <a ui-sref="ttInfoDetailManage_form({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name})" | 111 | <a ui-sref="ttInfoDetailManage_form({xlid: info.xl.id, ttid : info.id, xlname: info.xl.name, ttname : info.name})" |
| 95 | class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 导入 </a> | 112 | class="btn btn-info btn-sm" ng-if="info.isCancel == '0'"> 导入 </a> |
| 96 | <a href="javascript:" class="btn btn-info btn-sm" ng-click="ctrl.exportData(info.id)"> 导出 </a> | 113 | <a href="javascript:" class="btn btn-info btn-sm" ng-click="ctrl.exportData(info.id)"> 导出 </a> |
| 114 | + <a sweetalert | ||
| 115 | + sweet-options="{title: '是否备份时刻表?',text: '时刻表名称:' + info.name + '</br>TODO:已备份信息!', html: true,type: 'warning',showCancelButton: true,confirmButtonColor: '#DD6B55',confirmButtonText: '是',cancelButtonText: '取消'}" | ||
| 116 | + sweet-on-confirm="ctrl.backupinfo(info.id)" | ||
| 117 | + class="btn btn-danger btn-sm">备份</a> | ||
| 97 | </td> | 118 | </td> |
| 98 | <td> | 119 | <td> |
| 99 | <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> | 120 | <!--<a href="details.html?lineId={{obj.id}}" class="btn default blue-stripe btn-sm"> 详细 </a>--> |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/module.js
| @@ -60,6 +60,16 @@ angular.module('ScheduleApp').factory( | @@ -60,6 +60,16 @@ angular.module('ScheduleApp').factory( | ||
| 60 | param.type = 'exportFile'; | 60 | param.type = 'exportFile'; |
| 61 | param.ttinfoid = ttinfoid; | 61 | param.ttinfoid = ttinfoid; |
| 62 | return dservice.dataTools.dataExport(param).$promise; | 62 | return dservice.dataTools.dataExport(param).$promise; |
| 63 | + }, | ||
| 64 | + | ||
| 65 | + /** | ||
| 66 | + * 备份。 | ||
| 67 | + * @returns {*|Function|promise|n} | ||
| 68 | + */ | ||
| 69 | + backupinfo: function(ttinfoid) { | ||
| 70 | + var param = {}; | ||
| 71 | + param.ttinfoid = ttinfoid; | ||
| 72 | + return service.backup.do(param).$promise; | ||
| 63 | } | 73 | } |
| 64 | 74 | ||
| 65 | 75 | ||
| @@ -136,6 +146,19 @@ angular.module('ScheduleApp').controller( | @@ -136,6 +146,19 @@ angular.module('ScheduleApp').controller( | ||
| 136 | ); | 146 | ); |
| 137 | }; | 147 | }; |
| 138 | 148 | ||
| 149 | + // 备份信息 | ||
| 150 | + self.backupinfo = function(ttinfoid) { | ||
| 151 | + service.backupinfo(ttinfoid).then( | ||
| 152 | + function(result) { | ||
| 153 | + self.doPage(); | ||
| 154 | + console.log("备份成功!"); | ||
| 155 | + }, | ||
| 156 | + function(result) { | ||
| 157 | + console.log("备份失败:" + result); | ||
| 158 | + } | ||
| 159 | + ); | ||
| 160 | + }; | ||
| 161 | + | ||
| 139 | self.doPage(); | 162 | self.doPage(); |
| 140 | 163 | ||
| 141 | // 自动生成时刻表 | 164 | // 自动生成时刻表 |
src/main/resources/static/pages/scheduleApp/module/core/ttInfoManage/service.js
| @@ -33,7 +33,25 @@ angular.module('ScheduleApp').factory( | @@ -33,7 +33,25 @@ angular.module('ScheduleApp').factory( | ||
| 33 | return dst; | 33 | return dst; |
| 34 | } | 34 | } |
| 35 | } | 35 | } |
| 36 | - }, | 36 | + } |
| 37 | + } | ||
| 38 | + ), | ||
| 39 | + | ||
| 40 | + backup: $resource( | ||
| 41 | + '/tic_ec/backup/:ttinfoid', | ||
| 42 | + {}, | ||
| 43 | + { | ||
| 44 | + do: { | ||
| 45 | + method: 'GET', | ||
| 46 | + transformResponse: function(rs) { | ||
| 47 | + var dst = angular.fromJson(rs); | ||
| 48 | + if (dst.status == 'SUCCESS') { | ||
| 49 | + return dst.data; | ||
| 50 | + } else { | ||
| 51 | + return dst; // 业务错误留给控制器处理 | ||
| 52 | + } | ||
| 53 | + } | ||
| 54 | + } | ||
| 37 | } | 55 | } |
| 38 | ) | 56 | ) |
| 39 | }; | 57 | }; |