package com.brilliance.isc.common.bopset.controller;

import com.brilliance.isc.bo.model.Bopgat;
import com.brilliance.isc.common.bopset.service.BopgatService;
import com.brilliance.isc.common.context.SettleContext;
import com.brilliance.isc.common.vo.BizAmdInfoVo;
import com.brilliance.isc.common.vo.BizInfoVo;
import com.brilliance.isc.vo.ResponseSet;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;

@Api("收支申报服务")
public class AbstractBopgatController<T1 extends BizInfoVo, T2 extends BizAmdInfoVo> {

    @Autowired
    private BopgatService bopgatService;
    @Autowired
    private SettleContext settleContext;

    Logger logger = LoggerFactory.getLogger(AbstractBopgatController.class);

    @ApiOperation("收支申报boggat前端数据交互（试算）")
    public ResponseSet<Bopgat> mappingBopgatData(Bopgat<T1, T2>  bopgat) {
        try {
            settleContext.loadSettleSession(bopgat.getTransName(), bopgat.getUserId(), bopgat.getRec(), bopgat.getPtsList());
            return ResponseSet.simpleSuccess(bopgatService.mappingBopgatDataAAAAAA(bopgat));
        } catch (Exception ex) {
            logger.error("收支申报bopgat前端试算异常",ex);
            throw ex;
        } finally {
            SettleContext.removeUserSession();
        }
    }

    @ApiOperation("收支申报boggat设置付款人名称")
    public ResponseSet<Bopgat> bopGatSetAcct(Bopgat<T1, T2>  bopgat) {
        try {
            settleContext.loadSettleSession(bopgat.getTransName(), bopgat.getUserId(), bopgat.getRec(), bopgat.getPtsList());
            return ResponseSet.simpleSuccess(bopgatService.bopGatSetAcct(bopgat));
        } catch (Exception ex) {
            logger.error("收支申报bopgat设置付款人名称",ex);
            throw ex;
        } finally {
            SettleContext.removeUserSession();
        }
    }

    @ApiOperation("收支申报boggat获取申报编号")
    public ResponseSet<Bopgat> bopGatGetRptno(Bopgat<T1, T2>  bopgat) {
        try {
            settleContext.loadSettleSession(bopgat.getTransName(), bopgat.getUserId(), bopgat.getRec(), bopgat.getPtsList());
            return ResponseSet.simpleSuccess(bopgatService.bopGatSetAcct(bopgat));
        } catch (Exception ex) {
            logger.error("收支申报bopgat设置付款人名称",ex);
            throw ex;
        } finally {
            SettleContext.removeUserSession();
        }
    }


}
