Commit b80cfadb authored by wangyecheng's avatar wangyecheng

策略管理干线列表 跟干线场景

parent f8fb72c8
......@@ -48,47 +48,6 @@ public class StrategyPriorityController {
@ApiOperation(value = "策略优先级日计划详情表详情", response = StrategyPriorityDailyInfo.class)
@GetMapping(value = "/info/{id}")
public Object info(@PathVariable Long id) {
Object data = strategyPriorityService.info(id);
return ResultGenerator.genSuccessResult(data);
}
@ApiOperation(value = "策略优先级日计划详情表新增")
@PostMapping(value = "/add")
public Object add(@Valid @RequestBody StrategyPriorityDailyInfo param) {
strategyPriorityService.add(param);
return ResultGenerator.genSuccessResult();
}
@ApiOperation(value = "策略优先级日计划详情表修改")
@PostMapping(value = "/modify")
public Object modify(@Valid @RequestBody StrategyPriorityDailyInfo param) {
strategyPriorityService.modify(param);
return ResultGenerator.genSuccessResult();
}
@ApiOperation(value = "策略优先级日计划详情表删除(单个条目)")
@GetMapping(value = "/remove/{id}")
public Object remove(@PathVariable Long id) {
strategyPriorityService.remove(id);
return ResultGenerator.genSuccessResult();
}
@ApiOperation(value = "策略优先级日计划详情表删除(多个条目)")
@PostMapping(value = "/removes")
public Object removes(@Valid @RequestBody List<Long> ids) {
strategyPriorityService.removes(ids);
return ResultGenerator.genSuccessResult();
}
//策略管理-路口列表
@ApiOperation(value = "策略管理-路口列表", notes = "查询全部记录", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,hidden = false)
@ApiImplicitParams({
......@@ -125,10 +84,10 @@ public class StrategyPriorityController {
@ApiOperation(value = "策略管理-场景", notes = "查询全部记录", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,hidden = false)
@GetMapping("/sceneList")
public JsonViewObject getSceneList(){
public JsonViewObject getSceneList(Integer type){
JsonViewObject jsonView = JsonViewObject.newInstance();
try {
List<StrategyFactoryEntity> retLineData=strategyPriorityService.getSceneList();
List<StrategyFactoryEntity> retLineData=strategyPriorityService.getSceneList(type);
jsonView.success(retLineData);
}catch (Exception e){
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
......@@ -253,4 +212,22 @@ public class StrategyPriorityController {
}
return jsonView;
}
/*
策略管理-干线列表
*/
@ApiOperation(value = "策略管理-干线列表", notes = "查询全部记录", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON,hidden = false)
@GetMapping("/getStrategyGreenWave")
public JsonViewObject getStrategyGreenWave(){
JsonViewObject jsonView = JsonViewObject.newInstance();
try {
List<StrategyPriorityDailyInfo> retLineData=strategyPriorityService.getStrategyGreenWave();
jsonView.success(retLineData);
}catch (Exception e){
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getStrategyGreenWave error", this.getClass().getSimpleName(), e);
}
return jsonView;
}
}
\ No newline at end of file
......@@ -55,7 +55,7 @@ public interface StrategyPriorityMapper extends BaseMapper<StrategyPriorityDaily
List<StrategyFactoryEntity> getStrategyList();
List<StrategyFactoryEntity> getSceneList();
List<StrategyFactoryEntity> getSceneList(Integer type);
List<StrategyFactoryEntity> getCompanyList();
......@@ -90,5 +90,7 @@ public interface StrategyPriorityMapper extends BaseMapper<StrategyPriorityDaily
void saveParamConfig(@Param("savePlanList") List<StrategyParameterConfig> savePlanList);
List<StrategyParameterConfig> getParamConfigData(String crossId);
List<StrategyPriorityDailyInfo> getStrategyGreenWave();
}
......@@ -51,5 +51,9 @@ public class StrategyPriorityConfig implements Serializable {
*/
private Integer greenId;
/**
* 区分1:路口,2干线
*/
private Integer type;
}
package net.wanji.opt.entity.strategy;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.*;
import java.io.Serializable;
import java.util.List;
import io.swagger.models.auth.In;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.baomidou.mybatisplus.annotation.TableName;
import net.wanji.opt.entity.comprehensivequery.CrossEntity;
@Data
@EqualsAndHashCode(callSuper=false)
......@@ -47,9 +48,20 @@ public class StrategyPriorityDailyInfo implements Serializable {
/**
* 干线名称 (路由列表返回用)
*/
@TableField(exist = false)
private String waveName;
/**
* 路口名称 (路由列表返回用)
*/
@TableField(exist = false)
private String crossName;
/**
* 干线ID 干线列表用
*/
@TableField(exist = false)
private Integer greenId;
}
......@@ -38,4 +38,6 @@ public class StrategyPriorityGroup {
private List<StrategyPriorityParamter> parameterConfigList;
// 调度配置表的配置信息
private StrategySchedulingParam schedulingParamters;
//1:路口,2干线
private Integer type;
}
......@@ -23,46 +23,11 @@ import java.util.Map;
*/
public interface StrategyPriorityService extends IService<StrategyPriorityDailyInfo> {
/**
* 策略优先级日计划详情表详情
* @param id
* @return
*/
StrategyPriorityDailyInfo info(Long id);
/**
* 策略优先级日计划详情表新增
* @param param 根据需要进行传值
* @return
*/
void add(StrategyPriorityDailyInfo param);
/**
* 策略优先级日计划详情表修改
* @param param 根据需要进行传值
* @return
*/
void modify(StrategyPriorityDailyInfo param);
/**
* 策略优先级日计划详情表删除(单个条目)
* @param id
* @return
*/
void remove(Long id);
/**
* 删除(多个条目)
* @param ids
* @return
*/
void removes(List<Long> ids);
List<StrategyPriorityDailyInfo>pageStrategyCrossList();
List<StrategyFactoryEntity> getStrategyList();
List<StrategyFactoryEntity> getSceneList();
List<StrategyFactoryEntity> getSceneList(Integer type);
List<StrategyFactoryEntity> getCompanyList();
......@@ -79,4 +44,6 @@ public interface StrategyPriorityService extends IService<StrategyPriorityDailyI
void saveParamterConfig(StrategyPriorityGroup strategyPriorityGroup) throws JsonProcessingException;
List<StrategyParameterConfig> getParamConfigData(String crossId);
List<StrategyPriorityDailyInfo> getStrategyGreenWave();
}
package net.wanji.opt.servicev2.strategy.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.nacos.common.utils.CollectionUtils;
......@@ -7,6 +8,9 @@ import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import net.wanji.opt.dao.mapper.strategy.StrategyPriorityMapper;
import net.wanji.opt.entity.comprehensivequery.CrossEntity;
import net.wanji.opt.entity.comprehensivequery.GreenAndCrossEntity;
import net.wanji.opt.entity.comprehensivequery.GreenTreeEntity;
import net.wanji.opt.entity.strategy.*;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.wanji.opt.entity.strategy.dto.StrategyPriorityGroup;
......@@ -17,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.*;
import java.util.stream.Collectors;
/**
* <p>
......@@ -33,62 +38,6 @@ import java.util.*;
@Resource
private StrategyPriorityMapper strategyPriorityMapper;
/**
* 策略优先级日计划详情表详情
* @param id
* @return
*/
@Override
public StrategyPriorityDailyInfo info(Long id) {
return getById(id);
}
/**
* 策略优先级日计划详情表新增
* @param param 根据需要进行传值
* @return
*/
@Override
public void add(StrategyPriorityDailyInfo param) {
save(param);
}
/**
* 策略优先级日计划详情表修改
* @param param 根据需要进行传值
* @return
*/
@Override
public void modify(StrategyPriorityDailyInfo param) {
updateById(param);
}
/**
* 策略优先级日计划详情表删除(单个条目)
* @param id
* @return
*/
@Override
public void remove(Long id) {
removeById(id);
}
/**
* 策略优先级日计划详情表删除(多个条目)
* @param ids
* @return
*/
@Override
public void removes(List<Long> ids) {
removeByIds(ids);
}
/**
* 策略路口列表
* @param
......@@ -117,8 +66,9 @@ import java.util.*;
* @return
*/
@Override
public List<StrategyFactoryEntity> getSceneList() {
List<StrategyFactoryEntity> strategyList= strategyPriorityMapper.getSceneList();
public List<StrategyFactoryEntity> getSceneList(Integer type) {
List<StrategyFactoryEntity> strategyList= strategyPriorityMapper.getSceneList(type);
return strategyList;
}
/**
......@@ -140,6 +90,8 @@ import java.util.*;
for (StrategyPriorityGroup group : dataList) {
String label = group.getLabel();
Integer labelCode = group.getLabelCode();
//1;路口2干线
Integer type = group.getType();
//路口id
List<String> crossList = group.getCrossIds();
//选中多个路口存多条数据
......@@ -162,7 +114,8 @@ import java.util.*;
strategyPriorityConfig.setStrategyNo(item.getStrategyNo());
//优先级
strategyPriorityConfig.setPriority(item.getPriority());
//type
strategyPriorityConfig.setType(type);
saveList.add(strategyPriorityConfig);
}
}
......@@ -183,7 +136,7 @@ import java.util.*;
//先获取策略编号
List<String> strategyNo = strategyPriorityMapper.getstrategyNo(crossId);
if (CollectionUtils.isEmpty(strategyNo)){
strategyNo.add("0");
return Collections.emptyList();
}
List<StrategyFactoryEntity> priorityList = strategyPriorityMapper.getPriorityConfigData(strategyNo,crossId);
return priorityList;
......@@ -301,4 +254,62 @@ import java.util.*;
}
}
/*
* 策略干线列表
* */
@Override
public List<StrategyPriorityDailyInfo> getStrategyGreenWave() {
try {
List<StrategyPriorityDailyInfo> queryResult= strategyPriorityMapper.getStrategyGreenWave();
Map<Integer, List<StrategyPriorityDailyInfo>> groupedData = queryResult.stream()
.collect(Collectors.groupingBy(StrategyPriorityDailyInfo::getGreenId));
// 格式化输出
List<StrategyPriorityDailyInfo> result = groupedData.entrySet().stream()
.map(entry -> {
//干线ID
int trunkId = entry.getKey();
List<StrategyPriorityDailyInfo> infos = entry.getValue();
// 创建新的对象
StrategyPriorityDailyInfo strategyPriorityDailyInfo=new StrategyPriorityDailyInfo();
// 提取干线名称(假设同一干线的名称相同)
String trunkName = infos.get(0).getWaveName();
// 按路口 ID 分组并合并日计划详情
Map<String, Set<String>> crossGroupedDetails = infos.stream()
.filter(info -> info.getDailyPlanDetails() != null)
.collect(Collectors.groupingBy(
StrategyPriorityDailyInfo::getCrossId,
Collectors.mapping(StrategyPriorityDailyInfo::getDailyPlanDetails, Collectors.toSet()))); // 去重
// 合并每个路口的日计划详情
String dailyPlanDetails = crossGroupedDetails.values().stream()
.map(set -> String.join(", ", set))
.collect(Collectors.joining(", "));
// 提取路口 ID 和路口名称
String roadIds = infos.stream()
.map(StrategyPriorityDailyInfo::getCrossId)
.collect(Collectors.joining(", "));
String roadNames = infos.stream()
.map(StrategyPriorityDailyInfo::getCrossName)
.collect(Collectors.joining(", "));
strategyPriorityDailyInfo.setGreenId(trunkId);
strategyPriorityDailyInfo.setWaveName(trunkName);
strategyPriorityDailyInfo.setCrossId(roadIds);
strategyPriorityDailyInfo.setCrossName(roadNames);
strategyPriorityDailyInfo.setDailyPlanDetails(dailyPlanDetails);
return strategyPriorityDailyInfo;
})
.collect(Collectors.toList());
// 输出结果
return result;
}catch (Exception e) {
log.error("{} getStrategyGreenWave", this.getClass().getSimpleName(), e);
throw e;
}
}
}
......@@ -138,6 +138,9 @@
FROM
t_strategy_factory_info
WHERE status='1'
<if test="type != null and type == 1">
AND type = 1
</if>
</select>
<select id="getCompanyList" resultType="net.wanji.opt.synthesis.pojo.StrategyFactoryEntity">
SELECT
......@@ -150,10 +153,10 @@
<insert id="savePriorityInsert" parameterType="java.util.List">
INSERT INTO
t_strategy_priority_config (cross_id,group_id,group_name,priority,strategy_no)
t_strategy_priority_config (cross_id,group_id,group_name,priority,strategy_no,type)
VALUES
<foreach collection="list" item="item" separator=",">
(#{item.crossId},#{item.groupId},#{item.groupName},#{item.priority},#{item.strategyNo})
(#{item.crossId},#{item.groupId},#{item.groupName},#{item.priority},#{item.strategyNo},#{item.type})
</foreach>
</insert>
......@@ -275,4 +278,14 @@
AND cross_id =#{crossId}
</if>
</select>
<select id="getStrategyGreenWave" parameterType="map" resultType="net.wanji.opt.entity.strategy.StrategyPriorityDailyInfo">
SELECT t1.green_id as greenId, t4.name as waveName, t1.cross_id as crossId,
t3.name as crossName,t1.sort,
t2.daily_plan_details as dailyPlanDetails
FROM t_greenwave_cross t1
LEFT JOIN t_strategy_priority_daily_info t2 on t1.cross_id = t2.cross_id and t2.type=2
LEFT JOIN t_base_cross_info t3 on t1.cross_id = t3.id
LEFT JOIN t_greenwave_info t4 on t1.green_id = t4.id
</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