k94314517
2024-10-30 47a53d22a025c0ed095c9c4ed2e1ce35ce54184e
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -13,14 +13,19 @@
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.tms.model.request.TmsLockStatusQueryRequest;
import com.doumee.core.tms.model.response.TmsBaseResponse;
import com.doumee.core.tms.model.response.TmsLockStatusQueryResponse;
import com.doumee.core.utils.*;
import com.doumee.dao.business.*;
import com.doumee.dao.business.dao.SmsEmailMapper;
import com.doumee.dao.business.join.PlatformJobJoinMapper;
import com.doumee.dao.business.join.PlatformJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.LargeScreenDataVO;
import com.doumee.dao.openapi.request.*;
import com.doumee.dao.openapi.response.*;
import com.doumee.dao.system.model.SystemUser;
import com.doumee.dao.web.reqeust.*;
import com.doumee.dao.web.response.DriverHomeVO;
@@ -32,9 +37,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.doumee.service.business.impl.hksync.HkSyncPushServiceImpl;
import com.doumee.service.business.impl.thrid.WmsServiceImpl;
import com.doumee.service.business.third.EmayService;
import com.doumee.service.business.third.WmsService;
import com.doumee.service.business.third.TmsService;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -63,6 +67,8 @@
    @Autowired
    private PlatformJobMapper platformJobMapper;
    @Autowired
    private TmsService tmsService;
    @Autowired
    private PlatformDeviceMapper platformDeviceMapper;
@@ -336,7 +342,7 @@
                                 " ( " +
                                         " ( t.`STATUS` = "+Constants.PlatformJobStatus.WAIT_CALL.getKey()+" and t.PLATFORM_GROUP_ID = ( SELECT p.group_id FROM platform p WHERE p.id = "+pageWrap.getModel().getPlatformId()+" LIMIT 1 )  )" +
                                         " or  " +
                                         " (t.`STATUS` = "+Constants.PlatformJobStatus.IN_WAIT.getKey()+" and t.PLATFORM_ID = "+pageWrap.getModel().getPlatformId()+" )" +
                                         " (t.`STATUS` = "+Constants.PlatformJobStatus.IN_WAIT.getKey()+" and t.PLATFORM_GROUP_ID = ( SELECT p.group_id FROM platform p WHERE p.id = "+pageWrap.getModel().getPlatformId()+" LIMIT 1 )  )" +
                                         " or " +
                                         "  (t.`STATUS` = "+Constants.PlatformJobStatus.TRANSFERING.getKey()+" and t.PLATFORM_ID = "+pageWrap.getModel().getPlatformId()+" )  " +
                                         ") "
@@ -412,22 +418,28 @@
    public void queryWaitNum(PlatformJob platformJob){
        if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
            //查询前方排队数量
            List<PlatformJob> lineUpNum =  platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda()
            //查询当前所有排队数量
            List<PlatformJob> lineUpAllList =  platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda()
                    .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                    .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
                            ,Constants.PlatformJobStatus.IN_WAIT.getKey()
                            ,Constants.PlatformJobStatus.TRANSFERING.getKey())
                    .gt(PlatformJob::getSignDate,platformJob.getSignDate())
