package com.steerinfo.dil.controller;

import com.steerinfo.dil.service.impl.AmsSaleOrderServiceImpl;
import com.steerinfo.dil.util.BaseRESTfulController;
import com.steerinfo.framework.controller.RESTfulResult;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Description:
 * @Author:HuJianGuo
 * @GreateTime:2021/10/26 17:34
 * @Version:V2.0
 */
@RestController
@RequestMapping("/${api.version}/amssaleorder")
public class AmsSaleOrderController extends BaseRESTfulController {

    @Autowired
    AmsSaleOrderServiceImpl amsSaleOrderService;

    /**
     * 销售订单管理对接接口/查询
     *
     * @param saleOrderId
     * @return
     */
    @ApiModelProperty(value = "销售订单管理对接接口/查询")
    @PostMapping("/getSaleOrder")
    public Map<String,Object> getSaleOrder(@RequestParam BigDecimal saleOrderId) {
        Map<String,Object> input = amsSaleOrderService.getSaleOrder(saleOrderId);
        return input;
    }


    @ApiModelProperty(value = "销售订单管理对接接口/查询")
    @PostMapping("/addInwardSteelOrder")
    public RESTfulResult addInwardSteelOrder(@RequestBody(required = false) Map<String,Object> map) throws Exception {
        int input=0;
        try{
            input = amsSaleOrderService.addInwardSteelOrder(map);
            if (input==-1){
                return success("物流系统已经存在下游单据,不能再反审核");
            }
        }catch (Exception e){
            return  failed(e.getMessage());
        }
        return success("操作成功");
    }




    /**
     * 销售订单管理对接接口/修改
     *
     * @param mapVal
     * @return
     */
    @ApiModelProperty(value = "销售订单管理对接接口/修改")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "saleNumber", value = "WXSDD-20210909-00000007", required = true, dataType = "String"),
            @ApiImplicitParam(name = "saleAccountBalance", value = "3000", required = true, dataType = "String"),
            @ApiImplicitParam(name = "saleCurrentOrderAmount", value = "1000", required = true, dataType = "String"),
            @ApiImplicitParam(name = "saleHistoricalOrderAmount", value = "5000", required = true, dataType = "String"),
    })
    @PostMapping("/operationSaleOrder")
    public RESTfulResult operationSaleOrder(@RequestBody Map<String, Object> mapVal) {
        int result = amsSaleOrderService.operationSaleOrder(mapVal);
        return success(result);
    }

    /**
     * 查询车牌号和金蝶分录
     *
     * @param saleOrderMaterialId
     * @return
     */
    @ApiModelProperty(value = "查询车牌号和金蝶分录")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "saleNumber", value = "WXSDD-20210909-00000007", required = true, dataType = "String"),
            @ApiImplicitParam(name = "saleAccountBalance", value = "3000", required = true, dataType = "String"),
            @ApiImplicitParam(name = "saleCurrentOrderAmount", value = "1000", required = true, dataType = "String"),
            @ApiImplicitParam(name = "saleHistoricalOrderAmount", value = "5000", required = true, dataType = "String"),
    })
    @PostMapping("/findCarNumberByOrderId")
    public Map<String,Object> findCarNumberByOrderId(@RequestParam BigDecimal saleOrderMaterialId) {
        Map<String,Object> input = amsSaleOrderService.findCarNumberByOrderId(saleOrderMaterialId);
        return input;
    }

    @ApiModelProperty(value = "查询车牌号分录根据数组")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "saleNumber", value = "WXSDD-20210909-00000007", required = true, dataType = "String"),
            @ApiImplicitParam(name = "saleAccountBalance", value = "3000", required = true, dataType = "String"),
            @ApiImplicitParam(name = "saleCurrentOrderAmount", value = "1000", required = true, dataType = "String"),
            @ApiImplicitParam(name = "saleHistoricalOrderAmount", value = "5000", required = true, dataType = "String"),
    })
    @PostMapping("/findCarNumberByOrderList")
    public Map<String,Object> findCarNumberByOrderList(@RequestBody List<Map<String,Object>> mapList) {
        Map<String,Object> input = amsSaleOrderService.findCarNumberByOrderList(mapList);
        return input;
    }





    /**
     * 查询车牌号和金蝶分录
     *
     * @param map
     * @return
     */
    @ApiModelProperty(value = "异地库:对外开放接口")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "wagonNo", value = "车皮号", required = true, dataType = "String")
    })
    @PostMapping("/selectSaleSteelOrder")
    public RESTfulResult selectSaleSteelOrder(@RequestBody(required = false) Map<String,Object> map) {
        List<Map<String,Object>> steelOrder = amsSaleOrderService.selectSaleSteelOrder(map);
        if (steelOrder==null)
        {
            return failed("抱歉,物流系统没有找到你要的数据");
        }
        return success(steelOrder);
    }



    /**
     * 查询车牌号和金蝶分录
     *
     * @param map
     * @return
     */
    @ApiModelProperty(value = "异地库:接收对方信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "orderNumber", value = "运输订单号", required = true, dataType = "String"),
            @ApiImplicitParam(name = "wagonNo", value = "车皮号", required = true, dataType = "String"),
            @ApiImplicitParam(name = "isReceive", value = "", required = true, dataType = "String"),
            @ApiImplicitParam(name = "ReceiveTime", value = "", required = true, dataType = "String"),
    })
    @PostMapping("/receiveOrderResult")
    public RESTfulResult receiveOrderResult(@RequestBody(required = false) Map<String,Object> map) {
        int result=0;
       try {
            result = amsSaleOrderService.receiveOrderResult(map);
       }catch (Exception e
       ){
           return failed(e.getMessage());
       }
        return success("回传成功");
    }

}