jiangping
2024-10-09 c5cc7da07c7f202f336468c0cd0d2789b4775b03
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -4,6 +4,7 @@
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.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.ParkReservationAddRequest;
import com.doumee.core.haikang.model.param.request.ParkReservationDelRequest;
@@ -360,12 +361,30 @@
            List<PlatformWmsDetail> platformWmsDetailList = platformWmsDetailMapper.selectList(new QueryWrapper<PlatformWmsDetail>().lambda()
                    .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO)
                    .eq(PlatformWmsDetail::getJobId,platformJob.getId()));
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsDetailList)){
                platformJob.setTotalNum(
                        platformWmsDetailList.stream().map(m->m.getIoQty()).reduce(BigDecimal.ZERO,BigDecimal::add)
                );
                platformWmsJob.setPlatformWmsDetailList(platformWmsDetailList);
                platformJob.setPlatformWmsJob(platformWmsJob);
                if(Constants.equalsInteger(platformJob.getType(),Constants.platformJobType.zyczh)
                        || Constants.equalsInteger(platformJob.getType(),Constants.platformJobType.wxczh)){
                    Integer unLockCount = platformWmsDetailList.stream().filter(i->Constants.equalsInteger(i.getLockStatus(),Constants.ZERO)).collect(Collectors.toList()).size();
                    if(Constants.equalsInteger(unLockCount,Constants.ZERO)){
                        platformJob.setLockStatus(Constants.TWO);  //全部上锁
                    }else if(Constants.equalsInteger(unLockCount,platformWmsDetailList.size())){
                        platformJob.setLockStatus(Constants.ZERO);  //未上锁
                    }else{
                        platformJob.setLockStatus(Constants.ONE);   //部分上锁
                    }
                }
            }
        } 
    }
@@ -407,7 +426,7 @@
                    platformJob.setWaitTime(waitTime);
                }
            }else{
                platformJob.setWaitTime("等待叫号");
                platformJob.setWaitTime("预计等待:-小时-分钟");
            }
        }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())
        || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){
@@ -429,7 +448,6 @@
                    .ne(PlatformLog::getParam3,Constants.ZERO+"")
                    .orderByDesc(PlatformLog::getCreateDate));
            platformJob.setWorkTime(platformLogList.stream().map(m->Long.valueOf(m.getParam3())).reduce(Long.valueOf(0),Long::sum));
        }
    }
@@ -462,7 +480,6 @@
            //查询前方排队数量
            this.queryWaitNum(platformJob);
        }
        driverHomeVO.setPlatformJobList(platformJobList);
