|  |  | 
 |  |  | 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.core.model.PageData; | 
 |  |  | import com.doumee.core.model.PageWrap; | 
 |  |  | 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.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.impl.VisitsServiceImpl; | 
 |  |  | 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; | 
 |  |  | 
 |  |  |     @Autowired | 
 |  |  |     private SystemDictDataBiz systemDictDataBiz; | 
 |  |  |     @Autowired | 
 |  |  |     private TmsFactoryParamMapper tmsFactoryParamMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformWarnEventJoinMapper platformWarnEventJoinMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformJobMapper platformJobMapper; | 
 |  |  | 
 |  |  |     private RetentionMapper retentionMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private PlatformGroupMapper platformGroupMapper; | 
 |  |  |     @Autowired | 
 |  |  |     private TmsService tmsService; | 
 |  |  |  | 
 |  |  |     @Value("${debug_model}") | 
 |  |  |     private Boolean isDebug; | 
 |  |  |     /** | 
 |  |  |      * 获取区域树形结构数据 | 
 |  |  |      * @return | 
 |  |  | 
 |  |  |                         .apply("to_days(done_date) = to_days(now())") ); | 
 |  |  |                 if(jobs!=null){ | 
 |  |  |                     for(PlatformJob j :jobs){ | 
 |  |  |                         num =num.add(Constants.formatBigdecimal(j.getTotalNum())); | 
 |  |  |                         if(Objects.nonNull(j)&&Objects.nonNull(j.getTotalNum())){ | 
 |  |  |                             num =num.add(Constants.formatBigdecimal(j.getTotalNum())); | 
 |  |  |                         } | 
 |  |  |  | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             }else{ | 
 |  |  | 
 |  |  |                                 , Constants.PlatformJobStatus.LEAVED.getKey()) ); | 
 |  |  |                 if(jobs!=null){ | 
 |  |  |                     for(PlatformJob j :jobs){ | 
 |  |  |                         num = num.add(Constants.formatBigdecimal(j.getTotalNum())); | 
 |  |  |                         if(Objects.nonNull(j)&&Objects.nonNull(j.getTotalNum())){ | 
 |  |  |                             num = num.add(Constants.formatBigdecimal(j.getTotalNum())); | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  | 
 |  |  |         List<WaningEventDataListVO> list = new ArrayList<>(); | 
 |  |  |         RuleEventSearchRequest request = new RuleEventSearchRequest(); | 
 |  |  |         request.setPageNo(1); | 
 |  |  |         request.setPageSize(10); | 
 |  |  |         request.setPageSize(1000); | 
 |  |  |         request.setFiledOptions(new ArrayList<>()); | 
 |  |  |         request.setSorts(new ArrayList<>()); | 
 |  |  |         RuleEventFiledOptionsRequest file = new RuleEventFiledOptionsRequest(); | 
 |  |  | 
 |  |  |         if(type == 1){ | 
 |  |  |             file.setFieldValue("131588");//安防告警 | 
 |  |  |         }else  if(type == 2){ | 
 |  |  |  | 
 |  |  |             file.setFieldValue("131593");//人员告警 | 
 |  |  |         } | 
 |  |  |         request.getFiledOptions().add(file); | 
 |  |  | 
 |  |  |         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(); | 
 |  |  |             lastResult.setTotal(result.getData().getTotal()); | 
 |  |  |             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.setCreateDate(DateUtil.getPlusTime(DateUtil.getISO8601DateByStr(r.getHappen_time()))); | 
 |  |  | //                data.setContent(r.get); | 
 |  |  |                     list.add(data); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |         lastResult.setTotal(total); | 
 |  |  |         lastResult.setList(list); | 
 |  |  |         return lastResult; | 
 |  |  |     } | 
 |  |  | 
 |  |  |         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; | 
 |  |  |     } | 
 |  |  | 
 |  |  |     public    List<AlarmEventDataVO> fightingAdminAlertList(){ | 
 |  |  |         List<AlarmEventDataVO> data = new ArrayList<>(); | 
 |  |  |  | 
 |  |  |         //查询24小时内的 | 
 |  |  |         List<FindHomeAlarmInfoPageResponse> allList = new ArrayList<>(); | 
 |  |  |         boolean hasNext = true; | 
 |  |  |         int curTotal = 0; | 
 |  |  |         int curPage = 1; | 
 |  |  |         FindHomeAlarmInfoPageRequest param = new FindHomeAlarmInfoPageRequest(); | 
 |  |  |         param.setHour(24); | 
 |  |  |         param.setPage(1); | 
 |  |  |         param.setUserId("admin"); | 
 |  |  |         while (hasNext){ | 
 |  |  |             //分页遍历循环查询所有门禁设备数据 | 
 |  |  |             param.setPage(curPage); | 
 |  |  | //        param.setRegionIndexCodes("root000000"); | 
 |  |  |         param.setAlarmStartTime(DateUtil.getPlusTime2(DateUtil.addDaysToDate(new Date(),-1))); | 
 |  |  |         param.setAlarmEndTime(DateUtil.getPlusTime2(new Date())); | 
 |  |  |         param.setPageSize(20); | 
 |  |  |         BaseResponse<BaseListPageResponse<FindHomeAlarmInfoPageResponse>> response = HKService.findHomeAlarmInfoPage(param); | 
 |  |  |         if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) | 
 |  |  |                 && response.getData()!=null | 
 |  |  |                 &&response.getData().getList()!=null) { | 
 |  |  |             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); | 
 |  |  |                 data.add(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; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  | 
 |  |  |         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(); | 
 |  |  | 
 |  |  |                 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()){ | 
 |  |  |                             MonitorDataInfoVO vm = new MonitorDataInfoVO(); | 
 |  |  |                             vm.setValue(v.getMonitorValue()); | 
 |  |  |                             vm.setCateName(v.getMonitorSpecificName()); | 
 |  |  |                             vm.setCateCode(v.getMonitorTypeKey()); | 
 |  |  |                             vm.setTypeCode(v.getMonitorTypeCode()); | 
 |  |  |                             vm.setTypeName(v.getMonitorTypeName()); | 
 |  |  |                             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); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  | 
 |  |  |                         .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") | 
 |  |  | 
 |  |  |                                 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>() | 
 |  |  | 
 |  |  |                 if(detailList!=null){ | 
 |  |  |                     for(PlatformWmsDetail d : detailList){ | 
 |  |  |                         if(isExistIocode(d.getIocode(),data.getContractList())){ | 
 |  |  |                                 continue; | 
 |  |  |                             continue; | 
 |  |  |                         } | 
 |  |  |                         tt = new CarsContractVO(); | 
 |  |  |                         tt.setIoCode(d.getIocode()); | 
 |  |  | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         return data; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private List<PlatformWmsDetail> getDetailListByCode(String iocode, List<PlatformWmsDetail> detailList,CarsContractVO tt) { | 
 |  |  | 
 |  |  |     @Override | 
 |  |  |     public  PlatformJobRunBoardNewVO platformJobCenterData(){ | 
 |  |  |         PlatformJobRunBoardNewVO data = new PlatformJobRunBoardNewVO(); | 
 |  |  |         Random random = new Random(); | 
 |  |  |  | 
 |  |  |         data.setMonthOutTimes(random.nextInt(1000)); | 
 |  |  |         data.setYearOutTimes(random.nextInt(1000) * 11); | 
 |  |  |  | 
 |  |  |         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::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::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::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) | 
 |  |  |                         // .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())")); | 
 |  |  | 
 |  |  |         BigDecimal currentInNum = (getSumTotalByList(currentNum,1,null));//今天下发入库任务 | 
 |  |  |         data.setCurrentInNum(beforeInNum.add(currentInNum));//当前入库总任务成量 | 
 |  |  |         data.setCurrentOutNum(beforeOutNum.add(currentOutNum));//当前出库总任务成量 | 
 |  |  |         data.setCurrentInDoneNum(getSumTotalByList(currentDoneNum,0,1));//今日完成量 | 
 |  |  |         data.setCurrentOutDoneNum(getSumTotalByList(currentDoneNum,1,1));//今日完成量 | 
 |  |  |         data.setCurrentInDoneNum(getSumTotalByList(currentDoneNum,1,1));//今日完成量 | 
 |  |  |         data.setCurrentOutDoneNum(getSumTotalByList(currentDoneNum,0,1));//今日完成量 | 
 |  |  |  | 
 |  |  |         //------------今日出入库效率---------------- | 
 |  |  |         BigDecimal outHours = getTotalDoneTimes(currentNum,0);// | 
 |  |  |         BigDecimal inHours = getTotalDoneTimes(currentNum,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));//当前入库总任务成量 | 
 |  |  |         } | 
 |  |  | 
 |  |  |         } | 
 |  |  |         return data; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  |     private BigDecimal getDoneHoursByData(String start ,String end) { | 
 |  |  |         List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>().lambda() | 
 |  |  | 
 |  |  |                     .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((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) { | 
 |  |  |     private BigDecimal  getSumTotalByList(List<PlatformJob> list,Integer type,Integer status) { | 
 |  |  |         BigDecimal r = new BigDecimal(0); | 
 |  |  |         if(list==null || list.size() == 0){ | 
 |  |  |             return r; | 
 |  |  | 
 |  |  |                    //如果是在线或者休眠,查询在途还是空闲ty | 
 |  |  |                     codes.add(model.getPlateNum()); | 
 |  |  |                     model.setJobStatus(Constants.ZERO); | 
 |  |  |                 }else | 
 |  |  |                 }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() | 
 |  |  | 
 |  |  |     @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); | 
 |  |  |         if(response1 != null && StringUtils.equals(response1.getCode(), HKConstants.RESPONSE_SUCCEE) | 
 |  |  |                 && response1.getData()!=null ) { | 
 |  |  |             data.setMonthAddNum(Constants.formatIntegerNum(response1.getData().getMaintenanceNum())); | 
 |  |  |             data.setMonthAddNum(Constants.formatIntegerNum(response1.getData().getMaintenanceNumMonth())); | 
 |  |  |             data.setMonthTotalNum(Constants.formatIntegerNum(response1.getData().getDeviceTotalNum())); | 
 |  |  |         } | 
 |  |  |             return data; | 
 |  |  |  | 
 |  |  |         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 ) | 
 |  |  | 
 |  |  |                             temperatureHumidityDataResponseList.stream().filter(i->i.getIndexCode().indexOf(code)>=Constants.ZERO).collect(Collectors.toList()); | 
 |  |  |                     TemperatureHumidityDataVO temperatureHumidityDataVO = new TemperatureHumidityDataVO(); | 
 |  |  |                     for (TemperatureHumidityDataResponse data:dateList) { | 
 |  |  |                         if(data.getSensorType().equals("temp")){ | 
 |  |  |                         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); | 
 |  |  | 
 |  |  |      */ | 
 |  |  |     @Override | 
 |  |  |     public  EnergyBoardVO centerEnergyData(){ | 
 |  |  |         EnergyBoardVO data = new EnergyBoardVO(); | 
 |  |  |         Random random = new Random(); | 
 |  |  |        EnergyBoardVO data = new EnergyBoardVO(); | 
 |  |  |        Random random = new Random(); | 
 |  |  |        PlatformWaterGas smoke=  platformWaterGasMapper.selectOne(new QueryWrapper<PlatformWaterGas>() | 
 |  |  |                  .select("sum(num) as num") | 
 |  |  |                 .lambda() | 
 |  |  | 
 |  |  |         BigDecimal carbonWater = new BigDecimal(0);//本月用水 | 
 |  |  |         BigDecimal carbonElec = new BigDecimal(0);//用电 | 
 |  |  |  | 
 |  |  |         data.setYesterdayElectricity(getDefaultData());//昨日用电 | 
 |  |  |         data.setTodayElectricity(getDefaultData());//今日用电 | 
 |  |  |         data.setElectricityQuantity(getDefaultData());//上月用电 | 
 |  |  |         data.setWaterQuantity(getDefaultData());//上月用水 | 
 |  |  |         data.setGasQuantity(getDefaultData());//上月用气 | 
 |  |  |         data.setMonthElectricity(getDefaultData());//本月用电 | 
 |  |  |         data.setYesterdayElectricity(getDefaultData());//昨日用电 | 
 |  |  |  | 
 |  |  |  | 
 |  |  |         getMonthElectricityData(data.getMonthElectricity());//通过安防平获取本月用电量数据 | 
 |  |  |         carbonElec = new BigDecimal(StringUtils.defaultString(data.getMonthElectricity().getTotal(), "0")); | 
 |  |  |  | 
 |  |  |         getLastMonthElectricityData(data.getElectricityQuantity());//通过安防平获取上月用电量数据 | 
 |  |  |         getCurrentDateElectircityData(data.getTodayElectricity(),0);//通过安防平获取今日用电量数据 | 
 |  |  |         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);//上月 | 
 |  |  | 
 |  |  |         } | 
 |  |  |         if( data.getGasQuantity().getTotalNum().compareTo(new BigDecimal(0)) !=0){ | 
 |  |  |             //计算用气同比环比 | 
 |  |  |             data.getGasQuantity().setSameRate(Constants.formatBigdecimal4Float(data.getGasQuantity().getSameNum().divide(data.getGasQuantity().getTotalNum(),4,BigDecimal.ROUND_HALF_UP)).doubleValue()*100 +""); | 
 |  |  |             data.getGasQuantity().setRingRate(Constants.formatBigdecimal4Float(data.getGasQuantity().getRingNum().divide(data.getGasQuantity().getTotalNum(),4,BigDecimal.ROUND_HALF_UP)).doubleValue()*100 +""); | 
 |  |  |             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){ | 
 |  |  |             // //计算用水同比环比 | 
 |  |  | 
 |  |  |      * @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")); | 
 |  |  | //         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"); | 
 |  |  | //        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"); | 
 |  |  |         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"))); | 
 |  |  |             } | 
 |  |  |  | 
 |  |  |         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())); | 
 |  |  |         } | 
 |  |  |         data.setTotal(Constants.formatBigdecimal2Float(total).toString()); | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     private EnergyModelDataVO getDefaultData() { | 
 |  |  | 
 |  |  |         } | 
 |  |  |         if(data == null){ | 
 |  |  |             data = new RegionEnergyListResponse(); | 
 |  |  |             data.setSecondRegionDataList(new ArrayList<>()); | 
 |  |  |             data.setRootValue("0"); | 
 |  |  |             data.setSamePercent("0"); | 
 |  |  |             data.setRingPercent("0"); | 
 |  |  | 
 |  |  |                     .last(" group by DATE_FORMAT(TIME_INFO,'%Y-%m')") | 
 |  |  |             ); | 
 |  |  |             for (int i = 0; i < 12; i++) { | 
 |  |  |                 Date tempDate = DateUtil.increaseMonth(lastMonth,i); | 
 |  |  |                 Date tempDate = DateUtil.increaseMonth(lastMonth,i);     | 
 |  |  |                 EnergyDataVO data = new EnergyDataVO(); | 
 |  |  |                 data.setTimeData(DateUtil.getFomartDate(tempDate,"YYYY-MM")); | 
 |  |  |                 data.setEnergy(new BigDecimal(0)); | 
 |  |  | 
 |  |  |                 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,(i+1)+"月")); | 
 |  |  |                 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.setDate(DateUtil.getFomartDate(new Date(),"yyyy"));//年份 | 
 |  |  |             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 = 0; i < 12; i++) { | 
 |  |  |                     if(response.getData().getYvalues().size()>0 &&response.getData().getYvalues().get(0).getValue().length>i){ | 
 |  |  |                 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],"0"))); | 
 |  |  |                         energyDataVOList.get(i).setEnergy(new BigDecimal(StringUtils.defaultString(response.getData().getYvalues().get(0).getValue()[i-lastMonths],"0"))); | 
 |  |  |                     } | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  | 
 |  |  |                 .eq(Visits::getIsdeleted,Constants.ZERO) | 
 |  |  |                 .apply("to_days(create_date)=to_days(now())") | 
 |  |  |                 .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) | 
 |  |  |         ); | 
 |  |  |  | 
 |  |  |         //今日在园人数 | 
 |  |  | 
 |  |  |                 (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)&&Objects.isNull(i.getCompanyType())).count() | 
 |  |  |         ); | 
 |  |  |         //在园车辆 | 
 |  |  |         data.setInternalCarTotal( | 
 |  |  |         data.setInParkCarTotal( | 
 |  |  |                 (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).count() | 
 |  |  |         ); | 
 |  |  |         //在园相关方车辆 | 
 |  |  | 
 |  |  |         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())") | 
 |  |  | //                    .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() }) | 
 |  |  |                     .orderByDesc(PlatformJob::getStatus )); | 
 |  |  | //                    .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){ | 
 |  |  | 
 |  |  |                     }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); //作业已超时 | 
 |  |  |                         } | 
 |  |  |                     } | 
 |  |  | 
 |  |  |                 curtotalNum += Constants.formatIntegerNum(workEfficiencyVO.getWorkNum()) ; | 
 |  |  |             } | 
 |  |  |             workEfficiencyVO.setTotalWorkNum(curtotalNum);//累计值 | 
 |  |  |             if(System.currentTimeMillis() < curTime){ | 
 |  |  |                 workEfficiencyVO.setTotalWorkNum(0); | 
 |  |  |             } | 
 |  |  |             workEfficiencyVOList.add(workEfficiencyVO); | 
 |  |  |         } | 
 |  |  |         return workEfficiencyVOList; | 
 |  |  | 
 |  |  |         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(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())){ | 
 |  |  | 
 |  |  |                 } | 
 |  |  |                 // 已离园 | 
 |  |  |                 if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey())){ | 
 |  |  |                     data.setWorkingCar(data.getWorkingCar()+Constants.formatIntegerNum(model.getCountum())); | 
 |  |  |                     // data.setWorkingCar(data.getWorkingCar()+Constants.formatIntegerNum(model.getCountum())); | 
 |  |  |                 } | 
 |  |  |                 // 已过号(预约车、签到数、排队车) | 
 |  |  |                 if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.OVER_NUMBER.getKey())){ | 
 |  |  | 
 |  |  |                 } | 
 |  |  |  | 
 |  |  |             } | 
 |  |  |       }*/ | 
 |  |  |         //预约数 | 
 |  |  |         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());}) | 
 |  |  |                 .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()); | 
 |  |  |                 } | 
 |  |  |             } | 
 |  |  |         } | 
 |  |  |  | 
 |  |  |         return  data; | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |     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 ; | 
 |  |  |  | 
 |  |  |     } | 
 |  |  |  | 
 |  |  |  | 
 |  |  | } |