package com.boco.nbd.wios.manage.controller;

import cn.hutool.core.lang.Assert;
import com.boco.nbd.cams.core.constant.MessageConstant;
import com.boco.nbd.wios.manage.contants.WiosConstant;
import com.boco.nbd.wios.manage.entity.bo.OrderSurveyBo;
import com.boco.nbd.wios.manage.entity.bo.OrderSurveyVo;
import com.boco.nbd.wios.manage.service.impl.OrderSurveyService;
import com.ihidea.component.api.v2.BaseResponse;
import com.ihidea.core.support.exception.ServiceException;
import com.ihidea.core.util.StringUtilsEx;
import io.swagger.annotations.Api;
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.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.annotations.ApiIgnore;

/**
 * 勘察订单管理接口
 * 
 * @author xgl
 * @version [版本号, 2020年9月23日]
 */
@RestController
@RequestMapping("api")
@Api(tags = "勘察订单管理接口")
@ApiIgnore
public class OrderSurveyController {

    @Autowired
    private OrderSurveyService orderSurveyService;
    
    /**
     * 添加勘察订单
     *
     * @param orderSurvey
     * @return
     */
    @PostMapping(value = "orderSurvey/add")
    @ApiOperation(value = "添加勘察订单信息")
    @ApiImplicitParams({@ApiImplicitParam(name = "orderId", value = "订单id", dataType = "String", paramType = "query", required = true)})
    public BaseResponse<Object> add(OrderSurveyBo orderSurvey) {
        Assert.notNull(orderSurvey.getType(), "缺少type");
        Assert.notNull(orderSurvey.getOrderId(), "orderId不能为空");
        if (!StringUtils.isEmpty(orderSurvey.getPredictOverItem())) {
            orderSurvey.setPredictOverItem(StringUtilsEx.unescapeXss(orderSurvey.getPredictOverItem()));
        }
        orderSurveyService.add(orderSurvey);
        return new BaseResponse<>();
    }
    
    /**
     * 修改勘察订单
     *
     * @param orderSurvey
     * @return
     */
    @PostMapping(value = "orderSurvey/update")
    @ApiOperation(value = "修改勘察订单信息")
    @ApiImplicitParams({@ApiImplicitParam(name = "id", value = "勘察订单id", dataType = "int", paramType = "query", required = true)})
    public BaseResponse<Object> update(OrderSurveyBo orderSurvey) {
        if (orderSurvey.getId() == null) {
            throw new ServiceException(MessageConstant.MISSING_PARAM);
        }
        if (!StringUtils.isEmpty(orderSurvey.getPredictOverItem())) {
            orderSurvey.setPredictOverItem(StringUtilsEx.unescapeXss(orderSurvey.getPredictOverItem()));
        }
        orderSurveyService.update(orderSurvey.getId(), orderSurvey);
        return new BaseResponse<>();
    }
    
    /**
     * 查询勘察订单详情
     *
     * @param orderId
     * @return
     */
    @GetMapping(value = "orderSurvey/detail")
    @ApiOperation(value = "查询勘察订单详情")
    @ApiImplicitParams({@ApiImplicitParam(paramType = "query", name = "orderId", value = "订单id", required = true, dataType = "String"),
        @ApiImplicitParam(paramType = "query", name = "type", value = "类型 1:勘察 2:安装变更", required = true, dataType = "int")})
    public BaseResponse<OrderSurveyVo> get(String orderId, Integer type) {
        Assert.notNull(orderId, "orderId不能为空");
        Assert.notNull(type, "type不能为空");
        OrderSurveyVo orderSurvey = orderSurveyService.getByOrderId(orderId, type);
        return new BaseResponse<>(orderSurvey);
    }
}