@@ -1519,42 +1536,34 @@
                .eq(Platform::getStatus,Constants.ZERO)
        );
        for (Platform platform:platformList) {
            PlatformDataListResponse platformDataListResponse  = new PlatformDataListResponse();
            PlatformDataListResponse platformDataListResponse = new PlatformDataListResponse();
            platformDataListResponse.setId(platform.getId());
            platformDataListResponse.setHkId(platform.getHkId());
            platformDataListResponse.setName(platform.getName());
            platformDataListResponse.setWorkStatus(Constants.ZERO);
            //查询当前作业车辆
//            PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>()
//                    .select(" * , ( select pl.CREATE_DATE from platform_log pl where platform_job.id = pl.obj_id and pl.OBJ_TYPE = 5 order by pl.CREATE_DATE desc  limit 1  ) as newStartDate ," +
//                            " case when platform_job.total_num is null  then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = platform_job.id  ) else platform_job.total_num end workNum ")
//                    .eq("isdeleted",Constants.ZERO)
//                    .eq("status",Constants.PlatformJobStatus.WORKING.getKey())
//                    .orderByDesc("START_DATE")
//                    .last(" limit 1")
//            );
            PlatformJob platformJob = platformJobJoinMapper.selectJoinOne(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
            PlatformJob platformJob = platformJobJoinMapper.selectJoinOne(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>()
                    .selectAll(PlatformJob.class)
                    .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                    .selectAs(Platform::getName,PlatformJob::getPlatformName)
                    .selectAs(Platform::getWorkRate, PlatformJob::getWorkRate)
                    .selectAs(Platform::getName, PlatformJob::getPlatformName)
                    .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 workNum ")
                    .select(" ( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = 5 order by pl.CREATE_DATE desc  limit 1  ) as newStartDate  ")
                    .select(" ( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = 4 order by pl.CREATE_DATE desc  limit 1  ) as newCallDate  ")
                    .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                    .leftJoin(Platform.class, Platform::getId, PlatformJob::getPlatformId)
                    .eq(PlatformJob::getStatus, Constants.PlatformJobStatus.WORKING.getKey())
                            .eq(PlatformJob::getPlatformId,platform.getId())
                    .eq(PlatformJob::getPlatformId, platform.getId())
                    .orderByDesc(PlatformJob::getStatus)
                    .orderByDesc(PlatformJob::getStartDate)
                    .last(" limit 1")
            );
            if(Objects.nonNull(platformJob)){
            if (Objects.nonNull(platformJob)) {
                platformDataListResponse.setCarCode(platformJob.getCarCodeFront());
                platformDataListResponse.setWorkType(
                        Constants.equalsInteger(platformJob.getType(),Constants.platformJobType.zycxh)
                                ||Constants.equalsInteger(platformJob.getType(),Constants.platformJobType.wxcxh)
                        ||Constants.equalsInteger(platformJob.getType(),Constants.platformJobType.sgscxh)?Constants.ZERO:Constants.ONE
                        Constants.equalsInteger(platformJob.getType(), Constants.platformJobType.zycxh)
                                || Constants.equalsInteger(platformJob.getType(), Constants.platformJobType.wxcxh)
                                || Constants.equalsInteger(platformJob.getType(), Constants.platformJobType.sgscxh) ? Constants.ZERO : Constants.ONE
                );
                platformDataListResponse.setWorkStatus(Constants.ONE);
                //查询作业时长
@@ -1562,51 +1571,16 @@
                        this.getWorkTime(platformJob)
                );
                //计算已作业时长 根据月台工作效率 计算任务量需要时间
                if(Objects.isNull(platformJob.getWorkNum()) || Objects.isNull(platformJob.getWorkRate())){
                if (Objects.isNull(platformJob.getWorkNum()) || Objects.isNull(platformJob.getWorkRate())) {
                    platformDataListResponse.setFinishTime(null);
                }else{
                } else {
                    Integer workMinute = platformJob.getWorkNum().multiply(new BigDecimal(60)).divide(platformJob.getWorkRate()).intValue();
                    Date overDate = DateUtil.getXMinuteAfterDate(platformJob.getNewStartDate(),workMinute);
                    Date overDate = DateUtil.getXMinuteAfterDate(platformJob.getNewStartDate(), workMinute);
                    platformDataListResponse.setFinishTime(overDate);
                }
        try {
            List<Platform> platformList = platformJoinMapper.selectList(
                    new MPJLambdaWrapper<Platform>().eq(Platform::getIsdeleted,Constants.ZERO)
                            .eq(Platform::getStatus,Constants.ZERO)
            );
            for (Platform platform:platformList) {
                PlatformDataListResponse platformDataListResponse  = new PlatformDataListResponse();
                platformDataListResponse.setId(platform.getId());
                platformDataListResponse.setHkId(platform.getHkId());
                platformDataListResponse.setName(platform.getName());
                platformDataListResponse.setWorkStatus(Constants.ZERO);
                //查询当前作业车辆
                PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WORKING.getKey())
                        .orderByDesc(PlatformJob::getWorkTime)
                        .last(" limit 1")
                );
                if(Objects.nonNull(platformJob)){
                    platformDataListResponse.setCarCode(platformJob.getCarCodeFront());
                    platformDataListResponse.setWorkType(
                            Constants.equalsInteger(platformJob.getType(),Constants.platformJobType.zycxh)
                                    ||Constants.equalsInteger(platformJob.getType(),Constants.platformJobType.wxcxh)
                                    ||Constants.equalsInteger(platformJob.getType(),Constants.platformJobType.sgscxh)?Constants.ZERO:Constants.ONE
                    );
                    platformDataListResponse.setWorkStatus(Constants.ONE);
                    //查询作业时长
                    platformDataListResponse.setWorkTime(
                            this.getWorkTime(platformJob)
                    );
                }
            }
            platformDataListResponseList.add(platformDataListResponse);
        }catch (Exception e){
            System.out.println("===============================报错啦:\n");
            e.printStackTrace();
        }
        return platformDataListResponseList;
    }