EbsApiController.java 10.7 KB
package pwc.taxtech.atms.controller;

import com.alibaba.fastjson.JSON;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;
import pwc.taxtech.atms.constant.enums.EnumApiCodeMsg;
import pwc.taxtech.atms.dto.ApiResultDto;
import pwc.taxtech.atms.dto.OperationResultDto;
import pwc.taxtech.atms.dto.ebsdto.*;
import pwc.taxtech.atms.service.EbsApiService;

import javax.annotation.Resource;
import javax.validation.Valid;
import java.util.List;

@RestController
@RequestMapping("/ebs/api/v1/dd")
public class EbsApiController {

    private static final Logger logger = LoggerFactory.getLogger(EbsApiController.class);
    @Resource
    private EbsApiService ebsApiService;

    @RequestMapping(value = "/updateJE", method = RequestMethod.POST)
    public @ResponseBody
    ApiResultDto updateJE(@RequestParam(value="id",defaultValue = "123123123") Long id,@RequestBody List<JournalEntryQueryDto> items) {
        logger.info("开始日记账同步更新");
        ApiResultDto apiResultDto = new ApiResultDto();
        if (CollectionUtils.isEmpty(items)) {
            logger.debug("the updateJE return items is empty");
            setApiResult(apiResultDto, EnumApiCodeMsg.APIDATAEMPTY);
            return apiResultDto;
        }
        try{
            ebsApiService.queryRemoteServerThenUpdateJE(id,items);
            logger.debug("日记账同步更新 success");
            setApiResult(apiResultDto, EnumApiCodeMsg.SUCCESS);
            return apiResultDto;
        }catch(Exception e){
            logger.error("updateJE error.", e);
            e.printStackTrace();
            setApiResult(apiResultDto, EnumApiCodeMsg.APIERROR);
            return apiResultDto;
        }
    }

    @RequestMapping(value = "/updateTB", method = RequestMethod.POST)
    public @ResponseBody ApiResultDto updateTB(@RequestParam("id") Long id,@RequestBody List<TrialBalanceQueryDto> items) {
        logger.info("开始科目余额数据同步更新");
        ApiResultDto apiResultDto = new ApiResultDto();
        if (CollectionUtils.isEmpty(items)) {
            logger.debug("the updateTB return items is empty");
            setApiResult(apiResultDto, EnumApiCodeMsg.APIDATAEMPTY);
            return apiResultDto;
        }
        try{
            ebsApiService.queryRemoteServerThenUpdateTB(id,items);
            logger.debug("科目余额数据同步更新 success");
            setApiResult(apiResultDto, EnumApiCodeMsg.SUCCESS);
            return apiResultDto;
        }catch(Exception e){
            logger.error("updateTB error.", e);
            e.printStackTrace();
            setApiResult(apiResultDto, EnumApiCodeMsg.APIERROR);
            return apiResultDto;
        }
    }

    @RequestMapping(value = "/updateCF", method = RequestMethod.POST)
    public @ResponseBody ApiResultDto updateCF(@RequestParam("id") Long id,@RequestBody List<CashFlowQueryDto> items) {
        logger.info("开始现金流量数据同步更新");
        ApiResultDto apiResultDto = new ApiResultDto();
        if (CollectionUtils.isEmpty(items)) {
            logger.debug("the updateCF return items is empty");
            setApiResult(apiResultDto, EnumApiCodeMsg.APIDATAEMPTY);
            return apiResultDto;
        }
        try{
            ebsApiService.queryRemoteServerThenUpdateCF(id,items);
            logger.debug("现金流量数据同步更新 success");
            setApiResult(apiResultDto, EnumApiCodeMsg.SUCCESS);
            return apiResultDto;
        }catch(Exception e){
            logger.error("updateCF error.", e);
            e.printStackTrace();
            setApiResult(apiResultDto, EnumApiCodeMsg.APIERROR);
            return apiResultDto;
        }
    }

    @RequestMapping(value = "/updateBS", method = RequestMethod.POST)
    public @ResponseBody ApiResultDto updateBS(@RequestParam("id") Long id,@RequestBody List<BalanceSheetQueryDto> items) {
        logger.info("开始资产负债数据同步更新");
        ApiResultDto apiResultDto = new ApiResultDto();
        if (CollectionUtils.isEmpty(items)) {
            logger.debug("the updateBS return items is empty");
            setApiResult(apiResultDto, EnumApiCodeMsg.APIDATAEMPTY);
            return apiResultDto;
        }
        try{
            ebsApiService.queryRemoteServerThenUpdateBS(id,items);
            logger.debug("资产负债数据同步更新 success");
            setApiResult(apiResultDto, EnumApiCodeMsg.SUCCESS);
            return apiResultDto;
        }catch(Exception e){
            logger.error("updateBS error.", e);
            e.printStackTrace();
            setApiResult(apiResultDto, EnumApiCodeMsg.APIERROR);
            return apiResultDto;
        }
    }

    @RequestMapping(value = "/updatePL", method = RequestMethod.POST)
    public @ResponseBody ApiResultDto updatePL(@RequestParam("id") Long id,@RequestBody List<ProfitLossStatementQueryDto> items) {
        logger.info("开始利润数据同步更新");
        ApiResultDto apiResultDto = new ApiResultDto();
        if (CollectionUtils.isEmpty(items)) {
            logger.debug("the updatePL return items is empty");
            setApiResult(apiResultDto, EnumApiCodeMsg.APIDATAEMPTY);
            return apiResultDto;
        }
        try{
            ebsApiService.queryRemoteServerThenUpdatePL(id,items);
            logger.debug("利润数据同步更新 success");
            setApiResult(apiResultDto, EnumApiCodeMsg.SUCCESS);
            return apiResultDto;
        }catch(Exception e){
            logger.error("updatePL error.", e);
            e.printStackTrace();
            setApiResult(apiResultDto, EnumApiCodeMsg.APIERROR);
            return apiResultDto;
        }
    }

