Commit 5652506fff420e7c2bb33720de39947112780071
Merge branch 'pudong' of 192.168.168.201:panzhaov5/bsth_control into pudong
Showing
27 changed files
with
1139 additions
and
142 deletions
pom.xml
| ... | ... | @@ -360,6 +360,16 @@ |
| 360 | 360 | <version>1.7.7</version> |
| 361 | 361 | </dependency> |
| 362 | 362 | |
| 363 | + <!-- web服务依赖 --> | |
| 364 | + <dependency> | |
| 365 | + <groupId>org.springframework.boot</groupId> | |
| 366 | + <artifactId>spring-boot-starter-ws</artifactId> | |
| 367 | + </dependency> | |
| 368 | + <dependency> | |
| 369 | + <groupId>wsdl4j</groupId> | |
| 370 | + <artifactId>wsdl4j</artifactId> | |
| 371 | + </dependency> | |
| 372 | + | |
| 363 | 373 | </dependencies> |
| 364 | 374 | |
| 365 | 375 | <dependencyManagement> |
| ... | ... | @@ -396,6 +406,26 @@ |
| 396 | 406 | <groupId>org.springframework.boot</groupId> |
| 397 | 407 | <artifactId>spring-boot-maven-plugin</artifactId> |
| 398 | 408 | </plugin> |
| 409 | + <plugin> | |
| 410 | + <groupId>org.codehaus.mojo</groupId> | |
| 411 | + <artifactId>jaxb2-maven-plugin</artifactId> | |
| 412 | + <version>1.6</version> | |
| 413 | + <executions> | |
| 414 | + <execution> | |
| 415 | + <id>xjc</id> | |
| 416 | + <phase>none</phase> | |
| 417 | + <goals> | |
| 418 | + <goal>xjc</goal> | |
| 419 | + </goals> | |
| 420 | + </execution> | |
| 421 | + </executions> | |
| 422 | + <configuration> | |
| 423 | + <schemaDirectory>${project.basedir}/src/main/resources/xsd/</schemaDirectory> | |
| 424 | + <outputDirectory>${project.basedir}/src/main/java</outputDirectory> | |
| 425 | + <clearOutputDir>false</clearOutputDir> | |
| 426 | + <encoding>utf-8</encoding> | |
| 427 | + </configuration> | |
| 428 | + </plugin> | |
| 399 | 429 | </plugins> |
| 400 | 430 | <resources> |
| 401 | 431 | <resource> | ... | ... |
src/main/java/com/bsth/common/Constants.java
| ... | ... | @@ -23,6 +23,8 @@ public class Constants { |
| 23 | 23 | |
| 24 | 24 | // springboot manage health的检测url |
| 25 | 25 | public static final String ACTUATOR_MANAGEMENT_HEALTH = "/manage/health"; |
| 26 | + // web服务url | |
| 27 | + public static final String WEBSERVICE_URL = "/ws/**"; | |
| 26 | 28 | |
| 27 | 29 | //对外的营运数据接口 |
| 28 | 30 | public static final String SERVICE_INTERFACE = "/companyService/**"; | ... | ... |
src/main/java/com/bsth/data/gpsdata_v2/DataHandleProcess.java
| ... | ... | @@ -108,7 +108,7 @@ public class DataHandleProcess { |
| 108 | 108 | //发送邮件 |
| 109 | 109 | EmailBean mail = new EmailBean(); |
| 110 | 110 | mail.setSubject("线调GPS处理"); |
| 111 | - mail.setContent("GPS处理超时,检查线程栈文件信息<br/>"); | |
| 111 | + mail.setContent("GPS处理超时,检查文件信息<br/>"); | |
| 112 | 112 | sendEmailController.sendMail("113252620@qq.com", mail); |
| 113 | 113 | logger.info("DataHandlerProcess:邮件发送成功!"); |
| 114 | 114 | } catch (Exception e){ | ... | ... |
src/main/java/com/bsth/entity/schedule/batch/VehicleDataSync.java
0 → 100644
| 1 | +package com.bsth.entity.schedule.batch; | |
| 2 | + | |
| 3 | +import javax.persistence.*; | |
| 4 | +import java.io.Serializable; | |
| 5 | +import java.util.Date; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * 车辆数据同步数据。 | |
| 9 | + */ | |
| 10 | +@Entity | |
| 11 | +@Table(name = "bsth_c_cars_sync") | |
| 12 | +public class VehicleDataSync implements Serializable { | |
| 13 | + /** 主健Id */ | |
| 14 | + @Id | |
| 15 | + @GeneratedValue | |
| 16 | + private Long id; | |
| 17 | + | |
| 18 | + //--------------- 标识车辆的数据(自编号和车牌号) ---------------// | |
| 19 | + /** 自编号/内部编号 */ | |
| 20 | + private String idenZbh; | |
| 21 | + /** 车牌号 */ | |
| 22 | + private String idenCph; | |
| 23 | + | |
| 24 | + //--------------- 更新的数据 ------------// | |
| 25 | + /** 更新 公司代码 */ | |
| 26 | + private String updateGsdm; | |
| 27 | + /** 更新 公司名称 */ | |
| 28 | + private String updateGsmc; | |
| 29 | + /** 更新 分公司代码 */ | |
| 30 | + private String updateFgsdm; | |
| 31 | + /** 更新 分公司名称 */ | |
| 32 | + private String updateFgsmc; | |
| 33 | + /** 是否报废 */ | |
| 34 | + private Boolean updateSfbf; | |
| 35 | + /** 报废日期 */ | |
| 36 | + private Date updateBfd; | |
| 37 | + | |
| 38 | + // TODO:后续再添加 | |
| 39 | + | |
| 40 | + //--------------- 时间,状态数据 ------------// | |
| 41 | + /** 创建时间 */ | |
| 42 | + @Column(nullable = false) | |
| 43 | + private Date createDate; | |
| 44 | + /** 更新时间 */ | |
| 45 | + @Column(nullable = false) | |
| 46 | + private Date updateDate; | |
| 47 | + /** 同步状态 */ | |
| 48 | + @Column(nullable = false) | |
| 49 | + @Convert(converter = VehicleDataSyncStatusEnumConverter.class) | |
| 50 | + private VehicleDataSyncStatusEnum status; | |
| 51 | + | |
| 52 | + public Long getId() { | |
| 53 | + return id; | |
| 54 | + } | |
| 55 | + | |
| 56 | + public void setId(Long id) { | |
| 57 | + this.id = id; | |
| 58 | + } | |
| 59 | + | |
| 60 | + public String getIdenZbh() { | |
| 61 | + return idenZbh; | |
| 62 | + } | |
| 63 | + | |
| 64 | + public void setIdenZbh(String idenZbh) { | |
| 65 | + this.idenZbh = idenZbh; | |
| 66 | + } | |
| 67 | + | |
| 68 | + public String getIdenCph() { | |
| 69 | + return idenCph; | |
| 70 | + } | |
| 71 | + | |
| 72 | + public void setIdenCph(String idenCph) { | |
| 73 | + this.idenCph = idenCph; | |
| 74 | + } | |
| 75 | + | |
| 76 | + public String getUpdateGsdm() { | |
| 77 | + return updateGsdm; | |
| 78 | + } | |
| 79 | + | |
| 80 | + public void setUpdateGsdm(String updateGsdm) { | |
| 81 | + this.updateGsdm = updateGsdm; | |
| 82 | + } | |
| 83 | + | |
| 84 | + public String getUpdateGsmc() { | |
| 85 | + return updateGsmc; | |
| 86 | + } | |
| 87 | + | |
| 88 | + public void setUpdateGsmc(String updateGsmc) { | |
| 89 | + this.updateGsmc = updateGsmc; | |
| 90 | + } | |
| 91 | + | |
| 92 | + public Date getCreateDate() { | |
| 93 | + return createDate; | |
| 94 | + } | |
| 95 | + | |
| 96 | + public void setCreateDate(Date createDate) { | |
| 97 | + this.createDate = createDate; | |
| 98 | + } | |
| 99 | + | |
| 100 | + public Date getUpdateDate() { | |
| 101 | + return updateDate; | |
| 102 | + } | |
| 103 | + | |
| 104 | + public void setUpdateDate(Date updateDate) { | |
| 105 | + this.updateDate = updateDate; | |
| 106 | + } | |
| 107 | + | |
| 108 | + public VehicleDataSyncStatusEnum getStatus() { | |
| 109 | + return status; | |
| 110 | + } | |
| 111 | + | |
| 112 | + public void setStatus(VehicleDataSyncStatusEnum status) { | |
| 113 | + this.status = status; | |
| 114 | + } | |
| 115 | + | |
| 116 | + public Boolean getUpdateSfbf() { | |
| 117 | + return updateSfbf; | |
| 118 | + } | |
| 119 | + | |
| 120 | + public void setUpdateSfbf(Boolean updateSfbf) { | |
| 121 | + this.updateSfbf = updateSfbf; | |
| 122 | + } | |
| 123 | + | |
| 124 | + public Date getUpdateBfd() { | |
| 125 | + return updateBfd; | |
| 126 | + } | |
| 127 | + | |
| 128 | + public void setUpdateBfd(Date updateBfd) { | |
| 129 | + this.updateBfd = updateBfd; | |
| 130 | + } | |
| 131 | + | |
| 132 | + public String getUpdateFgsdm() { | |
| 133 | + return updateFgsdm; | |
| 134 | + } | |
| 135 | + | |
| 136 | + public void setUpdateFgsdm(String updateFgsdm) { | |
| 137 | + this.updateFgsdm = updateFgsdm; | |
| 138 | + } | |
| 139 | + | |
| 140 | + public String getUpdateFgsmc() { | |
| 141 | + return updateFgsmc; | |
| 142 | + } | |
| 143 | + | |
| 144 | + public void setUpdateFgsmc(String updateFgsmc) { | |
| 145 | + this.updateFgsmc = updateFgsmc; | |
| 146 | + } | |
| 147 | +} | |
| 0 | 148 | \ No newline at end of file | ... | ... |
src/main/java/com/bsth/entity/schedule/batch/VehicleDataSyncStat.java
0 → 100644
| 1 | +package com.bsth.entity.schedule.batch; | |
| 2 | + | |
| 3 | +import javax.persistence.*; | |
| 4 | +import java.io.Serializable; | |
| 5 | +import java.util.Date; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * 车辆数据同步数据统计。 | |
| 9 | + */ | |
| 10 | +@Entity | |
| 11 | +@Table(name = "bsth_c_cars_sync_stat") | |
| 12 | +public class VehicleDataSyncStat implements Serializable { | |
| 13 | + /** 主健Id */ | |
| 14 | + @Id | |
| 15 | + @GeneratedValue | |
| 16 | + private Long id; | |
| 17 | + | |
| 18 | + /** job实例Id */ | |
| 19 | + @Column(nullable = false) | |
| 20 | + private Long jobId; | |
| 21 | + /** job名字 */ | |
| 22 | + @Column(nullable = false) | |
| 23 | + private String jobName; | |
| 24 | + /** job执行Id */ | |
| 25 | + @Column(nullable = false, unique = true) | |
| 26 | + private Long jobExecutionId; | |
| 27 | + | |
| 28 | + /** 待同步的车辆数据ids(同步状态=SYNCING) */ | |
| 29 | + @Column(length = 2000) | |
| 30 | + private String syncDataPrepareIds; | |
| 31 | + /** 待同步的车辆数据自编号s(同步状态=SYNCING) */ | |
| 32 | + @Column(length = 2000) | |
| 33 | + private String syncDataPrepareZbhs; | |
| 34 | + | |
| 35 | + /** 待同步的车辆count */ | |
| 36 | + private Integer syncDataPrepareCount; | |
| 37 | + /** 同步成功的车辆count */ | |
| 38 | + private Integer syncDataSuccessCount; | |
| 39 | + | |
| 40 | + /** 退出step执行Id */ | |
| 41 | + private Long exitStepExecutionId; | |
| 42 | + /** 退出异常stack信息 */ | |
| 43 | + @Column(length = 2500) | |
| 44 | + private String exitStackTrace; | |
| 45 | + | |
| 46 | + /** 同步状态 */ | |
| 47 | + @Column(nullable = false) | |
| 48 | + @Convert(converter = VehicleDataSyncStatusEnumConverter.class) | |
| 49 | + private VehicleDataSyncStatusEnum status; | |
| 50 | + | |
| 51 | + /** job执行开始时间 */ | |
| 52 | + @Column(nullable = false) | |
| 53 | + private Date startDate; | |
| 54 | + /** job执行结束时间 */ | |
| 55 | + private Date endDate; | |
| 56 | + | |
| 57 | + public Long getId() { | |
| 58 | + return id; | |
| 59 | + } | |
| 60 | + | |
| 61 | + public void setId(Long id) { | |
| 62 | + this.id = id; | |
| 63 | + } | |
| 64 | + | |
| 65 | + public Long getJobId() { | |
| 66 | + return jobId; | |
| 67 | + } | |
| 68 | + | |
| 69 | + public void setJobId(Long jobId) { | |
| 70 | + this.jobId = jobId; | |
| 71 | + } | |
| 72 | + | |
| 73 | + public String getJobName() { | |
| 74 | + return jobName; | |
| 75 | + } | |
| 76 | + | |
| 77 | + public void setJobName(String jobName) { | |
| 78 | + this.jobName = jobName; | |
| 79 | + } | |
| 80 | + | |
| 81 | + public Long getJobExecutionId() { | |
| 82 | + return jobExecutionId; | |
| 83 | + } | |
| 84 | + | |
| 85 | + public void setJobExecutionId(Long jobExecutionId) { | |
| 86 | + this.jobExecutionId = jobExecutionId; | |
| 87 | + } | |
| 88 | + | |
| 89 | + public String getSyncDataPrepareIds() { | |
| 90 | + return syncDataPrepareIds; | |
| 91 | + } | |
| 92 | + | |
| 93 | + public void setSyncDataPrepareIds(String syncDataPrepareIds) { | |
| 94 | + this.syncDataPrepareIds = syncDataPrepareIds; | |
| 95 | + } | |
| 96 | + | |
| 97 | + public String getSyncDataPrepareZbhs() { | |
| 98 | + return syncDataPrepareZbhs; | |
| 99 | + } | |
| 100 | + | |
| 101 | + public void setSyncDataPrepareZbhs(String syncDataPrepareZbhs) { | |
| 102 | + this.syncDataPrepareZbhs = syncDataPrepareZbhs; | |
| 103 | + } | |
| 104 | + | |
| 105 | + public Integer getSyncDataPrepareCount() { | |
| 106 | + return syncDataPrepareCount; | |
| 107 | + } | |
| 108 | + | |
| 109 | + public void setSyncDataPrepareCount(Integer syncDataPrepareCount) { | |
| 110 | + this.syncDataPrepareCount = syncDataPrepareCount; | |
| 111 | + } | |
| 112 | + | |
| 113 | + public Integer getSyncDataSuccessCount() { | |
| 114 | + return syncDataSuccessCount; | |
| 115 | + } | |
| 116 | + | |
| 117 | + public void setSyncDataSuccessCount(Integer syncDataSuccessCount) { | |
| 118 | + this.syncDataSuccessCount = syncDataSuccessCount; | |
| 119 | + } | |
| 120 | + | |
| 121 | + public Long getExitStepExecutionId() { | |
| 122 | + return exitStepExecutionId; | |
| 123 | + } | |
| 124 | + | |
| 125 | + public void setExitStepExecutionId(Long exitStepExecutionId) { | |
| 126 | + this.exitStepExecutionId = exitStepExecutionId; | |
| 127 | + } | |
| 128 | + | |
| 129 | + public String getExitStackTrace() { | |
| 130 | + return exitStackTrace; | |
| 131 | + } | |
| 132 | + | |
| 133 | + public void setExitStackTrace(String exitStackTrace) { | |
| 134 | + this.exitStackTrace = exitStackTrace; | |
| 135 | + } | |
| 136 | + | |
| 137 | + public VehicleDataSyncStatusEnum getStatus() { | |
| 138 | + return status; | |
| 139 | + } | |
| 140 | + | |
| 141 | + public void setStatus(VehicleDataSyncStatusEnum status) { | |
| 142 | + this.status = status; | |
| 143 | + } | |
| 144 | + | |
| 145 | + public Date getStartDate() { | |
| 146 | + return startDate; | |
| 147 | + } | |
| 148 | + | |
| 149 | + public void setStartDate(Date startDate) { | |
| 150 | + this.startDate = startDate; | |
| 151 | + } | |
| 152 | + | |
| 153 | + public Date getEndDate() { | |
| 154 | + return endDate; | |
| 155 | + } | |
| 156 | + | |
| 157 | + public void setEndDate(Date endDate) { | |
| 158 | + this.endDate = endDate; | |
| 159 | + } | |
| 160 | +} | ... | ... |
src/main/java/com/bsth/entity/schedule/batch/VehicleDataSyncStatusEnum.java
0 → 100644
| 1 | +package com.bsth.entity.schedule.batch; | |
| 2 | + | |
| 3 | +import com.fasterxml.jackson.annotation.JsonCreator; | |
| 4 | +import com.fasterxml.jackson.annotation.JsonValue; | |
| 5 | +import org.springframework.util.StringUtils; | |
| 6 | + | |
| 7 | +import java.util.HashMap; | |
| 8 | +import java.util.Map; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * 车辆数据同步状态enum。 | |
| 12 | + */ | |
| 13 | +public enum VehicleDataSyncStatusEnum { | |
| 14 | + PREPARE("准备"), | |
| 15 | + SYNCING("同步中"), | |
| 16 | + SUCCESS("成功"), | |
| 17 | + FAILURE("失败"); | |
| 18 | + | |
| 19 | + public static Map<String, VehicleDataSyncStatusEnum> enumMap = | |
| 20 | + new HashMap<String, VehicleDataSyncStatusEnum>() {{ | |
| 21 | + put("准备", PREPARE); | |
| 22 | + put("同步中", SYNCING); | |
| 23 | + put("成功", SUCCESS); | |
| 24 | + put("失败", FAILURE); | |
| 25 | + }}; | |
| 26 | + | |
| 27 | + /** 字典描述(对应数据库的字典) */ | |
| 28 | + private String dicDesc; | |
| 29 | + | |
| 30 | + @JsonCreator | |
| 31 | + VehicleDataSyncStatusEnum(String dicDesc) { | |
| 32 | + this.dicDesc = dicDesc; | |
| 33 | + } | |
| 34 | + | |
| 35 | + public static VehicleDataSyncStatusEnum fromDicDesc(String dicDesc) { | |
| 36 | + if (StringUtils.isEmpty(dicDesc)) { | |
| 37 | + throw new RuntimeException("车辆数据同步状态描述不能为空!"); | |
| 38 | + } else if (enumMap.get(dicDesc) == null) { | |
| 39 | + throw new RuntimeException("车辆数据同步状态未定义:" + dicDesc); | |
| 40 | + } | |
| 41 | + return enumMap.get(dicDesc); | |
| 42 | + } | |
| 43 | + | |
| 44 | + @JsonValue | |
| 45 | + public String getDicDesc() { | |
| 46 | + return dicDesc; | |
| 47 | + } | |
| 48 | + | |
| 49 | + public void setDicDesc(String dicDesc) { | |
| 50 | + this.dicDesc = dicDesc; | |
| 51 | + } | |
| 52 | + | |
| 53 | + @Override | |
| 54 | + public String toString() { | |
| 55 | + return dicDesc; | |
| 56 | + } | |
| 57 | +} | ... | ... |
src/main/java/com/bsth/entity/schedule/batch/VehicleDataSyncStatusEnumConverter.java
0 → 100644
| 1 | +package com.bsth.entity.schedule.batch; | |
| 2 | + | |
| 3 | +import javax.persistence.AttributeConverter; | |
| 4 | +import javax.persistence.Convert; | |
| 5 | + | |
| 6 | +@Convert | |
| 7 | +public class VehicleDataSyncStatusEnumConverter implements AttributeConverter<VehicleDataSyncStatusEnum, String> { | |
| 8 | + @Override | |
| 9 | + public String convertToDatabaseColumn(VehicleDataSyncStatusEnum vehicleDataSyncStatusEnum) { | |
| 10 | + return vehicleDataSyncStatusEnum.getDicDesc(); | |
| 11 | + } | |
| 12 | + | |
| 13 | + @Override | |
| 14 | + public VehicleDataSyncStatusEnum convertToEntityAttribute(String s) { | |
| 15 | + return VehicleDataSyncStatusEnum.fromDicDesc(s); | |
| 16 | + } | |
| 17 | +} | ... | ... |
src/main/java/com/bsth/filter/BaseFilter.java
| ... | ... | @@ -17,7 +17,7 @@ public abstract class BaseFilter implements Filter { |
| 17 | 17 | * 白名单 |
| 18 | 18 | */ |
| 19 | 19 | private String[] whiteListURLs = { Constants.LOGIN_PAGE,Constants.CAPTCHA, Constants.SERVICE_INTERFACE, |
| 20 | - Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.METRONIC_URL, Constants.LOGIN, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.XD_REAL_GPS, Constants.UP_RFID_URL, Constants.STATION_AND_SECTION_COUNT, Constants.ACTUATOR_MANAGEMENT_HEALTH }; | |
| 20 | + Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.METRONIC_URL, Constants.LOGIN, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.XD_REAL_GPS, Constants.UP_RFID_URL, Constants.STATION_AND_SECTION_COUNT, Constants.ACTUATOR_MANAGEMENT_HEALTH, Constants.WEBSERVICE_URL }; | |
| 21 | 21 | |
| 22 | 22 | @Override |
| 23 | 23 | public void destroy() { | ... | ... |
src/main/java/com/bsth/repository/schedule/batch/VehicleDataSyncRepo.java
0 → 100644
| 1 | +package com.bsth.repository.schedule.batch; | |
| 2 | + | |
| 3 | +import com.bsth.entity.schedule.batch.VehicleDataSync; | |
| 4 | +import com.bsth.repository.BaseRepository; | |
| 5 | +import org.springframework.stereotype.Repository; | |
| 6 | + | |
| 7 | +@Repository | |
| 8 | +public interface VehicleDataSyncRepo extends BaseRepository<VehicleDataSync, Long> { | |
| 9 | +} | ... | ... |
src/main/java/com/bsth/repository/schedule/batch/VehicleDataSyncStatRepo.java
0 → 100644
| 1 | +package com.bsth.repository.schedule.batch; | |
| 2 | + | |
| 3 | +import com.bsth.entity.schedule.batch.VehicleDataSyncStat; | |
| 4 | +import com.bsth.repository.BaseRepository; | |
| 5 | +import org.springframework.stereotype.Repository; | |
| 6 | + | |
| 7 | +@Repository | |
| 8 | +public interface VehicleDataSyncStatRepo extends BaseRepository<VehicleDataSyncStat, Long> { | |
| 9 | + | |
| 10 | +} | ... | ... |
src/main/java/com/bsth/security/filter/LoginInterceptor.java
| ... | ... | @@ -33,7 +33,7 @@ public class LoginInterceptor implements Filter { |
| 33 | 33 | * 相比于 BaseFilter,此处对线调GPS请求进行了拦截验证 |
| 34 | 34 | */ |
| 35 | 35 | private String[] whiteListURLs = { Constants.LOGIN_PAGE,Constants.CAPTCHA, Constants.SERVICE_INTERFACE, |
| 36 | - Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.METRONIC_URL, Constants.LOGIN, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.UP_RFID_URL,Constants.STATION_AND_SECTION_COUNT }; | |
| 36 | + Constants.ASSETS_URL, Constants.FAVICON_URL, Constants.METRONIC_URL, Constants.LOGIN, Constants.LOGIN_FAILURE, Constants.UPSTREAM_URL, Constants.XD_CHILD_PAGES, Constants.UP_RFID_URL,Constants.STATION_AND_SECTION_COUNT, Constants.WEBSERVICE_URL }; | |
| 37 | 37 | |
| 38 | 38 | |
| 39 | 39 | @Override | ... | ... |
src/main/java/com/bsth/service/schedule/batch/VehicleDataSyncService.java
0 → 100644
src/main/java/com/bsth/service/schedule/batch/VehicleDataSyncServiceImpl.java
0 → 100644
| 1 | +package com.bsth.service.schedule.batch; | |
| 2 | + | |
| 3 | +import com.bsth.control_v2.plan_module.common.exception.PlanModuleException; | |
| 4 | +import com.bsth.entity.schedule.batch.VehicleDataSync; | |
| 5 | +import com.bsth.service.schedule.impl.BServiceImpl; | |
| 6 | +import org.springframework.stereotype.Service; | |
| 7 | + | |
| 8 | +@Service | |
| 9 | +public class VehicleDataSyncServiceImpl extends BServiceImpl<VehicleDataSync, Long> implements VehicleDataSyncService { | |
| 10 | + @Override | |
| 11 | + public void delete(Long aLong) { | |
| 12 | + throw new PlanModuleException("不支持delete方法!"); | |
| 13 | + } | |
| 14 | +} | ... | ... |
src/main/java/com/bsth/service/schedule/batch/VehicleDataSyncStatService.java
0 → 100644
src/main/java/com/bsth/service/schedule/batch/VehicleDataSyncStatServiceImpl.java
0 → 100644
| 1 | +package com.bsth.service.schedule.batch; | |
| 2 | + | |
| 3 | +import com.bsth.control_v2.plan_module.common.exception.PlanModuleException; | |
| 4 | +import com.bsth.entity.schedule.batch.VehicleDataSyncStat; | |
| 5 | +import com.bsth.service.schedule.impl.BServiceImpl; | |
| 6 | +import org.springframework.stereotype.Service; | |
| 7 | + | |
| 8 | +@Service | |
| 9 | +public class VehicleDataSyncStatServiceImpl extends BServiceImpl<VehicleDataSyncStat, Long> implements VehicleDataSyncStatService { | |
| 10 | + @Override | |
| 11 | + public VehicleDataSyncStat save(VehicleDataSyncStat vehicleDataSyncStat) { | |
| 12 | + throw new PlanModuleException("不支持save方法!"); | |
| 13 | + } | |
| 14 | + | |
| 15 | + @Override | |
| 16 | + public void delete(Long aLong) { | |
| 17 | + throw new PlanModuleException("不支持delete方法!"); | |
| 18 | + } | |
| 19 | +} | ... | ... |
src/main/java/com/bsth/service/schedule/batch/webservice/VehicleSyncEndpoint.java
0 → 100644
| 1 | +package com.bsth.service.schedule.batch.webservice; | |
| 2 | + | |
| 3 | +import com.bsth.entity.schedule.batch.VehicleDataSync; | |
| 4 | +import com.bsth.entity.schedule.batch.VehicleDataSyncStatusEnum; | |
| 5 | +import com.bsth.service.schedule.batch.VehicleDataSyncService; | |
| 6 | +import com.bsth.service.schedule.batch.webservice.vehiclesync.AddVehicleDataSyncRequest; | |
| 7 | +import com.bsth.service.schedule.batch.webservice.vehiclesync.AddVehicleDataSyncResponse; | |
| 8 | +import org.springframework.beans.factory.annotation.Autowired; | |
| 9 | +import org.springframework.ws.server.endpoint.annotation.Endpoint; | |
| 10 | +import org.springframework.ws.server.endpoint.annotation.PayloadRoot; | |
| 11 | +import org.springframework.ws.server.endpoint.annotation.RequestPayload; | |
| 12 | +import org.springframework.ws.server.endpoint.annotation.ResponsePayload; | |
| 13 | + | |
| 14 | +import java.util.Date; | |
| 15 | + | |
| 16 | +@Endpoint | |
| 17 | +public class VehicleSyncEndpoint { | |
| 18 | + /** 名字空间uri */ | |
| 19 | + private static final String NAMESPACE_URI = "http://bsth.com/service/schedule/batch/webservice/vehicleSync"; | |
| 20 | + | |
| 21 | + @Autowired | |
| 22 | + private VehicleDataSyncService vehicleDataSyncService; | |
| 23 | + @PayloadRoot(namespace = NAMESPACE_URI, localPart = "addVehicleDataSyncRequest") | |
| 24 | + @ResponsePayload | |
| 25 | + public AddVehicleDataSyncResponse addVehicleDataSync( | |
| 26 | + @RequestPayload AddVehicleDataSyncRequest addVehicleDataSyncRequest) { | |
| 27 | + AddVehicleDataSyncResponse addVehicleDataSyncResponse = new AddVehicleDataSyncResponse(); | |
| 28 | + try { | |
| 29 | + // 创建车辆同步数据 | |
| 30 | + VehicleDataSync vehicleDataSync = new VehicleDataSync(); | |
| 31 | + vehicleDataSync.setIdenZbh(addVehicleDataSyncRequest.getIdenZbh()); | |
| 32 | + vehicleDataSync.setIdenCph(addVehicleDataSyncRequest.getIdenCph()); | |
| 33 | + vehicleDataSync.setUpdateGsmc(addVehicleDataSyncRequest.getUpdateGsmc()); | |
| 34 | + vehicleDataSync.setUpdateFgsmc(addVehicleDataSyncRequest.getUpdateFgsmc()); | |
| 35 | + vehicleDataSync.setUpdateSfbf(addVehicleDataSyncRequest.isUpdateSfbf()); | |
| 36 | + | |
| 37 | + vehicleDataSync.setStatus(VehicleDataSyncStatusEnum.PREPARE); | |
| 38 | + vehicleDataSync.setCreateDate(new Date()); | |
| 39 | + vehicleDataSync.setUpdateDate(new Date()); | |
| 40 | + vehicleDataSyncService.save(vehicleDataSync); | |
| 41 | + | |
| 42 | + addVehicleDataSyncResponse.setSuccess(true); | |
| 43 | + addVehicleDataSyncResponse.setMessage("OK!"); | |
| 44 | + } catch (Exception exp) { | |
| 45 | + exp.printStackTrace(); | |
| 46 | + addVehicleDataSyncResponse.setSuccess(false); | |
| 47 | + addVehicleDataSyncResponse.setMessage(exp.getMessage()); | |
| 48 | + } | |
| 49 | + | |
| 50 | + return addVehicleDataSyncResponse; | |
| 51 | + } | |
| 52 | +} | ... | ... |
src/main/java/com/bsth/service/schedule/batch/webservice/WebServiceConfig.java
0 → 100644
| 1 | +package com.bsth.service.schedule.batch.webservice; | |
| 2 | + | |
| 3 | +import org.springframework.boot.context.embedded.ServletRegistrationBean; | |
| 4 | +import org.springframework.context.ApplicationContext; | |
| 5 | +import org.springframework.context.annotation.Bean; | |
| 6 | +import org.springframework.context.annotation.Configuration; | |
| 7 | +import org.springframework.core.io.ClassPathResource; | |
| 8 | +import org.springframework.ws.config.annotation.EnableWs; | |
| 9 | +import org.springframework.ws.config.annotation.WsConfigurerAdapter; | |
| 10 | +import org.springframework.ws.transport.http.MessageDispatcherServlet; | |
| 11 | +import org.springframework.ws.wsdl.wsdl11.DefaultWsdl11Definition; | |
| 12 | +import org.springframework.xml.xsd.SimpleXsdSchema; | |
| 13 | +import org.springframework.xml.xsd.XsdSchema; | |
| 14 | + | |
| 15 | +@EnableWs | |
| 16 | +@Configuration | |
| 17 | +public class WebServiceConfig extends WsConfigurerAdapter { | |
| 18 | + @Bean | |
| 19 | + public ServletRegistrationBean messageDispatcherServlet(ApplicationContext applicationContext) { | |
| 20 | + MessageDispatcherServlet servlet = new MessageDispatcherServlet(); | |
| 21 | + servlet.setApplicationContext(applicationContext); | |
| 22 | + servlet.setTransformWsdlLocations(true); | |
| 23 | + return new ServletRegistrationBean(servlet, "/ws/*"); | |
| 24 | + } | |
| 25 | + | |
| 26 | + @Bean(name="vehicleSync") | |
| 27 | + public DefaultWsdl11Definition vehicleSyncWsdl11Definition(XsdSchema vehicleSyncSchema) { | |
| 28 | + DefaultWsdl11Definition wsdl11Definition = new DefaultWsdl11Definition(); | |
| 29 | + wsdl11Definition.setPortTypeName("vehicleSyncPort"); | |
| 30 | + wsdl11Definition.setLocationUri("/ws"); | |
| 31 | + wsdl11Definition.setTargetNamespace("http://bsth.com/service/schedule/batch/webservice/vehicleSync"); | |
| 32 | + wsdl11Definition.setSchema(vehicleSyncSchema); | |
| 33 | + return wsdl11Definition; | |
| 34 | + } | |
| 35 | + | |
| 36 | + @Bean | |
| 37 | + public XsdSchema vehicleSyncSchema() { | |
| 38 | + return new SimpleXsdSchema(new ClassPathResource("/xsd/vehicleSync.xsd")); | |
| 39 | + } | |
| 40 | + | |
| 41 | + | |
| 42 | +} | ... | ... |
src/main/java/com/bsth/service/schedule/batch/webservice/vehiclesync/AddVehicleDataSyncRequest.java
0 → 100644
| 1 | +// | |
| 2 | +// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.2.7 生成的 | |
| 3 | +// 请访问 <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> | |
| 4 | +// 在重新编译源模式时, 对此文件的所有修改都将丢失。 | |
| 5 | +// 生成时间: 2020.06.23 时间 03:15:37 PM CST | |
| 6 | +// | |
| 7 | + | |
| 8 | + | |
| 9 | +package com.bsth.service.schedule.batch.webservice.vehiclesync; | |
| 10 | + | |
| 11 | +import javax.xml.bind.annotation.XmlAccessType; | |
| 12 | +import javax.xml.bind.annotation.XmlAccessorType; | |
| 13 | +import javax.xml.bind.annotation.XmlElement; | |
| 14 | +import javax.xml.bind.annotation.XmlRootElement; | |
| 15 | +import javax.xml.bind.annotation.XmlType; | |
| 16 | + | |
| 17 | + | |
| 18 | +/** | |
| 19 | + * <p>anonymous complex type的 Java 类。 | |
| 20 | + * | |
| 21 | + * <p>以下模式片段指定包含在此类中的预期内容。 | |
| 22 | + * | |
| 23 | + * <pre> | |
| 24 | + * <complexType> | |
| 25 | + * <complexContent> | |
| 26 | + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> | |
| 27 | + * <sequence> | |
| 28 | + * <element name="idenZbh" type="{http://www.w3.org/2001/XMLSchema}string"/> | |
| 29 | + * <element name="idenCph" type="{http://www.w3.org/2001/XMLSchema}string"/> | |
| 30 | + * <element name="updateGsmc" type="{http://www.w3.org/2001/XMLSchema}string"/> | |
| 31 | + * <element name="updateFgsmc" type="{http://www.w3.org/2001/XMLSchema}string"/> | |
| 32 | + * <element name="updateSfbf" type="{http://www.w3.org/2001/XMLSchema}boolean"/> | |
| 33 | + * </sequence> | |
| 34 | + * </restriction> | |
| 35 | + * </complexContent> | |
| 36 | + * </complexType> | |
| 37 | + * </pre> | |
| 38 | + * | |
| 39 | + * | |
| 40 | + */ | |
| 41 | +@XmlAccessorType(XmlAccessType.FIELD) | |
| 42 | +@XmlType(name = "", propOrder = { | |
| 43 | + "idenZbh", | |
| 44 | + "idenCph", | |
| 45 | + "updateGsmc", | |
| 46 | + "updateFgsmc", | |
| 47 | + "updateSfbf" | |
| 48 | +}) | |
| 49 | +@XmlRootElement(name = "addVehicleDataSyncRequest") | |
| 50 | +public class AddVehicleDataSyncRequest { | |
| 51 | + | |
| 52 | + @XmlElement(required = true) | |
| 53 | + protected String idenZbh; | |
| 54 | + @XmlElement(required = true) | |
| 55 | + protected String idenCph; | |
| 56 | + @XmlElement(required = true) | |
| 57 | + protected String updateGsmc; | |
| 58 | + @XmlElement(required = true) | |
| 59 | + protected String updateFgsmc; | |
| 60 | + protected boolean updateSfbf; | |
| 61 | + | |
| 62 | + /** | |
| 63 | + * 获取idenZbh属性的值。 | |
| 64 | + * | |
| 65 | + * @return | |
| 66 | + * possible object is | |
| 67 | + * {@link String } | |
| 68 | + * | |
| 69 | + */ | |
| 70 | + public String getIdenZbh() { | |
| 71 | + return idenZbh; | |
| 72 | + } | |
| 73 | + | |
| 74 | + /** | |
| 75 | + * 设置idenZbh属性的值。 | |
| 76 | + * | |
| 77 | + * @param value | |
| 78 | + * allowed object is | |
| 79 | + * {@link String } | |
| 80 | + * | |
| 81 | + */ | |
| 82 | + public void setIdenZbh(String value) { | |
| 83 | + this.idenZbh = value; | |
| 84 | + } | |
| 85 | + | |
| 86 | + /** | |
| 87 | + * 获取idenCph属性的值。 | |
| 88 | + * | |
| 89 | + * @return | |
| 90 | + * possible object is | |
| 91 | + * {@link String } | |
| 92 | + * | |
| 93 | + */ | |
| 94 | + public String getIdenCph() { | |
| 95 | + return idenCph; | |
| 96 | + } | |
| 97 | + | |
| 98 | + /** | |
| 99 | + * 设置idenCph属性的值。 | |
| 100 | + * | |
| 101 | + * @param value | |
| 102 | + * allowed object is | |
| 103 | + * {@link String } | |
| 104 | + * | |
| 105 | + */ | |
| 106 | + public void setIdenCph(String value) { | |
| 107 | + this.idenCph = value; | |
| 108 | + } | |
| 109 | + | |
| 110 | + /** | |
| 111 | + * 获取updateGsmc属性的值。 | |
| 112 | + * | |
| 113 | + * @return | |
| 114 | + * possible object is | |
| 115 | + * {@link String } | |
| 116 | + * | |
| 117 | + */ | |
| 118 | + public String getUpdateGsmc() { | |
| 119 | + return updateGsmc; | |
| 120 | + } | |
| 121 | + | |
| 122 | + /** | |
| 123 | + * 设置updateGsmc属性的值。 | |
| 124 | + * | |
| 125 | + * @param value | |
| 126 | + * allowed object is | |
| 127 | + * {@link String } | |
| 128 | + * | |
| 129 | + */ | |
| 130 | + public void setUpdateGsmc(String value) { | |
| 131 | + this.updateGsmc = value; | |
| 132 | + } | |
| 133 | + | |
| 134 | + /** | |
| 135 | + * 获取updateFgsmc属性的值。 | |
| 136 | + * | |
| 137 | + * @return | |
| 138 | + * possible object is | |
| 139 | + * {@link String } | |
| 140 | + * | |
| 141 | + */ | |
| 142 | + public String getUpdateFgsmc() { | |
| 143 | + return updateFgsmc; | |
| 144 | + } | |
| 145 | + | |
| 146 | + /** | |
| 147 | + * 设置updateFgsmc属性的值。 | |
| 148 | + * | |
| 149 | + * @param value | |
| 150 | + * allowed object is | |
| 151 | + * {@link String } | |
| 152 | + * | |
| 153 | + */ | |
| 154 | + public void setUpdateFgsmc(String value) { | |
| 155 | + this.updateFgsmc = value; | |
| 156 | + } | |
| 157 | + | |
| 158 | + /** | |
| 159 | + * 获取updateSfbf属性的值。 | |
| 160 | + * | |
| 161 | + */ | |
| 162 | + public boolean isUpdateSfbf() { | |
| 163 | + return updateSfbf; | |
| 164 | + } | |
| 165 | + | |
| 166 | + /** | |
| 167 | + * 设置updateSfbf属性的值。 | |
| 168 | + * | |
| 169 | + */ | |
| 170 | + public void setUpdateSfbf(boolean value) { | |
| 171 | + this.updateSfbf = value; | |
| 172 | + } | |
| 173 | + | |
| 174 | +} | ... | ... |
src/main/java/com/bsth/service/schedule/batch/webservice/vehiclesync/AddVehicleDataSyncResponse.java
0 → 100644
| 1 | +// | |
| 2 | +// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.2.7 生成的 | |
| 3 | +// 请访问 <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> | |
| 4 | +// 在重新编译源模式时, 对此文件的所有修改都将丢失。 | |
| 5 | +// 生成时间: 2020.06.23 时间 03:15:37 PM CST | |
| 6 | +// | |
| 7 | + | |
| 8 | + | |
| 9 | +package com.bsth.service.schedule.batch.webservice.vehiclesync; | |
| 10 | + | |
| 11 | +import javax.xml.bind.annotation.XmlAccessType; | |
| 12 | +import javax.xml.bind.annotation.XmlAccessorType; | |
| 13 | +import javax.xml.bind.annotation.XmlElement; | |
| 14 | +import javax.xml.bind.annotation.XmlRootElement; | |
| 15 | +import javax.xml.bind.annotation.XmlType; | |
| 16 | + | |
| 17 | + | |
| 18 | +/** | |
| 19 | + * <p>anonymous complex type的 Java 类。 | |
| 20 | + * | |
| 21 | + * <p>以下模式片段指定包含在此类中的预期内容。 | |
| 22 | + * | |
| 23 | + * <pre> | |
| 24 | + * <complexType> | |
| 25 | + * <complexContent> | |
| 26 | + * <restriction base="{http://www.w3.org/2001/XMLSchema}anyType"> | |
| 27 | + * <sequence> | |
| 28 | + * <element name="success" type="{http://www.w3.org/2001/XMLSchema}boolean"/> | |
| 29 | + * <element name="message" type="{http://www.w3.org/2001/XMLSchema}string"/> | |
| 30 | + * </sequence> | |
| 31 | + * </restriction> | |
| 32 | + * </complexContent> | |
| 33 | + * </complexType> | |
| 34 | + * </pre> | |
| 35 | + * | |
| 36 | + * | |
| 37 | + */ | |
| 38 | +@XmlAccessorType(XmlAccessType.FIELD) | |
| 39 | +@XmlType(name = "", propOrder = { | |
| 40 | + "success", | |
| 41 | + "message" | |
| 42 | +}) | |
| 43 | +@XmlRootElement(name = "addVehicleDataSyncResponse") | |
| 44 | +public class AddVehicleDataSyncResponse { | |
| 45 | + | |
| 46 | + protected boolean success; | |
| 47 | + @XmlElement(required = true) | |
| 48 | + protected String message; | |
| 49 | + | |
| 50 | + /** | |
| 51 | + * 获取success属性的值。 | |
| 52 | + * | |
| 53 | + */ | |
| 54 | + public boolean isSuccess() { | |
| 55 | + return success; | |
| 56 | + } | |
| 57 | + | |
| 58 | + /** | |
| 59 | + * 设置success属性的值。 | |
| 60 | + * | |
| 61 | + */ | |
| 62 | + public void setSuccess(boolean value) { | |
| 63 | + this.success = value; | |
| 64 | + } | |
| 65 | + | |
| 66 | + /** | |
| 67 | + * 获取message属性的值。 | |
| 68 | + * | |
| 69 | + * @return | |
| 70 | + * possible object is | |
| 71 | + * {@link String } | |
| 72 | + * | |
| 73 | + */ | |
| 74 | + public String getMessage() { | |
| 75 | + return message; | |
| 76 | + } | |
| 77 | + | |
| 78 | + /** | |
| 79 | + * 设置message属性的值。 | |
| 80 | + * | |
| 81 | + * @param value | |
| 82 | + * allowed object is | |
| 83 | + * {@link String } | |
| 84 | + * | |
| 85 | + */ | |
| 86 | + public void setMessage(String value) { | |
| 87 | + this.message = value; | |
| 88 | + } | |
| 89 | + | |
| 90 | +} | ... | ... |
src/main/java/com/bsth/service/schedule/batch/webservice/vehiclesync/ObjectFactory.java
0 → 100644
| 1 | +// | |
| 2 | +// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.2.7 生成的 | |
| 3 | +// 请访问 <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> | |
| 4 | +// 在重新编译源模式时, 对此文件的所有修改都将丢失。 | |
| 5 | +// 生成时间: 2020.06.23 时间 03:15:37 PM CST | |
| 6 | +// | |
| 7 | + | |
| 8 | + | |
| 9 | +package com.bsth.service.schedule.batch.webservice.vehiclesync; | |
| 10 | + | |
| 11 | +import javax.xml.bind.annotation.XmlRegistry; | |
| 12 | + | |
| 13 | + | |
| 14 | +/** | |
| 15 | + * This object contains factory methods for each | |
| 16 | + * Java content interface and Java element interface | |
| 17 | + * generated in the com.bsth.service.schedule.batch.webservice.vehiclesync package. | |
| 18 | + * <p>An ObjectFactory allows you to programatically | |
| 19 | + * construct new instances of the Java representation | |
| 20 | + * for XML content. The Java representation of XML | |
| 21 | + * content can consist of schema derived interfaces | |
| 22 | + * and classes representing the binding of schema | |
| 23 | + * type definitions, element declarations and model | |
| 24 | + * groups. Factory methods for each of these are | |
| 25 | + * provided in this class. | |
| 26 | + * | |
| 27 | + */ | |
| 28 | +@XmlRegistry | |
| 29 | +public class ObjectFactory { | |
| 30 | + | |
| 31 | + | |
| 32 | + /** | |
| 33 | + * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: com.bsth.service.schedule.batch.webservice.vehiclesync | |
| 34 | + * | |
| 35 | + */ | |
| 36 | + public ObjectFactory() { | |
| 37 | + } | |
| 38 | + | |
| 39 | + /** | |
| 40 | + * Create an instance of {@link AddVehicleDataSyncResponse } | |
| 41 | + * | |
| 42 | + */ | |
| 43 | + public AddVehicleDataSyncResponse createAddVehicleDataSyncResponse() { | |
| 44 | + return new AddVehicleDataSyncResponse(); | |
| 45 | + } | |
| 46 | + | |
| 47 | + /** | |
| 48 | + * Create an instance of {@link AddVehicleDataSyncRequest } | |
| 49 | + * | |
| 50 | + */ | |
| 51 | + public AddVehicleDataSyncRequest createAddVehicleDataSyncRequest() { | |
| 52 | + return new AddVehicleDataSyncRequest(); | |
| 53 | + } | |
| 54 | + | |
| 55 | +} | ... | ... |
src/main/java/com/bsth/service/schedule/batch/webservice/vehiclesync/package-info.java
0 → 100644
| 1 | +// | |
| 2 | +// 此文件是由 JavaTM Architecture for XML Binding (JAXB) 引用实现 v2.2.7 生成的 | |
| 3 | +// 请访问 <a href="http://java.sun.com/xml/jaxb">http://java.sun.com/xml/jaxb</a> | |
| 4 | +// 在重新编译源模式时, 对此文件的所有修改都将丢失。 | |
| 5 | +// 生成时间: 2020.06.23 时间 03:15:37 PM CST | |
| 6 | +// | |
| 7 | + | |
| 8 | +@javax.xml.bind.annotation.XmlSchema(namespace = "http://bsth.com/service/schedule/batch/webservice/vehicleSync", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED) | |
| 9 | +package com.bsth.service.schedule.batch.webservice.vehiclesync; | ... | ... |
src/main/resources/static/pages/home.html
| 1 | -<style> | |
| 2 | - .system_change_log{ | |
| 3 | - background: #fff; | |
| 4 | - color: #666; | |
| 5 | - box-shadow: 0 5px 15px rgba(0,0,0,0.08); | |
| 6 | - height: calc(100% + 10px); | |
| 7 | - margin-top: -10px; | |
| 8 | - font-size: 14px; | |
| 9 | - padding: 10px 0 0 15px; | |
| 10 | - overflow: auto; | |
| 11 | - } | |
| 12 | - .system_change_log>ul{ | |
| 13 | - margin:0px; | |
| 14 | - list-style:none; | |
| 15 | - } | |
| 16 | - | |
| 17 | - .system_change_log>ul>li.sub_title{ | |
| 18 | - text-indent: 0; | |
| 19 | - } | |
| 20 | - | |
| 21 | - .system_change_log>ul>li.sub_title>h6{ | |
| 22 | - font-size: 12px; | |
| 23 | - font-family: 微软雅黑; | |
| 24 | - color: #000; | |
| 25 | - margin-top: 8px; | |
| 26 | - margin-bottom: 8px; | |
| 27 | - } | |
| 28 | - | |
| 29 | - .system_change_log>ul>li{ | |
| 30 | - margin: 5px 0; | |
| 31 | - text-indent: 25px; | |
| 32 | - } | |
| 33 | - | |
| 34 | - .system_change_log .label{ | |
| 35 | - width: 55px; | |
| 36 | - display: inline-block; | |
| 37 | - padding: 0 10px; | |
| 38 | - line-height: 1.5; | |
| 39 | - font-size: 12px; | |
| 40 | - color: #fff; | |
| 41 | - vertical-align: middle; | |
| 42 | - white-space: nowrap; | |
| 43 | - border-radius: 2px !important; | |
| 44 | - text-transform: uppercase; | |
| 45 | - text-align: center; | |
| 46 | - text-indent: 3px; | |
| 47 | - margin-right: 15px; | |
| 48 | - } | |
| 49 | - .system_change_log .label.s_c_add{ | |
| 50 | - background-color: #32d296; | |
| 51 | - } | |
| 52 | - | |
| 53 | - .system_change_log .label.s_c_change{ | |
| 54 | - background-color: #1e87f0; | |
| 55 | - } | |
| 56 | - | |
| 57 | - .system_change_log .label.s_c_remove{ | |
| 58 | - background-color: #faa05a; | |
| 59 | - } | |
| 60 | -</style> | |
| 61 | -<div class="system_change_log"> | |
| 62 | - <h2 style="text-indent: 35px;margin: 10px 0 5px;">2020-03-12 更新说明 Changelog</h2> | |
| 63 | - <br><br> | |
| 64 | - <ul > | |
| 65 | - <li class="sub_title"><h6>权限管理</h6></li> | |
| 66 | - <li><span class="label s_c_change">修改</span>1、密码修改加入密码复杂度校验机制</li> | |
| 67 | - <li class="sub_title"><h6>线调</h6></li> | |
| 68 | - <li><span class="label s_c_change">新增</span>1、线调页面新增维修上报功能</li> | |
| 69 | - </ul> | |
| 70 | - | |
| 71 | -</div> | |
| 72 | - | |
| 73 | -<script type="text/javascript"> | |
| 74 | - $.ajax({ | |
| 75 | - url: '/eci/validate_get_destroy_info', | |
| 76 | - dataType: "json", | |
| 77 | - success: function(rs) { | |
| 78 | - if (rs && rs.status === "SUCCESS") { | |
| 79 | - if (rs.data && rs.data.length && rs.data.length > 0) { | |
| 80 | - swal({ | |
| 81 | - title: "人员配置停用信息", | |
| 82 | - text: rs.data.join("</br>"), | |
| 83 | - html: true, | |
| 84 | - type: "warning", | |
| 85 | - showCancelButton: true, | |
| 86 | - confirmButtonColor: "RED", | |
| 87 | - confirmButtonText: "是", | |
| 88 | - cancelButtonText: "取消" | |
| 89 | - }); | |
| 90 | - } | |
| 91 | - } | |
| 92 | - } | |
| 93 | - }); | |
| 94 | - | |
| 95 | -</script> | |
| 1 | +<style> | |
| 2 | + .system_change_log{ | |
| 3 | + background: #fff; | |
| 4 | + color: #666; | |
| 5 | + box-shadow: 0 5px 15px rgba(0,0,0,0.08); | |
| 6 | + height: calc(100% + 10px); | |
| 7 | + margin-top: -10px; | |
| 8 | + font-size: 14px; | |
| 9 | + padding: 10px 0 0 15px; | |
| 10 | + overflow: auto; | |
| 11 | + } | |
| 12 | + .system_change_log>ul{ | |
| 13 | + margin:0px; | |
| 14 | + list-style:none; | |
| 15 | + } | |
| 16 | + | |
| 17 | + .system_change_log>ul>li.sub_title{ | |
| 18 | + text-indent: 0; | |
| 19 | + } | |
| 20 | + | |
| 21 | + .system_change_log>ul>li.sub_title>h6{ | |
| 22 | + font-size: 12px; | |
| 23 | + font-family: 微软雅黑; | |
| 24 | + color: #000; | |
| 25 | + margin-top: 8px; | |
| 26 | + margin-bottom: 8px; | |
| 27 | + } | |
| 28 | + | |
| 29 | + .system_change_log>ul>li{ | |
| 30 | + margin: 5px 0; | |
| 31 | + text-indent: 25px; | |
| 32 | + } | |
| 33 | + | |
| 34 | + .system_change_log .label{ | |
| 35 | + width: 55px; | |
| 36 | + display: inline-block; | |
| 37 | + padding: 0 10px; | |
| 38 | + line-height: 1.5; | |
| 39 | + font-size: 12px; | |
| 40 | + color: #fff; | |
| 41 | + vertical-align: middle; | |
| 42 | + white-space: nowrap; | |
| 43 | + border-radius: 2px !important; | |
| 44 | + text-transform: uppercase; | |
| 45 | + text-align: center; | |
| 46 | + text-indent: 3px; | |
| 47 | + margin-right: 15px; | |
| 48 | + } | |
| 49 | + .system_change_log .label.s_c_add{ | |
| 50 | + background-color: #32d296; | |
| 51 | + } | |
| 52 | + | |
| 53 | + .system_change_log .label.s_c_change{ | |
| 54 | + background-color: #1e87f0; | |
| 55 | + } | |
| 56 | + | |
| 57 | + .system_change_log .label.s_c_remove{ | |
| 58 | + background-color: #faa05a; | |
| 59 | + } | |
| 60 | +</style> | |
| 61 | +<div class="system_change_log"> | |
| 62 | + <h2 style="text-indent: 35px;margin: 10px 0 5px;">2020-07-30 更新说明 Changelog</h2> | |
| 63 | + <br><br> | |
| 64 | + <ul > | |
| 65 | + <li class="sub_title"><h6>权限管理</h6></li> | |
| 66 | + <li><span class="label s_c_change">修改</span>1、权限加入分级概念,同级、上级不能操作,如:下级账户不能创建管理员账户</li> | |
| 67 | + <li><span class="label s_c_change">修改</span>2、权限操作时验证角色信息</li> | |
| 68 | + <li class="sub_title"><h6>线调</h6></li> | |
| 69 | + <li><span class="label s_c_change">修改</span>1、轨迹回放版本切换问题修复</li> | |
| 70 | + <li><span class="label s_c_change">修改</span>2、批量换人换车可能造成某日班次不能清除问题修复</li> | |
| 71 | + <li><span class="label s_c_change">修改</span>3、调度系统中偶然出现的批量掉线问题修复(调度网关有数据情况)</li> | |
| 72 | + <li><span class="label s_c_change">修改</span>4、安全驾驶添加了安全检查类别、接口地址调整</li> | |
| 73 | + <li><span class="label s_c_change">新增</span>5、与服务热线系统对接,可在线调页填写服务投诉信息</li> | |
| 74 | + <li class="sub_title"><h6>计调</h6></li> | |
| 75 | + <li><span class="label s_c_change">新增</span>1、人员停用在home.html做弹出框,后台获取当前用户权限下的线路人员配置停用信息</li> | |
| 76 | + <li><span class="label s_c_change">新增</span>2、人员管理添加金蝶工号显示</li> | |
| 77 | + <li><span class="label s_c_change">新增</span>3、修改时刻表明细编辑页面,添加班型编辑列,修改相关指令</li> | |
| 78 | + <li><span class="label s_c_change">修改</span>4、修复时刻表批量修改问题所在</li> | |
| 79 | + <li><span class="label s_c_change">新增</span>5、添加车辆同步接口web服务</li> | |
| 80 | + <li><span class="label s_c_change">新增</span>6、调度执勤日报修改人员,车辆时,初始会修改已有车辆人员配置(如套跑某个班次的车辆不一样,初始时会修改)</li> | |
| 81 | + <li><span class="label s_c_change">修改</span>7、排班明细修改班次时,修改去除工号的前缀</li> | |
| 82 | + <li class="sub_title"><h6>基础信息</h6></li> | |
| 83 | + <li><span class="label s_c_change">新增</span>1、添加线路和修改线路时,选择环线或者双向的提示</li> | |
| 84 | + <li><span class="label s_c_change">新增</span>2、添加站点行业编码字段</li> | |
| 85 | + </ul> | |
| 86 | + | |
| 87 | +</div> | |
| 88 | + | |
| 89 | +<script type="text/javascript"> | |
| 90 | + $.ajax({ | |
| 91 | + url: '/eci/validate_get_destroy_info', | |
| 92 | + dataType: "json", | |
| 93 | + success: function(rs) { | |
| 94 | + if (rs && rs.status === "SUCCESS") { | |
| 95 | + if (rs.data && rs.data.length && rs.data.length > 0) { | |
| 96 | + swal({ | |
| 97 | + title: "人员配置停用信息", | |
| 98 | + text: rs.data.join("</br>"), | |
| 99 | + html: true, | |
| 100 | + type: "warning", | |
| 101 | + showCancelButton: true, | |
| 102 | + confirmButtonColor: "RED", | |
| 103 | + confirmButtonText: "是", | |
| 104 | + cancelButtonText: "取消" | |
| 105 | + }); | |
| 106 | + } | |
| 107 | + } | |
| 108 | + } | |
| 109 | + }); | |
| 110 | + | |
| 111 | +</script> | ... | ... |
src/main/resources/static/pages/scheduleApp/module/common/dts2/scheduleplan/saPlanInfoEdit2.js
| ... | ... | @@ -58,14 +58,14 @@ angular.module('ScheduleApp').directive( |
| 58 | 58 | |
| 59 | 59 | // 表单值,被赋值的次数 |
| 60 | 60 | var form_data_assign_count = { |
| 61 | - cl1 : 1, | |
| 62 | - cl2 : 1, | |
| 63 | - j1 : 1, | |
| 64 | - j2 : 1, | |
| 65 | - j3 : 1, | |
| 66 | - s1 : 1, | |
| 67 | - s2 : 1, | |
| 68 | - s3 : 1 | |
| 61 | + cl1 : -1, | |
| 62 | + cl2 : -1, | |
| 63 | + j1 : -1, | |
| 64 | + j2 : -1, | |
| 65 | + j3 : -1, | |
| 66 | + s1 : -1, | |
| 67 | + s2 : -1, | |
| 68 | + s3 : -1 | |
| 69 | 69 | }; |
| 70 | 70 | |
| 71 | 71 | return { |
| ... | ... | @@ -359,7 +359,10 @@ angular.module('ScheduleApp').directive( |
| 359 | 359 | new_cl1 = undefined; |
| 360 | 360 | } |
| 361 | 361 | |
| 362 | - scope[ctrlAs].$$internal_refresh_dsdata_cl(); | |
| 362 | + form_data_assign_count.cl1 ++; | |
| 363 | + if (form_data_assign_count.cl1 > 1) { | |
| 364 | + scope[ctrlAs].$$internal_refresh_dsdata_cl(); | |
| 365 | + } | |
| 363 | 366 | }, |
| 364 | 367 | true |
| 365 | 368 | ); |
| ... | ... | @@ -381,7 +384,10 @@ angular.module('ScheduleApp').directive( |
| 381 | 384 | new_cl2 = undefined; |
| 382 | 385 | } |
| 383 | 386 | |
| 384 | - scope[ctrlAs].$$internal_refresh_dsdata_cl(); | |
| 387 | + form_data_assign_count.cl2 ++; | |
| 388 | + if (form_data_assign_count.cl2 > 1) { | |
| 389 | + scope[ctrlAs].$$internal_refresh_dsdata_cl(); | |
| 390 | + } | |
| 385 | 391 | }, |
| 386 | 392 | true |
| 387 | 393 | ); |
| ... | ... | @@ -403,8 +409,11 @@ angular.module('ScheduleApp').directive( |
| 403 | 409 | new_j1 = undefined; |
| 404 | 410 | } |
| 405 | 411 | |
| 406 | - scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 407 | - scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 412 | + form_data_assign_count.j1 ++; | |
| 413 | + if (form_data_assign_count.j1 > 1) { | |
| 414 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 415 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 416 | + } | |
| 408 | 417 | }, |
| 409 | 418 | true |
| 410 | 419 | ); |
| ... | ... | @@ -425,8 +434,12 @@ angular.module('ScheduleApp').directive( |
| 425 | 434 | } else { |
| 426 | 435 | new_s1 = undefined; |
| 427 | 436 | } |
| 428 | - scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 429 | - scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 437 | + | |
| 438 | + form_data_assign_count.s1 ++; | |
| 439 | + if (form_data_assign_count.s1 > 1) { | |
| 440 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 441 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 442 | + } | |
| 430 | 443 | }, |
| 431 | 444 | true |
| 432 | 445 | ); |
| ... | ... | @@ -448,8 +461,11 @@ angular.module('ScheduleApp').directive( |
| 448 | 461 | new_j2 = undefined; |
| 449 | 462 | } |
| 450 | 463 | |
| 451 | - scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 452 | - scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 464 | + form_data_assign_count.j2 ++; | |
| 465 | + if (form_data_assign_count.j2 > 1) { | |
| 466 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 467 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 468 | + } | |
| 453 | 469 | }, |
| 454 | 470 | true |
| 455 | 471 | ); |
| ... | ... | @@ -471,8 +487,11 @@ angular.module('ScheduleApp').directive( |
| 471 | 487 | new_s2 = undefined; |
| 472 | 488 | } |
| 473 | 489 | |
| 474 | - scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 475 | - scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 490 | + form_data_assign_count.s2 ++; | |
| 491 | + if (form_data_assign_count.s2 > 1) { | |
| 492 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 493 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 494 | + } | |
| 476 | 495 | }, |
| 477 | 496 | true |
| 478 | 497 | ); | ... | ... |
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
| ... | ... | @@ -5940,14 +5940,14 @@ angular.module('ScheduleApp').directive( |
| 5940 | 5940 | |
| 5941 | 5941 | // 表单值,被赋值的次数 |
| 5942 | 5942 | var form_data_assign_count = { |
| 5943 | - cl1 : 1, | |
| 5944 | - cl2 : 1, | |
| 5945 | - j1 : 1, | |
| 5946 | - j2 : 1, | |
| 5947 | - j3 : 1, | |
| 5948 | - s1 : 1, | |
| 5949 | - s2 : 1, | |
| 5950 | - s3 : 1 | |
| 5943 | + cl1 : -1, | |
| 5944 | + cl2 : -1, | |
| 5945 | + j1 : -1, | |
| 5946 | + j2 : -1, | |
| 5947 | + j3 : -1, | |
| 5948 | + s1 : -1, | |
| 5949 | + s2 : -1, | |
| 5950 | + s3 : -1 | |
| 5951 | 5951 | }; |
| 5952 | 5952 | |
| 5953 | 5953 | return { |
| ... | ... | @@ -6241,7 +6241,10 @@ angular.module('ScheduleApp').directive( |
| 6241 | 6241 | new_cl1 = undefined; |
| 6242 | 6242 | } |
| 6243 | 6243 | |
| 6244 | - scope[ctrlAs].$$internal_refresh_dsdata_cl(); | |
| 6244 | + form_data_assign_count.cl1 ++; | |
| 6245 | + if (form_data_assign_count.cl1 > 1) { | |
| 6246 | + scope[ctrlAs].$$internal_refresh_dsdata_cl(); | |
| 6247 | + } | |
| 6245 | 6248 | }, |
| 6246 | 6249 | true |
| 6247 | 6250 | ); |
| ... | ... | @@ -6263,7 +6266,10 @@ angular.module('ScheduleApp').directive( |
| 6263 | 6266 | new_cl2 = undefined; |
| 6264 | 6267 | } |
| 6265 | 6268 | |
| 6266 | - scope[ctrlAs].$$internal_refresh_dsdata_cl(); | |
| 6269 | + form_data_assign_count.cl2 ++; | |
| 6270 | + if (form_data_assign_count.cl2 > 1) { | |
| 6271 | + scope[ctrlAs].$$internal_refresh_dsdata_cl(); | |
| 6272 | + } | |
| 6267 | 6273 | }, |
| 6268 | 6274 | true |
| 6269 | 6275 | ); |
| ... | ... | @@ -6285,8 +6291,11 @@ angular.module('ScheduleApp').directive( |
| 6285 | 6291 | new_j1 = undefined; |
| 6286 | 6292 | } |
| 6287 | 6293 | |
| 6288 | - scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 6289 | - scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 6294 | + form_data_assign_count.j1 ++; | |
| 6295 | + if (form_data_assign_count.j1 > 1) { | |
| 6296 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 6297 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 6298 | + } | |
| 6290 | 6299 | }, |
| 6291 | 6300 | true |
| 6292 | 6301 | ); |
| ... | ... | @@ -6307,8 +6316,12 @@ angular.module('ScheduleApp').directive( |
| 6307 | 6316 | } else { |
| 6308 | 6317 | new_s1 = undefined; |
| 6309 | 6318 | } |
| 6310 | - scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 6311 | - scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 6319 | + | |
| 6320 | + form_data_assign_count.s1 ++; | |
| 6321 | + if (form_data_assign_count.s1 > 1) { | |
| 6322 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 6323 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 6324 | + } | |
| 6312 | 6325 | }, |
| 6313 | 6326 | true |
| 6314 | 6327 | ); |
| ... | ... | @@ -6330,8 +6343,11 @@ angular.module('ScheduleApp').directive( |
| 6330 | 6343 | new_j2 = undefined; |
| 6331 | 6344 | } |
| 6332 | 6345 | |
| 6333 | - scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 6334 | - scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 6346 | + form_data_assign_count.j2 ++; | |
| 6347 | + if (form_data_assign_count.j2 > 1) { | |
| 6348 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 6349 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 6350 | + } | |
| 6335 | 6351 | }, |
| 6336 | 6352 | true |
| 6337 | 6353 | ); |
| ... | ... | @@ -6353,8 +6369,11 @@ angular.module('ScheduleApp').directive( |
| 6353 | 6369 | new_s2 = undefined; |
| 6354 | 6370 | } |
| 6355 | 6371 | |
| 6356 | - scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 6357 | - scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 6372 | + form_data_assign_count.s2 ++; | |
| 6373 | + if (form_data_assign_count.s2 > 1) { | |
| 6374 | + scope[ctrlAs].$$internal_refresh_dsdata_j(); | |
| 6375 | + scope[ctrlAs].$$internal_refresh_dsdata_s(); | |
| 6376 | + } | |
| 6358 | 6377 | }, |
| 6359 | 6378 | true |
| 6360 | 6379 | ); | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/info/module.js
| ... | ... | @@ -251,6 +251,19 @@ angular.module("ScheduleApp").controller( |
| 251 | 251 | // 提交方法 |
| 252 | 252 | self.submit = function() { |
| 253 | 253 | // 保存或者更新 |
| 254 | + | |
| 255 | + // 修正工号,去除前缀(如:05-001122,05就是前缀,用 - 分割) | |
| 256 | + var _jGh = self.schedulePlanInfoForSave.jGh; | |
| 257 | + if (_jGh) { | |
| 258 | + _jGh = _jGh.indexOf("-") != -1 ? _jGh.split("-")[1] : _jGh; | |
| 259 | + self.schedulePlanInfoForSave.jGh = _jGh; | |
| 260 | + } | |
| 261 | + var _sGh = self.schedulePlanInfoForSave.sGh; | |
| 262 | + if (_sGh) { | |
| 263 | + _sGh = _sGh.indexOf("-") != -1 ? _sGh.split("-")[1] : _sGh; | |
| 264 | + self.schedulePlanInfoForSave.sGh = _sGh; | |
| 265 | + } | |
| 266 | + | |
| 254 | 267 | self.schedulePlanInfoForSave.$save(function() { |
| 255 | 268 | self.toPlanInfoListPage(); |
| 256 | 269 | }); | ... | ... |
src/main/resources/static/pages/scheduleApp/module/core/schedulePlanManage/report/ext/list.html
| ... | ... | @@ -71,7 +71,7 @@ |
| 71 | 71 | </tr> |
| 72 | 72 | </thead> |
| 73 | 73 | <tbody> |
| 74 | - <tr ng-repeat="info in ctrl.pageInfo.infos" | |
| 74 | + <tr ng-repeat="info in ctrl.pageInfo.infos track by info.lpName" | |
| 75 | 75 | ng-class="{odd: true, gradeX: true, info: ctrl.isModify(info), 'row-active': ctrl.isModify(info)}" > |
| 76 | 76 | <td> |
| 77 | 77 | <div> |
| ... | ... | @@ -128,21 +128,21 @@ |
| 128 | 128 | </div> |
| 129 | 129 | </td> |
| 130 | 130 | <td> |
| 131 | - <div ng-repeat="clzbh in info.clZbhs"> | |
| 131 | + <div ng-repeat="clzbh in info.clZbhs track by $index"> | |
| 132 | 132 | <a href="#"> |
| 133 | 133 | {{clzbh}} |
| 134 | 134 | </a> |
| 135 | 135 | </div> |
| 136 | 136 | </td> |
| 137 | 137 | <td> |
| 138 | - <div ng-repeat="ccsj in info.ccsjs"> | |
| 138 | + <div ng-repeat="ccsj in info.ccsjs track by $index"> | |
| 139 | 139 | <a href="#"> |
| 140 | 140 | {{ccsj}} |
| 141 | 141 | </a> |
| 142 | 142 | </div> |
| 143 | 143 | </td> |
| 144 | 144 | <td> |
| 145 | - <div ng-repeat="jcsj in info.jcsjs"> | |
| 145 | + <div ng-repeat="jcsj in info.jcsjs track by $index"> | |
| 146 | 146 | <a href="#"> |
| 147 | 147 | {{jcsj}} |
| 148 | 148 | </a> |
| ... | ... | @@ -151,7 +151,7 @@ |
| 151 | 151 | <td class="container-fluid"> |
| 152 | 152 | <div class="row"> |
| 153 | 153 | <div style="padding-right: 0px;" class="col-md-6"> |
| 154 | - <div ng-repeat="jsyname in info.jsyNames"> | |
| 154 | + <div ng-repeat="jsyname in info.jsyNames track by $index"> | |
| 155 | 155 | <a href="#"> |
| 156 | 156 | <i class="fa fa-bus" aria-hidden="true"></i> |
| 157 | 157 | {{jsyname}} |
| ... | ... | @@ -159,7 +159,7 @@ |
| 159 | 159 | </div> |
| 160 | 160 | </div> |
| 161 | 161 | <div style="padding-left: 0px;" class="col-md-6"> |
| 162 | - <div ng-repeat="jsygh in info.jsyGhs"> | |
| 162 | + <div ng-repeat="jsygh in info.jsyGhs track by $index"> | |
| 163 | 163 | <a href="#"> |
| 164 | 164 | {{jsygh}} |
| 165 | 165 | </a> |
| ... | ... | @@ -170,7 +170,7 @@ |
| 170 | 170 | <td class="container-fluid"> |
| 171 | 171 | <div class="row"> |
| 172 | 172 | <div style="padding-right: 0px;" class="col-md-6"> |
| 173 | - <div ng-repeat="spyname in info.spyNames"> | |
| 173 | + <div ng-repeat="spyname in info.spyNames track by $index"> | |
| 174 | 174 | <a href="#"> |
| 175 | 175 | <i class="fa fa-ticket" aria-hidden="true"></i> |
| 176 | 176 | {{spyname}} |
| ... | ... | @@ -178,7 +178,7 @@ |
| 178 | 178 | </div> |
| 179 | 179 | </div> |
| 180 | 180 | <div style="padding-left: 0px;" class="col-md-6"> |
| 181 | - <div ng-repeat="spygh in info.spyGhs"> | |
| 181 | + <div ng-repeat="spygh in info.spyGhs track by $index"> | |
| 182 | 182 | <a href="#"> |
| 183 | 183 | {{spygh}} |
| 184 | 184 | </a> | ... | ... |
src/main/resources/xsd/vehicleSync.xsd
0 → 100644
| 1 | +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" | |
| 2 | + xmlns:tns="http://bsth.com/service/schedule/batch/webservice/vehicleSync" | |
| 3 | + targetNamespace="http://bsth.com/service/schedule/batch/webservice/vehicleSync" | |
| 4 | + elementFormDefault="qualified"> | |
| 5 | + | |
| 6 | + <!-- 车辆信息更新请求类型 --> | |
| 7 | + <xs:element name="addVehicleDataSyncRequest"> | |
| 8 | + <xs:complexType> | |
| 9 | + <xs:sequence> | |
| 10 | + <xs:element name="idenZbh" type="xs:string" /> | |
| 11 | + <xs:element name="idenCph" type="xs:string" /> | |
| 12 | + <xs:element name="updateGsmc" type="xs:string" /> | |
| 13 | + <xs:element name="updateFgsmc" type="xs:string" /> | |
| 14 | + <xs:element name="updateSfbf" type="xs:boolean" /> | |
| 15 | + </xs:sequence> | |
| 16 | + </xs:complexType> | |
| 17 | + </xs:element> | |
| 18 | + | |
| 19 | + <!-- 车辆信息更新返回类型 --> | |
| 20 | + <xs:element name="addVehicleDataSyncResponse"> | |
| 21 | + <xs:complexType> | |
| 22 | + <xs:sequence> | |
| 23 | + <xs:element name="success" type="xs:boolean"/> | |
| 24 | + <xs:element name="message" type="xs:string"/> | |
| 25 | + </xs:sequence> | |
| 26 | + </xs:complexType> | |
| 27 | + </xs:element> | |
| 28 | + | |
| 29 | +</xs:schema> | |
| 0 | 30 | \ No newline at end of file | ... | ... |