From 658c1d5fcc47ca30c72c51f98f2df739700fe125 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期二, 12 十一月 2024 17:26:22 +0800
Subject: [PATCH] 最新版本541200007

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java |  143 +++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 141 insertions(+), 2 deletions(-)

diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
index c55fe52..2e64ef8 100644
--- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
+++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -14,11 +14,15 @@
 import com.doumee.core.haikang.model.param.respose.PageRegionInfoResponse;
 import com.doumee.core.haikang.model.param.respose.PageSensorStatusResponse;
 import com.doumee.core.haikang.service.HKService;
+import com.doumee.core.model.ApiResponse;
 import com.doumee.core.utils.Constants;
 import com.doumee.core.utils.DateUtil;
+import com.doumee.core.utils.Utils;
 import com.doumee.dao.business.*;
 import com.doumee.dao.business.model.*;
+import com.doumee.dao.web.reqeust.SavePlatformWarnEventDTO;
 import com.doumee.dao.web.response.platformReport.*;
+import com.doumee.service.business.impl.PlatformJobServiceImpl;
 import com.doumee.service.business.third.BoardService;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import lombok.extern.slf4j.Slf4j;
@@ -26,6 +30,7 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.math.BigDecimal;
 import java.util.*;
 import java.util.stream.Collectors;
 
@@ -253,7 +258,7 @@
                 .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey()
                         , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                         , Constants.PlatformJobStatus.LEAVED.getKey())
-                .apply("to_days(t1.create_data) = to_days(now())")
+                .apply("to_days(t1.create_date) = to_days(now())")
                 .groupBy(PlatformGroup::getId)
         );
         if(jobList!=null){
@@ -274,6 +279,140 @@
         );
         carWorkSituationVO.setPlatformLogList(platformLogList);
         return carWorkSituationVO;
