package com.casic.missiles.controller.cockpit;

import cn.hutool.core.date.DateUtil;
import com.casic.missiles.dto.ReturnDTO;
import com.casic.missiles.dto.ReturnUtil;
import com.casic.missiles.dto.business.board.BoardDeptComprehensiveResponse;
import com.casic.missiles.dto.cockpit.*;
import com.casic.missiles.service.cockpit.IMeasureTaskService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Calendar;
import java.util.Date;

/**
 * @Description: 计量管理驾驶舱-计量任务
 * @Author: wangpeng
 * @Date: 2023/6/14 9:05
 */
@Api(tags = "计量管理驾驶舱-计量任务")
@Slf4j
@RestController
@RequestMapping("/cockpit/measure/task")
public class MeasureTaskController {
    @Autowired
    private IMeasureTaskService measureTaskService;

    /**
     * 组织架构使用系统管理组织架构
     */

    @ApiOperation("订单情况-接单天数、接单数量、成交额")
    @GetMapping("/orderInfo")
    public ReturnDTO<OrderInfoResponse> orderInfo() {
        return ReturnUtil.success(measureTaskService.orderInfo());
    }

    @ApiOperation("实验室资产")
    @GetMapping("/lab/assets")
    public ReturnDTO<LabAssetsResponse> labAssets() {
        return ReturnUtil.success(measureTaskService.labAssets());
    }

    /**
     * 部门工作分析情况(本月)，使用业务管理-业务看板中部门综合分析
     */
    @ApiOperation("部门工作分析情况(本月)")
    @GetMapping("/work/list")
    public ReturnDTO<BoardDeptComprehensiveResponse> workList() {
        return ReturnUtil.success(measureTaskService.workList());
    }

    @ApiOperation("本月检完样品、同比、环比")
    @GetMapping("/work/ratio")
    public ReturnDTO<WorkRatioResponse> workRatio() {
        return ReturnUtil.success(measureTaskService.workRatio());
    }

    /**
     * 部门产值分析情况(本月)，使用业务管理-业务看板中部门产值分析改造成按部门分组统计
     */
    @ApiOperation("部门产值分析情况(本月)")
    @GetMapping("/output/list")
    public ReturnDTO<CockpitDeptOutputListResponse> deptOutputList() {
        Calendar c = Calendar.getInstance();
        c.add(Calendar.MONTH, 0);
        c.set(Calendar.DAY_OF_MONTH, 1);
        c.set(Calendar.HOUR_OF_DAY, 0);
        c.set(Calendar.MINUTE, 0);
        c.set(Calendar.SECOND, 0);
        Date m = c.getTime();
        String startTime = DateUtil.format(m, "yyyy-MM-dd HH:mm:ss");
        return ReturnUtil.success(measureTaskService.deptOutputList(startTime, DateUtil.now()));
    }

    @ApiOperation("本月产值、同比、环比")
    @GetMapping("/output/ratio")
    public ReturnDTO<DeptOutputRatioResponse> deptOutputRatio() {
        return ReturnUtil.success(measureTaskService.deptOutputRatio());
    }

    @ApiOperation("本月调度工况-超期样品信息")
    @GetMapping("/situation/overdueSample")
    public ReturnDTO<OverdueSampleResponse> overdueSample() {
        return ReturnUtil.success(measureTaskService.overdueSample());
    }

    /**
     * 本月调度工况，中间的各实验室样品超期数量在部门综合分析中有，放到工作分析中展示
     */

    /**
     * 本月调度工况-合格信息，样品检测合格与否无该信息，不做
     */

    /**
     * 本月人员综合分析-使用业务管理模块业务看板中部门产值分析
     */
    @ApiOperation("本月人员综合分析")
    @GetMapping("/staff/analyse")
    public ReturnDTO<StaffAnalyseListResponse> staffAnalyse() {
        return ReturnUtil.success(measureTaskService.staffAnalyse());
    }

}
