package com.doumee.service.business.impl.thrid; 
 | 
  
 | 
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 
 | 
import com.doumee.biz.system.SystemDictDataBiz; 
 | 
import com.doumee.core.constants.ResponseStatus; 
 | 
import com.doumee.core.exception.BusinessException; 
 | 
import com.doumee.core.haikang.model.HKConstants; 
 | 
import com.doumee.core.haikang.model.cars.response.CarsAlarmResultListResponse; 
 | 
import com.doumee.core.haikang.model.cars.response.CarsDeviceDetaisResponse; 
 | 
import com.doumee.core.haikang.model.param.BaseListPageRequest; 
 | 
import com.doumee.core.haikang.model.param.BaseListPageResponse; 
 | 
import com.doumee.core.haikang.model.param.BaseResponse; 
 | 
import com.doumee.core.haikang.model.param.request.*; 
 | 
import com.doumee.core.haikang.model.param.respose.*; 
 | 
import com.doumee.core.haikang.service.HKCarOpenService; 
 | 
import com.doumee.core.haikang.service.HKService; 
 | 
import com.doumee.dao.web.reqeust.CarsJobAndContractByJobIdDTO; 
 | 
import com.doumee.service.business.third.model.request.TmsFacrotyCodeListRequest; 
 | 
import com.doumee.service.business.third.model.request.TmsOrderNoFinishListRequest; 
 | 
import com.doumee.service.business.third.model.request.TmsOutQtyAndVehicleQtyRequest; 
 | 
import com.doumee.service.business.third.model.request.TmsSevenArrivalDetailsRequest; 
 | 
import com.doumee.core.utils.Constants; 
 | 
import com.doumee.core.utils.DateUtil; 
 | 
import com.doumee.core.utils.Utils; 
 | 
import com.doumee.core.wms.model.response.WmsBaseResponse; 
 | 
import com.doumee.core.wms.model.response.WmsBaseDataResponse; 
 | 
import com.doumee.core.wms.model.response.WmsInventoryJsonResponse; 
 | 
import com.doumee.dao.business.*; 
 | 
import com.doumee.dao.business.join.PlatformWarnEventJoinMapper; 
 | 
import com.doumee.dao.business.join.VisitsJoinMapper; 
 | 
import com.doumee.dao.business.model.*; 
 | 
import com.doumee.dao.business.model.Member; 
 | 
import com.doumee.dao.web.reqeust.CarsJobAndContractDTO; 
 | 
import com.doumee.dao.web.response.platformReport.*; 
 | 
import com.doumee.service.business.impl.PlatformJobServiceImpl; 
 | 
import com.doumee.service.business.third.BoardService; 
 | 
import com.doumee.service.business.third.TmsService; 
 | 
import com.doumee.service.business.third.WmsService; 
 | 
import com.doumee.service.business.third.model.response.*; 
 | 
import com.github.xiaoymin.knife4j.core.util.CollectionUtils; 
 | 
import com.github.yulichang.wrapper.MPJLambdaWrapper; 
 | 
import io.swagger.annotations.ApiModelProperty; 
 | 
import lombok.extern.slf4j.Slf4j; 
 | 
import org.apache.commons.lang3.StringUtils; 
 | 
import org.springframework.beans.BeanUtils; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.beans.factory.annotation.Value; 
 | 
import org.springframework.stereotype.Service; 
 | 
  
 | 
import java.math.BigDecimal; 
 | 
import java.util.*; 
 | 
import java.util.stream.Collectors; 
 | 
  
 | 
/** 
 | 
 * TMS平台对接Service实现 
 | 
 * @author 江蹄蹄 
 | 
 * @date 2023/11/30 15:33 
 | 
 */ 
 | 
@Service 
 | 
@Slf4j 
 | 
public class BoardServiceImpl implements BoardService { 
 | 
    @Autowired 
 | 
    private PlatformLogMapper platformLogMapper; 
 | 
    @Autowired 
 | 
    private WmsService wmsService; 
 | 
    @Autowired 
 | 
    private HiddenDangerMapper hiddenDangerMapper; 
 | 
    @Autowired 
 | 
    private PlatformWaterGasMapper platformWaterGasMapper; 
 | 
    @Autowired 
 | 
    private SystemDictDataBiz systemDictDataBiz; 
 | 
    @Autowired 
 | 
    private TmsFactoryParamMapper tmsFactoryParamMapper; 
 | 
    @Autowired 
 | 
    private PlatformWarnEventJoinMapper platformWarnEventJoinMapper; 
 | 
    @Autowired 
 | 
    private PlatformJobMapper platformJobMapper; 
 | 
    @Autowired 
 | 
    private PlatformBooksMapper platformBooksMapper; 
 | 
    @Autowired 
 | 
    private PlatformWmsDetailMapper platformWmsDetailMapper; 
 | 
    @Autowired 
 | 
    private PlatformWmsJobMapper platformWmsJobMapper; 
 | 
    @Autowired 
 | 
    private PlatformMapper platformMapper; 
 | 
    @Autowired 
 | 
    private VisitsJoinMapper visitsJoinMapper; 
 | 
    @Autowired 
 | 
    private RetentionMapper retentionMapper; 
 | 
    @Autowired 
 | 
    private PlatformGroupMapper platformGroupMapper; 
 | 
    @Autowired 
 | 
    private TmsService tmsService; 
 | 
  