//                    .lt(PlatformJob::getSignDate,platformJob.getSignDate())
                    .eq(PlatformJob::getPlatformGroupId,platformJob.getPlatformGroupId())
                    .like(PlatformJob::getArriveDate,DateUtil.dateTypeToString(platformJob.getArriveDate(),"yyyy-MM-dd")));
            platformJob.setLineUpNum(lineUpNum.size());
            BigDecimal sumWorkRate = platformJob.getTotalNum();
            for (PlatformJob linePlatformJob:lineUpNum) {
//                    .like(PlatformJob::getArriveDate,DateUtil.dateTypeToString(platformJob.getArriveDate(),"yyyy-MM-dd"))
            );
            for (PlatformJob linePlatformJob:lineUpAllList) {
                this.getWmsJobData(linePlatformJob);
                sumWorkRate = sumWorkRate.add(linePlatformJob.getTotalNum());
            }
            if(lineUpNum.size()>Constants.ZERO){
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(lineUpAllList)){
                //查询排队在我前面的数据
                List<PlatformJob> lineUpNum = lineUpAllList.stream().filter(i->Objects.nonNull(i.getSignDate())&&i.getSignDate().getTime()<platformJob.getSignDate().getTime()).collect(Collectors.toList());
                platformJob.setLineUpNum(lineUpNum.size());
                BigDecimal sumWorkRate = platformJob.getTotalNum();
                for (PlatformJob linePlatformJob:lineUpNum) {
                    sumWorkRate = sumWorkRate.add(linePlatformJob.getTotalNum());
                }
                //计算预计等待时间
                List<Platform> platformList = platformJoinMapper.selectList(new QueryWrapper<Platform>().lambda().eq(Platform::getIsdeleted,Constants.ZERO).eq(Platform::getGroupId,platformJob.getPlatformGroupId()));
                BigDecimal workRate = platformList.stream().map(m->m.getWorkRate()).reduce(BigDecimal.ZERO,BigDecimal::add);
@@ -491,7 +503,6 @@
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .eq(PlatformJob::getDrivierPhone,loginUserInfo.getMobile())
//                .like(PlatformJob::getArriveDate,DateUtil.getCurrDate())
                .orderByDesc(PlatformJob::getId)
        );
        for (PlatformJob platformJob:platformJobList) {
@@ -737,12 +748,12 @@
                            .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                            .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                            .eq(PlatformJob::getPlatformGroupId,platformGroup.getId())
                            .le(Objects.nonNull(platformJob),PlatformJob::getSignDate,DateUtil.dateTypeToString(platformJob.getSignDate(),"yyyy-MM-dd HH:mm:ss"))
                            .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey(),
                                    Constants.PlatformJobStatus.IN_WAIT.getKey(),
                                    Constants.PlatformJobStatus.CALLED.getKey())
                            .orderByDesc(PlatformJob::getStatus)
                            .orderByDesc(PlatformJob::getSignDate));
                            .orderByAsc(PlatformJob::getSignDate)
                            .orderByAsc(PlatformJob::getSignNum)
            );
            platformGroup.setSignJobList(platformJobSignInList);
            //查询当前月台组下
            List<PlatformJob> platformJobWorkList = platformJobJoinMapper.selectJoinList(PlatformJob.class,
@@ -1175,8 +1186,9 @@
                SmsConstants.platformJobContent.platformJobMove,oldPlatform.getName(),platform.getName()
        );
        platformJob.setPlatformName(platform.getName());
        this.broadcastAndLEed(platformJob, StringUtils.isBlank(oldPlatform.getRemark())?Constants.PlatformLedContent.IDEL_CONTNET.getName():oldPlatform.getLedContent(),
        platformJob.setPlatformName(oldPlatform.getName());
        platformJob.setPlatformId(oldPlatform.getId());
        this.broadcastAndLEed(platformJob, StringUtils.isBlank(oldPlatform.getLedContent())?Constants.PlatformLedContent.IDEL_CONTNET.getName():oldPlatform.getLedContent(),
                null
        );
@@ -1257,6 +1269,12 @@
                emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,platformJob.getId(),
                SmsConstants.platformJobContent.platformJobError,platform.getName(),null
        );
        platformJob.setPlatformName(platform.getName());
        this.broadcastAndLEed(platformJob, StringUtils.isBlank(platform.getLedContent())?Constants.PlatformLedContent.IDEL_CONTNET.getName():platform.getLedContent(),
                null
        );
    }
