package com.zteits.park.job; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.lang3.StringUtils; import com.clouds.common.constants.CarTypeEnum; import com.clouds.common.constants.ParkLotEnum; import com.github.pagehelper.util.StringUtil; import com.xiaoleilu.hutool.date.DateUtil; import com.xiaoleilu.hutool.date.TimeInterval; import com.xiaoleilu.hutool.util.CollectionUtil; 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.dto.order.parkorder.dto.IncomeForNumJobDTO; import com.zteits.clouds.api.dto.order.parkorder.dto.IncomeForTimeJobDTO; import com.zteits.clouds.api.dto.order.parkorder.param.QueryIncomeForNumJobRequest; import com.zteits.clouds.api.service.order.income.query.IncomeCalculationQueryService; import com.zteits.park.dao.InComeCalculationStaticDao; import com.zteits.park.dao.ParkingLotDao; import com.zteits.park.domain.ParkingLot; import com.zteits.park.domain.TIncomeCalculationStaticNum; import com.zteits.park.domain.TIncomeCalculationStaticTime; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 收益测算定时任务(新) * Copyright: Copyright (c) 2017 zteits * * @ClassName: NewInComeNewJob.java * @Description: * @version: v1.0.0 * @author: wangfei * @date: 2018年3月1日 上午11:34:49 * Modification History: * Date Author Version Description * ---------------------------------------------------------* * 2018年3月1日 wangfei v1.0.0 创建 */ @Component public class NewInComeNewJob { @Autowired private IncomeCalculationQueryService incomeCalculationQueryService; @Autowired private InComeCalculationStaticDao inComeCalculationStaticDao; @Autowired private ParkingLotDao parkingLotDao; @XxlJob("NewInComeNewJob") public ReturnT execute(String... params) throws Exception { String param = XxlJobHelper.getJobParam(); if (StringUtils.isNotEmpty(param) && params == null) { params = param.split(","); } //开启计时器 TimeInterval timer = DateUtil.timer(); XxlJobHelper.log("---收益测算统计定时任务---start--" + DateUtil.now() + "---"); Date date = DateUtil.offsetDay(new Date(), -1); /**按次**/ int numCount=staticOfNum(date); XxlJobHelper.log("----收益测算定时任务--统计按次数据结束,共" + numCount + "条数据,此时耗时:" + timer.intervalMinute() + "分钟"); int timeCount=staticOfTime(date); XxlJobHelper.log("----收益测算定时任务--统计按时数据结束,共" + timeCount + "条数据,此时耗时:" + timer.intervalMinute() + "分钟"); return ReturnT.SUCCESS; } /** * 按次任务统计 * * @return */ private int staticOfNum(Date date) { String dayTime = DateUtil.format(date,"yyyy-MM-dd"); String beginTime=dayTime+" 00:00:00"; String endTime=dayTime+" 23:59:59"; QueryIncomeForNumJobRequest request=new QueryIncomeForNumJobRequest(); request.setSysCode("1001"); request.setBeginTime(beginTime); request.setEndTime(endTime); /**1、查询收益测算按次 调用order库 从订单表中 **/ BizResult> result = incomeCalculationQueryService.queryIncomeForNumJob(request); List incomeNumList =new ArrayList<>(); if(result ==null || null ==result.getData() || CollectionUtil.isEmpty(result.getData())){ return 0; } List jobDTO=result.getData(); for (IncomeForNumJobDTO dto:jobDTO) { if(dto==null || StringUtil.isEmpty(dto.getPlNo()) ){ continue; } TIncomeCalculationStaticNum numDO=new TIncomeCalculationStaticNum(); /***2、根据停车场编号查询停车场信息 **/ ParkingLot parkingLot = parkingLotDao.queryParkingLotInfoByPlNo(dto.getPlNo()); if(parkingLot !=null){ Integer plType=parkingLot.getPlType(); if(null == plType || ParkLotEnum.PL_TYPE_1.getValue()==plType || -1==plType){ continue; } numDO.setBerthNum(null==parkingLot.getPlBerthNum()?0:parkingLot.getPlBerthNum()); numDO.setPlType(null==parkingLot.getPlType()? ParkLotEnum.PL_TYPE_2.getValue():parkingLot.getPlType()); numDO.setPlName(StringUtil.isEmpty(parkingLot.getPlName())?"":parkingLot.getPlName()); numDO.setPlAreaBlockId(null== parkingLot.getPlAreaBlockId()?null:parkingLot.getPlAreaBlockId()); numDO.setPlAreaBlockName(StringUtil.isEmpty(parkingLot.getPlAreaBlockName())?"":parkingLot.getPlAreaBlockName()); } numDO.setPlNo(dto.getPlNo()); numDO.setStaticDate(StringUtil.isEmpty(dto.getStaticDate())?"":dto.getStaticDate()); numDO.setAllNum(null==dto.getAllNum()?0L:dto.getAllNum()); numDO.setCarType(null==dto.getCarType()? CarTypeEnum.SMALL_CAR.val():dto.getCarType()); numDO.setDayNum(null == dto.getDayNum()?0:dto.getDayNum()); numDO.setNightNum(null==dto.getNightNum()?0:dto.getNightNum()); numDO.setFreeNum(null ==dto.getFreeNum()?0:dto.getFreeNum()); incomeNumList.add(numDO); } /***3、批量保存 **/ int batchCount = 0; if(CollectionUtils.isNotEmpty(incomeNumList)){ batchCount=inComeCalculationStaticDao.batchSaveIncomeNum(incomeNumList); } XxlJobHelper.log("---批量保存---结果--" + batchCount + "---"); return result.getData().size(); } /** * 按时任务统计 * * @return */ private int staticOfTime(Date date) { String dayTime = DateUtil.format(date,"yyyy-MM-dd"); String beginTime=dayTime+" 00:00:00"; String endTime=dayTime+" 23:59:59"; QueryIncomeForNumJobRequest request=new QueryIncomeForNumJobRequest(); request.setSysCode("1001"); request.setBeginTime(beginTime); request.setEndTime(endTime); /**1、查询收益测算按时 调用pay库 从订单和停车订单明细表中 **/ BizResult> result = incomeCalculationQueryService.queryIncomeForTimeJob(request); List incomeTimeList =new ArrayList<>(); if(result ==null || null ==result.getData() || CollectionUtil.isEmpty(result.getData())){ return 0; } List jobDTO=result.getData(); for (IncomeForTimeJobDTO dto:jobDTO) { if(dto==null || StringUtil.isEmpty(dto.getPlNo()) ){ continue; } TIncomeCalculationStaticTime timeDO=new TIncomeCalculationStaticTime(); /***2、根据停车场编号查询停车场信息 **/ ParkingLot parkingLot = parkingLotDao.queryParkingLotInfoByPlNo(dto.getPlNo()); if(parkingLot !=null){ Integer plType=parkingLot.getPlType(); if(null == plType || ParkLotEnum.PL_TYPE_1.getValue()==plType || -1==plType){ continue; } timeDO.setBerthNum(null==parkingLot.getPlBerthNum()?0:parkingLot.getPlBerthNum()); timeDO.setPlType(null==parkingLot.getPlType()? ParkLotEnum.PL_TYPE_2.getValue():parkingLot.getPlType()); timeDO.setPlName(StringUtil.isEmpty(parkingLot.getPlName())?"":parkingLot.getPlName()); timeDO.setPlAreaBlockId(null== parkingLot.getPlAreaBlockId()?null:parkingLot.getPlAreaBlockId()); timeDO.setPlAreaBlockName(StringUtil.isEmpty(parkingLot.getPlAreaBlockName())?"":parkingLot.getPlAreaBlockName());; } timeDO.setPlNo(dto.getPlNo()); timeDO.setStaticDate(StringUtil.isEmpty(dto.getStaticDate())?"":dto.getStaticDate()); timeDO.setAllNum(null==dto.getAllNum()?0L:dto.getAllNum()); timeDO.setCarType(null==dto.getCarType()? CarTypeEnum.SMALL_CAR.val():dto.getCarType()); timeDO.setFreeNum(null ==dto.getFreeNum()?new BigDecimal("0"):new BigDecimal(dto.getFreeNum())); timeDO.setDay1HourNum(null==dto.getDay1HourNum()?0:dto.getDay1HourNum()); timeDO.setDay2HourNum(null==dto.getDay2HourNum()?0:dto.getDay2HourNum()); timeDO.setDay3HourNum(null==dto.getDay3HourNum()?0:dto.getDay3HourNum()); timeDO.setDay4HourNum(null==dto.getDay4HourNum()?0:dto.getDay4HourNum()); timeDO.setDay5HourNum(null==dto.getDay5HourNum()?0:dto.getDay5HourNum()); timeDO.setDay6HourNum(null==dto.getDay6HourNum()?0:dto.getDay6HourNum()); timeDO.setDay7HourNum(null==dto.getDay7HourNum()?0:dto.getDay7HourNum()); timeDO.setDay8HourNum(null==dto.getDay8HourNum()?0:dto.getDay8HourNum()); timeDO.setDay9HourNum(null==dto.getDay9HourNum()?0:dto.getDay9HourNum()); timeDO.setDay10HourNum(null==dto.getDay10HourNum()?0:dto.getDay10HourNum()); timeDO.setDay11HourNum(null==dto.getDay11HourNum()?0:dto.getDay11HourNum()); timeDO.setDay12HourNum(null==dto.getDay12HourNum()?0:dto.getDay12HourNum()); timeDO.setNight1HourNum(null==dto.getNight1HourNum()?0:dto.getNight1HourNum()); timeDO.setNight2HourNum(null==dto.getNight2HourNum()?0:dto.getNight2HourNum()); timeDO.setNight3HourNum(null==dto.getNight3HourNum()?0:dto.getNight3HourNum()); timeDO.setNight4HourNum(null==dto.getNight4HourNum()?0:dto.getNight4HourNum()); timeDO.setNight5HourNum(null==dto.getNight5HourNum()?0:dto.getNight5HourNum()); timeDO.setNight6HourNum(null==dto.getNight6HourNum()?0:dto.getNight6HourNum()); timeDO.setNight7HourNum(null==dto.getNight7HourNum()?0:dto.getNight7HourNum()); timeDO.setNight8HourNum(null==dto.getNight8HourNum()?0:dto.getNight8HourNum()); timeDO.setNight9HourNum(null==dto.getNight9HourNum()?0:dto.getNight9HourNum()); timeDO.setNight10HourNum(null==dto.getNight10HourNum()?0:dto.getNight10HourNum()); timeDO.setNight11HourNum(null==dto.getNight11HourNum()?0:dto.getNight11HourNum()); timeDO.setNight12HourNum(null==dto.getNight12HourNum()?0:dto.getNight12HourNum()); incomeTimeList.add(timeDO); } /***3、批量保存 **/ int batchCount = 0; if(CollectionUtils.isNotEmpty(incomeTimeList)){ batchCount=inComeCalculationStaticDao.batchSaveIncomeTime(incomeTimeList); } XxlJobHelper.log("---批量保存---结果--" + batchCount + "---"); return result.getData().size(); } }