ParkLotTempInfoJob.java 5.46 KB
package com.zteits.park.job;

import org.apache.commons.lang3.StringUtils;
import com.clouds.common.utils.ResultUtils;
import com.xxl.job.core.biz.model.ReturnT;
import com.xxl.job.core.context.XxlJobHelper;
import com.xxl.job.core.handler.annotation.XxlJob;
import com.zteits.clouds.api.apibase.bean.BizResult;
import com.zteits.clouds.api.apibase.bean.PageBean;
import com.zteits.clouds.api.dto.pay.ParkLotTempInfoTruncateReq;
import com.zteits.clouds.api.dto.pay.TdBTempParklotDTO;
import com.zteits.clouds.api.dto.pay.param.ParkLotTempInfoBatchSaveReq;
import com.zteits.clouds.api.dto.pay.param.ParkTempInfoPageQueryRequest;
import com.zteits.clouds.api.service.park.ParkingLotService;
import com.zteits.clouds.api.service.pay.ParkLotTempInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.List;

/**
 * Copyright: Copyright (c) 2017  zteits
 *
 * @ClassName: com.zteits.park.job
 * @Description: 统计停车场临时信息,插入到order域的停车场临时表中
 * @version: v1.0.0
 * @author: atao
 * @date: 2017/10/14   下午3:03
 * Modification History:
 * Date         Author          Version      Description
 * ---------------------------------------------------------*
 * 2017/10/14      atao          v1.0.0          创建
 */
@Component
public class ParkLotTempInfoJob {

    @Autowired
    private ParkLotTempInfoService parkLotTempInfoService;
    @Autowired
    private ParkingLotService parkingLotService;

    @XxlJob("parkLotTempInfoJob")
    public ReturnT<String> execute(String... params) throws Exception {
        String param = XxlJobHelper.getJobParam();
        if (StringUtils.isNotEmpty(param) && params == null) {
            params = param.split(",");
        }
        String sysCode = "123456";
        XxlJobHelper.log("开始清空停车场临时表");
        ParkLotTempInfoTruncateReq req = new ParkLotTempInfoTruncateReq();
        req.setSysCode(sysCode);
        BizResult<Boolean> result = parkLotTempInfoService.truncateParkLotTempInfo(req);
        if (ResultUtils.isSuccess(result)) {
            XxlJobHelper.log("清空停车场临时表成功!");
        }else {
            XxlJobHelper.log("清空停车场临时表失败!");
           return returnFail(result.getErrMsg(),"清空停车场临时表失败!");
        }


        int maxPageSize = 200;

        ParkTempInfoPageQueryRequest request = new ParkTempInfoPageQueryRequest();
        request.setSysCode(sysCode);
        request.getBaseRequest().setPageNum(1);
        request.getBaseRequest().setPageSize(maxPageSize);

        BizResult<PageBean<TdBTempParklotDTO>> bizResult = parkingLotService.queryParkTempInfoPage(request);

        if (ResultUtils.isError(bizResult)) {
            return returnFail(bizResult.getErrMsg(), "获取第1页停车场临时信息失败!");
        }else {
            BizResult<Integer> saveResult =   saveParkLotTempInfo(1,bizResult.getData().getDataList());
            if(ResultUtils.isError(saveResult)){
                return returnFail(saveResult.getErrMsg(),"保存停车场临时信息失败!");
            }
        }

        PageBean<TdBTempParklotDTO> pageBean = bizResult.getData();
        Integer totalPage = pageBean.getPages();
        for (int i = 2; i <= totalPage; i++) {
            request.getBaseRequest().setPageNum(i);
            bizResult = parkingLotService.queryParkTempInfoPage(request);
            if (ResultUtils.isError(bizResult)) {
                return returnFail(bizResult.getErrMsg(), "获取第"+i+"页停车场临时信息失败!");
            }else {
                BizResult<Integer> saveResult =   saveParkLotTempInfo(i,bizResult.getData().getDataList());
                if(ResultUtils.isError(saveResult)){
                    return returnFail(saveResult.getErrMsg(),"保存停车场临时信息失败!");
                }
            }


        }

        return returnSuccess("成功","保存停车场临时信息成功! 总共"+pageBean.getPageTotals()+"条数据!");
    }

    private BizResult<Integer> saveParkLotTempInfo(Integer num,List<TdBTempParklotDTO> dtoList) {


        if(CollectionUtils.isEmpty(dtoList)){
            XxlJobHelper.log("开始保存第"+num+"页停车场临时信息,dataSize = 0");
            return new BizResult<>(0);
        }
        XxlJobHelper.log("开始保存第"+num+"页停车场临时信息,dataSize = "+dtoList.size());
        ParkLotTempInfoBatchSaveReq req = new ParkLotTempInfoBatchSaveReq();
        req.setSysCode("123456");
        req.setTempParklotDTOList(dtoList);
        BizResult<Integer> bizResult = parkLotTempInfoService.batchSaveParkLotTempInfo(req);

        if(ResultUtils.isSuccess(bizResult)){
            XxlJobHelper.log("成功保存第"+num+"页停车场临时信息,dataSize = "+dtoList.size());
        }else{
            XxlJobHelper.log("保存第"+num+"页停车场临时信息失败!");
        }

        return bizResult;

    }

    private ReturnT<String> returnSuccess(String msg, String content) {
        ReturnT<String> returnT = new ReturnT<>();
        returnT.setCode(ReturnT.SUCCESS_CODE);
        returnT.setMsg(msg);
        returnT.setContent(content);
        return returnT;
    }

    private ReturnT<String> returnFail(String msg, String content) {
        ReturnT<String> returnT = new ReturnT<>();
        returnT.setCode(ReturnT.FAIL_CODE);
        returnT.setMsg(msg);
        returnT.setContent(content);
        return returnT;
    }
}