From 304b8a05be8ec2b6d281fec83ddde9add1a53622 Mon Sep 17 00:00:00 2001
From: doum <doum>
Date: 星期四, 23 十月 2025 17:40:13 +0800
Subject: [PATCH] 最新版本541200007
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java | 890 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----
1 files changed, 808 insertions(+), 82 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 ff3aea9..1a800e3 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
@@ -1,6 +1,7 @@
package com.doumee.service.business.impl;
import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.doumee.biz.system.SystemDictDataBiz;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
@@ -10,6 +11,8 @@
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.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;
@@ -76,6 +79,8 @@
@Autowired
private PlatformJobMapper platformJobMapper;
@Autowired
+ private UserActionMapper userActionMapper;
+ @Autowired
private TmsService tmsService;
@Autowired
@@ -128,6 +133,8 @@
@Autowired
private PlatformWarnEventServiceImpl platformWarnEventService;
@Autowired
+ private PlatformWarnEventMapper platformWarnEventMapper;
+ @Autowired
private MemberMapper memberMapper;
@Autowired
private WxNoticeConfigMapper wxNoticeConfigMapper;
@@ -146,6 +153,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()
@@ -196,6 +227,7 @@
@Override
public List<PlatformJob> findList(PlatformJob platformJob) {
+ platformJob.setIsdeleted(Constants.ZERO);
QueryWrapper<PlatformJob> wrapper = new QueryWrapper<>(platformJob);
return platformJobMapper.selectList(wrapper);
}
@@ -205,6 +237,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)
@@ -214,11 +247,14 @@
.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())
.ge(pageWrap.getModel().getCreateDate() != null, PlatformJob::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()))
@@ -234,6 +270,7 @@
.eq(pageWrap.getModel().getCode() != null, PlatformJob::getCode, pageWrap.getModel().getCode())
.eq(pageWrap.getModel().getBillCode() != null, PlatformJob::getBillCode, pageWrap.getModel().getBillCode())
.eq(pageWrap.getModel().getDriverId() != null, PlatformJob::getDriverId, pageWrap.getModel().getDriverId())
+ .eq(pageWrap.getModel().getReasonId() != null, PlatformBooks::getReasonId, pageWrap.getModel().getReasonId())
.eq(pageWrap.getModel().getDriverName() != null, PlatformJob::getDriverName, pageWrap.getModel().getDriverName())
.eq(pageWrap.getModel().getPlateNum() != null, PlatformJob::getPlateNum, pageWrap.getModel().getPlateNum())
.eq(pageWrap.getModel().getDrivierPhone() != null, PlatformJob::getDrivierPhone, pageWrap.getModel().getDrivierPhone())
@@ -293,7 +330,6 @@
.eq(pageWrap.getModel().getInType() != null, PlatformJob::getInType, pageWrap.getModel().getInType())
.eq(pageWrap.getModel().getTotalNum() != null, PlatformJob::getTotalNum, pageWrap.getModel().getTotalNum())
.eq(pageWrap.getModel().getPlatformGroupId() != null, PlatformJob::getPlatformGroupId, pageWrap.getModel().getPlatformGroupId())
-
.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()+"')")
@@ -303,19 +339,23 @@
.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()))
.le(pageWrap.getModel().getBeginDoneDateEnd() != null, PlatformJob::getDoneDate, Utils.Date.getEnd(pageWrap.getModel().getBeginDoneDateEnd()))
-
- .isNotNull(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ONE,pageWrap.getModel().getJobType()), PlatformJob::getContractNum)
- .isNull(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ZERO,pageWrap.getModel().getJobType()), PlatformJob::getContractNum)
+// .isNotNull(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ONE,pageWrap.getModel().getJobType()),
+// PlatformJob::getContractNum)
+// .isNull(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ZERO,pageWrap.getModel().getJobType()), PlatformJob::getContractNum)
+ .exists(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ZERO,pageWrap.getModel().getJobType()),
+ "select 1 from platform_wms_detail tt where tt.isdeleted=0 and tt.job_id=t.id")
+ .notExists(pageWrap.getModel().getJobType() != null && Constants.equalsInteger(Constants.ONE,pageWrap.getModel().getJobType()),
+ "select 1 from platform_wms_detail tt where tt.isdeleted=0 and tt.job_id=t.id")
.exists(StringUtils.isNotBlank(pageWrap.getModel().getWmsContractNum()),
"select tt.id from platform_wms_detail tt where tt.isdeleted=0 and tt.contract_num='"+pageWrap.getModel().getWmsContractNum()+"' and tt.job_id=t.id");
-
- for(PageWrap.SortData sortData: pageWrap.getSorts()) {
+ queryWrapper.orderByDesc(PlatformJob::getCreateDate);
+ /*for(PageWrap.SortData sortData: pageWrap.getSorts()) {
if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
queryWrapper.orderByDesc(sortData.getProperty());
} else {
queryWrapper.orderByAsc(sortData.getProperty());
}
- }
+ }*/
IPage<PlatformJob> platformJobIPage = platformJobJoinMapper.selectJoinPage(page,PlatformJob.class,queryWrapper);
platformJobIPage.getRecords().forEach(i->{
i.dealTime();
@@ -324,8 +364,6 @@
});
return PageData.from(platformJobIPage);
}
-
-
@Override
public PageData<PlatformJob> platformCallList(PageWrap<PlatformJob> pageWrap) {
@@ -338,7 +376,8 @@
.selectAs(Platform::getName,PlatformJob::getPlatformName)
.selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
.selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
- .select(" case when t.total_num is null then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = t.id ) else t.total_num end ioQty ")
+ .select(" (select GROUP_CONCAT(distinct(tt.contract_num )) from platform_wms_detail tt where tt.isdeleted=0 and tt.contract_num is not null and tt.job_id=t.id )as wmsContractNum")
+// .select(" case when t.total_num is null then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = t.id ) else t.total_num end ioQty ")
.leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
.leftJoin(PlatformWmsJob.class,PlatformWmsJob::getCarryBillCode,PlatformJob::getBillCode)
.leftJoin(PlatformBooks.class,PlatformBooks::getJobId,PlatformJob::getId)
@@ -370,12 +409,16 @@
.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);
platformJobIPage.getRecords().forEach(i->{
i.dealTime();
- i.setTotalNum(i.getIoQty());
+ if(Constants.equalsInteger(i.getOrigin(),Constants.ZERO)){
+ i.setWmsContractNum(i.getContractNum());
+ }
+// i.setTotalNum(i.getIoQty());
// this.getWmsJobData(i);
// this.queryWaitNum(i);
});
@@ -403,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);
@@ -556,7 +599,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
PlatformJob platformJob = platformJobMapper.selectById(confirmTaskDTO.getId());
- if(Objects.isNull(platformJob)){
+ if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
if(!Constants.equalsInteger(platformJob.getStatus(),Constants.ZERO)){
@@ -592,7 +635,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
PlatformJob platformJob = platformJobMapper.selectById(signInDTO.getJobId());
- if(Objects.isNull(platformJob)){
+ if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
@@ -600,11 +643,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(),"涓氬姟鐘舵�佸凡娴佽浆锛岃鍒锋柊鏌ョ湅");
}
@@ -631,6 +680,7 @@
}
//鏌ヨ浠婃棩鏈�澶х殑绛惧埌鏁�
List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda()
+ .eq(PlatformJob::getIsdeleted,Constants.ZERO)
.apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null "));
if(CollectionUtils.isEmpty(signList)){
platformJob.setSignNum(Constants.ONE);
@@ -645,14 +695,80 @@
//瀛樺偍鎿嶄綔鏃ュ織
savePlatformLog(Constants.PlatformJobLogType.SIGN.getKey(),oldPlatformJob,platformJob,
Constants.PlatformJobLogType.SIGN.getInfo());
+ //绛惧埌寰俊閫氱煡 2025骞�3鏈�26鏃�14:25:00
+ log.info("绛惧埌寰俊閫氱煡=========================>寮�濮�====绛惧埌绫诲瀷=>"+signInDTO.getSignType()+"===>浜哄憳涓婚敭=>"+platformGroup.getSignInNoticeUsers());
+ if(!Constants.equalsInteger(signInDTO.getSignType(),Constants.TWO)&&
+ StringUtils.isNotBlank(platformGroup.getSignInNoticeUsers())){
+ 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(",")))
+ );
+ if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(systemUserList)) {
+ WxPlatNotice wxPlatNotice = new WxPlatNotice();
+ wxPlatNotice.sendPlatformJobSignNotice(systemDictDataBiz,wxNoticeConfigMapper, platformJob,
+ WxPlatConstants.platformJobContent.platformGroupSignIn,
+ systemUserList.stream().map(i->i.getOpenid()).collect(Collectors.toList())
+ );
+ }
+ }
+ log.info("绛惧埌寰俊閫氱煡=========================>缁撴潫");
}
+
+
+ @Override
+ public void sendUnFinishNotice(){
+ //鐘舵�� 0寰呯‘璁� 1寰呯鍒� 2绛夊緟鍙彿 3鍏ュ洯绛夊緟 4宸插彨鍙� 5浣滀笟涓� 6浣滀笟瀹屾垚 7杞Щ涓� 8寮傚父鎸傝捣 9宸叉巿鏉冪鍥� 10宸茬鍥� 11 宸茶繃鍙� 12鍙栨秷锛圵MS锛�
+ List<PlatformJob> platformJobList = platformJobJoinMapper.selectJoinList(PlatformJob.class,
+ new MPJLambdaWrapper<PlatformJob>()
+ .selectAll(PlatformJob.class)
+ .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+ .isNotNull(PlatformJob::getPlatformGroupId)
+ .apply(" CREATE_DATE < now() ")
+ .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CONFIRM.getKey()
+ ,Constants.PlatformJobStatus.WART_SIGN_IN.getKey()
+ ,Constants.PlatformJobStatus.WAIT_CALL.getKey()
+ ,Constants.PlatformJobStatus.IN_WAIT.getKey()
+ ,Constants.PlatformJobStatus.CALLED.getKey()
+ ,Constants.PlatformJobStatus.WORKING.getKey()
+ ,Constants.PlatformJobStatus.TRANSFERING.getKey()
+ ,Constants.PlatformJobStatus.EXCEPTION.getKey()
+ ,Constants.PlatformJobStatus.OVER_NUMBER.getKey()
+ )
+ );
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformJobList)){
+ List<Integer> platformGroupId = platformJobList.stream().map(i->i.getPlatformGroupId()).collect(Collectors.toList());
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformGroupId)){
+ Set<Integer> setList = new HashSet<>(platformGroupId);
+ for (Integer groupId:setList) {
+ PlatformGroup platformGroup = platformGroupMapper.selectById(groupId);
+ if(Objects.nonNull(platformGroup)&&StringUtils.isNotBlank(platformGroup.getUnFinishNoticeUsers())){
+ 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.getUnFinishNoticeUsers().split(",")))
+ );
+ if (com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(systemUserList)) {
+ WxPlatNotice wxPlatNotice = new WxPlatNotice();
+ wxPlatNotice.sendUnFinishNotice(systemDictDataBiz,
+ wxNoticeConfigMapper,
+ platformJobList.stream().filter(i->Constants.equalsInteger(i.getPlatformGroupId(),groupId)).collect(Collectors.toList()).size(),
+ WxPlatConstants.platformJobContent.unFinishNotice,
+ systemUserList.stream().map(i->i.getOpenid()).collect(Collectors.toList())
+ );
+ }
+ }
+ }
+ }
+ }
+ }
+
public void distanceSignIn(SignInDTO signInDTO , PlatformJob platformJob){
if(Objects.isNull(signInDTO.getLat())
|| 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());
@@ -677,28 +793,28 @@
}
}
-
@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());
- if(Objects.isNull(platformJob)){
+ if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
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涓偣鐨勮窛绂籜绫�
- 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涓偣鐨勮窛绂籜绫�
+ 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())
@@ -843,7 +959,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
- if(Objects.isNull(platformJob)){
+ if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
@@ -870,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);
@@ -884,18 +1000,47 @@
emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,platformJob.getId(),
SmsConstants.platformJobContent.platformJobCallIn,null,null
);
-
+
//鍏紬鍙锋ā鏉挎秷鎭�
- if(Objects.nonNull(platformJob.getDriverId())) {
- this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobCallIn,platformJob);
+ if(Objects.nonNull(platformJob.getDrivierPhone())) {
+ this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobCallIn,platformJob);
}
+ return platformJob;
+ }
+ public PlatformJob platformInParkBiz(PlatformJob platformJob, Platform platform ){
+ platformJob.setPlatformId(platform.getId());
+ platformJob.setPlatformName(platform.getName());
+ //鍒ゆ柇鏄惁闇�瑕佸~鍏呰繘鍘�
+ if(StringUtils.isBlank(platformJob.getPlatforms())){
+ platformJob.setPlatforms(platform.getId().toString());
+ platformJob.setPlatformNames(platform.getName());
+ }else{
+ if(!Constants.equalsInteger(platform.getId(),platformJob.getPlatformId())){
+ platformJob.setPlatforms(platformJob.getPlatforms() + "," +platformJob.getPlatformId().toString());
+ platformJob.setPlatformNames(platformJob.getPlatformNames() + "," +platform.getName());
+ }
+ }
+
+ PlatformJob oldPlatformJob = new PlatformJob();
+ BeanUtils.copyProperties(platformJob,oldPlatformJob);
+ platformJob.setPlatformId(platform.getId());
+ platformJob.setInwaitDate(new Date());
+ platformJob.setStatus(Constants.PlatformJobStatus.IN_WAIT.getKey());
+ platformJob.setEditDate(new Date());
+ platformJobMapper.updateById(platformJob);
+
+ //瀛樺偍鎿嶄綔鏃ュ織
+ savePlatformLog(Constants.PlatformJobLogType.IN_WAIT.getKey(),oldPlatformJob,platformJob,
+ Constants.PlatformJobLogType.IN_WAIT.getInfo());
+
+
return platformJob;
}
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())) {
@@ -907,12 +1052,10 @@
.eq(PlatformJob::getId,platformJob.getId())
.last(" limit 1")
);
-
WxPlatNotice wxPlatNotice = new WxPlatNotice();
wxPlatNotice.sendPlatformJobTemplateNotice(systemDictDataBiz,
wxNoticeConfigMapper, p,
objCode,
- systemDictDataBiz.queryByCode(Constants.WX_PLATFORM, Constants.WX_PLATFORM_ACCESS_TOKEN).getCode(),
Arrays.asList(driver.getOpenid().split(","))
);
}
@@ -921,7 +1064,7 @@
- private Logger logger = LoggerFactory.getLogger(PlatformJobServiceImpl.class);
+
@Override
public void sendInPark(PlatformJob platformJob){
@@ -1027,6 +1170,11 @@
if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){
//濡傛灉宸蹭笅鍙戞垚鍔燂紝鏍囪宸叉巿鏉冪鍥姸鎬�
platformJob.setStatus(Constants.PlatformJobStatus.AUTHED_LEAVE.getKey());
+ //鍒犻櫎鎶ヨ淇℃伅
+ platformWarnEventMapper.update(new UpdateWrapper<PlatformWarnEvent>().lambda()
+ .set(PlatformWarnEvent::getIsdeleted,Constants.ONE)
+ .eq(PlatformWarnEvent::getPlatformId,platformJob.getId())
+ );
}
}else{
platformJob.setInHkstatus(Constants.THREE);
@@ -1038,14 +1186,12 @@
}
}
-
@Override
public void cancelInPark(PlatformJob platformJob){
if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)
|| Constants.equalsInteger(platformJob.getType(),Constants.THREE)
|| StringUtils.isBlank(platformJob.getCarCodeFront())
|| Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
-
List<VisitPark> visitParkList = visitParkMapper.selectList(new QueryWrapper<VisitPark>().lambda()
.eq(VisitPark::getCarCode,platformJob.getCarCodeFront())
.eq(VisitPark::getObjType,Constants.ONE)
@@ -1070,7 +1216,6 @@
}
}
}
-
/**
* 鏈堝彴鍙彿
*/
@@ -1082,7 +1227,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
- if(Objects.isNull(platformJob)){
+ if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
if(!(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())
@@ -1091,7 +1236,7 @@
) ){
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧�,涓氬姟鐘舵�佸凡娴佽浆锛�");
}
-
+
Platform platform = platformJoinMapper.selectById(jobOperateDTO.getPlatformId());
if(Objects.isNull(platform)){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏈堝彴淇℃伅");
@@ -1100,6 +1245,7 @@
//鏌ヨ鏈堝彴浠诲姟绛夊緟浣滀笟鏁伴噺
if(platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
.eq(PlatformJob::getPlatformId,platform.getId())
+ .eq(PlatformJob::getIsdeleted,Constants.ZERO)
.in(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey(),Constants.PlatformJobStatus.WORKING.getKey())
)>=platform.getWorkingNum()){
throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"瓒呭嚭鏈堝彴鍙悓鏃朵綔涓氭暟閲廩"+platform.getWorkingNum()+"杈哴");
@@ -1109,7 +1255,8 @@
BeanUtils.copyProperties(platformJob,oldPlatformJob);
platformJob.setCallDate(Objects.isNull(platformJob.getCallDate())?new Date():null);
- platformJob.setCallUserId(jobOperateDTO.getLoginUserInfo().getId());
+ platformJob.setCallWay(0);
+ platformJob.setCallUserId(Objects.isNull(jobOperateDTO.getLoginUserInfo())?null:jobOperateDTO.getLoginUserInfo().getId());
platformJob.setStatus(Constants.PlatformJobStatus.CALLED.getKey());
platformJob.setPlatformId(jobOperateDTO.getPlatformId());
//鍒ゆ柇鏄惁闇�瑕佸~鍏呰繘鍘�
@@ -1137,7 +1284,7 @@
);
//鍏紬鍙锋ā鏉挎秷鎭�
- if(Objects.nonNull(platformJob.getDriverId())){
+ if(Objects.nonNull(platformJob.getDrivierPhone())){
this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobSingIn,platformJob);
}
@@ -1148,6 +1295,34 @@
Constants.PlatformBroadcastContent.CALLING.getInfo()+ Constants.PlatformBroadcastContent.CALLING.getInfo() + Constants.PlatformBroadcastContent.CALLING.getInfo()
);
+ platformJob.setPlatformWmsCode(platform.getCode());
+ return platformJob;
+ }
+ public PlatformJob platformCallNumberBiz( PlatformJob platformJob ,Platform platform ){
+ platformJob.setPlatformId(platform.getId());
+ PlatformJob oldPlatformJob = new PlatformJob();
+ BeanUtils.copyProperties(platformJob,oldPlatformJob);
+ platformJob.setCallDate(Objects.isNull(platformJob.getCallDate())?new Date():null);
+ platformJob.setCallWay(Constants.ONE);
+ platformJob.setStatus(Constants.PlatformJobStatus.CALLED.getKey());
+ platformJob.setPlatformId(platform.getId());
+ //鍒ゆ柇鏄惁闇�瑕佸~鍏呰繘鍘�
+ if(StringUtils.isBlank(platformJob.getPlatforms())){
+ platformJob.setPlatforms(platform.getId().toString());
+ platformJob.setPlatformNames(platform.getName());
+ }else{
+ if(!Constants.equalsInteger(platform.getId(),platformJob.getPlatformId())){
+ platformJob.setPlatforms(platformJob.getPlatforms() + "," +platform.getId().toString());
+ platformJob.setPlatformNames(platformJob.getPlatformNames() + "," +platform.getName());
+ }
+ }
+ platformJob.setEditDate(new Date());
+ platformJobMapper.updateById(platformJob);
+
+ //瀛樺偍鎿嶄綔鏃ュ織
+ savePlatformLog(Constants.PlatformJobLogType.CALLED.getKey(),oldPlatformJob,platformJob,
+ Constants.PlatformJobLogType.CALLED.getInfo().replace("{data}",platform.getName()));
+ platformJob.setPlatformName(platform.getName());
platformJob.setPlatformWmsCode(platform.getCode());
return platformJob;
}
@@ -1229,7 +1404,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
- if(Objects.isNull(platformJob)){
+ if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
if( !( Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())
@@ -1260,7 +1435,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()));
@@ -1273,7 +1447,7 @@
);
//鍏紬鍙锋ā鏉挎秷鎭�
- if(Objects.nonNull(platformJob.getDriverId())) {
+ if(Objects.nonNull(platformJob.getDrivierPhone())) {
this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobMove,platformJob);
}
@@ -1297,7 +1471,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
- if(Objects.isNull(platformJob)){
+ if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
@@ -1326,7 +1500,7 @@
);
//鍏紬鍙锋ā鏉挎秷鎭�
- if(Objects.nonNull(platformJob.getDriverId())){
+ if(Objects.nonNull(platformJob.getDrivierPhone())){
this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobOverNum,platformJob);
}
@@ -1335,6 +1509,7 @@
null
);
+ platformJob.setPlatformWmsCode(platform.getCode());
return platformJob;
}
@@ -1350,7 +1525,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
- if(Objects.isNull(platformJob)){
+ if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
@@ -1378,7 +1553,7 @@
);
//鍏紬鍙锋ā鏉挎秷鎭�
- if(Objects.nonNull(platformJob.getDriverId())) {
+ if(Objects.nonNull(platformJob.getDrivierPhone())) {
this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobError,platformJob);
}
@@ -1401,7 +1576,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
- if(Objects.isNull(platformJob)){
+ if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.CALLED.getKey())){
@@ -1432,7 +1607,7 @@
SmsConstants.platformJobContent.platformJobWorking,platform.getName(),null
);
//鍏紬鍙锋ā鏉挎秷鎭�
- if(Objects.nonNull(platformJob.getDriverId())) {
+ if(Objects.nonNull(platformJob.getDrivierPhone())) {
this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobWorking,platformJob);
}
//骞挎挱 led閫氱煡
@@ -1467,7 +1642,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
- if(Objects.isNull(platformJob)){
+ if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
if(! (Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())
@@ -1490,6 +1665,12 @@
//瀛樺偍鎿嶄綔鏃ュ織
savePlatformLog(Constants.PlatformJobLogType.DONE.getKey(),oldPlatformJob,platformJob ,
Constants.PlatformJobLogType.DONE.getInfo());
+
+ //鍒犻櫎鎶ヨ淇℃伅
+ platformWarnEventMapper.update(new UpdateWrapper<PlatformWarnEvent>().lambda()
+ .set(PlatformWarnEvent::getIsdeleted,Constants.ONE)
+ .eq(PlatformWarnEvent::getPlatformId,platformJob.getId())
+ );
if(Constants.equalsInteger(platformJob.getType(),Constants.THREE)){
// 澶栧崗杞﹁璐� 鏌ヨTMS 鐢靛瓙閿佹儏鍐�
@@ -1508,7 +1689,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()
@@ -1533,13 +1714,15 @@
);
//鍏紬鍙锋ā鏉挎秷鎭�
- if(Objects.nonNull(platformJob.getDriverId())) {
+ if(Objects.nonNull(platformJob.getDrivierPhone())) {
this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobFinish,platformJob);
}
//骞挎挱 led閫氱煡
platformJob.setPlatformName(platform.getName());
- this.broadcastAndLEed(platformJob,Constants.PlatformLedContent.DONE.getInfo(),
+ this.broadcastAndLEed(platformJob,
+ //Constants.PlatformLedContent.DONE.getInfo(),
+ StringUtils.isBlank(platform.getLedContent())?Constants.PlatformLedContent.IDEL_CONTNET.getInfo():platform.getLedContent(),
Constants.PlatformBroadcastContent.DONE.getInfo());
return platformJob;
}
@@ -1556,34 +1739,44 @@
Date date = new Date();
List<String> codeList =new ArrayList<>();
for(PlatformWmsDetail d : details){
- codeList.add(d.getContractNum());
+ if(StringUtils.isNotBlank(d.getContractNum())){
+ if(StringUtils.isNotBlank(d.getContractNum())){
+ codeList.add(d.getContractNum());
+ }
+ }
}
- TmsLockStatusQueryRequest tmsLock = new TmsLockStatusQueryRequest();
- tmsLock.setContractNumbers(codeList);
List<Integer> jobIds = new ArrayList<>();
- 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()){
- try {
- //寮傚父澶勭悊锛岃兘澶勭悊涓�涓槸涓�涓�
- platformWmsDetailMapper.update(null,new UpdateWrapper<PlatformWmsDetail>().lambda()
- .eq(PlatformWmsDetail::getContractNum,s.getContractNumber())
- .set(PlatformWmsDetail::getEditDate,date)
- .set(PlatformWmsDetail::getLockDate,s.getOutDate())
- .set(PlatformWmsDetail::getLockStatus,Constants.ONE)
- .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO));
- PlatformWmsDetail job = getJobByContractnumFromDetail(s.getContractNumber(),details);
- if(job != null){
- jobIds.add(job.getJobId());
+ if(codeList.size()>0){
+ TmsLockStatusQueryRequest tmsLock = new TmsLockStatusQueryRequest();
+ tmsLock.setContractNumbers(codeList);
+ 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()){
+ try {
+ if(StringUtils.isBlank(s.getOutDate())){
+ continue;
+ }
+ //寮傚父澶勭悊锛岃兘澶勭悊涓�涓槸涓�涓�
+ platformWmsDetailMapper.update(null,new UpdateWrapper<PlatformWmsDetail>().lambda()
+ .eq(PlatformWmsDetail::getContractNum,s.getContractNumber())
+ .set(PlatformWmsDetail::getEditDate,date)
+ .set(PlatformWmsDetail::getLockDate,s.getOutDate())
+ .set(PlatformWmsDetail::getLockStatus,Constants.ONE)
+ .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO));
+ PlatformWmsDetail job = getJobByContractnumFromDetail(s.getContractNumber(),details);
+ if(job != null){
+ jobIds.add(job.getJobId());
+ }
+ }catch (Exception e){
+ log.error("=============鏇存柊鐢靛瓙閿佺姸鎬佷俊鎭紓甯革細"+e.getMessage());
}
- }catch (Exception e){
- logger.error("=============鏇存柊鐢靛瓙閿佺姸鎬佷俊鎭紓甯革細"+e.getMessage());
}
}
}
if(jobIds.size()>0){
List<PlatformJob> list = platformJobMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
.selectAll(PlatformJob.class)
+ .eq(PlatformJob::getIsdeleted,Constants.ZERO)
.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey())
.in(PlatformJob::getId,jobIds)
);
@@ -1626,7 +1819,7 @@
throw new BusinessException(ResponseStatus.BAD_REQUEST);
}
PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
- if(Objects.isNull(platformJob)){
+ if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
throw new BusinessException(ResponseStatus.DATA_EMPTY);
}
if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){
@@ -1670,6 +1863,7 @@
PlatformJob platformJob = platformJobMapper.selectOne(new QueryWrapper<PlatformJob>().lambda()
.eq(PlatformJob::getPlatformId,platformDevice.getPlatformId())
.eq(PlatformJob::getCarCodeBack,jobOperateDTO.getCarCodeBack())
+ .eq(PlatformJob::getIsdeleted,Constants.ZERO)
.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey())
.last(" limit 1 ")
);
@@ -1881,6 +2075,7 @@
.select(" ( select pl.CREATE_DATE from platform_log pl where t.id = pl.obj_id and pl.OBJ_TYPE = "+Constants.PlatformJobLogType.WORKING.getKey()+" 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 = "+Constants.PlatformJobLogType.CALLED.getKey()+" order by pl.CREATE_DATE desc limit 1 ) as newCallDate ")
.select(" case when t.total_num is null then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = t.id ) else t.total_num end ioQty ")
+ .select(" (select GROUP_CONCAT(distinct(tt.contract_num )) from platform_wms_detail tt where tt.isdeleted=0 and tt.contract_num is not null and tt.job_id=t.id )as wmsContractNum")
.selectAs(Platform::getName,PlatformJob::getPlatformName)
.selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
.selectAs(PlatformWmsJob::getCarrierName,PlatformJob::getCarrierName)
@@ -1927,16 +2122,16 @@
);
//鏌ヨ浠婃棩瀹屾垚浠诲姟
platformOrderNumByDateResponse.setDoneNum(
- platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
+ platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>()
.eq(PlatformJob::getIsdeleted,Constants.ZERO)
.like(PlatformJob::getDoneDate,queryDateStr)
- .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey())
+ .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey()
+ ,Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
+ ,Constants.PlatformJobStatus.LEAVED.getKey())
)
);
return platformOrderNumByDateResponse;
}
-
-
@Override
public List<PlatformDataListResponse> platformWorkingDataList(PlatformDataListRequest param){
@@ -2194,8 +2389,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());
@@ -2307,5 +2505,533 @@
}
+ /**
+ * 鏇存崲鏈堝彴鍒嗛挓
+ * @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,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)
+ .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CONFIRM.getKey()
+ ,Constants.PlatformJobStatus.WART_SIGN_IN.getKey()
+ ,Constants.PlatformJobStatus.WAIT_CALL.getKey())
+ .in(PlatformJob::getId,jobIdList)
+ );
+ if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(platformJobList)){
+ 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())));
+ }
+
+ }
+
+
+ }
+
+ @Override
+ @Transactional(rollbackFor = {Exception.class,BusinessException.class})
+ public PlatformJob restoreWork(JobOperateDTO jobOperateDTO){
+ if(Objects.isNull(jobOperateDTO)
+ || Objects.isNull(jobOperateDTO.getJobId())){
+ throw new BusinessException(ResponseStatus.BAD_REQUEST);
+ }
+ PlatformJob platformJob = platformJobMapper.selectById(jobOperateDTO.getJobId());
+ if(Objects.isNull(platformJob)||Constants.equalsInteger(platformJob.getIsdeleted(),Constants.ONE)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY);
+ }
+ if(!Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.EXCEPTION.getKey())){
+ throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧�,涓氬姟鐘舵�佸凡娴佽浆锛�");
+ }
+ Platform platform = platformJoinMapper.selectById(platformJob.getPlatformId());
+ if(Objects.isNull(platform)){
+ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"鏈煡璇㈠埌鏈堝彴淇℃伅");
+ }
+ PlatformJob oldPlatformJob = new PlatformJob();
+ BeanUtils.copyProperties(platformJob,oldPlatformJob);
+ if(Objects.isNull(platformJob.getStartDate())){
+ platformJob.setStartDate(new Date());
+ }
+ platformJob.setStatus(Constants.PlatformJobStatus.WORKING.getKey());
+ platformJob.setEditDate(new Date());
+ platformJobMapper.updateById(platformJob);
+
+ //瀛樺偍鎿嶄綔鏃ュ織
+ savePlatformLog(Constants.PlatformJobLogType.WORKING.getKey(),oldPlatformJob,platformJob,
+ Constants.PlatformJobLogType.WORKING.getInfo().replace("{data}",platform.getName()));
+ return platformJob;
+ }
+
+ @Override
+ @Transactional
+ 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;
+ }
+
+ List<PlatformJob> noticeList = new ArrayList<>();
+ //寰幆鎵�鏈夎嚜鍔ㄥ彨鍙锋湀鍙�
+ 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;
+ }
+ log.error("========鏈堝彴鑷姩鍙彿============鏈夎嚜鍔ㄥ彨鍙锋湀鍙�--"+platformGroup.getName());
+ Boolean isDefaul = false;
+ if(Constants.equalsInteger(platforms.size(),Constants.ONE)){
+ isDefaul = true;
+ }else{
+ int t1 =0,t0=0;
+ //鏌ヨ鏈堝彴缁勪笅鐨勬湀鍙版槸鍚﹀悓鏃跺瓨鍦ㄦ暣鎵樺拰鏁f墭鏈堝彴
+ for(Platform i : platforms){
+ if(Constants.equalsInteger(i.getType(),Constants.ONE)){
+ t1 ++;
+ }else{
+ t0 ++;
+ }
+ }
+ if(t1 == 0 || t0 ==0){
+ isDefaul = true;
+ }
+ }
+
+
+ for (Platform platform:platforms) {
+ log.error("========鏈堝彴鑷姩鍙彿============寮�濮嬪鐞嗘壘鏈堝彴浣滀笟--"+platform.getName());
+ //鏈堝彴 鍙彿鍏ュ洯鏁伴噺
+ Integer workingNum = Constants.formatIntegerNum(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;
+ }
+ log.error("========鏈堝彴鑷姩鍙彿============鏈夋弧瓒虫潯浠剁殑浣滀笟闆嗗悎--"+platform.getName());
+ for (int i = 0; i < workingNum - workNum && platformJobList.size()>0; i++) {
+ if(platformJobList== null || platformJobList.size() ==0){
+ break;
+ }
+ PlatformJob platformJob = this.getAutoCallJob(platformJobList,platform,isDefaul,platformGroup);
+ if(Objects.isNull(platformJob)){
+ log.error("========鏈堝彴鑷姩鍙彿============缁撴潫锛氭棤婊¤冻鏉′欢鐨勪綔涓�2-"+platform.getName());
+ break;
+ }
+ PlatformJob callPlatformJob = this.platformCallNumberBiz(platformJob,platform);
+ noticeList.add(callPlatformJob );
+ List<PlatformJob> newList = new ArrayList<>();
+ for(PlatformJob j :platformJobList ){
+ if(!Constants.equalsInteger(j.getId(),platformJob.getId())){
+ newList.add(j);
+ }
+ }
+ platformJobList = newList;
+// platformJobList = platformJobList.stream().filter(j->!Constants.equalsInteger(j.getId(),platformJob.getId())).collect(Collectors.toList());
+ }
+ }
+ }
+ if(noticeList.size()>0){
+ for(PlatformJob platformJob : noticeList){
+ //鍙戦�佺煭淇′俊鎭�
+ SmsEmailServiceImpl.sendPlatformJobSms(systemDictDataBiz,
+ emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,platformJob.getId(),
+ SmsConstants.platformJobContent.platformJobSingIn,platformJob.getPlatformName(),null
+ );
+
+ //鍏紬鍙锋ā鏉挎秷鎭�
+ if(Objects.nonNull(platformJob.getDrivierPhone())){
+ this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobSingIn,platformJob);
+ }
+ //骞挎挱 led閫氱煡
+ platformJob.setPlatformName(platformJob.getPlatformName());
+ this.broadcastAndLEed(platformJob,Constants.PlatformLedContent.CALLING.getInfo(),
+ Constants.PlatformBroadcastContent.CALLING.getInfo()+ Constants.PlatformBroadcastContent.CALLING.getInfo() + Constants.PlatformBroadcastContent.CALLING.getInfo()
+ );
+ try{
+ this.sendInPark(platformJob);
+ if(!Constants.equalsInteger(platformJob.getType(),Constants.FOUR)
+ && StringUtils.isNotBlank(platformJob.getBillCode())){
+ //閫氱煡WMS缁戝畾鏈堝彴淇℃伅
+ wmsService.orderPlatformBind(platformJob,1);
+ }
+ }catch (Exception e){
+ log.error("鏈堝彴鑷姩鍙彿鏉冮檺涓嬪彂澶辫触锛歿}"+JSONObject.toJSONString(platformJob));
+ }
+
+ }
+ }
+ }
+
+
+
+ @Override
+ @Transactional
+ 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;
+ }
+ List<PlatformJob> noticeList = new ArrayList<>();
+ //寰幆鎵�鏈夎嚜鍔ㄥ彨鍙锋湀鍙�
+ 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 = Constants.formatIntegerNum(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 && platformJobList.size()>0 ; i++) {
+ if(platformJobList== null || platformJobList.size() ==0){
+ break;
+ }
+ PlatformJob platformJob = this.getAutoCallJob(platformJobList,platform,isDefaul,platformGroup);
+ if(platformJob ==null){
+ break;
+ }
+ PlatformJob callPlatformJob = this.platformInParkBiz(platformJob,platform);
+ noticeList.add(callPlatformJob);
+ platformJobList = platformJobList.stream().filter(j->!Constants.equalsInteger(j.getId(),platformJob.getId())).collect(Collectors.toList());
+ }
+ }
+ }
+ if(noticeList.size()>0){
+ for(PlatformJob platformJob :noticeList){
+ //鍙戦�佺煭淇′俊鎭�
+ SmsEmailServiceImpl.sendPlatformJobSms(systemDictDataBiz,
+ emayService,smsEmailMapper,smsConfigMapper,platformJobMapper,platformJob.getId(),
+ SmsConstants.platformJobContent.platformJobCallIn,null,null
+ );
+ //鍏紬鍙锋ā鏉挎秷鎭�
+ if(Objects.nonNull(platformJob.getDrivierPhone())) {
+ this.sendWxNotice(WxPlatConstants.platformJobContent.platformJobCallIn,platformJob);
+ }
+ try{
+ this.sendInPark(platformJob);
+ if(!Constants.equalsInteger(platformJob.getType(),Constants.FOUR)
+ && StringUtils.isNotBlank(platformJob.getBillCode())){
+ //閫氱煡WMS缁戝畾鏈堝彴淇℃伅
+ wmsService.orderPlatformBind(platformJob,1);
+ }
+ }catch (Exception e){
+ log.error("鑷姩鍙彿鍏ュ洯鏉冮檺涓嬪彂澶辫触锛歿}"+JSONObject.toJSONString(platformJob));
+ }
+ }
+ }
+ }
+
+
+
+
+ /**
+ * 鏈堝彴鍒嗛厤浠诲姟
+ * @param platformJobList 鎵�鏈夋湀鍙颁笅鍙互鍒嗛厤鐨勪换鍔�
+ * @param platform 鏈堝彴
+ * @param platformGroup 鏈堝彴缁�
+ * @return
+ */
+ public PlatformJob getAutoCallJob(List<PlatformJob> platformJobList, Platform platform,Boolean isDefaul,PlatformGroup platformGroup){
+ if(platformJobList.size() ==0){
+ return null;
+ }
+ if(isDefaul){
+ //鏈堝彴涓嬪彧鏈変竴绫绘湀鍙� 鐩存帴杩斿洖绗竴涓换鍔�
+ return platformJobList.get(Constants.ZERO);
+ }
+ for (PlatformJob platformJob:platformJobList) {
+ log.error("鏈堝彴鑷姩鍙彿========寮�濮嬫壘浣滀笟锛�"+platformJob.getId());
+ //鍙彿鍏ュ洯 鎴栬�呭紓甯告寕璧� 鍒欑洿鎺ヨ繘琛屽彨鍙�
+ if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.EXCEPTION.getKey())
+ || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())){
+ return platformJob;
+ }
+ int typeParam = 1;// 0鏁存墭 1鏁d欢
+ //鏍规嵁鏈堝彴缁勫垽鏂� 鍙彿閫昏緫
+ // 鏂板簱鍑哄簱鑷姩鍙彿瑙勫垯
+ // 1锛夊鏋滃崟涓繍鍗曚粎鍖呭惈鍗曚竴鍝佽锛屽垯鑷姩鍒嗛厤鑷冲湪鏁存墭鐩樻湀鍙拌繘琛屼綔涓氾紱
+ // 2锛夊鏋滃崟涓繍鍗曞寘鍚袱涓強浠ヤ笂鐨勫搧瑙勶紝鍒欓渶瑕佸垽鏂槸鍚﹀瓨鍦ㄥ崟涓搧瑙勮秴杩� 500 浠朵笖璇ュ搧瑙勬暟閲忓崰鏁翠釜杩愬崟浠诲姟閲忕殑 60%鍙婁互涓婏紝鍒欒嚜鍔ㄥ垎閰嶈嚦鍦ㄦ暣鎵樼洏 鏈堝彴杩涜鏈堝彴锛�
+ // 3锛夊鑻ヤ笉婊¤冻浠ヤ笂涓ょ偣锛屽垯鑷姩鍒嗛厤鑷虫暎浠舵湀鍙拌繘琛屼綔涓氾紱
+ if(Constants.equalsInteger(platformGroup.getType(),Constants.ONE)){
+ typeParam = 1;
+ //瑁呰揣鏈堝彴 - 鍑哄簱
+ 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)){
+ //鍗曚竴鍝佺被 涓斿綋鍓嶅惊鐜湀鍙颁负鏁存墭鐩樻湀鍙�
+ typeParam = 0;// 0鏁存墭
+ }else if(materialNameSet.size()> Constants.ONE){
+ boolean isZhengtuo = false;
+ //闈炲崟涓�鍝佺被
+ //濡傛灉鍗曚釜杩愬崟鍖呭惈涓や釜鍙婁互涓婄殑鍝佽锛屽垯闇�瑕佸垽鏂槸鍚﹀瓨鍦ㄥ崟涓搧瑙勮秴杩� 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(Constants.formatBigdecimal(quanlity).compareTo(compareTotal)>Constants.ZERO){
+ //瓒呰繃瑙勫畾鏁伴噺 涓斿綋鍓嶆湀鍙颁负鏁存墭鏈堝彴
+ isZhengtuo =true;
+ typeParam = 0;// 0鏁存墭
+ }
+ }
+ }
+ }
+ }else{
+ typeParam = 0;//榛樿鏁存墭
+ //鍗歌揣鏈堝彴 - 鍏ュ簱
+ // 1锛夊彂璐у湴涓烘寚瀹氬湴鍖猴紝濡傜渷澶�/鑺滄箹锛屽垯鑷姩鍒嗛厤鑷虫暎浠舵湀鍙拌繘琛屼綔涓氾紱锛堣仈钀ュ姞宸ユ儏鍐碉級
+ // 2锛夊叾瀹冨満鏅紝鍧囪嚜鍔ㄥ垎閰嶈嚦鏁存墭鐩樻湀鍙拌繘琛屼綔涓�
+ if(Constants.equalsInteger(platformJob.getOrigin(),Constants.ONE)){
+ 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()+"')")
+ .isNotNull(PlatformWmsDetail::getInRepertotyCode)
+ ) > Constants.ZERO ){//鎸囧畾鍖哄煙鍒嗛厤鍒版暎浠舵湀鍙�
+ typeParam = 1;//
+ }
+ }
+ }
+ }
+
+ log.error("鏈堝彴鑷姩鍙彿========寮�濮嬫壘浣滀笟缁撴灉锛�"+platformJob.getId()+"============"+platform.getType()+"===="+typeParam);
+ if( Constants.equalsInteger(platform.getType(),typeParam)){
+ log.error("鏈堝彴鑷姩鍙彿========鎵惧埌浜嗕綔涓氾細"+platform.getName() );
+ 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