liukangdong
2024-12-17 04bf59bbc3fad774c57a2ee5ebf07db24b476bf2
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -5,6 +5,7 @@
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.cars.response.CarsAlarmResultListResponse;
import com.doumee.core.haikang.model.cars.response.CarsDeviceDetaisResponse;
import com.doumee.core.haikang.model.param.BaseListPageRequest;
import com.doumee.core.haikang.model.param.BaseListPageResponse;
@@ -19,9 +20,10 @@
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.core.wms.model.response.WmsBaseResponse;
import com.doumee.core.wms.model.response.WmsInventoryDataResponse;
import com.doumee.core.wms.model.response.WmsBaseDataResponse;
import com.doumee.core.wms.model.response.WmsInventoryJsonResponse;
import com.doumee.dao.business.*;
import com.doumee.dao.business.join.PlatformWarnEventJoinMapper;
import com.doumee.dao.business.join.VisitsJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.dao.web.reqeust.CarsJobAndContractDTO;
@@ -30,6 +32,7 @@
import com.doumee.service.business.impl.VisitsServiceImpl;
import com.doumee.service.business.third.BoardService;
import com.doumee.service.business.third.WmsService;
import com.github.xiaoymin.knife4j.core.util.CollectionUtils;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@@ -60,9 +63,11 @@
    @Autowired
    private SystemDictDataBiz systemDictDataBiz;
    @Autowired
    private PlatformWarnEventMapper platformWarnEventMapper;
    private PlatformWarnEventJoinMapper platformWarnEventJoinMapper;
    @Autowired
    private PlatformJobMapper platformJobMapper;
    @Autowired
    private PlatformBooksMapper platformBooksMapper;
    @Autowired
    private PlatformWmsDetailMapper platformWmsDetailMapper;
    @Autowired
