k94314517
2024-09-26 b82a5aa7d6167748cce7e94f53b6a3b1fbc201b3
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -4,6 +4,13 @@
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.CarChargeAddRequest;
import com.doumee.core.haikang.model.param.request.ParkReservationAddRequest;
import com.doumee.core.haikang.model.param.request.ParkReservationDelRequest;
import com.doumee.core.haikang.model.param.respose.ParkReservationAddResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.model.LoginUserInfo;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
@@ -83,6 +90,12 @@
    @Autowired
    private PlatformShowParamMapper platformShowParamMapper;
    @Autowired
    private ParksMapper parksMapper;
    @Autowired
    private VisitParkMapper visitParkMapper;
    @Override
    public Integer create(PlatformJob platformJob) {
@@ -161,7 +174,8 @@
                .selectAs(PlatformGroup::getName,PlatformJob::getPlatformGroupName)
                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
                .selectAs(SystemUser::getUsername,PlatformJob::getOutUserName)
                .selectAs(PlatformWmsJob::getIoCreatedate,PlatformJob::getIoCreatedate)
                .selectAs(SystemUser::getRealname,PlatformJob::getOutUserName)
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .leftJoin(PlatformGroup.class,PlatformGroup::getId,Platform::getGroupId)
                .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
@@ -189,6 +203,7 @@
                .eq(pageWrap.getModel().getSingType() != null, PlatformJob::getSingType, pageWrap.getModel().getSingType())
                .eq(pageWrap.getModel().getSignDistance() != null, PlatformJob::getSignDistance, pageWrap.getModel().getSignDistance())
                .eq(pageWrap.getModel().getPlatformNames() != null, PlatformJob::getPlatformNames, pageWrap.getModel().getPlatformNames())
                .like(pageWrap.getModel().getPlatformName() != null, Platform::getName, pageWrap.getModel().getPlatformName())
                .eq(pageWrap.getModel().getPlatforms() != null, PlatformJob::getPlatforms, pageWrap.getModel().getPlatforms())
                .eq(pageWrap.getModel().getPlatformId() != null, PlatformJob::getPlatformId, pageWrap.getModel().getPlatformId())
                .ge(pageWrap.getModel().getInwaitDate() != null, PlatformJob::getInwaitDate, Utils.Date.getStart(pageWrap.getModel().getInwaitDate()))
@@ -244,8 +259,8 @@
                .ge(pageWrap.getModel().getBeginWorkDateStart() != null, PlatformJob::getStartDate, Utils.Date.getStart(pageWrap.getModel().getBeginWorkDateStart()))
                .le(pageWrap.getModel().getBeginWorkDateEnd() != null, PlatformJob::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getBeginWorkDateEnd()))
                .ge(pageWrap.getModel().getCreateDateStart() != null, PlatformJob::getStartDate, Utils.Date.getStart(pageWrap.getModel().getCreateDateStart()))
                .le(pageWrap.getModel().getCreateDateEnd() != null, PlatformJob::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDateEnd()))
                .ge(pageWrap.getModel().getCreateDateStart() != null, PlatformWmsJob::getIoCreatedate, Utils.Date.getStart(pageWrap.getModel().getCreateDateStart()))
                .le(pageWrap.getModel().getCreateDateEnd() != null, PlatformWmsJob::getIoCreatedate, Utils.Date.getEnd(pageWrap.getModel().getCreateDateEnd()))
                .eq(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ONE,pageWrap.getModel().getJobType()), PlatformJob::getType, Constants.platformJobType.sgscxh)
                .ne(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ZERO,pageWrap.getModel().getJobType()), PlatformJob::getType, Constants.platformJobType.sgscxh)
        ;
@@ -282,10 +297,6 @@
                .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
                .eq(pageWrap.getModel().getPlatformGroupId() != null, PlatformJob::getPlatformGroupId, pageWrap.getModel().getPlatformGroupId())
                .like(pageWrap.getModel().getCarCodeFront() != null, PlatformJob::getCarCodeFront, pageWrap.getModel().getCarCodeFront())
//                .eq(Objects.nonNull(pageWrap.getModel().getCallType())
//                        &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.ONE),
//                        PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
//                )
                .apply(Objects.nonNull(pageWrap.getModel().getCallType())
                                &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.ONE),
@@ -311,7 +322,7 @@
                                &&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.THREE),
                        i->i.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()).or()
                                .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.IN_WAIT.getKey()).or()
                                .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey()).or()