+    }
+
+    @Override
+    public  List<PlatformWorkDataVO> platformWorkData(){
+
+        List<PlatformWorkDataVO> platformWorkDataVOList = new ArrayList<>();
+        List<Platform> platformList = platformMapper.selectJoinList(Platform.class, new MPJLambdaWrapper<Platform>()
+                .selectAll( Platform.class)
+                .eq(Platform::getIsdeleted, Constants.ZERO)
+                .orderByAsc(Platform::getSortnum)
+        );
+        /**
+         *    WAIT_CONFIRM(0, "寰呯‘璁�","寰呯‘璁�" ),
+     *         WART_SIGN_IN(1, "寰呯鍒�","寰呯鍒�" ),
+     *         WAIT_CALL(2, "宸茬鍒�","宸茬鍒�"),
+     *         IN_WAIT(3, "鍏ュ洯绛夊緟","鍏ュ洯绛夊緟" ),
+     *         CALLED(4, "宸插彨鍙�","宸插彨鍙�" ),
+     *         WORKING(5, "浣滀笟涓�","浣滀笟涓�" ),
+     *         DONE(6, "浣滀笟瀹屾垚 ","浣滀笟瀹屾垚" ),
+     *         TRANSFERING(7, "杞Щ涓�","杞Щ涓�" ),
+     *         EXCEPTION(8, "寮傚父鎸傝捣","寮傚父鎸傝捣" ),
+     *         AUTHED_LEAVE(9, "宸叉巿鏉冪鍥�","宸叉巿鏉冪鍥�" ),
+     *         LEAVED(10, "宸茬鍥� ","宸茬鍥� " ),
+     *         OVER_NUMBER(11, "宸茶繃鍙�","宸茶繃鍙�" ),
+     *         CANCEL(12, "宸插彇娑�","宸插彇娑�" ),
+         */
+
+        if(platformList!=null && platformList.size()>0){
+            List<PlatformJob> jobList = platformJobMapper.selectJoinList(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>()
+                    .selectAll( PlatformJob.class)
+                    .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 sum(ifnull(pl.IO_QTY , 0 ))   from platform_wms_detail pl  where   pl.job_id = t.id and pl.isdeleted=0 )",PlatformJob::getWorkNum)
+                    .apply("to_days(t.create_date) = to_days(now())")
+                    .eq(Platform::getIsdeleted, Constants.ZERO)
+                    .in(PlatformJob ::getStatus,new Integer[]{Constants.PlatformJobStatus.WORKING.getKey(),Constants.PlatformJobStatus.CALLED.getKey() })
+                    .orderByDesc(PlatformJob::getStatus ));
+            //鏈堝彴鐘舵�侊細0=浣滀笟涓紱1=绌洪棽涓紱2=浣滀笟瓒呮椂;3=鍙彿
+            for(Platform model : platformList){
+                PlatformWorkDataVO platformDurationVO = new PlatformWorkDataVO();
+                platformDurationVO.setPlatformName(model.getName());
+                platformDurationVO.setPlatformId(model.getId());
+                platformDurationVO.setPlatformSort(model.getSortnum());
+                PlatformJob job = getJobFromListById(model.getId(),jobList);
+                if(job != null){
+                    if(Constants.equalsInteger(job.getType(),Constants.ONE) || Constants.equalsInteger(job.getType(),Constants.THREE)){
+                        platformDurationVO.setWorkType(Constants.ONE);//濡傛灉鏄璐�
+                    }else{
+                        platformDurationVO.setWorkType(Constants.ZERO);//濡傛灉鏄嵏璐�
+                    }
+                    Integer workMinute = job.getWorkNum().multiply(new BigDecimal(60)).divide(model.getWorkRate(),0,BigDecimal.ROUND_HALF_UP).intValue();
+                    Date overDate = DateUtil.getXMinuteAfterDate(job.getNewStartDate(),workMinute + model.getWorkTimeoutAlarmTime());//棰勮瀹屾垚鏃堕棿
+                    platformDurationVO.setFinishTimeStr(DateUtil.DateToStr(overDate,"HH:mm"));
+
+                    platformDurationVO.setWorkNum(Constants.formatBigdecimal(job.getWorkNum()).intValue());
+                    platformDurationVO.setCarNo(job.getCarCodeFront());//杞︾墝鍙�
+                    if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.CALLED.getKey() )){
+                        platformDurationVO.setStatus(Constants.THREE); //鍙彿涓�
+                    }else{
+                        platformDurationVO.setStatus(Constants.ZERO); //浣滀笟涓�
+                        platformDurationVO.setWorkTime(PlatformJobServiceImpl.getWorkTime(job,platformLogMapper));//宸插伐浣滄椂闂�
+                        if(overDate.getTime() < System.currentTimeMillis() ){
+                            model.setStatus(Constants.TWO); //浣滀笟宸茶秴鏃�
+                        }
+                    }
+                }else{
+                    platformDurationVO.setStatus(Constants.ONE);//绌洪棽涓�
+                }
+                platformWorkDataVOList.add(platformDurationVO);
+            }
+        }
+        return  platformWorkDataVOList;
+    }
+
+    private PlatformJob getJobFromListById(Integer id, List<PlatformJob> jobList) {
+        if(jobList!=null){
+            for(PlatformJob job :jobList){
+                if(Constants.equalsInteger(job.getPlatformId(),id)){
+                    return  job;
+                }
+            }
+
+        }
+
+        return null;
+    }
+
+    /**
+     *
+     * @param type 鏌ヨ绫诲瀷锛�0=鍏ュ簱锛�1=鍑哄簱
+     * @return
+     */
+    @Override
+    public   List<WorkEfficiencyVO> workEfficiency(Integer type){
+        //浣滀笟绫诲瀷 0鑷湁杞﹀嵏璐� 1鑷湁杞﹁璐� 2澶栧崗杞﹀嵏璐� 3澶栧崗杞﹁璐� 4甯傚叕鍙稿鍗忚溅鍗歌揣
+        List<WorkEfficiencyVO> workEfficiencyVOList = new ArrayList<>();
+        List<PlatformWmsDetail> jobList = platformWmsDetailMapper.selectJoinList(PlatformWmsDetail.class, new MPJLambdaWrapper<PlatformWmsDetail>()
+                .selectAll( PlatformWmsDetail.class)
+                .selectAs( PlatformJob::getDoneDate,PlatformWmsDetail::getDoneDate)
+                .leftJoin(PlatformJob.class,PlatformJob::getId,PlatformWmsDetail::getJobId)
+                .eq(PlatformWmsDetail::getIsdeleted, Constants.ZERO)
+                .eq(PlatformJob::getIsdeleted, Constants.ZERO)
+                .in(Constants.equalsInteger(type,Constants.ZERO),PlatformJob::getType,new Integer[]{0,2,4})
+                .in(Constants.equalsInteger(type,Constants.ONE),PlatformJob::getType,new Integer[]{1,3})
+                .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey()
+                        , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
+                        , Constants.PlatformJobStatus.LEAVED.getKey())
+                .apply("to_days(t1.create_date) = to_days(now())")
+        );
+        int curtotalNum = 0;
+        Date today =  Utils.Date.getStart(new Date());
+        long curTime=0, lastTime=0;
+        for (int i = 0; i < 8; i++) {
+            lastTime = curTime;//涓婃鐨勬椂闂�
+            int curHour = 8+(i*2);
+            long time = curHour*60*60*1000 + today.getTime();
+            WorkEfficiencyVO workEfficiencyVO = new WorkEfficiencyVO();
+            workEfficiencyVO.setWorkTime(curHour+":00");
+            if(jobList!=null && jobList.size()>0){
+                for(PlatformWmsDetail detail : jobList){
+                    if(detail.getDoneDate()!=null && detail.getDoneDate().getTime()<= time){
+                        //褰撳墠閲�
+                        if(detail.getDoneDate()!=null && detail.getDoneDate().getTime() > lastTime){
+                            //鍖洪棿鍊� 鍙栧疄杩�2灏忔椂鍐呯殑绱鍊�
+                            workEfficiencyVO.setWorkNum(Constants.formatIntegerNum(workEfficiencyVO.getWorkNum())+Constants.formatBigdecimal(detail.getIoQty()).intValue());
+                        }
+                        //绱Н閲�
+                        curtotalNum += Constants.formatBigdecimal(detail.getIoQty()).intValue();
+                    }
+                }
+            }
+            workEfficiencyVO.setTotalWorkNum(curtotalNum);//绱鍊�
+            workEfficiencyVOList.add(workEfficiencyVO);
+        }
+        return workEfficiencyVOList;
     }
     @Override
     public List<PlatformDurationVO> platformDuration(){
@@ -330,7 +469,7 @@
                 .selectAll(PlatformJob.class)
                 .select("count(id)" ,PlatformJob::getCountum)
                 .eq(PlatformJob::getIsdeleted,Constants.ZERO)
-                .apply("to_days(create_data) = to_days(now())" )
+                .apply("to_days(create_date) = to_days(now())" )
                 .groupBy(PlatformJob::getStatus )
         );
         if(jobList!=null){

--
Gitblit v1.9.3