@@ -80,7 +85,75 @@
     * @return
     */
    @Override
    public BoardStockListVO stockList( ){
    public     List<GeneralVO> todayTotalInList(){
        /**
         * 1市公司:根据预约的入园原因为市公司卸货的任务为市公司入库的统计;
         * 2集散中心:WMS推送的入库单据;
         * 3加工入库:预约入园为重庆加工入库的(作业月台为安泰物流卸货月台);
         */
        String[] names = new String[]{"市公司","集散中心","加工入库"};
        String reason =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.CITY_XH_REASON_ID).getCode();
        String platformGroupId =systemDictDataBiz.queryByCode(Constants.SYSTEM,Constants.ATWL_XH_PLATFORM_ID).getCode();;
        List<GeneralVO> list = new ArrayList<>();
        for (int i = 0; i < 3; i++) {
            Random random = new Random();
            GeneralVO data = new GeneralVO();
            data.setName(names[i]);
            BigDecimal num =new BigDecimal(0);
            if(i == 0){
                List<PlatformBooks> jobs = platformBooksMapper.selectJoinList(PlatformBooks.class, new MPJLambdaWrapper<PlatformBooks>()
                        .select(PlatformJob::getTotalNum)
                         .leftJoin(PlatformJob.class,PlatformJob::getId,PlatformBooks::getJobId)
                        .eq(PlatformBooks::getIsdeleted,Constants.ZERO)
                        .eq(PlatformBooks::getReasonId,reason)
                        .apply("to_days(t1.done_date) = to_days(now())")
                        .eq(PlatformBooks::getStatus,Constants.TWO));
                if(jobs!=null){
                    for(PlatformBooks j :jobs){
                        num =num.add(Constants.formatBigdecimal(j.getTotalNum()));
                    }
                }
            }else if(i ==1){
                List<PlatformJob> jobs = platformJobMapper.selectList (new MPJLambdaWrapper<PlatformJob>()
                        .select(PlatformJob::getTotalNum)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .eq(PlatformJob::getOrigin,Constants.ONE)
                        .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey()
                                , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                                , Constants.PlatformJobStatus.LEAVED.getKey())
                        .apply("to_days(done_date) = to_days(now())") );
                if(jobs!=null){
                    for(PlatformJob j :jobs){
                        num =num.add(Constants.formatBigdecimal(j.getTotalNum()));
                    }
                }
            }else{
                List<PlatformJob> jobs = platformJobMapper.selectList (new MPJLambdaWrapper<PlatformJob>()
                        .select(PlatformJob::getTotalNum)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .eq(PlatformJob::getPlatformGroupId,platformGroupId)
                        .apply("to_days(done_date) = to_days(now())")
                        .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey()
                                , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                                , Constants.PlatformJobStatus.LEAVED.getKey()) );
                if(jobs!=null){
                    for(PlatformJob j :jobs){
                        num = num.add(Constants.formatBigdecimal(j.getTotalNum()));
                    }
                }
            }
            data.setNum(num);
            list.add(data);
        }
        return list;
    }
    /**
     * 获取区域树形结构数据
     * @return
     */
    @Override
    public BoardStockListVO stockList(){
        BoardStockListVO data = new BoardStockListVO();
        double toatalNum = 1d;
        BigDecimal num = new BigDecimal(0);
@@ -88,17 +161,16 @@
        try {
            toatalNum =Double.parseDouble(systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_TOTAL_STOCK_NUM).getCode()) ;
        }catch (Exception e){
        }
        WmsBaseResponse<WmsInventoryDataResponse> response =  wmsService.getInventoryList();
        if(response!=null && response.getData()!=null && response.getData().size()>=0){
        WmsBaseResponse<WmsBaseDataResponse> response =  wmsService.getInventoryList();
        if(response!=null && response.getData()!=null && response.getData().size()>0){
            List<WmsInventoryJsonResponse> t= response.getData().get(0).getJson();
            if(t!=null &&t.size()>0){
                for(WmsInventoryJsonResponse j :t){
                    num = num.add (Constants.formatBigdecimal( j.getQty()));
                    GeneralVO d = new GeneralVO();
                    d.setNum(Constants.formatBigdecimal(j.getQty()));
                    d.setName(j.getItem_name());
                    d.setName(j.getItemName());
                    list.add(d);
                }
            }
@@ -109,7 +181,7 @@
            toatalNum =1;
        }
        data.setTotalNum(new BigDecimal(toatalNum));
        data.setUseRate(data.getTotalNum().divide(data.getNum(),2,BigDecimal.ROUND_UP));
        data.setUseRate(Constants.formatBigdecimal(data.getNum()).divide(data.getTotalNum(),2,BigDecimal.ROUND_HALF_UP));
        return data;
    }
