| | |
| | | data.setCurrentOutDoneNum(getSumTotalByList(currentDoneNum,0,1));//今日完成量 |
| | | data.setCurrentInNum(beforeInNum.add(data.getCurrentInDoneNum()).add(currentInNum));//当前入库总任务成量 |
| | | data.setCurrentOutNum(beforeOutNum.add(data.getCurrentOutDoneNum()).add(currentOutNum));//当前出库总任务成量 |
| | | |
| | | //------------今日出入库效率---------------- |
| | | BigDecimal outHours = getTotalDoneTimes(currentDoneNum,0);// |
| | | BigDecimal inHours = getTotalDoneTimes(currentDoneNum,1);// |
| | | if(outHours.compareTo(new BigDecimal(0))>0){ |
| | | data.setTodayOutRate(data.getCurrentOutDoneNum().divide(outHours,2));//当前入库总任务成量 |
| | | } |
| | | if(inHours.compareTo(new BigDecimal(0))>0){ |
| | | data.setTodayInRate(data.getCurrentInDoneNum().divide(inHours,2));//当前入库总任务成量 |
| | | } |
| | | data.setTodayOutRate(getDayTotalRata(data.getCurrentOutDoneNum(),DateUtil.getToday()));//当日出库效率 |
| | | data.setTodayInRate(getDayTotalRata(data.getCurrentInDoneNum(),DateUtil.getToday()));//当日入库效率 |
| | | data.setMonthOutRate(getMonthRata(monthNum,Constants.ZERO));//本月出库效率 |
| | | data.setMonthInRate(getMonthRata(monthNum,Constants.ONE));//本月出库效率 |
| | | //------------今日出入库效率---------------- |
| | | // BigDecimal outHours = getTotalDoneTimes(currentDoneNum,0);// |
| | | // BigDecimal inHours = getTotalDoneTimes(currentDoneNum,1);// |
| | | // |
| | | // if(outHours.compareTo(new BigDecimal(0))>0){ |
| | | // data.setTodayOutRate(data.getCurrentOutDoneNum().divide(outHours,2));//当前入库总任务成量 |
| | | // } |
| | | // if(inHours.compareTo(new BigDecimal(0))>0){ |
| | | // data.setTodayInRate(data.getCurrentInDoneNum().divide(inHours,2));//当前入库总任务成量 |
| | | // } |
| | | //------------本月出入库效率---------------- |
| | | // BigDecimal outMonthNum = getSumTotalByList(monthNum,0,null).add(data.getCurrentOutDoneNum()); |
| | | BigDecimal inMonthNum = getSumTotalByList(monthNum,1,null).add(data.getCurrentInDoneNum()); |
| | | BigDecimal outMonthHours = getTotalDoneTimes(monthNum,0).add(outHours);// |
| | | BigDecimal inMonthHours = getTotalDoneTimes(monthNum,1).add(inHours);// |
| | | if(outMonthHours.compareTo(new BigDecimal(0))>0){ |
| | | data.setMonthOutRate(data.getMonthOutTotal().divide(outMonthHours,0,BigDecimal.ROUND_HALF_UP));//本月入库效率 |
| | | } |
| | | if(inMonthHours.compareTo(new BigDecimal(0))>0){ |
| | | data.setMonthInRate(inMonthNum.divide(inMonthHours,0,BigDecimal.ROUND_HALF_UP));//本月入库效率 |
| | | } |
| | | // BigDecimal inMonthNum = getSumTotalByList(monthNum,1,null).add(data.getCurrentInDoneNum()); |
| | | // BigDecimal outMonthHours = getTotalDoneTimes(monthNum,0).add(outHours);// |
| | | // BigDecimal inMonthHours = getTotalDoneTimes(monthNum,1).add(inHours);// |
| | | // if(outMonthHours.compareTo(new BigDecimal(0))>0){ |
| | | // data.setMonthOutRate(data.getMonthOutTotal().divide(outMonthHours,0,BigDecimal.ROUND_HALF_UP));//本月出库效率 |
| | | // } |
| | | // if(inMonthHours.compareTo(new BigDecimal(0))>0){ |
| | | // data.setMonthInRate(inMonthNum.divide(inMonthHours,0,BigDecimal.ROUND_HALF_UP));//本月入库效率 |
| | | // } |
| | | return data; |
| | | } |
| | | |
| | |
| | | if(platformLogList!=null && platformLogList.size()>0){ |
| | | return new BigDecimal((double)(platformLogList.stream().map(m->Long.valueOf(m.getParam3())).reduce(Long.valueOf(0),Long::sum))/(double)60); |
| | | } |
| | | |
| | | return new BigDecimal(0); |
| | | |
| | | } |
| | | |
| | | private BigDecimal getTotalDoneTimes(List<PlatformJob> list, Integer type) { |
| | | BigDecimal r = new BigDecimal(0); |
| | | if(list==null || list.size() == 0){ |
| | |
| | | return r; |
| | | } |
| | | |
| | | |
| | | private BigDecimal getMonthRata(List<PlatformJob> list, Integer type) { |
| | | BigDecimal r = new BigDecimal(0); |
| | | if(list==null || list.size() == 0){ |
| | | return r; |
| | | } |
| | | List<PlatformJob> jobList= new ArrayList<>(); |
| | | for(PlatformJob job : list) { |
| | | if (!(Constants.equalsInteger(job.getStatus(), Constants.PlatformJobStatus.DONE.getKey()) |
| | | || Constants.equalsInteger(job.getStatus(), Constants.PlatformJobStatus.LEAVED.getKey()) |
| | | || Constants.equalsInteger(job.getStatus(), Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()))) { |
| | | //只查询完成数据 |
| | | continue; |
| | | } |
| | | if (type != null && type == 0 && (Constants.equalsInteger(job.getType(), Constants.ONE) || Constants.equalsInteger(job.getType(), Constants.THREE))) { |
| | | //出库 |
| | | jobList.add(job); |
| | | } |
| | | if (type != null && type == 1 && (Constants.equalsInteger(job.getType(), Constants.ZERO) || Constants.equalsInteger(job.getType(), Constants.TWO) || Constants.equalsInteger(job.getType(), Constants.FOUR))) { |
| | | //入库 |
| | | jobList.add(job); |
| | | } |
| | | } |
| | | if(CollectionUtils.isNotEmpty(jobList)){ |
| | | //获取任务数据 |
| | | List<String> jobDataList = list.stream().filter(i->Objects.nonNull(i.getDoneDate())).map(i->DateUtil.formatDate(i.getDoneDate(),"yyyy-MM-dd")).collect(Collectors.toList()); |
| | | for (String jobDate:jobDataList) { |
| | | //过滤当天的数据 |
| | | List<PlatformJob> platformJobList = list.stream(). |
| | | filter(i->jobDate.equals(DateUtil.formatDate(i.getDoneDate(),"yyyy-MM-dd"))).collect(Collectors.toList()); |
| | | if(CollectionUtils.isNotEmpty(platformJobList)){ |
| | | //获取今天的 |
| | | r = r.add(this.getDayTotalRata(getSumTotalByList(platformJobList,type,null),jobDate)); |
| | | } |
| | | } |
| | | } |
| | | return r; |
| | | } |
| | | |
| | | |
| | | private BigDecimal getDayTotalRata(BigDecimal totalAmount,String today) { |
| | | BigDecimal r = new BigDecimal(0); |
| | | //查询今日最早/最晚的作业数据 |
| | | List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>() |
| | | .lambda() |
| | | .apply(" ( to_days(param1) = '"+today+"' or to_days(param2) = '"+today+"' ) ") |
| | | ); |
| | | if(totalAmount.compareTo(BigDecimal.ZERO)==0||CollectionUtils.isEmpty(platformLogList)){ |
| | | return BigDecimal.ZERO; |
| | | } |
| | | if(platformLogList!=null && platformLogList.size()>0){ |
| | | return this.getWorkTime(totalAmount,platformLogList); |
| | | } |
| | | return r; |
| | | } |
| | | |
| | | /** |
| | | * 查询作业时长(小时) |
| | | * @param totalAmount |
| | | * @param platformLogList |
| | | * @return |
| | | */ |
| | | public BigDecimal getWorkTime(BigDecimal totalAmount,List<PlatformLog> platformLogList){ |
| | | if(CollectionUtils.isEmpty(platformLogList)){ |
| | | return BigDecimal.ZERO; |
| | | } |
| | | //获取开始时间 |
| | | List<Long> startTimeList = platformLogList.stream().filter(i->Objects.nonNull(i.getParam1())).map(i->DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",i.getParam1()).getTime()).collect(Collectors.toList()); |
| | | Long startTime = Collections.min(startTimeList); |
| | | //获取结束时间 |
| | | List<Long> endTimeList = platformLogList.stream().filter(i->Objects.nonNull(i.getParam2())).map(i->DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",i.getParam2()).getTime()).collect(Collectors.toList()); |
| | | Long endTime = Collections.max(endTimeList); |
| | | if(Objects.isNull(startTime) |
| | | || Objects.isNull(endTime) || (startTime>=endTime)){ |
| | | return BigDecimal.ZERO; |
| | | } |
| | | return totalAmount.divide(new BigDecimal(( endTime - startTime )+"").divide(new BigDecimal("3600000"),2,BigDecimal.ROUND_HALF_UP),2,BigDecimal.ROUND_HALF_UP) ; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | private BigDecimal getSumTotalByList(List<PlatformJob> list,Integer type,Integer status) { |
| | | BigDecimal r = new BigDecimal(0); |
| | | if(list==null || list.size() == 0){ |