package com.doumee.cloud.openapi; 
 | 
  
 | 
import com.alibaba.fastjson.JSONObject; 
 | 
import com.doumee.api.BaseController; 
 | 
import com.doumee.biz.system.SystemDictDataBiz; 
 | 
import com.doumee.config.annotation.LoginNoRequired; 
 | 
import com.doumee.core.annotation.pr.PreventRepeat; 
 | 
import com.doumee.core.exception.BusinessException; 
 | 
import com.doumee.core.model.ApiResponse; 
 | 
import com.doumee.core.utils.Constants; 
 | 
import com.doumee.core.utils.DESUtil; 
 | 
import com.doumee.core.wms.model.response.WmsBaseResponse; 
 | 
import com.doumee.dao.openapi.request.*; 
 | 
import com.doumee.dao.openapi.response.*; 
 | 
import com.doumee.dao.system.model.SystemUser; 
 | 
import com.doumee.service.business.*; 
 | 
import com.doumee.service.system.SystemUserService; 
 | 
import io.swagger.annotations.Api; 
 | 
import io.swagger.annotations.ApiOperation; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.data.redis.core.RedisTemplate; 
 | 
import org.springframework.web.bind.annotation.*; 
 | 
  
 | 
import java.io.UnsupportedEncodingException; 
 | 
import java.net.URLDecoder; 
 | 
import java.net.URLEncoder; 
 | 
import java.util.*; 
 | 
  
 | 
/** 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2023/11/30 15:33 
 | 
 */ 
 | 
@Api(tags = "提供安防平台对接接口(数据大屏基础数据等)") 
 | 
@RestController 
 | 
@Slf4j 
 | 
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/hk/api") 
 | 
public class HkOpenApiController extends BaseController { 
 | 
  
 | 
    @Autowired 
 | 
    private PlatformService platformService; 
 | 
    @Autowired 
 | 
    private InterfaceLogService interfaceLogService; 
 | 
  
 | 
    @Autowired 
 | 
    private PlatformLogService platformLogService; 
 | 
  
 | 
    @Autowired 
 | 
    private PlatformJobService platformJobService; 
 | 
  
 | 
    @Autowired 
 | 
    private PlatformWarnEventService platformWarnEventService; 
 | 
  
 | 
    @Autowired 
 | 
    private PlatformWaterGasService platformWaterGasService; 
 | 
  
 | 
    @Autowired 
 | 
    private SystemUserService systemUserService; 
 | 
  
 | 
    @Autowired 
 | 
    private SystemDictDataBiz systemDictDataBiz; 
 | 
  
 | 
    @Autowired 
 | 
    private RedisTemplate<String,Object> redisTemplate; 
 | 
  