 | 
    @Value("${debug_model}") 
 | 
    private Boolean isDebug; 
 | 
    /** 
 | 
     * 获取区域树形结构数据 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public     List<GeneralVO> todayTotalInList(){ 
 | 
        /** 
 | 
         * 1市公司:根据预约的入园原因为市公司卸货的任务为市公司入库的统计; 
 | 
         * 2集散中心:WMS推送的入库单据; 
 | 
         * 3加工入库:预约入园为重庆加工入库的(作业月台为安泰物流卸货月台); 
 | 
         */ 
 | 
        String[] names = new String[]{"市公司","集散中心","加工入库"}; 
 | 
        String reason =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CITY_XH_REASON_ID).getCode(); 
 | 
        String platformGroupId =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ATWL_XH_PLATFORM_ID).getCode();; 
 | 
        List<GeneralVO> list = new ArrayList<>(); 
 | 
        for (int i = 0; i < 3; i++) { 
 | 
            Random random = new Random(); 
 | 
            GeneralVO data = new GeneralVO(); 
 | 
            data.setName(names[i]); 
 | 
            BigDecimal num =new BigDecimal(0); 
 | 
            if(i == 0){ 
 | 
                List<PlatformBooks> jobs = platformBooksMapper.selectJoinList(PlatformBooks.class, new MPJLambdaWrapper<PlatformBooks>() 
 | 
                        .select(PlatformJob::getTotalNum) 
 | 
                         .leftJoin(PlatformJob.class,PlatformJob::getId,PlatformBooks::getJobId) 
 | 
                        .eq(PlatformBooks::getIsdeleted,Constants.ZERO) 
 | 
                        .eq(PlatformBooks::getReasonId,reason) 
 | 
                        .apply("to_days(t1.done_date) = to_days(now())") 
 | 
                        .eq(PlatformBooks::getStatus,Constants.TWO)); 
 | 
                if(jobs!=null){ 
 | 
                    for(PlatformBooks j :jobs){ 
 | 
                        num =num.add(Constants.formatBigdecimal(j.getTotalNum())); 
 | 
                    } 
 | 
                } 
 | 
            }else if(i ==1){ 
 | 
                List<PlatformJob> jobs = platformJobMapper.selectList (new MPJLambdaWrapper<PlatformJob>() 
 | 
                        .select(PlatformJob::getTotalNum) 
 | 
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                        .eq(PlatformJob::getOrigin,Constants.ONE) 
 | 
                        .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey() 
 | 
                                , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() 
 | 
                                , Constants.PlatformJobStatus.LEAVED.getKey()) 
 | 
                        .apply("to_days(done_date) = to_days(now())") ); 
 | 
                if(jobs!=null){ 
 | 
                    for(PlatformJob j :jobs){ 
 | 
                        if(Objects.nonNull(j)&&Objects.nonNull(j.getTotalNum())){ 
 | 
                            num =num.add(Constants.formatBigdecimal(j.getTotalNum())); 
 | 
                        } 
 | 
  
 | 
                    } 
 | 
                } 
 | 
            }else{ 
 | 
                List<PlatformJob> jobs = platformJobMapper.selectList (new MPJLambdaWrapper<PlatformJob>() 
 | 
                        .select(PlatformJob::getTotalNum) 
 | 
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                        .eq(PlatformJob::getPlatformGroupId,platformGroupId) 
 | 
                        .apply("to_days(done_date) = to_days(now())") 
 | 
                        .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey() 
 | 
                                , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() 
 | 
                                , Constants.PlatformJobStatus.LEAVED.getKey()) ); 
 | 
                if(jobs!=null){ 
 | 
                    for(PlatformJob j :jobs){ 
 | 
                        if(Objects.nonNull(j)&&Objects.nonNull(j.getTotalNum())){ 
 | 
                            num = num.add(Constants.formatBigdecimal(j.getTotalNum())); 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
            data.setNum(num); 
 | 
            list.add(data); 
 | 
        } 
 | 
        return list; 
 | 
  
 | 
    } 
 | 
    /** 
 | 
     * 获取区域树形结构数据 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public BoardStockListVO stockList(){ 
 | 
        BoardStockListVO data = new BoardStockListVO(); 
 | 
        double toatalNum = 1d; 
 | 
        BigDecimal num = new BigDecimal(0); 
 | 
        List<GeneralVO> list = new ArrayList<>(); 
 | 
        try { 
 | 
            toatalNum =Double.parseDouble(systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_TOTAL_STOCK_NUM).getCode()) ; 
 | 
        }catch (Exception e){ 
 | 
        } 
 | 
        WmsBaseResponse<WmsBaseDataResponse> response =  wmsService.getInventoryList(); 
 | 
        if(response!=null && response.getData()!=null && response.getData().size()>0){ 
 | 
            List<WmsInventoryJsonResponse> t= response.getData().get(0).getJson(); 
 | 
            if(t!=null &&t.size()>0){ 
 | 
                for(WmsInventoryJsonResponse j :t){ 
 | 
                    num = num.add (Constants.formatBigdecimal( j.getQty())); 
 | 
                    GeneralVO d = new GeneralVO(); 
 | 
                    d.setNum(Constants.formatBigdecimal(j.getQty())); 
 | 
                    d.setName(j.getItemName()); 
 | 
                    list.add(d); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        data.setStockList(list); 
 | 
        data.setNum(num); 
 | 
        if(toatalNum<=0){ 
 | 
            toatalNum =1; 
 | 
        } 
 | 
        data.setTotalNum(new BigDecimal(toatalNum)); 
 | 
        data.setUseRate(Constants.formatBigdecimal(data.getNum()).divide(data.getTotalNum(),2,BigDecimal.ROUND_HALF_UP)); 
 | 
        return data; 
 | 
  
 | 
    } 
 | 
    /** 
 | 
     * 获取区域树形结构数据 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public List<PageRegionInfoResponse> getRegionTree(CarmeraListVO req){ 
 | 
        List<PageRegionInfoResponse> allList = new ArrayList<>(); 
 | 
        boolean hasNext = true; 
 | 
        int curTotal = 0; 
 | 
        int curPage = 1; 
 | 
        while (hasNext){ 
 | 
            //分页遍历循环查询所有门禁设备数据 
 | 
            BaseListPageRequest param = new BaseListPageRequest(); 
 | 
            param.setUserId("admin"); 
 | 
            param.setPageSize(100); 
 | 
            param.setPageNo(curPage); 
 | 
            BaseResponse<BaseListPageResponse<PageRegionInfoResponse>> response = HKService.pageRegions(param); 
 | 
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ 
 | 
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~"); 
 | 
            } 
 | 
            BaseListPageResponse<PageRegionInfoResponse> r = response.getData(); 
 | 
            curTotal += 100; 
 | 
            if(curTotal >= r.getTotal()){ 
 | 
                hasNext = false; 
 | 
            } 
 | 
            if(r.getList() == null || r.getList().size()==0){ 
 | 
                hasNext =false; 
 | 
            }else{ 
 | 
                allList.addAll(r.getList()); 
 | 
            } 
 | 
            curPage++; 
 | 
        } 
 | 
        if(Constants.equalsInteger(req.getWithCameras(),Constants.ONE)){ 
 | 
            initReginCameralList(allList,req.getName());//获取全部监控点数据 
 | 
        } 
 | 
        List<PageRegionInfoResponse> data = new RegionTreeVO(allList).buildTree(); 
 | 
        return  data; 
 | 
    } 
 | 
    private void initReginCameralList(List<PageRegionInfoResponse> allList,String name) { 
 | 
        CarmeraListVO re = new CarmeraListVO(); 
 | 
        re.setName(name); 
 | 
        List<CarmeraListVO> carmeraListVOList = cameraList(re); 
 | 
        if(carmeraListVOList!=null && carmeraListVOList.size()>0){ 
 | 
            for(PageRegionInfoResponse p : allList){ 
 | 
                for(CarmeraListVO c : carmeraListVOList){ 
 | 
                    if(StringUtils.equals(p.getIndexCode(),c.getReginCode()) 
 | 
                            && (StringUtils.contains(c.getName(),name) ||StringUtils.isBlank(name))){ 
 | 
                        if(p.getCarmeraList()==null){ 
 | 
                            p.setCarmeraList(new ArrayList<>()); 
 | 
                        } 
 | 
                        p.getCarmeraList().add(c); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
    /** 
 | 
     * 获取区域树形结构数据 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public List<PageRegionInfoResponse> regionList(CarmeraListVO req){ 
 | 
        List<PageRegionInfoResponse> allList = new ArrayList<>(); 
 | 
        boolean hasNext = true; 
 | 
        int curTotal = 0; 
 | 
        int curPage = 1; 
 | 
        while (hasNext){ 
 | 
            //分页遍历循环查询所有门禁设备数据 
 | 
            BaseListPageRequest param = new BaseListPageRequest(); 
 | 
            param.setUserId("admin"); 
 | 
            param.setPageSize(100); 
 | 
            param.setPageNo(curPage); 
 | 
            BaseResponse<BaseListPageResponse<PageRegionInfoResponse>> response = HKService.pageRegions(param); 
 | 
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ 
 | 
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~"); 
 | 
            } 
 | 
            BaseListPageResponse<PageRegionInfoResponse> r = response.getData(); 
 | 
            curTotal += 100; 
 | 
            if(curTotal >= r.getTotal()){ 
 | 
                hasNext = false; 
 | 
            } 
 | 
            if(r.getList() == null || r.getList().size()==0){ 
 | 
                hasNext =false; 
 | 
            }else{ 
 | 
                allList.addAll(r.getList()); 
 | 
            } 
 | 
            curPage++; 
 | 
        } 
 | 
        if(Constants.equalsInteger(req.getWithCameras(),Constants.ONE)){ 
 | 
            initReginCameralList(allList,req.getName());//获取全部监控点数据 
 | 
        } 
 | 
        return  allList; 
 | 
    } 
 | 
    @Override 
 | 
    public     List<CarmeraListVO> cameraList(CarmeraListVO req){ 
 | 
        List<PageCameraInfoResponse> allList = new ArrayList<>(); 
 | 
        boolean hasNext = true; 
 | 
        int curTotal = 0; 
 | 
        int curPage = 1; 
 | 
        while (hasNext){ 
 | 
            //分页遍历循环查询所有门禁设备数据 
 | 
            BaseListPageRequest param = new BaseListPageRequest(); 
 | 
            param.setUserId("admin"); 
 | 
            param.setPageSize(100); 
 | 
            param.setPageNo(curPage); 
 | 
            BaseResponse<BaseListPageResponse<PageCameraInfoResponse>> response = HKService.pageCameras(param); 
 | 
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ 
 | 
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~"); 
 | 
            } 
 | 
            BaseListPageResponse<PageCameraInfoResponse> r = response.getData(); 
 | 
            curTotal += 100; 
 | 
            if(curTotal >= r.getTotal()){ 
 | 
                hasNext = false; 
 | 
            } 
 | 
            if(r.getList() == null || r.getList().size()==0){ 
 | 
                hasNext =false; 
 | 
            }else{ 
 | 
                allList.addAll(r.getList()); 
 | 
            } 
 | 
            curPage++; 
 | 
        } 
 | 
  
 | 
        List<CarmeraListVO> data = new ArrayList<>(); 
 | 
        for(PageCameraInfoResponse p : allList){ 
 | 
            if(StringUtils.isBlank(req.getName()) ||StringUtils.contains(p.getCameraName(),req.getName())){ 
 | 
                CarmeraListVO t = new CarmeraListVO(); 
 | 
                t.setIndexCode(p.getCameraIndexCode()); 
 | 
                t.setReginCode(p.getRegionIndexCode()); 
 | 
                t.setName(p.getCameraName()); 
 | 
                t.setStatus(p.getStatus()); 
 | 
                t.setStatusName(p.getStatusName()); 
 | 
                data.add(t); 
 | 
            } 
 | 
        } 
 | 
        return  data; 
 | 
    } 
 | 
    @Override 
 | 
    public    List<PageFireChannelInfoResponse> fireChannelList(){ 
 | 
        List<PageFireChannelInfoResponse> allList = new ArrayList<>(); 
 | 
        boolean hasNext = true; 
 | 
        int curTotal = 0; 
 | 
        int curPage = 1; 
 | 
        while (hasNext){ 
 | 
            //分页遍历循环查询所有门禁设备数据 
 | 
            BaseListPageRequest param = new BaseListPageRequest(); 
 | 
            param.setUserId("admin"); 
 | 
            param.setPageSize(100); 
 | 
            param.setPageNo(curPage); 
 | 
            BaseResponse<BaseListPageResponse<PageFireChannelInfoResponse>> response = HKService.pageFireChannel(param); 
 | 
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ 
 | 
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~"); 
 | 
            } 
 | 
            BaseListPageResponse<PageFireChannelInfoResponse> r = response.getData(); 
 | 
            curTotal += 100; 
 | 
            if(curTotal >= r.getTotal()){ 
 | 
                hasNext = false; 
 | 
            } 
 | 
            if(r.getList() == null || r.getList().size()==0){ 
 | 
                hasNext =false; 
 | 
            }else{ 
 | 
                allList.addAll(r.getList()); 
 | 
            } 
 | 
            curPage++; 
 | 
        } 
 | 
  
 | 
        return  allList; 
 | 
    } 
 | 
    @Override 
 | 
    public    List<PageSensorStatusResponse> sensorStatusList(){ 
 | 
        List<PageSensorStatusResponse> allList = new ArrayList<>(); 
 | 
        boolean hasNext = true; 
 | 
        int curTotal = 0; 
 | 
        int curPage = 1; 
 | 
        while (hasNext){ 
 | 
            //分页遍历循环查询所有门禁设备数据 
 | 
            SensorStatusListRequest param = new SensorStatusListRequest(); 
 | 
            param.setPageSize(100); 
 | 
            param.setPageNo(curPage); 
 | 
            BaseResponse<BaseListPageResponse<PageSensorStatusResponse>> response = HKService.pageSensorStatus(param); 
 | 
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ 
 | 
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~"); 
 | 
            } 
 | 
            BaseListPageResponse<PageSensorStatusResponse> r = response.getData(); 
 | 
            curTotal += 100; 
 | 
            if(curTotal >= r.getTotal()){ 
 | 
                hasNext = false; 
 | 
            } 
 | 
            if(r.getList() == null || r.getList().size()==0){ 
 | 
                hasNext =false; 
 | 
            }else{ 
 | 
                allList.addAll(r.getList()); 
 | 
            } 
 | 
            curPage++; 
 | 
        } 
 | 
  
 | 
        return  allList; 
 | 
    } 
 | 
    @Override 
 | 
    public  List<PlatformGroupFinishVO> platformGroupFinish(){ 
 | 
        List<PlatformGroupFinishVO> data = new ArrayList<>(); 
 | 
        List<PlatformGroup> groups = platformGroupMapper.selectJoinList(PlatformGroup.class, new MPJLambdaWrapper<PlatformGroup>() 
 | 
                .select("(select sum(case when a.total_num is null  then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = a.id  ) else a.total_num end) from platform_job a where a.PLATFORM_GROUP_ID=t.id and a.isdeleted=0   and a.status in(6,9,10) and to_days(a.done_date) = to_days(now()))",PlatformGroup::getOrtherTotalNum) 
 | 
                //.select("(select sum(a.TOTAL_NUM) from platform_job a where a.PLATFORM_GROUP_ID=t.id and a.isdeleted=0   and a.status in(6,9,10) and to_days(a.done_date) = to_days(now()))",PlatformGroup::getOrtherTotalNum) 
 | 
  
 | 
                //.select(" case when t.total_num is null  then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = t.id  ) else t.total_num end ioQty ") 
 | 
                .selectAll(PlatformGroup.class) 
 | 
                .eq(PlatformGroup::getIsdeleted,Constants.ZERO) 
 | 
        ); 
 | 
        if(groups!=null && groups.size()>0){ 
 | 
            List<PlatformWmsDetail> jobList = platformWmsDetailMapper.selectJoinList(PlatformWmsDetail.class, new MPJLambdaWrapper<PlatformWmsDetail>() 
 | 
                    .selectSum( PlatformWmsDetail::getIoQty) 
 | 
                    .selectAs(PlatformGroup::getId, PlatformWmsDetail::getGroupId) 
 | 
                    .leftJoin(PlatformJob.class,PlatformJob::getId,PlatformWmsDetail::getJobId) 
 | 
                    .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO) 
 | 
                    .eq(PlatformJob::getIsdeleted, Constants.ZERO) 
 | 
                    .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey() 
 | 
                            , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() 
 | 
                            , Constants.PlatformJobStatus.LEAVED.getKey()) 
 | 
                    .apply("to_days(t1.create_date) = to_days(now())") 
 | 
                    .groupBy(PlatformJob::getPlatformGroupId) 
 | 
            ); 
 | 
            for(PlatformGroup d : groups){ 
 | 
                PlatformGroupFinishVO t = new PlatformGroupFinishVO(); 
 | 
                if(jobList!=null){ 
 | 
                    for(PlatformWmsDetail dd : jobList){ 
 | 
                      if(Constants.equalsInteger(dd.getGroupId(),d.getId())){ 
 | 
                          d.setTotalNum(dd.getIoQty()); 
 | 
                      } 
 | 
                    } 
 | 
                } 
 | 
                t.setFinishData(Constants.formatBigdecimal(d.getTotalNum()).intValue()+Constants.formatBigdecimal(d.getOrtherTotalNum()).intValue()); 
 | 
                t.setPlatformGroupName(d.getName()); 
 | 
                data.add(t); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return data; 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public  CarWorkSituationVO carWorkSituation(int limit){ 
 | 
        CarWorkSituationVO carWorkSituationVO = new CarWorkSituationVO(); 
 | 
        List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>().lambda() 
 | 
                        .like(PlatformLog::getCreateDate,DateUtil.getCurrDate()) 
 | 
                .orderByDesc(PlatformLog::getCreateDate) 
 | 
                .last(" limit "+limit) 
 | 
        ); 
 | 
        carWorkSituationVO.setPlatformLogList(platformLogList); 
 | 
        return carWorkSituationVO; 
 | 
    } 
 | 
    @Override 
 | 
    public  List<SecurityDeviceDataVO> securityDeviceData(){ 
 | 
        List<SecurityDeviceDataVO> list = new ArrayList<>(); 
 | 
        SecureDevStatusTotalRequest request =new SecureDevStatusTotalRequest(); 
 | 
        request.setIncludeBool(""); 
 | 
        request.setRegionIds(new String[]{}); 
 | 
        BaseResponse<List<SecureDevStatusListResponse>> result = HKService.getSecureDevStatusList(request) ; 
 | 
        if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){ 
 | 
            List<SecureDevStatusListResponse> rlist = result.getData(); 
 | 
            for(SecureDevStatusListResponse r :rlist){ 
 | 
                SecurityDeviceDataVO data = new SecurityDeviceDataVO(); 
 | 
                data.setDeviceType(r.getDevTypeName()); 
 | 
                data.setOnlineNum(r.getOnlineCount()); 
 | 
                data.setOfflineDeviceNum(r.getOfflineCount()); 
 | 
                data.setTotalNum(data.getOnlineNum() + data.getOfflineDeviceNum() ); 
 | 
                list.add(data); 
 | 
            } 
 | 
        } 
 | 
        /* 
 | 
        Random random = new Random(); 
 | 
        for (int i = 1; i <= 3; i++) { 
 | 
            SecurityDeviceDataVO data = new SecurityDeviceDataVO(); 
 | 
            data.setDeviceType("设备类型_"+i); 
 | 
            data.setOnlineNum(random.nextInt(10)); 
 | 
            data.setOfflineDeviceNum(random.nextInt(10)); 
 | 
            data.setTotalNum(data.getOnlineNum() + data.getOfflineDeviceNum() ); 
 | 
            list.add(data); 
 | 
        }*/ 
 | 
        return list; 
 | 
    } 
 | 
    @Override 
 | 
    public  WaningEventDataVO warningEventData(Integer type){ 
 | 
        WaningEventDataVO lastResult = new WaningEventDataVO(); 
 | 
        List<WaningEventDataListVO> list = new ArrayList<>(); 
 | 
        RuleEventSearchRequest request = new RuleEventSearchRequest(); 
 | 
        request.setPageNo(1); 
 | 
        request.setPageSize(1000); 
 | 
        request.setFiledOptions(new ArrayList<>()); 
 | 
        request.setSorts(new ArrayList<>()); 
 | 
        RuleEventFiledOptionsRequest file = new RuleEventFiledOptionsRequest(); 
 | 
        file.setFieldName("event_type"); 
 | 
        file.setFieldValue("131588,131593");//安防告警和人员告警 
 | 
        file.setType("in"); 
 | 
        if(type == 1){ 
 | 
            file.setFieldValue("131588");//安防告警 
 | 
        }else  if(type == 2){ 
 | 
            file.setFieldValue("131593");//人员告警 
 | 
        } 
 | 
        request.getFiledOptions().add(file); 
 | 
        SortRequest sort = new SortRequest(); 
 | 
        sort.setSortField("happen_time"); 
 | 
        sort.setSortType("desc"); 
 | 
        request.getSorts().add(sort); 
 | 
        int total =0; 
 | 
        BaseResponse<BaseListPageResponse< RuleEventSearchDataResponse>> result = HKService.ruleEventSearch(request); 
 | 
        if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){ 
 | 
            List<RuleEventSearchDataResponse> rlist = result.getData().getList(); 
 | 
            if(rlist!=null){ 
 | 
                String privateIp =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.EVENT_FILES_PRIVATE_DOMAIN).getCode(); 
 | 
                String publicIp =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.EVENT_FILES_PUBLIC_DOMAIN).getCode(); 
 | 
                for(RuleEventSearchDataResponse r :rlist){ 
 | 
                    try { 
 | 
                        if(DateUtil.getISO8601DateByStr(r.getHappen_time()).getTime() < Utils.Date.getStart(new Date()).getTime()){ 
 | 
                            continue; 
 | 
                        } 
 | 
                    }catch (Exception e){ 
 | 
                    } 
 | 
                    total ++; 
 | 
                    WaningEventDataListVO data = new WaningEventDataListVO(); 
 | 
                    data.setCreateDate(DateUtil.getPlusTime(DateUtil.getISO8601DateByStr(r.getHappen_time()))); 
 | 
                    data.setAddr(r.getSrc_name()); 
 | 
                    data.setImg(r.getImage_url()); 
 | 
                    if(data.getImg()!=null){ 
 | 
                        data.setImg(data.getImg().replace(privateIp,publicIp)); 
 | 
                    } 
 | 
                    data.setTitle(r.getEvent_type_name()); 
 | 
//                data.setContent(r.get); 
 | 
                    list.add(data); 
 | 
                } 
 | 
            } 
 | 
  
 | 
        } 
 | 
        lastResult.setTotal(total); 
 | 
        lastResult.setList(list); 
 | 
        return lastResult; 
 | 
    } 
 | 
    @Override 
 | 
    public  String getCarmeraPreviemUrl(CarmeraListVO param){ 
 | 
        CameraPreviewURLsRequest request = new CameraPreviewURLsRequest(); 
 | 
        request.setCameraIndexCode(param.getIndexCode()); 
 | 
        BaseResponse<CamerasPreviewURLsResponse> result = HKService.cameraPreviewURLs(request); 
 | 
        if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){ 
 | 
            return result.getData().getUrl(); 
 | 
        } 
 | 
        return null; 
 | 
    } 
 | 
    @Override 
 | 
    public   List<EnergyDataVO>  loadEnergyCurve(){ 
 | 
        List<EnergyDataVO> loadCurveList = new ArrayList<>(); 
 | 
        try { 
 | 
            BaseResponse<List<EnergyTodayLoadDataResponse>>  response = HKService.energyTodayLoadData(); 
 | 
            if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){ 
 | 
                for (EnergyTodayLoadDataResponse model :response.getData()) { 
 | 
                    EnergyDataVO data = new EnergyDataVO(); 
 | 
                    data.setTimeData(model.getName()); 
 | 
                    data.setEnergy(new BigDecimal(StringUtils.defaultString(model.getValue(),"0"))); 
 | 
                    loadCurveList.add(data); 
 | 
                } 
 | 
            } 
 | 
        }catch (Exception e){ 
 | 
            e.printStackTrace(); 
 | 
        } 
 | 
        return loadCurveList; 
 | 
    } 
 | 
    @Override 
 | 
    public     List<OilDataVO> energyLastMonthOilSort(){ 
 | 
        List<OilDataVO> oilDataVOList = new ArrayList<>(); 
 | 
        //上月油耗 
 | 
       List<PlatformWaterGas> list =  platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>().lambda() 
 | 
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) 
 | 
                .eq(PlatformWaterGas::getType,Constants.TWO) 
 | 
                .apply("DATE_FORMAT(time_info, '%Y-%m') = DATE_FORMAT(DATE_SUB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m')") 
 | 
                .orderByDesc(PlatformWaterGas::getNum) 
 | 
                .last("limit 30" ) 
 | 
        ); 
 | 
        for (PlatformWaterGas model :list) { 
 | 
            OilDataVO oilDataVO = new OilDataVO(); 
 | 
            oilDataVO.setCarNo(model.getCarCode()); 
 | 
            oilDataVO.setQuantity(model.getNum()); 
 | 
            oilDataVOList.add(oilDataVO); 
 | 
        } 
 | 
        return oilDataVOList; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 【消防管控】看板-本年和本月新增消防设备/设施维护情况 
 | 
     * @return 
 | 
     * 
 | 
     */ 
 | 
    @Override 
 | 
    public    List<AlarmEventDataVO> fightingAdminAlertList(){ 
 | 
        List<AlarmEventDataVO> data = new ArrayList<>(); 
 | 
  
 | 
        List<FindHomeAlarmInfoPageResponse> allList = new ArrayList<>(); 
 | 
        boolean hasNext = true; 
 | 
        int curTotal = 0; 
 | 
        int curPage = 1; 
 | 
        FindHomeAlarmInfoPageRequest param = new FindHomeAlarmInfoPageRequest(); 
 | 
        param.setHour(24); 
 | 
        param.setUserId("admin"); 
 | 
        while (hasNext){ 
 | 
            //分页遍历循环查询所有门禁设备数据 
 | 
            param.setPage(curPage); 
 | 
//        param.setRegionIndexCodes("root000000"); 
 | 
            param.setAlarmStartTime(DateUtil.getFomartDate(new Date(),"yyyy-MM-dd") + " 00:00:00"); 
 | 
            param.setAlarmEndTime(DateUtil.getPlusTime2(new Date())); 
 | 
            param.setPageSize(50); 
 | 
            BaseResponse<BaseListPageResponse<FindHomeAlarmInfoPageResponse>> response = HKService.findHomeAlarmInfoPage(param); 
 | 
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ 
 | 
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~"); 
 | 
            } 
 | 
            for(FindHomeAlarmInfoPageResponse r : response.getData().getList()){ 
 | 
                AlarmEventDataVO t = new AlarmEventDataVO(); 
 | 
                BeanUtils.copyProperties(r,t); 
 | 
                try { 
 | 
                    if(DateUtil.getDateFromString(t.getAlarmTime()).getTime() >= Utils.Date.getStart(new Date()).getTime()){ 
 | 
                        data.add(t); 
 | 
                    }else{ 
 | 
                        hasNext =false; 
 | 
                    } 
 | 
                }catch (Exception e){ 
 | 
                } 
 | 
            } 
 | 
            curTotal += 50; 
 | 
            if(curTotal >= response.getData().getTotal()){ 
 | 
                hasNext = false; 
 | 
            } 
 | 
            if(response.getData().getList() == null || response.getData().getList().size()==0){ 
 | 
                hasNext =false; 
 | 
            } 
 | 
            curPage++; 
 | 
        } 
 | 
  
 | 
        return data; 
 | 
  
 | 
    } 
 | 
    /** 
 | 
     * 【消防管控】看板-实时监测数据 
 | 
     * @return 
 | 
     * 
 | 
     */ 
 | 
    @Override 
 | 
    public  List<MonitorDataVO> monitorDataList(){ 
 | 
        List<MonitorDataVO> list = new ArrayList<>(); 
 | 
        MinitorDataSearchRequest param = new MinitorDataSearchRequest(); 
 | 
        param.setResourceTypeCodes(new String[]{}); 
 | 
        param.setRegionIndexCode("root000000"); 
 | 
        param.setResourceTypeCodes("60,61".split(",")); 
 | 
        param.setIncludeDown("1"); 
 | 
        param.setUserId("admin"); 
 | 
        param.setPageNo(1); 
 | 
        param.setPageSize(100); 
 | 
        BaseResponse<BaseListPageResponse<MonitorDataSearchResponse>> response = HKService.minitorDataSearch(param); 
 | 
        String pressure = systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_PRESSURE_LEVEL).getCode(); 
 | 
        String liquid = systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_LIQUID_LEVEL).getCode(); 
 | 
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) 
 | 
                && response.getData()!=null ) { 
 | 
            List<MonitorDataSearchResponse> r = response.getData().getList(); 
 | 
            if(r!= null){ 
 | 
                for(MonitorDataSearchResponse model : r){ 
 | 
                    MonitorDataVO m = new MonitorDataVO(); 
 | 
                    m.setName(model.getName()); 
 | 
                    m.setLevel(Constants.equalsInteger(model.getType(),60)?liquid:pressure); 
 | 
                    m.setDataList(new ArrayList<>()); 
 | 
                    if(model.getValues()!=null){ 
 | 
                        List<MonitorDataInfoVO> dataList = new ArrayList<>(); 
 | 
                        for(MonitorDataValResponse v : model.getValues()){ 
 | 
                            if(Constants.equalsInteger(model.getType(),60)){ 
 | 
                                if(v.getMonitorTypeCode().equals("254001")){ 
 | 
                                    MonitorDataInfoVO vm = new MonitorDataInfoVO(); 
 | 
                                    vm.setValue(v.getMonitorValue()); 
 | 
                                    vm.setCateName(v.getMonitorSpecificName()); 
 | 
                                    vm.setCateCode(v.getMonitorTypeKey()); 
 | 
                                    vm.setTypeCode(v.getMonitorTypeCode()); 
 | 
                                    vm.setTypeName(v.getMonitorTypeName()); 
 | 
                                    dataList.add(vm); 
 | 
                                } 
 | 
                            }else{ 
 | 
                                if(v.getMonitorTypeCode().equals("253958")){ 
 | 
                                    MonitorDataInfoVO vm = new MonitorDataInfoVO(); 
 | 
                                    vm.setValue(v.getMonitorValue()); 
 | 
                                    vm.setCateName(v.getMonitorSpecificName()); 
 | 
                                    vm.setCateCode(v.getMonitorTypeKey()); 
 | 
                                    vm.setTypeCode(v.getMonitorTypeCode()); 
 | 
                                    vm.setTypeName(v.getMonitorTypeName()); 
 | 
                                    dataList.add(vm); 
 | 
                                } 
 | 
                            } 
 | 
  
 | 
                        } 
 | 
                        m.setDataList(dataList); 
 | 
                    } 
 | 
                    list.add(m); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return  list; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 【消防管控】看板-告警处理分析集合 
 | 
     * @return 
 | 
     * 
 | 
     */ 
 | 
    @Override 
 | 
    public   List<AlarmDataVO> fightingAlarmHandleData(){ 
 | 
        List<AlarmDataVO> alarmHandleDataVOList = new ArrayList<>(); 
 | 
        Date now =DateUtil.StringToDate(DateUtil.getFirstDayCurrentMonth(),"yyyy-MM") ; 
 | 
        for (int i = 1; i <= 12; i++) { 
 | 
            Date start  =  DateUtil.addMonthToDate(now,-12+i); 
 | 
            Date end  =  DateUtil.addMonthToDate(now,-11+i); 
 | 
            AlarmDataVO t = getAlertDataByStartEndTime(DateUtil.getPlusTime2(start),DateUtil.getPlusTime2(end)); 
 | 
            alarmHandleDataVOList.add(t); 
 | 
        } 
 | 
        return alarmHandleDataVOList; 
 | 
    } 
 | 
    /** 
 | 
     * 【园区物料中心调度】看板-运输任务分析 
 | 
     * 
 | 
     * @return 
 | 
     * 
 | 
     */ 
 | 
    @Override 
 | 
    public  List<TransportMeasureVO> transportMeasure(Integer queryType){ 
 | 
        List<TransportMeasureVO> list = new ArrayList<>(); 
 | 
        Random random = new Random(); 
 | 
        List<Date> dayList = DateUtil.getDateListBeforDays(new Date(),7);//近7天 
 | 
        if(Constants.equalsInteger(queryType,Constants.ONE)){ 
 | 
            dayList = DateUtil.getThisMonthDateList();//本月天数 
 | 
        }else if(Constants.equalsInteger(queryType,Constants.TWO)){ 
 | 
            dayList = DateUtil.getThisYearMonthList();//本年月份 
 | 
        } 
 | 
        List<PlatformJob>  dataList = platformJobMapper.selectJoinList(PlatformJob.class, 
 | 
                new MPJLambdaWrapper<PlatformJob>() 
 | 
                        .selectAs(PlatformJob::getId,PlatformJob::getId) 
 | 
                        .selectAs(PlatformJob::getCreateDate,PlatformJob::getCreateDate) 
 | 
                        .selectAs(PlatformJob::getTotalNum,PlatformJob::getTotalNum) 
 | 
                        .selectAs(PlatformJob::getStatus,PlatformJob::getStatus) 
 | 
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date) 
 | 
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                        .apply(queryType==0,"to_days(create_date) >= to_days(now()) -7") 
 | 
                        .apply(queryType==1,"year(create_date) = year(now()) and month(create_date) = month(now())") 
 | 
                        .apply(queryType==2,"year(create_date) = year(now())")); 
 | 
        for (Date date : dayList) { 
 | 
            TransportMeasureVO data = new TransportMeasureVO(); 
 | 
            data.setPlanDate(date); 
 | 
            data.setPlanTimes(0); 
 | 
            data.setPlanTaskNum(new BigDecimal( 0)); 
 | 
            data.setFinishTaskNum(new BigDecimal(0)); 
 | 
            for(PlatformJob job :dataList){ 
 | 
                if(queryType == 2){ 
 | 
                    if(DateUtil.formatDate(date,"yyyy-MM").equals(DateUtil.formatDate(job.getCreateDate(),"yyyy-MM"))){ 
 | 
                        data.setPlanTimes( data.getPlanTimes() +1); 
 | 
                        data.setPlanTaskNum( data.getPlanTaskNum().add(Constants.formatBigdecimal(job.getTotalNum()))); 
 | 
                        if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey()) 
 | 
                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey()) 
 | 
                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())){ 
 | 
                            //完成数 
 | 
                            data.setFinishTaskNum( data.getFinishTaskNum().add(Constants.formatBigdecimal(job.getTotalNum()))); 
 | 
                        } 
 | 
                    } 
 | 
                }else{ 
 | 
                    if(DateUtil.formatDate(date,"yyyy-MM-dd").equals(DateUtil.formatDate(job.getCreateDate(),"yyyy-MM-dd"))){ 
 | 
                        data.setPlanTimes( data.getPlanTimes() +1); 
 | 
                        data.setPlanTaskNum( data.getPlanTaskNum().add(Constants.formatBigdecimal(job.getTotalNum()))); 
 | 
                        if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey()) 
 | 
                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey()) 
 | 
                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())){ 
 | 
                            //完成数 
 | 
                            data.setFinishTaskNum( data.getFinishTaskNum().add(Constants.formatBigdecimal(job.getTotalNum()))); 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
  
 | 
            list.add(data); 
 | 
        } 
 | 
        return list; 
 | 
    } 
 | 
    /** 
 | 
     * 【园区物料中心调度】看板-根据车牌号查询作业信息和合同信息集合 
 | 
     * 
 | 
     * @return 
 | 
     * 
 | 
     */ 
 | 
    @Override 
 | 
    public    CarsJobAndContractVO getCarsJobDetails(CarsJobAndContractDTO param){ 
 | 
        CarsJobAndContractVO data = new CarsJobAndContractVO(); 
 | 
        if(StringUtils.isBlank(param.getCarCode())){ 
 | 
            return  data; 
 | 
        } 
 | 
        PlatformJob job = platformJobMapper.selectJoinOne(PlatformJob.class, 
 | 
                new MPJLambdaWrapper<PlatformJob>() 
 | 
                        .selectAll(PlatformJob.class) 
 | 
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                        .eq(PlatformJob::getCarCodeFront,param.getCarCode()) 
 | 
                        .in(PlatformJob::getStatus, 
 | 
                                Constants.PlatformJobStatus.DONE.getKey(), 
 | 
                                Constants.PlatformJobStatus.LEAVED.getKey(), 
 | 
                                Constants.PlatformJobStatus.AUTHED_LEAVE.getKey(), 
 | 
                                Constants.PlatformJobStatus.CALLED.getKey()) 
 | 
                        .last("limit 1")); 
 | 
  
 | 
        dealJobDetailAndContractBiz(job,data); 
 | 
  
 | 
        return data; 
 | 
  
 | 
    } 
 | 
    /** 
 | 
     * 【园区物料中心调度】看板-根据车牌号查询作业信息和合同信息集合 
 | 
     * 
 | 
     * @return 
 | 
     * 
 | 
     */ 
 | 
    @Override 
 | 
    public  CarsJobAndContractVO  getJobDetailsById(CarsJobAndContractByJobIdDTO param) { 
 | 
        CarsJobAndContractVO data = new CarsJobAndContractVO(); 
 | 
        if(param.getId() == null){ 
 | 
            return  data; 
 | 
        } 
 | 
        PlatformJob job = platformJobMapper.selectJoinOne(PlatformJob.class, 
 | 
                new MPJLambdaWrapper<PlatformJob>() 
 | 
                        .selectAll(PlatformJob.class) 
 | 
                        .eq(PlatformJob::getId,param.getId()) 
 | 
                        .last("limit 1")); 
 | 
        dealJobDetailAndContractBiz(job,data); 
 | 
  
 | 
        return data; 
 | 
  
 | 
    } 
 | 
  
 | 
    private void dealJobDetailAndContractBiz(PlatformJob job, CarsJobAndContractVO data) { 
 | 
        if(job!=null){ 
 | 
            List<PlatformLog>  logList = platformLogMapper.selectJoinList(PlatformLog.class, 
 | 
                    new MPJLambdaWrapper<PlatformLog>() 
 | 
                            .selectAll(PlatformLog.class) 
 | 
                            .eq(PlatformLog::getIsdeleted,Constants.ZERO) 
 | 
                            .eq(PlatformLog::getJobId,job.getId()) 
 | 
                            .orderByDesc(PlatformLog::getCreateDate)); 
 | 
            data.setLogList(logList); 
 | 
            data.setName(job.getDriverName()); 
 | 
            data.setPhone(job.getDrivierPhone()); 
 | 
            data.setBillCode(job.getBillCode()); 
 | 
            data.setTotalNum(Constants.formatBigdecimal(job.getTotalNum())); 
 | 
            data.setContractList(new ArrayList<>()); 
 | 
            CarsContractVO tt = new CarsContractVO(); 
 | 
            tt.setIoCode(job.getContractNum()); 
 | 
            tt.setDetailList(new ArrayList<>()); 
 | 
            data.getContractList().add(tt); 
 | 
  
 | 
            PlatformWmsJob wmsJob = platformWmsJobMapper.selectJoinOne(PlatformWmsJob.class, 
 | 
                    new MPJLambdaWrapper<PlatformWmsJob>() 
 | 
                            .selectAll(PlatformWmsJob.class) 
 | 
                            .eq(PlatformWmsJob::getIsdeleted,Constants.ZERO) 
 | 
                            .eq(PlatformWmsJob::getJobId,job.getId()) 
 | 
                            .last("limit 1")); 
 | 
            if(wmsJob!=null){ 
 | 
                data.setName(wmsJob.getDriverName()); 
 | 
                data.setPhone(wmsJob.getDriverPhone()); 
 | 
                data.setBillCode(wmsJob.getCarryBillCode()); 
 | 
                data.setContractList(new ArrayList<>()); 
 | 
  
 | 
                List<PlatformWmsDetail>  detailList = platformWmsDetailMapper.selectJoinList(PlatformWmsDetail.class, 
 | 
                        new MPJLambdaWrapper<PlatformWmsDetail>() 
 | 
                                .selectAll(PlatformWmsDetail.class) 
 | 
                                .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO) 
 | 
                                .eq(PlatformWmsDetail::getWmsJobId,wmsJob.getId()) 
 | 
                                .orderByDesc(PlatformLog::getCreateDate)); 
 | 
                if(detailList!=null){ 
 | 
                    for(PlatformWmsDetail d : detailList){ 
 | 
                        if(isExistIocode(d.getIocode(),data.getContractList())){ 
 | 
                            continue; 
 | 
                        } 
 | 
                        tt = new CarsContractVO(); 
 | 
                        tt.setIoCode(d.getIocode()); 
 | 
                        tt.setAddress(d.getRepertotyAddress()); 
 | 
                        tt.setDetailList(getDetailListByCode(d.getIocode(),detailList,tt)); 
 | 
                        data.getContractList().add(tt); 
 | 
                        data.getTotalNum().add(Constants.formatBigdecimal(tt.getTotalNum()));//总运输量 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
  
 | 
        } 
 | 
    } 
 | 
  
 | 
    private List<PlatformWmsDetail> getDetailListByCode(String iocode, List<PlatformWmsDetail> detailList,CarsContractVO tt) { 
 | 
        List<PlatformWmsDetail> list = new ArrayList<>(); 
 | 
        BigDecimal total = new BigDecimal(0); 
 | 
        if(detailList!=null){ 
 | 
            for(PlatformWmsDetail d :detailList){ 
 | 
                if(StringUtils.equals(d.getIocode(),iocode)){ 
 | 
                    list.add(d); 
 | 
                    total.add(Constants.formatBigdecimal(d.getIoQty())); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        tt.setTotalNum(total); 
 | 
        return list; 
 | 
    } 
 | 
  
 | 
    private boolean isExistIocode(String iocode, List<CarsContractVO> detailList) { 
 | 
        if(detailList!=null){ 
 | 
            for(CarsContractVO d :detailList){ 
 | 
                if(StringUtils.equals(d.getIoCode(),iocode)){ 
 | 
                    return true; 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return false; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 【消防管控】看板-告警信息集合 
 | 
     * 
 | 
     * @return 
 | 
     * 
 | 
     */ 
 | 
    @Override 
 | 
    public   AlarmDataVO alarmDataSumByCate(){ 
 | 
        AlarmDataVO alarmDataVO = getAlertDataByStartEndTime(DateUtil.getPlusTime2(DateUtil.addDaysToDate(new Date(),-1)) 
 | 
                ,(DateUtil.getPlusTime2(new Date()))); 
 | 
        return  alarmDataVO; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询本月 本年的累计出库量统计数据,出库任务、入库任务量 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public  PlatformJobRunBoardNewVO platformJobCenterData(){ 
 | 
        PlatformJobRunBoardNewVO data = new PlatformJobRunBoardNewVO(); 
 | 
        data.setMonthOutTimes(0); 
 | 
        data.setYearOutTimes(0); 
 | 
        Date month  = Utils.Date.getStart(new Date());//本月 
 | 
        Date lastMonth =  DateUtil.addMonthToDate(month,-1);//上月 
 | 
        Date year = Utils.Date.getStart(new Date());//今年 
 | 
        Date lastYear = DateUtil.addYearToDate(year,-1);//去年 
 | 
        List<PlatformJob>  monthNum = platformJobMapper.selectJoinList(PlatformJob.class, 
 | 
                    new MPJLambdaWrapper<PlatformJob>() 
 | 
                        .selectAs(PlatformJob::getId,PlatformJob::getId) 
 | 
                        .select(PlatformJob::getType,PlatformJob::getType) 
 | 
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum) 
 | 
                        .select(PlatformJob::getStatus,PlatformJob::getStatus) 
 | 
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(), 
 | 
                                Constants.PlatformJobStatus.LEAVED.getKey(), 
 | 
                                Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()) 
 | 
                        .apply("year(done_date) = year('"+DateUtil.getPlusTime2(month)+"') and month(done_date) = month('"+DateUtil.getPlusTime2(month)+"') ")); 
 | 
        List<PlatformJob>  monthLastNum = platformJobMapper.selectJoinList(PlatformJob.class, 
 | 
                new MPJLambdaWrapper<PlatformJob>() 
 | 
                        .selectAs(PlatformJob::getId,PlatformJob::getId) 
 | 
                        .selectAs(PlatformJob::getTotalNum,PlatformJob::getTotalNum) 
 | 
                        .select(PlatformJob::getType,PlatformJob::getType) 
 | 
                        .select(PlatformJob::getStatus,PlatformJob::getStatus) 
 | 
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date) 
 | 
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE) 
 | 
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()) 
 | 
                        .apply("year(done_date) = year('"+DateUtil.getPlusTime2(lastMonth)+"') and month(done_date) = month('"+DateUtil.getPlusTime2(lastMonth)+"') and  done_date<= '" 
 | 
                                +DateUtil.getPlusTime2(lastMonth)+"'")); 
 | 
        List<PlatformJob>  yearNum = platformJobMapper.selectJoinList(PlatformJob.class, 
 | 
                new MPJLambdaWrapper<PlatformJob>() 
 | 
                        .selectAs(PlatformJob::getId,PlatformJob::getId) 
 | 
                        .selectAs(PlatformJob::getTotalNum,PlatformJob::getTotalNum) 
 | 
                        .select(PlatformJob::getStatus,PlatformJob::getStatus) 
 | 
                        .select(PlatformJob::getType,PlatformJob::getType) 
 | 
//                        .selectCount(PlatformJob::getPlatformId,PlatformJob::getCountum) 
 | 
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE) 
 | 
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()) 
 | 
                        .apply("year(done_date) = year('"+DateUtil.getPlusTime2(year)+"')   and done_date<= '"+DateUtil.getPlusTime2(year)+"'")); 
 | 
        List<PlatformJob> yearLastNum = platformJobMapper.selectJoinList(PlatformJob.class, 
 | 
                new MPJLambdaWrapper<PlatformJob>() 
 | 
                        .selectAs(PlatformJob::getId,PlatformJob::getId) 
 | 
                        .selectAs(PlatformJob::getType,PlatformJob::getId) 
 | 
                        .select(PlatformJob::getStatus,PlatformJob::getStatus) 
 | 
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum) 
 | 
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE) 
 | 
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()) 
 | 
                        .apply("year(done_date) = year('"+DateUtil.getPlusTime2(lastYear)+"')  and done_date<= '"+DateUtil.getPlusTime2(lastYear)+"'")); 
 | 
  
 | 
        data.setMonthOutTotal(getSumTotalByList(monthNum,0,null));//本月出库量 
 | 
        data.setMonthLastOutTotal(getSumTotalByList(monthLastNum,null,null) );//上月出库量 
 | 
        data.setYearOutTotal(getSumTotalByList(yearNum,null,null)  );//本年出库量 
 | 
        data.setYearLastOutTotal(getSumTotalByList(yearLastNum,null,null) );//去年出库量 
 | 
        data.setMonthOutTimes(monthNum!=null?monthNum.size():0); 
 | 
        data.setYearOutTimes(yearNum!=null?yearNum.size():0); 
 | 
  
 | 
        //==========今天之前未完成出入库任务 
 | 
        List<PlatformJob> beforeJobNum = platformJobMapper.selectJoinList(PlatformJob.class, 
 | 
                new MPJLambdaWrapper<PlatformJob>() 
 | 
                        .selectAs(PlatformJob::getId,PlatformJob::getId) 
 | 
                        .selectAs(PlatformJob::getStatus,PlatformJob::getStatus) 
 | 
                        .selectAs(PlatformJob::getType,PlatformJob::getType) 
 | 
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum) 
 | 
                        // .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date) 
 | 
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                        .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey(),Constants.PlatformJobStatus.CALLED.getKey()) 
 | 
                        .apply("   to_days(create_date) <to_days(now())")); 
 | 
  
 | 
        //==========今天出入库完成量 
 | 
        List<PlatformJob> currentDoneNum = platformJobMapper.selectJoinList(PlatformJob.class, 
 | 
                new MPJLambdaWrapper<PlatformJob>() 
 | 
                        .selectAs(PlatformJob::getId,PlatformJob::getId) 
 | 
                        .selectAs(PlatformJob::getType,PlatformJob::getType) 
 | 
                        .selectAs(PlatformJob::getStatus,PlatformJob::getStatus) 
 | 
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum) 
 | 
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date) 
 | 
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                        .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey()) 
 | 
                        .apply(" to_days(done_date) = to_days(now())")); 
 | 
        //==========今天下发出入库任务---- 
 | 
        List<PlatformJob> currentNum = platformJobMapper.selectJoinList(PlatformJob.class, 
 | 
                new MPJLambdaWrapper<PlatformJob>() 
 | 
                        .selectAs(PlatformJob::getId,PlatformJob::getId) 
 | 
                        .selectAs(PlatformJob::getType,PlatformJob::getType) 
 | 
                        .selectAs(PlatformJob::getStatus,PlatformJob::getStatus) 
 | 
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum) 
 | 
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date) 
 | 
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                        .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey()) 
 | 
                        .apply(" to_days(create_date) = to_days(now())")); 
 | 
  
 | 
        BigDecimal beforeOutNum = (getSumTotalByList(beforeJobNum,0,null));//今天之前未完成出库任务 
 | 
        BigDecimal currentOutNum = (getSumTotalByList(currentNum,0,null));//今天下发出库任务 
 | 
        BigDecimal beforeInNum = (getSumTotalByList(beforeJobNum,1,null));//今天之前未完成入库任务 
 | 
        BigDecimal currentInNum = (getSumTotalByList(currentNum,1,null));//今天下发入库任务 
 | 
        data.setCurrentInNum(beforeInNum.add(currentInNum));//当前入库总任务成量 
 | 
        data.setCurrentOutNum(beforeOutNum.add(currentOutNum));//当前出库总任务成量 
 | 
        data.setCurrentInDoneNum(getSumTotalByList(currentDoneNum,1,1));//今日完成量 
 | 
        data.setCurrentOutDoneNum(getSumTotalByList(currentDoneNum,0,1));//今日完成量 
 | 
  
 | 
        //------------今日出入库效率---------------- 
 | 
        BigDecimal outHours = getTotalDoneTimes(currentDoneNum,0);// 
 | 
        BigDecimal inHours = getTotalDoneTimes(currentDoneNum,1);// 
 | 
        if(outHours.compareTo(new BigDecimal(0))>0){ 
 | 
            data.setTodayOutRate(data.getCurrentOutDoneNum().divide(outHours,2));//当前入库总任务成量 
 | 
        } 
 | 
        if(inHours.compareTo(new BigDecimal(0))>0){ 
 | 
            data.setTodayInRate(data.getCurrentInDoneNum().divide(inHours,2));//当前入库总任务成量 
 | 
        } 
 | 
        //------------本月出入库效率---------------- 
 | 
