package com.casic.missiles.controller;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.casic.missiles.core.base.controller.ExportController;
import com.casic.missiles.core.page.PageFactory;
import com.casic.missiles.core.page.PageInfoBT;
import com.casic.missiles.dto.IdDTO;
import com.casic.missiles.dto.ReturnDTO;
import com.casic.missiles.dto.ReturnUtil;
import com.casic.missiles.dto.meter.FixedAssetRequest;
import com.casic.missiles.model.MeterFixedAssets;
import com.casic.missiles.service.IMeterFixedAssetsService;
import com.casic.missiles.utils.DictCodeUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import javax.validation.Valid;

/**
 * <p>
 *  固定资产Controller
 * </p>
 *
 * @author cuicheng
 * @since 2022-12-07
 */
@Api(tags = "固定资产管理接口")
@RestController
@RequestMapping("/meter/assets")
public class MeterFixedAssetsController extends ExportController {

    /**
     * 固定资产service
     */
    @Autowired
    private IMeterFixedAssetsService iMeterFixedAssetsService;
    /**
     * 计量组织列表
     */
    @ApiOperation("固定资产（分页）")
    @PostMapping("/listPage")
    @ResponseBody
    public ReturnDTO<PageInfoBT<MeterFixedAssets>> listPage(@RequestBody @Valid FixedAssetRequest request) throws Exception {
        Page<MeterFixedAssets> page = PageFactory.defaultPage();
        DictCodeUtils.validDictCode(request);
        return ReturnUtil.success(super.packForBT(iMeterFixedAssetsService.listPage(page, request)));
    }
    /**
     * 固定资产更新
     */
    @ApiOperation("固定资产更新")
    @PostMapping("/update")
    @ResponseBody
    public ReturnDTO update(@RequestBody @Valid MeterFixedAssets meterFixedAssets) {
        return iMeterFixedAssetsService.updateFixedAsset(meterFixedAssets);
    }
    /**
     * 固定资产详情
     */
    @ApiOperation("固定资产详情")
    @PostMapping("/detail")
    @ResponseBody
    public ReturnDTO detail(@RequestBody @Valid IdDTO idDTO) {
        return ReturnUtil.success(iMeterFixedAssetsService.getById(idDTO.getId()));
    }

    /**
     * 刪除固定资产
     */
    @ApiOperation("删除固定资产")
    @PostMapping("/delete")
    @ResponseBody
    public ReturnDTO delete(@RequestBody @Valid IdDTO idDTO) {
        return iMeterFixedAssetsService.deleteByFixedAssetId(idDTO.getId());
    }


}
