| | |
| | | savePlatformLog(Constants.PlatformJobLogType.SIGN.getKey(),oldPlatformJob,platformJob, |
| | | Constants.PlatformJobLogType.SIGN.getInfo()); |
| | | //签到微信通知 2025年3月26日14:25:00 |
| | | logger.info("签到微信通知=========================>开始====签到类型=>"+signInDTO.getSignType()+"===>人员主键=>"+platformGroup.getSignInNoticeUsers()); |
| | | log.info("签到微信通知=========================>开始====签到类型=>"+signInDTO.getSignType()+"===>人员主键=>"+platformGroup.getSignInNoticeUsers()); |
| | | if(!Constants.equalsInteger(signInDTO.getSignType(),Constants.TWO)&& |
| | | StringUtils.isNotBlank(platformGroup.getSignInNoticeUsers())){ |
| | | logger.info("签到微信通知=========================>进入"); |
| | | log.info("签到微信通知=========================>进入"); |
| | | List<SystemUser> systemUserList = systemUserMapper.selectList(new QueryWrapper<SystemUser>().lambda() |
| | | .eq(SystemUser::getDeleted,Constants.ZERO).eq(SystemUser::getStatus,Constants.ZERO).isNotNull(SystemUser::getOpenid) |
| | | .in(SystemUser::getMemberId,Arrays.asList(platformGroup.getSignInNoticeUsers().split(","))) |
| | |
| | | ); |
| | | } |
| | | } |
| | | logger.info("签到微信通知=========================>结束"); |
| | | log.info("签到微信通知=========================>结束"); |
| | | } |
| | | |
| | | |
| | |
| | | |
| | | |
| | | |
| | | private Logger logger = LoggerFactory.getLogger(PlatformJobServiceImpl.class); |
| | | |
| | | @Override |
| | | public void sendInPark(PlatformJob platformJob){ |
| | |
| | | jobIds.add(job.getJobId()); |
| | | } |
| | | }catch (Exception e){ |
| | | logger.error("=============更新电子锁状态信息异常:"+e.getMessage()); |
| | | log.error("=============更新电子锁状态信息异常:"+e.getMessage()); |
| | | } |
| | | } |
| | | } |
| | |
| | | return platformJob; |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | @Override |
| | | public void autoPlatformCallCar(WmsService wmsService){ |
| | | //查询当前开启的月台数据 |
| | |
| | | .eq(PlatformGroup::getIsdeleted,Constants.ZERO).eq(PlatformGroup::getAutoCall,Constants.ONE) |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(allPlatformGroup)){ |
| | | log.error("========月台自动叫号============结束:无自动叫号月台组"); |
| | | return; |
| | | } |
| | | //过滤当前时间段不在时间内的月台组 AUTO_CALL_END_TIME AUTO_CALL_START_TIME |
| | |
| | | && Integer.valueOf(i.getAutoCallEndTime().replaceAll(":","")) > nowHm |
| | | ).collect(Collectors.toList()); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(autoCallGroup)){ |
| | | log.error("========月台自动叫号============结束:无工作时间内 自动叫号月台组"); |
| | | return; |
| | | } |
| | | //查询所有月台 |
| | |
| | | .in(Platform::getGroupId,autoCallGroup.stream().map(i->i.getId()).collect(Collectors.toList())) |
| | | ); |
| | | if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(platformList)){ |
| | | log.error("========月台自动叫号============结束:无自动叫号月台"); |
| | | return; |
| | | } |
| | | //循环所有自动叫号月台 |
| | | for (PlatformGroup platformGroup:autoCallGroup) { |
| | | List<Platform> platforms = platformList.stream().filter(i->Constants.equalsInteger(i.getGroupId(),platformGroup.getId())).collect(Collectors.toList()); |
| | | if(CollectionUtils.isEmpty(platforms)){ |
| | | log.error("========月台自动叫号============结束:无自动叫号月台-"+platformGroup.getName()); |
| | | continue; |
| | | } |
| | | Boolean isDefaul = false; |
| | |
| | | } |
| | | } |
| | | for (Platform platform:platforms) { |
| | | |
| | | //月台 叫号入园数量 |
| | | Integer workingNum = platform.getWorkingNum(); |
| | | //查询当前月台是否存在月台叫号数据 如果大于等于可叫号数量 则跳过 |
| | |
| | | .eq(PlatformJob::getPlatformId,platform.getId()) |
| | | .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey())).intValue(); |
| | | if(workNum>=workingNum){ |
| | | log.error("========月台自动叫号============结束:超过自动叫号作业限制-"+platform.getName()); |
| | | continue; |
| | | }; |
| | | |
| | |
| | | .orderByDesc(PlatformJob::getStatus,PlatformJob::getUrgeTime) |
| | | .orderByAsc(PlatformJob::getSignDate)); |
| | | if(CollectionUtils.isEmpty(platformJobList)){ |
| | | log.error("========月台自动叫号============结束:无满足条件的作业1-"+platform.getName()); |
| | | continue; |
| | | } |
| | | for (int i = 0; i < workingNum - workNum ; i++) { |
| | | PlatformJob platformJob = this.getAutoCallJob(platformJobList,platform,isDefaul,platformGroup); |
| | | if(Objects.isNull(platformJob)){ |
| | | log.error("========月台自动叫号============结束:无满足条件的作业2-"+platform.getName()); |
| | | continue; |
| | | } |
| | | JobOperateDTO jobOperateDTO = new JobOperateDTO(); |
| | |
| | | wmsService.orderPlatformBind(callPlatformJob); |
| | | } |
| | | }catch (Exception e){ |
| | | logger.error("月台自动叫号权限下发失败:{}"+JSONObject.toJSONString(platform)); |
| | | log.error("月台自动叫号权限下发失败:{}"+JSONObject.toJSONString(platform)); |
| | | } |
| | | } |
| | | } |
| | |
| | | wmsService.orderPlatformBind(callPlatformJob); |
| | | } |
| | | }catch (Exception e){ |
| | | logger.error("自动叫号入园权限下发失败:{}"+JSONObject.toJSONString(platform)); |
| | | log.error("自动叫号入园权限下发失败:{}"+JSONObject.toJSONString(platform)); |
| | | } |
| | | } |
| | | } |
| | |
| | | // 3)如若不满足以上两点,则自动分配至散件月台进行作业; |
| | | if(Constants.equalsInteger(platformGroup.getType(),Constants.ONE)){ |
| | | //装货月台 - 出库 |
| | | if(Objects.nonNull(platformJob.getWmsId())){ |
| | | if(Constants.equalsInteger(platformJob.getOrigin(),Constants.ONE)){ |
| | | // WM推送任务 |
| | | List<PlatformWmsDetail> platformWmsDetailList = platformWmsDetailMapper.selectList(new QueryWrapper<PlatformWmsDetail>().lambda() |
| | | .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO) |
| | |
| | | //单一品类 且当前循环月台为整托盘月台 |
| | | return platformJob; |
| | | }else if(!Constants.equalsInteger(materialNameSet.size(),Constants.ONE)){ |
| | | if(Constants.equalsInteger(platform.getType(),Constants.ZERO)){ |
| | | //非单一品类 |
| | | //如果单个运单包含两个及以上的品规,则需要判断是否存在单个品规超过 500 件且该品规数量占整个运单任务量的 60%及以上,则自动分配至在整托盘 月台进行月台; |
| | | BigDecimal total = platformWmsDetailList.stream().map(i->i.getIoQty()).reduce(BigDecimal.ZERO,BigDecimal::add); |
| | | BigDecimal compareTotal = new BigDecimal("500"); |
| | | if((total.multiply(new BigDecimal("0.6")).compareTo(compareTotal)>Constants.ZERO)){ |
| | | compareTotal = total.multiply(new BigDecimal("0.6")); |
| | | } |
| | | for (String name:materialNameSet) { |
| | | BigDecimal quanlity = platformWmsDetailList.stream().filter(i->i.getMaterialName().equals(name)).map(i->i.getIoQty()).reduce(BigDecimal.ZERO,BigDecimal::add); |
| | | if(quanlity.compareTo(compareTotal)>Constants.ZERO){ |
| | | //超过规定数量 且当前月台为整托月台 |
| | | return platformJob; |
| | | } |
| | | //非单一品类 |
| | | //如果单个运单包含两个及以上的品规,则需要判断是否存在单个品规超过 500 件且该品规数量占整个运单任务量的 60%及以上,则自动分配至在整托盘 月台进行月台; |
| | | BigDecimal total = platformWmsDetailList.stream().map(i->i.getIoQty()).reduce(BigDecimal.ZERO,BigDecimal::add); |
| | | BigDecimal compareTotal = new BigDecimal("500"); |
| | | if((total.multiply(new BigDecimal("0.6")).compareTo(compareTotal)>Constants.ZERO)){ |
| | | compareTotal = total.multiply(new BigDecimal("0.6")); |
| | | } |
| | | Boolean flag = false; //是否存在大于总运单60%数量的数据 |
| | | for (String name:materialNameSet) { |
| | | BigDecimal quanlity = platformWmsDetailList.stream().filter(i->i.getMaterialName().equals(name)).map(i->i.getIoQty()).reduce(BigDecimal.ZERO,BigDecimal::add); |
| | | if(quanlity.compareTo(compareTotal)>Constants.ZERO){ |
| | | flag = true; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | //循环WMS任务 未分配至整托盘月台则直接分配到散托盘月台 |
| | | if(Constants.equalsInteger(platform.getType(),Constants.ONE)){ |
| | | return platformJob; |
| | | if(Constants.equalsInteger(platform.getType(),Constants.ZERO)&&flag){ |
| | | return platformJob; |
| | | }else if(Constants.equalsInteger(platform.getType(),Constants.ONE)&&!flag){ |
| | | return platformJob; |
| | | } |
| | | } |
| | | }else{ |
| | | //物流车预约的任务 直接分配 散托盘月台 |
| | | if(Constants.equalsInteger(platform.getType(),Constants.TWO)){ |
| | | if(Constants.equalsInteger(platform.getType(),Constants.ONE)){ |
| | | return platformJob; |
| | | } |
| | | } |
| | |
| | | if(Objects.isNull(platformWmsJob)){ |
| | | continue; |
| | | } |
| | | SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.IN_REPERTOTY_CODE); |
| | | SystemDictData systemDictData = systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.IN_REPERTOTY_CODE); |
| | | if(Objects.nonNull(systemDictData)){ |
| | | //判断放置位置 |
| | | if(platformWmsDetailMapper.selectCount(new QueryWrapper<PlatformWmsDetail>().lambda().eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO) |
| | | Boolean flag = platformWmsDetailMapper.selectCount(new QueryWrapper<PlatformWmsDetail>().lambda().eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO) |
| | | .eq(PlatformWmsDetail::getWmsJobId,platformWmsJob.getId()) |
| | | .apply(" find_in_set(IN_REPERTOTY_CODE ,'"+systemDictData.getCode()+"')") |
| | | .eq(PlatformWmsDetail::getInRepertotyCode,"") |
| | | .isNotNull(PlatformWmsDetail::getInRepertotyCode) |
| | | ) > Constants.ZERO && Constants.equalsInteger(platform.getType(),Constants.ONE)){ |
| | | ) > Constants.ZERO; |
| | | //判断发货点信息 |
| | | if(flag && Constants.equalsInteger(platform.getType(),Constants.ONE)){ |
| | | return platformJob; |
| | | }else if(!flag && Constants.equalsInteger(platform.getType(),Constants.ZERO)){ |
| | | return platformJob; |
| | | } |
| | | } |
| | | if(Constants.equalsInteger(platform.getType(),Constants.ZERO)){ |
| | | return platformJob; |
| | | } |
| | | }else{ |
| | | //物流车预约的任务 直接分配 散托盘月台 |
| | | //物流车预约的任务 直接分配 整托盘月台 |
| | | if(Constants.equalsInteger(platform.getType(),Constants.ZERO)){ |
| | | return platformJob; |
| | | } |
| | |
| | | return null; |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public void jobUrge(Integer jobId,LoginUserInfo loginUserInfo){ |
| | | if(Objects.isNull(jobId)){ |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST); |
| | | } |
| | | PlatformJob platformJob = platformJobMapper.selectById(jobId); |
| | | if(Objects.isNull(platformJob)){ |
| | | throw new BusinessException(ResponseStatus.DATA_EMPTY); |
| | | } |
| | | if(!(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey()) |
| | | || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey()) |
| | | || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.TRANSFERING.getKey()))){ |
| | | throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"对不起,状态已流转"); |
| | | } |
| | | |
| | | platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda() |
| | | .set(PlatformJob::getUrgeUser,loginUserInfo.getId()) |
| | | .set(PlatformJob::getUrgeTime,DateUtil.getCurrDateTime()) |
| | | .set(PlatformJob::getEditDate,DateUtil.getCurrDateTime()) |
| | | .eq(PlatformJob::getId,platformJob.getId()) |
| | | ); |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | } |