| | |
| | | import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse; |
| | | import com.doumee.core.haikang.model.param.respose.PageSensorStatusResponse; |
| | | import com.doumee.core.haikang.service.HKService; |
| | | import com.doumee.core.model.ApiResponse; |
| | | import com.doumee.core.utils.Constants; |
| | | import com.doumee.core.utils.DateUtil; |
| | | import com.doumee.core.utils.Utils; |
| | | import com.doumee.dao.business.*; |
| | | import com.doumee.dao.business.model.*; |
| | | import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO; |
| | | import com.doumee.dao.web.response.platformReport.*; |
| | | import com.doumee.service.business.impl.PlatformJobServiceImpl; |
| | | import com.doumee.service.business.third.BoardService; |
| | | import com.github.yulichang.wrapper.MPJLambdaWrapper; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | | |
| | |
| | | .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey() |
| | | , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey() |
| | | , Constants.PlatformJobStatus.LEAVED.getKey()) |
| | | .apply("to_days(t1.create_data) = to_days(now())") |
| | | .apply("to_days(t1.create_date) = to_days(now())") |
| | | .groupBy(PlatformGroup::getId) |
| | | ); |
| | | if(jobList!=null){ |
| | |
| | | ); |
| | | carWorkSituationVO.setPlatformLogList(platformLogList); |
| | | return carWorkSituationVO; |
| | | } |
| | | |
| | | @Override |
| | | public List<PlatformWorkDataVO> platformWorkData(){ |
| | | |
| | | List<PlatformWorkDataVO> platformWorkDataVOList = new ArrayList<>(); |
| | | List<Platform> platformList = platformMapper.selectJoinList(Platform.class, new MPJLambdaWrapper<Platform>() |
| | | .selectAll( Platform.class) |
| | | .eq(Platform::getIsdeleted, Constants.ZERO) |
| | | .orderByAsc(Platform::getSortnum) |
| | | ); |
| | | /** |
| | | * WAIT_CONFIRM(0, "待确认","待确认" ), |
| | | * WART_SIGN_IN(1, "待签到","待签到" ), |
| | | * WAIT_CALL(2, "已签到","已签到"), |
| | | * IN_WAIT(3, "入园等待","入园等待" ), |
| | | * CALLED(4, "已叫号","已叫号" ), |
| | | * WORKING(5, "作业中","作业中" ), |
| | | * DONE(6, "作业完成 ","作业完成" ), |
| | | * TRANSFERING(7, "转移中","转移中" ), |
| | | * EXCEPTION(8, "异常挂起","异常挂起" ), |
| | | * AUTHED_LEAVE(9, "已授权离园","已授权离园" ), |
| | | * LEAVED(10, "已离园 ","已离园 " ), |
| | | * OVER_NUMBER(11, "已过号","已过号" ), |
| | | * CANCEL(12, "已取消","已取消" ), |
| | | */ |
| | | |
| | | if(platformList!=null && platformList.size()>0){ |
| | | List<PlatformJob> jobList = platformJobMapper.selectJoinList(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>() |
| | | .selectAll( PlatformJob.class) |
| | | .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) |
| | | .apply("to_days(t.create_date) = to_days(now())") |
| | | .eq(Platform::getIsdeleted, Constants.ZERO) |
| | | .in(PlatformJob ::getStatus,new Integer[]{Constants.PlatformJobStatus.WORKING.getKey(),Constants.PlatformJobStatus.CALLED.getKey() }) |
| | | .orderByDesc(PlatformJob::getStatus )); |
| | | //月台状态:0=作业中;1=空闲中;2=作业超时;3=叫号 |
| | | for(Platform model : platformList){ |
| | | PlatformWorkDataVO platformDurationVO = new PlatformWorkDataVO(); |
| | | platformDurationVO.setPlatformName(model.getName()); |
| | | platformDurationVO.setPlatformId(model.getId()); |
| | | 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 = 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<PlatformJob> jobList) { |
| | | if(jobList!=null){ |
| | | for(PlatformJob job :jobList){ |
| | | if(Constants.equalsInteger(job.getPlatformId(),id)){ |
| | | return job; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * |
| | | * @param type 查询类型:0=入库;1=出库 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public List<WorkEfficiencyVO> workEfficiency(Integer type){ |
| | | //作业类型 0自有车卸货 1自有车装货 2外协车卸货 3外协车装货 4市公司外协车卸货 |
| | | List<WorkEfficiencyVO> workEfficiencyVOList = new ArrayList<>(); |
| | | List<PlatformWmsDetail> jobList = platformWmsDetailMapper.selectJoinList(PlatformWmsDetail.class, new MPJLambdaWrapper<PlatformWmsDetail>() |
| | | .selectAll( PlatformWmsDetail.class) |
| | | .selectAs( PlatformJob::getDoneDate,PlatformWmsDetail::getDoneDate) |
| | | .leftJoin(PlatformJob.class,PlatformJob::getId,PlatformWmsDetail::getJobId) |
| | | .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO) |
| | | .eq(PlatformJob::getIsdeleted, Constants.ZERO) |
| | | .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}) |
| | | .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())") |
| | | ); |
| | | 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); |
| | | long time = curHour*60*60*1000 + today.getTime(); |
| | | WorkEfficiencyVO workEfficiencyVO = new WorkEfficiencyVO(); |
| | | workEfficiencyVO.setWorkTime(curHour+":00"); |
| | | if(jobList!=null && jobList.size()>0){ |
| | | for(PlatformWmsDetail detail : jobList){ |
| | | if(detail.getDoneDate()!=null && detail.getDoneDate().getTime()<= time){ |
| | | //当前量 |
| | | if(detail.getDoneDate()!=null && detail.getDoneDate().getTime() > lastTime){ |
| | | //区间值 取实近2小时内的累计值 |
| | | workEfficiencyVO.setWorkNum(Constants.formatIntegerNum(workEfficiencyVO.getWorkNum())+Constants.formatBigdecimal(detail.getIoQty()).intValue()); |
| | | } |
| | | //累积量 |
| | | curtotalNum += Constants.formatBigdecimal(detail.getIoQty()).intValue(); |
| | | } |
| | | } |
| | | } |
| | | workEfficiencyVO.setTotalWorkNum(curtotalNum);//累计值 |
| | | workEfficiencyVOList.add(workEfficiencyVO); |
| | | } |
| | | return workEfficiencyVOList; |
| | | } |
| | | @Override |
| | | public List<PlatformDurationVO> platformDuration(){ |
| | |
| | | .selectAll(PlatformJob.class) |
| | | .select("count(id)" ,PlatformJob::getCountum) |
| | | .eq(PlatformJob::getIsdeleted,Constants.ZERO) |
| | | .apply("to_days(create_data) = to_days(now())" ) |
| | | .apply("to_days(create_date) = to_days(now())" ) |
| | | .groupBy(PlatformJob::getStatus ) |
| | | ); |
| | | if(jobList!=null){ |