Commit d98b7b9d authored by zhoushiguang's avatar zhoushiguang
parents 5d4cabe2 14b5ae10
package net.wanji.opt.controllerv2.judgeanalysis;
import io.swagger.annotations.*;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.i18n.I18nResourceBundle;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.opt.controllerv2.judgeanalysis.design.response.greenproblem.GreenProblemTimeDirReasonResult;
import net.wanji.opt.entity.judgeanalysis.AiOptimizeStatistic;
import net.wanji.opt.servicev2.judgeanalysis.AiOptimizeStatisticService;
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>
* AI优化时长 前端控制器
* </p>
*
* @author fengyi
* @since 2025-03-24
*/
@Api(tags = "AI优化时长")
@RestController
@RequestMapping("/ai-optimize-statistic")
@Slf4j
public class AiOptimizeStatisticController {
@Autowired
private AiOptimizeStatisticService aiOptimizeStatisticService;
@ApiOperation(value = "AI优化时长详情", response = AiOptimizeStatistic.class)
@GetMapping(value = "/info/{id}")
public Object info(@PathVariable Long id) {
Object data = aiOptimizeStatisticService.info(id);
return ResultGenerator.genSuccessResult(data);
}
@ApiOperation(value = "AI优化时长新增")
@PostMapping(value = "/add")
public Object add(@Valid @RequestBody AiOptimizeStatistic param) {
aiOptimizeStatisticService.add(param);
return ResultGenerator.genSuccessResult();
}
@ApiOperation(value = "AI优化时长修改")
@PostMapping(value = "/modify")
public Object modify(@Valid @RequestBody AiOptimizeStatistic param) {
aiOptimizeStatisticService.modify(param);
return ResultGenerator.genSuccessResult();
}
@ApiOperation(value = "AI优化时长删除(单个条目)")
@GetMapping(value = "/remove/{id}")
public Object remove(@PathVariable Long id) {
aiOptimizeStatisticService.remove(id);
return ResultGenerator.genSuccessResult();
}
@ApiOperation(value = "AI优化时长删除(多个条目)")
@PostMapping(value = "/removes")
public Object removes(@Valid @RequestBody List<Long> ids) {
aiOptimizeStatisticService.removes(ids);
return ResultGenerator.genSuccessResult();
}
@ApiOperation(value = "绿波干线-绿波优化次数", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiImplicitParams({
@ApiImplicitParam(name = "greenId", value = "绿波干线", required = true, dataType = "string", defaultValue = "1"),
@ApiImplicitParam(name = "startTime", value = "开始时间,格式:yyyyMMdd", required = false, dataType = "Integer", defaultValue = "20250317"),
@ApiImplicitParam(name = "endTime", value = "结束时间,格式:yyyyMMdd", required = false, dataType = "Integer", defaultValue = "20250318"),
})
@GetMapping(value = "/optimize")
@ApiResponses({
@ApiResponse(code = 200, message = "OK", response = GreenProblemTimeDirReasonResult.class),
})
public JsonViewObject detail(String greenId,Integer startTime, Integer endTime) {
JsonViewObject jsonView =JsonViewObject.newInstance();
try {
Map<String,Object> resDate = aiOptimizeStatisticService.greenOptimizeByTimeTrend(greenId,startTime,endTime);
jsonView.success(resDate);
}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.judgeanalysis;
import net.wanji.opt.entity.judgeanalysis.AiOptimizeStatistic;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface AiOptimizeStatisticMapper extends BaseMapper<AiOptimizeStatistic>{
/**
* 查询表t_ai_optimize_statistic所有信息
*/
List<AiOptimizeStatistic> findAllAiOptimizeStatistic();
/**
* 根据主键crossId查询表t_ai_optimize_statistic信息
* @param crossId
*/
AiOptimizeStatistic findAiOptimizeStatisticBycrossId(@Param("crossId") String crossId);
/**
* 根据条件查询表t_ai_optimize_statistic信息
* @param aiOptimizeStatistic
*/
List<AiOptimizeStatistic> findAiOptimizeStatisticByCondition(AiOptimizeStatistic aiOptimizeStatistic);
/**
* 根据主键crossId查询表t_ai_optimize_statistic信息
* @param crossId
*/
Integer deleteAiOptimizeStatisticBycrossId(@Param("crossId") String crossId);
/**
* 根据主键crossId更新表t_ai_optimize_statistic信息
* @param aiOptimizeStatistic
*/
Integer updateAiOptimizeStatisticBycrossId(AiOptimizeStatistic aiOptimizeStatistic);
/**
* 新增表t_ai_optimize_statistic信息
* @param aiOptimizeStatistic
*/
Integer addAiOptimizeStatistic(AiOptimizeStatistic aiOptimizeStatistic);
List<AiOptimizeStatistic> greenOptimizeByTimeTrend(String greenId, Integer startTime, Integer endTime);
}
package net.wanji.opt.entity.judgeanalysis;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import java.time.LocalDateTime;
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_ai_optimize_statistic")
public class AiOptimizeStatistic implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 路口ID
*/
@TableId(value = "cross_id", type = IdType.AUTO)
private String crossId;
/**
* 当前策略名称 0:无策略 1:绿灯空放 2:失衡 3:溢出 | 干线当前策略:1单条 2垂直 3平行
*/
private Integer strategy;
/**
* 优化次数
*/
private Integer optimizeCount;
/**
* 优化时长,单位秒
*/
private Integer optimizeDuration;
/**
* yyyyMMdd
*/
private Integer statisticTime;
/**
* 创建时间
*/
private LocalDateTime gmtCreate;
/**
* 修改时间
*/
private LocalDateTime gmtModified;
/**
* 数据类型 1路口 2干线
*/
private Integer type;
}
<?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.judgeanalysis.AiOptimizeStatisticMapper">
<!-- 通用设置 -->
<!-- 通用查询列 -->
<sql id="Base_Column_List">
cross_id, strategy, optimize_count, optimize_duration, statistic_time, gmt_create, gmt_modified, type
</sql>
<!-- 通用条件列 -->
<sql id="AiOptimizeStatisticByCondition">
<if test="crossId!=null and crossId!=''">
AND cross_id = #{crossId}
</if>
<if test="strategy!=null and strategy!=''">
AND strategy = #{strategy}
</if>
<if test="optimizeCount!=null and optimizeCount!=''">
AND optimize_count = #{optimizeCount}
</if>
<if test="optimizeDuration!=null and optimizeDuration!=''">
AND optimize_duration = #{optimizeDuration}
</if>
<if test="statisticTime!=null and statisticTime!=''">
AND statistic_time = #{statisticTime}
</if>
<if test="gmtCreate!=null">
AND gmt_create = #{gmtCreate}
</if>
<if test="gmtModified!=null">
AND gmt_modified = #{gmtModified}
</if>
<if test="type!=null and type!=''">
AND type = #{type}
</if>
</sql>
<!-- 通用设置列 -->
<sql id="AiOptimizeStatisticSetColumns">
<if test="strategy!=null and strategy!=''">
strategy = #{strategy},
</if>
<if test="optimizeCount!=null and optimizeCount!=''">
optimize_count = #{optimizeCount},
</if>
<if test="optimizeDuration!=null and optimizeDuration!=''">
optimize_duration = #{optimizeDuration},
</if>
<if test="statisticTime!=null and statisticTime!=''">
statistic_time = #{statisticTime},
</if>
<if test="gmtCreate!=null">
gmt_create = #{gmtCreate},
</if>
<if test="gmtModified!=null">
gmt_modified = #{gmtModified},
</if>
<if test="type!=null and type!=''">
type = #{type},
</if>
</sql>
<!-- 通用查询映射结果 -->
<resultMap id="AiOptimizeStatisticMap" type="net.wanji.opt.entity.judgeanalysis.AiOptimizeStatistic">
<id column="cross_id" property="crossId"/>
<result column="strategy" property="strategy"/>
<result column="optimize_count" property="optimizeCount"/>
<result column="optimize_duration" property="optimizeDuration"/>
<result column="statistic_time" property="statisticTime"/>
<result column="gmt_create" property="gmtCreate"/>
<result column="gmt_modified" property="gmtModified"/>
<result column="type" property="type"/>
</resultMap>
<!-- 查询表t_ai_optimize_statistic所有信息 -->
<select id="findAllAiOptimizeStatistic" resultMap="AiOptimizeStatisticMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_ai_optimize_statistic
</select>
<!-- 根据主键crossId查询表t_ai_optimize_statistic信息 -->
<select id="findAiOptimizeStatisticBycrossId" resultMap="AiOptimizeStatisticMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_ai_optimize_statistic
WHERE cross_id=#{crossId}
</select>
<!-- 根据条件查询表t_ai_optimize_statistic信息 -->
<select id="findAiOptimizeStatisticByCondition" resultMap="AiOptimizeStatisticMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_ai_optimize_statistic
WHERE 1=1
<include refid="AiOptimizeStatisticByCondition" />
</select>
<!-- 根据主键crossId删除表t_ai_optimize_statistic信息 -->
<delete id="deleteAiOptimizeStatisticBycrossId">
DELETE FROM
t_ai_optimize_statistic
WHERE cross_id=#{crossId}
</delete>
<!-- 根据主键crossId更新表t_ai_optimize_statistic信息 -->
<update id="updateAiOptimizeStatisticBycrossId" parameterType="net.wanji.opt.entity.judgeanalysis.AiOptimizeStatistic">
UPDATE t_ai_optimize_statistic
<set>
<include refid="AiOptimizeStatisticSetColumns"/>
</set>
WHERE
cross_id=#{crossId}
</update>
<!-- 新增表t_ai_optimize_statistic信息 -->
<insert id="addAiOptimizeStatistic">
INSERT INTO t_ai_optimize_statistic (
cross_id
,strategy
,optimize_count
,optimize_duration
,statistic_time
,gmt_create
,gmt_modified
,type
) VALUES (
#{crossId}
,#{strategy}
,#{optimizeCount}
,#{optimizeDuration}
,#{statisticTime}
,#{gmtCreate}
,#{gmtModified}
,#{type}
)
</insert>
</mapper>
package net.wanji.opt.servicev2.judgeanalysis;
import net.wanji.opt.entity.judgeanalysis.AiOptimizeStatistic;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
import java.util.Map;
/**
* <p>
* AI优化时长 服务类
* </p>
*
* @author fengyi
* @since 2025-03-24
*/
public interface AiOptimizeStatisticService extends IService<AiOptimizeStatistic> {
/**
* AI优化时长详情
* @param id
* @return
*/
AiOptimizeStatistic info(Long id);
/**
* AI优化时长新增
* @param param 根据需要进行传值
* @return
*/
void add(AiOptimizeStatistic param);
/**
* AI优化时长修改
* @param param 根据需要进行传值
* @return
*/
void modify(AiOptimizeStatistic param);
/**
* AI优化时长删除(单个条目)
* @param id
* @return
*/
void remove(Long id);
/**
* 删除(多个条目)
* @param ids
* @return
*/
void removes(List<Long> ids);
Map<String, Object> greenOptimizeByTimeTrend(String greenId, Integer startTime, Integer endTime);
}
package net.wanji.opt.servicev2.judgeanalysis.impl;
import com.alibaba.fastjson.JSONObject;
import net.wanji.opt.entity.judgeanalysis.AiOptimizeStatistic;
import net.wanji.opt.dao.mapper.judgeanalysis.AiOptimizeStatisticMapper;
import net.wanji.opt.servicev2.judgeanalysis.AiOptimizeStatisticService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* <p>
* AI优化时长 服务实现类
* </p>
*
* @author fengyi
* @since 2025-03-24
*/
@Service
public class AiOptimizeStatisticServiceImpl extends ServiceImpl<AiOptimizeStatisticMapper, AiOptimizeStatistic> implements AiOptimizeStatisticService {
@Resource
private AiOptimizeStatisticMapper aiOptimizeStatisticMapper;
/**
* AI优化时长详情
* @param id
* @return
*/
@Override
public AiOptimizeStatistic info(Long id) {
return getById(id);
}
/**
* AI优化时长新增
* @param param 根据需要进行传值
* @return
*/
@Override
public void add(AiOptimizeStatistic param) {
save(param);
}
/**
* AI优化时长修改
* @param param 根据需要进行传值
* @return
*/
@Override
public void modify(AiOptimizeStatistic param) {
updateById(param);
}
/**
* AI优化时长删除(单个条目)
* @param id
* @return
*/
@Override
public void remove(Long id) {
removeById(id);
}
/**
* AI优化时长删除(多个条目)
* @param ids
* @return
*/
@Override
public void removes(List<Long> ids) {
removeByIds(ids);
}
@Override
public Map<String, Object> greenOptimizeByTimeTrend(String greenId, Integer startTime, Integer endTime) {
List<AiOptimizeStatistic> list=aiOptimizeStatisticMapper.greenOptimizeByTimeTrend(greenId,startTime,endTime);
JSONObject jsonObject = new JSONObject();
jsonObject.put("dataList",list);
return jsonObject;
}
}
......@@ -184,7 +184,7 @@ public class AnalysisProblemCrossDayServiceImpl extends ServiceImpl<AnalysisProb
}
JSONObject jsonObject = new JSONObject();
jsonObject.put("timeLIst", sortedSet);
jsonObject.put("timeList", sortedSet);
jsonObject.put("dataList", allList);
return jsonObject;
}
......
<?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.judgeanalysis.AiOptimizeStatisticMapper">
<!-- 通用设置 -->
<!-- 通用查询列 -->
<sql id="Base_Column_List">
cross_id, strategy, optimize_count, optimize_duration, statistic_time, gmt_create, gmt_modified, type
</sql>
<!-- 通用条件列 -->
<sql id="AiOptimizeStatisticByCondition">
<if test="crossId!=null and crossId!=''">
AND cross_id = #{crossId}
</if>
<if test="strategy!=null and strategy!=''">
AND strategy = #{strategy}
</if>
<if test="optimizeCount!=null and optimizeCount!=''">
AND optimize_count = #{optimizeCount}
</if>
<if test="optimizeDuration!=null and optimizeDuration!=''">
AND optimize_duration = #{optimizeDuration}
</if>
<if test="statisticTime!=null and statisticTime!=''">
AND statistic_time = #{statisticTime}
</if>
<if test="gmtCreate!=null">
AND gmt_create = #{gmtCreate}
</if>
<if test="gmtModified!=null">
AND gmt_modified = #{gmtModified}
</if>
<if test="type!=null and type!=''">
AND type = #{type}
</if>
</sql>
<!-- 通用设置列 -->
<sql id="AiOptimizeStatisticSetColumns">
<if test="strategy!=null and strategy!=''">
strategy = #{strategy},
</if>
<if test="optimizeCount!=null and optimizeCount!=''">
optimize_count = #{optimizeCount},
</if>
<if test="optimizeDuration!=null and optimizeDuration!=''">
optimize_duration = #{optimizeDuration},
</if>
<if test="statisticTime!=null and statisticTime!=''">
statistic_time = #{statisticTime},
</if>
<if test="gmtCreate!=null">
gmt_create = #{gmtCreate},
</if>
<if test="gmtModified!=null">
gmt_modified = #{gmtModified},
</if>
<if test="type!=null and type!=''">
type = #{type},
</if>
</sql>
<!-- 通用查询映射结果 -->
<resultMap id="AiOptimizeStatisticMap" type="net.wanji.opt.entity.judgeanalysis.AiOptimizeStatistic">
<id column="cross_id" property="crossId"/>
<result column="strategy" property="strategy"/>
<result column="optimize_count" property="optimizeCount"/>
<result column="optimize_duration" property="optimizeDuration"/>
<result column="statistic_time" property="statisticTime"/>
<result column="gmt_create" property="gmtCreate"/>
<result column="gmt_modified" property="gmtModified"/>
<result column="type" property="type"/>
</resultMap>
<!-- 查询表t_ai_optimize_statistic所有信息 -->
<select id="findAllAiOptimizeStatistic" resultMap="AiOptimizeStatisticMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_ai_optimize_statistic
</select>
<!-- 根据主键crossId查询表t_ai_optimize_statistic信息 -->
<select id="findAiOptimizeStatisticBycrossId" resultMap="AiOptimizeStatisticMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_ai_optimize_statistic
WHERE cross_id=#{crossId}
</select>
<!-- 根据条件查询表t_ai_optimize_statistic信息 -->
<select id="findAiOptimizeStatisticByCondition" resultMap="AiOptimizeStatisticMap">
SELECT
<include refid="Base_Column_List"/>
FROM t_ai_optimize_statistic
WHERE 1=1
<include refid="AiOptimizeStatisticByCondition" />
</select>
<!-- 根据主键crossId删除表t_ai_optimize_statistic信息 -->
<delete id="deleteAiOptimizeStatisticBycrossId">
DELETE FROM
t_ai_optimize_statistic
WHERE cross_id=#{crossId}
</delete>
<!-- 根据主键crossId更新表t_ai_optimize_statistic信息 -->
<update id="updateAiOptimizeStatisticBycrossId" parameterType="net.wanji.opt.entity.judgeanalysis.AiOptimizeStatistic">
UPDATE t_ai_optimize_statistic
<set>
<include refid="AiOptimizeStatisticSetColumns"/>
</set>
WHERE
cross_id=#{crossId}
</update>
<!-- 新增表t_ai_optimize_statistic信息 -->
<insert id="addAiOptimizeStatistic">
INSERT INTO t_ai_optimize_statistic (
cross_id
,strategy
,optimize_count
,optimize_duration
,statistic_time
,gmt_create
,gmt_modified
,type
) VALUES (
#{crossId}
,#{strategy}
,#{optimizeCount}
,#{optimizeDuration}
,#{statisticTime}
,#{gmtCreate}
,#{gmtModified}
,#{type}
)
</insert>
<select id="greenOptimizeByTimeTrend" parameterType="map" resultMap="AiOptimizeStatisticMap">
SELECT optimize_count,cross_id,
strategy,statistic_time,
type
FROM t_ai_optimize_statistic t1
WHERE
1=1
<if test="startTime != null and startTime != '' and endTime != null and endTime != ''">
AND t1.statistic_time>=#{startTime} AND t1.statistic_time &lt;=#{endTime}
</if>
<if test="greenId!=null and greenId!=''">
AND t1.cross_id= #{greenId}
</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