jiangping
2025-02-26 21ffb032824db3c392f63d318d36efee33326b80
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -10,7 +10,7 @@
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.service.business.third.WmsService;
import com.doumee.dao.business.dao.UserActionMapper;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
@@ -75,6 +75,8 @@
    @Autowired
    private PlatformJobMapper platformJobMapper;
    @Autowired
    private UserActionMapper userActionMapper;
    @Autowired
    private TmsService tmsService;
@@ -147,6 +149,30 @@
    @Override
    @Transactional(rollbackFor = {BusinessException.class})
    public  void deleteById(Integer id,LoginUserInfo user) {
        Date date = new Date();
        PlatformJob job = platformJobMapper.selectById(id);
        if(job==null ||Constants.equalsInteger(Constants.ONE,job.getIsdeleted())){
            throw new BusinessException(ResponseStatus.DATA_EMPTY);
        }
        if(! Constants.equalsInteger(Constants.PlatformJobStatus.CANCEL.getKey(),job.getStatus())){
            throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"对不起,只能删除已取消的作业任务!");
        }
        platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
                        .set(PlatformJob::getIsdeleted,Constants.ONE)
                        .set(PlatformJob::getEditDate,date)
                        .set(PlatformJob::getEditor,user.getId())
                        .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey())
                        .eq(PlatformJob::getId,id));
        String[] params = new String[3];
        params[0] = user.getRealname();
        params[1]=DateUtil.getPlusTime2(date);
        params[2]=job.getBillCode()+"-【司机:"+job.getDriverName()+" "+job.getDrivierPhone()+"】-【车牌号:"+job.getCarCodeFront()+"】";
        //记录删除日志
        UserActionServiceImpl.saveUserActionBiz(user,id,Constants.UserActionType.PLATFROM_JOB_DEL,userActionMapper,date,params,JSONObject.toJSONString(job));
    }
    @Override
    public void delete(Integer id) {
        platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
                        .set(PlatformJob::getIsdeleted,Constants.ONE)
@@ -205,6 +231,7 @@
        IPage<PlatformJob> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<PlatformJob> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        pageWrap.getModel().setIsdeleted(Constants.ZERO);
        queryWrapper
                .selectAll(PlatformJob.class)
                .selectAs(Platform::getName,PlatformJob::getPlatformName)
@@ -297,8 +324,8 @@
                .apply(pageWrap.getModel().getQueryStatus() != null, " find_in_set(t.`STATUS`,'"+pageWrap.getModel().getQueryStatus()+"')")
                .apply(pageWrap.getModel().getQueryStatusForPower() != null, " find_in_set(t.`STATUS`,'"+pageWrap.getModel().getQueryStatusForPower()+"')")
                .apply(pageWrap.getModel().getQueryType() != null, " find_in_set(t.TYPE,'"+pageWrap.getModel().getQueryType()+"')")
                .ge(pageWrap.getModel().getCreateDateStart() != null, PlatformJob::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDateStart()))
                .le(pageWrap.getModel().getCreateDateEnd() != null, PlatformJob::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDateEnd()))
                .ge(pageWrap.getModel().getCreateDateStart() != null, PlatformJob::getCreateDate,  pageWrap.getModel().getCreateDateStart())
                .le(pageWrap.getModel().getCreateDateEnd() != null, PlatformJob::getCreateDate,  pageWrap.getModel().getCreateDateEnd())
                .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().getBeginDoneDateStart() != null, PlatformJob::getDoneDate, Utils.Date.getStart(pageWrap.getModel().getBeginDoneDateStart()))
@@ -471,7 +498,9 @@
                platformJob.setWaitTime("预计等待:-小时-分钟");
            }
        }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())
        || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){
        || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.DONE.getKey())
                || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
                || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey())){
            //查询最后开始任务的月台记录  日志表  因为存在异常挂起 转移 等问题
            PlatformLog platformLog = platformLogMapper.selectOne(new QueryWrapper<PlatformLog>().lambda()
                    .eq(PlatformLog::getJobId,platformJob.getId())
@@ -494,6 +523,7 @@
            }
        }
        platformJob.setWorkTimeStr(DateUtil.getTimeStrBySecond(platformJob.getWorkTime()));
    }
    
    
@@ -597,11 +627,17 @@
        BeanUtils.copyProperties(platformJob,oldPlatformJob);
        if(Constants.equalsInteger(signInDTO.getSignType(),Constants.ZERO)){
            if(!StringUtils.equals(platformJob.getDrivierPhone(),signInDTO.getLoginUserInfo().getMobile())){
                throw new BusinessException(ResponseStatus.DATA_EMPTY);
            }
            if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"业务状态已流转,请刷新查看");
            }
            this.distanceSignIn(signInDTO,platformJob);
        }else if(Constants.equalsInteger(signInDTO.getSignType(),Constants.ONE)){
            if(!StringUtils.equals(platformJob.getDrivierPhone(),signInDTO.getLoginUserInfo().getMobile())){
                throw new BusinessException(ResponseStatus.DATA_EMPTY);
            }
            if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){
                throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"业务状态已流转,请刷新查看");
            }
@@ -649,7 +685,6 @@
                || Objects.isNull(signInDTO.getLnt())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"经纬度信息异常");
        }
        //获取签到点的经纬度
        Double lat = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LAT).getCode());
        Double lnt = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LNT).getCode());
