package com.yeejoin.amos.boot.module.jg.biz.controller;

import com.alibaba.fastjson.JSONObject;
import com.yeejoin.amos.boot.module.jg.api.dto.JgCertificateReplenishDto;
import com.yeejoin.amos.boot.module.jg.api.dto.JgEquipTransferDto;
import com.yeejoin.amos.boot.module.jg.api.entity.JgCertificateReplenish;
import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgUseRegistrationManageServiceImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.RequestMapping;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.Api;
import org.springframework.web.bind.annotation.RestController;
import com.yeejoin.amos.boot.biz.common.controller.BaseController;

import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import com.yeejoin.amos.boot.module.jg.biz.service.impl.JgCertificateReplenishServiceImpl;
import org.typroject.tyboot.core.restful.utils.ResponseHelper;
import org.typroject.tyboot.core.restful.utils.ResponseModel;
import org.springframework.beans.factory.annotation.Autowired;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.bind.annotation.*;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.typroject.tyboot.core.restful.doc.TycloudOperation;
import org.typroject.tyboot.core.foundation.enumeration.UserType;

/**
 * @author system_generator
 * @date 2025-03-19
 */
@RestController
@Api(tags = "补证申请登记")
@RequiredArgsConstructor
@RequestMapping(value = "/jg-certificate-replenish")
public class JgCertificateReplenishController extends BaseController {

    private final JgCertificateReplenishServiceImpl jgCertificateReplenishServiceImpl;


    /**
     * 根据证的sequenceNbr 批量查询证下面的所有设备
     *
     * @param sequenceNbr 证的sequenceNbr
     * @return 证下的所有设备
     */
    @TycloudOperation(ApiLevel = UserType.AGENCY)
    @GetMapping(value = "/queryEquByCertificateSeqList")
    @ApiOperation(httpMethod = "GET", value = "根据证的sequenceNbr 批量查询证下面的所有设备", notes = "根据证的sequenceNbr 批量查询证下面的所有设备")
    public ResponseModel<Map<String, Object>> queryEquByCertificateSeqList(@RequestParam(value = "record") String sequenceNbr) {
        return ResponseHelper.buildResponse(jgCertificateReplenishServiceImpl.queryEquByCertSeq(sequenceNbr));
    }

    /**
     * 新增
     *
     * @return
     */
    @TycloudOperation(ApiLevel = UserType.AGENCY)
    @PostMapping(value = "/save")
    @ApiOperation(httpMethod = "POST", value = "新增", notes = "新增")
    public ResponseModel<List<Map<String, Object>>> save(@RequestBody JSONObject jsonObject) {
        return ResponseHelper.buildResponse(jgCertificateReplenishServiceImpl.save(jsonObject));
    }

    /**
     * 列表分页查询
     *
     * @param current 当前页
     * @param current 每页大小
     * @return
     */
    @TycloudOperation(ApiLevel = UserType.AGENCY)
    @GetMapping(value = "/page")
    @ApiOperation(httpMethod = "GET", value = "分页查询", notes = "分页查询")
    public ResponseModel<Page<JgCertificateReplenish>> queryForPage(JgCertificateReplenishDto dto,
                                                                    @RequestParam(value = "current") int current,
                                                                    @RequestParam(value = "size") int size) {
        Page<JgCertificateReplenish> page = new Page<JgCertificateReplenish>();
        page.setCurrent(current);
        page.setSize(size);
        return ResponseHelper.buildResponse(jgCertificateReplenishServiceImpl.queryForJgCertificateReplenishPage(page, dto));
    }

    /**
     * 撤回
     *
     * @return
     */
    @TycloudOperation(ApiLevel = UserType.AGENCY)
    @PostMapping(value = "/cancel")
    @ApiOperation(httpMethod = "POST", value = "撤回", notes = "撤回")
    public ResponseModel<JgCertificateReplenishDto> cancel(@RequestBody JgCertificateReplenishDto dto) {
        jgCertificateReplenishServiceImpl.cancel(dto);
        return ResponseHelper.buildResponse(null);
    }
    //
    // /**
    //  * 根据sequenceNbr更新
    //  *
    //  * @param sequenceNbr 主键
    //  * @return
    //  */
    // @TycloudOperation(ApiLevel = UserType.AGENCY)
    // @PutMapping(value = "/{sequenceNbr}")
    // @ApiOperation(httpMethod = "PUT", value = "根据sequenceNbr更新", notes = "根据sequenceNbr更新")
    // public ResponseModel<JgCertificateReplenish> updateBySequenceNbrJgCertificateReplenish(@RequestBody JgCertificateReplenish entity, @PathVariable(value = "sequenceNbr") Long sequenceNbr) {
    //     entity.setSequenceNbr(sequenceNbr);
    //     return ResponseHelper.buildResponse(jgCertificateReplenishServiceImpl.updateWithModel(entity));
    // }
    //
    // /**
    //  * 根据sequenceNbr删除
    //  *
    //  * @param sequenceNbr 主键
    //  * @return
    //  */
    // @TycloudOperation(ApiLevel = UserType.AGENCY)
    // @DeleteMapping(value = "/{sequenceNbr}")
    // @ApiOperation(httpMethod = "DELETE", value = "根据sequenceNbr删除", notes = "根据sequenceNbr删除")
    // public ResponseModel<Boolean> deleteBySequenceNbr(HttpServletRequest request, @PathVariable(value = "sequenceNbr") Long sequenceNbr) {
    //     return ResponseHelper.buildResponse(jgCertificateReplenishServiceImpl.removeById(sequenceNbr));
    // }
    //
    // /**
    //  * 根据sequenceNbr查询
    //  *
    //  * @param sequenceNbr 主键
    //  * @return
    //  */
    // @TycloudOperation(ApiLevel = UserType.AGENCY)
    // @GetMapping(value = "/{sequenceNbr}")
    // @ApiOperation(httpMethod = "GET", value = "根据sequenceNbr查询单个", notes = "根据sequenceNbr查询单个")
    // public ResponseModel<JgCertificateReplenish> selectOne(@PathVariable Long sequenceNbr) {
    //     return ResponseHelper.buildResponse(jgCertificateReplenishServiceImpl.queryBySeq(sequenceNbr));
    // }
    //

    //
    // /**
    //  * 列表全部数据查询
    //  *
    //  * @return
    //  */
    // @TycloudOperation(ApiLevel = UserType.AGENCY)
    // @ApiOperation(httpMethod = "GET", value = "列表全部数据查询", notes = "列表全部数据查询")
    // @GetMapping(value = "/list")
    // public ResponseModel<List<JgCertificateReplenish>> selectForList() {
    //     return ResponseHelper.buildResponse(jgCertificateReplenishServiceImpl.queryForJgCertificateReplenishList());
    // }
}
