package com.steerinfo.dil.controller;

import com.steerinfo.dil.feign.ColumnDataFeign;
import com.steerinfo.dil.model.AmsSalePlan;
import com.steerinfo.dil.model.AmsSalePlanMaterial;
import com.steerinfo.dil.service.IAmsSalePlanMaterialService;
import com.steerinfo.dil.util.ColumnDataUtil;
import com.steerinfo.dil.util.PageListAdd;
import com.steerinfo.dil.util.BaseRESTfulController;
import com.steerinfo.framework.controller.RESTfulResult;
import com.steerinfo.framework.service.pagehelper.PageHelper;
import com.steerinfo.framework.service.pagehelper.PageList;
import com.steerinfo.framework.utils.collection.ListUtils;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.math.BigDecimal;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * AmsSalePlanMaterial RESTful接口:
 * @author generator
 * @version 1.0-SNAPSHORT 2021-11-16 10:12
 * 类描述
 * 修订历史:
 * 日期:2021-11-16
 * 作者:generator
 * 参考:
 * 描述:AmsSalePlanMaterial RESTful接口
 * @see null
 * @Copyright 湖南视拓信息技术股份有限公司. All rights reserved.
 */
@RestController
@RequestMapping("/${api.version}/amssaleplanmaterials")
public class AmsSalePlanMaterialController extends BaseRESTfulController {

    @Autowired
    IAmsSalePlanMaterialService amsSalePlanMaterialService;

    @Autowired
    ColumnDataFeign columnDataFeign;

    @Autowired
    ColumnDataUtil columnDataUtil;

    @ApiOperation(value="查询销售计划物资信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "apiId(169)", value = "表头", required = false, dataType = "Interger")
    })
    @PostMapping("/getSalePlanMaterialInfo")
    public RESTfulResult getSalePlanMaterialInfo(BigDecimal planId,@RequestBody(required=false) Map<String,Object> mapValue,
                                         Integer apiId,
                                         Integer pageNum,
                                         Integer pageSize){
        if (mapValue == null) {
            mapValue = new HashMap<>();
        }
        mapValue.put("planId",planId);
        PageHelper.startPage(pageNum,pageSize);
        List<Map<String, Object>> amsSalePlanMaterial1 = amsSalePlanMaterialService.getSalePlanMaterialInfo(mapValue);
        PageListAdd pageList = columnDataUtil.tableColumnData(apiId, null,amsSalePlanMaterial1);
        return success(pageList);
    }

    /**
     * 新增销售计划物资信息
     * @param amsSalePlanMaterial
     * @return
     */
    @ApiOperation(value="新增销售计划物资信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "amsSalePlanMaterial", value = "销售计划物资信息对象", required = false, dataType = "AmsSalePlanMaterial")
    })
    @PostMapping(value = "/addAmsSalePlanMaterial")
    public RESTfulResult addAmsSalePlanMaterial(@RequestBody(required = false) AmsSalePlanMaterial amsSalePlanMaterial){
        int i = amsSalePlanMaterialService.addAmsSalePlanMaterial(amsSalePlanMaterial);
        return success(i);
    }

    /**
     * 通过主键删除销售计划物资信息
     * @param planMaterialId
     * @return
     */
    @ApiOperation(value="通过主键删除销售计划物资信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "planId", value = "主键ID", required = false, dataType = "BigDecimal")
    })
    @PostMapping(value = "/deleteAmsSalePlanMaterial")
    public RESTfulResult deleteAmsSalePlanMaterial(@RequestParam BigDecimal planMaterialId){
        int i = amsSalePlanMaterialService.deleteAmsSalePlanMaterial(planMaterialId);
        return success(i);
    }

    /**
     * 通过主键查询销售计划物资信息
     * @param planMaterialId
     * @return
     */
    @ApiOperation(value="通过主键查询销售计划物资信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "planMaterialId", value = "销售计划物资表主键", required = false, dataType = "BigDecimal")
    })
    @PostMapping(value = "/getAmsSalePlanMaterialByPlanMaterialId")
    public RESTfulResult getAmsSalePlanMaterialByPlanMaterialId(@RequestParam BigDecimal planMaterialId){
        List<Map<String, Object>> amsSalePlanMaterial = amsSalePlanMaterialService.selectByPlanMaterialId(planMaterialId);
        return success(amsSalePlanMaterial);
    }

    /**
     * 通过主键修改销售计划物资信息
     * @param amsSalePlanMaterial
     * @return
     */
    @ApiOperation(value="通过主键修改销售计划物资信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "amsSalePlanMaterial", value = "销售计划物资信息", required = false, dataType = "AmsSalePlanMaterial")
    })
    @PostMapping(value = "/upadteAmsSalePlanMaterial")
    public RESTfulResult upadteAmsSalePlanMaterial(@RequestBody(required = false) AmsSalePlanMaterial amsSalePlanMaterial){
        int i = amsSalePlanMaterialService.upadteAmsSalePlanMaterial(amsSalePlanMaterial);
        return success(i);
    }
}