From c29ce426a6ce314bc26a23cd92d226cc01825783 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期一, 26 八月 2024 18:18:27 +0800
Subject: [PATCH] 代码初始化

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/PlatformJobServiceImpl.java |  205 ++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 177 insertions(+), 28 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 d8e0284..2544ffb 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
@@ -4,6 +4,7 @@
 import com.doumee.biz.system.SystemDictDataBiz;
 import com.doumee.core.constants.ResponseStatus;
 import com.doumee.core.exception.BusinessException;
+import com.doumee.core.model.LoginUserInfo;
 import com.doumee.core.model.PageData;
 import com.doumee.core.model.PageWrap;
 import com.doumee.core.utils.Constants;
@@ -12,6 +13,7 @@
 import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.join.PlatformJobJoinMapper;
+import com.doumee.dao.business.join.PlatformJoinMapper;
 import com.doumee.dao.business.model.*;
 import com.doumee.dao.web.reqeust.JobDetailDTO;
 import com.doumee.dao.web.reqeust.JobOperateDTO;
@@ -33,6 +35,7 @@
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -58,8 +61,9 @@
     @Autowired
     private SystemDictDataBiz systemDictDataBiz;
 
+
     @Autowired
-    private PlatformMapper platformMapper;
+    private PlatformJoinMapper platformJoinMapper;
 
     @Autowired
     private PlatformLogMapper platformLogMapper;
@@ -69,6 +73,12 @@
 
     @Autowired
     private PlatformWmsDetailMapper platformWmsDetailMapper;
+
+    @Autowired
+    private PlatformGroupMapper platformGroupMapper;
+
+    @Autowired
+    private PlatformShowParamMapper platformShowParamMapper;
 
 
     @Override
@@ -131,9 +141,13 @@
     @Override
     public PageData<PlatformJob> findPage(PageWrap<PlatformJob> pageWrap) {
         IPage<PlatformJob> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<PlatformJob> queryWrapper = new QueryWrapper<>();
+        MPJLambdaWrapper<PlatformJob> queryWrapper = new MPJLambdaWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-        queryWrapper.lambda()
+        queryWrapper
+                .selectAll(PlatformJob.class)
+                .selectAs(Platform::getName,PlatformJob::getPlatformName)
+                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
+                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                 .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()))
@@ -216,13 +230,18 @@
                 queryWrapper.orderByAsc(sortData.getProperty());
             }
         }
-
-        PageData<PlatformJob> pageData = PageData.from(platformJobMapper.selectPage(page, queryWrapper));
-        pageData.getRecords().forEach(i->{
+       IPage<PlatformJob> platformJobIPage = platformJobJoinMapper.selectJoinPage(page,PlatformJob.class,queryWrapper);
+        platformJobIPage.getRecords().forEach(i->{
             i.dealTime();
             this.getWmsJobData(i);
         });
-        return pageData;
+        return PageData.from(platformJobIPage);
+//        PageData<PlatformJob> pageData = PageData.from(platformJobMapper.selectPage(page, queryWrapper));
+//        pageData.getRecords().forEach(i->{
+//            i.dealTime();
+//            this.getWmsJobData(i);
+//        });
+//        return pageData;
     }
 
 
@@ -250,12 +269,60 @@
                 platformWmsJob.setPlatformWmsDetailList(platformWmsDetailList);
                 platformJob.setPlatformWmsJob(platformWmsJob);
             }
-        }
-
-
+        } 
     }
 
 