//                                .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey()).or()
                                .apply(" ( t.status = "+Constants.PlatformJobStatus.TRANSFERING.getKey()+" and t.PLATFORM_GROUP_ID = "+pageWrap.getModel().getPlatformGroupId()+" ) ")
                )
//                .like(PlatformJob::getArriveDate,DateUtil.dateTypeToString(new Date(),"yyyy-MM-dd"))
@@ -536,6 +547,16 @@
        }else{
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"签到类型错误");
        }
        //查询月台组数据
        PlatformGroup platformGroup = platformGroupMapper.selectById(platformJob.getPlatformGroupId());
        if(Objects.isNull(platformGroup)){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"未查询到月台组信息");
        }
        if(System.currentTimeMillis() > DateUtil.getDateByString(DateUtil.getCurrDate() + " " + platformGroup.getEndTime() + ":59" ).getTime()
        || System.currentTimeMillis() < DateUtil.getDateByString(DateUtil.getCurrDate() + " " + platformGroup.getStartTime() + ":00" ).getTime()){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"未在工作时间["+platformGroup.getStartTime() + "-" + platformGroup.getEndTime() +"],无法进行签到");
        }
        platformJob.setSignDate(new Date());
        platformJob.setSingType(signInDTO.getSignType());
        platformJob.setStatus(Constants.PlatformJobStatus.WAIT_CALL.getKey());
@@ -603,13 +624,16 @@
        ){
            //查询前方排队数量
            this.queryWaitNum(platformJob);
            Platform platform = platformJoinMapper.selectById(platformJob.getPlatformId());
            if(Objects.nonNull(platform)){
                platformJob.setPlatformName(platform.getName());
            }
        }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
            //作业月台信息
            Platform platform = platformJoinMapper.selectById(platformJob.getPlatformId());
            if(Objects.nonNull(platform)){
                platformJob.setPlatformName(platform.getName());
            }
        }
        platformJob.dealTime();
        this.getWorkTime(platformJob);
@@ -664,7 +688,7 @@
                            .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                            .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                            .eq(PlatformJob::getPlatformGroupId,platformGroup.getId())
                            .ge(Objects.nonNull(platformJob),PlatformJob::getSignDate,DateUtil.dateTypeToString(platformJob.getSignDate(),"yyyy-MM-dd HH:mm:ss"))
                            .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())
