From 14f37814a441d795ae7a15dfe4b7be05aa49f96f Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期四, 23 一月 2025 16:30:28 +0800
Subject: [PATCH] 最新版本541200007
---
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java | 173 +++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 137 insertions(+), 36 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 476825c..3135e0c 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
@@ -10,16 +10,18 @@
import com.doumee.core.haikang.model.param.request.ParkReservationDelRequest;
import com.doumee.core.haikang.model.param.respose.ParkReservationAddResponse;
import com.doumee.core.haikang.service.HKService;
-import com.doumee.core.model.LoginUserInfo;
-import com.doumee.core.model.PageData;
-import com.doumee.core.model.PageWrap;
-import com.doumee.core.tms.model.request.TmsLockStatusQueryRequest;
-import com.doumee.core.tms.model.response.TmsBaseResponse;
-import com.doumee.core.tms.model.response.TmsLockStatusQueryResponse;
+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;
+import com.doumee.service.business.third.model.request.TmsLockStatusQueryRequest;
+import com.doumee.service.business.third.model.response.TmsBaseResponse;
+import com.doumee.service.business.third.model.response.TmsLockStatusQueryResponse;
import com.doumee.core.utils.*;
import com.doumee.core.wx.wxPlat.WxPlatConstants;
import com.doumee.core.wx.wxPlat.WxPlatNotice;
import com.doumee.dao.business.*;
+import com.doumee.dao.business.dao.MemberMapper;
import com.doumee.dao.business.dao.SmsConfigMapper;
import com.doumee.dao.business.dao.SmsEmailMapper;
import com.doumee.dao.business.join.PlatformJobJoinMapper;
@@ -57,7 +59,6 @@
import java.math.BigDecimal;
import java.math.RoundingMode;
-import java.net.URLEncoder;
import java.util.*;
import java.util.Date;
import java.util.concurrent.TimeUnit;
@@ -296,16 +297,17 @@
.apply(pageWrap.getModel().getQueryStatus() != null, " find_in_set(t.`STATUS`,'"+pageWrap.getModel().getQueryStatus()+"')")
.apply(pageWrap.getModel().getQueryStatusForPower() != null, " find_in_set(t.`STATUS`,'"+pageWrap.getModel().getQueryStatusForPower()+"')")
.apply(pageWrap.getModel().getQueryType() != null, " find_in_set(t.TYPE,'"+pageWrap.getModel().getQueryType()+"')")
+ .ge(pageWrap.getModel().getCreateDateStart() != null, PlatformJob::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDateStart()))
+ .le(pageWrap.getModel().getCreateDateEnd() != null, PlatformJob::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDateEnd()))
.ge(pageWrap.getModel().getBeginWorkDateStart() != null, PlatformJob::getStartDate, Utils.Date.getStart(pageWrap.getModel().getBeginWorkDateStart()))
.le(pageWrap.getModel().getBeginWorkDateEnd() != null, PlatformJob::getStartDate, Utils.Date.getEnd(pageWrap.getModel().getBeginWorkDateEnd()))
.ge(pageWrap.getModel().getBeginDoneDateStart() != null, PlatformJob::getDoneDate, Utils.Date.getStart(pageWrap.getModel().getBeginDoneDateStart()))
.le(pageWrap.getModel().getBeginDoneDateEnd() != null, PlatformJob::getDoneDate, Utils.Date.getEnd(pageWrap.getModel().getBeginDoneDateEnd()))
- .ge(pageWrap.getModel().getCreateDateStart() != null, PlatformWmsJob::getIoCreatedate, Utils.Date.getStart(pageWrap.getModel().getCreateDateStart()))
- .le(pageWrap.getModel().getCreateDateEnd() != null, PlatformWmsJob::getIoCreatedate, Utils.Date.getEnd(pageWrap.getModel().getCreateDateEnd()))
.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(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()) {
if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
@@ -344,15 +346,12 @@
.apply("( t1.isdeleted = 0 or t.PLATFORM_ID is null )")
.eq(pageWrap.getModel().getPlatformGroupId() != null, PlatformJob::getPlatformGroupId, pageWrap.getModel().getPlatformGroupId())
.like(pageWrap.getModel().getCarCodeFront() != null, PlatformJob::getCarCodeFront, pageWrap.getModel().getCarCodeFront())
-
.apply(Objects.nonNull(pageWrap.getModel().getCallType())
&&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.ONE),
" ( " +
" ( t.`STATUS` = "+Constants.PlatformJobStatus.WAIT_CALL.getKey()+" and t.PLATFORM_GROUP_ID = ( SELECT p.group_id FROM platform p WHERE p.id = "+pageWrap.getModel().getPlatformId()+" LIMIT 1 ) )" +
") "
)
-
-
.apply(Objects.nonNull(pageWrap.getModel().getCallType())
&&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.TWO),
" ( " +
@@ -363,8 +362,6 @@
" (t.`STATUS` = "+Constants.PlatformJobStatus.TRANSFERING.getKey()+" and t.PLATFORM_ID = "+pageWrap.getModel().getPlatformId()+" ) " +
") "
)
-
-
.and(Objects.nonNull(pageWrap.getModel().getCallType())
&&Constants.equalsInteger(pageWrap.getModel().getCallType(),Constants.THREE),
i->i.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()).or()
@@ -426,8 +423,6 @@
}
}
}
-
-
public void queryWaitNum(PlatformJob platformJob){
if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
//鏌ヨ褰撳墠鎵�鏈夋帓闃熸暟閲�
@@ -440,22 +435,24 @@
.eq(PlatformJob::getPlatformGroupId,platformJob.getPlatformGroupId())
// .like(PlatformJob::getArriveDate,DateUtil.dateTypeToString(platformJob.getArriveDate(),"yyyy-MM-dd"))
);
-
- for (PlatformJob linePlatformJob:lineUpAllList) {
- this.getWmsJobData(linePlatformJob);
- }
if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(lineUpAllList)){
+ for (PlatformJob linePlatformJob:lineUpAllList) {
+ this.getWmsJobData(linePlatformJob);
+ }
//鏌ヨ鎺掗槦鍦ㄦ垜鍓嶉潰鐨勬暟鎹�
List<PlatformJob> lineUpNum = lineUpAllList.stream().filter(i->Objects.nonNull(i.getSignDate())&&i.getSignDate().getTime()<platformJob.getSignDate().getTime()).collect(Collectors.toList());
platformJob.setLineUpNum(lineUpNum.size());
- BigDecimal sumWorkRate = platformJob.getTotalNum();
+ BigDecimal sumWorkRate = Constants.formatBigdecimal(platformJob.getTotalNum());
for (PlatformJob linePlatformJob:lineUpNum) {
- sumWorkRate = sumWorkRate.add(linePlatformJob.getTotalNum());
+ sumWorkRate = sumWorkRate.add(Constants.formatBigdecimal(linePlatformJob.getTotalNum()));
}
//璁$畻棰勮绛夊緟鏃堕棿
List<Platform> platformList = platformJoinMapper.selectList(new QueryWrapper<Platform>().lambda()
.eq(Platform::getIsdeleted,Constants.ZERO).eq(Platform::getGroupId,platformJob.getPlatformGroupId()));
- BigDecimal workRate = platformList.stream().map(m->m.getWorkRate()).reduce(BigDecimal.ZERO,BigDecimal::add);
+ BigDecimal workRate = new BigDecimal(0);
+ if(platformList!=null){
+ workRate = platformList.stream().map(m->Constants.formatBigdecimal(m.getWorkRate())).reduce(BigDecimal.ZERO,BigDecimal::add);
+ }
if(sumWorkRate.compareTo(BigDecimal.ZERO) > Constants.ZERO && workRate.compareTo(BigDecimal.ZERO) > Constants.ZERO ){
BigDecimal sumMinute = sumWorkRate.divide(workRate,1, RoundingMode.HALF_DOWN).multiply(BigDecimal.valueOf(60L));
Integer sumMinuteInteger = sumMinute.intValue();
@@ -482,7 +479,7 @@
.orderByDesc(PlatformLog::getCreateDate)
.last(" limit 1")
);
- if(Objects.nonNull(platformLog)){
+ if(Objects.nonNull(platformLog) && platformJob.getWorkRate()!=null && platformJob.getWorkRate().compareTo(new BigDecimal(0))>0){
BigDecimal sumMinute = platformJob.getTotalNum().divide(platformJob.getWorkRate(),1, RoundingMode.HALF_DOWN).multiply(BigDecimal.valueOf(60L));
platformJob.setFinishTimeStr(DateUtil.DateToStr(DateUtil.afterMinutesDate(platformLog.getCreateDate(),sumMinute.intValue()),"HH:mm"));
}
@@ -492,7 +489,9 @@
.isNotNull(PlatformLog::getParam3)
.ne(PlatformLog::getParam3,Constants.ZERO+"")
.orderByDesc(PlatformLog::getCreateDate));
- platformJob.setWorkTime(platformLogList.stream().map(m->Long.valueOf(m.getParam3())).reduce(Long.valueOf(0),Long::sum));
+ if(platformLogList!=null){
+ platformJob.setWorkTime(platformLogList.stream().map(m->Long.valueOf(StringUtils.defaultString(m.getParam3(),"0"))).reduce(Long.valueOf(0),Long::sum));
+ }
}
}
@@ -516,6 +515,14 @@
.leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
.eq(PlatformJob::getIsdeleted,Constants.ZERO)
.eq(PlatformJob::getDrivierPhone,loginUserInfo.getMobile())
+ .and(i->i.like(PlatformJob::getDoneDate,DateUtil.getCurrDate())
+ .or().in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
+ ,Constants.PlatformJobStatus.WAIT_CONFIRM.getKey(),
+ Constants.PlatformJobStatus.WART_SIGN_IN.getKey(),
+ Constants.PlatformJobStatus.IN_WAIT.getKey(),
+ Constants.PlatformJobStatus.CALLED.getKey(),
+ Constants.PlatformJobStatus.WORKING.getKey())
+ )
.orderByDesc(PlatformJob::getId)
);
for (PlatformJob platformJob:platformJobList) {
@@ -524,9 +531,7 @@
//鏌ヨ鍓嶆柟鎺掗槦鏁伴噺
this.queryWaitNum(platformJob);
}
-
driverHomeVO.setPlatformJobList(platformJobList);
-
// 鍥尯瀵艰鍥� 鍥剧墖
driverHomeVO.setReservationMap(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.PLATFORM_GUIDEMAP).getCode());
// 棰勭害鎸囧崡 鏂囨湰
@@ -622,7 +627,8 @@
throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"鏈湪宸ヤ綔鏃堕棿["+platformGroup.getStartTime() + "-" + platformGroup.getEndTime() +"]锛屾棤娉曡繘琛岀鍒�");
}
//鏌ヨ浠婃棩鏈�澶х殑绛惧埌鏁�
- List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda().apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null "));
+ List<PlatformJob> signList = platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda()
+ .apply(" DATE(SIGN_DATE) = DATE(NOW()) and sign_date is not null "));
if(CollectionUtils.isEmpty(signList)){
platformJob.setSignNum(Constants.ONE);
} else{
@@ -736,6 +742,7 @@
,PlatformJob::getId,lineUpDetailDTO.getJobId())
.in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey(),
Constants.PlatformJobStatus.IN_WAIT.getKey(),
+ Constants.PlatformJobStatus.WORKING.getKey(),
Constants.PlatformJobStatus.CALLED.getKey())
.orderByDesc(PlatformJob::getStatus)
.orderByAsc(PlatformJob::getSignDate)
@@ -908,11 +915,31 @@
}
}
+
+
+
private Logger logger = LoggerFactory.getLogger(PlatformJobServiceImpl.class);
@Override
public void sendInPark(PlatformJob platformJob){
log.info("銆愪笅鍙戝仠杞﹀満鏉冮檺銆�================寮�濮�===="+platformJob.getCarCodeFront());
+ if(Constants.equalsInteger(platformJob.getType(),Constants.THREE)
+ && Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.DONE.getKey()) ){
+ //濡傛灉鏄凡瀹屾垚鐨勫鍗忚溅鍗歌揣浣滀笟锛屾煡璇㈡墍鏈夊悎鍚屾槸鍚︿互涓婄數瀛愰攣锛屽鏋滄病鏈夛紝涓嶈嚜鍔ㄦ巿鏉冪鍥�
+ List<PlatformWmsDetail> details = platformWmsDetailMapper.selectList(new QueryWrapper<PlatformWmsDetail>().lambda()
+ .select(PlatformWmsDetail::getLockStatus,PlatformWmsDetail::getId)
+ .eq(PlatformWmsDetail::getJobId,platformJob.getId())
+ .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO)
+ );
+ if(details!=null && details.size()>0){
+ for(PlatformWmsDetail d : details){
+ if(Constants.equalsInteger(d.getLockStatus(),Constants.ZERO)){
+ //濡傛灉瀛樺湪鏈笂閿侊紝涓嶈嚜鍔ㄦ巿鏉冪鍥�
+ return;
+ }
+ }
+ }
+ }
if(Constants.equalsInteger(platformJob.getType(),Constants.TWO)
|| Constants.equalsInteger(platformJob.getType(),Constants.THREE)
|| Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
@@ -994,6 +1021,10 @@
platformJob.setInHkdate(new Date());
if(sendStatus){
platformJob.setInHkstatus(Constants.TWO);
+ if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.DONE.getKey())){
+ //濡傛灉宸蹭笅鍙戞垚鍔燂紝鏍囪宸叉巿鏉冪鍥姸鎬�
+ platformJob.setStatus(Constants.PlatformJobStatus.AUTHED_LEAVE.getKey());
+ }
}else{
platformJob.setInHkstatus(Constants.THREE);
}
@@ -1111,7 +1142,7 @@
//骞挎挱 led閫氱煡
platformJob.setPlatformName(platform.getName());
this.broadcastAndLEed(platformJob,Constants.PlatformLedContent.CALLING.getInfo(),
- Constants.PlatformBroadcastContent.CALLING.getInfo()
+ Constants.PlatformBroadcastContent.CALLING.getInfo()+ Constants.PlatformBroadcastContent.CALLING.getInfo() + Constants.PlatformBroadcastContent.CALLING.getInfo()
);
platformJob.setPlatformWmsCode(platform.getCode());
@@ -1467,19 +1498,21 @@
Date date = new Date();
List<String> codeList =new ArrayList<>();
for(PlatformWmsDetail d : details){
- codeList.add(d.getIocode());
+ codeList.add(d.getContractNum());
}
TmsLockStatusQueryRequest tmsLock = new TmsLockStatusQueryRequest();
tmsLock.setContractNumbers(codeList);
TmsBaseResponse<List<TmsLockStatusQueryResponse>> lockResult = tmsService.lockStatusQuery(tmsLock);
- if(lockResult!=null && lockResult.isSuccess()&& lockResult.getData()!=null ){
+ if(lockResult!=null && lockResult.getCode()!=null && lockResult.getCode().equals("0")&& lockResult.getData()!=null ){
for(TmsLockStatusQueryResponse s : lockResult.getData()){
+ if(StringUtils.isBlank(s.getContractNumber())){
+ continue;
+ }
platformWmsDetailMapper.update(null,new UpdateWrapper<PlatformWmsDetail>().lambda()
- .eq(PlatformWmsDetail::getIocode,s.getContractNumber())
+ .eq(PlatformWmsDetail::getContractNum,s.getContractNumber())
.set(PlatformWmsDetail::getEditDate,date)
.set(PlatformWmsDetail::getLockDate,s.getOutDate())
.set(PlatformWmsDetail::getLockStatus,Constants.ONE)
- .eq(PlatformWmsDetail::getJobId,platformJob.getId())
.eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO));
}
}
@@ -1487,7 +1520,6 @@
}else if(Constants.equalsInteger(platformJob.getType(),Constants.ONE) || Constants.equalsInteger(platformJob.getType(),Constants.FOUR)){
//TODO 澶栧崗杞﹀嵏璐� 鎴栬�� 甯傚叕鍙歌溅鍗歌揣 鍒欐牴鎹换鍔℃儏鍐�
-
}
@@ -1507,6 +1539,76 @@
this.broadcastAndLEed(platformJob,Constants.PlatformLedContent.DONE.getInfo(),
Constants.PlatformBroadcastContent.DONE.getInfo());
return platformJob;
+ }
+ @Override
+ public void checkWmsLockStatus(){
+ List<PlatformWmsDetail> details = platformWmsDetailMapper.selectJoinList(PlatformWmsDetail.class,new MPJLambdaWrapper<PlatformWmsDetail>()
+ .selectAll(PlatformWmsDetail.class)
+ .leftJoin(PlatformJob.class,PlatformJob::getId,PlatformWmsDetail::getJobId)
+ .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey())//鏌ヨ宸插畬鎴愪綔涓氱殑
+ .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+ .and(wr->{wr.isNull(PlatformWmsDetail::getLockStatus).or().eq(PlatformWmsDetail::getLockStatus,Constants.ZERO);})
+ .eq(PlatformWmsDetail::getIsdeleted,Constants.ZERO));
+ if(details !=null && details.size()>0){
+ Date date = new Date();
+ List<String> codeList =new ArrayList<>();
+ for(PlatformWmsDetail d : details){
+ 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());
+ }
+ }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::getStatus,Constants.PlatformJobStatus.DONE.getKey())
+ .in(PlatformJob::getId,jobIds)
+ );
+ if(list!=null){
+ for(PlatformJob platformJob : list){
+ sendInPark(platformJob);//妫�鏌ユ槸鍚﹂渶瑕佽嚜鍔ㄦ巿鏉冪鍥�
+ }
+ }
+ }
+ }
+
+ }
+
+ private PlatformWmsJob getJobByContractnum(String contractNumber, List<PlatformWmsJob> details) {
+ for(PlatformWmsJob d : details){
+ if(StringUtils.equals(contractNumber,d.getContractNum())){
+ return d;
+ }
+ }
+ return null;
+ }
+ private PlatformWmsDetail getJobByContractnumFromDetail(String contractNumber, List<PlatformWmsDetail> details) {
+ for(PlatformWmsDetail d : details){
+ if(StringUtils.equals(contractNumber,d.getContractNum())){
+ return d;
+ }
+ }
+ return null;
}
@@ -2200,7 +2302,6 @@
}
}
-
--
Gitblit v1.9.3