|  |  | 
 |  |  |     private PlatformGroupMapper platformGroupMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private TmsService tmsService; | 
 |  |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformDeviceMapper platformDeviceMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private CategoryMapper categoryMapper; | 
 |  |  |     @Value("${debug_model}") | 
 |  |  |     private Boolean isDebug; | 
 |  |  |     /** | 
 |  |  | 
 |  |  |                         .select(PlatformJob::getTotalNum) | 
 |  |  |                         .eq(PlatformJob::getIsdeleted,Constants.ZERO) | 
 |  |  |                         .eq(PlatformJob::getOrigin,Constants.ONE) | 
 |  |  |                         .in(PlatformJob::getType,new Integer[]{0,2,4}) | 
 |  |  |                         .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey() | 
 |  |  |                                 , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() | 
 |  |  |                                 , Constants.PlatformJobStatus.LEAVED.getKey()) | 
 |  |  | 
 |  |  |                 List<PlatformJob> jobs = platformJobMapper.selectList (new MPJLambdaWrapper<PlatformJob>() | 
 |  |  |                         .select(PlatformJob::getTotalNum) | 
 |  |  |                         .eq(PlatformJob::getIsdeleted,Constants.ZERO) | 
 |  |  |                                 .apply(" ( origin = 0 or origin is null)  ") | 
 |  |  |                         .eq(PlatformJob::getPlatformGroupId,platformGroupId) | 
 |  |  |                         .apply("to_days(done_date) = to_days(now())") | 
 |  |  |                         .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey() | 
 |  |  | 
 |  |  |             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())); | 
 |  |  |                     //2025年4月9日16:46:40 处理 包含托盘字眼的数据 不进行合计 | 
 |  |  |                     num = num.add (j.getItemName().indexOf("托盘")<Constants.ZERO?Constants.formatBigdecimal( j.getQty()):BigDecimal.ZERO); | 
 |  |  |                     GeneralVO d = new GeneralVO(); | 
 |  |  |                     d.setNum(Constants.formatBigdecimal(j.getQty())); | 
 |  |  |                     d.setName(j.getItemName()); | 
 |  |  | 
 |  |  |         }*/ | 
 |  |  |         return list; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     @Override | 
 |  |  |     public  WaningEventDataVO warningEventData(Integer type){ | 
 |  |  |         WaningEventDataVO lastResult = new WaningEventDataVO(); | 
 |  |  | 
 |  |  |         request.setPageSize(1000); | 
 |  |  |         request.setFiledOptions(new ArrayList<>()); | 
 |  |  |         request.setSorts(new ArrayList<>()); | 
 |  |  |         request.setFetchImg(true); | 
 |  |  |         RuleEventFiledOptionsRequest file = new RuleEventFiledOptionsRequest(); | 
 |  |  |         file.setFieldName("event_type"); | 
 |  |  |         file.setFieldValue("131588,131593");//安防告警和人员告警 | 
 |  |  |         //安防事件划分方式: | 
 |  |  |         //重点区域:重点人员-1644175361、区域入侵-1644175361、陌生人-1644171265、车辆违停-1644171265 | 
 |  |  |         //危险行为:人员倒地-1644171265、未带安全帽-422000002、抽烟-422000000、打电话-422000001、睡岗-422400001、离岗-422400000 | 
 |  |  |         file.setFieldValue("131588,131593,1644171265,422000002,422000000,422000001,422400001,422400000,1644175361,1644175361,1644171265,1644171265");//安防告警和人员告警 | 
 |  |  |         file.setType("in"); | 
 |  |  |         if(type == 1){ | 
 |  |  |             file.setFieldValue("131588");//安防告警 | 
 |  |  |             file.setFieldValue("131588,1644175361,1644175361,1644171265,1644171265");//安防告警 区域入侵 | 
 |  |  |         }else  if(type == 2){ | 
 |  |  |             file.setFieldValue("131593");//人员告警 | 
 |  |  |             file.setFieldValue("131593,1644171265,422000002,422000000,422000001,422400001,422400000");//人员告警 危险行为 | 
 |  |  |         } | 
 |  |  |         request.getFiledOptions().add(file); | 
 |  |  |  | 
 |  |  |         RuleEventFiledOptionsRequest fileLte = new RuleEventFiledOptionsRequest(); | 
 |  |  |         fileLte.setFieldName("happen_time"); | 
 |  |  |         fileLte.setFieldValue(DateUtil.formatDate(Utils.Date.getEnd(new Date()),"yyyy-MM-dd HH:mm:ss")); | 
 |  |  |         fileLte.setType("lte"); | 
 |  |  |         request.getFiledOptions().add(fileLte); | 
 |  |  |  | 
 |  |  |         RuleEventFiledOptionsRequest fileGte = new RuleEventFiledOptionsRequest(); | 
 |  |  |         fileGte.setFieldName("happen_time"); | 
 |  |  |         fileGte.setFieldValue(DateUtil.formatDate(Utils.Date.getStart(new Date()),"yyyy-MM-dd HH:mm:ss")); | 
 |  |  |         fileGte.setType("gte"); | 
 |  |  |         request.getFiledOptions().add(fileGte); | 
 |  |  |  | 
 |  |  |         RuleEventFiledOptionsRequest fileStatus = new RuleEventFiledOptionsRequest(); | 
 |  |  |         fileStatus.setFieldName("handle_status"); | 
 |  |  |         fileStatus.setFieldValue("99"); | 
 |  |  |         fileStatus.setType("neq"); | 
 |  |  |         request.getFiledOptions().add(fileStatus); | 
 |  |  |  | 
 |  |  |         SortRequest sort = new SortRequest(); | 
 |  |  |         sort.setSortField("happen_time"); | 
 |  |  |         sort.setSortType("desc"); | 
 |  |  | 
 |  |  |                     try { | 
 |  |  |                         if(DateUtil.getISO8601DateByStr(r.getHappen_time()).getTime() < Utils.Date.getStart(new Date()).getTime()){ | 
 |  |  |                             continue; | 
 |  |  |                         } | 
 |  |  |                         if(StringUtils.equals(r.getStatus(),"99")){ | 
 |  |  |                            continue; | 
 |  |  |                         } | 
 |  |  |                     }catch (Exception e){ | 
 |  |  |                     } | 
 |  |  | 
 |  |  |             if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){ | 
 |  |  |                 throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~"); | 
 |  |  |             } | 
 |  |  |             if(Objects.nonNull(response.getData().getList())){ | 
 |  |  |                 return data; | 
 |  |  |             } | 
 |  |  |             for(FindHomeAlarmInfoPageResponse r : response.getData().getList()){ | 
 |  |  |                 AlarmEventDataVO t = new AlarmEventDataVO(); | 
 |  |  |                 BeanUtils.copyProperties(r,t); | 
 |  |  | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 【消防管控】看板-实时监测数据 | 
 |  |  |      * 液压固定值:254001 | 
 |  |  |      * 水压固定值:253958 | 
 |  |  |      * @return | 
 |  |  |      * | 
 |  |  |      */ | 
 |  |  | 
 |  |  |         MinitorDataSearchRequest param = new MinitorDataSearchRequest(); | 
 |  |  |         param.setResourceTypeCodes(new String[]{}); | 
 |  |  |         param.setRegionIndexCode("root000000"); | 
 |  |  |         //60-液位 61-水压 | 
 |  |  |         param.setResourceTypeCodes("60,61".split(",")); | 
 |  |  |         param.setIncludeDown("1"); | 
 |  |  |         param.setUserId("admin"); | 
 |  |  | 
 |  |  |         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(); | 
 |  |  |         String pressureUnit = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.PRESSURE_LEVEL_UNIT).getCode(); | 
 |  |  |         String liquidUnit = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LIQUID_LEVEL_UNIT).getCode(); | 
 |  |  |         if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) | 
 |  |  |                 && response.getData()!=null ) { | 
 |  |  |             List<MonitorDataSearchResponse> r = response.getData().getList(); | 
 |  |  | 
 |  |  |                 for(MonitorDataSearchResponse model : r){ | 
 |  |  |                     MonitorDataVO m = new MonitorDataVO(); | 
 |  |  |                     m.setName(model.getName()); | 
 |  |  |                     m.setLevel(Constants.equalsInteger(model.getType(),60)?liquid:pressure); | 
 |  |  |                     m.setType(model.getType()); | 
 |  |  | //                    m.setLevel(Constants.equalsInteger(model.getType(),60)?liquid:pressure); | 
 |  |  |                     m.setLevel(getLevelDataByDeviceName(m,model.getName(),Constants.equalsInteger(model.getType(),60)?liquidUnit:pressureUnit)); | 
 |  |  |                     m.setDataList(new ArrayList<>()); | 
 |  |  |                     if(model.getValues()!=null){ | 
 |  |  |                         List<MonitorDataInfoVO> dataList = new ArrayList<>(); | 
 |  |  |                         for(MonitorDataValResponse v : model.getValues()){ | 
 |  |  |                             //液压固定值:254001 | 
 |  |  |                             //水压固定值:253958 | 
 |  |  |                             if(Constants.equalsInteger(model.getType(),60)){ | 
 |  |  |                                 if(v.getMonitorTypeCode().equals("254001")){ | 
 |  |  |                                     MonitorDataInfoVO vm = new MonitorDataInfoVO(); | 
 |  |  | 
 |  |  |                                     vm.setCateName(v.getMonitorSpecificName()); | 
 |  |  |                                     vm.setCateCode(v.getMonitorTypeKey()); | 
 |  |  |                                     vm.setTypeCode(v.getMonitorTypeCode()); | 
 |  |  |                                     vm.setTypeName(v.getMonitorTypeName()); | 
 |  |  |                                     dataList.add(vm); | 
 |  |  |                                 } | 
 |  |  |                             }else{ | 
 |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return  list; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private String getLevelDataByDeviceName(MonitorDataVO m,String name,String unit) { | 
 |  |  |  | 
 |  |  |         /** | 
 |  |  |          *   { | 
 |  |  |          *     "name":"液", | 
 |  |  |          *     "regionIndexCodes": [ | 
 |  |  |          *         "root000000" | 
 |  |  |          *     ], | 
 |  |  |          *     "isSubRegion": true, | 
 |  |  |          *     "resourceType": "fireSensor", | 
 |  |  |          *     "pageNo": 1, | 
 |  |  |          *     "pageSize": 20, | 
 |  |  |          *     "orderBy": "name", | 
 |  |  |          *     "orderType": "desc" | 
 |  |  |          *     } | 
 |  |  |          */ | 
 |  |  |         String r = ""; | 
 |  |  |  | 
 |  |  |         ResourcesByParamsRequest param = new ResourcesByParamsRequest(); | 
 |  |  |         param.setName(name); | 
 |  |  |         param.setIsSubRegion(Boolean.TRUE); | 
 |  |  |         param.setRegionIndexCodes(new String[]{"root000000"}); | 
 |  |  |         param.setResourceType("fireSensor"); | 
 |  |  |         param.setOrderType("desc"); | 
 |  |  |         param.setOrderBy("name"); | 
 |  |  |         param.setPageNo(1); | 
 |  |  |         param.setPageSize(20); | 
 |  |  |         BaseResponse<BaseListPageResponse<ResourcesByParamsResponse>> response = HKService.resourcesByParams(param); | 
 |  |  |         if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) | 
 |  |  |                 && response.getData()!=null ) { | 
 |  |  |             String min  = response.getData().getList().get(0).getFireproChannelMinValue(); | 
 |  |  |             String max  = response.getData().getList().get(0).getFireproChannelMaxvalue(); | 
 |  |  |             m.setMax(max); | 
 |  |  |             m.setMin(min); | 
 |  |  |             r  =StringUtils.defaultString(min,"-")+"~"+StringUtils.defaultString(max,"-") +unit; | 
 |  |  |         } | 
 |  |  |         return  r; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | 
 |  |  |                         .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())")); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         List<PlatformJob>  finishDataList = 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) | 
 |  |  |                         .eq(PlatformJob::getIsdeleted,Constants.ZERO) | 
 |  |  |                         .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()) | 
 |  |  |                         .apply(queryType==0,"to_days(done_date) >= to_days(now()) -7") | 
 |  |  |                         .apply(queryType==1,"year(done_date) = year(now()) and month(done_date) = month(now())") | 
 |  |  |                         .apply(queryType==2,"year(done_date) = year(now())")); | 
 |  |  |  | 
 |  |  |         for (Date date : dayList) { | 
 |  |  |             TransportMeasureVO data = new TransportMeasureVO(); | 
 |  |  |             data.setPlanDate(date); | 
 |  |  | 
 |  |  |                     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()))); | 
 |  |  |                         } | 
 |  |  | //                        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())){ | 
 |  |  |                             //完成数 | 
 |  |  | //                        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()))); | 
 |  |  | //                        } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             for (PlatformJob job :finishDataList) { | 
 |  |  |                 if(queryType == 2){ | 
 |  |  |                     if(DateUtil.formatDate(date,"yyyy-MM").equals(DateUtil.formatDate(job.getDoneDate(),"yyyy-MM"))){ | 
 |  |  |                             data.setFinishTaskNum( data.getFinishTaskNum().add(Constants.formatBigdecimal(job.getTotalNum()))); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 }else{ | 
 |  |  |                     if(DateUtil.formatDate(date,"yyyy-MM-dd").equals(DateUtil.formatDate(job.getDoneDate(),"yyyy-MM-dd"))){ | 
 |  |  |                             data.setFinishTaskNum( data.getFinishTaskNum().add(Constants.formatBigdecimal(job.getTotalNum()))); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  | 
 |  |  |                         .selectAll(PlatformJob.class) | 
 |  |  |                         .eq(PlatformJob::getIsdeleted,Constants.ZERO) | 
 |  |  |                         .eq(PlatformJob::getCarCodeFront,param.getCarCode()) | 
 |  |  |                         .in(PlatformJob::getStatus, | 
 |  |  |                         .notIn(PlatformJob::getStatus, | 
 |  |  |                                 Constants.PlatformJobStatus.DONE.getKey(), | 
 |  |  |                                 Constants.PlatformJobStatus.LEAVED.getKey(), | 
 |  |  |                                 Constants.PlatformJobStatus.AUTHED_LEAVE.getKey(), | 
 |  |  |                                 Constants.PlatformJobStatus.CALLED.getKey()) | 
 |  |  |                                 Constants.PlatformJobStatus.CANCEL.getKey() | 
 |  |  |                         ) | 
 |  |  |                         .orderByAsc(PlatformJob::getId) | 
 |  |  |                         .last("limit 1")); | 
 |  |  |  | 
 |  |  |         dealJobDetailAndContractBiz(job,data); | 
 |  |  | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 【消防管控】看板-告警信息集合 | 
 |  |  |      * | 
 |  |  |      * @param type 0/null  = 当天;1=当月;2=当年 | 
 |  |  |      * @return | 
 |  |  |      * | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public   AlarmDataVO alarmDataSumByCate(){ | 
 |  |  |         AlarmDataVO alarmDataVO = getAlertDataByStartEndTime(DateUtil.getPlusTime2(DateUtil.addDaysToDate(new Date(),-1)) | 
 |  |  |     public   AlarmDataVO alarmDataSumByCate(Integer type){ | 
 |  |  |         Date startDate = Utils.Date.getStart(new Date()); | 
 |  |  |         if(Objects.nonNull(type)){ | 
 |  |  |             if(Constants.equalsInteger(type,Constants.TWO)){ | 
 |  |  |                 startDate = Utils.Date.getStart(DateUtil.getFirstThisYearDate()); | 
 |  |  |             }else if(Constants.equalsInteger(type,Constants.ONE)){ | 
 |  |  |                 startDate = Utils.Date.getStart(DateUtil.getFirstThisMonthDate()); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         AlarmDataVO alarmDataVO = getAlertDataByStartEndTime(DateUtil.getPlusTime2(startDate) | 
 |  |  |                 ,(DateUtil.getPlusTime2(new Date()))); | 
 |  |  |         return  alarmDataVO; | 
 |  |  |     } | 
 |  |  | 
 |  |  |         Date lastMonth =  DateUtil.addMonthToDate(month,-1);//上月 | 
 |  |  |         Date year = Utils.Date.getStart(new Date());//今年 | 
 |  |  |         Date lastYear = DateUtil.addYearToDate(year,-1);//去年 | 
 |  |  |  | 
 |  |  |         log.error("1、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         List<PlatformJob>  monthNum = platformJobMapper.selectJoinList(PlatformJob.class, | 
 |  |  |                     new MPJLambdaWrapper<PlatformJob>() | 
 |  |  |                         .selectAs(PlatformJob::getId,PlatformJob::getId) | 
 |  |  |                             .selectAs(PlatformJob::getId,PlatformJob::getId) | 
 |  |  |                             .selectAs(PlatformJob::getTotalNum,PlatformJob::getTotalNum) | 
 |  |  |                             .selectAs(PlatformJob::getDoneDate,PlatformJob::getDoneDate) | 
 |  |  |                             .select(PlatformJob::getStatus,PlatformJob::getStatus) | 
 |  |  |                             .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()) | 
 |  |  | //                        .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(month)+"') and month(done_date) = month('"+DateUtil.getPlusTime2(month)+"') ")); | 
 |  |  |  | 
 |  |  |         log.error("2、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         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<=  now()  ")); | 
 |  |  |  | 
 |  |  |         log.error("3、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         List<PlatformJob>  monthLastNum = platformJobMapper.selectJoinList(PlatformJob.class, | 
 |  |  |                 new MPJLambdaWrapper<PlatformJob>() | 
 |  |  |                         .selectAs(PlatformJob::getId,PlatformJob::getId) | 
 |  |  | 
 |  |  |                         .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)+"'")); | 
 |  |  |  | 
 |  |  |         log.error("4、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         List<PlatformJob> yearLastNum = platformJobMapper.selectJoinList(PlatformJob.class, | 
 |  |  |                 new MPJLambdaWrapper<PlatformJob>() | 
 |  |  |                         .selectAs(PlatformJob::getId,PlatformJob::getId) | 
 |  |  | 
 |  |  |                         .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)+"'")); | 
 |  |  |                         .apply("year(done_date) = year('"+DateUtil.getPlusTime2(lastYear)+"')  and done_date<=  now()  ")); | 
 |  |  |  | 
 |  |  |         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.setMonthOutTimes(monthNum!=null?monthNum.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)||Constants.equalsInteger(i.getType(),Constants.THREE)).collect(Collectors.toList()).size():0); | 
 |  |  |         data.setYearOutTimes(yearNum!=null?yearNum.size():0); | 
 |  |  |  | 
 |  |  |         log.error("5、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         //==========今天之前未完成出入库任务 | 
 |  |  |         List<PlatformJob> beforeJobNum = platformJobMapper.selectJoinList(PlatformJob.class, | 
 |  |  |                 new MPJLambdaWrapper<PlatformJob>() | 
 |  |  | 
 |  |  |                         .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())")); | 
 |  |  |                         .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(), | 
 |  |  |                                 Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() | 
 |  |  |                                 ,Constants.PlatformJobStatus.CANCEL.getKey()) | 
 |  |  |                         .apply("   to_days(create_date) < to_days(now()) ") | 
 |  |  |         ); | 
 |  |  |  | 
 |  |  |         log.error("6、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         //==========今天出入库完成量 | 
 |  |  |         List<PlatformJob> currentDoneNum = platformJobMapper.selectJoinList(PlatformJob.class, | 
 |  |  |                 new MPJLambdaWrapper<PlatformJob>() | 
 |  |  | 
 |  |  |                         .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()) | 
 |  |  |                         .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey()) | 
 |  |  |                         .apply(" to_days(done_date) = to_days(now())")); | 
 |  |  |         //==========今天下发出入库任务---- | 
 |  |  |  | 
 |  |  |         log.error("7、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         //==========今天下发出入库任务 未完成的---- | 
 |  |  |         List<PlatformJob> currentNum = platformJobMapper.selectJoinList(PlatformJob.class, | 
 |  |  |                 new MPJLambdaWrapper<PlatformJob>() | 
 |  |  |                         .selectAs(PlatformJob::getId,PlatformJob::getId) | 
 |  |  | 
 |  |  |                         .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())")); | 
 |  |  |                         .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey()) | 
 |  |  |                         .apply(" to_days(create_date) = to_days(now()) and done_date is null   ")); | 
 |  |  |  | 
 |  |  |         log.error("8、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         BigDecimal beforeOutNum = (getSumTotalByList(beforeJobNum,0,null));//今天之前未完成出库任务 | 
 |  |  |         log.error("9、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         BigDecimal currentOutNum = (getSumTotalByList(currentNum,0,null));//今天下发出库任务 | 
 |  |  |         log.error("10、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         BigDecimal beforeInNum = (getSumTotalByList(beforeJobNum,1,null));//今天之前未完成入库任务 | 
 |  |  |         log.error("11、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         BigDecimal currentInNum = (getSumTotalByList(currentNum,1,null));//今天下发入库任务 | 
 |  |  |         data.setCurrentInNum(beforeInNum.add(currentInNum));//当前入库总任务成量 | 
 |  |  |         data.setCurrentOutNum(beforeOutNum.add(currentOutNum));//当前出库总任务成量 | 
 |  |  |         log.error("12、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         data.setCurrentInDoneNum(getSumTotalByList(currentDoneNum,1,1));//今日完成量 | 
 |  |  |         log.error("13、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         data.setCurrentOutDoneNum(getSumTotalByList(currentDoneNum,0,1));//今日完成量 | 
 |  |  |         log.error("14、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         data.setCurrentInNum(beforeInNum.add(data.getCurrentInDoneNum()).add(currentInNum));//当前入库总任务成量 | 
 |  |  |         log.error("15、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         data.setCurrentOutNum(beforeOutNum.add(data.getCurrentOutDoneNum()).add(currentOutNum));//当前出库总任务成量 | 
 |  |  |         log.error("16、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         data.setTodayOutRate(getDayTotalRata(data.getCurrentOutDoneNum(),DateUtil.getToday()));//当日出库效率 | 
 |  |  |         log.error("17、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         data.setTodayInRate(getDayTotalRata(data.getCurrentInDoneNum(),DateUtil.getToday()));//当日入库效率 | 
 |  |  |         log.error("18、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         //查询本月全部日志 | 
 |  |  |         List<PlatformLog> monthLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>().lambda() | 
 |  |  |                 .eq(PlatformLog::getIsdeleted,Constants.ZERO) | 
 |  |  |                 .and(i->i.isNotNull(PlatformLog::getParam1).or().isNotNull(PlatformLog::getParam2)) | 
 |  |  |                 .apply("year(CREATE_DATE) = year('"+DateUtil.getPlusTime2(month)+"') and month(CREATE_DATE) = month('"+DateUtil.getPlusTime2(month)+"') ") | 
 |  |  |         ); | 
 |  |  |  | 
 |  |  |         //------------今日出入库效率---------------- | 
 |  |  |         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));//当前入库总任务成量 | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         data.setMonthOutRate(getMonthRata(monthLogList,monthNum,Constants.ZERO));//本月出库效率 | 
 |  |  |         log.error("19、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         data.setMonthInRate(getMonthRata(monthLogList,monthNum,Constants.ONE));//本月入库效率 | 
 |  |  |         log.error("20、=====================>"+DateUtil.getCurrDateTime()); | 
 |  |  |         //------------今日出入库效率----------------  | 
 |  |  | //        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));//本月入库效率 | 
 |  |  |         } | 
 |  |  | //        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; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |         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; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private BigDecimal getSumTotalByList(List<PlatformJob> list,Integer type,Integer status) { | 
 |  |  |  | 
 |  |  |     private BigDecimal getMonthRata(List<PlatformLog> monthLogList,List<PlatformJob> list, Integer type) { | 
 |  |  |         BigDecimal r = new BigDecimal(0); | 
 |  |  |         if(list==null || list.size() == 0){ | 
 |  |  |             return r; | 
 |  |  |         } | 
 |  |  |         List<PlatformJob> jobList= 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))) { | 
 |  |  |                 //出库 | 
 |  |  |                 jobList.add(job); | 
 |  |  |             } | 
 |  |  |             if (type != null && type == 1 && (Constants.equalsInteger(job.getType(), Constants.ZERO) || Constants.equalsInteger(job.getType(), Constants.TWO) || Constants.equalsInteger(job.getType(), Constants.FOUR))) { | 
 |  |  |                 //入库 | 
 |  |  |                 jobList.add(job); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         if(CollectionUtils.isNotEmpty(jobList)){ | 
 |  |  |             //获取任务数据 | 
 |  |  |             List<String> jobDataList = jobList.stream().filter(i->Objects.nonNull(i.getDoneDate())) | 
 |  |  |                     .map(i->DateUtil.formatDate(i.getDoneDate(),"yyyy-MM-dd")).collect(Collectors.toList()); | 
 |  |  |             if(CollectionUtils.isNotEmpty(jobDataList)){ | 
 |  |  |                 for (String jobDate:jobDataList) { | 
 |  |  |                     //过滤当天的数据 | 
 |  |  |                     List<PlatformJob> platformJobList = list.stream(). | 
 |  |  |                             filter(i->jobDate.equals(DateUtil.formatDate(i.getDoneDate(),"yyyy-MM-dd"))).collect(Collectors.toList()); | 
 |  |  |                     if(CollectionUtils.isNotEmpty(platformJobList)){ | 
 |  |  |                         //获取今天的 | 
 |  |  |                         r = r.add(this.getDayTotalForMonthRata(monthLogList,getSumTotalByList(platformJobList,type,null),jobDate)); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 r = r.divide(new BigDecimal(Integer.toString(jobList.size())),2,BigDecimal.ROUND_HALF_UP); | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return r; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private BigDecimal getDayTotalForMonthRata(List<PlatformLog> allList ,BigDecimal totalAmount,String today) { | 
 |  |  |         BigDecimal r = new BigDecimal(0); | 
 |  |  |         //查询今日最早/最晚的作业数据 | 
 |  |  |         List<PlatformLog> platformLogList = allList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(today)).collect(Collectors.toList()); | 
 |  |  | //                platformLogMapper.selectList(new QueryWrapper<PlatformLog>() | 
 |  |  | //                .lambda() | 
 |  |  | //                .apply(" (  DATE_FORMAT( param1 ,'%Y-%m-%d' ) =  '"+today+"' or DATE_FORMAT( param2 ,'%Y-%m-%d' )  =  '"+today+"' ) ") | 
 |  |  | //        ); | 
 |  |  |         if(totalAmount.compareTo(BigDecimal.ZERO)==0||CollectionUtils.isEmpty(platformLogList)){ | 
 |  |  |             return BigDecimal.ZERO; | 
 |  |  |         } | 
 |  |  |         if(platformLogList!=null && platformLogList.size()>0){ | 
 |  |  |             return this.getWorkTime(totalAmount,platformLogList,today); | 
 |  |  |         } | 
 |  |  |         return r; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     private BigDecimal getDayTotalRata(BigDecimal totalAmount,String today) { | 
 |  |  |         BigDecimal r = new BigDecimal(0); | 
 |  |  |         //查询今日最早/最晚的作业数据 | 
 |  |  |         List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>() | 
 |  |  |                 .lambda() | 
 |  |  |                 .apply(" (  DATE_FORMAT( param1 ,'%Y-%m-%d' ) =  '"+today+"' or DATE_FORMAT( param2 ,'%Y-%m-%d' )  =  '"+today+"' ) ") | 
 |  |  |         ); | 
 |  |  |         if(totalAmount.compareTo(BigDecimal.ZERO)==0||CollectionUtils.isEmpty(platformLogList)){ | 
 |  |  |             return BigDecimal.ZERO; | 
 |  |  |         } | 
 |  |  |         if(platformLogList!=null && platformLogList.size()>0){ | 
 |  |  |             return this.getWorkTime(totalAmount,platformLogList,today); | 
 |  |  |         } | 
 |  |  |         return r; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  |      * 查询作业时长(小时) | 
 |  |  |      * @param totalAmount | 
 |  |  |      * @param platformLogList | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     public BigDecimal getWorkTime(BigDecimal totalAmount,List<PlatformLog> platformLogList,String today){ | 
 |  |  |         if(CollectionUtils.isEmpty(platformLogList)){ | 
 |  |  |             return BigDecimal.ZERO; | 
 |  |  |         } | 
 |  |  |         //获取开始时间 | 
 |  |  |         List<Long> startTimeList = platformLogList.stream().filter(i->Objects.nonNull(i.getParam1())) | 
 |  |  |                 .filter(i->Objects.nonNull(i.getParam1())&&i.getParam1().indexOf(today)>=0) | 
 |  |  |                 .map(i->DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",i.getParam1()).getTime()).collect(Collectors.toList()); | 
 |  |  |         Long startTime  = null ; | 
 |  |  |         if(CollectionUtils.isNotEmpty(startTimeList)){ | 
 |  |  |             startTime = Collections.min(startTimeList); | 
 |  |  |         } | 
 |  |  |         //获取结束时间 | 
 |  |  |         List<Long> endTimeList = platformLogList.stream() | 
 |  |  |                 .filter(i->Objects.nonNull(i.getParam2())&&i.getParam2().indexOf(today)>=0) | 
 |  |  |                 .map(i->DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",i.getParam2()).getTime()).collect(Collectors.toList()); | 
 |  |  |         Long endTime = null ; | 
 |  |  |         if(CollectionUtils.isNotEmpty(endTimeList)){ | 
 |  |  |             endTime = Collections.max(endTimeList); | 
 |  |  |         } | 
 |  |  |         if(Objects.isNull(startTime) | 
 |  |  |             || Objects.isNull(endTime) || (startTime>=endTime)){ | 
 |  |  |             return BigDecimal.ZERO; | 
 |  |  |         } | 
 |  |  |         return   totalAmount.divide(new BigDecimal(( endTime - startTime )+"").divide(new BigDecimal("3600000"),2,BigDecimal.ROUND_HALF_UP),2,BigDecimal.ROUND_HALF_UP) ; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     private BigDecimal  getSumTotalByList(List<PlatformJob> list,Integer type,Integer status) { | 
 |  |  |         BigDecimal r = new BigDecimal(0); | 
 |  |  |         if(list==null || list.size() == 0){ | 
 |  |  |             return r; | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public    YearDeviceDataVO yearFightingAdminDeviceData(){ | 
 |  |  |         YearDeviceDataVO data = new YearDeviceDataVO(); | 
 |  |  |  | 
 |  |  |         FireStatisticRequest param = new FireStatisticRequest(); | 
 |  |  |         param.setIndexCode("api_fire_statistic"); | 
 |  |  |         BaseResponse<FireStatisticResponse> response = HKService.fireStatistic(param); | 
 |  |  | 
 |  |  |             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); | 
 |  |  | 
 |  |  |             data.setMonthTotalNum(Constants.formatIntegerNum(response1.getData().getDeviceTotalNum())); | 
 |  |  |         } | 
 |  |  |         return data; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     /** | 
 |  |  | 
 |  |  |     public  FightingAdminCenterDataVO centerFightingAdminData(){ | 
 |  |  |         FightingAdminCenterDataVO data = new FightingAdminCenterDataVO(); | 
 |  |  |         List<DeviceNumByTypeVO> list = new ArrayList<>(); | 
 |  |  |         FireDevStatusTotalRequest param = new FireDevStatusTotalRequest(); | 
 |  |  |         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); | 
 |  |  | 
 |  |  |                 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())" ) ); | 
 |  |  |                 .apply(" DATE_FORMAT(create_date, '%Y-%m')  = DATE_FORMAT(now(), '%Y-%m')  " ) ); | 
 |  |  |         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())" ) ); | 
 |  |  | //                .in(HiddenDanger::getStatus,Constants.ONE,Constants.TWO ) | 
 |  |  |                 .eq(HiddenDanger::getStatus,Constants.ZERO ) | 
 |  |  |                 .apply(" DATE_FORMAT(create_date, '%Y-%m')  = DATE_FORMAT(now(), '%Y-%m')  " ) ); | 
 |  |  |         data.setDangerDealedNum(totalNum !=null?totalNum.intValue():0);//今日处理隐患数量 | 
 |  |  |         return  data; | 
 |  |  |     } | 
 |  |  | 
 |  |  |     @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())") | 
 |  |  |                 .apply(" now() >  STARTTIME and now() < ENDTIME") | 
 |  |  |                 .in(Visits::getStatus,Constants.VisitStatus.pass,Constants.VisitStatus.xfSuccess )));//待访问 | 
 |  |  |         result.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>() | 
 |  |  |         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.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>() | 
 |  |  |         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 )));//已签离 | 
 |  |  | 
 |  |  |                 result.getVisitRetentionDataList().add(t); | 
 |  |  |             }); | 
 |  |  |         } | 
 |  |  |         result.setRetentionNum(result.getVisitRetentionDataList().size()); | 
 |  |  |         return result; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  | 
 |  |  |                         .selectAll(Retention.class) | 
 |  |  |                         .selectAs(Company::getType,Retention::getCompanyType) | 
 |  |  |                         .leftJoin(Company.class,Company::getId,Retention::getCompanyId) | 
 |  |  |                         .eq(Retention::getIsdeleted,Constants.ZERO) | 
 |  |  |         ); | 
 |  |  |  | 
 |  |  |         //今日在园人数 | 
 |  |  | 
 |  |  |         ); | 
 |  |  |         //在园长期相关方人数 | 
 |  |  |         data.setRelatedTotal( | 
 |  |  |                 (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) && Constants.equalsInteger(i.getCompanyType(),Constants.ZERO)).count() | 
 |  |  |                 (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FOUR) ).count() | 
 |  |  |         ); | 
 |  |  |         //在园内部员工人数 | 
 |  |  |         data.setInternalTotal( | 
 |  |  |                 (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) && Constants.equalsInteger(i.getCompanyType(),Constants.ONE)).count() | 
 |  |  |                 (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) ).count() | 
 |  |  |         ); | 
 |  |  |         //在园访客数量 | 
 |  |  |         data.setVisitTotal( | 
 |  |  | 
 |  |  |         data.setInParkCarTotal( | 
 |  |  |                 (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).count() | 
 |  |  |         ); | 
 |  |  |         //在园相关方车辆 | 
 |  |  |         //2025年8月4日09:24:23 更换数据源 不从海康取 | 
 |  |  |         data.setFreeParkingLot(data.getParkingLotTotal()<data.getInParkCarTotal()?Constants.ZERO:data.getParkingLotTotal() - data.getInParkCarTotal()); | 
 |  |  |         //当前在园货车司机总数 | 
 |  |  |         data.setInParkCarUserTotal( | 
 |  |  |                 (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FIVE)).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() | 
 |  |  |                         &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.fkCar)).count() | 
 |  |  |         ); | 
 |  |  |         //自由物流车数量 | 
 |  |  |         data.setVisitCarTotal( | 
 |  |  |                 (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE) | 
 |  |  |                         &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.selfTruck)).count() | 
 |  |  |                         &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.atwlzyCar)).count() | 
 |  |  |         ); | 
 |  |  |         //市公司卸货车数量 | 
 |  |  |         data.setInternalJobCarTotal( | 
 |  |  |                 (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE) | 
 |  |  |                         &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.cityComTruck)).count() | 
 |  |  |                         &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.sgsxhCar)).count() | 
 |  |  |         ); | 
 |  |  |         //外协车数量 | 
 |  |  |         data.setRelatedJobCarTotal( | 
 |  |  |                 (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE) | 
 |  |  |                         &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.outTruck)).count() | 
 |  |  |                         &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.wxysCar)).count() | 
 |  |  |         ); | 
 |  |  |         data.setVideoPluginUrl(getVideoUrl()); | 
 |  |  |  | 
 |  |  |         data.setOutHyLotTotal(Integer.valueOf(systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.OUT_HY_LOT_TOTAL).getCode())); | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         data.setInParkCarList(this.getInParkCars(data)); | 
 |  |  |  | 
 |  |  |         return data; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     public List<Map<String,Object>> getInParkCars(SecurityBoardVO securityBoardVO){ | 
 |  |  |         List<Map<String,Object>> mapList = categoryMapper.selectJoinMaps(new MPJLambdaWrapper<Category>() | 
 |  |  |                 .select(Category::getName) | 
 |  |  |                 .select(" ( select count(1) from retention r where r.isdeleted = 0 and  r.CATEGORY_PARENT_ID = t.id and r.TYPE = 3   ) as total ") | 
 |  |  |                 .eq(Category::getType,Constants.ONE) | 
 |  |  |                 .eq(Category::getIsdeleted,Constants.ZERO) | 
 |  |  |                 .isNull(Category::getParentId) | 
 |  |  |                 .groupBy(Category::getName) | 
 |  |  |  | 
 |  |  |         ); | 
 |  |  |         if(CollectionUtils.isEmpty(mapList)){ | 
 |  |  |             mapList = new ArrayList<>(); | 
 |  |  |         } | 
 |  |  |         Map<String,Object> map = new HashMap<>(); | 
 |  |  |         map.put("name","未知车辆"); | 
 |  |  |         map.put("total", retentionMapper.selectCount( | 
 |  |  |                 new MPJLambdaWrapper<Retention>() | 
 |  |  |                         .eq(Retention::getIsdeleted,Constants.ZERO) | 
 |  |  |                         .isNull(Retention::getCategoryId) | 
 |  |  |                         .eq(Retention::getCarType,Constants.SIX) | 
 |  |  |                     ) | 
 |  |  |         ); | 
 |  |  |         mapList.add(map); | 
 |  |  |         return mapList; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     private String getVideoUrl() { | 
 |  |  |         return  systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()+"plugin/VideoWebPlugin.exe"; | 
 |  |  | 
 |  |  |                     .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 ) | 
 |  |  |                     .orderByAsc(PlatformJob::getSortnum ) | 
 |  |  |             ); | 
 |  |  |             List<PlatformDevice> platformDevices = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda().eq(PlatformDevice::getType,Constants.ONE) | 
 |  |  |                     .eq(PlatformDevice::getIsdeleted,Constants.ZERO).isNotNull(PlatformDevice::getDeviceId)); | 
 |  |  |  | 
 |  |  |             String videoUrl = getVideoUrl(); | 
 |  |  |             //月台状态:0=作业中;1=空闲中;2=作业超时;3=叫号 | 
 |  |  |             for(Platform model : platformList){ | 
 |  |  |                 PlatformWorkDataVO platformDurationVO = new PlatformWorkDataVO(); | 
 |  |  | 
 |  |  |                 platformDurationVO.setPlatformId(model.getId()); | 
 |  |  |                 platformDurationVO.setPlatformCode(model.getCode()); | 
 |  |  |                 platformDurationVO.setPlatformSort(model.getSortnum()); | 
 |  |  |                 if(CollectionUtils.isNotEmpty(platformDevices)){ | 
 |  |  |                     List<PlatformDevice> deviceList = platformDevices.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),model.getId())).collect(Collectors.toList()); | 
 |  |  |                     if (CollectionUtils.isNotEmpty(deviceList)) { | 
 |  |  |                         platformDurationVO.setDeviceId(deviceList.get(Constants.ZERO).getDeviceId()); | 
 |  |  |                         platformDurationVO.setVideoPluginUrl(videoUrl); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |                 PlatformJob job = getJobFromListById(model.getId(),jobList); | 
 |  |  |                 if(job != null){ | 
 |  |  |                     if(Constants.equalsInteger(job.getType(),Constants.ONE) || Constants.equalsInteger(job.getType(),Constants.THREE)){ | 
 |  |  | 
 |  |  |                     }else{ | 
 |  |  |                         platformDurationVO.setWorkType(Constants.ZERO);//如果是卸货 | 
 |  |  |                     } | 
 |  |  |                     Integer workMinute = Constants.formatBigdecimal(job.getWorkNum()).multiply(new BigDecimal(60)).divide(model.getWorkRate(),0,BigDecimal.ROUND_HALF_UP).intValue(); | 
 |  |  |                     Date overDate = DateUtil.getXMinuteAfterDate(job.getNewStartDate(),workMinute + model.getWorkTimeoutAlarmTime());//预计完成时间 | 
 |  |  |                     platformDurationVO.setFinishTimeStr(DateUtil.DateToStr(overDate,"HH:mm")); | 
 |  |  |                     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());//车牌号 | 
 |  |  | 
 |  |  |                     }else{ | 
 |  |  |                         platformDurationVO.setStatus(Constants.ZERO); //作业中 | 
 |  |  |                         platformDurationVO.setWorkTime(PlatformJobServiceImpl.getWorkTime(job,platformLogMapper));//已工作时间 | 
 |  |  |                         if(overDate.getTime() < System.currentTimeMillis() ){ | 
 |  |  |                         if(overDate!=null && overDate.getTime() < System.currentTimeMillis() ){ | 
 |  |  |                             model.setStatus(Constants.TWO); //作业已超时 | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  | 
 |  |  |         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())") | 
 |  |  |                 .apply("to_days(t.done_date) = to_days(now())") | 
 |  |  |                 .eq(Platform::getIsdeleted, Constants.ZERO) | 
 |  |  |                 .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey() | 
 |  |  |                         , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() | 
 |  |  | 
 |  |  |         } | 
 |  |  |         int curtotalNum = 0; | 
 |  |  |         Date today =  Utils.Date.getStart(new Date()); | 
 |  |  |         long curTime=0, lastTime=0; | 
 |  |  |         long curTime=0, lastTime=0 ; | 
 |  |  |         for (int i = 0; i < 8; i++) { | 
 |  |  |             lastTime = curTime;//上次的时间 | 
 |  |  |             int curHour = 8+(i*2); | 
 |  |  | 
 |  |  |                 curtotalNum += Constants.formatIntegerNum(workEfficiencyVO.getWorkNum()) ; | 
 |  |  |             } | 
 |  |  |             workEfficiencyVO.setTotalWorkNum(curtotalNum);//累计值 | 
 |  |  |             if(System.currentTimeMillis() < curTime){ | 
 |  |  |             if((System.currentTimeMillis() + 2*60*60*1000) < curTime ){ | 
 |  |  |                 workEfficiencyVO.setTotalWorkNum(0); | 
 |  |  |             } | 
 |  |  |             workEfficiencyVOList.add(workEfficiencyVO); | 
 |  |  | 
 |  |  |         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 ) | 
 |  |  |                 .groupBy(PlatformJob::getStatus) | 
 |  |  |         ); | 
 |  |  |         if(jobList!=null){ | 
 |  |  |  | 
 |  |  |         if(jobList!=null){ | 
 |  |  |             //-------------TODO----------【看板】爱确认需求-------------- | 
 |  |  |             //     * 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 已过号 12已取消 | 
 |  |  |             for(PlatformJob model : jobList){ | 
 |  |  | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |       }*/ | 
 |  |  |         //预约数 | 
 |  |  |         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.setVideoPluginUrl(getVideoUrl()); | 
 |  |  |             String indexCodes = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_CHANGNEI_SCREEN_INDEXCODES).getCode(); | 
 |  |  |             if(StringUtils.isNotBlank(indexCodes)){ | 
 |  |  |                 data.setVideoIndexCodes(indexCodes.split(",")); | 
 |  |  |             } | 
 |  |  |         //已作业数 | 
 |  |  |         data.setWorkedNum(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>() | 
 |  |  |                 .eq(PlatformJob::getIsdeleted,Constants.ZERO) | 
 |  |  |                 .and(w-> w.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WORKING.getKey()) | 
 |  |  |                         .or().in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey() | 
 |  |  |                                 ,Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() | 
 |  |  |                                 ,Constants.PlatformJobStatus.LEAVED.getKey()).apply("to_days(done_date) = to_days(now())") | 
 |  |  |                         .or().eq(PlatformJob::getStatus,Constants.PlatformJobStatus.EXCEPTION.getKey()).apply("to_days(done_date) = to_days(now())") | 
 |  |  |                         .or().eq(PlatformJob::getStatus,Constants.PlatformJobStatus.TRANSFERING.getKey()).apply("to_days(trans_platform_date) = to_days(now())") | 
 |  |  |                 ) | 
 |  |  | //                .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; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public  WholeProvinceBoardVO centerProvinceData(String  factoryCode){ | 
 |  |  |         WholeProvinceBoardVO data = initWholeProvinceBoardVOData(factoryCode); | 
 |  |  |       /* 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; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |     @Override | 
 |  |  |     public  WholeProvinceBoardVO centerProvinceDataNew(String  factoryCode){ | 
 |  |  |         WholeProvinceBoardVO data = initWholeProvinceBoardVOData(factoryCode); | 
 |  |  |  | 
 |  |  |         initOutboundCapabilityNew(data,factoryCode); | 
 |  |  |         return  data; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private WholeProvinceBoardVO initWholeProvinceBoardVOData(String factoryCode) { | 
 |  |  |         WholeProvinceBoardVO data = new WholeProvinceBoardVO(); | 
 |  |  |         data.setMaxAbility(new BigDecimal(0)); | 
 |  |  |         data.setHoursAbility(new BigDecimal(0)); | 
 |  |  | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |       /*  Date date = new Date(); | 
 |  |  |         TmsOutQtyAndVehicleQtyRequest param = new TmsOutQtyAndVehicleQtyRequest(); | 
 |  |  |         param.setDateEnd(DateUtil.getShortTime(date)); | 
 |  |  |         param.setDateStart(DateUtil.getShortTime(date)); | 
 |  |  |         return  data; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private void initOutboundCapabilityNew(WholeProvinceBoardVO data, String code) { | 
 |  |  |         TmsFacrotyCodeListRequest param = new TmsFacrotyCodeListRequest(); | 
 |  |  |         if(StringUtils.isNotBlank(code)){ | 
 |  |  |             param.setFacrotyCodeList(new ArrayList<>()); | 
 |  |  |             param.getFacrotyCodeList().add(code);//查询指定厂区 | 
 |  |  |             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; | 
 |  |  |         TmsGetOutCapabilityResponse result=  tmsService.getOutCapacity(param); | 
 |  |  |         if(result !=null){ | 
 |  |  |             data.setCrrentOutNum(Constants.formatBigdecimal(result.getCurrentOutNum())  );//今日出库量 | 
 |  |  |             data.setNeedTransportOrderNum(Constants.formatBigdecimal(result.getCurrentTransportNum()));//当前任务量-已配载未出库 | 
 |  |  |             data.setNoNeedTransportOrderNum(Constants.formatBigdecimal(result.getCurrentNotTransportNum())  );//当前任务量-无需调度 | 
 |  |  |             data.setCrrentRestNum(Constants.formatBigdecimal(result.getCurrentTransportNum()));//剩余任务量-已配载未出库 | 
 |  |  |             data.setCurrentOrderNum(Constants.formatBigdecimal(result.getCurrentOrderNum())  );//当前订单量 | 
 |  |  |             data.setCurrentPlanCarNum(Constants.formatBigdecimal(result.getCurrentTransportVehicleNum()).intValue() );//当前任务车次 | 
 |  |  |             data.setCrrentRestCarNum(Constants.formatBigdecimal(result.getCurrentTransportVehicleNum()).intValue() );//剩余任务车次量 | 
 |  |  |             data.setCrrentOutCarNum(Constants.formatBigdecimal(result.getCurrentOutVehicleNum()).intValue());//今日出库车次 | 
 |  |  |  | 
 |  |  |             //当前任务量和剩余任务量,为(无需配载+需要配载的任务量之和) | 
 |  |  |             data.setCurrentPlanNum(data.getNeedTransportOrderNum().add(data.getNoNeedTransportOrderNum()));//当前任务量 | 
 |  |  |             data.setCrrentRestNum(data.getCurrentPlanNum());//当前任务量 | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         //处理单位成“箱”,一箱=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)); | 
 |  |  |         } | 
 |  |  |     } | 
 |  |  |     private void initOutboundCapability(WholeProvinceBoardVO data, String code) { | 
 |  |  |         TmsFacrotyCodeListRequest param = new TmsFacrotyCodeListRequest(); | 
 |  |  | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private boolean notInList(String transportCode, List<String> planCodes) { | 
 |  |  | 
 |  |  |                 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(model.getOutSideProvinceOutQty()).add(model.getInSideProvinceOutT01Qty()));//省内省外销售量 | 
 |  |  |                 data.setCurrentOtherNum(data.getCurrentOtherNum().add(model.getOutSideProvinceOutT03Qty()).add(model.getInSideProvinceOutT03Qty()));//省内省外其他出库量 | 
 |  |  |                 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)); | 
 |  |  | 
 |  |  |                     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); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |             if(Constants.UNIT_TYPE == 1) { | 
 |  |  |              for(WholeProvinceMapVO t : result){ | 
 |  |  |                     //处理单位成“箱”,一箱=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)); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  | 
 |  |  |         return infoList; | 
 |  |  |     } | 
 |  |  |     /** | 
 |  |  |      * 近七日到货情况 | 
 |  |  |      * 近七日到货情况-改成近15日 | 
 |  |  |      * @return | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  | 
 |  |  |             param.getFacrotyCodeList().add(code);//查询指定厂区 | 
 |  |  |         } | 
 |  |  |         Date date = new Date(); | 
 |  |  |         Date startDate = DateUtil.addDaysToDate(date,-7); | 
 |  |  |         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,7); | 
 |  |  |             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 < 7; i++) { | 
 |  |  |         for (int i = 0; i < 15; i++) { | 
 |  |  |             LastSevenDaysOrderVo model = new LastSevenDaysOrderVo(); | 
 |  |  |             Date td = DateUtil.addDaysToDate(date,-i); | 
 |  |  |             model.setDateStr(DateUtil.getShortTime(td)); | 
 |  |  | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |         return r ; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  |