@@ -314,7 +386,10 @@
    public  List<PlatformGroupFinishVO> platformGroupFinish(){
        List<PlatformGroupFinishVO> data = new ArrayList<>();
        List<PlatformGroup> groups = platformGroupMapper.selectJoinList(PlatformGroup.class, new MPJLambdaWrapper<PlatformGroup>()
                .select("(select sum(a.TOTAL_NUM) from platform_job a where a.PLATFORM_GROUP_ID=t.id and a.isdeleted=0   and a.status in(6,9,10) and to_days(a.done_date) = to_days(now()))",PlatformGroup::getOrtherTotalNum)
                .select("(select sum(case when a.total_num is null  then ( select sum(pwd.IO_QTY) from platform_wms_detail pwd where pwd.JOB_ID = a.id  ) else a.total_num end) from platform_job a where a.PLATFORM_GROUP_ID=t.id and a.isdeleted=0   and a.status in(6,9,10) and to_days(a.done_date) = to_days(now()))",PlatformGroup::getOrtherTotalNum)
                //.select("(select sum(a.TOTAL_NUM) from platform_job a where a.PLATFORM_GROUP_ID=t.id and a.isdeleted=0   and a.status in(6,9,10) and to_days(a.done_date) = to_days(now()))",PlatformGroup::getOrtherTotalNum)
                //.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 ")
                .selectAll(PlatformGroup.class)
                .eq(PlatformGroup::getIsdeleted,Constants.ZERO)
        );
@@ -353,6 +428,7 @@
    public  CarWorkSituationVO carWorkSituation(int limit){
        CarWorkSituationVO carWorkSituationVO = new CarWorkSituationVO();
        List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>().lambda()
                        .like(PlatformLog::getCreateDate,DateUtil.getCurrDate())
                .orderByDesc(PlatformLog::getCreateDate)
                .last(" limit "+limit)
        );
@@ -593,6 +669,7 @@
        List<PlatformJob>  dataList = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .selectAs(PlatformJob::getCreateDate,PlatformJob::getCreateDate)
                        .selectAs(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
@@ -603,7 +680,7 @@
            TransportMeasureVO data = new TransportMeasureVO();
            data.setPlanDate(date);
            data.setPlanTimes(0);
            data.setPlanTaskNum(new BigDecimal(random.nextInt(0)));
            data.setPlanTaskNum(new BigDecimal( 0));
            data.setFinishTaskNum(new BigDecimal(0));
            for(PlatformJob job :dataList){
                if(queryType == 2){
@@ -652,7 +729,11 @@
                        .selectAll(PlatformJob.class)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .eq(PlatformJob::getCarCodeFront,param.getCarCode())
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey(),Constants.PlatformJobStatus.CALLED.getKey())
                        .in(PlatformJob::getStatus,
                                Constants.PlatformJobStatus.DONE.getKey(),
                                Constants.PlatformJobStatus.LEAVED.getKey(),
                                Constants.PlatformJobStatus.AUTHED_LEAVE.getKey(),
                                Constants.PlatformJobStatus.CALLED.getKey())
                        .last("limit 1"));
        if(job!=null){
            List<PlatformLog>  logList = platformLogMapper.selectJoinList(PlatformLog.class,
@@ -692,7 +773,7 @@
                                .orderByDesc(PlatformLog::getCreateDate));
                if(detailList!=null){
                    for(PlatformWmsDetail d : detailList){
                        if(!isNotExistIocode(d.getIocode(),data.getContractList())){
                        if(isExistIocode(d.getIocode(),data.getContractList())){
                                continue;
                        }
                        tt = new CarsContractVO();
@@ -727,7 +808,7 @@
        return list;
    }
    private boolean isNotExistIocode(String iocode, List<CarsContractVO> detailList) {
    private boolean isExistIocode(String iocode, List<CarsContractVO> detailList) {
        if(detailList!=null){
            for(CarsContractVO d :detailList){
                if(StringUtils.equals(d.getIoCode(),iocode)){
@@ -770,44 +851,50 @@
        Date lastYear = DateUtil.addYearToDate(year,-1);//去年
        List<PlatformJob>  monthNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                .selectAs(PlatformJob::getId,PlatformJob::getId)
                .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
//                .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                    new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                            .select(PlatformJob::getType,PlatformJob::getType)
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                        .select(PlatformJob::getStatus,PlatformJob::getStatus)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
//                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
                        .apply("year(create_date) = year("+DateUtil.getPlusTime2(month)+") and month(create_date) = month("+DateUtil.getPlusTime2(month)+") and to_days(create_date)<= "+DateUtil.getPlusTime2(month)));
                        .apply("year(done_date) = year('"+DateUtil.getPlusTime2(month)+"') and month(done_date) = month('"+DateUtil.getPlusTime2(month)+"') "));
        List<PlatformJob>  monthLastNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .selectAs(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                        .select(PlatformJob::getType,PlatformJob::getType)
                        .select(PlatformJob::getStatus,PlatformJob::getStatus)
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
                        .apply("year(create_date) = year("+DateUtil.getPlusTime2(lastMonth)+") and month(create_date) = month("+DateUtil.getPlusTime2(lastMonth)+") and to_days(create_date)<= "+DateUtil.getPlusTime2(lastMonth)));
                        .apply("year(done_date) = year('"+DateUtil.getPlusTime2(lastMonth)+"') and month(done_date) = month('"+DateUtil.getPlusTime2(lastMonth)+"') and  done_date<= '"
                                +DateUtil.getPlusTime2(lastMonth)+"'"));
        List<PlatformJob>  yearNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                        .selectCount(PlatformJob::getPlatformId,PlatformJob::getCountum)
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .selectAs(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                        .select(PlatformJob::getStatus,PlatformJob::getStatus)
                        .select(PlatformJob::getType,PlatformJob::getType)
//                        .selectCount(PlatformJob::getPlatformId,PlatformJob::getCountum)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
                        .apply("year(create_date) = year("+DateUtil.getPlusTime2(year)+")   and to_days(create_date)<= "+DateUtil.getPlusTime2(year)));
                        .apply("year(done_date) = year('"+DateUtil.getPlusTime2(year)+"')   and done_date<= '"+DateUtil.getPlusTime2(year)+"'"));
        List<PlatformJob> yearLastNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .selectAs(PlatformJob::getType,PlatformJob::getId)
                        .select(PlatformJob::getStatus,PlatformJob::getStatus)
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getType,Constants.ONE,Constants.THREE)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
                        .apply("year(create_date) = year("+DateUtil.getPlusTime2(lastYear)+")  and to_days(create_date)<= "+DateUtil.getPlusTime2(lastYear)));
                        .apply("year(done_date) = year('"+DateUtil.getPlusTime2(lastYear)+"')  and done_date<= '"+DateUtil.getPlusTime2(lastYear)+"'"));
        data.setMonthOutTotal(getSumTotalByList(monthNum,0,null));//本月出库量
        data.setMonthLastOutTotal(getSumTotalByList(monthLastNum,null,null) );//上有出库量
        data.setMonthLastOutTotal(getSumTotalByList(monthLastNum,null,null) );//上月出库量
        data.setYearOutTotal(getSumTotalByList(yearNum,null,null)  );//本年出库量
        data.setYearLastOutTotal(getSumTotalByList(yearLastNum,null,null) );//去年出库量
        data.setMonthOutTimes(monthNum!=null?monthNum.size():0);
@@ -823,19 +910,30 @@
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey(),Constants.PlatformJobStatus.CALLED.getKey())
                        .apply(" and to_days(create_date) <to_days(now())"));
                        .apply("   to_days(create_date) <to_days(now())"));
        //==========今天出入库任务
        List<PlatformJob> currentNum = platformJobMapper.selectJoinList(PlatformJob.class,
        //==========今天出入库完成量
        List<PlatformJob> currentDoneNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .selectAs(PlatformJob::getStatus,PlatformJob::getStatus)
                        .selectAs(PlatformJob::getType,PlatformJob::getType)
                        .selectAs(PlatformJob::getStatus,PlatformJob::getStatus)
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey())
                        .apply("year(create_date) = year("+DateUtil.getPlusTime2(lastYear)+")  and to_days(create_date)<= "+DateUtil.getPlusTime2(lastYear)));
                        .apply(" to_days(done_date) = to_days(now())"));
        //==========今天下发出入库任务----
        List<PlatformJob> currentNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .selectAs(PlatformJob::getType,PlatformJob::getType)
                        .selectAs(PlatformJob::getStatus,PlatformJob::getStatus)
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
//                        .select("select sum(io_qty) from platform_wms_details a where a.isdeleted=0 and a.job_id=t.id",create_date)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey())
                        .apply(" to_days(create_date) = to_days(now())"));
        BigDecimal beforeOutNum = (getSumTotalByList(beforeJobNum,0,null));//今天之前未完成出库任务
        BigDecimal currentOutNum = (getSumTotalByList(currentNum,0,null));//今天下发出库任务
