Commit 47ffa937 authored by duanruiming's avatar duanruiming

[insert] 全局请求日志打印

parent 16468730
package net.wanji.web.common.exception;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.framework.rest.JsonViewObject;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;
......
......@@ -4,13 +4,11 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.web.dto.CrossIdAndPhaseIdsDTO;
import net.wanji.web.dto.CrossIdAndTimeDTO;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.dto.CrossIdDTO;
import net.wanji.web.dto.SaveSchemeConfigDTO;
import net.wanji.web.dto.ScheduleIdDTO;
import net.wanji.web.dto.SchemeIdDTO;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.dto.*;
import net.wanji.web.service.impl.PlanSendServiceImpl;
import net.wanji.web.vo.PhaseListByTimeVO;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -35,6 +33,7 @@ public class PlanSendController {
this.planSendService = planSendService;
}
@AspectLog(description = "方案下发", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "方案下发", notes = "时间表下发")
@PostMapping("/scheduleSend")
public JsonViewObject timeTableSend(@RequestBody ScheduleIdDTO scheduleIdDTO) {
......@@ -42,6 +41,7 @@ public class PlanSendController {
return jsonViewObject;
}
@AspectLog(description = "强制方案", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "强制方案", notes = "强制方案")
@PostMapping("/schemeSend")
public JsonViewObject schemeSend(@RequestBody SchemeIdDTO schemeIdDTO) {
......@@ -49,6 +49,7 @@ public class PlanSendController {
return jsonViewObject;
}
@AspectLog(description = "模式切换-中心控制-步进", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "模式切换-中心控制-步进", notes = "模式切换-中心控制-步进")
@PostMapping("/nextStep")
public JsonViewObject nextStep(@RequestBody CrossIdDTO crossIdDTO) {
......@@ -56,6 +57,7 @@ public class PlanSendController {
return jsonViewObject;
}
@AspectLog(description = "模式切换-中心控制-相位锁定", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "模式切换-中心控制-相位锁定", notes = "模式切换-中心控制-相位锁定")
@PostMapping("/lockPhase")
public JsonViewObject lockPhase(@RequestBody CrossIdAndPhaseIdsDTO crossIdAndPhaseIdsDTO) {
......@@ -63,6 +65,7 @@ public class PlanSendController {
return jsonViewObject;
}
@AspectLog(description = "模式切换-中心控制-全红控制", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "模式切换-中心控制-全红控制", notes = "模式切换-中心控制-全红控制")
@PostMapping("/allRedControl")
public JsonViewObject allRedControl(@RequestBody CrossIdDTO crossIdDTO) {
......@@ -70,6 +73,7 @@ public class PlanSendController {
return jsonViewObject;
}
@AspectLog(description = "模式切换-中心控制-黄闪控制", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "模式切换-中心控制-黄闪控制", notes = "模式切换-中心控制-黄闪控制")
@PostMapping("/yellowLightControl")
public JsonViewObject yellowLightControl(@RequestBody CrossIdDTO crossIdDTO) {
......@@ -77,6 +81,7 @@ public class PlanSendController {
return jsonViewObject;
}
@AspectLog(description = "模式切换-中心控制-恢复", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "模式切换-中心控制-恢复", notes = "模式切换-中心控制-恢复")
@PostMapping("/restore")
public JsonViewObject restore(@RequestBody CrossIdAndPhaseIdsDTO crossIdAndPhaseIdsDTO) {
......@@ -84,6 +89,7 @@ public class PlanSendController {
return jsonViewObject;
}
@AspectLog(description = "信号机方案同步", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "信号机方案同步", notes = "信号机方案同步")
@PostMapping("/syncScheme")
public JsonViewObject syncScheme(@RequestBody CrossIdDTO crossIdDTO) {
......@@ -91,6 +97,7 @@ public class PlanSendController {
return jsonViewObject;
}
@AspectLog(description = "根据当前时间返回相位列表", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "根据当前时间返回相位列表", notes = "根据当前时间返回相位列表")
@PostMapping("/phaseListByTime")
@ApiResponses({
......@@ -103,6 +110,7 @@ public class PlanSendController {
return jsonViewObject.success(phaseListByTimeVO);
}
@AspectLog(description = "根据当前时间返回相位列表(单环)", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "根据当前时间返回相位列表(单环)", notes = "根据当前时间返回相位列表(单环)")
@PostMapping("/phaseListByTimeSingleRing")
@ApiResponses({
......
......@@ -2,7 +2,9 @@ package net.wanji.web.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.feign.pojo.vo.*;
import net.wanji.web.service.FeignProxyService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -24,55 +26,63 @@ public class SignalCommandController {
@Autowired
private FeignProxyService feignProxyService;
@AspectLog(description = "信号机方案下发-基础方案下发", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "信号机方案下发-基础方案下发", notes = "信号机方案下发-基础方案下发")
@PostMapping("/schemeSend")
public JsonViewObject schemeSend(@RequestBody @Validated SchemeSendVO schemeSendVO) {
return feignProxyService.schemeSend(schemeSendVO);
}
@AspectLog(description = "计划下发-计划信息、时段信息", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "计划下发-计划信息、时段信息", notes = "计划下发-计划信息、时段信息 ")
@PostMapping("/planSend")
public JsonViewObject planSend(@RequestBody @Validated PlanSendVO planSendVO) {
return feignProxyService.planSend(planSendVO);
}
@AspectLog(description = "时间表下发-时间表信息", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "时间表下发-时间表信息", notes = "时间表下发-时间表信息")
@PostMapping("/scheduleSend")
public JsonViewObject scheduleSend(@RequestBody @Validated ScheduleSendVO scheduleSendVO) {
return feignProxyService.scheduleSend(scheduleSendVO);
}
@AspectLog(description = "相位配时下发-(下发相位参数)", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "相位配时下发-(下发相位参数)", notes = "相位配时下发-(下发相位参数)")
@PostMapping("/phaseTimingSend")
public JsonViewObject phaseTimingSend(@RequestBody @Validated PhaseTimingSendVO phaseTimingSendVO) {
return feignProxyService.phaseTimingSend(phaseTimingSendVO);
}
@AspectLog(description = "灯态控制-路口全红/黄闪/关灯控制/恢复", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "灯态控制-路口全红/黄闪/关灯控制/恢复", notes = "灯态控制-路口全红/黄闪/关灯控制/恢复")
@PostMapping("/lampStateControl")
public JsonViewObject allRedControl(@RequestBody @Validated ControlCommandVO commandVO) {
return feignProxyService.allRedControl(commandVO);
}
@AspectLog(description = "步进控制-步进控制/恢复", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "步进控制-步进控制/恢复", notes = "步进控制-步进控制/恢复")
@PostMapping("/stepControl")
public JsonViewObject stepControl(@RequestBody @Validated StepControlVO stepControlVO) {
return feignProxyService.stepControl(stepControlVO);
}
@AspectLog(description = "恢复时间表-恢复路口时间表执行", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "恢复时间表-恢复路口时间表执行", notes = "恢复时间表-恢复路口时间表执行")
@PostMapping("/recoverSchedule")
public JsonViewObject recoverSchedule(@RequestParam String code) throws Exception {
return feignProxyService.recoverSchedule(code);
}
@AspectLog(description = "锁定控制-相位锁定/解锁", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "锁定控制-相位锁定/解锁", notes = "锁定控制-相位锁定/解锁")
@PostMapping(value = "/lockControl")
public JsonViewObject lockControl(@RequestBody @Validated LockControlVO lockControlVO) {
return feignProxyService.lockControl(lockControlVO);
}
@AspectLog(description = "相位差下发", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "相位差下发", notes = "相位差下发")
@PostMapping("/phaseDiffSend")
public JsonViewObject phaseDiffSend(HttpServletRequest httpServletRequest) {
......
......@@ -2,7 +2,9 @@ package net.wanji.web.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.common.util.date.DateStyle;
import net.wanji.web.common.util.date.DateUtils;
import net.wanji.web.service.SignalEvaluateService;
......@@ -31,6 +33,7 @@ public class SignalEvaluateController extends BaseController{
@Autowired
SignalEvaluateService signalEvaluateService;
@AspectLog(description = "流量、排队折线图", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "流量、排队折线图", notes = "流量、排队折线图", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/flowQueue",
......
......@@ -2,7 +2,9 @@ package net.wanji.web.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.service.SituationDetectionService;
import net.wanji.web.vo.situationDetection.*;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -30,6 +32,7 @@ public class SituationDetectionController extends BaseController {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@AspectLog(description = "优化记录", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "优化记录", notes = "优化记录", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/optRecords",
......@@ -44,6 +47,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(optRecordsOutVO);
}
@AspectLog(description = "路口报警", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "路口报警", notes = "路口报警",
response = JsonViewObject.class, produces = MediaType.APPLICATION_JSON)
@GetMapping(value = "/crossAlarm", produces = MediaType.APPLICATION_JSON)
......@@ -54,6 +58,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(crossAlarmOutVOList);
}
@AspectLog(description = "事件报警", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "事件报警", notes = "事件报警", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/eventAlarm",
......@@ -67,6 +72,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(eventAlarmOutVOList);
}
@AspectLog(description = "信号控制状态", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "信号控制状态", notes = "信号控制状态", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/controlHist",
......@@ -80,6 +86,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(controlHistOutVOList);
}
@AspectLog(description = "在途车辆", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "在途车辆", notes = "在途车辆", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/vehicleTraceHist",
......@@ -93,6 +100,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(vehicleTraceOutVOList);
}
@AspectLog(description = "图层-视频设备信息及状态", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "图层-视频设备信息及状态", notes = "图层-视频设备信息及状态", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/videoDeviceInfo",
......@@ -105,6 +113,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(videoDeviceInfoOutVOList);
}
@AspectLog(description = "绿波监测", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "绿波监测", notes = "绿波监测", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/greenwaveRealtime",
......@@ -118,6 +127,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(greenwaveRealtimeOutVOList);
}
@AspectLog(description = "交通设备状态", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "交通设备状态", notes = "交通设备状态", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/allDeviceStatus",
......@@ -130,6 +140,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(allDeviceStatusMap);
}
@AspectLog(description = "绿波监测-关联路口", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "绿波监测-关联路口", notes = "绿波监测-关联路口", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/greenwaveCross",
......@@ -144,6 +155,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(greenwaveCrossOutVOList);
}
@AspectLog(description = "路口设备状态信息", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "路口设备状态信息", notes = "路口设备状态信息", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON)
@GetMapping(value = "crossDeviceStatusInfo", produces = MediaType.APPLICATION_JSON)
......@@ -166,6 +178,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(list);
}
@AspectLog(description = "辖区分组", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "辖区分组", notes = "辖区分组")
@GetMapping("/jurisdictionTree")
public JsonViewObject jurisdictionTree(Integer areaId) throws Exception {
......@@ -174,6 +187,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(result);
}
@AspectLog(description = "查询区域列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "查询区域列表", notes = "查询区域列表")
@GetMapping("/selectAreaList")
public JsonViewObject selectAreaList(Integer areaId) {
......@@ -182,6 +196,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(areaListVOS);
}
@AspectLog(description = "查询信号机故障列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "查询信号机故障列表", notes = "查询信号机故障列表")
@GetMapping("/listSignalFaultInfos")
public JsonViewObject listSignalFaultInfos() throws Exception {
......@@ -190,6 +205,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(signalFaultInfoVOS);
}
@AspectLog(description = "信号机故障统计", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "信号机故障统计", notes = "信号机故障统计")
@GetMapping("/countSignalFaultInfos")
public JsonViewObject countSignalFaultInfos() {
......@@ -198,6 +214,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(result);
}
@AspectLog(description = "路口列表-手动控制", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "路口列表-手动控制", notes = "路口列表-手动控制")
@GetMapping("/listSignalControlInfos")
public JsonViewObject listSignalControlInfos(Integer operationMode) {
......@@ -206,6 +223,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(result);
}
@AspectLog(description = "运行模式统计", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "运行模式统计", notes = "运行模式统计")
@GetMapping("/countSignalControlInfos")
public JsonViewObject countSignalControlInfos() {
......@@ -214,6 +232,7 @@ public class SituationDetectionController extends BaseController {
return jsonViewObject.success(result);
}
@AspectLog(description = "设备厂商", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "设备厂商", notes = "设备厂商")
@GetMapping("/signalManufacturerInfoCount")
public JsonViewObject signalManufacturerInfoCount() throws Exception {
......
......@@ -4,7 +4,9 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.common.exception.CrossRelationException;
import net.wanji.web.service.SpecialServiceService;
import net.wanji.web.vo.specialService.*;
......@@ -31,6 +33,7 @@ public class SpecialServiceController {
@Autowired
SpecialServiceService specialServiceService;
@AspectLog(description = "添加特勤", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "添加特勤", notes = "添加特勤", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/addSpecialService",
......@@ -42,6 +45,7 @@ public class SpecialServiceController {
return jsonViewObject.success();
}
@AspectLog(description = "特勤列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "特勤列表", notes = "特勤列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/listSpecialServices",
......@@ -57,6 +61,7 @@ public class SpecialServiceController {
return jsonViewObject.success(listSpecialServicesOutVOList);
}
@AspectLog(description = "编辑特勤", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "编辑特勤", notes = "编辑特勤", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/updateSpecialService",
......@@ -68,6 +73,7 @@ public class SpecialServiceController {
return jsonViewObject.success();
}
@AspectLog(description = "删除特勤", operationType = BaseEnum.OperationTypeEnum.DELETE)
@ApiOperation(value = "删除特勤", notes = "删除特勤", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/deleteSpecialService",
......@@ -80,6 +86,7 @@ public class SpecialServiceController {
return jsonViewObject.success();
}
@AspectLog(description = "添加路口", operationType = BaseEnum.OperationTypeEnum.INSERT)
@ApiOperation(value = "添加路口", notes = "添加路口", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/addCross",
......@@ -94,6 +101,7 @@ public class SpecialServiceController {
}
}
@AspectLog(description = "路口列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "路口列表", notes = "路口列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/crossList",
......@@ -109,6 +117,7 @@ public class SpecialServiceController {
return jsonViewObject.success(crossListOutVOList);
}
@AspectLog(description = "更新路口", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "更新路口", notes = "更新路口", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/updateCross",
......@@ -120,6 +129,7 @@ public class SpecialServiceController {
return jsonViewObject.success();
}
@AspectLog(description = "删除路口", operationType = BaseEnum.OperationTypeEnum.DELETE)
@ApiOperation(value = "删除路口", notes = "删除路口", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/deleteCross",
......@@ -131,6 +141,7 @@ public class SpecialServiceController {
return jsonViewObject.success();
}
@AspectLog(description = "一键特勤", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "一键特勤", notes = "一键特勤", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/enableSpecialService",
......@@ -142,6 +153,7 @@ public class SpecialServiceController {
return jsonViewObject.success();
}
@AspectLog(description = "一键取消特勤", operationType = BaseEnum.OperationTypeEnum.DELETE)
@ApiOperation(value = "一键取消特勤", notes = "一键取消特勤", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/disableSpecialService",
......@@ -153,6 +165,7 @@ public class SpecialServiceController {
return jsonViewObject.success();
}
@AspectLog(description = "路口进口列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "路口进口列表", notes = "路口进口列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/crossInList",
......
......@@ -3,7 +3,9 @@ package net.wanji.web.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.service.TBaseCrossInfoService;
import net.wanji.web.vo.BaseCrossInfoVO;
import net.wanji.web.vo.CrossInfoVO;
......@@ -29,30 +31,35 @@ public class TBaseCrossInfoController {
@Autowired
private TBaseCrossInfoService crossInfoService;
@AspectLog(description = "信号路口基础信息", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "路网管理-路口管理-查询", notes = "路网管理-路口管理-查询")
@PostMapping("/list")
public JsonViewObject list(@RequestBody @Validated CrossInfoVO crossInfoVO) {
return crossInfoService.selectAll(crossInfoVO);
}
@AspectLog(description = "路网管理-路口管理-修改", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "路网管理-路口管理-修改", notes = "路网管理-路口管理-修改")
@PostMapping("/updateOne")
public JsonViewObject updateOne(@RequestBody @Validated(BaseCrossInfoVO.Update.class) BaseCrossInfoVO crossInfoPO) {
return crossInfoService.updateOne(crossInfoPO);
}
@AspectLog(description = "路网管理-路口管理-批量删除", operationType = BaseEnum.OperationTypeEnum.DELETE)
@ApiOperation(value = "路网管理-路口管理-批量删除", notes = "路网管理-路口管理-批量删除")
@PostMapping("/delete")
public JsonViewObject delete(@RequestBody List<String> ids) {
return crossInfoService.delete(ids);
}
@AspectLog(description = "路网管理-路口管理-增加", operationType = BaseEnum.OperationTypeEnum.INSERT)
@ApiOperation(value = "路网管理-路口管理-增加", notes = "路网管理-路口管理-增加")
@PostMapping("/addOne")
public JsonViewObject addOne(@RequestBody @Validated(BaseCrossInfoVO.Save.class) BaseCrossInfoVO crossInfoPO) {
return crossInfoService.addOne(crossInfoPO);
}
@AspectLog(description = "路网管理-路口管理-区域名称下拉框", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "路网管理-路口管理-区域名称下拉框", notes = "路网管理-路口管理-区域名称下拉框")
@GetMapping("/areaTree")
public JsonViewObject areaTree() {
......
......@@ -4,8 +4,10 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.dto.CrossIdDTO;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.dto.SaveLaneInfoDTO;
import net.wanji.web.service.scheme.impl.CrossConfigServiceImpl;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -31,6 +33,7 @@ public class CrossConfigController {
this.crossConfigService = crossConfigService;
}
@AspectLog(description = "保存渠化配置/灯组设置、车道配置", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "保存渠化配置/灯组设置、车道配置", notes = "保存渠化配置/灯组设置、车道配置", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/saveLaneInfo",
......@@ -45,6 +48,7 @@ public class CrossConfigController {
return jsonViewObject.success();
}
@AspectLog(description = "渠化配置/灯组设置、车道配置列表", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "渠化配置/灯组设置、车道配置列表", notes = "渠化配置/灯组设置、车道配置列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/listLaneInfo",
......
......@@ -3,8 +3,10 @@ package net.wanji.web.controller.scheme;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.dto.CrossIdDTO;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.dto.SaveLightsInfoDTO;
import net.wanji.web.service.scheme.impl.LightsConfigServiceImpl;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -27,6 +29,7 @@ public class LightsConfigController {
this.lightsConfigService = lightsConfigService;
}
@AspectLog(description = "保存灯组配置", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "保存灯组配置", notes = "保存灯组配置", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/saveLightsInfo",
......@@ -41,6 +44,7 @@ public class LightsConfigController {
return jsonViewObject.success();
}
@AspectLog(description = "灯组配置列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "灯组配置列表", notes = "灯组配置列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/listLightsInfo",
......
......@@ -4,8 +4,10 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.dto.CrossIdDTO;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.dto.RunningPlanDTO;
import net.wanji.web.service.scheme.impl.RunningPlanServiceImpl;
import org.springframework.web.bind.annotation.PostMapping;
......@@ -34,6 +36,7 @@ public class RunningPlanController {
this.runningPlanService = runningPlanService;
}
@AspectLog(description = "保存运行计划", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "保存运行计划", notes = "保存运行计划", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/saveRunningPlan",
......@@ -48,6 +51,7 @@ public class RunningPlanController {
return jsonViewObject.success();
}
@AspectLog(description = "运行计划列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "运行计划列表", notes = "运行计划列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/listRunningPlan",
......
......@@ -4,8 +4,10 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.dto.CrossIdDTO;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.dto.LaneIdDTO;
import net.wanji.web.dto.LightIdDTO;
import net.wanji.web.dto.SaveSchemeConfigDTO;
......@@ -33,6 +35,7 @@ public class SchemeConfigController {
this.schemeConfigService = schemeConfigService;
}
@AspectLog(description = "保存方案配置", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "保存方案配置", notes = "保存方案配置", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/saveSchemeConfig",
......@@ -47,6 +50,7 @@ public class SchemeConfigController {
return jsonViewObject.success();
}
@AspectLog(description = "根据车道获取灯组信息", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "根据车道获取灯组信息", notes = "根据车道获取灯组信息", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/getLightByLane",
......@@ -61,6 +65,7 @@ public class SchemeConfigController {
return jsonViewObject.success(lightIdVO);
}
@AspectLog(description = "根据灯组获取车道信息", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "根据灯组获取车道信息", notes = "根据灯组获取车道信息", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/getLanesByLight",
......@@ -75,6 +80,7 @@ public class SchemeConfigController {
return jsonViewObject.success(laneIdsVO);
}
@AspectLog(description = "方案配置列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "方案配置列表", notes = "方案配置列表", response = JsonViewObject.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/listSchemeConfig",
......
package net.wanji.web.service;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.feign.pojo.vo.*;
import javax.servlet.http.HttpServletRequest;
/**
......
package net.wanji.web.service;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.web.dto.CrossIdAndTimeDTO;
import net.wanji.common.dto.CrossIdDTO;
import net.wanji.web.dto.CrossIdAndPhaseIdsDTO;
import net.wanji.web.dto.SaveSchemeConfigDTO;
import net.wanji.web.dto.ScheduleIdDTO;
import net.wanji.web.dto.SchemeIdDTO;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.dto.*;
import net.wanji.web.vo.PhaseListByTimeVO;
import java.util.List;
......
package net.wanji.web.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.web.common.enums.CrossTypeEnum;
import net.wanji.web.common.util.IdWorker;
import net.wanji.web.entity.TBaseAreaInfo;
......
......@@ -3,7 +3,7 @@ package net.wanji.web.service.impl;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.enums.ControlModeEnum;
import net.wanji.common.framework.Constants;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.feign.pojo.vo.*;
import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.mapper.ControlHistMapper;
......
......@@ -6,33 +6,12 @@ import cn.hutool.core.util.ObjectUtil;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import net.wanji.common.dto.CrossIdDTO;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.feign.pojo.vo.ControlCommandVO;
import net.wanji.feign.pojo.vo.CrossIdVO;
import net.wanji.feign.pojo.vo.LockControlVO;
import net.wanji.feign.pojo.vo.ScheduleSendVO;
import net.wanji.feign.pojo.vo.SchemeSendVO;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.feign.pojo.vo.*;
import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.dto.CrossIdAndPhaseIdsDTO;
import net.wanji.web.dto.CrossIdAndTimeDTO;
import net.wanji.web.dto.RunningPlanDTO;
import net.wanji.web.dto.SaveSchemeConfigDTO;
import net.wanji.web.dto.ScheduleIdDTO;
import net.wanji.web.dto.SchemeIdDTO;
import net.wanji.web.mapper.scheme.CrossLaneLightsMapper;
import net.wanji.web.mapper.scheme.CrossLightsMapper;
import net.wanji.web.mapper.scheme.CrossPhaseLightsMapper;
import net.wanji.web.mapper.scheme.CrossPhaseMapper;
import net.wanji.web.mapper.scheme.CrossPlanMapper;
import net.wanji.web.mapper.scheme.CrossSchedulesMapper;
import net.wanji.web.mapper.scheme.CrossSchedulesPlanMapper;
import net.wanji.web.mapper.scheme.CrossSchemeMapper;
import net.wanji.web.po.scheme.CrossLightsPO;
import net.wanji.web.po.scheme.CrossPhasePO;
import net.wanji.web.po.scheme.CrossPlanPO;
import net.wanji.web.po.scheme.CrossSchedulesPO;
import net.wanji.web.po.scheme.CrossSchedulesPlanPO;
import net.wanji.web.po.scheme.CrossSchemePO;
import net.wanji.web.dto.*;
import net.wanji.web.mapper.scheme.*;
import net.wanji.web.po.scheme.*;
import net.wanji.web.service.PlanSendService;
import net.wanji.web.service.scheme.impl.RunningPlanServiceImpl;
import net.wanji.web.service.scheme.impl.SchemeConfigServiceImpl;
......@@ -44,15 +23,7 @@ import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.TreeSet;
import java.util.*;
import java.util.stream.Collectors;
/**
......
......@@ -8,10 +8,10 @@ import com.github.pagehelper.PageInfo;
import lombok.RequiredArgsConstructor;
import net.wanji.common.enums.EventAlarmEnum;
import net.wanji.common.enums.EventAlarmSourceEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.utils.tool.BeanListUtils;
import net.wanji.common.utils.tool.BeanMapUtils;
import net.wanji.common.utils.tool.CrossUtil;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.feign.pojo.vo.CrossInfoOutVo;
import net.wanji.feign.pojo.vo.CrossInfoVO;
import net.wanji.feign.pojo.vo.ManufacturerInfoOutVO;
......
......@@ -3,7 +3,7 @@ package net.wanji.web.task;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import lombok.extern.slf4j.Slf4j;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.common.util.StringUtils;
import net.wanji.web.entity.TBaseCrossInfo;
......
......@@ -3,7 +3,7 @@ package net.wanji.web.task;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.feign.service.UtcFeignClients;
import net.wanji.web.dto.SignalStatusLogDTO;
import net.wanji.web.entity.TCrossControlHist;
......
......@@ -11,6 +11,11 @@
<version>0.0.2</version>
<dependencies>
<dependency>
<groupId>net.wanji</groupId>
<artifactId>wj-common</artifactId>
<version>0.0.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
......
package net.wanji.feign.pojo.result;
import lombok.Data;
import java.io.Serializable;
//没有get set方法会导致feign 接口调用时,无法使用JsonViewObject作为返回值
@Data
public class JsonViewObject implements Serializable {
private Object content;
private String message;
private String status;
private Integer code;
private Long timestamp;
public Object getContent() {
return content;
}
public String getMessage() {
return message;
}
public String getStatus() {
return status;
}
private JsonViewObject() {
}
public static JsonViewObject newInstance() {
return new JsonViewObject();
}
public JsonViewObject success() {
return success((Object) "");
}
public JsonViewObject success(Object content) {
return success(content, "");
}
public JsonViewObject success(String message) {
return success("", message);
}
public JsonViewObject success(Object content, String message) {
return pack(content, message, "success");
}
public JsonViewObject fail() {
return fail("", "");
}
public JsonViewObject fail(Exception e) {
String message = e.getMessage();
int index = message.indexOf(":");
return fail(index == -1 ? message : message.substring(index + 1));
}
public JsonViewObject fail(String errMsg) {
return fail("", errMsg);
}
public JsonViewObject fail(Object content, String message) {
return pack(content, message,"fail");
}
private JsonViewObject pack(Object content, String message, String status) {
this.content = content;
this.message = message;
this.status = status;
//增加服务返回状态码,后期待完善
this.code=(status.equals("success") ? 200:500);
return this;
}
}
\ No newline at end of file
package net.wanji.feign.service;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.feign.pojo.vo.*;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
......
......@@ -72,6 +72,8 @@ public class CrossTurnDataRealtimeDTO {
* 通行时长 = 排队车辆 * 车头时距
*/
public Double calPassTime(CrossTurnDataRealtimeDTO entity) {
// todo 优化参数,策略场景优化需要配置参数选择优化方法,读取不同配置优化信息
Double currentVehheadDist = entity.getVehheadDist();
if (Objects.isNull(currentVehheadDist) || currentVehheadDist > 20 || currentVehheadDist < 7) {
currentVehheadDist = 9.0;
......
......@@ -6,12 +6,12 @@ import net.wanji.common.enums.CrossStatusEnum;
import net.wanji.common.enums.TurnConvertEnum;
import net.wanji.common.enums.WeekEnum;
import net.wanji.common.framework.Constants;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.utils.tool.DateUtil;
import net.wanji.common.utils.tool.StringUtils;
import net.wanji.databus.dao.entity.RidInfoEntity;
import net.wanji.databus.dao.mapper.RidInfoMapper;
import net.wanji.databus.entity.develop.servicedevelop.develop.StatusCodeEnum;
import net.wanji.feign.pojo.result.JsonViewObject;
import net.wanji.feign.pojo.vo.SchemeSendVO;
import net.wanji.feign.pojo.vo.SignalStatusVO;
import net.wanji.feign.service.UtcFeignClients;
......
......@@ -4,6 +4,7 @@ import lombok.extern.slf4j.Slf4j;
import net.wanji.common.enums.CrossStatusEnum;
import net.wanji.common.framework.Constants;
import net.wanji.opt.dao.mapper.trend.CrossDataRealtimeMapper;
import net.wanji.opt.dto.CrossTurnDataRealtimeDTO;
import net.wanji.opt.po.trend.CrossDataRealtimePO;
import net.wanji.opt.service.CrossOptimizeService;
import org.springframework.beans.BeanUtils;
......@@ -103,6 +104,10 @@ public class CrossMonitorTask {
List<CrossDataRealtimePO> crossDataRealtimePOList = new ArrayList<>(1);
CrossDataRealtimePO crossDataRealtimePO = crossDataRealtimeMapper.selectById("14Q1409IRF0");
crossDataRealtimePOList.add(crossDataRealtimePO);
// todo 对数据进行处理,可能主要是CrossTurnDataRealtimeDTO中的车间距,车时距等配置修改
CrossTurnDataRealtimeDTO crossTurnDataRealtimeDTO = new CrossTurnDataRealtimeDTO();
return crossDataRealtimePOList;
}
......
......@@ -5,7 +5,9 @@ import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.service.control.ControlCommandStrategyService;
import net.wanji.utc.vo.*;
import org.springframework.validation.annotation.Validated;
......@@ -36,6 +38,7 @@ public class ControlCommandController {
* @param schemeSendVO 方案下发VO
* @return
*/
@AspectLog(description = "信号机方案下发-基础方案下发", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "信号机方案下发-基础方案下发", notes = "信号机方案下发-基础方案下发")
@PostMapping("/schemeSend")
public JsonViewObject schemeSend(@RequestBody @Validated SchemeSendVO schemeSendVO) throws Exception {
......@@ -48,6 +51,7 @@ public class ControlCommandController {
* @param planSendVO 计划下发VO
* @return
*/
@AspectLog(description = "计划下发-计划信息、时段信息", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "计划下发-计划信息、时段信息", notes = "计划下发-计划信息、时段信息")
@PostMapping("/planSend")
public JsonViewObject planSend(@RequestBody @Validated PlanSendVO planSendVO) throws Exception {
......@@ -61,6 +65,7 @@ public class ControlCommandController {
* @return
* @throws Exception 异常
*/
@AspectLog(description = "时间表下发-时间表信息", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "时间表下发-时间表信息", notes = "时间表下发-时间表信息")
@PostMapping("/scheduleSend")
public JsonViewObject scheduleSend(@RequestBody @Validated ScheduleSendVO scheduleSendVO) throws Exception {
......@@ -73,6 +78,7 @@ public class ControlCommandController {
* @return
* @throws InterruptedException 中断异常
*/
@AspectLog(description = "相位配时下发-(下发相位参数)", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "相位配时下发-(下发相位参数)", notes = "相位配时下发-(下发相位参数)")
@PostMapping("/phaseTimingSend")
public JsonViewObject phaseTimingSend(@RequestBody @Validated PhaseTimingSendVO phaseTimingSendVO) throws Exception {
......@@ -86,6 +92,7 @@ public class ControlCommandController {
* @return
* @throws Exception 异常
*/
@AspectLog(description = "全红控制-路口全红控制/恢复", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "全红控制-路口全红控制/恢复", notes = "全红控制-路口全红控制/恢复")
@PostMapping("/allRedControl")
public JsonViewObject allRedControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
......@@ -99,6 +106,7 @@ public class ControlCommandController {
* @return
* @throws Exception 异常
*/
@AspectLog(description = "黄闪控制-路口黄闪控制/恢复", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "黄闪控制-路口黄闪控制/恢复", notes = "黄闪控制-路口黄闪控制/恢复")
@PostMapping("/yellowLightControl")
public JsonViewObject yellowLightControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
......@@ -112,6 +120,7 @@ public class ControlCommandController {
* @return
* @throws Exception 异常
*/
@AspectLog(description = "关灯控制-路口关灯控制/开灯", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "关灯控制-路口关灯控制/开灯", notes = "关灯控制-路口关灯控制/开灯")
@PostMapping("/closeLightControl")
public JsonViewObject closeLightControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
......@@ -126,6 +135,7 @@ public class ControlCommandController {
* @param stepNum 一步num
* @return
*/
@AspectLog(description = "步进控制-步进控制/恢复", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "步进控制-步进控制/恢复", notes = "步进控制-步进控制/恢复")
@ApiImplicitParams({
@ApiImplicitParam(name = "command", value = "1 开始步进 0 取消步进", paramType = "query", required = true, dataType = "int"),
......@@ -144,6 +154,7 @@ public class ControlCommandController {
* @param code 信号id
* @return
*/
@AspectLog(description = "恢复时间表-恢复路口时间表执行", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "恢复时间表-恢复路口时间表执行", notes = "恢复时间表-恢复路口时间表执行")
@PostMapping("/recoverSchedule")
public JsonViewObject recoverSchedule(@RequestParam String code) throws Exception {
......@@ -157,6 +168,7 @@ public class ControlCommandController {
* @return
* @throws Exception 异常
*/
@AspectLog(description = "锁定控制-相位锁定/解锁", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "锁定控制-相位锁定/解锁", notes = "锁定控制-相位锁定/解锁")
@PostMapping("/lockControl")
public JsonViewObject lockControl(@RequestBody @Validated ControlCommandVO commandVO) throws Exception {
......@@ -166,6 +178,7 @@ public class ControlCommandController {
/**
* 相位差下发
*/
@AspectLog(description = "相位差下发", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "相位差下发", notes = "相位差下发")
@PostMapping("/phaseDiffSend")
public JsonViewObject phaseDiffSend() {
......
......@@ -5,10 +5,12 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.dto.systemadmin.CrossInfoInsertOrUpdateDTO;
import net.wanji.utc.dto.systemadmin.CrossInfoListDTO;
import net.wanji.utc.dto.systemadmin.DeleteByStringIdListDTO;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.service.systemadmin.CrossInfoService;
import net.wanji.utc.vo.systemadmin.CrossInfoListVO;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -34,6 +36,7 @@ public class CrossInfoController {
@Autowired
CrossInfoService crossInfoService;
@AspectLog(description = "信号机列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "信号机列表", notes = "信号机列表", response = CrossInfoListVO.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/list",
......@@ -57,6 +60,7 @@ public class CrossInfoController {
return jsonViewObject.success(crossInfoListOutVOPageInfo);
}
@AspectLog(description = "信号机添加或修改", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "信号机添加或修改", notes = "信号机添加或修改", consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/insertOrUpdate", consumes = MediaType.APPLICATION_JSON)
public JsonViewObject insertOrUpdate(@RequestBody CrossInfoInsertOrUpdateDTO inVO) {
......@@ -66,6 +70,7 @@ public class CrossInfoController {
return jsonViewObject.success();
}
@AspectLog(description = "信号机删除", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "信号机删除", notes = "信号机删除", consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/delete", consumes = MediaType.APPLICATION_JSON)
public JsonViewObject delete(@RequestBody DeleteByStringIdListDTO inVO) {
......
......@@ -5,10 +5,12 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.dto.systemadmin.DeleteByIntegerIdListDTO;
import net.wanji.utc.dto.systemadmin.ManufacturerApiInfoInsertOrUpdateDTO;
import net.wanji.utc.dto.systemadmin.ManufacturerApiInfoListDTO;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.po.ManufacturerApiInfoPO;
import net.wanji.utc.service.systemadmin.ManufacturerApiInfoService;
import net.wanji.utc.vo.systemadmin.ManufacturerApiInfoVO;
......@@ -34,6 +36,7 @@ public class ManufacturerApiController {
@Autowired
ManufacturerApiInfoService manufacturerApiInfoService;
@AspectLog(description = "接口列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "接口列表", notes = "接口列表", response = ManufacturerApiInfoPO.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/list",
......@@ -49,6 +52,7 @@ public class ManufacturerApiController {
return jsonViewObject.success(manufacturerApiInfoOutVOPageInfo);
}
@AspectLog(description = "接口添加或修改", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "接口添加或修改", notes = "接口添加或修改", consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/insertOrUpdate", consumes = MediaType.APPLICATION_JSON)
public JsonViewObject insertOrUpdate(@RequestBody ManufacturerApiInfoInsertOrUpdateDTO inVO) {
......@@ -58,6 +62,7 @@ public class ManufacturerApiController {
return jsonViewObject.success();
}
@AspectLog(description = "接口删除", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "接口删除", notes = "接口删除", consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/delete", consumes = MediaType.APPLICATION_JSON)
public JsonViewObject delete(@RequestBody DeleteByIntegerIdListDTO inVO) {
......
......@@ -5,10 +5,12 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.dto.systemadmin.DeleteByIntegerIdListDTO;
import net.wanji.utc.dto.systemadmin.ManufacturerInsertOrUpdateDTO;
import net.wanji.utc.dto.systemadmin.ManufacturerListDTO;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.po.ManufacturerInfoPO;
import net.wanji.utc.service.systemadmin.ManufacturerService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -34,6 +36,7 @@ public class ManufacturerController {
@Autowired
ManufacturerService manufacturerService;
@AspectLog(description = "厂商列表", operationType = BaseEnum.OperationTypeEnum.QUERY)
@ApiOperation(value = "厂商列表", notes = "厂商列表", response = ManufacturerInfoPO.class,
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/list",
......@@ -56,6 +59,7 @@ public class ManufacturerController {
return jsonViewObject.success(manufacturerInfoPOPageInfo);
}
@AspectLog(description = "厂商添加或修改", operationType = BaseEnum.OperationTypeEnum.UPDATE)
@ApiOperation(value = "厂商添加或修改", notes = "厂商添加或修改", consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/insertOrUpdate", consumes = MediaType.APPLICATION_JSON)
public JsonViewObject insertOrUpdate(@RequestBody ManufacturerInsertOrUpdateDTO inVO) {
......@@ -65,6 +69,7 @@ public class ManufacturerController {
return jsonViewObject.success();
}
@AspectLog(description = "厂商删除", operationType = BaseEnum.OperationTypeEnum.DELETE)
@ApiOperation(value = "厂商删除", notes = "厂商删除", consumes = MediaType.APPLICATION_JSON)
@PostMapping(value = "/delete", consumes = MediaType.APPLICATION_JSON)
public JsonViewObject delete(@RequestBody DeleteByIntegerIdListDTO inVO) {
......
......@@ -10,7 +10,9 @@ import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import lombok.RequiredArgsConstructor;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.po.SignalStatusLogPO;
import net.wanji.utc.service.runninginfo.SignalStatusService;
import net.wanji.utc.vo.LightsStatusVO;
......@@ -33,6 +35,7 @@ import java.util.List;
public class SignalStatusController {
private final SignalStatusService signalStatusService;
@AspectLog(description = "运行状态、告警数据", operationType = BaseEnum.OperationTypeEnum.QUERY)
@PostMapping(value = "/runningStatusAlarm", produces = MediaType.APPLICATION_JSON)
@ApiOperation(value = "运行状态、告警数据", notes = "运行状态、告警数据", response = SignalStatusLogPO.class,
produces = MediaType.APPLICATION_JSON)
......@@ -47,6 +50,7 @@ public class SignalStatusController {
}
@AspectLog(description = "灯态数据", operationType = BaseEnum.OperationTypeEnum.QUERY)
@PostMapping(value = "/lightStatus", produces = MediaType.APPLICATION_JSON)
@ApiOperation(value = "灯态数据", notes = "灯态数据", response = LightsStatusVO.class,
produces = MediaType.APPLICATION_JSON)
......
......@@ -4,11 +4,13 @@ import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.enums.BaseEnum;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.dto.CrossInfoDTO;
import net.wanji.utc.dto.CrossSchedulesDTO;
import net.wanji.utc.dto.PlanSectionDTO;
import net.wanji.utc.dto.SchemePhaseLightsDTO;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.po.CrossInfoPO;
import net.wanji.utc.po.CrossSchedulesPO;
import net.wanji.utc.service.staticinfo.StaticInfoService;
......@@ -36,6 +38,7 @@ public class StaticInfoController {
@Autowired
StaticInfoService staticInfoService;
@AspectLog(description = "信号路口基础信息", operationType = BaseEnum.OperationTypeEnum.QUERY)
@PostMapping(value = "/crossInfo",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiOperation(value = "信号路口基础信息", notes = "信号路口基础信息", response = CrossInfoPO.class,
......@@ -50,6 +53,7 @@ public class StaticInfoController {
return jsonViewObject.success(crossInfoPOList);
}
@AspectLog(description = "方案数据-方案信息、相位信息、灯组信息", operationType = BaseEnum.OperationTypeEnum.QUERY)
@PostMapping(value = "/schemePhaseLights",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiOperation(value = "方案数据-方案信息、相位信息、灯组信息", notes = "方案数据-方案信息、相位信息、灯组信息",
......@@ -68,6 +72,7 @@ public class StaticInfoController {
return jsonViewObject.success(schemePhaseLightsVO);
}
@AspectLog(description = "计划数据-计划信息、时段信息", operationType = BaseEnum.OperationTypeEnum.QUERY)
@PostMapping(value = "/planSection",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiOperation(value = "计划数据-计划信息、时段信息", notes = "计划数据-计划信息、时段信息", response = PlanSectionVO.class,
......@@ -94,6 +99,7 @@ public class StaticInfoController {
return jsonViewObject.success(planSectionVO);
}
@AspectLog(description = "时间表数据", operationType = BaseEnum.OperationTypeEnum.QUERY)
@PostMapping(value = "/crossSchedules",
produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
@ApiOperation(value = "时间表数据", notes = "时间表数据", response = CrossSchedulesPO.class,
......
package net.wanji.utc.entity;
import lombok.Data;
import net.wanji.utc.common.constant.Constants;
import net.wanji.utc.common.typeenum.HttpCode;
import java.io.Serializable;
@Data
public class JsonViewObject implements Serializable {
private Object content;
private String message;
private String status;
private Integer code;
private Long timestamp;
public Object getContent() {
return content;
}
public String getMessage() {
return message;
}
public String getStatus() {
return status;
}
private JsonViewObject() {
}
public static JsonViewObject newInstance() {
return new JsonViewObject();
}
public JsonViewObject success() {
return success((Object) "");
}
public JsonViewObject success(Object content) {
return success(content, "");
}
public JsonViewObject success(String message) {
return success("", message);
}
public JsonViewObject success(Object content, String message) {
return pack(content, message, Constants.JsonView.STATUS_SUCCESS);
}
public JsonViewObject fail() {
return fail("", "");
}
public JsonViewObject fail(Exception e) {
String message = e.getMessage();
int index = message.indexOf(":");
return fail(index == -1 ? message : message.substring(index + 1));
}
public JsonViewObject fail(String errMsg) {
return fail("", errMsg);
}
public JsonViewObject fail(Object content, String message) {
return pack(content, message, Constants.JsonView.STATUS_FAIL);
}
private JsonViewObject pack(Object content, String message, String status) {
this.content = content;
this.message = message;
this.status = status;
//增加服务返回状态码,后期待完善
this.code=(status.equals(Constants.JsonView.STATUS_SUCCESS) ? HttpCode.SUCCESS.value():HttpCode.INTERNAL_SERVER_ERROR.value());
return this;
}
}
\ No newline at end of file
package net.wanji.utc.service.control;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.service.rpc.RpcService;
import net.wanji.utc.vo.*;
......
package net.wanji.utc.service.control;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.vo.*;
/**
......
package net.wanji.utc.service.control.impl;
import lombok.RequiredArgsConstructor;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.common.typeenum.BasicEnum;
import net.wanji.utc.common.typeenum.DateStyle;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.mapper.*;
import net.wanji.utc.po.*;
import net.wanji.utc.service.control.ControlCommandService;
......
......@@ -7,13 +7,13 @@ import com.google.common.collect.Lists;
import com.hikvision.artemis.sdk.ArtemisHttpUtil;
import com.hikvision.artemis.sdk.config.ArtemisConfig;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.common.baseentity.BaseCrossInfo;
import net.wanji.utc.common.exception.ControlException;
import net.wanji.utc.common.typeenum.BasicEnum;
import net.wanji.utc.dto.hk.DownloadPlanSpandsDTO;
import net.wanji.utc.dto.hk.DownloadScheduleDTO;
import net.wanji.utc.dto.hk.DownloadTimeSpandsDTO;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.mapper.CrossInfoMapper;
import net.wanji.utc.mapper.CrossPhaseMapper;
import net.wanji.utc.mapper.ManufacturerInfoMapper;
......
......@@ -2,7 +2,7 @@ package net.wanji.utc.service.control.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.service.control.ControlCommandService;
import net.wanji.utc.util.HttpRestUtil;
import net.wanji.utc.util.StringUtils;
......
package net.wanji.utc.service.rpc;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.util.HttpRestUtil;
import java.util.Map;
......
......@@ -3,7 +3,7 @@ package net.wanji.utc.service.runninginfo.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.po.SignalStatusLogPO;
import net.wanji.utc.service.runninginfo.WanJiCommonRunningStatusService;
import net.wanji.utc.util.HttpRestUtil;
......
......@@ -3,8 +3,8 @@ package net.wanji.utc.service.staticinfo.impl;
import com.alibaba.fastjson.JSONObject;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.utc.common.Result;
import net.wanji.utc.entity.JsonViewObject;
import net.wanji.utc.mapper.*;
import net.wanji.utc.po.*;
import net.wanji.utc.service.staticinfo.WanJiCommonStaticInfoService;
......
package net.wanji.common.annotation.aspect;
import net.wanji.common.enums.BaseEnum;
import java.lang.annotation.*;
/**
* @author duanruiming
* @date 2023/02/27 9:13
*/
@Target({ElementType.PARAMETER, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface AspectLog {
/**
* 业务操作描述
*/
String description() default "";
/**
* 操作类型 query create modify delete
* @return
*/
BaseEnum.OperationTypeEnum operationType();
}
package net.wanji.common.dto;
import lombok.Data;
import java.util.Date;
@Data
public class OperateLog {
/**
* 访问的url
*/
private String url;
/**
* 登录ip
*/
private String ip;
/**
* 操作系统
**/
private String system;
/**
* 操作类型(增删改查)
*/
private String operationType;
/**
* 响应状态码:如200、500等
*/
private String status;
/**
* 响应结果
*/
private String result;
/**
* 请求参数
*/
private String args;
/**
* 操作时间
*/
private Date createTime;
/**
* 操作信息
*/
private String description;
}
\ No newline at end of file
package net.wanji.web.common.enums;
package net.wanji.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
......
package net.wanji.common.framework.log;
import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;
import net.wanji.common.annotation.aspect.AspectLog;
import net.wanji.common.dto.OperateLog;
import net.wanji.common.framework.rest.JsonViewObject;
import net.wanji.common.utils.tool.DateUtil;
import net.wanji.common.utils.tool.IpAddressUtil;
import net.wanji.common.utils.tool.StringUtils;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.annotation.AfterReturning;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Method;
import java.util.*;
import static net.wanji.common.framework.Constants.DATE_FORMAT.E_DATE_FORMAT_SECOND;
/**
* @author duanruiming
* @date 2023/02/27 9:35
*/
@Aspect
@Slf4j
@Component
public class LogAspectHandler {
@Value("${service.name: }")
private String serverName;
/**
*
*/
@Pointcut("@annotation(net.wanji.common.annotation.aspect.AspectLog)")
public void controllerAspect() {
}
@Before("controllerAspect()")
public void executeBefore(JoinPoint joinPoint) {
try {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
String ip = IpAddressUtil.getIpAddress(request);
Map<String, String> map = getControllerMethodDescription(joinPoint);
//*========操作日志=========*//
OperateLog log = new OperateLog();
log.setDescription(map.get("description").toString());
log.setIp(ip);
log.setSystem(serverName);
log.setOperationType(map.get("operationType").toString());
log.setUrl(request.getRequestURL().toString());
log.setArgs(getArgs(request, joinPoint));
log.setCreateTime(new Date());
//打印操作日志
this.consoleLog(log, request);
} catch (Exception e) {
log.error("日志切面直行前异常,异常信息: {}", e);
}
}
@AfterReturning(value = "controllerAspect()", returning = "jsonViewObject")
public void afterReturning(JoinPoint joinPoint, JsonViewObject jsonViewObject) {
HttpServletRequest request = ((ServletRequestAttributes)
RequestContextHolder.getRequestAttributes()).getRequest();
try {
//请求的IP
String ip = IpAddressUtil.getIpAddress(request);
//url
String uri = request.getRequestURL().toString();
//获取信息
Map<String, String> map = getControllerMethodDescription(joinPoint);
//*========操作日志=========*//
OperateLog operateLog = new OperateLog();
operateLog.setDescription(map.get("description").toString());
operateLog.setIp(ip);
operateLog.setSystem(serverName);
operateLog.setOperationType(map.get("operationType").toString());
operateLog.setUrl(request.getRequestURL().toString());
operateLog.setArgs(getArgs(request, joinPoint));
operateLog.setStatus(jsonViewObject.getStatus());
operateLog.setResult(JSON.toJSONString(jsonViewObject));
operateLog.setCreateTime(new Date());
log.info("\n 外部系统调用本地接口,请求IP = {} || 接口 = {} || 地址 = {} || 响应状态 = {}", ip, map.get("description").toString(), uri, jsonViewObject.getStatus());
} catch (Exception e) {
//记录本地异常日志
log.error("记录本地接口响应日志异常,异常信息:{}", e);
}
}
private String consoleLogTemplate = "\r\n " +
"系统:%s\r\n" +
"URL:%s\r\n" +
"操作类型:%s\r\n" +
"操作描述:%s\r\n" +
"操作IP:%s\r\n" +
"操作时间:%s\r\n" +
"请求参数:%s\r\n";
/**
* 打印输出格式日志
*
* @param operateLog 输出日志对象
* @param request 请求对象
*/
private void consoleLog(OperateLog operateLog, HttpServletRequest request) {
try {
String logText = String.format(consoleLogTemplate,
serverName,
operateLog.getUrl(),
operateLog.getOperationType(),
operateLog.getDescription(),
operateLog.getIp(),
DateUtil.formatDate(operateLog.getCreateTime(), E_DATE_FORMAT_SECOND.getStrFormat()),
operateLog.getArgs());
log.info(logText);
} catch (Exception e) {
log.error("打印操作日志异常,异常信息: {}", e);
}
}
/**
* @param request 请求对象
* @param joinPoint
* @return String 请求参数
* @discription: [获取请求参数]
*/
public static String getArgs(HttpServletRequest request, JoinPoint joinPoint) {
Enumeration<String> parameterNames = request.getParameterNames();
Map<String, Object> requestParams = new HashMap<>();
while (parameterNames.hasMoreElements()) {
String argName = parameterNames.nextElement();
String value = request.getParameter(argName);
requestParams.put(argName, value);
}
if (requestParams.size() <= 0) {
Object[] args = joinPoint.getArgs();
for (Object arg : args) {
if (null == arg) {
continue;
}
if (arg instanceof HttpServletRequest || arg instanceof HttpServletResponse) {
continue;
}
String argName = arg.getClass().getName();
Object value = arg;
requestParams.put(argName, value);
}
}
return JSON.toJSONString(requestParams);
}
/**
* 获取@Aspect标注的controller方法
*
* @param joinPoint
* @return
* @throws Exception
*/
private Map<String, String> getControllerMethodDescription(JoinPoint joinPoint) throws Exception {
String targetClassName = joinPoint.getTarget().getClass().getName();
String methodName = joinPoint.getSignature().getName();
Object[] args = joinPoint.getArgs();
Class<?> targetClass = Class.forName(targetClassName);
Method[] methods = targetClass.getMethods();
Map<String, String> map = new HashMap<>();
for (Method method : methods) {
if (StringUtils.equalsIgnoreCase(methodName, method.getName())) {
Class<?>[] parameterTypes = method.getParameterTypes();
if (Objects.equals(parameterTypes.length, args.length)) {
String description = method.getAnnotation(AspectLog.class).description();
String operationType = method.getAnnotation(AspectLog.class).operationType().toString();
map.put("description", description);
map.put("operationType", operationType);
break;
}
}
}
return map;
}
}
package net.wanji.common.utils.tool;
import javax.servlet.http.HttpServletRequest;
/**
* @Description: [获取用户IP地址信息]
* @author hfx
* @version 1.0
* Created on 2019/4/16 15:07
*/
public class IpAddressUtil {
/**未识别*/
public static final String UNKNOWN = "unknown";
private IpAddressUtil() {}
/**
* 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址, 参考文章:
* http://developer.51cto.com/art/201111/305181.htm
* <p>
* 可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?
* 答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。
* <p>
* 如:X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
* <p>
* 用户真实IP为: 192.168.1.110
*
* @param request 请求对象
* @return 用户IP地址
*/
public static String getIpAddress(HttpServletRequest request) {
//获取ip
String ip = request.getHeader("x-forwarded-for");
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
}
}
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