Commit 5409c18c authored by 黄伟铭's avatar 黄伟铭

Merge remote-tracking branch 'origin/master'

parents d47d214a 9425fbeb
package net.wanji.opt.controllerv2.strategy;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.entity.eventoptimize.TEventOptimizeInfo;
import net.wanji.opt.entity.strategy.StrategyPriorityDailyInfo;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import net.wanji.opt.servicev2.strategy.StrategyPriorityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import net.wanji.opt.api.ResultGenerator;
import javax.validation.Valid;
import javax.ws.rs.core.MediaType;
import java.util.List;
import java.util.Map;
/**
* <p>
* 策略优先级日计划详情表 前端控制器
* </p>
*
* @author fengyi
* @since 2025-03-28
*/
@Api(tags = "策略优先级日计划详情表")
@RestController
@RequestMapping("/strategy-priority")
@Slf4j
public class StrategyPriorityController {
@Autowired
private StrategyPriorityService strategyPriorityService;
@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({
// @ApiImplicitParam(name = "crossId", value = "路口id", required = false, dataType = "String"),
})
@GetMapping("/strategyCrossList")
public JsonViewObject pageStrategyCrossList(){
JsonViewObject jsonView = JsonViewObject.newInstance();
try {
List<StrategyPriorityDailyInfo> retLineData=strategyPriorityService.pageStrategyCrossList();
jsonView.success(retLineData);
}catch (Exception e){
jsonView.fail(I18nResourceBundle.getConstants("GET_FAILED_MSG"));
log.error("{} getAll error", this.getClass().getSimpleName(), e);
}
return jsonView;
}
}
\ No newline at end of file
package net.wanji.opt.dao.mapper.strategy;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.wanji.opt.entity.strategy.StrategyPriorityDailyInfo;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface StrategyPriorityMapper extends BaseMapper<StrategyPriorityDailyInfo>{
/**
* 查询表t_strategy_priority_daily_info所有信息
*/
List<StrategyPriorityDailyInfo> findAllStrategyPriorityDailyInfo();
/**
* 根据主键id查询表t_strategy_priority_daily_info信息
* @param id
*/
StrategyPriorityDailyInfo findStrategyPriorityDailyInfoByid(@Param("id") Long id);
/**
* 根据条件查询表t_strategy_priority_daily_info信息
* @param strategyPriorityDailyInfo
*/
List<StrategyPriorityDailyInfo> findStrategyPriorityDailyInfoByCondition(StrategyPriorityDailyInfo strategyPriorityDailyInfo);
/**
* 根据主键id查询表t_strategy_priority_daily_info信息
* @param id
*/
Integer deleteStrategyPriorityDailyInfoByid(@Param("id") Long id);
/**
* 根据主键id更新表t_strategy_priority_daily_info信息
* @param strategyPriorityDailyInfo
*/
Integer updateStrategyPriorityDailyInfoByid(StrategyPriorityDailyInfo strategyPriorityDailyInfo);
/**
* 新增表t_strategy_priority_daily_info信息
* @param strategyPriorityDailyInfo
*/
Integer addStrategyPriorityDailyInfo(StrategyPriorityDailyInfo strategyPriorityDailyInfo);
List<StrategyPriorityDailyInfo> pageStrategyCrossList();
}
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 java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.baomidou.mybatisplus.annotation.TableName;
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("t_strategy_priority_config")
public class StrategyPriorityConfig implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 自增主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 分组编号
*/
private Integer groupId;
/**
* 分组名称
*/
private String groupName;
/**
* 优先级
*/
private Integer priority;
/**
* 策略编号
*/
private String strategyNo;
/**
* 路口编号
*/
private String crossId;
/**
* 路口所属绿波带编号
*/
private Integer greenId;
}
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 java.io.Serializable;
import lombok.Data;
import lombok.EqualsAndHashCode;
import com.baomidou.mybatisplus.annotation.TableName;
@Data
@EqualsAndHashCode(callSuper=false)
@TableName("t_strategy_priority_daily_info")
public class StrategyPriorityDailyInfo implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 自增主键
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 日计划编号
*/
private Integer dailyPlanId;
/**
* 执行时间:周日 0;周一 1; 周二 2; 周三 3
*/
private String weekExecute;
/**
* 日计划时段执行详情
*/
private String dailyPlanDetails;
/**
* 路口编号
*/
private String crossId;
//非数据库字段
/**
* 干线名称
*/
private String waveName;
/**
* 路口名称
*/
private String crossName;
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.opt.dao.mapper.strategy.StrategyPriorityMapper">
<!-- 通用设置 -->
<!-- 通用查询列 -->
<sql id="Base_Column_List">
id, daily_plan_id, week_execute, daily_plan_details, cross_id
</sql>
<!-- 通用条件列 -->
<sql id="StrategyPriorityDailyInfoByCondition">
<if test="id!=null and id!=''">
AND id = #{id}
</if>
<if test="dailyPlanId!=null and dailyPlanId!=''">
AND daily_plan_id = #{dailyPlanId}
</if>
<if test="weekExecute!=null and weekExecute!=''">
AND week_execute = #{weekExecute}
</if>
<if test="dailyPlanDetails!=null and dailyPlanDetails!=''">
AND daily_plan_details = #{dailyPlanDetails}
</if>
<if test="crossId!=null and crossId!=''">
AND cross_id = #{crossId}
</if>
</sql>
<!-- 通用设置列 -->
<sql id="StrategyPriorityDailyInfoSetColumns">
<if test="dailyPlanId!=null and dailyPlanId!=''">
daily_plan_id = #{dailyPlanId},
</if>
<if test="weekExecute!=null and weekExecute!=''">
week_execute = #{weekExecute},
</if>
<if test="dailyPlanDetails!=null and dailyPlanDetails!=''">
daily_plan_details = #{dailyPlanDetails},
</if>
<if test="crossId!=null and crossId!=''">
cross_id = #{crossId},
</if>
</sql>
<!-- 通用查询映射结果 -->
<resultMap id="StrategyPriorityDailyInfoMap" type="net.wanji.opt.entity.strategy.StrategyPriorityDailyInfo">
<id column="id" property="id"/>
<result column="daily_plan_id" property="dailyPlanId"/>
<result column="week_execute" property="weekExecute"/>
<result column="daily_plan_details" property="dailyPlanDetails"/>
<result column="cross_id" property="crossId"/>
</resultMap>
<!-- 查询表t_strategy_priority_daily_info所有信息 -->
<select id="findAllStrategyPriorityDailyInfo" resultMap="StrategyPriorityDailyInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_strategy_priority_daily_info
</select>
<!-- 根据主键id查询表t_strategy_priority_daily_info信息 -->
<select id="findStrategyPriorityDailyInfoByid" resultMap="StrategyPriorityDailyInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_strategy_priority_daily_info
WHERE id=#{id}
</select>
<!-- 根据条件查询表t_strategy_priority_daily_info信息 -->
<select id="findStrategyPriorityDailyInfoByCondition" resultMap="StrategyPriorityDailyInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_strategy_priority_daily_info
WHERE 1=1
<include refid="StrategyPriorityDailyInfoByCondition" />
</select>
<!-- 根据主键id删除表t_strategy_priority_daily_info信息 -->
<delete id="deleteStrategyPriorityDailyInfoByid">
DELETE FROM
t_strategy_priority_daily_info
WHERE id=#{id}
</delete>
<!-- 根据主键id更新表t_strategy_priority_daily_info信息 -->
<update id="updateStrategyPriorityDailyInfoByid" parameterType="net.wanji.opt.entity.strategy.StrategyPriorityDailyInfo">
UPDATE t_strategy_priority_daily_info
<set>
<include refid="StrategyPriorityDailyInfoSetColumns"/>
</set>
WHERE
id=#{id}
</update>
<!-- 新增表t_strategy_priority_daily_info信息 -->
<insert id="addStrategyPriorityDailyInfo">
INSERT INTO t_strategy_priority_daily_info (
id
,daily_plan_id
,week_execute
,daily_plan_details
,cross_id
) VALUES (
#{id}
,#{dailyPlanId}
,#{weekExecute}
,#{dailyPlanDetails}
,#{crossId}
)
</insert>
</mapper>
......@@ -6,6 +6,7 @@ import net.wanji.common.utils.tool.DateUtil;
import net.wanji.opt.common.EsDateIndexUtil;
import net.wanji.opt.dao.mapper.judgeanalysis.AnalysisProblemCrossDayMapper;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemCrossDay;
import net.wanji.opt.entity.judgeanalysis.AnalysisProblemGreenDay;
import net.wanji.opt.entity.judgeanalysis.CrossPoint;
import net.wanji.opt.servicev2.judgeanalysis.AnalysisProblemCrossDayService;
import net.wanji.opt.synthesis.pojo.CrossOptAnalysisEntity;
......@@ -164,22 +165,26 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb
List<AnalysisProblemCrossDay> value = entry.getValue();
String typeName = value.get(0).getTypeName();
//有实际数据的时刻点
Set<String> timeList = value.stream().map(po -> po.getDt().toString()).collect(Collectors.toSet());
//补充缺少时段数据,保留时段字段默认值
for (String timesing : sortedSet) {
if (!timeList.contains(timesing)) {
AnalysisProblemCrossDay analysisProblemCrossDay = new AnalysisProblemCrossDay();
analysisProblemCrossDay.setDt(Integer.valueOf(timesing));
value.add(analysisProblemCrossDay);
}
}
value.stream().sorted(Comparator.comparing(AnalysisProblemCrossDay::getDt)).collect(Collectors.toList());
List<Integer> numberlist = value.stream().map(AnalysisProblemCrossDay::getEventNumber).collect(Collectors.toList());
// 构造一个Map用于快速查找已有数据点
Map<String, Integer> existingDataPoints = value.stream()
.collect(Collectors.toMap(po -> po.getDt().toString(), AnalysisProblemCrossDay::getEventNumber));
// 构造一个Map用于快速查找时长已有数据点
Map<String, Integer> existingDate = value.stream()
.collect(Collectors.toMap(po -> po.getDt().toString(), AnalysisProblemCrossDay::getEventTotalTime));
// 对于每个时间点,如果不存在数据则补0
List<Integer> numberlist = sortedSet.stream()
.map(timePoint -> existingDataPoints.getOrDefault(timePoint, 0))
.collect(Collectors.toList());
// 对于每个时间点,如果时长不存在数据则补0
List<Integer> durationList = sortedSet.stream()
.map(timePoint -> existingDate.getOrDefault(timePoint, 0))
.collect(Collectors.toList());
Map<String, Object> maplist = new HashMap<>();
maplist.put("eventType", key);
maplist.put("eventLabel", typeName);
maplist.put("list", numberlist);
maplist.put("durationList",durationList);
allList.add(maplist);
}
......
......@@ -159,15 +159,23 @@ import java.util.stream.Collectors;
// 构造一个Map用于快速查找已有数据点
Map<String, Integer> existingDataPoints = value.stream()
.collect(Collectors.toMap(po -> po.getDt().toString(), AnalysisProblemGreenDay::getEventNumber));
// 构造一个Map用于快速查找时长已有数据点
Map<String, Integer> existingDate = value.stream()
.collect(Collectors.toMap(po -> po.getDt().toString(), AnalysisProblemGreenDay::getEventTotalTime));
// 对于每个时间点,如果不存在数据则补0
List<Integer> numberList = sortedSet.stream()
.map(timePoint -> existingDataPoints.getOrDefault(timePoint, 0))
.collect(Collectors.toList());
// 对于每个时间点,如果时长不存在数据则补0
List<Integer> durationList = sortedSet.stream()
.map(timePoint -> existingDate.getOrDefault(timePoint, 0))
.collect(Collectors.toList());
Map<String,Object>mapList=new HashMap<>();
mapList.put("eventType",key);
mapList.put("eventLabel",typeName);
mapList.put("list",numberList);
mapList.put("durationList",durationList);
allList.add(mapList);
}
......
package net.wanji.opt.servicev2.strategy;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.wanji.opt.entity.strategy.StrategyPriorityDailyInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
import java.util.Map;
/**
* <p>
* 策略优先级日计划详情表 服务类
* </p>
*
* @author fengyi
* @since 2025-03-28
*/
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();
}
package net.wanji.opt.servicev2.strategy.impl;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.wanji.opt.dao.mapper.strategy.StrategyPriorityMapper;
import net.wanji.opt.entity.strategy.StrategyPriorityDailyInfo;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import net.wanji.opt.servicev2.strategy.StrategyPriorityService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
import java.util.Map;
/**
* <p>
* 策略优先级日计划详情表 服务实现类
* </p>
*
* @author fengyi
* @since 2025-03-28
*/
@Service
public class StrategyPriorityServiceImpl extends ServiceImpl<StrategyPriorityMapper, StrategyPriorityDailyInfo> implements StrategyPriorityService {
@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);
}
@Override
public List<StrategyPriorityDailyInfo> pageStrategyCrossList() {
List<StrategyPriorityDailyInfo> allList= strategyPriorityMapper.pageStrategyCrossList();
return allList ;
}
}
......@@ -68,5 +68,6 @@
WHERE (#{startTime} IS NULL OR happen_start_time>=#{startTime})
AND (#{endTime} IS NULL OR happen_end_time &lt;=#{endTime})
AND (#{greenId} IS NULL OR green_id =#{greenId})
ORDER BY happen_start_time desc
</select>
</mapper>
\ No newline at end of file
......@@ -323,6 +323,7 @@
SELECT
dt,
sum( event_number ) AS event_number,
sum(event_total_time) AS event_total_time,
t1.event_type,
t2.label AS typeName
FROM t_analysis_problem_cross_day t1
......
......@@ -258,6 +258,7 @@
SELECT
dt,
sum( event_number ) AS event_number,
sum(event_total_time) As event_total_time,
t1.event_type,
t2.label AS typeName
FROM t_analysis_problem_green_day t1
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="net.wanji.opt.dao.mapper.strategy.StrategyPriorityMapper">
<!-- 通用设置 -->
<!-- 通用查询列 -->
<sql id="Base_Column_List">
id, daily_plan_id, week_execute, daily_plan_details, cross_id
</sql>
<!-- 通用条件列 -->
<sql id="StrategyPriorityDailyInfoByCondition">
<if test="id!=null and id!=''">
AND id = #{id}
</if>
<if test="dailyPlanId!=null and dailyPlanId!=''">
AND daily_plan_id = #{dailyPlanId}
</if>
<if test="weekExecute!=null and weekExecute!=''">
AND week_execute = #{weekExecute}
</if>
<if test="dailyPlanDetails!=null and dailyPlanDetails!=''">
AND daily_plan_details = #{dailyPlanDetails}
</if>
<if test="crossId!=null and crossId!=''">
AND cross_id = #{crossId}
</if>
</sql>
<!-- 通用设置列 -->
<sql id="StrategyPriorityDailyInfoSetColumns">
<if test="dailyPlanId!=null and dailyPlanId!=''">
daily_plan_id = #{dailyPlanId},
</if>
<if test="weekExecute!=null and weekExecute!=''">
week_execute = #{weekExecute},
</if>
<if test="dailyPlanDetails!=null and dailyPlanDetails!=''">
daily_plan_details = #{dailyPlanDetails},
</if>
<if test="crossId!=null and crossId!=''">
cross_id = #{crossId},
</if>
</sql>
<!-- 通用查询映射结果 -->
<resultMap id="StrategyPriorityDailyInfoMap" type="net.wanji.opt.entity.strategy.StrategyPriorityDailyInfo">
<id column="id" property="id"/>
<result column="daily_plan_id" property="dailyPlanId"/>
<result column="week_execute" property="weekExecute"/>
<result column="daily_plan_details" property="dailyPlanDetails"/>
<result column="cross_id" property="crossId"/>
</resultMap>
<!-- 查询表t_strategy_priority_daily_info所有信息 -->
<select id="findAllStrategyPriorityDailyInfo" resultMap="StrategyPriorityDailyInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_strategy_priority_daily_info
</select>
<!-- 根据主键id查询表t_strategy_priority_daily_info信息 -->
<select id="findStrategyPriorityDailyInfoByid" resultMap="StrategyPriorityDailyInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_strategy_priority_daily_info
WHERE id=#{id}
</select>
<!-- 根据条件查询表t_strategy_priority_daily_info信息 -->
<select id="findStrategyPriorityDailyInfoByCondition" resultMap="StrategyPriorityDailyInfoMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_strategy_priority_daily_info
WHERE 1=1
<include refid="StrategyPriorityDailyInfoByCondition" />
</select>
<!-- 根据主键id删除表t_strategy_priority_daily_info信息 -->
<delete id="deleteStrategyPriorityDailyInfoByid">
DELETE FROM
t_strategy_priority_daily_info
WHERE id=#{id}
</delete>
<!-- 根据主键id更新表t_strategy_priority_daily_info信息 -->
<update id="updateStrategyPriorityDailyInfoByid" parameterType="net.wanji.opt.entity.strategy.StrategyPriorityDailyInfo">
UPDATE t_strategy_priority_daily_info
<set>
<include refid="StrategyPriorityDailyInfoSetColumns"/>
</set>
WHERE
id=#{id}
</update>
<!-- 新增表t_strategy_priority_daily_info信息 -->
<insert id="addStrategyPriorityDailyInfo">
INSERT INTO t_strategy_priority_daily_info (
id
,daily_plan_id
,week_execute
,daily_plan_details
,cross_id
) VALUES (
#{id}
,#{dailyPlanId}
,#{weekExecute}
,#{dailyPlanDetails}
,#{crossId}
)
</insert>
<select id="pageStrategyCrossList" parameterType="map" resultType="net.wanji.opt.entity.strategy.StrategyPriorityDailyInfo">
SELECT
t2.id,
t4.`name` as waveName, t3.`name` as crossName,
t3.id as crossId, t2.daily_plan_details as dailyPlanDetails
FROM
t_strategy_priority_config t1
LEFT JOIN t_strategy_priority_daily_info t2 on t1.cross_id = t2.cross_id
LEFT JOIN t_base_cross_info t3 on t1.cross_id = t3.id
LEFT JOIN t_greenwave_info t4 on t4.id = t1.green_id
WHERE
1=1
<if test="crossId!=null and crossId!=''">
t2.cross_id=#{crossId}
</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