package com.ruoyi.docking.controller;


import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.common.utils.poi.ExcelUtil;
import com.ruoyi.docking.entity.ProjectProgress;
import com.ruoyi.docking.entity.request.YdxxtjRequest;
import com.ruoyi.docking.service.ProjectProgressService;
import com.ruoyi.gysl.entity.request.ZwIdPageReq;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.util.List;

/**
 * 项目月度进度（对接数据）(ProjectProgress)表控制层
 *
 * @author makejava
 * @since 2025-03-25 14:49:04
 */
@Api(tags = "项目月度进度（对接数据）")
@RestController
@RequestMapping("/gysl/projectProgress")
public class ProjectProgressController extends BaseController {
    /**
     * 服务对象
     */
    @Resource
    private ProjectProgressService projectProgressService;


    /**
     * 查询所有数据
     *
     * @param zwIdPageReq 查询实体
     * @return 所有数据
     */
    @ApiOperation(value = "查询所有数据", response = ProjectProgress.class)
    @GetMapping("/page")
    public AjaxResult selectAll(ZwIdPageReq zwIdPageReq) {
        return success(projectProgressService.page(zwIdPageReq));
    }


    /**
     * 新增数据
     *
     * @param projectMonthInfo 实体对象
     * @return 新增结果
     */
    @ApiOperation("新增数据")
    @PostMapping("/add")
    public AjaxResult insert(@RequestBody @Valid ProjectProgress projectMonthInfo) {
        return success(projectProgressService.save(projectMonthInfo));
    }


    /**
     * 修改数据
     *
     * @param projectProgress 实体对象
     * @return 修改结果
     */
    @ApiOperation("修改数据")
    @PutMapping("/edit")
    public AjaxResult update(@RequestBody ProjectProgress projectProgress) {
        if (projectProgress.getId() != null) {
            return AjaxResult.success(projectProgressService.updateById(projectProgress));
        } else {
            return AjaxResult.success(projectProgressService.save(projectProgress));
        }
    }

    /**
     * 删除数据
     *
     * @param idList 主键结合
     * @return 删除结果
     */
    @ApiOperation("删除数据")
    @DeleteMapping("/delete")
    public AjaxResult delete(@RequestParam("idList") List<Long> idList) {
        return success(projectProgressService.removeByIds(idList));
    }

    /**
     * 项目月度信息投资统计
     */
    @ApiOperation("项目月度信息投资统计")
    @GetMapping("/ydxxtj")
    public AjaxResult ydxxtj(@Valid YdxxtjRequest projectLegend) {
        return success(projectProgressService.ydxxtj(projectLegend));
    }

    /**
     * 根据条件导出所有月度信息
     */
    @ApiOperation(value = "根据条件导出所有月度信息")
    @PostMapping(value = "/export")
    public void export(HttpServletResponse response, @Valid ZwIdPageReq zwIdPageReq) throws Exception {
        List<ProjectProgress> p1 = projectProgressService.page(zwIdPageReq);
        ExcelUtil<ProjectProgress> util = new ExcelUtil<>(ProjectProgress.class);
        util.exportExcel(response, p1, "月度信息");
    }
}

