Commit 704eacde authored by 董国亮's avatar 董国亮

修订绿波下发接口1、增加分方向 2、添加历史记录推荐速度字段

parent f6fed476
......@@ -69,6 +69,38 @@
<elastic-data-version>2.6.3</elastic-data-version>
</properties>
<!--部署私服配置-->
<distributionManagement>
<repository>
<id>releases</id>
<url>http://106.120.201.126:14729/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://106.120.201.126:14729/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<!--maven仓库配置-->
<repositories>
<repository>
<id>releases</id>
<url>http://106.120.201.126:14729/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
<repository>
<id>snapshots</id>
<url>http://106.120.201.126:14729/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
</repositories>
<!-- 依赖声明 -->
<dependencyManagement>
<dependencies>
......
......@@ -3,29 +3,25 @@ package net.wanji.opt.controller.induce;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.Constants;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.framework.rest.Page;
import net.wanji.common.framework.rest.ValidationGroups;
import net.wanji.common.utils.tool.DateUtil;
import net.wanji.common.utils.tool.StringUtils;
import net.wanji.databus.dao.entity.GreenwaveInfoPO;
import net.wanji.databus.dao.mapper.GreenwaveInfoMapper;
import net.wanji.opt.dao.mapper.induce.GreenwaveInducesHistMapper;
import net.wanji.opt.dto.induce.GreenwaveDirDTO;
import net.wanji.opt.dto.induce.GreenwaveInducesDTO;
import net.wanji.opt.dto.induce.InduceDTO;
import net.wanji.opt.entity.DeviceInduces;
import net.wanji.opt.entity.GreenwaveInduces;
import net.wanji.opt.entity.GreenwaveInducesHist;
import net.wanji.opt.entity.InduceTemplate;
import net.wanji.opt.service.DeviceInducesService;
import net.wanji.opt.service.induce.GreenwaveInducesHistService;
import net.wanji.opt.service.induce.GreenwaveInducesService;
import net.wanji.opt.service.induce.InduceTemplateService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
......@@ -33,9 +29,9 @@ import javax.annotation.Resource;
import javax.validation.constraints.NotBlank;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import java.math.BigDecimal;
import java.text.ParseException;
import java.util.*;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Collectors;
import static org.codehaus.groovy.runtime.DefaultGroovyMethods.collect;
......@@ -83,40 +79,45 @@ public class GreenwaveInducesHistController {
JsonViewObject jsonView = JsonViewObject.newInstance();
long start = System.currentTimeMillis();
try {
List<GreenwaveInducesDTO> list = new ArrayList<>();
List<GreenwaveInfoPO> greenwaveInfoPOList = greenwaveInfoMapper.selectAll();
List<GreenwaveInduces> greenwaveInducesList = greenwaveInducesService.list();
// List<InduceTemplate> induceTemplateList = induceTemplateService.list();
List<DeviceInduces> deviceInducesList = deviceInducesService.list();
this.greenwaveInducesHistService.list().stream().forEach(o -> {
GreenwaveInducesDTO greenwaveInducesDTO = new GreenwaveInducesDTO();
greenwaveInducesDTO.setGreenId(o.getGreenId());
greenwaveInducesDTO.setDir(o.getDir());
//这里从绿波表里获取基本信息
List<GreenwaveInfoPO> greenwaveInfoByGreenId = greenwaveInfoPOList.stream().filter(n -> n.getId().equals(o.getGreenId())).collect(Collectors.toList());// 过滤条件// 收集结果
if (Objects.nonNull(greenwaveInfoByGreenId) && greenwaveInfoByGreenId.size() > 0) {
greenwaveInducesDTO.setGreenName(greenwaveInfoByGreenId.get(0).getName());
greenwaveInducesDTO.setDesignSpeed(greenwaveInfoByGreenId.get(0).getDesignSpeed());
}
greenwaveInducesDTO.setStatus(o.getStatus());
greenwaveInducesDTO.setStrategyId(o.getStrategyId());
greenwaveInducesDTO.setStrategyName(o.getStrategyName());
greenwaveInducesDTO.setMinSpeed(o.getMinSpeed());
greenwaveInducesDTO.setMinSpeed(o.getMaxSpeed());
if(Objects.nonNull(o.getControlOptTimes()) && o.getControlOptTimes().split("\\|").length>0) {
List<GreenwaveInducesDTO> greenwaveInfoList = new ArrayList<>();
greenwaveInfoPOList.stream().forEach(x -> {
GreenwaveInducesDTO greenwaveInducesDTO = new GreenwaveInducesDTO();
greenwaveInducesDTO.setGreenId(x.getId());
greenwaveInducesDTO.setGreenName(x.getName());
greenwaveInducesDTO.setDesignSpeed(x.getDesignSpeed());
greenwaveInducesDTO.setStatus(x.getStatus());
greenwaveInducesDTO.setWkt(x.getWkt());
AtomicReference<Integer> equipCount= new AtomicReference<>(0);
List<GreenwaveDirDTO> dirList = new ArrayList<>();
this.greenwaveInducesHistService.list().stream().filter(o->Objects.isNull(o.getGreenId()) || o.getGreenId().equals(x.getId())).forEach(o -> {
GreenwaveDirDTO greenwaveDirDTO=new GreenwaveDirDTO();
greenwaveDirDTO.setDir(o.getDir());
greenwaveDirDTO.setStrategyId(o.getStrategyId());
greenwaveDirDTO.setStrategyName(o.getStrategyName());
greenwaveDirDTO.setMinSpeed(o.getMinSpeed());
greenwaveDirDTO.setMinSpeed(o.getMaxSpeed());
if (Objects.nonNull(o.getControlOptTimes()) && o.getControlOptTimes().split("\\|").length > 0) {
try {
String startTime = DateUtil.format(DateUtil.parse(o.getControlOptTimes().split("\\|")[0], Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND), Constants.DATE_FORMAT.E_DATE_FORMAT_TIME);
String endTime = DateUtil.format(DateUtil.parse(o.getControlOptTimes().split("\\|")[1], Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND), Constants.DATE_FORMAT.E_DATE_FORMAT_TIME);
greenwaveInducesDTO.setControlOptTimes(startTime.substring(0,startTime.lastIndexOf(":00"))+"-"+endTime.substring(0,endTime.lastIndexOf(":00")));
}catch (ParseException ex){ex.printStackTrace();
greenwaveInducesDTO.setControlOptTimes(o.getControlOptTimes());
greenwaveDirDTO.setControlOptTimes(startTime.substring(0, startTime.lastIndexOf(":00")) + "-" + endTime.substring(0, endTime.lastIndexOf(":00")));
} catch (ParseException ex) {
ex.printStackTrace();
greenwaveDirDTO.setControlOptTimes(o.getControlOptTimes());
}
}else {
greenwaveInducesDTO.setControlOptTimes(o.getControlOptTimes());
} else {
greenwaveDirDTO.setControlOptTimes(o.getControlOptTimes());
}
//获取诱导屏列表
List<InduceDTO> induceDTOList = new ArrayList<>();
greenwaveInducesList.stream().filter(x -> Objects.nonNull(x.getGreenId()) && x.getGreenId().equals(o.getGreenId())).forEach(n -> {
greenwaveInducesList.stream().filter(l -> Objects.nonNull(l.getGreenId()) && l.getGreenId().equals(o.getGreenId())).forEach(n -> {
InduceDTO induceDTO = new InduceDTO();
induceDTO.setId(n.getId());
induceDTO.setEquipCode(n.getEquipCode());
......@@ -134,11 +135,15 @@ public class GreenwaveInducesHistController {
//induceDTO.setInduceTemplateList(induceTemplateList.stream().filter(x->Objects.isNull(x.getEquipCode()) || x.getEquipCode().equals(n.getEquipCode())).collect(Collectors.toList()));
induceDTOList.add(induceDTO);
});
greenwaveInducesDTO.setInduceList(induceDTOList);
greenwaveInducesDTO.setEquipCount(induceDTOList.size());
list.add(greenwaveInducesDTO);
greenwaveDirDTO.setInduceList(induceDTOList);
equipCount.updateAndGet(v -> v + induceDTOList.size());
dirList.add(greenwaveDirDTO);
});
greenwaveInducesDTO.setGreenwaveDirList(dirList);
greenwaveInducesDTO.setEquipCount(equipCount.get());
greenwaveInfoList.add(greenwaveInducesDTO);
});
jsonView.success(list);
jsonView.success(greenwaveInfoList);
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
......@@ -155,9 +160,9 @@ public class GreenwaveInducesHistController {
*/
@ApiOperation(value = "根据条件查询记录", notes = "根据条件查询记录", response = JsonViewObject.class, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/byCondition", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
JsonViewObject getByWhere(@ApiParam(value = "查询条件", required = true) @RequestBody @Validated({ValidationGroups.Query.class}) GreenwaveInducesHist GreenwaveInducesHist){
JsonViewObject getByWhere(@ApiParam(value = "查询条件", required = true) @RequestBody @Validated({ValidationGroups.Query.class}) GreenwaveInducesHist GreenwaveInducesHist) {
JsonViewObject jsonView = JsonViewObject.newInstance();
long start=System.currentTimeMillis();
long start = System.currentTimeMillis();
String jsonStr = JSON.toJSONString(GreenwaveInducesHist);
try {
......@@ -165,42 +170,47 @@ public class GreenwaveInducesHistController {
Map params = JSONObject.parseObject(JSONObject.toJSONString(GreenwaveInducesHist), Map.class);
// Map<String, Object> params = new HashMap<>();
// JSONObject.parseObject(JSONObject.toJSONString(GreenwaveInducesHist), Map.class).forEach((k,v) -> params.put(StringUtils.camelToCapital(k.toString()).toLowerCase(), v));
List<GreenwaveInducesDTO> list = new ArrayList<>();
List<GreenwaveInducesHist> greenwaveInducesHistList = this.greenwaveInducesHistMapper.findByMap(params);
List<GreenwaveInfoPO> greenwaveInfoPOList = greenwaveInfoMapper.selectAll();
List<GreenwaveInducesHist> greenwaveInducesHistList = this.greenwaveInducesHistService.list();
List<GreenwaveInfoPO> greenwaveInfoPOList = greenwaveInfoMapper.findByMap(params);
List<GreenwaveInduces> greenwaveInducesList = greenwaveInducesService.list();
// List<InduceTemplate> induceTemplateList = induceTemplateService.list();
List<DeviceInduces> deviceInducesList = deviceInducesService.list();
greenwaveInducesHistList.stream().forEach(o -> {
List<GreenwaveInducesDTO> greenwaveInfoList = new ArrayList<>();
greenwaveInfoPOList.stream().forEach(x -> {
GreenwaveInducesDTO greenwaveInducesDTO = new GreenwaveInducesDTO();
greenwaveInducesDTO.setGreenId(o.getGreenId());
greenwaveInducesDTO.setDir(o.getDir());
greenwaveInducesDTO.setGreenId(x.getId());
greenwaveInducesDTO.setGreenName(x.getName());
greenwaveInducesDTO.setDesignSpeed(x.getDesignSpeed());
greenwaveInducesDTO.setWkt(x.getWkt());
greenwaveInducesDTO.setStatus(x.getStatus());
AtomicReference<Integer> equipCount = new AtomicReference<>(0);
List<GreenwaveDirDTO> dirList = new ArrayList<>();
greenwaveInducesHistList.stream().filter(o->Objects.isNull(o.getGreenId()) || o.getGreenId().equals(x.getId())).forEach(o -> {
GreenwaveDirDTO greenwaveDirDTO = new GreenwaveDirDTO();
//这里从绿波表里获取基本信息
List<GreenwaveInfoPO> greenwaveInfoByGreenId = greenwaveInfoPOList.stream().filter(n -> n.getId().equals(o.getGreenId())).collect(Collectors.toList());// 过滤条件// 收集结果
if (Objects.nonNull(greenwaveInfoByGreenId) && greenwaveInfoByGreenId.size() > 0) {
greenwaveInducesDTO.setGreenName(greenwaveInfoByGreenId.get(0).getName());
greenwaveInducesDTO.setDesignSpeed(greenwaveInfoByGreenId.get(0).getDesignSpeed());
greenwaveInducesDTO.setWkt(greenwaveInfoByGreenId.get(0).getWkt());
}
greenwaveInducesDTO.setStatus(o.getStatus());
greenwaveInducesDTO.setStrategyId(o.getStrategyId());
greenwaveInducesDTO.setStrategyName(o.getStrategyName());
greenwaveInducesDTO.setMinSpeed(o.getMinSpeed());
greenwaveInducesDTO.setMinSpeed(o.getMaxSpeed());
if(Objects.nonNull(o.getControlOptTimes()) && o.getControlOptTimes().split("\\|").length>0) {
greenwaveDirDTO.setDir(o.getDir());
greenwaveDirDTO.setStrategyId(o.getStrategyId());
greenwaveDirDTO.setStrategyName(o.getStrategyName());
greenwaveDirDTO.setMinSpeed(o.getMinSpeed());
greenwaveDirDTO.setMinSpeed(o.getMaxSpeed());
if (Objects.nonNull(o.getControlOptTimes()) && o.getControlOptTimes().split("\\|").length > 0) {
try {
String startTime = DateUtil.format(DateUtil.parse(o.getControlOptTimes().split("\\|")[0], Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND), Constants.DATE_FORMAT.E_DATE_FORMAT_TIME);
String endTime = DateUtil.format(DateUtil.parse(o.getControlOptTimes().split("\\|")[1], Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND), Constants.DATE_FORMAT.E_DATE_FORMAT_TIME);
greenwaveInducesDTO.setControlOptTimes(startTime.substring(0,startTime.lastIndexOf(":00"))+"-"+endTime.substring(0,endTime.lastIndexOf(":00")));
}catch (ParseException ex){ex.printStackTrace();
greenwaveInducesDTO.setControlOptTimes(o.getControlOptTimes());
greenwaveDirDTO.setControlOptTimes(startTime.substring(0, startTime.lastIndexOf(":00")) + "-" + endTime.substring(0, endTime.lastIndexOf(":00")));
} catch (ParseException ex) {
ex.printStackTrace();
greenwaveDirDTO.setControlOptTimes(o.getControlOptTimes());
}
}else{
greenwaveInducesDTO.setControlOptTimes(o.getControlOptTimes());
} else {
greenwaveDirDTO.setControlOptTimes(o.getControlOptTimes());
}
//获取诱导屏列表
List<InduceDTO> induceDTOList = new ArrayList<>();
greenwaveInducesList.stream().filter(x -> Objects.nonNull(x.getGreenId()) && x.getGreenId().equals(o.getGreenId())).forEach(n -> {
greenwaveInducesList.stream().filter(l -> Objects.nonNull(l.getGreenId()) && l.getGreenId().equals(o.getGreenId())).forEach(n -> {
InduceDTO induceDTO = new InduceDTO();
induceDTO.setId(n.getId());
induceDTO.setEquipCode(n.getEquipCode());
......@@ -218,11 +228,15 @@ public class GreenwaveInducesHistController {
//induceDTO.setInduceTemplateList(induceTemplateList.stream().filter(x -> Objects.isNull(x.getEquipCode()) || x.getEquipCode().equals(n.getEquipCode())).collect(Collectors.toList()));
induceDTOList.add(induceDTO);
});
greenwaveInducesDTO.setInduceList(induceDTOList);
greenwaveInducesDTO.setEquipCount(induceDTOList.size());
list.add(greenwaveInducesDTO);
greenwaveDirDTO.setInduceList(induceDTOList);
equipCount.updateAndGet(v -> v + induceDTOList.size());
dirList.add(greenwaveDirDTO);
});
greenwaveInducesDTO.setGreenwaveDirList(dirList);
greenwaveInducesDTO.setEquipCount(equipCount.get());
greenwaveInfoList.add(greenwaveInducesDTO);
});
jsonView.success(list);
jsonView.success(greenwaveInfoList);
} catch (Exception e) {
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getByWhere error,jsonStr:{}", this.getClass().getSimpleName(), jsonStr, e);
......
......@@ -63,7 +63,7 @@ public class InduceSendController {
param.setEndTime(greenwaveInducesHistList.get(0).getControlOptTimes().split("\\|")[1]);
} else {
param.setStartTime(DateUtil.format(new Date(), Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND));
param.setEndTime(DateUtil.format(System.currentTimeMillis() + 1000 * 30, Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND));
param.setEndTime(DateUtil.format(System.currentTimeMillis() + 1000 * 60, Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND));
}
}
induceSendService.send(param);
......
package net.wanji.opt.dto.induce;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@NoArgsConstructor
@Data
public class GreenwaveDirDTO {
@ApiModelProperty(name = "当前策略")
private Integer strategyId;
@ApiModelProperty(name = "策略名称")
private String strategyName;
@ApiModelProperty(name = "绿波方向:1 南向北 2 西向东 3 北向南 4 东向西")
private Integer dir;
@ApiModelProperty(name = "推荐最小速度")
private Double minSpeed;
@ApiModelProperty(name = "推荐最大速度")
private Double maxSpeed;
@ApiModelProperty(name = "执行时段")
private String controlOptTimes;
@ApiModelProperty(name = "诱导屏列表")
private List<InduceDTO> induceList;
}
......@@ -25,26 +25,8 @@ public class GreenwaveInducesDTO {
@ApiModelProperty(name = "发布状态")
private Integer status ;
@ApiModelProperty(name = "当前策略")
private Integer strategyId;
@ApiModelProperty(name = "策略名称")
private String strategyName;
@ApiModelProperty(name = "绿波方向:1 南向北 2 西向东 3 北向南 4 东向西")
private Integer dir;
@ApiModelProperty(name = "推荐最小速度")
private Double minSpeed;
@ApiModelProperty(name = "推荐最大速度")
private Double maxSpeed;
@ApiModelProperty(name = "执行时段")
private String controlOptTimes;
@ApiModelProperty(name = "诱导屏列表")
private List<InduceDTO> induceList;
@ApiModelProperty(name="绿波方向")
private List<GreenwaveDirDTO> greenwaveDirList;
@ApiModelProperty(name = "绿波带坐标")
private String wkt;
......
......@@ -54,6 +54,12 @@ public class InduceHist implements Serializable {
@TableField("file_path")
private String filePath;
/**
* 建议速度
*/
@TableField("induce_speed")
private String induceSpeed;
/**
* 创建时间
*/
......
......@@ -113,6 +113,9 @@ public class InduceSendServiceImpl implements InduceSendService {
String filePath = uploadFile(image,dirName, fileName);
param.setFtpPath(filePath);
induceHist.setFilePath(PATH + dirName+"/"+fileName);
if(Objects.nonNull(param.getContents()) && param.getContents().length>0) {
induceHist.setInduceSpeed(param.getContents()[0]);
}
if(Objects.nonNull(greenwaveinduces)) {
greenwaveinduces.setSourceId(PATH + dirName + "/" + fileName);
}
......@@ -146,7 +149,8 @@ public class InduceSendServiceImpl implements InduceSendService {
// messageProperties.setContentType("text/plain"); // 设置内容类型为text/plain
// 创建Message并设置内容
// Message messageSend = new Message(message.getBytes(), messageProperties);
if(sending) {
if(sending)
{
rabbitTemplate.convertAndSend("", queueName, message);
}
log.info("mqtt发送信息-topic:{},queueName:{},message:{}", queueName, message);
......
......@@ -5,6 +5,7 @@ import net.wanji.databus.vo.GreenwaveListVO;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;
/**
* 态势监测-绿波基础信息
......@@ -23,4 +24,6 @@ public interface GreenwaveInfoMapper {
List<GreenwaveInfoPO> selectAll();
GreenwaveInfoPO selectByName(String greenwaveName);
List<GreenwaveInfoPO> findByMap(Map params);
}
......@@ -48,4 +48,13 @@
where name = #{greenwaveName}
</select>
<select id="findByMap" resultType="net.wanji.databus.dao.entity.GreenwaveInfoPO" parameterType="java.util.Map">
SELECT <include refid="Base_Column_List"></include>
FROM t_greenwave_info WHERE 1=1
<if test="keyword != null and keyword != ''">
AND ( locate(#{keyword,jdbcType=VARCHAR}, `name`)>0 )
</if>
</select>
</mapper>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment