package cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceAntiConfigRespVO; import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionHandleReqVO; import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionStatisticsReqVO; import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionStatisticsRespVO; import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionSummaryRespVO; import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionWarningPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.trace.crossregion.vo.MesTraceCrossRegionWarningRespVO; import cn.iocoder.yudao.module.mes.service.trace.crossregion.MesTraceCrossRegionService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; import jakarta.validation.Valid; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.time.LocalDateTime; import java.util.List; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND; @Tag(name = "管理后台 - MES 窜货预警") @RestController @RequestMapping("/mes/trace-cross-region") @Validated public class MesTraceCrossRegionController { @Resource private MesTraceCrossRegionService crossRegionService; @GetMapping("/page") @Operation(summary = "获得窜货预警分页") @PreAuthorize("@ss.hasPermission('mes:trace-cross-region:query')") public CommonResult> getWarningPage(@Valid MesTraceCrossRegionWarningPageReqVO reqVO) { return success(crossRegionService.getWarningPage(reqVO)); } @PutMapping("/handle") @Operation(summary = "处理窜货预警") @PreAuthorize("@ss.hasPermission('mes:trace-cross-region:handle')") public CommonResult handleWarning(@Valid @RequestBody MesTraceCrossRegionHandleReqVO reqVO) { crossRegionService.handleWarning(reqVO); return success(true); } @GetMapping("/summary") @Operation(summary = "获得窜货预警汇总") @PreAuthorize("@ss.hasPermission('mes:trace-cross-region:query')") public CommonResult getWarningSummary( @RequestParam(value = "startTime", required = false) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) LocalDateTime startTime, @RequestParam(value = "endTime", required = false) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) LocalDateTime endTime) { return success(crossRegionService.getWarningSummary(startTime, endTime)); } @GetMapping("/statistics") @Operation(summary = "获得窜货预警分布统计") @PreAuthorize("@ss.hasPermission('mes:trace-cross-region:query')") public CommonResult> getWarningStatistics(@Valid MesTraceCrossRegionStatisticsReqVO reqVO) { return success(crossRegionService.getWarningStatistics(reqVO)); } @GetMapping("/config") @Operation(summary = "获得防窜货规则配置") @PreAuthorize("@ss.hasPermission('mes:trace-cross-region:query')") public CommonResult getConfig() { return success(crossRegionService.getConfig()); } @PutMapping("/config") @Operation(summary = "更新防窜货规则配置") @PreAuthorize("@ss.hasPermission('mes:trace-cross-region:handle')") public CommonResult updateConfig(@RequestParam("warningLevel") @Parameter(description = "判定粒度:PROVINCE 跨省 / CITY 跨市", example = "PROVINCE") String warningLevel) { crossRegionService.updateConfig(warningLevel); return success(true); } }