@@ -674,11 +709,9 @@
        }
    }
    @Override
    public PlatformJob getDetail(JobDetailDTO jobDetailDTO){
        if(Objects.isNull(jobDetailDTO)
        || Objects.isNull(jobDetailDTO.getJobId())){
        if(Objects.isNull(jobDetailDTO)   || Objects.isNull(jobDetailDTO.getJobId())){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        PlatformJob platformJob  = platformJobMapper.selectById(jobDetailDTO.getJobId());
@@ -688,14 +721,16 @@
        if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())){
            //待签到 计算距离
            if(Objects.nonNull(jobDetailDTO.getLnt())&&Objects.nonNull(jobDetailDTO.getLat())){
                //获取签到点的经纬度
                Double lat = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LAT).getCode());
                Double lnt = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LNT).getCode());
                //获取2个点的距离X米
                Double getDistanceDouble = PositionUtil.getDistance(jobDetailDTO.getLnt(),jobDetailDTO.getLat(),lnt,lat);
                //转换km
                BigDecimal getDistance = BigDecimal.valueOf(getDistanceDouble).divide(new BigDecimal(1000),2,BigDecimal.ROUND_HALF_UP);
                platformJob.setGetDistance(getDistance);
                if(jobDetailDTO.getLat()!=null && jobDetailDTO.getLnt()!=null){
                    //获取签到点的经纬度
                    Double lat = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LAT).getCode());
                    Double lnt = Double.parseDouble(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_PLACE_LNT).getCode());
                    //获取2个点的距离X米
                    Double getDistanceDouble = PositionUtil.getDistance(jobDetailDTO.getLnt(),jobDetailDTO.getLat(),lnt,lat);
                    //转换km
                    BigDecimal getDistance = BigDecimal.valueOf(getDistanceDouble).divide(new BigDecimal(1000),2,BigDecimal.ROUND_HALF_UP);
                    platformJob.setGetDistance(getDistance);
                }
            }
        }else if( Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())
                || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())
@@ -883,7 +918,7 @@
        );
        
        //公众号模板消息
        if(Objects.nonNull(platformJob.getDriverId())) {
        if(Objects.nonNull(platformJob.getDrivierPhone())) {
          this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobCallIn,platformJob);
        }
        return platformJob;
@@ -892,7 +927,7 @@
    public void sendWxNotice(String objCode,PlatformJob platformJob){
        SystemUser driver = systemUserMapper.selectOne(new QueryWrapper<SystemUser>().lambda()
                .eq(SystemUser::getDeleted, Constants.ZERO)
                .eq(SystemUser::getType, Constants.ZERO)
                .in(SystemUser::getType, Constants.ZERO,Constants.TWO)
                .eq(SystemUser::getMobile,platformJob.getDrivierPhone())
                .last(" limit 1 "));
        if (Objects.nonNull(driver) && StringUtils.isNotBlank(driver.getOpenid())) {
@@ -1134,7 +1169,7 @@
        );
        //公众号模板消息
        if(Objects.nonNull(platformJob.getDriverId())){
        if(Objects.nonNull(platformJob.getDrivierPhone())){
            this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobSingIn,platformJob);
        }
@@ -1270,7 +1305,7 @@
        );
        //公众号模板消息
        if(Objects.nonNull(platformJob.getDriverId())) {
        if(Objects.nonNull(platformJob.getDrivierPhone())) {
            this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobMove,platformJob);
        }
@@ -1323,7 +1358,7 @@
        );
        //公众号模板消息
        if(Objects.nonNull(platformJob.getDriverId())){
        if(Objects.nonNull(platformJob.getDrivierPhone())){
            this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobOverNum,platformJob);
        }
@@ -1375,7 +1410,7 @@
        );
        //公众号模板消息
        if(Objects.nonNull(platformJob.getDriverId())) {
        if(Objects.nonNull(platformJob.getDrivierPhone())) {
            this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobError,platformJob);
        }
@@ -1429,7 +1464,7 @@
                SmsConstants.platformJobContent.platformJobWorking,platform.getName(),null
        );
        //公众号模板消息
        if(Objects.nonNull(platformJob.getDriverId())) {
        if(Objects.nonNull(platformJob.getDrivierPhone())) {
            this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobWorking,platformJob);
        }
        //广播 led通知
@@ -1530,7 +1565,7 @@
        );
        //公众号模板消息
        if(Objects.nonNull(platformJob.getDriverId())) {
        if(Objects.nonNull(platformJob.getDrivierPhone())) {
            this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobFinish,platformJob);
        }
@@ -2191,8 +2226,11 @@
            List<PlatformJob> calledList = platformJobList.stream().filter(i->Constants.equalsInteger(i.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())).collect(Collectors.toList());
            largeScreenDataVO.setWaitWorkList(calledList);
        }
//        String u = (String) redisTemplate.opsForValue().get(Constants.RedisKeys.BIGSCREEN_UUID);
//        if(StringUtils.isBlank(u)){
        String u =  UUID.randomUUID().toString();
        redisTemplate.opsForValue().set(Constants.RedisKeys.BIGSCREEN_UUID,u,3, TimeUnit.MINUTES);
//        }
        String url = Constants.getWxUrl(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.WX_REDIRECT_URL).getCode(),Constants.WxUrlParams.BISCREEN_CODE,u);
        largeScreenDataVO.setQrCode(url);
        largeScreenDataVO.setAttention(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.SIGN_IN_ATTENTION).getCode());