@@ -843,12 +941,12 @@
        BigDecimal currentInNum = (getSumTotalByList(currentNum,1,null));//今天下发入库任务
        data.setCurrentInNum(beforeInNum.add(currentInNum));//当前入库总任务成量
        data.setCurrentOutNum(beforeOutNum.add(currentOutNum));//当前出库总任务成量
        data.setCurrentInDoneNum(getSumTotalByList(currentNum,0,1));//今日完成量
        data.setCurrentOutDoneNum(getSumTotalByList(currentNum,1,1));//今日完成量
        data.setCurrentInDoneNum(getSumTotalByList(currentDoneNum,1,1));//今日完成量
        data.setCurrentOutDoneNum(getSumTotalByList(currentDoneNum,0,1));//今日完成量
        //------------今日出入库效率----------------
        BigDecimal outHours = getTotalDoneTimes(currentNum,0);//
        BigDecimal inHours = getTotalDoneTimes(currentNum,1);//
        BigDecimal outHours = getTotalDoneTimes(currentDoneNum,0);//
        BigDecimal inHours = getTotalDoneTimes(currentDoneNum,1);//
        if(outHours.compareTo(new BigDecimal(0))>0){
            data.setTodayOutRate(data.getCurrentOutDoneNum().divide(outHours,2));//当前入库总任务成量
        }
