package org.gyk.modules.jlgl.controller;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.gyk.common.api.Result;
import org.gyk.common.query.QueryGenerator;
import org.gyk.common.util.MyStringUtils;
import org.gyk.modules.jlgl.entity.CxcJlQjglJlqjtz;
import org.gyk.modules.jlgl.service.ICxcJlQjglJlqjtzService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @Description: cxc_jl_qjgl_jlqjtz
 * @Author: jiang
 * @Date:   2023-09-25
 * @Version: V1.0
 */
@CrossOrigin(origins = "*", maxAge = 3600)
@Api(tags="cxc_jl_qjgl_jlqjtz")
@RestController
@RequestMapping("/jlgltz/cxcJlQjglJlqjtz")
@Slf4j
//查询局里计量管理数据库中的天然气产销厂的所有数据，存入到自己的数据库中
public class jlglController {
    @Autowired
    private ICxcJlQjglJlqjtzService cxcJlQjglJlqjtzService;

    /**
     * 更新计量点数据库
     * 可以主动
     * 定时每周六凌晨2点更新一次
     * @return
     */
    // cron表达式从左到右（用空格隔开）：秒 分 小时 日期 月份 星期 年份
    // 年份可以不填
//    @Scheduled(cron = "0 0 2 ? * 7")
//    @GetMapping(value = "/updateNow")
//    public Result<?> queryById() {
//        String msg = cxcJlQjglJlqjtzService.queryMaster();
//        return Result.ok(msg);
//    }

    /**
     * 分页列表查询
     * @param cxcJlQjglJlqjtz
     * @param pageNo
     * @param pageSize
     * @param req
     * @return
     */
//    @ApiOperation(value="信息化支持中心周报主表-分页列表查询", notes="信息化支持中心周报主表-分页列表查询")
//    @GetMapping(value = "/list1")
//    public Result<?> queryPageList(CxcJlQjglJlqjtz cxcJlQjglJlqjtz,
//                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
//                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
//                                   HttpServletRequest req) {
//        Field[] declaredFields = cxcJlQjglJlqjtz.getClass().getDeclaredFields();
//        Map<String,String> selectMap = new HashMap<>();
//        for (Field field : declaredFields) {
//            field.setAccessible(true); // 设置字段可访问
//            try {
//                Object value = field.get(cxcJlQjglJlqjtz);
//                String name = field.getName();
//                if (value!=null&&!"serialVersionUID".equals(name)){
//                    String slelctValue = value.toString();
//                    selectMap.put(MyStringUtils.toUnderScoreCase(name),slelctValue);
//                }
//            } catch (IllegalAccessException e) {
//                e.printStackTrace();
//            }
//        }
//        QueryWrapper<CxcJlQjglJlqjtz> queryWrapper = new QueryWrapper<>();
//        queryWrapper.like("f_gldwbh","S010107");
//        queryWrapper.allEq(selectMap);
//        List<CxcJlQjglJlqjtz> list = cxcJlQjglJlqjtzService.list(queryWrapper);
//        Page page = new Page();
//        page.setRecords(list);
//        return Result.ok(page);
//    }

    @ApiOperation(value="气井基础资料-分页列表查询", notes="气井基础资料-分页列表查询")
    @GetMapping(value = "/list")
    public Result<?> queryPageList(CxcJlQjglJlqjtz cxcJlQjglJlqjtz,
                                   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
                                   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
                                   HttpServletRequest req) {
        QueryWrapper<CxcJlQjglJlqjtz> queryWrapper = QueryGenerator.initQueryWrapper(cxcJlQjglJlqjtz, req.getParameterMap(),false);
//        QueryWrapper<CxcJlQjglJlqjtz> queryWrapper = new QueryWrapper<>();
        //加载产销厂数据
        queryWrapper.like("F_GLDWBH","S010107%");
        try {
            Page<CxcJlQjglJlqjtz> page = new Page<CxcJlQjglJlqjtz>(pageNo, pageSize);
            IPage<CxcJlQjglJlqjtz> pageList = cxcJlQjglJlqjtzService.page(page, queryWrapper);
            return Result.ok(pageList);
        }catch (Exception e){
            e.printStackTrace();
        }
        return Result.ok("");
    }


    /**
     * 功能描述: <br>
     * 〈〉获取单位
     * @Param: []
     * @Return: org.gyk.common.api.Result<?>
     * @Author: 闵年泽
     * @Date: 2023/10/9 9:13
     */
    @GetMapping("/getDw")
    public Result<?> getDw(){
        List<String> dwList = cxcJlQjglJlqjtzService.getDw();
        return Result.ok(dwList);
    }

    /**
     * 功能描述: <br>
     * 〈〉获取站场
     * @Param: [dw]
     * @Return: org.gyk.common.api.Result<?>
     * @Author: 闵年泽
     * @Date: 2023/10/9 10:06
     */
    @GetMapping("/getZc")
    public Result<?> getZc(@RequestParam String dw){
        List<String> zcList = cxcJlQjglJlqjtzService.getZc(dw);
        return Result.ok(zcList);
    }

    /**
     * 功能描述: <br>
     * 〈〉获取设备名称
     * @Param: [zc]
     * @Return: org.gyk.common.api.Result<?>
     * @Author: 闵年泽
     * @Date: 2023/10/9 10:07
     */
    @GetMapping("/getSbmc")
    public Result<?> getSbmc(@RequestParam String zc){
        List<String> sbmcList = cxcJlQjglJlqjtzService.getSbmc(zc);
        return Result.ok(sbmcList);
    }
}