+    public void queryWaitNum(PlatformJob platformJob){
+        if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())){
+            //鏌ヨ鍓嶆柟鎺掗槦鏁伴噺
+            List<PlatformJob> lineUpNum =  platformJobMapper.selectList(new QueryWrapper<PlatformJob>().lambda()
+                    .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+                    .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
+                            ,Constants.PlatformJobStatus.IN_WAIT.getKey()
+                            ,Constants.PlatformJobStatus.TRANSFERING.getKey())
+                    .gt(PlatformJob::getSignDate,platformJob.getSignDate())
+                    .eq(PlatformJob::getPlatformGroupId,platformJob.getPlatformGroupId())
+                    .like(PlatformJob::getArriveDate,DateUtil.getDate(platformJob.getArriveDate(),"yyyy-MM-dd")));
+            platformJob.setLineUpNum(lineUpNum.size());
+            BigDecimal sumWorkRate = platformJob.getTotalNum();
+            for (PlatformJob linePlatformJob:lineUpNum) {
+                this.getWmsJobData(linePlatformJob);
+                sumWorkRate = sumWorkRate.add(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);
+            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();
+                Integer hours = sumMinuteInteger/60;
+                Integer minus = sumMinuteInteger%60;
+                String  waitTime = "棰勮绛夊緟锛�";
+                if(!Constants.equalsInteger(hours,Constants.ZERO)){
+                    waitTime = waitTime + hours + "灏忔椂";
+                }
+                if(!Constants.equalsInteger(hours,Constants.ZERO)){
+                    waitTime = waitTime + minus + "鍒嗛挓";
+                }
+                platformJob.setWaitTime(waitTime);
+            }
+        }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
+            //鏌ヨ鏈�鍚庡紑濮嬩换鍔$殑鏈堝彴璁板綍  鏃ュ織琛�  鍥犱负瀛樺湪寮傚父鎸傝捣 杞Щ 绛夐棶棰�
+            PlatformLog platformLog = platformLogMapper.selectOne(new QueryWrapper<PlatformLog>().lambda()
+                    .eq(PlatformLog::getJobId,platformJob.getId())
+                    .eq(PlatformLog::getObjType,Constants.PlatformJobStatus.WORKING.getKey())
+                    .orderByDesc(PlatformLog::getCreateDate)
+                    .last(" limit 1")
+            );
+            if(Objects.nonNull(platformLog)){
+                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"));
+            }
+        }
+    }
+    
+    
     @Override
     public long count(PlatformJob platformJob) {
         QueryWrapper<PlatformJob> wrapper = new QueryWrapper<>(platformJob);
@@ -264,17 +331,34 @@
 
     //TODO
     @Override
-    public DriverHomeVO getDriverHome(Integer memberId){
+    public DriverHomeVO getDriverHome(LoginUserInfo loginUserInfo){
         DriverHomeVO driverHomeVO = new DriverHomeVO();
         //TODO 杞挱鍥�
 
-        List<PlatformJob> platformJobList =  platformJobMapper.selectList(new QueryWrapper<PlatformJob>()
-                .lambda()
-                .eq(PlatformJob::getDriverId,memberId)
-//                        .like(PlatformJob::get)
-                .orderByDesc(PlatformJob::getId));
+        List<PlatformJob> platformJobList =  platformJobJoinMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
+                .selectAll(PlatformJob.class)
+                .selectAs(Platform::getName,PlatformJob::getPlatformName)
+                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
+                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
+                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+                .eq(PlatformJob::getDrivierPhone,loginUserInfo.getMobile())
+                .like(PlatformJob::getArriveDate,DateUtil.getCurrDate())
+                .orderByDesc(PlatformJob::getId)
+        );
+        for (PlatformJob platformJob:platformJobList) {
+            //澶勭悊WSM鏁伴噺
+            this.getWmsJobData(platformJob);
+            //鏌ヨ鍓嶆柟鎺掗槦鏁伴噺
+            this.queryWaitNum(platformJob);
+        }
+
+
         driverHomeVO.setPlatformJobList(platformJobList);
 
+        // 鍥尯瀵艰鍥�  鍥剧墖
+        driverHomeVO.setReservationMap(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.PLATFORM_GUIDEMAP).getCode());
+        // 棰勭害鎸囧崡 鏂囨湰
+        driverHomeVO.setBookingTips(systemDictDataBiz.queryByCode(Constants.PLATFORM,Constants.PLATFORM_BOOKING_TIPS).getCode());
 
         return driverHomeVO;
     }
@@ -369,18 +453,12 @@
             }
         }else if( Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WAIT_CALL.getKey())
                 || Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())