@@ -856,15 +954,15 @@
            data.setTodayInRate(data.getCurrentInDoneNum().divide(inHours,2));//当前入库总任务成量
        }
        //------------本月出入库效率----------------
        BigDecimal outMonthNum = getSumTotalByList(monthNum,0,null).add(data.getCurrentOutDoneNum());
//        BigDecimal outMonthNum = getSumTotalByList(monthNum,0,null).add(data.getCurrentOutDoneNum());
        BigDecimal inMonthNum = getSumTotalByList(monthNum,1,null).add(data.getCurrentInDoneNum());
        BigDecimal outYearHours = getTotalDoneTimes(yearNum,0).add(outHours);//
        BigDecimal inYearHours = getTotalDoneTimes(yearNum,1).add(inHours);//
        if(outYearHours.compareTo(new BigDecimal(0))>0){
            data.setMonthOutRate(outMonthNum.divide(outYearHours,2));//本月入库效率
        BigDecimal outMonthHours = getTotalDoneTimes(monthNum,0).add(outHours);//
        BigDecimal inMonthHours = getTotalDoneTimes(monthNum,1).add(inHours);//
        if(outMonthHours.compareTo(new BigDecimal(0))>0){
            data.setMonthOutRate(data.getMonthOutTotal().divide(outMonthHours,0,BigDecimal.ROUND_HALF_UP));//本月入库效率
        }
        if(inYearHours.compareTo(new BigDecimal(0))>0){
            data.setMonthInRate(inMonthNum.divide(inYearHours,2));//本月入库效率
        if(inMonthHours.compareTo(new BigDecimal(0))>0){
            data.setMonthInRate(inMonthNum.divide(inMonthHours,0,BigDecimal.ROUND_HALF_UP));//本月入库效率
        }
        return data;
    }
@@ -938,31 +1036,43 @@
//            if(Constants.formatBigdecimal(job.getIoQty()).compareTo(new BigDecimal(0)) >0){
//                r.add( job.getIoQty());
//            }else{
                r.add(Constants.formatBigdecimal(job.getTotalNum()));
            r =  r.add(Constants.formatBigdecimal(job.getTotalNum()));
//            }
        }
        return Constants.formatBigdecimal0Float(r);
    }
    @Override
    public     List<CarsAlarmResultListResponse> carsEventList(){
        if(HKCarOpenService.HK_CARS_LIST == null){
            HKCarOpenService.HK_CARS_LIST =   HKCarOpenService.getAllCarsDetais();
        }
        return  HKCarOpenService.getAlarmEvemtList(  HKCarOpenService.HK_CARS_LIST,new Date());
    }
    @Override
    public     BoardCarsListVO platformJobCarsList(){
        BoardCarsListVO data = new BoardCarsListVO();
        List<CarsDeviceDetaisResponse> detaisResponses = HKCarOpenService.getAllCarsDetais();
        data.setCarsList(detaisResponses);
         data.setCarsList(detaisResponses);
        if(data.getCarsList()!=null && data.getCarsList().size()>0){
            List<String> codes = new ArrayList<>();
            //设备状态 0:离线;1:在线;2:休眠
            int online = 0;
            for(CarsDeviceDetaisResponse model:detaisResponses){
                if(Constants.equalsInteger(model.getStatus(),Constants.ONE) ||Constants.equalsInteger(model.getStatus(),Constants.TWO)){
                   //如果是在线或者休眠,查询在途还是空闲
                if(Constants.equalsInteger(model.getStatus(),Constants.ONE)
                        ||Constants.equalsInteger(model.getStatus(),Constants.TWO)){
                   //如果是在线或者休眠,查询在途还是空闲ty
                    codes.add(model.getPlateNum());
                    model.setJobStatus(Constants.ZERO);
                }else
                    model.setJobStatus(Constants.TWO);
                    data.setOfflineNum(data.getOfflineNum()+1);
                }
            if(codes.size()>0){
                //状态 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 已过号  12取消(WMS)
                long busyNum = platformJobMapper.selectCount(new QueryWrapper<PlatformJob>().lambda()
                List<PlatformJob> busyNum = platformJobMapper.selectList(new QueryWrapper<PlatformJob>() .lambda()
                                .select(PlatformJob::getCarCodeFront)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getCarCodeFront,codes)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.WORKING.getKey()
@@ -974,8 +1084,21 @@
                                ,Constants.PlatformJobStatus.WAIT_CONFIRM.getKey()
                                ,Constants.PlatformJobStatus.EXCEPTION.getKey())
                        .groupBy(PlatformJob::getCarCodeFront));
                data.setBusyNum((int)busyNum);//在途有任务数量
                data.setBusyNum( busyNum!=null ?busyNum.size():0);//在途有任务数量
                data.setIdleNum(codes.size() -data.getBusyNum());//无任务空闲数量
                HKCarOpenService.HK_CARS_LIST = detaisResponses;
//                data.setEventList(HKCarOpenService.getAlarmEvemtList(detaisResponses,new Date()));
                if(busyNum != null){
                  FLAG:  for(CarsDeviceDetaisResponse model:detaisResponses){
                        for(PlatformJob job : busyNum){
                            if(StringUtils.equals(job.getCarCodeFront(),model.getPlateNum())){
                                model.setJobStatus(Constants.ONE);
                                continue FLAG;
                            }
                        }
                    }
                }
            }
        }
@@ -996,6 +1119,14 @@
            alarmDataVO.setErrNum(Constants.formatIntegerNum(response.getData().getMisReportAlarmNum()));
            alarmDataVO.setLiftNum(Constants.formatIntegerNum(response.getData().getHandledAlarmNum()));
            alarmDataVO.setProcessingNum(Constants.formatIntegerNum(response.getData().getUnHandedAlarmNum()));
            alarmDataVO.setStartDate(start);
            alarmDataVO.setEndDate(end);
        }else{
            alarmDataVO.setTotalNum(Constants.ZERO);
            alarmDataVO.setRealNum(Constants.ZERO);
            alarmDataVO.setErrNum(Constants.ZERO);
            alarmDataVO.setLiftNum(Constants.ZERO);
            alarmDataVO.setProcessingNum(Constants.ZERO);
            alarmDataVO.setStartDate(start);
            alarmDataVO.setEndDate(end);
        }
