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