package com.brilliance.isc.common.ptspta.resource;

import com.brilliance.isc.bo.Bch;
import com.brilliance.isc.bo.Pta;
import com.brilliance.isc.common.cache.pta.PtaCacheService;
import com.brilliance.isc.common.context.SettleContext;
import com.brilliance.isc.common.ptspta.service.PtsptaService;
import com.brilliance.isc.common.vo.PtsptaVo;
import com.brilliance.isc.vo.BnmVo;
import com.brilliance.isc.vo.PtsptaQueryVo;
import com.brilliance.isc.vo.ResponseSet;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import javax.annotation.Resource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import java.util.Map;

@RestController
@RequestMapping("/ptspta")
public class PtsptaResource {

    @Resource
    private PtsptaService ptsptaService;
    @Resource
    private SettleContext settleContext;
    @Resource
    private PtaCacheService ptaCacheService;


    @PostMapping("/queryptainfo")
    public ResponseSet queryPtaInfo(PtsptaQueryVo ptsptaVo) {
        return ptsptaService.queryPta(ptsptaVo);
    }

    @PostMapping("/queryptsptainfo")
    public ResponseSet queryPtsptaInfo(PtsptaQueryVo ptsptaVo) {



        return ptsptaService.queryPtsptaInfo(ptsptaVo);
    }

    /**
     * function: 生成临时客户规则
     */
    @PostMapping("/ptsTmpAdrAddAuto")
    public ResponseSet ptsTmpAdrAddAuto(PtsptaVo ptsptaVo) {
        settleContext.simpleLoadSettleSession();
        Map<String, Object> map = ptsptaService.ptsTmpAdrAddAuto(ptsptaVo);
        if(map.containsKey("errorMsg")){
            return new ResponseSet("999999", map.get("errorMsg").toString());
        }
        return new ResponseSet(map.get("ptsptaVo"));
    }

    /**
     * function: Ptap13组件生成临时客户规则
     */
    @PostMapping("/ptsTmpAdrAdd")
    public ResponseSet ptsTmpAdrAdd(PtsptaVo ptsptaVo) {
        settleContext.simpleLoadSettleSession();
        Map<String, Object> map = ptsptaService.ptsTmpAdrAdd(ptsptaVo);
        if(map.containsKey("errorMsg")){
            return new ResponseSet("999999", map.get("errorMsg").toString());
        }
        return new ResponseSet(map.get("ptsptaVo"));
    }

    @PostMapping("/getPtsptaInfo")
    public ResponseSet getPtsptaInfo(PtsptaQueryVo ptsptaVo) {
        return ptsptaService.getPtsptaInfo(ptsptaVo);
    }

    @PostMapping("/queryPtyByExk")
    public ResponseSet queryPtyByExk(PtsptaQueryVo ptsptaVo) {
        return new ResponseSet(ptsptaService.queryPtyByExk(ptsptaVo));
    }

    //Ptap1-13显示弹窗
    @PostMapping("/queryPtaInfos")
    public ResponseSet queryPtaInfos(PtsptaQueryVo ptsptaVo) {
        return ptsptaService.queryPtas(ptsptaVo);
    }

    //Ptap3组件当事人弹窗回填，返回页面使用信息
    @PostMapping("/queryptsptainfo3")
    public ResponseSet queryPtsptaInfo3(PtsptaQueryVo ptsptaVo) {
        return ptsptaService.queryPtsptaInfo3(ptsptaVo);
    }

    //Ptap5、Ptap8显示弹窗
    @PostMapping("/queryPtaInfo5")
    public ResponseSet queryPtaInfo5(PtsptaQueryVo ptsptaVo) {
        return ptsptaService.queryPta5(ptsptaVo);
    }

    //Ptap5 Bic显示弹窗
    @PostMapping("/queryPtaBic")
    public ResponseSet queryPtaBic(PtsptaQueryVo ptsptaVo) {
        return ptsptaService.queryPtaBic(ptsptaVo);
    }

    //Ptap5 Bic回填
    @PostMapping("/queryPtsptaBic")
    public ResponseSet queryPtsptaBic(PtsptaQueryVo ptsptaVo) {
        return ptsptaService.queryPtsptaBic(ptsptaVo);
    }

    //Ptap5、Ptap8组件当事人弹窗回填，返回页面使用信息
    @PostMapping("/queryptsptainfo5")
    public ResponseSet queryPtsptaInfo5(PtsptaQueryVo ptsptaVo) {
        return ptsptaService.queryPtsptaInfo5(ptsptaVo);
    }

    //Ptap12和Ptap13组件当事人弹窗回填，返回页面使用信息和账号
    @PostMapping("/queryPtsptaInfo12")
    public ResponseSet queryPtsptaInfo12(PtsptaQueryVo ptsptaVo) {
        try{
            settleContext.simpleLoadSettleSession();
            Bch orgbch = SettleContext.getUserSession().getOrgBch();
            if (orgbch != null && "0".equals(orgbch.getLev())) {
                Pta pta = ptaCacheService.getPtaByInr(ptsptaVo.getInr());
                if (pta != null) {
                    settleContext.loadSettleSession("", pta.getBranchinr(), "");
                }
            }
            return ptsptaService.queryPtsptaInfo12(ptsptaVo);
        } catch (Exception e){
            throw e;
        } finally {
            SettleContext.removeUserSession();
        }
    }

    //Ptap12和Ptap13输入账号显示弹窗
    @PostMapping("/queryPtaInfoByOrcact")
    public ResponseSet queryPtaInfoByOrcact(PtsptaQueryVo ptsptaVo) {
        try {
            settleContext.simpleLoadSettleSession();
            return ptsptaService.queryPtaInfoByOrcact(ptsptaVo);
        } catch (Exception e){
           throw e;
        } finally {
            SettleContext.removeUserSession();
        }
    }

    //应收账款和信保融资通过客户编号查询客户信息
    @PostMapping("/queryPtyInfos")
    public ResponseSet queryPtyInfos(PtsptaQueryVo ptsptaVo) {
        return ptsptaService.queryPtyInfos(ptsptaVo);
    }

    //cips渠道银行信息查询
    @PostMapping("/getCipsBankInfo")
    public ResponseSet getPurposameData(@RequestBody BnmVo bnmVo) {
        return ptsptaService.queryBnm(bnmVo);
    }


}