-        ){//鏌ヨ鎺掗槦鎯呭喌
-            Long lineUpNum =  platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
-                    .eq(PlatformJob::getIsdeleted,Constants.ZERO)
-                    .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WAIT_CALL.getKey()
-                            ,Constants.PlatformJobStatus.IN_WAIT.getKey()
-                            ,Constants.PlatformJobStatus.TRANSFERING.getKey())
-                    .gt(PlatformJob::getSignDate,platformJob.getSignDate())
-                    .like(PlatformJob::getArriveDate,DateUtil.getDate(platformJob.getArriveDate(),"yyyy-MM-dd")));
-            platformJob.setLineUpNum(lineUpNum);
+        ){
+            //鏌ヨ鍓嶆柟鎺掗槦鏁伴噺
+            this.queryWaitNum(platformJob);
         }else if(Constants.equalsInteger(platformJob.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
             //浣滀笟鏈堝彴淇℃伅
-            Platform platform = platformMapper.selectById(platformJob.getPlatformId());
+            Platform platform = platformJoinMapper.selectById(platformJob.getPlatformId());
             if(Objects.nonNull(platform)){
                 platformJob.setPlatformName(platform.getName());
             }
@@ -417,7 +495,7 @@
         );
         //鑾峰彇鎵�鏈夋湀鍙扮粍
         List<Integer> platformIdList = platformJobList.stream().map(m->m.getPlatformGroupId()).collect(Collectors.toList());
-        List<Platform> platformList = platformMapper.selectList(new QueryWrapper<Platform>().lambda()
+        List<Platform> platformList = platformJoinMapper.selectList(new QueryWrapper<Platform>().lambda()
                 .eq(Platform::getIsdeleted,Constants.ZERO)
                 .in(Platform::getId,platformIdList));
 
@@ -841,8 +919,79 @@
     }
 
 
+    @Override
+    public  List<Platform> getPlatformList(Integer groupId, LoginUserInfo loginUserInfo){
+        //鏌ヨ鏈堝彴缁勪笅鎵�鏈夋湀鍙�
+        List<Platform> allPlatformList = platformJoinMapper.selectJoinList(Platform.class,
+                new MPJLambdaWrapper<Platform>()
+                        .selectAll(Platform.class)
+                        .select(" ( select count(1) from platform_job pj where t.id = pj.PLATFORM_ID and pj.STATUS = "+Constants.PlatformJobStatus.WORKING.getKey()+" ) as workStatus ")
+                        .eq(Platform::getIsdeleted, Constants.ZERO)
+                        .eq(Platform::getStatus,Constants.ZERO)
+                        .eq(Platform::getGroupId,groupId)
+        );
+        this.getPlatformShow(allPlatformList,loginUserInfo);
+        for (Platform platform:allPlatformList) {
+            this.getJobByPlatform(platform,loginUserInfo);
+        }
+        return allPlatformList;
+    }
+
+    /**
+     * 鏌ヨ鏈堝彴鐨勫紑鍚儏鍐�
+     * @param allPlatformList
+     * @param loginUserInfo
+     */
+    public void getPlatformShow(List<Platform> allPlatformList , LoginUserInfo loginUserInfo){
+        //澶勭悊鎴戠殑鏈堝彴淇℃伅 鏄惁閰嶇疆闅愯棌
+        List<PlatformShowParam> platformShowParamList = platformShowParamMapper.selectList(new QueryWrapper<PlatformShowParam>()
+                .lambda()
+                .eq(PlatformShowParam::getIsdeleted, Constants.ZERO)
+                .eq(PlatformShowParam::getMemberId,loginUserInfo.getMemberId())
+        );
+        //濡傛灉鏈厤缃鏁版嵁 鍒欏叏閮ㄦ樉绀�
+        if(CollectionUtils.isEmpty(platformShowParamList)){
+            for (Platform platform:allPlatformList) {
+                platform.setShowConfig(true);
+            }
+        }else{
+            //鏍规嵁閰嶇疆鏄剧ず鏁版嵁
+            for (PlatformShowParam platformShowParam:platformShowParamList) {
+                for (Platform platform:allPlatformList) {
+                    if(Constants.equalsInteger(platform.getId(),platformShowParam.getPlatformId())){
+                        platform.setShowConfig(true);
+                        break;
+                    }
+                }
+            }
+        }
+    }
 
 
-
+    /**
+     * 鑾峰彇鏈堝彴涓嬬殑浠诲姟鍒楄〃
+     * @param platform
+     * @param loginUserInfo
+     */
+    public void getJobByPlatform(Platform platform,LoginUserInfo loginUserInfo){
+        List<PlatformJob> platformJobList =  platformJobJoinMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
+                .selectAll(PlatformJob.class)
+                .selectAs(Platform::getName,PlatformJob::getPlatformName)
+                .selectAs(Platform::getWorkRate,PlatformJob::getWorkRate)
+                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
+                .eq(PlatformJob::getPlatformId,platform.getId())
+                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
+                .eq(PlatformJob::getDrivierPhone,loginUserInfo.getMobile())
+                .like(PlatformJob::getArriveDate, DateUtil.getCurrDate())
+                .orderByDesc(PlatformJob::getId)
+        );
+        for (PlatformJob platformJob:platformJobList) {
+            //澶勭悊WSM鏁伴噺
+            this.getWmsJobData(platformJob);
+            //鏌ヨ鍓嶆柟鎺掗槦鏁伴噺
+            this.queryWaitNum(platformJob);
+        }
+        platform.setWorkJobList(platformJobList);
+    }
 
 }

--
Gitblit v1.9.3