@@ -1070,6 +1201,46 @@
        data.setDangerDealedNum(totalNum !=null?totalNum.intValue():0);//今日处理隐患数量
        return  data;
    }
    /**
     * 消防 温湿度数据
     */
    @Override
    public List<TemperatureHumidityDataVO> getTemperatureHumidityData(){
        TemperatureHumidityDataRequest request = new TemperatureHumidityDataRequest();
        List<TemperatureHumidityDataVO> temperatureHumidityDataVOList = new ArrayList<>();
        request.setPageNo(1);
        request.setPageSize(100);
        request.setParentIndexCode(systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.TEMPERATURE_HUMIDITY).getCode());
        BaseResponse<BaseListPageResponse<TemperatureHumidityDataResponse>> response = HKService.temperatureHumidityDataStatistic(request);
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){
            List<TemperatureHumidityDataResponse> temperatureHumidityDataResponseList = response.getData().getList();
            if(CollectionUtils.isNotEmpty(temperatureHumidityDataResponseList)){
                Set<String> parentIndexCode = new HashSet<String>(temperatureHumidityDataResponseList.stream().map(
                        i->i.getIndexCode().replace("@0","").replace("@1","")
                ).collect(Collectors.toList()));
                for (String code:parentIndexCode) {
                    List<TemperatureHumidityDataResponse> dateList =
                            temperatureHumidityDataResponseList.stream().filter(i->i.getIndexCode().indexOf(code)>=Constants.ZERO).collect(Collectors.toList());
                    TemperatureHumidityDataVO temperatureHumidityDataVO = new TemperatureHumidityDataVO();
                    for (TemperatureHumidityDataResponse data:dateList) {
                        if(data.getSensorType().equals("temp")){
                            temperatureHumidityDataVO.setTemperatureData(data);
                        }else{
                            temperatureHumidityDataVO.setHumidityData(data);
                        }
                    }
                    temperatureHumidityDataVOList.add(temperatureHumidityDataVO);
                }
            }
        }
        return temperatureHumidityDataVOList;
    }
    /**
     * 用电总能耗同比、环比和区域用电量集合
     * @return
@@ -1170,7 +1341,7 @@
        3) 自来水二氧化碳排放量(kg)=自来水使用量(m3)×0.91;*/
        data.setCarbon(Constants.formatBigdecimal2Float((carbonElec.multiply(new BigDecimal(0.785)))
                .add(carbonGas.multiply(new BigDecimal(0.19)))
                .add(carbonWater.multiply(new BigDecimal(0.91)))));
                .add(carbonWater.multiply(new BigDecimal(0.91)))).divide(new BigDecimal(1000),2,BigDecimal.ROUND_HALF_UP));
        return data;
    }
