From dd448977e5c770bf3ae600ee782e3445e8100d99 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期二, 21 十月 2025 16:05:05 +0800
Subject: [PATCH] 最新版本541200007
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java | 449 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 436 insertions(+), 13 deletions(-)
diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
index 1f540a2..dd04be4 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java
@@ -12,6 +12,8 @@
import com.doumee.core.haikang.model.param.respose.ParkReservationAddResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.dao.business.dao.UserActionMapper;
+import com.doumee.dao.system.model.SystemDictData;
+import com.doumee.service.business.third.WmsService;
import com.doumee.service.business.third.model.LoginUserInfo;
import com.doumee.service.business.third.model.PageData;
import com.doumee.service.business.third.model.PageWrap;
@@ -245,11 +247,13 @@
.selectAs(PlatformWmsJob::getIoCreatedate,PlatformJob::getIoCreatedate)
.selectAs(SystemUser::getRealname,PlatformJob::getOutUserName)
.selectAs(PlatformBooks::getId,PlatformJob::getBookId)
+ .select("s.REALNAME",PlatformJob::getEditUserName)
.leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
- .leftJoin(PlatformGroup.class,PlatformGroup::getId,Platform::getGroupId)
+ .leftJoin(PlatformGroup.class,PlatformGroup::getId,PlatformJob::getPlatformGroupId)
.leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
.leftJoin(SystemUser.class,SystemUser::getId,PlatformJob::getOutUserId)
.leftJoin(PlatformBooks.class,PlatformBooks::getJobId,PlatformJob::getId)
+ .leftJoin(" system_user s on t.EDITOR = s.id ")
.eq(PlatformJob::getIsdeleted,Constants.ZERO)
.eq(pageWrap.getModel().getId() != null, PlatformJob::getId, pageWrap.getModel().getId())
.eq(pageWrap.getModel().getCreator() != null, PlatformJob::getCreator, pageWrap.getModel().getCreator())
@@ -405,7 +409,7 @@
.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"))
- .orderByDesc(PlatformJob::getStatus)
+ .orderByDesc(PlatformJob::getStatus,PlatformJob::getUrgeTime)
.orderByAsc(PlatformJob::getSignDate)
;
IPage<PlatformJob> platformJobIPage = platformJobJoinMapper.selectJoinPage(page,PlatformJob.class,queryWrapper);
@@ -442,7 +446,7 @@
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformWmsDetailList)){
platformJob.setTotalNum(
- platformWmsDetailList.stream().map(m->m.getIoQty()).reduce(BigDecimal.ZERO,BigDecimal::add)
+ platformWmsDetailList.stream().filter(i->Objects.nonNull(i.getIoQty())).map(m->m.getIoQty()).reduce(BigDecimal.ZERO,BigDecimal::add)
);
platformWmsJob.setPlatformWmsDetailList(platformWmsDetailList);
platformJob.setPlatformWmsJob(platformWmsJob);
@@ -692,10 +696,10 @@
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(",")))
@@ -708,7 +712,7 @@
);
}
}
- logger.info("绛惧埌寰俊閫氱煡=========================>缁撴潫");
+ log.info("绛惧埌寰俊閫氱煡=========================>缁撴潫");
}
@@ -982,7 +986,7 @@
BeanUtils.copyProperties(platformJob,oldPlatformJob);
platformJob.setPlatformId(platform.getId());
platformJob.setInwaitDate(new Date());
- platformJob.setInwaitUserId(jobOperateDTO.getLoginUserInfo().getId());
+ platformJob.setInwaitUserId(Objects.isNull(jobOperateDTO.getLoginUserInfo())?null:jobOperateDTO.getLoginUserInfo().getId());
platformJob.setStatus(Constants.PlatformJobStatus.IN_WAIT.getKey());
platformJob.setEditDate(new Date());
platformJobMapper.updateById(platformJob);
@@ -1032,7 +1036,6 @@
- private Logger logger = LoggerFactory.getLogger(PlatformJobServiceImpl.class);
@Override
public void sendInPark(PlatformJob platformJob){
@@ -1223,7 +1226,7 @@
BeanUtils.copyProperties(platformJob,oldPlatformJob);
platformJob.setCallDate(Objects.isNull(platformJob.getCallDate())?new Date():null);
- platformJob.setCallUserId(jobOperateDTO.getLoginUserInfo().getId());
+ platformJob.setCallUserId(Objects.isNull(jobOperateDTO.getLoginUserInfo())?null:jobOperateDTO.getLoginUserInfo().getId());
platformJob.setStatus(Constants.PlatformJobStatus.CALLED.getKey());
platformJob.setPlatformId(jobOperateDTO.getPlatformId());
//鍒ゆ柇鏄惁闇�瑕佸~鍏呰繘鍘�
@@ -1374,7 +1377,6 @@
platformJob.setEditDate(new Date());
platformJobMapper.updateById(platformJob);
- //TODO 璋冭捣WMS 閫氱煡鏈堝彴杞Щ
//瀛樺偍鎿嶄綔鏃ュ織
savePlatformLog(Constants.PlatformJobLogType.TRANSFERING.getKey(),oldPlatformJob,platformJob,
Constants.PlatformJobLogType.TRANSFERING.getInfo().replace("{data}",oldPlatform.getName()));
@@ -1628,7 +1630,7 @@
TmsBaseResponse<List<TmsLockStatusQueryResponse>> lockResult = tmsService.lockStatusQuery(tmsLock);
if(lockResult!=null && lockResult.getCode()!=null && lockResult.getCode().equals("0")&& lockResult.getData()!=null ){
for(TmsLockStatusQueryResponse s : lockResult.getData()){
- if(StringUtils.isBlank(s.getContractNumber())){
+ if(StringUtils.isBlank(s.getOutDate())){
continue;
}
platformWmsDetailMapper.update(null,new UpdateWrapper<PlatformWmsDetail>().lambda()
@@ -1692,6 +1694,9 @@
if(lockResult!=null && lockResult.getCode()!=null && lockResult.getCode().equals("0")&& lockResult.getData()!=null ){
for(TmsLockStatusQueryResponse s : lockResult.getData()){
try {
+ if(StringUtils.isBlank(s.getOutDate())){
+ continue;
+ }
//寮傚父澶勭悊锛岃兘澶勭悊涓�涓槸涓�涓�
platformWmsDetailMapper.update(null,new UpdateWrapper<PlatformWmsDetail>().lambda()
.eq(PlatformWmsDetail::getContractNum,s.getContractNumber())
@@ -1704,7 +1709,7 @@
jobIds.add(job.getJobId());
}
}catch (Exception e){
- logger.error("=============鏇存柊鐢靛瓙閿佺姸鎬佷俊鎭紓甯革細"+e.getMessage());
+ log.error("=============鏇存柊鐢靛瓙閿佺姸鎬佷俊鎭紓甯革細"+e.getMessage());
}
}
}
@@ -2442,11 +2447,78 @@
/**
+ * 鏇存崲鏈堝彴鍒嗛挓
+ * @param param
+ */
+ @Override
+ public void changPlatformGroup(PlatformJob param, LoginUserInfo loginUser){
+ if(param.getId() ==null || param.getPlatformGroupId()==null) {
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ PlatformJob model = platformJobMapper.selectById(param.getId());
+ if(model ==null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(Constants.equalsInteger(model.getType(),Constants.platformJobType.sgscxh)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"銆愬競鍏徃澶栧崗杞﹀嵏璐с�戜綔涓氱被鍨嬩笉鏀寔鏈堝彴缁勫垏鎹�");
+ }
+ // WAIT_CONFIRM(0, "寰呯‘璁�","寰呯‘璁�" ),
+ // WART_SIGN_IN(1, "寰呯鍒�","寰呯鍒�" ),
+ // WAIT_CALL(2, "宸茬鍒�","宸茬鍒�"),
+ if(!Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.WAIT_CONFIRM.getKey())
+ &&!Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey())
+ &&!Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧�,涓氬姟鐘舵�佸凡娴佽浆锛屼笉鏀寔鏈堝彴缁勫垏鎹紒");
+ }
+ PlatformGroup group = platformGroupMapper.selectById(param.getPlatformGroupId());
+ if(Objects.isNull(group)|| Constants.equalsInteger(group.getIsdeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏈堝彴缁勪俊鎭�");
+ }
+ if(Constants.equalsInteger(model.getType(),Constants.platformJobType.zycxh)
+ ||Constants.equalsInteger(model.getType(),Constants.platformJobType.wxcxh)){
+ if( ! Constants.equalsInteger(group.getType(),Constants.ZERO)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ヤ綔涓氬彧鑳藉湪銆愬畨娉扮墿娴佸嵏璐с�戠被鍨嬬殑鏈堝彴缁勪笅浣滀笟");
+ }
+ }
+ if(Constants.equalsInteger(model.getType(),Constants.platformJobType.zyczh)
+ ||Constants.equalsInteger(model.getType(),Constants.platformJobType.wxczh)){
+ if( ! Constants.equalsInteger(group.getType(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ヤ綔涓氬彧鑳藉湪銆愬畨娉扮墿娴佽璐с�戠被鍨嬬殑鏈堝彴缁勪笅浣滀笟");
+ }
+ }
+ if(Constants.equalsInteger(model.getType(),Constants.platformJobType.sgscxh)
+ && !Constants.equalsInteger(group.getType(),Constants.TWO)){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"璇ヤ綔涓氬彧鑳藉湪銆愬競鍏徃鍗歌揣銆戠被鍨嬬殑鏈堝彴缁勪笅浣滀笟");
+ }
+ PlatformJob platformJob = new PlatformJob();
+ BeanUtils.copyProperties(model,platformJob);
+ platformJob.setPlatformGroupId(param.getPlatformGroupId());
+ platformJob.setEditDate(new Date());
+ platformJob.setTagVirtual(Constants.ONE);
+ platformJob.setTagVirtualUser(platformJob.getEditor());
+ platformJob.setTagVirtualTime(platformJob.getEditDate());
+ platformJob.setEditor(loginUser.getId());
+ int flag = platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
+ .set(PlatformJob::getEditDate,platformJob.getEditDate())
+ .set(PlatformJob::getTagVirtualTime,platformJob.getTagVirtualTime())
+ .set(PlatformJob::getEditor,platformJob.getEditor())
+ .set(PlatformJob::getPlatformGroupId,param.getPlatformGroupId())
+ .set(PlatformJob::getTagVirtualUser,platformJob.getEditor())
+ .set(PlatformJob::getPlatformId,null)//缃┖鍒嗛厤鐨勬湀鍙颁俊鎭�
+ .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CONFIRM.getKey(),
+ Constants.PlatformJobStatus.WART_SIGN_IN.getKey(),
+ Constants.PlatformJobStatus.WAIT_CALL.getKey())
+ .eq(PlatformJob::getId,param.getId()));
+ //瀛樺偍鎿嶄綔鏃ュ織
+ savePlatformLog(Constants.PlatformJobLogType.CHANGE_GROUP.getKey(),model,platformJob,
+ Constants.PlatformJobLogType.CHANGE_GROUP.getInfo().replace("{data}",param.getPlatformGroupName()).replace("{data1}",group.getName()));
+ }
+ /**
* 鎵嬪姩瀹屾垚浣滀笟
* @param jobIdList
*/
@Override
- public void dealJobFinish(List<Integer> jobIdList){
+ public void dealJobFinish(List<Integer> jobIdList,LoginUserInfo loginUserInfo){
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(jobIdList)){
List<PlatformJob> platformJobList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda()
.eq(PlatformJob::getIsdeleted,Constants.ZERO)
@@ -2459,6 +2531,7 @@
platformJobMapper.update(null,new UpdateWrapper<PlatformJob>().lambda()
.set(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey())
.set(PlatformJob::getDoneDate,new Date())
+ .set(PlatformJob::getEditor,loginUserInfo.getId())
.in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CONFIRM.getKey(),Constants.PlatformJobStatus.WART_SIGN_IN.getKey(),Constants.PlatformJobStatus.WAIT_CALL.getKey())
.eq(PlatformJob::getIsdeleted,Constants.ZERO)
.in(PlatformJob::getId,platformJobList.stream().map(i->i.getId()).collect(Collectors.toList())));
@@ -2502,4 +2575,354 @@
return platformJob;
}
+ @Override
+ public void autoPlatformCallCar(WmsService wmsService){
+ //鏌ヨ褰撳墠寮�鍚殑鏈堝彴鏁版嵁
+ List<PlatformGroup> allPlatformGroup = platformGroupMapper.selectList(new QueryWrapper<PlatformGroup>().lambda().eq(PlatformGroup::getStatus,Constants.ZERO)
+ .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 nowHm = Integer.valueOf(DateUtil.getFomartDate(new Date(),"HH:mm").replaceAll(":",""));
+ List<PlatformGroup> autoCallGroup = allPlatformGroup.stream().filter(
+ i->StringUtils.isNotBlank(i.getAutoCallStartTime())&&StringUtils.isNotBlank(i.getAutoCallEndTime())
+ && Integer.valueOf(i.getAutoCallStartTime().replaceAll(":","")) < nowHm
+ && Integer.valueOf(i.getAutoCallEndTime().replaceAll(":","")) > nowHm
+ ).collect(Collectors.toList());
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(autoCallGroup)){
+ log.error("========鏈堝彴鑷姩鍙彿============缁撴潫锛氭棤宸ヤ綔鏃堕棿鍐� 鑷姩鍙彿鏈堝彴缁�");
+ return;
+ }
+ //鏌ヨ鎵�鏈夋湀鍙�
+ List<Platform> platformList = platformJoinMapper.selectList(new QueryWrapper<Platform>()
+ .lambda()
+ .eq(Platform::getIsdeleted,Constants.ZERO)
+ .eq(Platform::getStatus,Constants.ZERO)
+ .isNotNull(Platform::getWorkingNum)
+ .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;
+ if(Constants.equalsInteger(platforms.size(),Constants.ONE)){
+ isDefaul = true;
+ }else{
+ //鏌ヨ鏈堝彴缁勪笅鐨勬湀鍙版槸鍚﹀悓鏃跺瓨鍦ㄦ暣鎵樺拰鏁f墭鏈堝彴
+ if((
+ ((platforms.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).collect(Collectors.toList()).size()>Constants.ZERO)?Constants.ONE:Constants.ZERO)
+ +
+ ((platforms.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()).size()>Constants.ZERO)?Constants.ONE:Constants.ZERO)
+ )==Constants.ONE
+ ){
+ isDefaul = true;
+ }
+ }
+ for (Platform platform:platforms) {
+ //鏈堝彴 鍙彿鍏ュ洯鏁伴噺
+ Integer workingNum = platform.getWorkingNum();
+ //鏌ヨ褰撳墠鏈堝彴鏄惁瀛樺湪鏈堝彴鍙彿鏁版嵁 濡傛灉澶т簬绛変簬鍙彨鍙锋暟閲� 鍒欒烦杩�
+ Integer workNum = platformJobJoinMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
+ .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+ .eq(PlatformJob::getPlatformId,platform.getId())
+ .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey())).intValue();
+ if(workNum>=workingNum){
+ log.error("========鏈堝彴鑷姩鍙彿============缁撴潫锛氳秴杩囪嚜鍔ㄥ彨鍙蜂綔涓氶檺鍒�-"+platform.getName());
+ continue;
+ };
+
+ //鏌ヨ鏈堝彴涓� 鍙互杩涜鍙彿鐨勬暟鎹�
+ List<PlatformJob> platformJobList = platformJobJoinMapper.selectList(new QueryWrapper<PlatformJob>()
+ .lambda()
+ .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+ .eq(PlatformJob::getPlatformGroupId, platformGroup.getId())
+ .apply(" ( " +
+ " ( `STATUS` = "+Constants.PlatformJobStatus.WAIT_CALL.getKey()+" and PLATFORM_GROUP_ID = "+platformGroup.getId()+" )" +
+ " or " +
+ " ( `STATUS` = "+Constants.PlatformJobStatus.IN_WAIT.getKey()+" and PLATFORM_ID = "+platform.getId()+" ) " +
+ " or " +
+ " ( `STATUS` = "+Constants.PlatformJobStatus.TRANSFERING.getKey()+" and PLATFORM_ID = "+platform.getId()+" ) " +
+ ") "
+ )
+ //鎺掑簭鏂瑰紡 鏈堝彴浣滀笟绫诲瀷 锛堣浆绉讳腑 >鍙彿鍏ュ洯锛�> 鍔犳�� > 绛惧埌鏃堕棿
+ .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();
+ jobOperateDTO.setJobId(platformJob.getId());
+ jobOperateDTO.setPlatformId(platform.getId());
+ PlatformJob callPlatformJob = this.platformCallNumber(jobOperateDTO);
+ platformJobList = platformJobList.stream().filter(j->!Constants.equalsInteger(j.getId(),platformJob.getId())).collect(Collectors.toList());
+ try{
+ if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
+ this.sendInPark(platformJob);
+ }
+ if(!Constants.equalsInteger(platformJob.getType(),Constants.FOUR)
+ && StringUtils.isNotBlank(platformJob.getBillCode())){
+ //閫氱煡WMS缁戝畾鏈堝彴淇℃伅
+ wmsService.orderPlatformBind(callPlatformJob);
+ }
+ }catch (Exception e){
+ log.error("鏈堝彴鑷姩鍙彿鏉冮檺涓嬪彂澶辫触锛歿}"+JSONObject.toJSONString(platform));
+ }
+ }
+ }
+ }
+ }
+
+
+
+ @Override
+ public void autoCallInParkCar(WmsService wmsService){
+ //鏌ヨ褰撳墠寮�鍚殑鏈堝彴鏁版嵁
+ List<PlatformGroup> allPlatformGroup = platformGroupMapper.selectList(new QueryWrapper<PlatformGroup>().lambda().eq(PlatformGroup::getStatus,Constants.ZERO)
+ .eq(PlatformGroup::getIsdeleted,Constants.ZERO).eq(PlatformGroup::getAutoCall,Constants.ONE)
+ );
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(allPlatformGroup)){
+ return;
+ }
+ //杩囨护褰撳墠鏃堕棿娈典笉鍦ㄦ椂闂村唴鐨勬湀鍙扮粍 AUTO_CALL_END_TIME AUTO_CALL_START_TIME
+ Integer nowHm = Integer.valueOf(DateUtil.getFomartDate(new Date(),"HH:mm").replaceAll(":",""));
+ List<PlatformGroup> autoCallGroup = allPlatformGroup.stream().filter(
+ i->StringUtils.isNotBlank(i.getAutoCallStartTime())&&StringUtils.isNotBlank(i.getAutoCallEndTime())
+ && Integer.valueOf(i.getAutoCallStartTime().replaceAll(":","")) < nowHm
+ && Integer.valueOf(i.getAutoCallEndTime().replaceAll(":","")) > nowHm
+ ).collect(Collectors.toList());
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(autoCallGroup)){
+ return;
+ }
+ //鏌ヨ鎵�鏈夋湀鍙�
+ List<Platform> platformList = platformJoinMapper.selectList(new QueryWrapper<Platform>()
+ .lambda()
+ .eq(Platform::getIsdeleted,Constants.ZERO)
+ .eq(Platform::getStatus,Constants.ZERO)
+ .isNotNull(Platform::getCallReadyNum)
+ .in(Platform::getGroupId,autoCallGroup.stream().map(i->i.getId()).collect(Collectors.toList()))
+ );
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(platformList)){
+ 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)){
+ continue;
+ }
+ Boolean isDefaul = false;
+ if(Constants.equalsInteger(platforms.size(),Constants.ONE)){
+ isDefaul = true;
+ }else{
+ //鏌ヨ鏈堝彴缁勪笅鐨勬湀鍙版槸鍚﹀悓鏃跺瓨鍦ㄦ暣鎵樺拰鏁f墭鏈堝彴
+ if((((platforms.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)).collect(Collectors.toList()).size()>Constants.ZERO)?Constants.ONE:Constants.ZERO)
+ +
+ ((platforms.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ZERO)).collect(Collectors.toList()).size()>Constants.ZERO)?Constants.ONE:Constants.ZERO)
+ )==Constants.ONE
+ ){
+ isDefaul = true;
+ }
+ }
+ for (Platform platform:platforms) {
+ //鏈堝彴 鍙彿鍏ュ洯鏁伴噺
+ Integer callReadyNum = platform.getCallReadyNum();
+ //鏌ヨ褰撳墠鏈堝彴鏄惁瀛樺湪寰呭紑濮嬩綔涓氭暟鎹� 濡傛灉瀛樺湪鍒欑洿鎺ヨ烦杩囧綋鍓嶆湀鍙�
+ Integer callNum = platformJobJoinMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
+ .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+ .eq(PlatformJob::getPlatformId,platform.getId())
+ .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.IN_WAIT.getKey())).intValue();
+ if(callNum>=callReadyNum){
+ continue;
+ };
+ //鏌ヨ鏈堝彴涓� 鍙互杩涜鍙彿鐨勬暟鎹�
+ List<PlatformJob> platformJobList = platformJobJoinMapper.selectList(new QueryWrapper<PlatformJob>()
+ .lambda()
+ .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+ .eq(PlatformJob::getPlatformGroupId, platformGroup.getId())
+ .apply(" ( `STATUS` = "+Constants.PlatformJobStatus.WAIT_CALL.getKey()+" and PLATFORM_GROUP_ID = "+platformGroup.getId()+" ) ")
+ //鎺掑簭鏂瑰紡 鏈堝彴浣滀笟绫诲瀷 锛堝紓甯告寕璧�>鍙彿鍏ュ洯锛�> 鍔犳�� > 绛惧埌鏃堕棿
+ .orderByDesc(PlatformJob::getStatus,PlatformJob::getUrgeTime)
+ .orderByAsc(PlatformJob::getSignDate));
+ if(CollectionUtils.isEmpty(platformJobList)){
+ continue;
+ }
+ for (int i = 0; i < callReadyNum - callNum ; i++) {
+ PlatformJob platformJob = this.getAutoCallJob(platformJobList,platform,isDefaul,platformGroup);
+ JobOperateDTO jobOperateDTO = new JobOperateDTO();
+ jobOperateDTO.setJobId(platformJob.getId());
+ jobOperateDTO.setPlatformId(platform.getId());
+ PlatformJob callPlatformJob = this.platformInPark(jobOperateDTO);
+ platformJobList = platformJobList.stream().filter(j->!Constants.equalsInteger(j.getId(),platformJob.getId())).collect(Collectors.toList());
+ try{
+ if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
+ this.sendInPark(platformJob);
+ }
+ if(!Constants.equalsInteger(platformJob.getType(),Constants.FOUR)
+ && StringUtils.isNotBlank(platformJob.getBillCode())){
+ //閫氱煡WMS缁戝畾鏈堝彴淇℃伅
+ wmsService.orderPlatformBind(callPlatformJob);
+ }
+ }catch (Exception e){
+ log.error("鑷姩鍙彿鍏ュ洯鏉冮檺涓嬪彂澶辫触锛歿}"+JSONObject.toJSONString(platform));
+ }
+ }
+ }
+ }
+ }
+
+
+
+ /**
+ * 鏈堝彴鍒嗛厤浠诲姟
+ * @param platformJobList 鎵�鏈夋湀鍙颁笅鍙互鍒嗛厤鐨勪换鍔�
+ * @param platform 鏈堝彴
+ * @param isDefaul 鏄惁鍙湁鍗曠被鏈堝彴鎴栬�呭彧鏈変竴涓湀鍙� true / false
+ * @param platformGroup 鏈堝彴缁�
+ * @return
+ */
+ public PlatformJob getAutoCallJob(List<PlatformJob> platformJobList, Platform platform,Boolean isDefaul,PlatformGroup platformGroup){
+ if(isDefaul){
+ //鏈堝彴涓嬪彧鏈変竴绫绘湀鍙� 鐩存帴杩斿洖绗竴涓换鍔�
+ return platformJobList.get(Constants.ZERO);
+ }
+ for (PlatformJob platformJob:platformJobList) {
+ //鍙彿鍏ュ洯 鎴栬�呭紓甯告寕璧� 鍒欑洿鎺ヨ繘琛屽彨鍙�
+ if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.EXCEPTION.getKey())
+ || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())){
+ return platformJob;
+ }
+ //鏍规嵁鏈堝彴缁勫垽鏂� 鍙彿閫昏緫
+ // 鏂板簱鍑哄簱鑷姩鍙彿瑙勫垯
+ // 1锛夊鏋滃崟涓繍鍗曚粎鍖呭惈鍗曚竴鍝佽锛屽垯鑷姩鍒嗛厤鑷冲湪鏁存墭鐩樻湀鍙拌繘琛屼綔涓氾紱
+ // 2锛夊鏋滃崟涓繍鍗曞寘鍚袱涓強浠ヤ笂鐨勫搧瑙勶紝鍒欓渶瑕佸垽鏂槸鍚﹀瓨鍦ㄥ崟涓搧瑙勮秴杩� 500 浠朵笖璇ュ搧瑙勬暟閲忓崰鏁翠釜杩愬崟浠诲姟閲忕殑 60%鍙婁互涓婏紝鍒欒嚜鍔ㄥ垎閰嶈嚦鍦ㄦ暣鎵樼洏 鏈堝彴杩涜鏈堝彴锛�
+ // 3锛夊鑻ヤ笉婊¤冻浠ヤ笂涓ょ偣锛屽垯鑷姩鍒嗛厤鑷虫暎浠舵湀鍙拌繘琛屼綔涓氾紱
+ if(Constants.equalsInteger(platformGroup.getType(),Constants.ONE)){
+ //瑁呰揣鏈堝彴 - 鍑哄簱
+ if(Constants.equalsInteger(platformJob.getOrigin(),Constants.ONE)){
+ // WM鎺ㄩ�佷换鍔�
+ 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.isEmpty(platformWmsDetailList)){
+ continue;
+ }
+ //WMS鎺ㄩ�佷换鍔� 杩愬崟浠呭寘鍚崟涓�鍝佽锛堝晢鍝佺被鍨嬪彧鏈変竴绫伙級锛屽垯鑷姩鍒嗛厤鑷冲湪鏁存墭鐩樻湀鍙拌繘琛屼綔涓氾紱
+ List<String> materialNameList = platformWmsDetailList.stream().map(i->i.getMaterialName()).collect(Collectors.toList());
+ Set<String> materialNameSet = new HashSet<>(materialNameList);
+ if(Constants.equalsInteger(materialNameSet.size(),Constants.ONE)&&Constants.equalsInteger(platform.getType(),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;
+ }
+ }
+ }
+ }
+ //寰幆WMS浠诲姟 鏈垎閰嶈嚦鏁存墭鐩樻湀鍙板垯鐩存帴鍒嗛厤鍒版暎鎵樼洏鏈堝彴
+ if(Constants.equalsInteger(platform.getType(),Constants.ONE)){
+ return platformJob;
+ }
+ }else{
+ //鐗╂祦杞﹂绾︾殑浠诲姟 鐩存帴鍒嗛厤 鏁f墭鐩樻湀鍙�
+ if(Constants.equalsInteger(platform.getType(),Constants.TWO)){
+ return platformJob;
+ }
+ }
+ }else{
+ //鍗歌揣鏈堝彴 - 鍏ュ簱
+ // 1锛夊彂璐у湴涓烘寚瀹氬湴鍖猴紝濡傜渷澶�/鑺滄箹锛屽垯鑷姩鍒嗛厤鑷虫暎浠舵湀鍙拌繘琛屼綔涓氾紱锛堣仈钀ュ姞宸ユ儏鍐碉級
+ // 2锛夊叾瀹冨満鏅紝鍧囪嚜鍔ㄥ垎閰嶈嚦鏁存墭鐩樻湀鍙拌繘琛屼綔涓�
+ if(Objects.nonNull(platformJob.getWmsId())){
+ PlatformWmsJob platformWmsJob = platformWmsJobMapper.selectOne(new QueryWrapper<PlatformWmsJob>().lambda()
+ .eq(PlatformWmsJob::getIsdeleted,Constants.ZERO)
+ .eq(PlatformWmsJob::getJobId,platformJob.getId())
+ .orderByDesc(PlatformWmsJob::getId)
+ .last(" limit 1")
+ );
+ if(Objects.isNull(platformWmsJob)){
+ continue;
+ }
+ 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)
+ .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)){
+ return platformJob;
+ }
+ }
+ if(Constants.equalsInteger(platform.getType(),Constants.ZERO)){
+ return platformJob;
+ }
+ }else{
+ //鐗╂祦杞﹂绾︾殑浠诲姟 鐩存帴鍒嗛厤 鏁f墭鐩樻湀鍙�
+ 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())
+ );
+ }
+
+
+
+
}
--
Gitblit v1.9.3