@@ -1347,23 +1365,48 @@
        savePlatformLog(Constants.PlatformJobLogType.DONE.getKey(),oldPlatformJob,platformJob ,
                Constants.PlatformJobLogType.DONE.getInfo());
        if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)){
            //TODO 外协车装货 查询TMS 电子锁情况
        if(Constants.equalsInteger(platformJob.getType(),Constants.THREE)){
            // 外协车装货 查询TMS 电子锁情况
            List<PlatformWmsDetail> details = platformWmsDetailMapper.selectList(new QueryWrapper<PlatformWmsDetail>().lambda()
                    .eq(PlatformWmsDetail::getJobId,platformJob.getId())
                    .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO)
            );
            if(details!=null && details.size()>0){
                Date date = new Date();
                List<String> codeList =new ArrayList<>();
                for(PlatformWmsDetail d : details){
                    codeList.add(d.getIocode());
                }
                TmsLockStatusQueryRequest tmsLock = new TmsLockStatusQueryRequest();
                tmsLock.setContractNumbers(codeList);
                TmsBaseResponse<List<TmsLockStatusQueryResponse>>  lockResult =  tmsService.lockStatusQuery(tmsLock);
                if(lockResult!=null && lockResult.isSuccess()&& lockResult.getData()!=null ){
                     for(TmsLockStatusQueryResponse s : lockResult.getData()){
                         platformWmsDetailMapper.update(null,new UpdateWrapper<PlatformWmsDetail>().lambda()
                                 .eq(PlatformWmsDetail::getIocode,s.getContractNumber())
                                 .set(PlatformWmsDetail::getEditDate,date)
                                 .set(PlatformWmsDetail::getLockDate,s.getOutDate())
                                 .set(PlatformWmsDetail::getLockStatus,Constants.ONE)
                                 .eq(PlatformWmsDetail::getJobId,platformJob.getId())
                                 .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO));
                     }
                }
            }
        }else if(Constants.equalsInteger(platformJob.getType(),Constants.ONE) || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
            //TODO 外协车卸货 或者 市公司车卸货 则根据任务情况
        }
        //发送短信信息
        SmsEmailServiceImpl.sendPlatformJobSms(systemDictDataBiz,
                emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,platformJob.getId(),
                SmsConstants.platformJobContent.platformJobFinish,platform.getName(),null
        );
        //广播 led通知
        platformJob.setPlatformName(platform.getName());
        this.broadcastAndLEed(platformJob,null,
        this.broadcastAndLEed(platformJob,Constants.PlatformLedContent.DONE.getInfo(),
                Constants.PlatformBroadcastContent.DONE.getInfo());
        return platformJob;
    }
@@ -1632,12 +1675,15 @@
        //获取月台下的所有作业数据
        List<PlatformJob> platformJobList =  platformJobJoinMapper.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 = 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  ")
                .selectAs(Platform::getName,PlatformJob::getPlatformName)
                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
                .selectAs(PlatformBooks::getId,PlatformJob::getBookId)
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getJobId,PlatformJob::getId)
                .eq(PlatformJob::getPlatformId,platformId)
                .leftJoin(PlatformBooks.class,PlatformBooks::getJobId,PlatformJob::getId)
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .in(PlatformJob::getStatus,
                        Constants.PlatformJobStatus.WAIT_CALL.getKey(),
@@ -1645,9 +1691,9 @@
                        Constants.PlatformJobStatus.CALLED.getKey(),
                        Constants.PlatformJobStatus.WORKING.getKey(),
                        Constants.PlatformJobStatus.EXCEPTION.getKey(),
                        Constants.PlatformJobStatus.OVER_NUMBER.getKey()
                        Constants.PlatformJobStatus.OVER_NUMBER.getKey(),
                        Constants.PlatformJobStatus.TRANSFERING.getKey()
                )
                .like(PlatformJob::getArriveDate, DateUtil.getCurrDate())
                .orderByDesc(PlatformJob::getId)
        );
        for (PlatformJob platformJob:platformJobList) {
@@ -1994,7 +2040,8 @@
        List<PlatformJob> platformJobList =  platformJobJoinMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
                .selectAll(PlatformJob.class)
                .selectAs(Platform::getName,PlatformJob::getPlatformName)
                .select(" ( now() > DATE_ADD( ( 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  )  ,INTERVAL t2.WAIT_CALL_TIME MINUTE) ) as isTimeOut   ")
                .select(" ( now() >= DATE_ADD( ( 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  )  ,INTERVAL t2.WAIT_CALL_TIME MINUTE) ) as isTimeOut   ")
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .leftJoin(PlatformGroup.class,PlatformGroup::getId,Platform::getGroupId)
                .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey())
@@ -2002,10 +2049,13 @@
        );
        //如果超时 处理数据 并发送led与广播
        for (PlatformJob platformJob:platformJobList) {
            JobOperateDTO jobOperateDTO = new JobOperateDTO();
            jobOperateDTO.setJobId(platformJob.getId());
            this.platformOverNumber(jobOperateDTO);
            this.cancelInPark(platformJob);
            if(Constants.equalsInteger(platformJob.getIsTimeOut(),Constants.ONE)){
                JobOperateDTO jobOperateDTO = new JobOperateDTO();
                jobOperateDTO.setJobId(platformJob.getId());
                this.platformOverNumber(jobOperateDTO);
                this.cancelInPark(platformJob);
            }
        }
    }
@@ -2049,4 +2099,6 @@
    }
}