package com.sunda.spmsweb.ordercontroller;


import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.sunda.spmscommon.ResponseResult;
import com.sunda.spmsorder.entity.MaterialCategoryLabor;
import com.sunda.spmsorder.entity.MaterialPrice;
import com.sunda.spmsorder.service.IMaterialCategoryLaborService;
import com.sunda.spmsorder.service.IMaterialPriceService;
import com.sunda.spmsuser.entity.SpmsUser;
import com.sunda.spmsuser.service.ISpmsUserService;
import com.sunda.spmsweb.aspect.Login;
import com.sunda.spmsweb.aspect.Operation;
import com.sunda.spmsweb.oaservice.OaService;
import com.sunda.spmsweb.util.JWTUtil;
import com.sunda.spmsweb.util.MD5Utils;
import feign.FeignException;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

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

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author hzc
 * @since 2022-05-17
 */
@RestController
@RequestMapping("/materialPrice")
@Api(tags = "物料价格接口", description = "物料价格接口")
public class MaterialPriceController {

    @Autowired
    ISpmsUserService iSpmsUserService;


    @Autowired
    IMaterialPriceService iMaterialPriceService;



    @Operation(logContent = "物料价格同步传输接口", operateType = "同步")
    @RequestMapping("/syncMaterialPrice")
    @ApiOperation(value = "物料价格同步传输接口", notes = "将劳保用品物料的采购价格传输到SPMS，SPMS需求提报到OA时可显示价格供审核人参考；\n" +
            "示例参数 doc:[{},{}]\n" +
            "新增或者存在更新的存在劳保标识的物料价格传输到SPMS。", httpMethod = "POST")
    @Transactional(rollbackFor = Exception.class)
    public ResponseResult syncMaterialPrice(@RequestBody JSONObject doc) {
        String userId = JWTUtil.getUserId(SecurityUtils.getSubject().getPrincipal().toString());
        try {
            boolean result = iMaterialPriceService.syncMaterialPrice(doc);
            if(result){
                return ResponseResult.success("同步成功");
            }else{
                /** 更新失败 */
                return ResponseResult.error("SPMS同步失败");
            }
        } catch (FeignException feignException){
            feignException.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return ResponseResult.error("请求失败 FeignException").add("error", feignException.getMessage());
        }catch (Exception e) {
            e.printStackTrace();
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            return ResponseResult.error("请求异常请重试:" + e);
        }
    }

}