    @RequestMapping(value = "/updateBSprc", method = RequestMethod.POST)
    public @ResponseBody ApiResultDto updateBSprc(@RequestParam("id") Long id,@RequestBody List<BalanceSheetPrcQueryDto> items) {
        logger.info("开始资产负债PRC数据同步更新");
        ApiResultDto apiResultDto = new ApiResultDto();
        if (CollectionUtils.isEmpty(items)) {
            logger.debug("the updateBSprc return items is empty");
            setApiResult(apiResultDto, EnumApiCodeMsg.APIDATAEMPTY);
            return apiResultDto;
        }
        try{
            ebsApiService.queryRemoteServerThenUpdateBSprc(id,items);
            logger.debug("资产负债PRC数据同步更新 success");
            setApiResult(apiResultDto, EnumApiCodeMsg.SUCCESS);
            return apiResultDto;
        }catch(Exception e){
            logger.error("updateBSprc error.", e);
            setApiResult(apiResultDto, EnumApiCodeMsg.APIERROR);
            return apiResultDto;
        }
    }

    @RequestMapping(value = "/updatePLprc", method = RequestMethod.POST)
    public @ResponseBody ApiResultDto updatePLprc(@RequestParam("id") Long id,@RequestBody List<ProfitLossStatementPrcQueryDto> items) {
        logger.info("开始利润PRC数据同步更新");
        ApiResultDto apiResultDto = new ApiResultDto();
        if (CollectionUtils.isEmpty(items)) {
            logger.debug("the updatePLprc return items is empty");
            setApiResult(apiResultDto, EnumApiCodeMsg.APIDATAEMPTY);
            return apiResultDto;
        }
        try{
            ebsApiService.queryRemoteServerThenUpdatePLprc(id,items);
            logger.debug("利润PRC数据同步更新 success");
            setApiResult(apiResultDto, EnumApiCodeMsg.SUCCESS);
            return apiResultDto;
        }catch(Exception e){
            logger.error("updatePLprc error.", e);
            setApiResult(apiResultDto, EnumApiCodeMsg.APIERROR);
            return apiResultDto;
        }
    }

    @RequestMapping(value = "/updateOAR", method = RequestMethod.POST)
    public @ResponseBody ApiResultDto updateOAR(@RequestParam("id") Long id,@RequestBody List<OrganizationAccountingRateQueryDto> items) {
        logger.info("开始汇率数据同步更新");
        ApiResultDto apiResultDto = new ApiResultDto();
        if (CollectionUtils.isEmpty(items)) {
            logger.debug("the updateOAR return items is empty");
            setApiResult(apiResultDto, EnumApiCodeMsg.APIDATAEMPTY);
            return apiResultDto;
        }
        try{
            ebsApiService.queryRemoteServerThenUpdateOAR(id,items);
            logger.debug("汇率数据同步更新 success");
            setApiResult(apiResultDto, EnumApiCodeMsg.SUCCESS);
            return apiResultDto;
        }catch(Exception e){
            logger.error("updateOAR error.", e);
            setApiResult(apiResultDto, EnumApiCodeMsg.APIERROR);
            return apiResultDto;
        }
    }
    @RequestMapping(value = "/updateOrg", method = RequestMethod.POST)
    public ApiResultDto updateOrg(@RequestParam("id") Long id,@RequestBody @Valid List<OrganizationQueryDto> items) {
        logger.info("开始机构信息数据同步更新");
        ApiResultDto apiResultDto = new ApiResultDto();
        if (CollectionUtils.isEmpty(items)) {
            logger.debug("the updateOrg return items is empty");
            setApiResult(apiResultDto, EnumApiCodeMsg.APIDATAEMPTY);
            return apiResultDto;
        }
        try{
            ebsApiService.queryRemoteServerThenUpdateOrg(id,items);
            logger.debug("机构信息数据同步更新 success");
            setApiResult(apiResultDto, EnumApiCodeMsg.SUCCESS);
            return apiResultDto;
        }catch(Exception e){
            logger.error("updateOrg error.", e);
            setApiResult(apiResultDto, EnumApiCodeMsg.APIERROR);
            return apiResultDto;
        }
    }

    /**
     * callback服务
     * @param callBackDto
     * @return
     */
    @RequestMapping(value = "/callback", method = RequestMethod.POST)
    public ApiResultDto callback(@RequestBody EbsCallBackDto callBackDto) {
        logger.info("EBS callback 调用,taskId :{}", JSON.toJSONString(callBackDto));
        ApiResultDto apiResultDto = new ApiResultDto();
        try{
            ebsApiService.changeCallBackStatus(callBackDto);
            logger.debug("ebs callback taskId:{},status:{} end ",callBackDto.getTaskId(),callBackDto.getTaskStatus());
            setApiResult(apiResultDto, EnumApiCodeMsg.SUCCESS);
            return apiResultDto;
        }catch(Exception e){
            logger.error("ebs callback error.", e);
            setApiResult(apiResultDto, EnumApiCodeMsg.APIERROR);
            return apiResultDto;
        }
    }

    @RequestMapping(value = "syncOrg", method = RequestMethod.GET)
    public @ResponseBody
    OperationResultDto syncOrg() {
        return ebsApiService.syncOrg();
    }

    private void setApiResult(ApiResultDto apiResultDto, EnumApiCodeMsg error) {
        apiResultDto.setCode(error.getCode());
        apiResultDto.setMessage(error.getMsg());
    }



}