FalseDataCreateQuartz.java 6.61 KB
package com.xiniunet.quartz;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.xiniunet.framework.base.BaseRequest;
import com.xiniunet.framework.cache.CacheManager;
import com.xiniunet.framework.constant.CacheTimeEnum;
import com.xiniunet.framework.log.LogUtil;
import com.xiniunet.framework.security.Passport;
import com.xiniunet.framework.util.DateUtil;
import com.xiniunet.framework.util.EncryptUtil;
import com.xiniunet.framework.util.SpringContext;
import com.xiniunet.master.domain.system.User;
import com.xiniunet.master.request.system.UserFindRequest;
import com.xiniunet.master.response.system.UserFindResponse;
import com.xiniunet.master.service.MasterService;
import com.xiniunet.railway.domain.TrainsDetail;
import com.xiniunet.railway.domain.TransPositionData;
import com.xiniunet.railway.enumication.LaidTypeEnum;
import com.xiniunet.railway.request.EscortAttendanceCreateRequest;
import com.xiniunet.railway.request.EscortAttendanceLogCreateRequest;
import com.xiniunet.railway.request.RailwayTransDetailGetRequest;
import com.xiniunet.railway.response.EscortAttendanceCreateResponse;
import com.xiniunet.railway.response.EscortAttendanceLogCreateResponse;
import com.xiniunet.railway.response.RailwayTransDetailCountGetResponse;
import com.xiniunet.railway.service.RailwayService;
import com.xiniunet.service.railway.Constant;
import com.xiniunet.service.railway.biz.RailwayThirdManager;
import com.xiniunet.service.railway.util.RailwayThirdTools;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.*;


/**
 * Created by 胡 on 2016/12/30.
 * 每10秒造一条上岗假数据
 */
@Component
public class FalseDataCreateQuartz {

    private static Logger logger = LoggerFactory.getLogger(RailwayThirdTools.class);
    private static CacheManager cacheManager = SpringContext.getApplicationContext().getBean(CacheManager.class);
    @Autowired
    private RailwayService railwayService;
    @Autowired
    private MasterService masterService;

    @Autowired
    private RailwayThirdManager railwayThirdManager;

    /**
     * 执行定时器,每10s执行一次
     */
    public void execute() {
        logger.warn("每10秒造一条上岗假数据开始==========================");
        Passport passport = new Passport();
        passport.setTenantId(Constant.RAILWAY_TENANT_ID);
        passport.setUserId(Constant.RAILWAY_USER_ID);
        //取sys_user表数据
        UserFindRequest userFindRequest = new UserFindRequest();
        userFindRequest.setPageSize(0);
        UserFindResponse userFindResponse = masterService.findUser(userFindRequest,passport);
        if(userFindResponse.hasError()){
            logger.warn("定时任务userFindResponse:"+ JSONObject.toJSONString(userFindResponse));
            return;
        }
        Map<Long,String>  userMap = new HashMap<>();
        for(User user :userFindResponse.getResult()){
            userMap.put(user.getId(),user.getName());
        }
        String key = EncryptUtil.MD5("useridList" + JSON.toJSONString(userFindRequest));
        List<Long> userIdList = new ArrayList<>();
        if(cacheManager.get(key) == null){
            for(User user :userFindResponse.getResult()){
                userIdList.add(user.getId());
            }
            cacheManager.set(key, userIdList, CacheTimeEnum.ONE_DAY);
        }else {
            userIdList = (List<Long>)cacheManager.get(key);
        }
        //取车厢信息
        RailwayTransDetailGetRequest railwayTransDetailGetRequest = new RailwayTransDetailGetRequest();
        RailwayTransDetailCountGetResponse railwayTransDetailCountGetResponse = railwayThirdManager.getTransCountDetail(railwayTransDetailGetRequest,passport);
        if(railwayTransDetailCountGetResponse.hasError()){
            logger.warn("定时任务railwayTransDetailCountGetResponse:"+ JSONObject.toJSONString(railwayTransDetailCountGetResponse));
            return;
        }
        List<String> categeriesList = new ArrayList<>();
        for(TrainsDetail trainsDetail : railwayTransDetailCountGetResponse.getTrainsDetails()){
            categeriesList.addAll(trainsDetail.getTrainCarriageIds());
        }
        //几个人上岗
        Random rand = new Random();
        int count = rand.nextInt(20);
        if(count == 0){
            count = 1;
        }
        for(int i =0; i<count;i++ ){
            Random random = new Random();
            Long userId = userIdList.get(random.nextInt(userIdList.size()));
            String categiesId = categeriesList.get(random.nextInt(categeriesList.size()));
            //创建一条log
            EscortAttendanceLogCreateRequest escortAttendanceLogCreateRequest = new EscortAttendanceLogCreateRequest();
            escortAttendanceLogCreateRequest.setUserId(userId);
            escortAttendanceLogCreateRequest.setLogTime(new Date());
            escortAttendanceLogCreateRequest.setTrainCarriageId(categiesId);
            escortAttendanceLogCreateRequest.setTrainId("falseData");
            EscortAttendanceLogCreateResponse escortAttendanceLogCreateResponse = railwayService.createEscortAttendanceLog(escortAttendanceLogCreateRequest);
            if(escortAttendanceLogCreateResponse.hasError()){
                logger.warn("定时任务escortAttendanceLogCreateResponse:"+ JSONObject.toJSONString(escortAttendanceLogCreateResponse));
            }
            //创建上岗信息
            EscortAttendanceCreateRequest escortAttendanceCreateRequest = new EscortAttendanceCreateRequest();
            escortAttendanceCreateRequest.setUserId(userId);
            escortAttendanceCreateRequest.setDateId(Long.valueOf(DateUtil.formatDate(new Date(),"yyyyMMdd")));
            escortAttendanceCreateRequest.setLaidTime(new Date());
            escortAttendanceCreateRequest.setTrainCarriageId(categiesId);
            escortAttendanceCreateRequest.setType(LaidTypeEnum.LAID_ON.toString());
            escortAttendanceCreateRequest.setUserName(userMap.get(userId));
            escortAttendanceCreateRequest.setTrainId("falseData");
            EscortAttendanceCreateResponse escortAttendanceCreateResponse = railwayService.createEscortAttendance(escortAttendanceCreateRequest);
            if(escortAttendanceCreateResponse.hasError()){
                logger.warn("定时任务escortAttendanceCreateResponse:"+ JSONObject.toJSONString(escortAttendanceCreateResponse));
            }
            userIdList.remove(userId);
            cacheManager.set(key, userIdList, CacheTimeEnum.ONE_DAY);
        }

        logger.warn("每10秒造一条上岗假数据结束====================");
    }

}