//        BigDecimal outMonthNum = getSumTotalByList(monthNum,0,null).add(data.getCurrentOutDoneNum()); 
 | 
        BigDecimal inMonthNum = getSumTotalByList(monthNum,1,null).add(data.getCurrentInDoneNum()); 
 | 
        BigDecimal outMonthHours = getTotalDoneTimes(monthNum,0).add(outHours);// 
 | 
        BigDecimal inMonthHours = getTotalDoneTimes(monthNum,1).add(inHours);// 
 | 
        if(outMonthHours.compareTo(new BigDecimal(0))>0){ 
 | 
            data.setMonthOutRate(data.getMonthOutTotal().divide(outMonthHours,0,BigDecimal.ROUND_HALF_UP));//本月入库效率 
 | 
        } 
 | 
        if(inMonthHours.compareTo(new BigDecimal(0))>0){ 
 | 
            data.setMonthInRate(inMonthNum.divide(inMonthHours,0,BigDecimal.ROUND_HALF_UP));//本月入库效率 
 | 
        } 
 | 
        return data; 
 | 
    } 
 | 
  
 | 
    private BigDecimal getDoneHoursByData(String start ,String end) { 
 | 
        List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>().lambda() 
 | 
                .apply("create_date >= '"+start+"' and create_date <= '"+end+"'") 
 | 
                .isNotNull(PlatformLog::getParam3) 
 | 
                .ne(PlatformLog::getParam3,Constants.ZERO+"")); 
 | 
        if(platformLogList!=null && platformLogList.size()>0){ 
 | 
            return new BigDecimal((double)(platformLogList.stream().map(m->Long.valueOf(m.getParam3())).reduce(Long.valueOf(0),Long::sum))/(double)60); 
 | 
        } 
 | 
  
 | 
        return new BigDecimal(0); 
 | 
  
 | 
    } 
 | 
    private BigDecimal getTotalDoneTimes(List<PlatformJob> list, Integer type) { 
 | 
        BigDecimal r = new BigDecimal(0); 
 | 
        if(list==null || list.size() == 0){ 
 | 
            return r; 
 | 
        } 
 | 
        List<Integer> jobIds= new ArrayList<>(); 
 | 
        for(PlatformJob job : list){ 
 | 
            if( !(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey()) 
 | 
                    ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey()) 
 | 
                    ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()))){ 
 | 
                //只查询完成数据 
 | 
                continue; 
 | 
            } 
 | 
            if(type !=null &&type ==0 &&  (Constants.equalsInteger(job.getType(),Constants.ONE) ||Constants.equalsInteger(job.getType(),Constants.THREE))){ 
 | 
               //出库 
 | 
               jobIds.add(job.getId()); 
 | 
            } 
 | 
            if(type !=null &&type ==1 &&  (Constants.equalsInteger(job.getType(),Constants.ZERO) ||Constants.equalsInteger(job.getType(),Constants.TWO)||Constants.equalsInteger(job.getType(),Constants.FOUR))){ 
 | 
                //入库 
 | 
                jobIds.add(job.getId()); 
 | 
            } 
 | 
        } 
 | 
        if(jobIds.size()>0){ 
 | 
            //处理作业时长 
 | 
            List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>().lambda() 
 | 
                    .in(PlatformLog::getJobId,jobIds) 
 | 
                    .isNotNull(PlatformLog::getParam3) 
 | 
                    .ne(PlatformLog::getParam3,Constants.ZERO+"")); 
 | 
            if(platformLogList!=null && platformLogList.size()>0){ 
 | 
                return new BigDecimal((double)(platformLogList.stream().map(m->Long.valueOf(m.getParam3())).reduce(Long.valueOf(0),Long::sum))/(double)3600); 
 | 
            } 
 | 
        } 
 | 
        return r; 
 | 
    } 
 | 
  
 | 
    private BigDecimal  getSumTotalByList(List<PlatformJob> list,Integer type,Integer status) { 
 | 
        BigDecimal r = new BigDecimal(0); 
 | 
        if(list==null || list.size() == 0){ 
 | 
            return r; 
 | 
        } 
 | 
        for(PlatformJob job : list){ 
 | 
  
 | 
            if(type !=null &&type ==0 && !(Constants.equalsInteger(job.getType(),Constants.ONE) ||Constants.equalsInteger(job.getType(),Constants.THREE))){ 
 | 
                continue; 
 | 
            } 
 | 
            if(type !=null &&type ==1 && !(Constants.equalsInteger(job.getType(),Constants.ZERO) ||Constants.equalsInteger(job.getType(),Constants.TWO)||Constants.equalsInteger(job.getType(),Constants.FOUR))){ 
 | 
                continue; 
 | 
            } 
 | 
            if(status !=null &&status ==1 && !(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey()) 
 | 
                    ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey()) 
 | 
                    ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()))){ 
 | 
                continue; 
 | 
            } 
 | 
//            if(Constants.formatBigdecimal(job.getIoQty()).compareTo(new BigDecimal(0)) >0){ 
 | 
//                r.add( job.getIoQty()); 
 | 
//            }else{ 
 | 
            r =  r.add(Constants.formatBigdecimal(job.getTotalNum())); 
 | 