 | 
    @LoginNoRequired 
 | 
    @ApiOperation("token解析") 
 | 
    @GetMapping("/water/decodeToken") 
 | 
    public Map<String,Object> decodeToken(@RequestParam String token) { 
 | 
        log.info("【安防平台单点登录token解析】================="+token); 
 | 
        int success = Constants.ZERO; 
 | 
        Map<String,Object>  result = new HashMap<>() ; 
 | 
        try { 
 | 
            HkBaseTokenRequest hkBaseTokenRequest = new HkBaseTokenRequest(); 
 | 
            hkBaseTokenRequest.setToken(token); 
 | 
            result = this.decodeTokenForHk(hkBaseTokenRequest); 
 | 
        }catch (BusinessException e){ 
 | 
            log.error("【安防平台】单点登录token解===失败:"+e.getMessage()); 
 | 
            success = Constants.ONE; 
 | 
        }catch (Exception e){ 
 | 
            log.error("【安防平台】单点登录token解析===失败:"+e.getMessage()); 
 | 
            e.printStackTrace(); 
 | 
            success = Constants.ONE; 
 | 
        }finally { 
 | 
            interfaceLogService.saveInterfaceLog("/hk/api/water/decodeToken", "【安防平台】单点登录token解析",token, 
 | 
                    success, JSONObject.toJSONString(result),Constants.ZERO); 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    public Map<String,Object> decodeTokenForHk(HkBaseTokenRequest hkBaseTokenRequest)   { 
 | 
        Map<String,Object> result = new HashMap<>(); 
 | 
        result.put("code","0"); 
 | 
        result.put("msg","success"); 
 | 
        if(Objects.isNull(hkBaseTokenRequest)||StringUtils.isBlank(hkBaseTokenRequest.getToken())){ 
 | 
            result.put("code","-1"); 
 | 
            result.put("msg","token参数为空"); 
 | 
            return result; 
 | 
        } 
 | 
        String redisToken = (String) redisTemplate.opsForValue().get(Constants.REDIS_HK_TOKEN_KEY+hkBaseTokenRequest.getToken()); 
 | 
        if(StringUtils.isBlank(redisToken)){ 
 | 
            result.put("code","-1"); 
 | 
            result.put("msg","token无效!"); 
 | 
            return result; 
 | 
        } 
 | 
        String userName = DESUtil.verifyHkToken( redisToken);; 
 | 
        if(StringUtils.isBlank(userName)){ 
 | 
            result.put("code","-1"); 
 | 
            result.put("msg","token参数为空"); 
 | 
            return result; 
 | 
        } 
 | 
        //查询用户信息是否存在 
 | 
        SystemUser systemUser = new SystemUser(); 
 | 
        systemUser.setUsername(userName); 
 | 
        systemUser.setDeleted(Boolean.FALSE); 
 | 
        SystemUser queryBean = systemUserService.findOne(systemUser); 
 | 
        if(Objects.isNull(queryBean)){ 
 | 
            result.put("code","-1"); 
 | 
            result.put("msg","token参数为空"); 
 | 
            return result; 
 | 
        } 
 | 
        if(Constants.equalsInteger(queryBean.getStatus(),Constants.ONE)){ 
 | 
            result.put("code","-2"); 
 | 
            result.put("msg","用户已禁用"); 
 | 
            return result; 
 | 
        } 
 | 
        redisTemplate.delete(Constants.REDIS_HK_TOKEN_KEY+hkBaseTokenRequest.getToken()); 
 | 
        Map<String,Object> data = new HashMap<>(); 
 | 
        data.put("userId",userName); 
 | 
        result.put("data",data); 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【用水量】本月、上月和去年同月") 
 | 
    @PostMapping("/water/dataByMonth") 
 | 
    public ApiResponse<WaterByMonthResponse> waterDataByMonth(@RequestBody WaterByMonthRequest param) { 
 | 
        return ApiResponse.success(platformWaterGasService.waterDataByMonth(param)); 
 | 
    } 
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【用水量】近12个月用水量信息列表") 
 | 
    @PostMapping("/water/lastMonthsDataList") 
 | 
    public ApiResponse<List<PlatformLastMonthListResponse>> lastMonthsWaterList() { 
 | 
        return ApiResponse.success(platformWaterGasService.getPlatformLastMonthListResponse(Constants.ZERO)); 
 | 
    } 
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【用气量】本月、上月和去年同月") 
 | 
    @PostMapping("/gas/dataByMonth") 
 | 
    public ApiResponse<GasByMonthResponse> gasDataByMonth(@RequestBody GasByMonthRequest param) { 
 | 
        return ApiResponse.success(platformWaterGasService.gasDataByMonth(param)); 
 | 
    } 
 | 
  
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【用气量】近12个月用气量信息列表") 
 | 
    @PostMapping("/gas/lastMonthsDataList") 
 | 
    public ApiResponse<List<PlatformLastMonthListResponse>> lastMonthsGasList () { 
 | 
        return ApiResponse.success(platformWaterGasService.getPlatformLastMonthListResponse(Constants.ONE)); 
 | 
    } 
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【月台】按天统计运单请求参数") 
 | 
    @PostMapping("/platform/orderNumByDate") 
 | 
    public ApiResponse<PlatformOrderNumByDateResponse> orderNumByDate(@RequestBody PlatformOrderNumByDateRequest param) { 
 | 
        return ApiResponse.success(platformJobService.orderNumByDate(param)); 
 | 
    } 
 | 
  
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【月台】月台状态数量统计") 
 | 
    @PostMapping("/platform/totalNumByStatus") 
 | 
    public ApiResponse<PlatformNumByStatusResponse> totalNumByStatus(@RequestBody PlatformNumByStatusRequest param) { 
 | 
        return ApiResponse.success(platformService.getPlatformNumByStatusResponse()); 
 | 
    } 
 | 
  
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【月台】月台当前作业信息列表") 
 | 
    @PostMapping("/platform/workingDataList") 
 | 
    public ApiResponse<List<PlatformDataListResponse>> workingDataList(@RequestBody PlatformDataListRequest param) { 
 | 
        return ApiResponse.success(platformJobService.platformWorkingDataList(param)); 
 | 
    } 
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【月台】月台作业详情信息") 
 | 
    @PostMapping("/platform/workDataInfo") 
 | 
    public ApiResponse<PlatformDataInfoResponse> workDataInfo(@RequestBody PlatformDataInfoRequest param) { 
 | 
        return ApiResponse.success(platformJobService.platformWorkingDataList(param)); 
 | 
    } 
 | 
  
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【月台】当前车辆状态数量统计") 
 | 
    @PostMapping("/platform/carStatusNum") 
 | 
    public ApiResponse<CarNumByStatusResponse> carStatusNum(@RequestBody CarNumByStatusRequest param) { 
 | 
        return ApiResponse.success(platformJobService.carStatusNum(param)); 
 | 
    } 
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【月台】车辆事件列表数据集合(最新N条)") 
 | 
    @PostMapping("/platform/carLogsList") 
 | 
    public ApiResponse<List<CarLogsListResponse>> carLogsList(@RequestBody CarLogsListRequest param) { 
 | 
        return ApiResponse.success(platformLogService.getCarLogsListResponse(param)); 
 | 
    } 
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【月台】排队队列列表集合") 
 | 
    @PostMapping("/platform/queueList") 
 | 
    public ApiResponse<PlatformQueuingListResponse> queueList(@RequestBody PlatformQueuingListRequest param) { 
 | 
        return ApiResponse.success(platformJobService.queueList(param)); 
 | 
    } 
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【月台】预警事件集合列表") 
 | 
    @PostMapping("/platform/warningEventList") 
 | 
    public ApiResponse<List<PlatformWarnEventListResponse>> warningEventList(@RequestBody PlatformWarnEventListRequest param) { 
 | 
        return ApiResponse.success(platformWarnEventService.findListToHk()); 
 | 
    } 
 | 
  
 | 
    @LoginNoRequired 
 | 
    @PreventRepeat 
 | 
    @ApiOperation("【月台】月台状态") 
 | 
    @PostMapping("/platform/getStatusList") 
 | 
    public ApiResponse<List<PlatformStatusListResponse>> getStatusList() { 
 | 
        return ApiResponse.success(platformService.getPlatformStatusList()); 
 | 
    } 
 | 
} 
 |