@@ -1215,7 +1386,8 @@
        param.setPeriodType("day");
        BigDecimal total = new BigDecimal(0);
        BaseResponse<EnergyTrendResponse> response = HKService.energyTrend(param);
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null&& response.getData().getYvalues()!=null ){
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)
                && response.getData()!=null&& response.getData().getYvalues()!=null ){
            for (int i = 0; i < response.getData().getYvalues().get(0).getValue().length; i++) {
                total = total.add(new BigDecimal(StringUtils.defaultString( response.getData().getYvalues().get(0).getValue()[i],"0")));
            }
@@ -1254,8 +1426,21 @@
            data.setRingPercent("0");
            data.setSecondRegionDataList(new ArrayList<>());
        }
        return data;
        if(data.getSecondRegionDataList()!=null && data.getSecondRegionDataList().size()>1){
            int index =-1;
            for (int i = 0; i <data.getSecondRegionDataList().size() ; i++) {
                RegionTopPowerResponse t=data.getSecondRegionDataList().get(i);
                if(Constants.formatBigdecimal(t.getPercent()).compareTo(new BigDecimal(1)) == 0){
                    index =i;
                    break;
                }
            }
            if(index>-1){
                data.getSecondRegionDataList().remove(index);//删除根节点数据
            }
        }
        return  data;
    }
    /**
     * 近12个水电气油耗数据统计
@@ -1326,15 +1511,15 @@
        VisitDataVO result = new VisitDataVO();
        result.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
                .eq(Visits::getIsdeleted,Constants.ZERO)
                .apply("to_days(create_date)=to_days(now()")
                .apply("to_days(create_date)=to_days(now())")
                .in(Visits::getStatus,Constants.VisitStatus.pass,Constants.VisitStatus.xfSuccess )));//待访问
        result.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
                .eq(Visits::getIsdeleted,Constants.ZERO)
                .apply("to_days(create_date)=to_days(now()")
                .apply("to_days(create_date)=to_days(now())")
                .in(Visits::getStatus,Constants.VisitStatus.signout,Constants.VisitStatus.signin )));//已登记
        result.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
                .eq(Visits::getIsdeleted,Constants.ZERO)
                .apply("to_days(create_date)=to_days(now()")
                .apply("to_days(create_date)=to_days(now())")
                .in(Visits::getStatus,Constants.VisitStatus.signout )));//已签离
        /*PageWrap<Visits> pageWrap = new PageWrap<>();
        pageWrap.setCapacity(10);
@@ -1445,7 +1630,12 @@
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.outTruck)).count()
        );
        data.setVideoPluginUrl(getVideoUrl());
        return data;
    }
    private String getVideoUrl() {
        return  systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()+"plugin/VideoWebPlugin.exe";
    }
    private void getParkingCarsNum(SecurityBoardVO data) {
@@ -1476,7 +1666,8 @@
            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)
                    //.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)
                    .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 )",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() })
@@ -1613,9 +1804,13 @@
    }
    @Override
    public      List<PlatformWarnEvent> warningList(int limit){
        List<PlatformWarnEvent> platformLogList = platformWarnEventMapper.selectList(new QueryWrapper<PlatformWarnEvent>().lambda()
        List<PlatformWarnEvent> platformLogList = platformWarnEventJoinMapper
                .selectJoinList(PlatformWarnEvent.class,new MPJLambdaWrapper<PlatformWarnEvent>()
                .selectAll(PlatformWarnEvent.class)
                .selectAs(Platform::getName,PlatformWarnEvent::getPlatformName)
                .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                .eq(PlatformWarnEvent::getIsdeleted,Constants.ZERO)
                .apply("to_days(create_date) = to_days(now())")
                .apply("to_days(t.create_date) = to_days(now())")
                .orderByDesc(PlatformWarnEvent::getCreateDate)
                .last(" limit "+limit)
        );
@@ -1666,12 +1861,14 @@
                if( Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.IN_WAIT.getKey())){
                    data.setSignedNum(data.getSignedNum()+Constants.formatIntegerNum(model.getCountum()));
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum()));
                    data.setLineUpCar(data.getLineUpCar()+Constants.formatIntegerNum(model.getCountum()));
                }
                //已叫号(预约车、签到数、已叫号)
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.CALLED.getKey()) ){
                    data.setSignedNum(data.getSignedNum()+Constants.formatIntegerNum(model.getCountum()));
                    data.setReservationCar(data.getReservationCar()+Constants.formatIntegerNum(model.getCountum()));
                    data.setCalledNum(data.getCalledNum()+Constants.formatIntegerNum(model.getCountum()));
                    data.setLineUpCar(data.getLineUpCar()+Constants.formatIntegerNum(model.getCountum()));
                }
                // 作业车辆(预约车、签到数、已叫号、作业车)
                if(Constants.equalsInteger(model.getStatus(),Constants.PlatformJobStatus.WORKING.getKey())){
@@ -1718,6 +1915,12 @@
                }
            }
            data.setVideoPluginUrl(getVideoUrl());
            String indexCodes = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_CHANGNEI_SCREEN_INDEXCODES).getCode();
            if(StringUtils.isNotBlank(indexCodes)){
                data.setVideoIndexCodes(indexCodes.split(","));
            }
        }
        return  data;