@@ -728,7 +752,7 @@
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void platformInPark(JobOperateDTO jobOperateDTO){
    public PlatformJob platformInPark(JobOperateDTO jobOperateDTO){
        if(Objects.isNull(jobOperateDTO)
                || Objects.isNull(jobOperateDTO.getJobId())
                || Objects.isNull(jobOperateDTO.getPlatformId())){
@@ -767,17 +791,110 @@
        platformJob.setEditDate(new Date());
        platformJobMapper.updateById(platformJob);
        if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)
        || Constants.equalsInteger(platformJob.getType(),Constants.THREE)
        || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
            //TODO 下发入园权限
        }
        //存储操作日志
        savePlatformLog(Constants.PlatformJobLogType.IN_WAIT.getKey(),oldPlatformJob,platformJob,
                Constants.PlatformJobLogType.IN_WAIT.getInfo());
        return platformJob;
    }
    @Override
    public void sendInPark(PlatformJob platformJob){
        if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)
                || Constants.equalsInteger(platformJob.getType(),Constants.THREE)
                || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
            //查询当前启用的停车场
            List<Parks> parksList = parksMapper.selectList(new QueryWrapper<Parks>()
                    .lambda()
                    .isNotNull(Parks::getHkId)
                    .eq(Parks::getIsdeleted,Constants.ZERO));
            List<VisitPark> visitParkList = new ArrayList<>();
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(parksList)){
                Boolean sendStatus = true;
                if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(parksList)){
                    for (Parks parks:parksList) {
                        VisitPark visitPark = new VisitPark();
                        visitPark.setIsdeleted(Constants.ZERO);
                        visitPark.setCreateDate(new Date());
                        visitPark.setVisitApplyId(platformJob.getId().toString());
                        visitPark.setCarCode(platformJob.getCarCodeFront());
                        visitPark.setParkId(parks.getId().toString());
                        visitPark.setStartTime(new Date());
                        visitPark.setEndTime(DateUtil.getXMinuteAfterDate(visitPark.getStartTime(),Integer.valueOf(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.POWER_MINUTE).getCode())));
                        visitPark.setParkHkId(parks.getHkId());
                        visitPark.setObjType(Constants.ONE);
                        ParkReservationAddRequest request = new ParkReservationAddRequest();
                        request.setPlateNo(visitPark.getCarCode());
                        request.setParkSyscode(visitPark.getParkHkId());
                        request.setPhoneNo(platformJob.getDrivierPhone());
                        request.setOwner(platformJob.getDriverName());
                        request.setAllowTimes(Constants.ONE+"");
                        request.setIsCharge(Constants.ONE+"");
                        request.setStartTime(Objects.isNull(visitPark.getStartTime())?DateUtil.getISO8601Timestamp2(new Date()):DateUtil.getISO8601Timestamp2(visitPark.getStartTime()));
                        request.setEndTime(Objects.isNull(visitPark.getEndTime())?"2999-12-31T00:00:00+08:00":DateUtil.getISO8601Timestamp2(visitPark.getEndTime()));
                        BaseResponse response =  HKService.parkReservationAddition(request);
                        visitPark.setHkDate(new Date());
                        if(response!=null
                                && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                            ParkReservationAddResponse parkReservationAddResponse = (ParkReservationAddResponse) response.getData();
                            visitPark.setHkId(parkReservationAddResponse.getReserveOrderNo());
                            visitPark.setHkStatus(Constants.ONE);
                            visitPark.setRemark("包期成功");
                        }else{
                            visitPark.setHkStatus(Constants.TWO);
                            visitPark.setRemark("包期失败~");
                            //下发失败  标记主业务状态为下发失败
                            sendStatus = false;
                        }
                        visitParkList.add(visitPark);
                    }
                    visitParkMapper.insert(visitParkList);
                    platformJob.setInHkdate(new Date());
                    if(sendStatus){
                        platformJob.setInHkstatus(Constants.TWO);
                    }else{
                        platformJob.setInHkstatus(Constants.THREE);
                    }
                    platformJobMapper.updateById(platformJob);
                }
            }
        }
    }
    @Override
    public void cancelInPark(PlatformJob platformJob){
        if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)
                || Constants.equalsInteger(platformJob.getType(),Constants.THREE)
                || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
            List<VisitPark> visitParkList = visitParkMapper.selectList(new QueryWrapper<VisitPark>().lambda()
                    .eq(VisitPark::getVisitApplyId,platformJob.getId())
                    .eq(VisitPark::getObjType,Constants.ONE)
                    .eq(VisitPark::getHkStatus,Constants.ONE)
                    .isNotNull(VisitPark::getHkId)
                    .apply(" END_TIME > now() ")
            );
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(visitParkList)){
                for (VisitPark visitPark:visitParkList) {
                    ParkReservationDelRequest param = new ParkReservationDelRequest();
                    param.setReserveOrderNo(visitPark.getHkId());
                    BaseResponse response =  HKService.parkReservationDeletion(param);
                    if(response!=null
                            && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                        visitPark.setHkStatus(Constants.THREE);
                        visitPark.setIsdeleted(Constants.ONE);
                        visitPark.setEditDate(new Date());
                        visitParkMapper.updateById(visitPark);
                    }
                }
            }
        }
    }
    /**
@@ -785,7 +902,7 @@
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void platformCallNumber(JobOperateDTO jobOperateDTO){
    public PlatformJob platformCallNumber(JobOperateDTO jobOperateDTO){
        if(Objects.isNull(jobOperateDTO)
                || Objects.isNull(jobOperateDTO.getJobId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -810,7 +927,7 @@
        if(platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
                .eq(PlatformJob::getPlatformId,platform.getId())
                .in(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey(),Constants.PlatformJobStatus.WORKING.getKey())
        )>platform.getWorkingNum()){
        )>=platform.getWorkingNum()){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"超出月台可同时作业数量["+platform.getWorkingNum()+"辆]");
        };
@@ -836,6 +953,7 @@
        //存储操作日志
        savePlatformLog(Constants.PlatformJobLogType.CALLED.getKey(),oldPlatformJob,platformJob,
                Constants.PlatformJobLogType.CALLED.getInfo().replace("{data}",platform.getName()));
        return platformJob;
    }
@@ -958,7 +1076,7 @@
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void beginWork(JobOperateDTO jobOperateDTO){
    public PlatformJob beginWork(JobOperateDTO jobOperateDTO){
        if(Objects.isNull(jobOperateDTO)
                || Objects.isNull(jobOperateDTO.getJobId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -989,6 +1107,8 @@
        //存储操作日志
        savePlatformLog(Constants.PlatformJobLogType.WORKING.getKey(),oldPlatformJob,platformJob,
                Constants.PlatformJobLogType.WORKING.getInfo().replace("{data}",platform.getName()));
        return platformJob;
    }
@@ -997,7 +1117,7 @@
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void finishWork(JobOperateDTO jobOperateDTO){
    public PlatformJob finishWork(JobOperateDTO jobOperateDTO){
        if(Objects.isNull(jobOperateDTO)
                || Objects.isNull(jobOperateDTO.getJobId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -1006,7 +1126,8 @@
        if(Objects.isNull(platformJob)){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
        if(! (Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())
        ||Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.EXCEPTION.getKey()) )){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,业务状态已流转!");
        }
        PlatformJob oldPlatformJob = new PlatformJob();
@@ -1024,9 +1145,10 @@
            //TODO 外协车装货 查询TMS 电子锁情况
        }else if(Constants.equalsInteger(platformJob.getType(),Constants.ONE) || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
            //TODO 外协车卸货 或者 市公司车卸货 则根据任务情况进行下发离园权限
            //TODO 外协车卸货 或者 市公司车卸货 则根据任务情况
        }
        return platformJob;
    }
@@ -1035,7 +1157,7 @@
     */
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public void powerLevel(JobOperateDTO jobOperateDTO){
    public PlatformJob powerLevel(JobOperateDTO jobOperateDTO){
        if(Objects.isNull(jobOperateDTO)
                || Objects.isNull(jobOperateDTO.getJobId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
@@ -1053,11 +1175,16 @@
        platformJob.setOutHkdate(new Date());
        platformJob.setStatus(Constants.PlatformJobStatus.AUTHED_LEAVE.getKey());
        platformJob.setEditDate(new Date());
        platformJob.setRemark(jobOperateDTO.getRemark());
        platformJobMapper.updateById(platformJob);
        //存储操作日志
        savePlatformLog(Constants.PlatformJobLogType.AUTHED_LEAVE.getKey(),oldPlatformJob,platformJob ,
                Constants.PlatformJobLogType.AUTHED_LEAVE.getInfo());
        //TODO 授权车辆离场权限
        return platformJob;
    }
@@ -1162,6 +1289,7 @@
                platformLog.setParam2(DateUtil.dateTypeToString(platformLog.getCreateDate(),"yyyy-MM-dd HH:mm:ss"));
                String v = Long.toString((platformLog.getCreateDate().getTime() - DateUtil.StringToDate(lastBeginPlatform.getParam1(),"yyyy-MM-dd HH:mm:ss").getTime() )/ 1000) ;
                platformLog.setParam3(v);
                platformLog.setRemark(platformJobBefor.getPlatformId().toString());
            }else{
                platformLog.setParam3("0");
            }
@@ -1189,6 +1317,7 @@
                platformLog.setParam2(DateUtil.dateTypeToString(platformLog.getCreateDate(),"yyyy-MM-dd HH:mm:ss"));
                String v = Long.toString((platformJobAfter.getDoneDate().getTime() -  DateUtil.StringToDate(lastBeginPlatform.getParam1(),"yyyy-MM-dd HH:mm:ss").getTime()) / 1000) ;
                platformLog.setParam3(v);
                platformLog.setRemark(platformJobBefor.getPlatformId().toString());
            }
        }else if(Constants.equalsInteger(objType,Constants.PlatformJobLogType.WORKING.getKey())){
            platformLog.setParam1(DateUtil.dateTypeToString(platformLog.getCreateDate(),"yyyy-MM-dd HH:mm:ss"));
@@ -1290,7 +1419,9 @@
                .selectAll(PlatformJob.class)
                .selectAs(Platform::getName,PlatformJob::getPlatformName)
                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
                .selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .leftJoin(PlatformWmsJob.class,PlatformWmsJob::getJobId,PlatformJob::getId)
                .eq(PlatformJob::getPlatformId,platformId)
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .in(PlatformJob::getStatus,
@@ -1310,7 +1441,7 @@
            //查询前方排队数量
            this.queryWaitNum(platformJob);
        }
        PlatformWorkVO platformWorkVO = PlatformGroupServiceImpl.getPlatformWorkVO(platformId,platformJobList);
        PlatformWorkVO platformWorkVO = PlatformGroupServiceImpl.getPlatformWorkVO(platformJoinMapper.selectById(platformId),platformJobList);
        return platformWorkVO;
    }