//            } 
 | 
        } 
 | 
        return Constants.formatBigdecimal0Float(r); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public     List<CarsAlarmResultListResponse> carsEventList(){ 
 | 
  
 | 
        if(HKCarOpenService.HK_CARS_LIST == null){ 
 | 
            HKCarOpenService.HK_CARS_LIST =   HKCarOpenService.getAllCarsDetais(); 
 | 
        } 
 | 
        return  HKCarOpenService.getAlarmEvemtList(  HKCarOpenService.HK_CARS_LIST,new Date()); 
 | 
    } 
 | 
    @Override 
 | 
    public     BoardCarsListVO platformJobCarsList(){ 
 | 
        BoardCarsListVO data = new BoardCarsListVO(); 
 | 
        List<CarsDeviceDetaisResponse> detaisResponses = HKCarOpenService.getAllCarsDetais(); 
 | 
         data.setCarsList(detaisResponses); 
 | 
        if(data.getCarsList()!=null && data.getCarsList().size()>0){ 
 | 
            List<String> codes = new ArrayList<>(); 
 | 
            //设备状态 0:离线;1:在线;2:休眠 
 | 
            int online = 0; 
 | 
            for(CarsDeviceDetaisResponse model:detaisResponses){ 
 | 
                if(Constants.equalsInteger(model.getStatus(),Constants.ONE) 
 | 
                        ||Constants.equalsInteger(model.getStatus(),Constants.TWO)){ 
 | 
                   //如果是在线或者休眠,查询在途还是空闲ty 
 | 
                    codes.add(model.getPlateNum()); 
 | 
                    model.setJobStatus(Constants.ZERO); 
 | 
                }else{ 
 | 
                    model.setJobStatus(Constants.TWO); 
 | 
                    data.setOfflineNum(data.getOfflineNum()+1); 
 | 
                } 
 | 
            } 
 | 
            if(codes.size()>0){ 
 | 
                //状态 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 已过号  12取消(WMS) 
 | 
                List<PlatformJob> busyNum = platformJobMapper.selectList(new QueryWrapper<PlatformJob>() .lambda() 
 | 
                                .select(PlatformJob::getCarCodeFront) 
 | 
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                        .in(PlatformJob::getCarCodeFront,codes) 
 | 
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WORKING.getKey() 
 | 
                                ,Constants.PlatformJobStatus.WAIT_CALL.getKey() 
 | 
                                ,Constants.PlatformJobStatus.CALLED.getKey() 
 | 
                                ,Constants.PlatformJobStatus.IN_WAIT.getKey() 
 | 
                                ,Constants.PlatformJobStatus.TRANSFERING.getKey() 
 | 
                                ,Constants.PlatformJobStatus.WART_SIGN_IN.getKey() 
 | 
                                ,Constants.PlatformJobStatus.WAIT_CONFIRM.getKey() 
 | 
                                ,Constants.PlatformJobStatus.EXCEPTION.getKey()) 
 | 
                        .groupBy(PlatformJob::getCarCodeFront)); 
 | 
                data.setBusyNum( busyNum!=null ?busyNum.size():0);//在途有任务数量 
 | 
                data.setIdleNum(codes.size() -data.getBusyNum());//无任务空闲数量 
 | 
                HKCarOpenService.HK_CARS_LIST = detaisResponses; 
 | 
//                data.setEventList(HKCarOpenService.getAlarmEvemtList(detaisResponses,new Date())); 
 | 
                if(busyNum != null){ 
 | 
                  FLAG:  for(CarsDeviceDetaisResponse model:detaisResponses){ 
 | 
                        for(PlatformJob job : busyNum){ 
 | 
                            if(StringUtils.equals(job.getCarCodeFront(),model.getPlateNum())){ 
 | 
                                model.setJobStatus(Constants.ONE); 
 | 
                                continue FLAG; 
 | 
                            } 
 | 
                        } 
 | 
                    } 
 | 
  
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return  data; 
 | 
    } 
 | 
  
 | 
    public static AlarmDataVO getAlertDataByStartEndTime(String start,String end){ 
 | 
        AlarmDataVO alarmDataVO = new AlarmDataVO(); 
 | 
        FindAlarmBaseDataStatisticRequest param = new FindAlarmBaseDataStatisticRequest(); 
 | 
        param.setAlarmStartTime(start); 
 | 
        param.setAlarmEndTime(end); 
 | 
        param.setUserId("admin"); 
 | 
        BaseResponse<FindAlarmBaseDataStatisticResponse> response = HKService.findAlarmBaseDataStatistic(param); 
 | 
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) 
 | 
                && response.getData()!=null ) { 
 | 
            alarmDataVO.setTotalNum(Constants.formatIntegerNum(response.getData().getTotalAlarmNum())); 
 | 
            alarmDataVO.setRealNum(Constants.formatIntegerNum(response.getData().getTotalAlarmNum())); 
 | 
            alarmDataVO.setErrNum(Constants.formatIntegerNum(response.getData().getMisReportAlarmNum())); 
 | 
            alarmDataVO.setLiftNum(Constants.formatIntegerNum(response.getData().getHandledAlarmNum())); 
 | 
            alarmDataVO.setProcessingNum(Constants.formatIntegerNum(response.getData().getUnHandedAlarmNum())); 
 | 
            alarmDataVO.setStartDate(start); 
 | 
            alarmDataVO.setEndDate(end); 
 | 
        }else{ 
 | 
            alarmDataVO.setTotalNum(Constants.ZERO); 
 | 
            alarmDataVO.setRealNum(Constants.ZERO); 
 | 
            alarmDataVO.setErrNum(Constants.ZERO); 
 | 
            alarmDataVO.setLiftNum(Constants.ZERO); 
 | 
            alarmDataVO.setProcessingNum(Constants.ZERO); 
 | 
            alarmDataVO.setStartDate(start); 
 | 
            alarmDataVO.setEndDate(end); 
 | 
        } 
 | 
        return  alarmDataVO; 
 | 
    } 
 | 
    /** 
 | 
     * 【消防管控】看板-本年和本月新增消防设备/设施维护情况 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public    YearDeviceDataVO yearFightingAdminDeviceData(){ 
 | 
        YearDeviceDataVO data = new YearDeviceDataVO(); 
 | 
        FireStatisticRequest param = new FireStatisticRequest(); 
 | 
        param.setIndexCode("api_fire_statistic"); 
 | 
        BaseResponse<FireStatisticResponse> response = HKService.fireStatistic(param); 
 | 
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ) { 
 | 
            data.setProtectNum(Constants.formatIntegerNum(response.getData().getMaintenanceNum())); 
 | 
            data.setPlanProtectTotal(Constants.formatIntegerNum(response.getData().getDeviceTotalNum())); 
 | 
        } 
 | 
        param = new FireStatisticRequest(); 
 | 
        param.setIndexCode("api_fire_statistic_month"); 
 | 
        BaseResponse<FireStatisticResponse> response1 = HKService.fireStatisticMonth(param); 
 | 
        if(response1 != null && StringUtils.equals(response1.getCode(), HKConstants.RESPONSE_SUCCEE) 
 | 
                && response1.getData()!=null ) { 
 | 
            data.setMonthAddNum(Constants.formatIntegerNum(response1.getData().getMaintenanceNumMonth())); 
 | 
            data.setMonthTotalNum(Constants.formatIntegerNum(response1.getData().getDeviceTotalNum())); 
 | 
        } 
 | 
        return data; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 【消防管控】看板-分类和汇总的各状态设备数量 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public  FightingAdminCenterDataVO centerFightingAdminData(){ 
 | 
        FightingAdminCenterDataVO data = new FightingAdminCenterDataVO(); 
 | 
        List<DeviceNumByTypeVO> list = new ArrayList<>(); 
 | 
        FindDeviceStatisticsRequest param1 = new FindDeviceStatisticsRequest(); 
 | 
        param1.setRegionIndexCode("root000000"); 
 | 
        BaseResponse<List<FindDeviceStatisticsResponse>> response = HKService.findDeviceStatistics(param1); 
 | 
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){ 
 | 
            for(FindDeviceStatisticsResponse r :response.getData()){ 
 | 
                if(r.getDevices()!=null){ 
 | 
                    for(FindDeviceStatisticsInfoResponse td : r.getDevices()){ 
 | 
                        DeviceNumByTypeVO t = new DeviceNumByTypeVO(); 
 | 
                        t.setTypeName(td.getDeviceName()); 
 | 
                        //屏蔽数 
 | 
                        t.setShieldDeviceNum(Constants.formatIntegerNum(t.getShieldDeviceNum() )+ Constants.formatIntegerNum(td.getShieldSensorCount())); 
 | 
                        //报警数 
 | 
                        t.setAlarmDeviceNum(Constants.formatIntegerNum(t.getAlarmDeviceNum())+ Constants.formatIntegerNum(td.getAlarmSensorCount())); 
 | 
                        //正常数 
 | 
                        t.setOnlineDeviceNum(Constants.formatIntegerNum(t.getOnlineDeviceNum())+Constants.formatIntegerNum(td.getNormalSensorCount())); 
 | 
                        //故障数 
 | 
                        t.setErrDeviceNum(Constants.formatIntegerNum(t.getErrDeviceNum())+ Constants.formatIntegerNum(td.getFaultSensorCount())); 
 | 
                        //总设备数 
 | 
                        t.setTotalDeviceNum(Constants.formatIntegerNum(t.getTotalDeviceNum())+ Constants.formatIntegerNum(td.getTotalSensorCount())); 
 | 
                        list.add(t); 
 | 
//                        data.setOfflineDeviceNum(Constants.formatIntegerNum( data.getOfflineDeviceNum())+Constants.formatIntegerNum(t.getOfflineDeviceNum())); 
 | 
                        data.setShieldDeviceNum(Constants.formatIntegerNum( data.getShieldDeviceNum())+Constants.formatIntegerNum(t.getShieldDeviceNum())); 
 | 
                        data.setAlarmDeviceNum(Constants.formatIntegerNum( data.getAlarmDeviceNum())+Constants.formatIntegerNum(t.getAlarmDeviceNum())); 
 | 
                        data.setOnlineDeviceNum(Constants.formatIntegerNum( data.getOnlineDeviceNum())+Constants.formatIntegerNum(t.getOnlineDeviceNum())); 
 | 
                        data.setErrDeviceNum(Constants.formatIntegerNum( data.getErrDeviceNum())+Constants.formatIntegerNum(t.getErrDeviceNum())); 
 | 
                        data.setTotalDeviceNum(Constants.formatIntegerNum( data.getTotalDeviceNum())+Constants.formatIntegerNum(t.getTotalDeviceNum())); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
       /* FireDevStatusTotalRequest param = new FireDevStatusTotalRequest(); 
 | 
        param.setIncludeBool(1); 
 | 
        param.setRegionIds(new String[]{"root000000"}); 
 | 
        BaseResponse<List<FireDevStatusListResponse>> response = HKService.getFireDevStatusList(param); 
 | 
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){ 
 | 
            for(FireDevStatusListResponse r :response.getData()){ 
 | 
                DeviceNumByTypeVO t = new DeviceNumByTypeVO(); 
 | 
                t.setTypeName(r.getDevTypeName()); 
 | 
                t.setOfflineDeviceNum(Constants.formatIntegerNum(r.getOfflineFireDevCount())); 
 | 
                t.setAlarmDeviceNum(Constants.formatIntegerNum(r.getAlarmFireDevCount())); 
 | 
                t.setOnlineDeviceNum(Constants.formatIntegerNum(r.getOnlineFireDevCount())); 
 | 
                t.setErrDeviceNum(Constants.formatIntegerNum(r.getFaultFireDevCount())); 
 | 
                t.setTotalDeviceNum(Constants.formatIntegerNum(r.getTotalFireDevCount())); 
 | 
                list.add(t); 
 | 
                data.setOfflineDeviceNum(Constants.formatIntegerNum( data.getOfflineDeviceNum())+Constants.formatIntegerNum(r.getOfflineFireDevCount())); 
 | 
                data.setAlarmDeviceNum(Constants.formatIntegerNum( data.getAlarmDeviceNum())+Constants.formatIntegerNum(r.getAlarmFireDevCount())); 
 | 
                data.setOnlineDeviceNum(Constants.formatIntegerNum( data.getOnlineDeviceNum())+Constants.formatIntegerNum(r.getOnlineFireDevCount())); 
 | 
                data.setErrDeviceNum(Constants.formatIntegerNum( data.getErrDeviceNum())+Constants.formatIntegerNum(r.getFaultFireDevCount())); 
 | 
                data.setTotalDeviceNum(Constants.formatIntegerNum( data.getTotalDeviceNum())+Constants.formatIntegerNum(r.getTotalFireDevCount())); 
 | 
            } 
 | 
        }*/ 
 | 
        data.setDeviceTypeList(list); 
 | 
        Long totalNum =hiddenDangerMapper.selectCount(new QueryWrapper<HiddenDanger>().lambda() 
 | 
                .eq(HiddenDanger::getIsdeleted,Constants.ZERO ) 
 | 
                .apply("to_days(create_date) = to_days(now())" ) ); 
 | 
        data.setDangerTotalNum(totalNum !=null?totalNum.intValue():0);//今日隐患数量 
 | 
        totalNum =hiddenDangerMapper.selectCount(new QueryWrapper<HiddenDanger>().lambda() 
 | 
                .eq(HiddenDanger::getIsdeleted,Constants.ZERO ) 
 | 
                .in(HiddenDanger::getStatus,Constants.ONE,Constants.TWO ) 
 | 
                .apply("to_days(check_date) = to_days(now())" ) ); 
 | 
        data.setDangerDealedNum(totalNum !=null?totalNum.intValue():0);//今日处理隐患数量 
 | 
        return  data; 
 | 
    } 
 | 
  
 | 
  
 | 
    /** 
 | 
     * 消防 温湿度数据 
 | 
     */ 
 | 
    @Override 
 | 
    public List<TemperatureHumidityDataVO> getTemperatureHumidityData(){ 
 | 
        TemperatureHumidityDataRequest request = new TemperatureHumidityDataRequest(); 
 | 
        List<TemperatureHumidityDataVO> temperatureHumidityDataVOList = new ArrayList<>(); 
 | 
        request.setPageNo(1); 
 | 
        request.setPageSize(100); 
 | 
        request.setParentIndexCode(systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.TEMPERATURE_HUMIDITY).getCode()); 
 | 
        BaseResponse<BaseListPageResponse<TemperatureHumidityDataResponse>> response = HKService.temperatureHumidityDataStatistic(request); 
 | 
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){ 
 | 
            List<TemperatureHumidityDataResponse> temperatureHumidityDataResponseList = response.getData().getList(); 
 | 
  
 | 
            if(CollectionUtils.isNotEmpty(temperatureHumidityDataResponseList)){ 
 | 
                Set<String> parentIndexCode = new HashSet<String>(temperatureHumidityDataResponseList.stream().map( 
 | 
                        i->i.getIndexCode().replace("@0","").replace("@1","") 
 | 
                ).collect(Collectors.toList())); 
 | 
                for (String code:parentIndexCode) { 
 | 
                    List<TemperatureHumidityDataResponse> dateList = 
 | 
                            temperatureHumidityDataResponseList.stream().filter(i->i.getIndexCode().indexOf(code)>=Constants.ZERO).collect(Collectors.toList()); 
 | 
                    TemperatureHumidityDataVO temperatureHumidityDataVO = new TemperatureHumidityDataVO(); 
 | 
                    for (TemperatureHumidityDataResponse data:dateList) { 
 | 
                        if(StringUtils.isNotBlank(data.getName())){ 
 | 
                            Integer index = data.getName().indexOf("-"); 
 | 
                            if(index>=0){ 
 | 
                                data.setName(data.getName().substring(0,index)); 
 | 
                            } 
 | 
                        } 
 | 
                        if(data.getSensorType().equals("currTemperature")){ 
 | 
                            temperatureHumidityDataVO.setTemperatureData(data); 
 | 
                        }else{ 
 | 
                            temperatureHumidityDataVO.setHumidityData(data); 
 | 
                        } 
 | 
                    } 
 | 
                    temperatureHumidityDataVOList.add(temperatureHumidityDataVO); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return temperatureHumidityDataVOList; 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
    /** 
 | 
     * 用电总能耗同比、环比和区域用电量集合 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public  EnergyBoardVO centerEnergyData(){ 
 | 
       EnergyBoardVO data = new EnergyBoardVO(); 
 | 
       Random random = new Random(); 
 | 
       PlatformWaterGas smoke=  platformWaterGasMapper.selectOne(new QueryWrapper<PlatformWaterGas>() 
 | 
                 .select("sum(num) as num") 
 | 
                .lambda() 
 | 
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) 
 | 
                .eq(PlatformWaterGas::getType,Constants.THREE) 
 | 
                .apply("year(time_info) = year(now())") 
 | 
                .last("limit 1 " )); 
 | 
  
 | 
        data.setSmokeBoxTotal(0); 
 | 
        if(smoke!=null){ 
 | 
            data.setSmokeBoxTotal(Constants.formatBigdecimal(smoke.getNum()).intValue());//当年烟箱数 
 | 
        } 
 | 
        BigDecimal carbonGas = new BigDecimal(0);//本月用气 
 | 
        BigDecimal carbonWater = new BigDecimal(0);//本月用水 
 | 
        BigDecimal carbonElec = new BigDecimal(0);//用电 
 | 
  
 | 
        data.setYesterdayElectricity(getDefaultData());//昨日用电 
 | 
        data.setTodayElectricity(getDefaultData());//今日用电 
 | 
        data.setElectricityQuantity(getDefaultData());//上月用电 
 | 
        data.setMonthElectricity(getDefaultData());//本月用电 
 | 
  
 | 
  
 | 
        getMonthElectricityData(data.getMonthElectricity());//通过安防平获取本月用电量数据 
 | 
        carbonElec = new BigDecimal(StringUtils.defaultString(data.getMonthElectricity().getTotal(), "0")); 
 | 
  
 | 
        getLastMonthElectricityData(data.getElectricityQuantity());//通过安防平获取上月用电量数据 
 | 
        getCurrentDateElectircityData(data.getYesterdayElectricity(),-1);//通过安防平获取昨日用电量数据 
 | 
        getCurrentDateElectircityData(data.getTodayElectricity(),0);//通过安防平获取今日用电量数据 
 | 
  
 | 
        data.setWaterQuantity(getDefaultData());//上月用水 
 | 
        data.setGasQuantity(getDefaultData());//上月用气 
 | 
        carbonElec = new BigDecimal(StringUtils.defaultString(data.getMonthElectricity().getTotal(), "0")); 
 | 
        String firstDate = DateUtil.getFirstDayCurrentMonth() +" 00:00:00"; 
 | 
        Date month0 = DateUtil.getDateFromString(firstDate); 
 | 
        Date month1 = DateUtil.increaseMonth(month0,-1);//上月 
 | 
        Date month2 = DateUtil.increaseMonth(month0,-2);//上上月 
 | 
        Date month3 = DateUtil.increaseMonth(month0,-13);//去年同月 
 | 
  
 | 
        List<PlatformWaterGas> list =  platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>() 
 | 
                .lambda() 
 | 
                .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) 
 | 
                .in(PlatformWaterGas::getType,Constants.ZERO,Constants.ONE) 
 | 
                .in(PlatformWaterGas::getTimeInfo,month0,month1,month3,month2) 
 | 
        ); 
 | 
  
 | 
        if(list!=null){ 
 | 
            //类型 0用水 1用气 2用油 
 | 
            for(PlatformWaterGas model : list){ 
 | 
                if(Constants.equalsInteger(model.getType(),Constants.ONE)){ 
 | 
                    if(model.getTimeInfo().getTime() == month0.getTime()){ 
 | 
                        carbonGas = Constants.formatBigdecimal(model.getNum()); 
 | 
                    } 
 | 
                    if(model.getTimeInfo().getTime() == month1.getTime()){ 
 | 
                        data.getGasQuantity().setTotalNum(Constants.formatBigdecimal(model.getNum()) ); 
 | 
                        data.getGasQuantity().setTotal(Constants.formatBigdecimal(model.getNum())+""); 
 | 
                    } 
 | 
                    if(model.getTimeInfo().getTime() == month2.getTime()){ 
 | 
                        data.getGasQuantity().setRingNum(Constants.formatBigdecimal(model.getNum()) ); 
 | 
                    } 
 | 
                    if(model.getTimeInfo().getTime() == month3.getTime()){ 
 | 
                        data.getGasQuantity().setSameNum(Constants.formatBigdecimal(model.getNum()) ); 
 | 
                    } 
 | 
  
 | 
                }else if(Constants.equalsInteger(model.getType(),Constants.ZERO)){ 
 | 
                    if(model.getTimeInfo().getTime() == month0.getTime()){ 
 | 
                        carbonWater = Constants.formatBigdecimal(model.getNum()); 
 | 
                    } 
 | 
                    if(model.getTimeInfo().getTime() == month1.getTime()){ 
 | 
                        data.getWaterQuantity().setTotalNum(Constants.formatBigdecimal(model.getNum()) ); 
 | 
                        data.getWaterQuantity().setTotal(Constants.formatBigdecimal(model.getNum())+""); 
 | 
                    } 
 | 
                    if(model.getTimeInfo().getTime() == month2.getTime()){ 
 | 
                        data.getWaterQuantity().setRingNum(Constants.formatBigdecimal(model.getNum()) ); 
 | 
                    } 
 | 
                    if(model.getTimeInfo().getTime() == month3.getTime()){ 
 | 
                        data.getWaterQuantity().setSameNum(Constants.formatBigdecimal(model.getNum()) ); 
 | 
                    } 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        if( data.getGasQuantity().getTotalNum().compareTo(new BigDecimal(0)) !=0){ 
 | 
            //计算用气同比环比 
 | 
            if(Constants.formatBigdecimal(data.getGasQuantity().getSameNum()).compareTo(new BigDecimal(0))!=0){ 
 | 
                data.getGasQuantity().setSameRate( 
 | 
                        (data.getGasQuantity().getTotalNum().subtract(data.getGasQuantity().getSameNum())).divide(data.getGasQuantity().getSameNum(),4,BigDecimal.ROUND_HALF_UP).doubleValue()*100 +"" 
 | 
                    /*Constants.formatBigdecimal4Float(data.getGasQuantity().getSameNum() 
 | 
                            .divide(data.getGasQuantity().getTotalNum(),4,BigDecimal.ROUND_HALF_UP)).doubleValue()*100 +""*/); 
 | 
            } 
 | 
           if(Constants.formatBigdecimal(data.getGasQuantity().getRingNum()).compareTo(new BigDecimal(0))!=0){ 
 | 
               data.getGasQuantity().setRingRate( 
 | 
                       (data.getGasQuantity().getTotalNum().subtract(data.getGasQuantity().getRingNum())).divide(data.getGasQuantity().getRingNum(),4,BigDecimal.ROUND_HALF_UP).doubleValue()*100 +"" 
 | 
                       //Constants.formatBigdecimal4Float(data.getGasQuantity().getRingNum().divide(data.getGasQuantity().getTotalNum(),4,BigDecimal.ROUND_HALF_UP)).doubleValue()*100 +"" 
 | 
               ); 
 | 
           } 
 | 
  
 | 
        } 
 | 
        if( data.getWaterQuantity().getTotalNum().compareTo(new BigDecimal(0)) !=0){ 
 | 
            // //计算用水同比环比 
 | 
            data.getWaterQuantity().setSameRate(Constants.formatBigdecimal4Float(data.getWaterQuantity().getSameNum().divide(data.getWaterQuantity().getTotalNum(),4,BigDecimal.ROUND_HALF_UP)).doubleValue()*100 +""); 
 | 
            data.getWaterQuantity().setRingRate(Constants.formatBigdecimal4Float(data.getWaterQuantity().getRingNum().divide(data.getWaterQuantity().getTotalNum(),4,BigDecimal.ROUND_HALF_UP)).doubleValue()*100 +""); 
 | 
        } 
 | 
  
 | 
        /*计算碳排量,以下三个因素之和 
 | 
        1)用电的二氧化碳排放量(kg)=耗电量(kWh)x0.785; 
 | 
        2) 天然气二氧化碳排放量(kg)=天然气使用量(m3)×0.19; 
 | 
        3) 自来水二氧化碳排放量(kg)=自来水使用量(m3)×0.91;*/ 
 | 
        data.setCarbon(Constants.formatBigdecimal2Float((carbonElec.multiply(new BigDecimal(0.785))) 
 | 
                .add(carbonGas.multiply(new BigDecimal(0.19))) 
 | 
                .add(carbonWater.multiply(new BigDecimal(0.91)))).divide(new BigDecimal(1000),2,BigDecimal.ROUND_HALF_UP)); 
 | 
        return data; 
 | 
  
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 通过安防平获取本月数据 
 | 
     * @param data 
 | 
     */ 
 | 
    private void getMonthElectricityData(EnergyModelDataVO data) { 
 | 
        BaseResponse<MonthDataByMeterTypeResponse> response = HKService.getCurrentMonthDataByMeterType("1"); 
 | 
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){ 
 | 
           data.setRingRate(StringUtils.defaultString(response.getData().getRingPercent(),"0")); 
 | 
           data.setSameRate(StringUtils.defaultString(response.getData().getSamePercent(),"0")); 
 | 
           data.setTotal(StringUtils.defaultString(response.getData().getValue(),"0")); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 通过安防平获取上月数据 
 | 
     * @param data 
 | 
     */ 
 | 
    private void getLastMonthElectricityData(EnergyModelDataVO data) { 
 | 
//         BaseResponse<LastMonthFeeByMeterTypeResponse> response = HKService.lastMonthFeeByMeterType("1"); 
 | 
//        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){ 
 | 
//           data.setRingRate(StringUtils.defaultString(response.getData().getRingPercent(),"0")); 
 | 
//           data.setSameRate(StringUtils.defaultString(response.getData().getSamePercent(),"0")); 
 | 
//           data.setTotal(StringUtils.defaultString(response.getData().getValue(),"0")); 
 | 
//        } 
 | 
//        String nowMonth = DateUtil.getFomartDate(new Date(),"yyyy-MM-dd"); 
 | 
//        //上月日期 
 | 
//        DateUtil.getBeforMonthStr(new Date(),1); 
 | 
//        //上上月日期 
 | 
//        DateUtil.getBeforMonthStr(new Date(),2); 
 | 
//        //上年日期 
 | 
//        DateUtil.getBeforMonthStr(new Date(),13); 
 | 
  
 | 
        EnergyTotalDataRequest param = new EnergyTotalDataRequest(); 
 | 
        param.setPeriodType("month"); 
 | 
        param.setDate(DateUtil.getBeforMonthStr(new Date(),1).substring(0,7)); 
 | 
        BaseResponse<EnergyTotalDataResponse> beforMonthResponse = HKService.energyTotal(param); 
 | 
        if(beforMonthResponse != null && StringUtils.equals(beforMonthResponse.getCode(), HKConstants.RESPONSE_SUCCEE) && beforMonthResponse.getData()!=null ){ 
 | 
            data.setTotal(beforMonthResponse.getData().getElectricity()); 
 | 
            data.setTotalNum(new BigDecimal(beforMonthResponse.getData().getElectricity())); 
 | 
        } 
 | 
        param.setDate(DateUtil.getBeforMonthStr(new Date(),2).substring(0,7)); 
 | 
        BaseResponse<EnergyTotalDataResponse> beforBeforMonthResponse = HKService.energyTotal(param); 
 | 
        if(beforBeforMonthResponse != null && StringUtils.equals(beforBeforMonthResponse.getCode(), HKConstants.RESPONSE_SUCCEE) && beforBeforMonthResponse.getData()!=null ){ 
 | 
            if(Objects.nonNull(beforBeforMonthResponse.getData()) && StringUtils.isNotBlank(beforBeforMonthResponse.getData().getElectricity())){ 
 | 
                data.setRingNum(new BigDecimal(beforBeforMonthResponse.getData().getElectricity())); 
 | 
            }else{ 
 | 
                data.setRingNum(BigDecimal.ZERO); 
 | 
            } 
 | 
            if(Objects.isNull(data.getTotal()) || Objects.isNull(data.getRingNum()) 
 | 
                    || data.getTotalNum().compareTo(BigDecimal.ZERO) ==0  || data.getRingNum().compareTo(BigDecimal.ZERO) ==0 ){ 
 | 
               data.setRingRate("0"); 
 | 
            }else{ 
 | 
               data.setRingRate(new BigDecimal(data.getTotal()).divide(data.getRingNum(),2,BigDecimal.ROUND_HALF_UP).toString()); 
 | 
            } 
 | 
        } 
 | 
        param.setDate(DateUtil.getBeforMonthStr(new Date(),13).substring(0,7)); 
 | 
        BaseResponse<EnergyTotalDataResponse> beforYearMonthResponse = HKService.energyTotal(param); 
 | 
        if(beforYearMonthResponse != null && StringUtils.equals(beforYearMonthResponse.getCode(), HKConstants.RESPONSE_SUCCEE) && beforBeforMonthResponse.getData()!=null ){ 
 | 
            if(Objects.nonNull(beforYearMonthResponse.getData()) && StringUtils.isNotBlank(beforYearMonthResponse.getData().getElectricity())){ 
 | 
                data.setSameNum(new BigDecimal(beforYearMonthResponse.getData().getElectricity())); 
 | 
            }else{ 
 | 
                data.setSameNum(BigDecimal.ZERO); 
 | 
            } 
 | 
            if(Objects.isNull(data.getTotal()) || Objects.isNull(data.getSameNum()) 
 | 
                    || data.getTotalNum().compareTo(BigDecimal.ZERO) ==0  || data.getSameNum().compareTo(BigDecimal.ZERO) ==0 ){ 
 | 
                data.setSameRate("0"); 
 | 
            }else{ 
 | 
                data.setSameRate(new BigDecimal(data.getTotal()).divide(data.getSameNum(),2,BigDecimal.ROUND_HALF_UP).toString()); 
 | 
            } 
 | 
        } 
 | 
    } 
 | 
  
 | 
  
 | 
  
 | 
  
 | 
  
 | 
    /** 
 | 
     * 通过安防平获取今日用电量 
 | 
     * @param data 
 | 
     */ 
 | 
    private void getCurrentDateElectircityData(EnergyModelDataVO data,int days) { 
 | 
//        EnergyTrendRequest param = new EnergyTrendRequest(); 
 | 
//        param.setDate(DateUtil.getFomartDate(DateUtil.addDaysToDate(new Date(),days),"yyyy-MM-dd"));//日期 
 | 
//        param.setMeterType(1); 
 | 
//        param.setShowType("4"); 
 | 
//        param.setNodeType(2); 
 | 
//        param.setNodeId("root000000"); 
 | 
//        param.setPeriodType("day"); 
 | 
//        BigDecimal total = new BigDecimal(0); 
 | 
//        BaseResponse<EnergyTrendResponse> response = HKService.energyTrend(param); 
 | 
//        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) 
 | 
//                && response.getData()!=null&& response.getData().getYvalues()!=null ){ 
 | 
//            for (int i = 0; i < response.getData().getYvalues().get(0).getValue().length; i++) { 
 | 
//                total = total.add(new BigDecimal(StringUtils.defaultString( response.getData().getYvalues().get(0).getValue()[i],"0"))); 
 | 
//            } 
 | 
// 
 | 
//        } 
 | 
//        data.setTotal(Constants.formatBigdecimal2Float(total).toString()); 
 | 
        EnergyTotalDataRequest param = new EnergyTotalDataRequest(); 
 | 
        param.setPeriodType("day"); 
 | 
        param.setDate(DateUtil.getFomartDate(DateUtil.addDaysToDate(new Date(),days),"yyyy-MM-dd")); 
 | 
        BaseResponse<EnergyTotalDataResponse> beforMonthResponse = HKService.energyTotal(param); 
 | 
        if(beforMonthResponse != null && StringUtils.equals(beforMonthResponse.getCode(), HKConstants.RESPONSE_SUCCEE) && beforMonthResponse.getData()!=null ){ 
 | 
            data.setTotal(beforMonthResponse.getData().getElectricity()); 
 | 
            data.setTotalNum(new BigDecimal(beforMonthResponse.getData().getElectricity())); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    private EnergyModelDataVO getDefaultData() { 
 | 
        EnergyModelDataVO data = new EnergyModelDataVO(); 
 | 
        data.setTotal("0"); 
 | 
        data.setSameRate("0"); 
 | 
        data.setRingRate("0"); 
 | 
        data.setTotalNum(new BigDecimal(0)); 
 | 
        data.setSameNum(new BigDecimal(0)); 
 | 
        data.setRingNum(new BigDecimal(0)); 
 | 
        return data; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 用电总能耗同比、环比和区域用电量集合 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public   RegionEnergyListResponse energyRegionData(){ 
 | 
        RegionEnergyListResponse data = null; 
 | 
        BaseResponse<RegionEnergyListResponse> response = HKService.regionEnergyList("1"); 
 | 
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){ 
 | 
            data = response.getData(); 
 | 
        } 
 | 
        if(data == null){ 
 | 
            data = new RegionEnergyListResponse(); 
 | 
            data.setRootValue("0"); 
 | 
            data.setSamePercent("0"); 
 | 
            data.setRingPercent("0"); 
 | 
            data.setSecondRegionDataList(new ArrayList<>()); 
 | 
        } 
 | 
        if(data.getSecondRegionDataList()!=null && data.getSecondRegionDataList().size()>1){ 
 | 
            int index =-1; 
 | 
            for (int i = 0; i <data.getSecondRegionDataList().size() ; i++) { 
 | 
                RegionTopPowerResponse t=data.getSecondRegionDataList().get(i); 
 | 
                if(Constants.formatBigdecimal(t.getPercent()).compareTo(new BigDecimal(1)) == 0){ 
 | 
                    index =i; 
 | 
                    break; 
 | 
                } 
 | 
            } 
 | 
            if(index>-1){ 
 | 
                data.getSecondRegionDataList().remove(index);//删除根节点数据 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return  data; 
 | 
    } 
 | 
    /** 
 | 
     * 近12个水电气油耗数据统计 
 | 
     * @param type 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public   List<EnergyDataVO> energyDataList(Integer type){ 
 | 
        List<EnergyDataVO> energyDataVOList = new ArrayList<>(); 
 | 
        List<OilDataVO> oilDataVOList = new ArrayList<>(); 
 | 
        Date lastMonth = DateUtil.increaseMonth(new Date(),-11); 
 | 
        if(type >=0 && type <=2){ 
 | 
            //用水用电用气 
 | 
            List<PlatformWaterGas> list =  platformWaterGasMapper.selectList(new QueryWrapper<PlatformWaterGas>() 
 | 
                            .select("DATE_FORMAT(TIME_INFO,'%Y-%m') as time_info_str,sum(num) as num") 
 | 
                    .lambda() 
 | 
                    .eq(PlatformWaterGas::getIsdeleted,Constants.ZERO) 
 | 
                    .eq(PlatformWaterGas::getType,type) 
 | 
                    .apply("time_info BETWEEN DATE_SUB(CURDATE(), INTERVAL 12 MONTH) AND CURDATE()")//近12个月 
 | 
                    .last(" group by DATE_FORMAT(TIME_INFO,'%Y-%m')") 
 | 
            ); 
 | 
            for (int i = 0; i < 12; i++) { 
 | 
                Date tempDate = DateUtil.increaseMonth(lastMonth,i);     
 | 
                EnergyDataVO data = new EnergyDataVO(); 
 | 
                data.setTimeData(DateUtil.getFomartDate(tempDate,"YYYY-MM")); 
 | 
                data.setEnergy(new BigDecimal(0)); 
 | 
                if(list!=null){ 
 | 
                    for(PlatformWaterGas m : list){ 
 | 
                        if(StringUtils.equals(m.getTimeInfoStr(),data.getTimeData())){ 
 | 
                            data.setEnergy(Constants.formatBigdecimal(m.getNum())); 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
                energyDataVOList.add(data); 
 | 
            } 
 | 
        }else{ 
 | 
            String lastYear = null; 
 | 
            int lastMonths = 0,curMonths =0; 
 | 
            String curYear =DateUtil.getFomartDate(new Date(),"yyyy"); 
 | 
            for (int i = 0; i < 12; i++) { 
 | 
                Date tempDate = DateUtil.increaseMonth(lastMonth,i); 
 | 
                String tt =DateUtil.getFomartDate(tempDate,"yyyy"); 
 | 
                if(!StringUtils.equals(curYear,tt)){ 
 | 
                   lastYear = tt; 
 | 
                   lastMonths = i+1;//去年的月份数 
 | 
                } 
 | 
                EnergyDataVO data = new EnergyDataVO(); 
 | 
                data.setTimeData(DateUtil.getFomartDate(tempDate,"YYYY-MM")); 
 | 
//                data.setTimeData(DateUtil.getFomartDate(tempDate,(i+1)+"月")); 
 | 
                data.setEnergy(new BigDecimal(0)); 
 | 
                energyDataVOList.add(data); 
 | 
            } 
 | 
            curMonths = 12 - lastMonths;//今年的月份数 
 | 
            EnergyTrendRequest param = new EnergyTrendRequest(); 
 | 
            param.setMeterType(1); 
 | 
            param.setNodeType(2); 
 | 
            param.setNodeId("root000000"); 
 | 
            param.setPeriodType("year"); 
 | 
            if(lastYear!=null){ 
 | 
                //如果是用电数据 
 | 
                param.setDate(lastYear);//查询去年年份 
 | 
                BaseResponse<EnergyTrendResponse> response = HKService.energyTrend(param); 
 | 
                if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null&& response.getData().getYvalues()!=null ){ 
 | 
                    for (int i = 0; i < lastMonths; i++) { //0,11,取值1-12 
 | 
                        if(response.getData().getYvalues().size()>0 &&response.getData().getYvalues().get(0).getValue().length>curMonths+i){ 
 | 
                            //取相应的参数值 
 | 
                            energyDataVOList.get(i).setEnergy(new BigDecimal(StringUtils.defaultString(response.getData().getYvalues().get(0).getValue()[curMonths+i],"0"))); 
 | 
                        } 
 | 
                    } 
 | 
  
 | 
                } 
 | 
            } 
 | 
            //如果是用电数据 
 | 
            param.setDate(curYear);//年份 
 | 
            BaseResponse<EnergyTrendResponse> response = HKService.energyTrend(param); 
 | 
            if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null&& response.getData().getYvalues()!=null ){ 
 | 
                for (int i = lastMonths; i < 12; i++) { //12 取值 0 
 | 
                    if(response.getData().getYvalues().size()>0 &&response.getData().getYvalues().get(0).getValue().length>i-lastMonths){ 
 | 
                        //取相应的参数值 
 | 
                        energyDataVOList.get(i).setEnergy(new BigDecimal(StringUtils.defaultString(response.getData().getYvalues().get(0).getValue()[i-lastMonths],"0"))); 
 | 
                    } 
 | 
                } 
 | 
  
 | 
            } 
 | 
        } 
 | 
        return energyDataVOList; 
 | 
    } 
 | 
    @Override 
 | 
    public  VisitDataVO visitSecurityData(){ 
 | 
        //待访问、已登记、已离开 
 | 
  
 | 
        VisitDataVO result = new VisitDataVO(); 
 | 
        result.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>() 
 | 
                .eq(Visits::getIsdeleted,Constants.ZERO) 
 | 
                .apply("to_days(create_date)=to_days(now())") 
 | 
                .in(Visits::getStatus,Constants.VisitStatus.pass,Constants.VisitStatus.xfSuccess )));//待访问 
 | 
        result.setRegisterVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>() 
 | 
                .eq(Visits::getIsdeleted,Constants.ZERO) 
 | 
                .apply("to_days(create_date)=to_days(now())") 
 | 
                .in(Visits::getStatus,Constants.VisitStatus.signout,Constants.VisitStatus.signin )));//已登记 
 | 
        result.setLevelNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>() 
 | 
                .eq(Visits::getIsdeleted,Constants.ZERO) 
 | 
                .apply("to_days(create_date)=to_days(now())") 
 | 
                .in(Visits::getStatus,Constants.VisitStatus.signout )));//已签离 
 | 
        /*PageWrap<Visits> pageWrap = new PageWrap<>(); 
 | 
        pageWrap.setCapacity(10); 
 | 
        pageWrap.setPage(1); 
 | 
        pageWrap.setModel(new Visits()); 
 | 
        pageWrap.getModel().setLevelStatus(Constants.ZERO); 
 | 
        pageWrap.getModel().setStatus(Constants.TWO); 
 | 
        PageData<Visits> visitsPageData =    VisitsServiceImpl.retentionPageBiz(pageWrap,visitsJoinMapper,systemDictDataBiz); 
 | 
        List<VisitRetentionDataVO> list = new ArrayList<>(); 
 | 
        if(visitsPageData !=null && visitsPageData.getRecords() !=null && visitsPageData.getRecords().size()>0){ 
 | 
            for (Visits model : visitsPageData.getRecords()) { 
 | 
                VisitRetentionDataVO data = new VisitRetentionDataVO(); 
 | 
                data.setName(model.getName()); 
 | 
                data.setCompanyName(model.getCompanyName()); 
 | 
                data.setTimeOutMinute(Constants.formatIntegerNum(model.getTimeOut())); 
 | 
                list.add(data); 
 | 
            } 
 | 
            result.setRetentionNum(visitsPageData.getTotal()); 
 | 
        }*/ 
 | 
  
 | 
        String code= systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.TIMEOUT_WARNING).getCode(); 
 | 
        MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>(); 
 | 
        queryWrapper.selectAll(Visits.class); 
 | 
        queryWrapper.selectAs(Member::getName,Visits::getReceptMemberName); 
 | 
        queryWrapper.select("TIMESTAMPDIFF( MINUTE, NOW(), t.OUT_DATE) AS timeOut"); 
 | 
        queryWrapper.selectAs(Company::getName,Visits::getReceptMemberDepartment); 
 | 
        queryWrapper.leftJoin(Member.class,Member::getId,Visits::getReceptMemberId); 
 | 
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId); 
 | 
        queryWrapper.leftJoin(" member m on m.id= t.MEMBER_ID"); 
 | 
        queryWrapper.eq(Visits::getStatus,Constants.VisitStatus.signin); 
 | 
        queryWrapper.apply(" TIMESTAMPDIFF( MINUTE, NOW(), t.OUT_DATE) <= "+code+"  "); 
 | 
        queryWrapper.ne("m.type ",Constants.TWO); 
 | 
        queryWrapper.eq(Visits::getIsdeleted,Constants.ZERO); 
 | 
        queryWrapper.orderByDesc(Visits::getEditDate); 
 | 
        List<Visits> vr = visitsJoinMapper.selectList(queryWrapper); 
 | 
        result.setVisitRetentionDataList(new ArrayList<>());//访客滞留数据集合 
 | 
        if(vr!=null&&vr!=null){ 
 | 
            vr.stream().forEach(s ->{ 
 | 
                VisitRetentionDataVO t = new VisitRetentionDataVO(); 
 | 
                t.setName(s.getName()); 
 | 
                t.setCompanyName(s.getCompanyName()); 
 | 
                t.setTimeOutMinute(s.getTimeOut()); 
 | 
                result.getVisitRetentionDataList().add(t); 
 | 
            }); 
 | 
        } 
 | 
        result.setRetentionNum(result.getVisitRetentionDataList().size()); 
 | 
        return result; 
 | 
  
 | 
    } 
 | 
    @Override 
 | 
    public  SecurityBoardVO centerSecurityData(){ 
 | 
  
 | 
        SecurityBoardVO data = new SecurityBoardVO(); 
 | 
        getParkingCarsNum(data);//获取车位数据 
 | 
        List<Retention> retentionList = retentionMapper.selectJoinList(Retention.class, 
 | 
                new MPJLambdaWrapper<Retention>() 
 | 
                        .selectAll(Retention.class) 
 | 
                        .selectAs(Company::getType,Retention::getCompanyType) 
 | 
                        .leftJoin(Company.class,Company::getId,Retention::getCompanyId) 
 | 
                        .eq(Retention::getIsdeleted,Constants.ZERO) 
 | 
        ); 
 | 
  
 | 
        //今日在园人数 
 | 
        data.setInParkTotal( 
 | 
                (int) retentionList.stream().filter(i->!Constants.equalsInteger(i.getType(),Constants.THREE)).count() 
 | 
        ); 
 | 
        //在园长期相关方人数 
 | 
        data.setRelatedTotal( 
 | 
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) && Constants.equalsInteger(i.getCompanyType(),Constants.ZERO)).count() 
 | 
        ); 
 | 
        //在园内部员工人数 
 | 
        data.setInternalTotal( 
 | 
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) && Constants.equalsInteger(i.getCompanyType(),Constants.ONE)).count() 
 | 
        ); 
 | 
        //在园访客数量 
 | 
        data.setVisitTotal( 
 | 
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Objects.isNull(i.getCompanyType())).count() 
 | 
        ); 
 | 
        //在园车辆 
 | 
        data.setInParkCarTotal( 
 | 
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).count() 
 | 
        ); 
 | 
        //在园相关方车辆 
 | 
        data.setRelatedCarTotal( 
 | 
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE) 
 | 
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.relation)).count() 
 | 
        ); 
 | 
        //内部车辆 
 | 
        data.setInternalCarTotal( 
 | 
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE) 
 | 
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.internal)).count() 
 | 
        ); 
 | 
        //来访车辆 
 | 
        data.setVisitCarTotal( 
 | 
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE) 
 | 
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.visitor)).count() 
 | 
        ); 
 | 
        //自由物流车数量 
 | 
        data.setVisitCarTotal( 
 | 
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE) 
 | 
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.selfTruck)).count() 
 | 
        ); 
 | 
        //市公司卸货车数量 
 | 
        data.setInternalJobCarTotal( 
 | 
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE) 
 | 
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.cityComTruck)).count() 
 | 
        ); 
 | 
        //外协车数量 
 | 
        data.setRelatedJobCarTotal( 
 | 
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE) 
 | 
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.outTruck)).count() 
 | 
        ); 
 | 
        data.setVideoPluginUrl(getVideoUrl()); 
 | 
        return data; 
 | 
    } 
 | 
  
 | 
    private String getVideoUrl() { 
 | 
        return  systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()+"plugin/VideoWebPlugin.exe"; 
 | 
    } 
 | 
  
 | 
    private void getParkingCarsNum(SecurityBoardVO data) { 
 | 
        try { 
 | 
            BaseResponse<ParkingStatisticResponse> response = HKService.getParkingStatistics(); 
 | 
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) || response.getData()==null 
 | 
            ||response.getData().getTodayParkingDataDto() == null){ 
 | 
                 return; 
 | 
            } 
 | 
            data.setParkingLotTotal(Constants.formatIntegerNum(response.getData().getTodayParkingDataDto().getTotalPlace()));//总车位 
 | 
            data.setFreeParkingLot(Constants.formatIntegerNum(response.getData().getTodayParkingDataDto().getLeftPlace()));//剩余车位 
 | 
            data.setParkingUseRate(Constants.formatBigdecimal(response.getData().getTodayParkingDataDto().getUseRate()));//车位使用率 
 | 
        }catch (Exception e){ 
 | 
  
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    public  List<PlatformWorkDataVO> platformWorkData(){ 
 | 
  
 | 
        List<PlatformWorkDataVO> platformWorkDataVOList = new ArrayList<>(); 
 | 
        List<Platform> platformList = platformMapper.selectJoinList(Platform.class, new MPJLambdaWrapper<Platform>() 
 | 
                .selectAll( Platform.class) 
 | 
                .eq(Platform::getIsdeleted, Constants.ZERO) 
 | 
                .orderByAsc(Platform::getSortnum) 
 | 
        ); 
 | 
        if(platformList!=null && platformList.size()>0){ 
 | 
            List<PlatformJob> jobList = platformJobMapper.selectJoinList(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>() 
 | 
                    .selectAll( PlatformJob.class) 
 | 
//                    .selectAs(Platform::getCode,PlatformJob::getPlatformCode) 
 | 
                    .select("( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = "+Constants.PlatformJobLogType.WORKING.getKey()+"  order by pl.CREATE_DATE desc  limit 1  ) as newStartDate") 
 | 
                    //.select(" (  select sum(ifnull(pl.IO_QTY , 0 ))   from platform_wms_detail pl  where   pl.job_id = t.id and pl.isdeleted=0 )",PlatformJob::getWorkNum) 
 | 
                    .select(" (  case when t.total_num is null  then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = t.id  ) else t.total_num end )",PlatformJob::getWorkNum) 
 | 
//                    .apply("to_days(t.create_date) = to_days(now())") 
 | 
                    .eq(Platform::getIsdeleted, Constants.ZERO) 
 | 
                    .in(PlatformJob ::getStatus,new Integer[]{Constants.PlatformJobStatus.WORKING.getKey(),Constants.PlatformJobStatus.CALLED.getKey() }) 
 | 
//                    .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId) 
 | 
                    .orderByDesc(PlatformJob::getStatus ) 
 | 
                    .orderByAsc(PlatformJob::getId ) 
 | 
            ); 
 | 
            //月台状态:0=作业中;1=空闲中;2=作业超时;3=叫号 
 | 
            for(Platform model : platformList){ 
 | 
                PlatformWorkDataVO platformDurationVO = new PlatformWorkDataVO(); 
 | 
                platformDurationVO.setPlatformName(model.getName()); 
 | 
                platformDurationVO.setPlatformId(model.getId()); 
 | 
                platformDurationVO.setPlatformCode(model.getCode()); 
 | 
                platformDurationVO.setPlatformSort(model.getSortnum()); 
 | 
                PlatformJob job = getJobFromListById(model.getId(),jobList); 
 | 
                if(job != null){ 
 | 
                    if(Constants.equalsInteger(job.getType(),Constants.ONE) || Constants.equalsInteger(job.getType(),Constants.THREE)){ 
 | 
                        platformDurationVO.setWorkType(Constants.ONE);//如果是装货 
 | 
                    }else{ 
 | 
                        platformDurationVO.setWorkType(Constants.ZERO);//如果是卸货 
 | 
                    } 
 | 
                    Integer workMinute = 0; 
 | 
                    Date overDate =null; 
 | 
                    if(model.getWorkRate()!=null && model.getWorkRate().compareTo(new BigDecimal(0)) !=0){ 
 | 
                        workMinute   = Constants.formatBigdecimal(job.getWorkNum()).multiply(new BigDecimal(60)).divide(model.getWorkRate(),0,BigDecimal.ROUND_HALF_UP).intValue(); 
 | 
                        overDate = DateUtil.getXMinuteAfterDate(job.getNewStartDate(),workMinute + model.getWorkTimeoutAlarmTime());//预计完成时间 
 | 
                        platformDurationVO.setFinishTimeStr(DateUtil.DateToStr(overDate,"HH:mm")); 
 | 
                    } 
 | 
  
 | 
                    platformDurationVO.setWorkNum(Constants.formatBigdecimal(job.getWorkNum()).intValue()); 
 | 
                    platformDurationVO.setCarNo(job.getCarCodeFront());//车牌号 
 | 
                    if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.CALLED.getKey() )){ 
 | 
                        platformDurationVO.setStatus(Constants.THREE); //叫号中 
 | 
                    }else{ 
 | 
                        platformDurationVO.setStatus(Constants.ZERO); //作业中 
 | 
                        platformDurationVO.setWorkTime(PlatformJobServiceImpl.getWorkTime(job,platformLogMapper));//已工作时间 
 | 
                        if(overDate!=null && overDate.getTime() < System.currentTimeMillis() ){ 
 | 
                            model.setStatus(Constants.TWO); //作业已超时 
 | 
                        } 
 | 
                    } 
 | 
                }else{ 
 | 
                    platformDurationVO.setStatus(Constants.ONE);//空闲中 
 | 
                } 
 | 
                platformWorkDataVOList.add(platformDurationVO); 
 | 
            } 
 | 
        } 
 | 
        return  platformWorkDataVOList; 
 | 
    } 
 | 
  
 | 
    private PlatformJob getJobFromListById(Integer id, List<PlatformJob> jobList) { 
 | 
        if(jobList!=null){ 
 | 
            for(PlatformJob job :jobList){ 
 | 
                if(Constants.equalsInteger(job.getPlatformId(),id)){ 
 | 
                    return  job; 
 | 
                } 
 | 
            } 
 | 
  
 | 
        } 
 | 
  
 | 
        return null; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 
 | 
     * @param type 查询类型:0=入库;1=出库 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public   List<WorkEfficiencyVO> workEfficiency(Integer type){ 
 | 
        //作业类型 0自有车卸货 1自有车装货 2外协车卸货 3外协车装货 4市公司外协车卸货 
 | 
        List<WorkEfficiencyVO> workEfficiencyVOList = new ArrayList<>(); 
 | 
        List<PlatformJob> jobList = platformJobMapper.selectJoinList(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>() 
 | 
                .selectAll( PlatformJob.class) 
 | 
//                .select("(select sum(ifnull(a.io_qty,0)) from platform_wms_detail a where a.isdeleted=0 and a.job_id =t.id )", create_date) 
 | 
                .apply("to_days(t.create_date) = to_days(now())") 
 | 
                .eq(Platform::getIsdeleted, Constants.ZERO) 
 | 
                .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey() 
 | 
                        , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() 
 | 
                        , Constants.PlatformJobStatus.LEAVED.getKey()) 
 | 
                .in(Constants.equalsInteger(type,Constants.ZERO),PlatformJob::getType,new Integer[]{0,2,4}) 
 | 
                .in(Constants.equalsInteger(type,Constants.ONE),PlatformJob::getType,new Integer[]{1,3}) 
 | 
  
 | 
        ); 
 | 
        if(jobList==null || jobList.size()==0){ 
 | 
            return workEfficiencyVOList; 
 | 
        } 
 | 
        int curtotalNum = 0; 
 | 
        Date today =  Utils.Date.getStart(new Date()); 
 | 
        long curTime=0, lastTime=0; 
 | 
        for (int i = 0; i < 8; i++) { 
 | 
            lastTime = curTime;//上次的时间 
 | 
            int curHour = 8+(i*2); 
 | 
            curTime = curHour*60*60*1000 + today.getTime(); 
 | 
            WorkEfficiencyVO workEfficiencyVO = new WorkEfficiencyVO(); 
 | 
            workEfficiencyVO.setWorkTime(curHour+":00"); 
 | 
            workEfficiencyVO.setTotalWorkNum(0); 
 | 
            workEfficiencyVO.setWorkNum(0); 
 | 
            if(jobList!=null && jobList.size()>0){ 
 | 
                for(PlatformJob detail : jobList){ 
 | 
                    if(detail.getDoneDate()!=null && detail.getDoneDate().getTime()<= curTime){ 
 | 
                        //当前量 
 | 
                        if(detail.getDoneDate()!=null && detail.getDoneDate().getTime() > lastTime){ 
 | 
                            //区间值 取实近2小时内的累计值 
 | 
                            workEfficiencyVO.setWorkNum(Constants.formatIntegerNum(workEfficiencyVO.getWorkNum())+Constants.formatBigdecimal(detail.getIoQty()).intValue() +Constants.formatBigdecimal(detail.getTotalNum()).intValue()); 
 | 
                            //累积量 
 | 
                        } 
 | 
                    } 
 | 
                } 
 | 
                curtotalNum += Constants.formatIntegerNum(workEfficiencyVO.getWorkNum()) ; 
 | 
            } 
 | 
            workEfficiencyVO.setTotalWorkNum(curtotalNum);//累计值 
 | 
            if(System.currentTimeMillis() < curTime){ 
 | 
                workEfficiencyVO.setTotalWorkNum(0); 
 | 
            } 
 | 
            workEfficiencyVOList.add(workEfficiencyVO); 
 | 
        } 
 | 
        return workEfficiencyVOList; 
 | 
    } 
 | 
    @Override 
 | 
    public List<PlatformDurationVO> platformDuration(){ 
 | 
        List<PlatformDurationVO> platformDurationList = new ArrayList<>(); 
 | 
        List<Platform> jobList = platformMapper.selectJoinList(Platform.class, new MPJLambdaWrapper<Platform>() 
 | 
                .selectAll( Platform.class) 
 | 
                .select(" (select ROUND( SUM(ifnull(pl.PARAM3,0)/60 ) , 2 )   from platform_log pl  where   pl.remark = t.id and to_days(pl.CREATE_DATE) =to_days(now()))",Platform::getWorkCountTime) 
 | 
                .eq(Platform::getIsdeleted, Constants.ZERO) 
 | 
        ); 
 | 
        if(jobList!=null){ 
 | 
            //按工作时长累计倒序排序 
 | 
            Collections.sort(jobList, new Comparator<Platform>() { 
 | 
                @Override 
 | 
                public int compare(Platform o1, Platform o2) { 
 | 
                    return Constants.formatBigdecimal(o2.getWorkCountTime()).intValue() - Constants.formatBigdecimal(o1.getWorkCountTime()).intValue(); 
 | 
                } 
 | 
            }); 
 | 
            for(Platform model : jobList){ 
 | 
                PlatformDurationVO data = new PlatformDurationVO(); 
 | 
                data.setPlatformId(model.getId()); 
 | 
                data.setPlatformName(model.getName()); 
 | 
                data.setWorkTotalTime(Constants.formatBigdecimal(model.getWorkCountTime()).intValue()); 
 | 
                platformDurationList.add(data); 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return platformDurationList; 
 | 
    } 
 | 
    @Override 
 | 
    public      List<PlatformWarnEvent> warningList(int limit){ 
 | 
        List<PlatformWarnEvent> platformLogList = platformWarnEventJoinMapper 
 | 
                .selectJoinList(PlatformWarnEvent.class,new MPJLambdaWrapper<PlatformWarnEvent>() 
 | 
                .selectAll(PlatformWarnEvent.class) 
 | 
                .selectAs(Platform::getName,PlatformWarnEvent::getPlatformName) 
 | 
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId) 
 | 
                .eq(PlatformWarnEvent::getIsdeleted,Constants.ZERO) 
 | 
                .apply("to_days(t.create_date) = to_days(now())") 
 | 
                .orderByDesc(PlatformWarnEvent::getCreateDate) 
 | 
                .last(" limit "+limit) 
 | 
        ); 
 | 
        return platformLogList; 
 | 
    } 
 | 
    @Override 
 | 
    public OnSitDispatchBoardVO getCnddCenterData(){ 
 | 
        OnSitDispatchBoardVO data = new OnSitDispatchBoardVO(); 
 | 
        //月台总数 
 | 
        List<Platform> list =  platformMapper.selectJoinList(Platform.class,new MPJLambdaWrapper<Platform>() 
 | 
                .selectAll(Platform.class) 
 | 
                .select(" ( select count(1) from platform_job pj where t.id = pj.PLATFORM_ID and pj.STATUS = "+Constants.PlatformJobStatus.WORKING.getKey()+" ) as workStatus ") 
 | 
                .eq(Platform::getIsdeleted,Constants.ZERO) 
 | 
        ); 
 | 
        data.setPlatformTotal(list==null?0:list.size()); 
 | 
        //空闲月台数量 
 | 
        data.setFreePlatform( 
 | 
                list.stream().filter(i->Constants.formatIntegerNum(i.getWorkStatus())<=Constants.ZERO).collect(Collectors.toList()).size() 
 | 
        ); 
 | 
      /*  //查询今日月台个状态作业数量 
 | 
        List<PlatformJob> jobList =  platformJobMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>() 
 | 
                .selectAll(PlatformJob.class) 
 | 
                .select("count(id)" ,PlatformJob::getCountum) 
 | 
                .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                .apply("to_days(create_date) = to_days(now())" ) 
 | 
                .groupBy(PlatformJob::getStatus) 
 | 
        ); 
 | 
  
 | 
        if(jobList!=null){ 
 | 
            //-------------TODO----------【看板】爱确认需求-------------- 
 | 
            //     * 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 已过号 12已取消 
 | 
            for(PlatformJob model : jobList){ 
 | 
                //待确认 (预约车) 
 | 
                if( Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.WAIT_CONFIRM.getKey())){ 
 | 
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                } 
 | 
                //待签到(预约车) 
 | 
                if( Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){ 
 | 
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                } 
 | 
                //等待叫号(预约车、签到数、排队车) 
 | 
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){ 
 | 
                    data.setSignedNum(data.getSignedNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setLineUpCar(data.getLineUpCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                } 
 | 
                //入园等待(预约车、签到数) 
 | 
                if( Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())){ 
 | 
                    data.setSignedNum(data.getSignedNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setLineUpCar(data.getLineUpCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                } 
 | 
                //已叫号(预约车、签到数、已叫号) 
 | 
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.CALLED.getKey()) ){ 
 | 
                    data.setSignedNum(data.getSignedNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setCalledNum(data.getCalledNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setLineUpCar(data.getLineUpCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                } 
 | 
                // 作业车辆(预约车、签到数、已叫号、作业车) 
 | 
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){ 
 | 
                    data.setSignedNum(data.getSignedNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setCalledNum(data.getCalledNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setWorkedNum(data.getWorkedNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                     data.setWorkingCar(data.getWorkingCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                } 
 | 
                // 作业完成(预约车、签到数、已叫号、作业车、已完成) 
 | 
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){ 
 | 
                    data.setSignedNum(data.getSignedNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setCalledNum(data.getCalledNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setWorkedNum(data.getWorkedNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setDoneNum(data.getDoneNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                } 
 | 
                // 转移中(预约车、签到数、排队车) 
 | 
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.TRANSFERING.getKey())){ 
 | 
                    data.setSignedNum(data.getSignedNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setLineUpCar(data.getLineUpCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                } 
 | 
                // 已授权离园(预约车、签到数、已叫号、作业车、已完成) 
 | 
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())){ 
 | 
                    data.setSignedNum(data.getSignedNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setCalledNum(data.getCalledNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setWorkedNum(data.getWorkedNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setDoneNum(data.getDoneNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                } 
 | 
                // 已离园 
 | 
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey())){ 
 | 
                    // data.setWorkingCar(data.getWorkingCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                } 
 | 
                // 已过号(预约车、签到数、排队车) 
 | 
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.OVER_NUMBER.getKey())){ 
 | 
                    data.setSignedNum(data.getSignedNum()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                    data.setLineUpCar(data.getLineUpCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                } 
 | 
                // 已取消(预约车) 
 | 
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.CANCEL.getKey())){ 
 | 
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum())); 
 | 
                } 
 | 
  
 | 
            } 
 | 
      }*/ 
 | 
        //预约数 
 | 
        data.setReservationCar(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>() 
 | 
                .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                .apply("to_days(create_date) = to_days(now())" )).intValue()); 
 | 
        //作业中 
 | 
        data.setWorkingCar(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>() 
 | 
                .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WORKING.getKey()) 
 | 
        ).intValue()); 
 | 
        //排队车 
 | 
        data.setLineUpCar(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>() 
 | 
                .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                .in(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey(), 
 | 
                        Constants.PlatformJobStatus.WAIT_CALL.getKey(), 
 | 
                        Constants.PlatformJobStatus.IN_WAIT.getKey())).intValue()); 
 | 
        //已叫号 
 | 
        data.setCalledNum(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>() 
 | 
                .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                .apply("to_days(call_date) = to_days(now())" )).intValue()); 
 | 
        //签到数 
 | 
        data.setSignedNum(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>() 
 | 
                .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                .apply("to_days(sign_date) = to_days(now())" )).intValue()); 
 | 
        //今日完成数 
 | 
        data.setDoneNum(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>() 
 | 
                .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                .in(PlatformJob::getStatus,Constants.PlatformJobStatus.LEAVED.getKey(), 
 | 
                        Constants.PlatformJobStatus.AUTHED_LEAVE.getKey(), 
 | 
                        Constants.PlatformJobStatus.DONE.getKey()) 
 | 
                .apply("to_days(done_date) = to_days(now())" )).intValue()); 
 | 
  
 | 
        //已作业数 
 | 
        data.setWorkedNum(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>() 
 | 
                .eq(PlatformJob::getIsdeleted,Constants.ZERO) 
 | 
                .and(w->{w.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WORKING.getKey());}) 
 | 
                .and(w->{w.in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey() 
 | 
                                ,Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() 
 | 
                                ,Constants.PlatformJobStatus.LEAVED.getKey()) 
 | 
                        .apply("to_days(done_date) = to_days(now())");}) 
 | 
                .and(w->{w.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.EXCEPTION.getKey()) 
 | 
                        .apply("to_days(error_date) = to_days(now())");}) 
 | 
                .and(w->{w.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.TRANSFERING.getKey()) 
 | 
                        .apply("to_days(trans_platform_date) = to_days(now())");}) 
 | 
        ).intValue()); 
 | 
  
 | 
        data.setVideoPluginUrl(getVideoUrl()); 
 | 
        String indexCodes = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_CHANGNEI_SCREEN_INDEXCODES).getCode(); 
 | 
        if(StringUtils.isNotBlank(indexCodes)){ 
 | 
            data.setVideoIndexCodes(indexCodes.split(",")); 
 | 
        } 
 | 
        return  data; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 查询能耗用电信息  1=今日;2=本月;3=昨日 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public List<RegionDataRankingDataResponse> getRegionDataRanking(Integer type){ 
 | 
        RegionDataRankingDataRequest request = new RegionDataRankingDataRequest(); 
 | 
        request.setMeterType(1); 
 | 
        if(Constants.equalsInteger(type,Constants.ONE)){ 
 | 
            request.setDate(DateUtil.getFomartDate(new Date(),"yyyy-MM-dd")); 
 | 
            request.setPeriodType("day"); 
 | 
        }else if(Constants.equalsInteger(type,Constants.TWO)){ 
 | 
            request.setDate(DateUtil.getFomartDate(new Date(),"yyyy-MM")); 
 | 
            request.setPeriodType("month"); 
 | 
        }else{ 
 | 
            request.setDate(DateUtil.getBeforDay(new Date(),1)); 
 | 
            request.setPeriodType("day"); 
 | 
        } 
 | 
        BaseResponse<List<RegionDataRankingDataResponse>> response = HKService.regionDataRanking(request); 
 | 
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){ 
 | 
            List<RegionDataRankingDataResponse> regionDataRankingDataResponseList = new ArrayList<>(); 
 | 
            for (RegionDataRankingDataResponse regionDataRankingDataResponse:response.getData()) { 
 | 
                if(StringUtils.isNotBlank(regionDataRankingDataResponse.getPercent())){ 
 | 
                    if(Constants.equalsInteger(Integer.valueOf(new BigDecimal(regionDataRankingDataResponse.getPercent()).intValue()),Constants.ONE)){ 
 | 
                        continue; 
 | 
                    } 
 | 
                    regionDataRankingDataResponseList.add(regionDataRankingDataResponse); 
 | 
                } 
 | 
            } 
 | 
            return regionDataRankingDataResponseList; 
 | 
        }else{ 
 | 
            return null; 
 | 
        } 
 | 
    } 
 | 
    /** 
 | 
     * 出库能力 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public WholeProvinceZXTVO outAbilityUseRate(){ 
 | 
        WholeProvinceZXTVO result = new WholeProvinceZXTVO(); 
 | 
        result.setCurrentNum(new BigDecimal(0)); 
 | 
        result.setTotalNum(new BigDecimal(0)); 
 | 
        result.setUseRate(new BigDecimal(0)); 
 | 
        result.setDetailList(new ArrayList<>()); 
 | 
        List<TmsFactoryParam> paramList = factoryList(); 
 | 
        List<WholeProvinceZxtDetailVO> list = new ArrayList<>(); 
 | 
        TmsOutQtyAndVehicleQtyRequest param = new TmsOutQtyAndVehicleQtyRequest(); 
 | 
        if(paramList!=null){ 
 | 
            String startDate = DateUtil.formatDate(new Date(),"yyyy-MM-dd"); 
 | 
            String endDate = DateUtil.formatDate(new Date(),"yyyy-MM-dd"); 
 | 
            if(isDebug){ 
 | 
                  startDate =  "2024-12-01"; 
 | 
                  endDate =   "2024-12-05"; 
 | 
            } 
 | 
            for(TmsFactoryParam p : paramList){ 
 | 
                WholeProvinceZxtDetailVO t = new WholeProvinceZxtDetailVO(); 
 | 
                t.setFactoryName(p.getName()); 
 | 
                t.setCurrentNum(new BigDecimal(0)); 
 | 
                t.setUseRate(new BigDecimal(0)); 
 | 
                t.setTotalNum(Constants.formatBigdecimal(p.getParam3()));//8小时出库能力 
 | 
                if(StringUtils.isNotBlank(p.getCode())){ 
 | 
                    param.setFacrotyCodeList(new ArrayList<>()); 
 | 
                    param.setDateStart(startDate); 
 | 
                    param.setDateEnd(endDate); 
 | 
                    param.getFacrotyCodeList().add(p.getCode()); 
 | 
                    List<TmsOutQtyAndVehicleQtyResponse> response = tmsService.getOutQtyAndVehicleQty(param);//查询出库量 
 | 
                    t.setCurrentNum(getCurrentOutQryByList(response)); 
 | 
                    if(t.getTotalNum().compareTo(new BigDecimal(0)) !=0){ 
 | 
                        t.setUseRate(t.getCurrentNum().divide(t.getTotalNum(),4,BigDecimal.ROUND_HALF_UP)); 
 | 
                    } 
 | 
                    if(Constants.UNIT_TYPE == 1) { 
 | 
                        //处理单位成“箱”,一箱=5万支 
 | 
                        t.setCurrentNum(Constants.formatBigdecimal(t.getCurrentNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
                        t.setTotalNum(Constants.formatBigdecimal(t.getTotalNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
                    } 
 | 
                } 
 | 
                result.getDetailList().add(t); 
 | 
                result.setCurrentNum(result.getCurrentNum().add(t.getCurrentNum())); 
 | 
                result.setTotalNum(result.getTotalNum().add(t.getTotalNum())); 
 | 
            } 
 | 
        } 
 | 
        if(result.getTotalNum().compareTo(new BigDecimal(0)) !=0){ 
 | 
            result.setUseRate(result.getCurrentNum().divide(result.getTotalNum(),4,BigDecimal.ROUND_HALF_UP)); 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
    /** 
 | 
     * 全身出库能力 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public  WholeProvinceBoardVO centerProvinceData(String  factoryCode){ 
 | 
        WholeProvinceBoardVO data = new WholeProvinceBoardVO(); 
 | 
        data.setMaxAbility(new BigDecimal(0)); 
 | 
        data.setHoursAbility(new BigDecimal(0)); 
 | 
        data.setCurrentPlanNum(new BigDecimal(0)); 
 | 
        data.setCurrentOrderNum(new BigDecimal(0)); 
 | 
        data.setNoNeedTransportOrderNum(new BigDecimal(0)); 
 | 
        data.setNeedTransportOrderNum(new BigDecimal(0)); 
 | 
        data.setCurrentOrderNum(new BigDecimal(0)); 
 | 
        data.setCrrentRestNum(new BigDecimal(0)); 
 | 
        data.setCrrentOutNum(new BigDecimal(0)); 
 | 
        List<TmsFactoryParam> paramList = factoryList(); 
 | 
        String code = null; 
 | 
        if(paramList!=null){ 
 | 
            //处理最大出库能力和8小时出库能力 
 | 
            for(TmsFactoryParam param : paramList){ 
 | 
                if(StringUtils.isNotBlank(factoryCode)){ 
 | 
                    if(StringUtils.equals(param.getCode(),factoryCode)){ 
 | 
                        data.setHoursAbility(Constants.formatBigdecimal(param.getParam3())); 
 | 
                        data.setMaxAbility(Constants.formatBigdecimal(param.getNum2())); 
 | 
                        code = param.getCode(); 
 | 
                        break; 
 | 
                    } 
 | 
                }else{ 
 | 
                    data.setHoursAbility(data.getHoursAbility().add(Constants.formatBigdecimal(param.getParam3()))); 
 | 
                    data.setMaxAbility(data.getMaxAbility().add(Constants.formatBigdecimal(param.getNum2()))); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
      /*  Date date = new Date(); 
 | 
        TmsOutQtyAndVehicleQtyRequest param = new TmsOutQtyAndVehicleQtyRequest(); 
 | 
        param.setDateEnd(DateUtil.getShortTime(date)); 
 | 
        param.setDateStart(DateUtil.getShortTime(date)); 
 | 
        if(StringUtils.isNotBlank(code)){ 
 | 
            param.setFacrotyCodeList(new ArrayList<>()); 
 | 
            param.getFacrotyCodeList().add(code);//查询指定厂区 
 | 
        } 
 | 
        List<TmsOutQtyAndVehicleQtyResponse> listSame=  tmsService.getOutQtyAndVehicleQty(param); 
 | 
        if(listSame!=null ){ 
 | 
            for(TmsOutQtyAndVehicleQtyResponse model : listSame){ 
 | 
                data.setCrrentOutNum(data.getCrrentOutNum().add(Constants.formatBigdecimal(model.getTotalOutQty())));//今日出库量 
 | 
                data.setCrrentOutCarNum(data.getCrrentOutCarNum()+(Constants.formatIntegerNum(model.getVehicleQty())));//今日出库车次 
 | 
            } 
 | 
        }*/ 
 | 
        initOutboundCapability(data,factoryCode); 
 | 
        return  data; 
 | 
  
 | 
    } 
 | 
    private void initOutboundCapability(WholeProvinceBoardVO data, String code) { 
 | 
        TmsFacrotyCodeListRequest param = new TmsFacrotyCodeListRequest(); 
 | 
        if(StringUtils.isNotBlank(code)){ 
 | 
            param.setFacrotyCodeList(new ArrayList<>()); 
 | 
            param.getFacrotyCodeList().add(code); 
 | 
        } 
 | 
        TmsOutboundCapabilityResponse result=  tmsService.getOutboundCapability(param); 
 | 
        if(result !=null){ 
 | 
            String todayDate = DateUtil.getShortTime(new Date()); 
 | 
            List<String> planCodes = new ArrayList<>(); 
 | 
            List<String> todayCodes = new ArrayList<>(); 
 | 
            if(result.getCurrentDayOrderList()!=null && result.getCurrentDayOrderList().size()>0){ 
 | 
                for(TmsOutboundCapabilityInfoResponse model :result.getCurrentDayOrderList()){ 
 | 
                    dealOutOrderBiz(data,model,planCodes,todayCodes,todayDate); 
 | 
                } 
 | 
            } 
 | 
            if(result.getCurrentDayAgoOrderList()!=null && result.getCurrentDayAgoOrderList().size()>0){ 
 | 
                for(TmsOutboundCapabilityInfoResponse model :result.getCurrentDayAgoOrderList()){ 
 | 
                    dealOutOrderBiz(data,model,planCodes,todayCodes,todayDate); 
 | 
                } 
 | 
            } 
 | 
            data.setCurrentPlanCarNum(planCodes.size());//今日任务车次 
 | 
            data.setCrrentOutCarNum(todayCodes.size());//今日出库车次 
 | 
        } 
 | 
//        data.setCrrentRestNum(data.getCurrentPlanNum().subtract(data.getCrrentOutNum())); 
 | 
//        data.setCrrentRestCarNum(data.getCurrentPlanCarNum() -data.getCrrentOutCarNum()); 
 | 
        data.setCrrentRestNum(data.getCurrentPlanNum()); 
 | 
        data.setCrrentRestCarNum(data.getCurrentPlanCarNum()); 
 | 
        if(data.getCrrentRestNum().compareTo(new BigDecimal(0)) <=0){ 
 | 
            data.setCrrentRestNum(new BigDecimal(0)); 
 | 
        } 
 | 
        if(data.getCrrentRestCarNum()<=0){ 
 | 
            data.setCrrentRestCarNum(0); 
 | 
        } 
 | 
        //处理单位成“箱”,一箱=5万支 
 | 
        if(Constants.UNIT_TYPE == 1) { 
 | 
            data.setMaxAbility(Constants.formatBigdecimal(data.getMaxAbility()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setHoursAbility(Constants.formatBigdecimal(data.getHoursAbility()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setCrrentRestNum(Constants.formatBigdecimal(data.getCrrentRestNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setCurrentPlanNum(Constants.formatBigdecimal(data.getCurrentPlanNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setCrrentOutNum(Constants.formatBigdecimal(data.getCrrentOutNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setCurrentOrderNum(Constants.formatBigdecimal(data.getCurrentOrderNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setNoNeedTransportOrderNum(Constants.formatBigdecimal(data.getNoNeedTransportOrderNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setNeedTransportOrderNum(Constants.formatBigdecimal(data.getNeedTransportOrderNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 1、当前订单里:截止目前未配载订单量; 
 | 
     * 2、当前任务量:截止目前已配载未出库订单量+无需配载的未出库任务量; 
 | 
     * 3、当前任务量和剩余任务量统计逻辑一致; 
 | 
     * @param data 
 | 
     * @param model 
 | 
     */ 
 | 
    private void dealOutOrderBiz(WholeProvinceBoardVO data, TmsOutboundCapabilityInfoResponse model,List<String> planCodes,List<String> todayCodes,  String todayDate ) { 
 | 
  
 | 
        /** 
 | 
         * 当前订单量:截至目前未配载的数据 
 | 
         */ 
 | 
        if(StringUtils.isBlank(model.getTransportCode()) 
 | 
                &&( StringUtils.equals("1",model.getDispatchType()) || StringUtils.equals("2",model.getDispatchType()))){ 
 | 
            data.setCurrentOrderNum(data.getCurrentOrderNum().add(Constants.formatBigdecimal(model.getNcTotality())));//当前订单量 
 | 
        } 
 | 
        /** 
 | 
         * 当前任务量(和剩余任务里):截至目前已配载未出库的订单 
 | 
         */ 
 | 
        if(StringUtils.isNotBlank(model.getTransportCode()) && StringUtils.isBlank(model.getOutDate())){ 
 | 
            data.setCurrentPlanNum(data.getCurrentPlanNum().add(Constants.formatBigdecimal(model.getNcTotality())));//当前任务量(累计) 
 | 
            data.setNeedTransportOrderNum(data.getNeedTransportOrderNum().add(Constants.formatBigdecimal(model.getNcTotality())));//同城剩余任务量(累计) 
 | 
            if(notInList(model.getTransportCode(),planCodes)){ 
 | 
                planCodes.add(model.getTransportCode()); 
 | 
            } 
 | 
        } 
 | 
        /** 
 | 
         *   同城单子(无需配载但是未完成) 
 | 
         */ 
 | 
        if(StringUtils.isBlank(model.getOutDate()) 
 | 
                && !StringUtils.equals("1",model.getDispatchType()) && !StringUtils.equals("2",model.getDispatchType())){ 
 | 
            data.setNoNeedTransportOrderNum(data.getNoNeedTransportOrderNum().add(Constants.formatBigdecimal(model.getNcTotality())));//同城剩余任务量(累计) 
 | 
            data.setCurrentPlanNum(data.getCurrentPlanNum().add(Constants.formatBigdecimal(model.getNcTotality())));//当前任务量(累计) 
 | 
        } 
 | 
        /** 
 | 
         * 今日出库量,出库时间为今天的 
 | 
         */ 
 | 
        if(StringUtils.isNotBlank(model.getOutDate()) && model.getOutDate().length()> 10){ 
 | 
            String tDate = model.getOutDate().substring(0,10); 
 | 
            if(tDate.equals(todayDate)){ 
 | 
                //如果是当日 
 | 
                data.setCrrentOutNum(data.getCrrentOutNum().add(Constants.formatBigdecimal(model.getNcTotality())));//今日出库量 
 | 
                if(StringUtils.isNotBlank(model.getTransportCode()) && notInList(model.getTransportCode(),todayCodes)){ 
 | 
                    todayCodes.add(model.getTransportCode()); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
    private boolean notInList(String transportCode, List<String> planCodes) { 
 | 
        for(String s :planCodes){ 
 | 
            if(StringUtils.equals(transportCode,s)){ 
 | 
                return  false; 
 | 
            } 
 | 
        } 
 | 
        return true; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 出库能力李永利 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public    TotalOutQtyNumVO totalOutQtyNum(int type,String code){ 
 | 
        TotalOutQtyNumVO  data = new TotalOutQtyNumVO(); 
 | 
        data.setCurrentInNum(new BigDecimal(0)); 
 | 
        data.setLastInNum(new BigDecimal(0)); 
 | 
        data.setCurrentProvinceNum(new BigDecimal(0)); 
 | 
        data.setCurrentOtherNum(new BigDecimal(0)); 
 | 
        data.setSameInNum(new BigDecimal(0)); 
 | 
  
 | 
        //---------省外---------------- 
 | 
        data.setCurrentOutNum(new BigDecimal(0)); 
 | 
        data.setLastOutNum(new BigDecimal(0)); 
 | 
        data.setSameOutNum(new BigDecimal(0)); 
 | 
  
 | 
        Date sameStart = DateUtil.getBeginDayOfMonth(-1); 
 | 
        Date sameEnd = DateUtil.getEndDayOfMonth(-1); 
 | 
        Date curStart = DateUtil.getBeginDayOfMonth(0); 
 | 
        Date curEnd = DateUtil.getEndDayOfMonth(0); 
 | 
        Date lastStart = DateUtil.getBeginDayOfLastMonth(); 
 | 
        Date lastEnd = DateUtil.getEndDayOfLastMonth(); 
 | 
        if(type ==1){ 
 | 
            //本周 
 | 
            sameStart= DateUtil.getBeginDayOfWeek(-1); 
 | 
            sameEnd= DateUtil.getEndDayOfWeek(-1); 
 | 
            curStart= DateUtil.getBeginDayOfWeek(0); 
 | 
            curEnd= DateUtil.getEndDayOfWeek(0); 
 | 
            lastStart = DateUtil.getBeginDayOfLastWeek(); 
 | 
            lastEnd= DateUtil.getEndDayOfLastWeek(); 
 | 
        }else if(type == 2){ 
 | 
            curStart= DateUtil.getBeginDayOfYear(0); 
 | 
            curEnd= DateUtil.getEndDayOfYear(0); 
 | 
            lastStart= DateUtil.getBeginDayOfYear(-1); 
 | 
            lastEnd= DateUtil.getEndDayOfYear(-1); 
 | 
            sameStart = null; 
 | 
            sameEnd =null; 
 | 
        } 
 | 
        TmsOutQtyAndVehicleQtyRequest param = new TmsOutQtyAndVehicleQtyRequest(); 
 | 
        if(StringUtils.isNotBlank(code)){ 
 | 
            param.setFacrotyCodeList(new ArrayList<>()); 
 | 
            param.getFacrotyCodeList().add(code); 
 | 
        } 
 | 
        if(type !=2){ 
 | 
            //本年的不需要查去年同周期 
 | 
            param.setDateEnd(DateUtil.getShortTime(sameEnd)); 
 | 
            param.setDateStart(DateUtil.getShortTime(sameStart)); 
 | 
            List<TmsOutQtyAndVehicleQtyResponse> listSame=  tmsService.getOutQtyAndVehicleQty(param);//去年同期 
 | 
            if(listSame!=null ){ 
 | 
                for(TmsOutQtyAndVehicleQtyResponse model : listSame){ 
 | 
                    model.setOutSideProvinceOutQty(Constants.formatBigdecimal(model.getOutSideProvinceOutT03Qty()).add(Constants.formatBigdecimal(model.getOutSideProvinceOutT01Qty())));//省外累计 
 | 
                    model.setInSideProvinceOutQty(Constants.formatBigdecimal(model.getInSideProvinceOutT03Qty()).add(Constants.formatBigdecimal(model.getInSideProvinceOutT01Qty())));//省内累计 
 | 
                    data.setSameOutNum(data.getSameOutNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutQty()))); 
 | 
                    data.setSameInNum(data.getSameInNum().add(Constants.formatBigdecimal(model.getInSideProvinceOutQty()))); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        param.setDateEnd(DateUtil.getShortTime(curEnd)); 
 | 
        param.setDateStart(DateUtil.getShortTime(curStart)); 
 | 
        List<TmsOutQtyAndVehicleQtyResponse> listCur =  tmsService.getOutQtyAndVehicleQty(param);//本周期 
 | 
        if(listCur!=null ){ 
 | 
            for(TmsOutQtyAndVehicleQtyResponse model : listCur){ 
 | 
                model.setOutSideProvinceOutQty(Constants.formatBigdecimal(model.getOutSideProvinceOutT03Qty()).add(Constants.formatBigdecimal(model.getOutSideProvinceOutT01Qty())));//省外累计 
 | 
                model.setInSideProvinceOutQty(Constants.formatBigdecimal(model.getInSideProvinceOutT03Qty()).add(Constants.formatBigdecimal(model.getInSideProvinceOutT01Qty())));//省内累计 
 | 
                data.setCurrentOutNum(data.getCurrentOutNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutQty()))); 
 | 
                data.setCurrentInNum(data.getCurrentInNum().add(Constants.formatBigdecimal(model.getInSideProvinceOutQty()))); 
 | 
                data.setTotalCarNum(data.getTotalCarNum()+Constants.formatIntegerNum(model.getVehicleQty()));//累计车次 
 | 
                data.setCurrentProvinceNum(data.getCurrentProvinceNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutT01Qty())) 
 | 
                        .add(Constants.formatBigdecimal(model.getInSideProvinceOutT01Qty())));//省内省外销售量 
 | 
                data.setCurrentOtherNum(data.getCurrentOtherNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutT03Qty())) 
 | 
                        .add(Constants.formatBigdecimal(model.getInSideProvinceOutT03Qty())));//省内省外其他出库量 
 | 
            } 
 | 
        } 
 | 
        param.setDateEnd(DateUtil.getShortTime(lastEnd)); 
 | 
        param.setDateStart(DateUtil.getShortTime(lastStart)); 
 | 
        List<TmsOutQtyAndVehicleQtyResponse> listLast =  tmsService.getOutQtyAndVehicleQty(param);//上周期 
 | 
        if(listCur!=null ){ 
 | 
            for(TmsOutQtyAndVehicleQtyResponse model : listLast){ 
 | 
                model.setOutSideProvinceOutQty(Constants.formatBigdecimal(model.getOutSideProvinceOutT03Qty()).add(Constants.formatBigdecimal(model.getOutSideProvinceOutT01Qty())));//省外累计 
 | 
                model.setInSideProvinceOutQty(Constants.formatBigdecimal(model.getInSideProvinceOutT03Qty()).add(Constants.formatBigdecimal(model.getInSideProvinceOutT01Qty())));//省内累计 
 | 
                data.setLastOutNum(data.getLastOutNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutQty()))); 
 | 
                data.setLastInNum(data.getLastInNum().add(Constants.formatBigdecimal(model.getInSideProvinceOutQty()))); 
 | 
            } 
 | 
        } 
 | 
        if(type == 2){//本年的 
 | 
            data.setSameOutNum(data.getLastOutNum()); 
 | 
            data.setSameInNum(data.getLastInNum()); 
 | 
        } 
 | 
  
 | 
        //处理单位成“箱”,一箱=5万支 
 | 
        if(Constants.UNIT_TYPE == 1) { 
 | 
            data.setCurrentInNum(Constants.formatBigdecimal(data.getCurrentInNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setCurrentOutNum(Constants.formatBigdecimal(data.getCurrentOutNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setCurrentOtherNum(Constants.formatBigdecimal(data.getCurrentOtherNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setCurrentProvinceNum(Constants.formatBigdecimal(data.getCurrentProvinceNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setLastInNum(Constants.formatBigdecimal(data.getLastInNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setLastOutNum(Constants.formatBigdecimal(data.getLastOutNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setSameInNum(Constants.formatBigdecimal(data.getSameInNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
            data.setSameOutNum(Constants.formatBigdecimal(data.getSameOutNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
        } 
 | 
        return data; 
 | 
    } 
 | 
    /** 
 | 
     * 出库能力李永利 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public    List<WholeProvinceMapVO> mapYearAndMonthOutList(String code){ 
 | 
        List<WholeProvinceMapVO> result = new ArrayList<>(); 
 | 
        TmsFacrotyCodeListRequest param = new TmsFacrotyCodeListRequest(); 
 | 
        if(StringUtils.isNotBlank(code)){ 
 | 
            param.setFacrotyCodeList(new ArrayList<>()); 
 | 
            param.getFacrotyCodeList().add(code); 
 | 
        } 
 | 
        List<TmsDistributionOfDeliveryLocResponse> response  = tmsService.getDistributionOfDeliveryLocations(param);//查询出库量 
 | 
        if(response!=null &&response.size()>0){ 
 | 
            for(TmsDistributionOfDeliveryLocResponse model : response){ 
 | 
                WholeProvinceMapVO t = getFromProvinceResultList(model ,result); 
 | 
                if(t == null){ 
 | 
                    t =new WholeProvinceMapVO(); 
 | 
                    t.setMonthNum( Constants.formatBigdecimal0Float(model.getMonthOutboundQuantity())); 
 | 
                    t.setYearNum( Constants.formatBigdecimal0Float(model.getYearOutboundQuantity())); 
 | 
  
 | 
                    if(Constants.UNIT_TYPE == 1) { 
 | 
                        //处理单位成“箱”,一箱=5万支 
 | 
                        t.setMonthNum(Constants.formatBigdecimal(t.getMonthNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
                        t.setYearNum(Constants.formatBigdecimal(t.getYearNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
                    } 
 | 
                    t.setProvinceCode(model.getToProvinceCode()); 
 | 
                    t.setProvinceName(model.getToProvinceName()); 
 | 
                    result.add(t); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    private WholeProvinceMapVO getFromProvinceResultList(TmsDistributionOfDeliveryLocResponse model, List<WholeProvinceMapVO> result) { 
 | 
        for(WholeProvinceMapVO t : result){ 
 | 
            if(StringUtils.equals(t.getProvinceCode(), model.getToProvinceCode())){ 
 | 
                t.setMonthNum(Constants.formatBigdecimal(t.getMonthNum()).add(Constants.formatBigdecimal0Float(model.getMonthOutboundQuantity()))); 
 | 
                t.setYearNum(Constants.formatBigdecimal(t.getYearNum()).add(Constants.formatBigdecimal0Float(model.getYearOutboundQuantity()))); 
 | 
                return   t; 
 | 
            } 
 | 
        } 
 | 
  
 | 
        return  null; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 出库能力李永利 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public     List<TmsFactoryParam> factoryList(){ 
 | 
        List<TmsFactoryParam> paramList = tmsFactoryParamMapper.selectList(new QueryWrapper<TmsFactoryParam>().lambda() 
 | 
                .eq(TmsFactoryParam::getIsdeleted,Constants.ZERO) 
 | 
                .orderByAsc(TmsFactoryParam::getSortnum)); 
 | 
        return paramList; 
 | 
    } 
 | 
    /** 
 | 
     * 获取未完成订单集合 
 | 
     * @return TmsBaseResponse 
 | 
     */ 
 | 
    @Override 
 | 
    public   TmsBasePageResponse<TmsOrderNoFinishListResponse>  orderNoFinishList(TmsOrderNoFinishListRequest param){ 
 | 
        TmsBasePageResponse<TmsOrderNoFinishListResponse> infoList =   tmsService.getNotFinishOrderList(param);//查询出库量 
 | 
     /*    if(infoList!=null && infoList.getRows()!=null){ 
 | 
            for(TmsOrderNoFinishListResponse model :infoList.getRows()){ 
 | 
                model.setStatusDesc(TMSContants.TopStatusLevel.getNameByKey(TMSContants.ChildStatusLevel.getParentIndexByStatus(model.getStatus()))); 
 | 
  
 | 
            } 
 | 
        }*/ 
 | 
        return infoList; 
 | 
    } 
 | 
    /** 
 | 
     * 近七日到货情况-改成近15日 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public  List<LastSevenDaysOrderVo> arriveGoodsList(String code){ 
 | 
        List<LastSevenDaysOrderVo> list = new ArrayList<>(); 
 | 
        TmsSevenArrivalDetailsRequest param = new TmsSevenArrivalDetailsRequest(); 
 | 
        if(StringUtils.isNotBlank(code)){ 
 | 
            param.setFacrotyCodeList(new ArrayList<>()); 
 | 
            param.getFacrotyCodeList().add(code);//查询指定厂区 
 | 
        } 
 | 
        Date date = new Date(); 
 | 
        Date startDate = DateUtil.addDaysToDate(date,-15); 
 | 
        //看板大屏近7日到货情况日期 0表示当天当前推7天,-1表示本月初1号-7号 
 | 
        String flag = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.SCREEN_SEVENT_ARRIVAL_STARTDATE).getCode(); 
 | 
        if(StringUtils.equals(flag,"-1")){ 
 | 
            startDate =DateUtil.getBeginDayOfMonth(0); 
 | 
            date = DateUtil.addDaysToDate(startDate,15); 
 | 
        } 
 | 
        param.setNcCreateDateFrom(DateUtil.getShortTime(startDate)); 
 | 
        param.setNcCreateDateThrough(DateUtil.getShortTime(date)); 
 | 
        List<TmsSevenArrivalStatusAndDetailsResponse> infoList =   tmsService.getSevenArrivalStatusAndDetails(param);//查询出库量 
 | 
        for (int i = 0; i < 15; i++) { 
 | 
            LastSevenDaysOrderVo model = new LastSevenDaysOrderVo(); 
 | 
            Date td = DateUtil.addDaysToDate(date,-i); 
 | 
            model.setDateStr(DateUtil.getShortTime(td)); 
 | 
            dealGoodsListFromResponse(model,infoList); 
 | 
            list.add(model); 
 | 
        } 
 | 
        return list; 
 | 
    } 
 | 
    private void dealGoodsListFromResponse(  LastSevenDaysOrderVo model, List<TmsSevenArrivalStatusAndDetailsResponse> list) { 
 | 
        model.setIngList(new ArrayList<>()); 
 | 
        model.setWaitList(new ArrayList<>()); 
 | 
        model.setDoneList(new ArrayList<>()); 
 | 
        if(list ==null || list.size()==0){ 
 | 
            return; 
 | 
        } 
 | 
        for(TmsSevenArrivalStatusAndDetailsResponse temp : list){ 
 | 
            if(StringUtils.equals(temp.getNcCreateDate(),model.getDateStr())){ 
 | 
                if(Constants.equalsInteger(temp.getStatus(),Constants.ZERO)){ 
 | 
                    model.getWaitList().add(temp); 
 | 
                }else if(Constants.equalsInteger(temp.getStatus(),Constants.ONE)){ 
 | 
                    model.getIngList().add(temp); 
 | 
                }else if(Constants.equalsInteger(temp.getStatus(),Constants.TWO)){ 
 | 
                    model.getDoneList().add(temp); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        model.setDoneNum(model.getDoneList().size()); 
 | 
        model.setIngNum(model.getIngList().size()); 
 | 
        model.setWaitNum(model.getWaitList().size()); 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 出库能力李永利 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public WholeProvinceZXTVO tranportAbilityUseRate(){ 
 | 
        WholeProvinceZXTVO result = new WholeProvinceZXTVO(); 
 | 
        result.setCurrentNum(new BigDecimal(0)); 
 | 
        result.setTotalNum(new BigDecimal(0)); 
 | 
        result.setZtNum(new BigDecimal(0)); 
 | 
        result.setUseRate(new BigDecimal(0)); 
 | 
        result.setDetailList(new ArrayList<>()); 
 | 
        List<TmsFactoryParam> paramList =factoryList(); 
 | 
        if(paramList!=null){ 
 | 
            List<TmsTotalAndReportVehicleQtyResponse> response = tmsService.getTotalAndReportVehicleQty();//查询出库量 
 | 
            for(TmsFactoryParam p : paramList){ 
 | 
                WholeProvinceZxtDetailVO t = new WholeProvinceZxtDetailVO(); 
 | 
                t.setFactoryName(p.getName()); 
 | 
                t.setCurrentNum(new BigDecimal(0)); 
 | 
                t.setZaituNum(new BigDecimal(0)); 
 | 
                t.setTotalNum(Constants.formatBigdecimal(p.getNum1()));//总库存量 
 | 
                getFromReportVehicleQtyList(p.getCode(),t,response);//处理提报运力和总运力数据 
 | 
                t.setUseRate(new BigDecimal(0)); 
 | 
                if((t.getTotalNum().subtract(t.getZaituNum())).compareTo(new BigDecimal(0)) !=0){ 
 | 
                    t.setUseRate(t.getCurrentNum().divide(t.getTotalNum().subtract(t.getZaituNum()),4,BigDecimal.ROUND_HALF_UP)); 
 | 
                } 
 | 
                /*if(Constants.UNIT_TYPE == 1) { 
 | 
                    //处理单位成“箱”,一箱=5万支 
 | 
                    t.setCurrentNum(Constants.formatBigdecimal(t.getCurrentNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
                    t.setTotalNum(Constants.formatBigdecimal(t.getTotalNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP)); 
 | 
                }*/ 
 | 
                result.getDetailList().add(t); 
 | 
                result.setCurrentNum(result.getCurrentNum().add(t.getCurrentNum())); 
 | 
                result.setTotalNum(result.getTotalNum().add(t.getTotalNum())); 
 | 
                result.setZtNum(result.getZtNum().add(t.getZaituNum())); 
 | 
            } 
 | 
        } 
 | 
        if((result.getTotalNum().subtract(result.getZtNum())).compareTo(new BigDecimal(0)) !=0){ 
 | 
            result.setUseRate(result.getCurrentNum().divide(result.getTotalNum().subtract(result.getZtNum()),4,BigDecimal.ROUND_HALF_UP)); 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
    private void getFromReportVehicleQtyList(String code,WholeProvinceZxtDetailVO t, List<TmsTotalAndReportVehicleQtyResponse> responses) { 
 | 
        BigDecimal current = new BigDecimal(0); 
 | 
        BigDecimal total= new BigDecimal(0); 
 | 
        BigDecimal ztTotal= new BigDecimal(0); 
 | 
        if(responses!=null && responses.size()>0){ 
 | 
            for(TmsTotalAndReportVehicleQtyResponse model: responses){ 
 | 
                if(StringUtils.equals(model.getFactoryCode(),code)){ 
 | 
                    ztTotal = ztTotal.add(Constants.formatBigdecimal(model.getInTransitQty())); 
 | 
                    total = total.add(Constants.formatBigdecimal(model.getTotalQty())); 
 | 
                    current = current.add(Constants.formatBigdecimal(model.getReportQty())); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        t.setCurrentNum(current); 
 | 
        t.setZaituNum(ztTotal); 
 | 
        t.setTotalNum(total); 
 | 
    } 
 | 
    private BigDecimal getCurrentOutQryByList(List<TmsOutQtyAndVehicleQtyResponse> response) { 
 | 
        BigDecimal r = new BigDecimal(0); 
 | 
        if(response!=null && response.size()>0){ 
 | 
            for(TmsOutQtyAndVehicleQtyResponse model: response){ 
 | 
//                model.setTotalOutQty(Constants.formatBigdecimal(model.getTotalOutT03Qty()).add(Constants.formatBigdecimal(model.getTotalOutT01Qty()))); 
 | 
                r = r.add(Constants.formatBigdecimal(model.getTotalOutQty())); 
 | 
            } 
 | 
        } 
 | 
        return r ; 
 | 
    } 
 | 
  
 | 
    /** 
 | 
     * 仓库资源利用率 
 | 
     * @return 
 | 
     */ 
 | 
    @Override 
 | 
    public WholeProvinceZXTVO inventoryUseRate(){ 
 | 
        WholeProvinceZXTVO result = new WholeProvinceZXTVO(); 
 | 
        result.setCurrentNum(new BigDecimal(0)); 
 | 
        result.setTotalNum(new BigDecimal(0)); 
 | 
        result.setUseRate(new BigDecimal(0)); 
 | 
        result.setDetailList(new ArrayList<>()); 
 | 
        List<TmsFactoryParam> paramList = factoryList(); 
 | 
        List<TmsInventoryListResponse> responses = tmsService.getRealTimeInventory(); 
 | 
        if(paramList!=null){ 
 | 
            for(TmsFactoryParam p : paramList){ 
 | 
                WholeProvinceZxtDetailVO t = new WholeProvinceZxtDetailVO(); 
 | 
                t.setFactoryName(p.getName()); 
 | 
                t.setCurrentNum(new BigDecimal(0)); 
 | 
                t.setTotalNum(Constants.formatBigdecimal(p.getNum1()));//总库存量 
 | 
                t.setCurrentNum(getFromInventoryList(p.getCode(),responses)); 
 | 
                t.setUseRate(new BigDecimal(0)); 
 | 
                if(t.getTotalNum().compareTo(new BigDecimal(0)) !=0){ 
 | 
                    t.setUseRate(t.getCurrentNum().divide(t.getTotalNum(),4,BigDecimal.ROUND_HALF_UP)); 
 | 
                } 
 | 
                if(Constants.UNIT_TYPE == 1){ 
 | 
                    //处理单位成“箱”,一箱=5万支 
 | 
                    t.setCurrentNum(Constants.formatBigdecimal(t.getCurrentNum()).divide(new BigDecimal(5),2,BigDecimal.ROUND_HALF_UP)); 
 | 
                    t.setTotalNum(Constants.formatBigdecimal(t.getTotalNum()).divide(new BigDecimal(5),2,BigDecimal.ROUND_HALF_UP)); 
 | 
                } 
 | 
                result.getDetailList().add(t); 
 | 
                result.setCurrentNum(result.getCurrentNum().add(t.getCurrentNum())); 
 | 
                result.setTotalNum(result.getTotalNum().add(t.getTotalNum())); 
 | 
            } 
 | 
        } 
 | 
        if(result.getTotalNum().compareTo(new BigDecimal(0)) !=0){ 
 | 
            result.setUseRate(result.getCurrentNum().divide(result.getTotalNum(),4,BigDecimal.ROUND_HALF_UP)); 
 | 
        } 
 | 
        return result; 
 | 
    } 
 | 
  
 | 
    private BigDecimal getFromInventoryList(String code, List<TmsInventoryListResponse> responses) { 
 | 
        BigDecimal r = new BigDecimal(0); 
 | 
        if(responses!=null && responses.size()>0){ 
 | 
            for(TmsInventoryListResponse model: responses){ 
 | 
                if(StringUtils.equals(model.getFactoryCode(),code)){ 
 | 
                   r = r.add(Constants.formatBigdecimal(model.getStockQty())); 
 | 
                } 
 | 
            } 
 | 
        } 
 | 
        return r ; 
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |