package com.rongwei.bsserver.controller;


import com.rongwei.bscommon.sys.service.ApsProductDetailService;
import com.rongwei.bsentity.domain.ApsProductDetailDo;
import com.rongwei.bsentity.vo.UpdateProductDetailsAndBlankOutputReq;
import com.rongwei.rwcommon.base.R;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 生产订单-产品明细 前端控制器
 * </p>
 *
 * @author sc
 * @since 2024-03-28
 */
@Slf4j
@RestController
@RequestMapping("/apsProductDetail")
public class ApsProductDetailController {
    @Autowired
    private ApsProductDetailService apsProductDetailService;

    /*
    获取客户订单
     */
    @PostMapping("/getCustomOrderData")
    public R getCustomOrderData(@RequestBody Map<String, Object> params) {
        try {
            log.info("获取客户订单;参数为：{}", params);
            return apsProductDetailService.getCustomOrderData(params);
        } catch (Exception e) {
            e.printStackTrace();
            return R.error("获取客户订单系统订单失败，请联系管理员");
        }
    }

    /*
    更新客户订单
     */
    @PostMapping("/updateCustomOrder")
    public R updateCustomOrder(@RequestBody Map<String, Object> params) {
        try {
            log.info("更新客户订单;参数为：{}", params);
            return apsProductDetailService.updateCustomOrder(params);
        } catch (Exception e) {
            e.printStackTrace();
            return R.error("获取客户订单系统订单失败，请联系管理员");
        }
    }

    /*
    更新合并客户订单
     */
    @PostMapping("/updateMergeCustomOrder")
    public R updateMergeCustomOrder(@RequestBody Map<String, Object> params) {
        try {
            log.info("更新客户订单;参数为：{}", params);
            return apsProductDetailService.updateMergeCustomOrder(params);
        } catch (Exception e) {
            e.printStackTrace();
            return R.error("获取客户订单系统订单失败，请联系管理员");
        }
    }

    /**
     * 更新或保存产品明细
     */
    @PostMapping("/updateOrSaveProductDetails")
    public R updateOrSaveProductDetails(@RequestBody List<ApsProductDetailDo> req) {
        try {
            log.info("更新或保存产品明细;参数为：{}", req);
            return apsProductDetailService.updateOrSaveProductDetails(req);
        } catch (Exception e) {
            e.printStackTrace();
            return R.error("更新或保存产品明细失败，请联系管理员");
        }
    }

    /**
     * 编辑产品明细的 合金、合金状态、厚、宽、长时，调用此接口，用于更新新的产品明细、更新产品明细对应的输出成品、拼接对应坯料计划的输出成品字段
     */
    @PostMapping("/updateProductDetailsAndBlankOutput")
    public R updateProductDetailsAndBlankOutput(@RequestBody UpdateProductDetailsAndBlankOutputReq req) {
        try {
            log.info("更新或保存产品明细及其对应的输出成品;参数为：{}", req);
            return apsProductDetailService.updateProductDetailsAndBlankOutput(req);
        } catch (Exception e) {
            e.printStackTrace();
            return R.error("更新或保存产品明细及其对应的输出成品失败，请联系管理员");
        }
    }
}

