doum
2025-09-12 9877679062815a39739c8ca0c02a70acc282f68c
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/thrid/BoardServiceImpl.java
@@ -14,6 +14,7 @@
import com.doumee.core.haikang.model.param.respose.*;
import com.doumee.core.haikang.service.HKCarOpenService;
import com.doumee.core.haikang.service.HKService;
import com.doumee.dao.web.reqeust.CarsJobAndContractByJobIdDTO;
import com.doumee.service.business.third.model.request.TmsFacrotyCodeListRequest;
import com.doumee.service.business.third.model.request.TmsOrderNoFinishListRequest;
import com.doumee.service.business.third.model.request.TmsOutQtyAndVehicleQtyRequest;
@@ -90,7 +91,10 @@
    private PlatformGroupMapper platformGroupMapper;
    @Autowired
    private TmsService tmsService;
    @Autowired
    private PlatformDeviceMapper platformDeviceMapper;
    @Autowired
    private CategoryMapper categoryMapper;
    @Value("${debug_model}")
    private Boolean isDebug;
    /**
@@ -131,6 +135,7 @@
                        .select(PlatformJob::getTotalNum)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .eq(PlatformJob::getOrigin,Constants.ONE)
                        .in(PlatformJob::getType,new Integer[]{0,2,4})
                        .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey()
                                , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                                , Constants.PlatformJobStatus.LEAVED.getKey())
@@ -147,6 +152,7 @@
                List<PlatformJob> jobs = platformJobMapper.selectList (new MPJLambdaWrapper<PlatformJob>()
                        .select(PlatformJob::getTotalNum)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                                .apply(" ( origin = 0 or origin is null)  ")
                        .eq(PlatformJob::getPlatformGroupId,platformGroupId)
                        .apply("to_days(done_date) = to_days(now())")
                        .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey()
@@ -185,7 +191,8 @@
            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()));
                    //2025年4月9日16:46:40 处理 包含托盘字眼的数据 不进行合计
                    num = num.add (j.getItemName().indexOf("托盘")<Constants.ZERO?Constants.formatBigdecimal( j.getQty()):BigDecimal.ZERO);
                    GeneralVO d = new GeneralVO();
                    d.setNum(Constants.formatBigdecimal(j.getQty()));
                    d.setName(j.getItemName());
@@ -483,52 +490,86 @@
        }*/
        return list;
    }
    @Override
    public  WaningEventDataVO warningEventData(Integer type){
        WaningEventDataVO lastResult = new WaningEventDataVO();
        List<WaningEventDataListVO> list = new ArrayList<>();
        RuleEventSearchRequest request = new RuleEventSearchRequest();
        request.setPageNo(1);
        request.setPageSize(10);
        request.setPageSize(1000);
        request.setFiledOptions(new ArrayList<>());
        request.setSorts(new ArrayList<>());
        request.setFetchImg(true);
        RuleEventFiledOptionsRequest file = new RuleEventFiledOptionsRequest();
        file.setFieldName("event_type");
        file.setFieldValue("131588,131593");//安防告警和人员告警
        //安防事件划分方式:
        //重点区域:重点人员-1644175361、区域入侵-1644175361、陌生人-1644171265、车辆违停-1644171265
        //危险行为:人员倒地-1644171265、未带安全帽-422000002、抽烟-422000000、打电话-422000001、睡岗-422400001、离岗-422400000
        file.setFieldValue("131588,131593,1644171265,422000002,422000000,422000001,422400001,422400000,1644175361,1644175361,1644171265,1644171265");//安防告警和人员告警
        file.setType("in");
        if(type == 1){
            file.setFieldValue("131588");//安防告警
            file.setFieldValue("131588,1644175361,1644175361,1644171265,1644171265");//安防告警 区域入侵
        }else  if(type == 2){
            file.setFieldValue("131593");//人员告警
            file.setFieldValue("131593,1644171265,422000002,422000000,422000001,422400001,422400000");//人员告警 危险行为
        }
        request.getFiledOptions().add(file);
        RuleEventFiledOptionsRequest fileLte = new RuleEventFiledOptionsRequest();
        fileLte.setFieldName("happen_time");
        fileLte.setFieldValue(DateUtil.formatDate(Utils.Date.getEnd(new Date()),"yyyy-MM-dd HH:mm:ss"));
        fileLte.setType("lte");
        request.getFiledOptions().add(fileLte);
        RuleEventFiledOptionsRequest fileGte = new RuleEventFiledOptionsRequest();
        fileGte.setFieldName("happen_time");
        fileGte.setFieldValue(DateUtil.formatDate(Utils.Date.getStart(new Date()),"yyyy-MM-dd HH:mm:ss"));
        fileGte.setType("gte");
        request.getFiledOptions().add(fileGte);
        RuleEventFiledOptionsRequest fileStatus = new RuleEventFiledOptionsRequest();
        fileStatus.setFieldName("handle_status");
        fileStatus.setFieldValue("99");
        fileStatus.setType("neq");
        request.getFiledOptions().add(fileStatus);
        SortRequest sort = new SortRequest();
        sort.setSortField("happen_time");
        sort.setSortType("desc");
        request.getSorts().add(sort);
        int total =0;
        BaseResponse<BaseListPageResponse< RuleEventSearchDataResponse>> result = HKService.ruleEventSearch(request);
        if(result!=null && StringUtils.equals(result.getCode(),HKConstants.RESPONSE_SUCCEE) && result.getData()!=null){
            List<RuleEventSearchDataResponse> rlist = result.getData().getList();
            lastResult.setTotal(result.getData().getTotal());
            if(rlist!=null){
                String privateIp =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.EVENT_FILES_PRIVATE_DOMAIN).getCode();
                String publicIp =systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.EVENT_FILES_PUBLIC_DOMAIN).getCode();
                for(RuleEventSearchDataResponse r :rlist){
                    try {
                        if(DateUtil.getISO8601DateByStr(r.getHappen_time()).getTime() < Utils.Date.getStart(new Date()).getTime()){
                            continue;
                        }
                        if(StringUtils.equals(r.getStatus(),"99")){
                           continue;
                        }
                    }catch (Exception e){
                    }
                    total ++;
                    WaningEventDataListVO data = new WaningEventDataListVO();
                    data.setCreateDate(DateUtil.getPlusTime(DateUtil.getISO8601DateByStr(r.getHappen_time())));
                    data.setAddr(r.getSrc_name());
                    data.setImg(r.getImage_url());
                    if(data.getImg()!=null){
                        data.setImg(data.getImg().replace(privateIp,publicIp));
                    }
                    data.setTitle(r.getEvent_type_name());
                    data.setCreateDate(DateUtil.getPlusTime(DateUtil.getISO8601DateByStr(r.getHappen_time())));
//                data.setContent(r.get);
                    list.add(data);
                }
            }
        }
        lastResult.setTotal(total);
        lastResult.setList(list);
        return lastResult;
    }
@@ -607,6 +648,9 @@
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
            }
            if(Objects.nonNull(response.getData().getList())){
                return data;
            }
            for(FindHomeAlarmInfoPageResponse r : response.getData().getList()){
                AlarmEventDataVO t = new AlarmEventDataVO();
                BeanUtils.copyProperties(r,t);
@@ -634,6 +678,8 @@
    }
    /**
     * 【消防管控】看板-实时监测数据
     * 液压固定值:254001
     * 水压固定值:253958
     * @return
     *
     */
@@ -643,6 +689,7 @@
        MinitorDataSearchRequest param = new MinitorDataSearchRequest();
        param.setResourceTypeCodes(new String[]{});
        param.setRegionIndexCode("root000000");
        //60-液位 61-水压
        param.setResourceTypeCodes("60,61".split(","));
        param.setIncludeDown("1");
        param.setUserId("admin");
@@ -651,6 +698,8 @@
        BaseResponse<BaseListPageResponse<MonitorDataSearchResponse>> response = HKService.minitorDataSearch(param);
        String pressure = systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_PRESSURE_LEVEL).getCode();
        String liquid = systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.WMS_LIQUID_LEVEL).getCode();
        String pressureUnit = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.PRESSURE_LEVEL_UNIT).getCode();
        String liquidUnit = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.LIQUID_LEVEL_UNIT).getCode();
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)
                && response.getData()!=null ) {
            List<MonitorDataSearchResponse> r = response.getData().getList();
@@ -658,11 +707,15 @@
                for(MonitorDataSearchResponse model : r){
                    MonitorDataVO m = new MonitorDataVO();
                    m.setName(model.getName());
                    m.setLevel(Constants.equalsInteger(model.getType(),60)?liquid:pressure);
                    m.setType(model.getType());
//                    m.setLevel(Constants.equalsInteger(model.getType(),60)?liquid:pressure);
                    m.setLevel(getLevelDataByDeviceName(m,model.getName(),Constants.equalsInteger(model.getType(),60)?liquidUnit:pressureUnit));
                    m.setDataList(new ArrayList<>());
                    if(model.getValues()!=null){
                        List<MonitorDataInfoVO> dataList = new ArrayList<>();
                        for(MonitorDataValResponse v : model.getValues()){
                            //液压固定值:254001
                            //水压固定值:253958
                            if(Constants.equalsInteger(model.getType(),60)){
                                if(v.getMonitorTypeCode().equals("254001")){
                                    MonitorDataInfoVO vm = new MonitorDataInfoVO();
@@ -670,7 +723,6 @@
                                    vm.setCateName(v.getMonitorSpecificName());
                                    vm.setCateCode(v.getMonitorTypeKey());
                                    vm.setTypeCode(v.getMonitorTypeCode());
                                    vm.setTypeName(v.getMonitorTypeName());
                                    dataList.add(vm);
                                }
                            }else{
@@ -693,6 +745,46 @@
            }
        }
        return  list;
    }
    private String getLevelDataByDeviceName(MonitorDataVO m,String name,String unit) {
        /**
         *   {
         *     "name":"液",
         *     "regionIndexCodes": [
         *         "root000000"
         *     ],
         *     "isSubRegion": true,
         *     "resourceType": "fireSensor",
         *     "pageNo": 1,
         *     "pageSize": 20,
         *     "orderBy": "name",
         *     "orderType": "desc"
         *     }
         */
        String r = "";
        ResourcesByParamsRequest param = new ResourcesByParamsRequest();
        param.setName(name);
        param.setIsSubRegion(Boolean.TRUE);
        param.setRegionIndexCodes(new String[]{"root000000"});
        param.setResourceType("fireSensor");
        param.setOrderType("desc");
        param.setOrderBy("name");
        param.setPageNo(1);
        param.setPageSize(20);
        BaseResponse<BaseListPageResponse<ResourcesByParamsResponse>> response = HKService.resourcesByParams(param);
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)
                && response.getData()!=null ) {
            String min  = response.getData().getList().get(0).getFireproChannelMinValue();
            String max  = response.getData().getList().get(0).getFireproChannelMaxvalue();
            m.setMax(max);
            m.setMin(min);
            r  =StringUtils.defaultString(min,"-")+"~"+StringUtils.defaultString(max,"-") +unit;
        }
        return  r;
    }
@@ -740,6 +832,20 @@
                        .apply(queryType==0,"to_days(create_date) >= to_days(now()) -7")
                        .apply(queryType==1,"year(create_date) = year(now()) and month(create_date) = month(now())")
                        .apply(queryType==2,"year(create_date) = year(now())"));
        List<PlatformJob>  finishDataList = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .selectAs(PlatformJob::getCreateDate,PlatformJob::getCreateDate)
                        .selectAs(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                        .selectAs(PlatformJob::getStatus,PlatformJob::getStatus)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
                        .apply(queryType==0,"to_days(done_date) >= to_days(now()) -7")
                        .apply(queryType==1,"year(done_date) = year(now()) and month(done_date) = month(now())")
                        .apply(queryType==2,"year(done_date) = year(now())"));
        for (Date date : dayList) {
            TransportMeasureVO data = new TransportMeasureVO();
            data.setPlanDate(date);
@@ -751,23 +857,34 @@
                    if(DateUtil.formatDate(date,"yyyy-MM").equals(DateUtil.formatDate(job.getCreateDate(),"yyyy-MM"))){
                        data.setPlanTimes( data.getPlanTimes() +1);
                        data.setPlanTaskNum( data.getPlanTaskNum().add(Constants.formatBigdecimal(job.getTotalNum())));
                        if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey())
                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey())
                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())){
                            //完成数
                            data.setFinishTaskNum( data.getFinishTaskNum().add(Constants.formatBigdecimal(job.getTotalNum())));
                        }
//                        if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey())
//                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey())
//                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())){
//                            //完成数
//                            data.setFinishTaskNum( data.getFinishTaskNum().add(Constants.formatBigdecimal(job.getTotalNum())));
//                        }
                    }
                }else{
                    if(DateUtil.formatDate(date,"yyyy-MM-dd").equals(DateUtil.formatDate(job.getCreateDate(),"yyyy-MM-dd"))){
                        data.setPlanTimes( data.getPlanTimes() +1);
                        data.setPlanTaskNum( data.getPlanTaskNum().add(Constants.formatBigdecimal(job.getTotalNum())));
                        if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey())
                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey())
                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())){
                            //完成数
//                        if(Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.DONE.getKey())
//                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.LEAVED.getKey())
//                                ||Constants.equalsInteger(job.getStatus(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())){
//                            //完成数
//                            data.setFinishTaskNum( data.getFinishTaskNum().add(Constants.formatBigdecimal(job.getTotalNum())));
//                        }
                    }
                }
            }
            for (PlatformJob job :finishDataList) {
                if(queryType == 2){
                    if(DateUtil.formatDate(date,"yyyy-MM").equals(DateUtil.formatDate(job.getDoneDate(),"yyyy-MM"))){
                            data.setFinishTaskNum( data.getFinishTaskNum().add(Constants.formatBigdecimal(job.getTotalNum())));
                        }
                    }
                }else{
                    if(DateUtil.formatDate(date,"yyyy-MM-dd").equals(DateUtil.formatDate(job.getDoneDate(),"yyyy-MM-dd"))){
                            data.setFinishTaskNum( data.getFinishTaskNum().add(Constants.formatBigdecimal(job.getTotalNum())));
                    }
                }
            }
@@ -793,12 +910,44 @@
                        .selectAll(PlatformJob.class)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .eq(PlatformJob::getCarCodeFront,param.getCarCode())
                        .in(PlatformJob::getStatus,
                        .notIn(PlatformJob::getStatus,
                                Constants.PlatformJobStatus.DONE.getKey(),
                                Constants.PlatformJobStatus.LEAVED.getKey(),
                                Constants.PlatformJobStatus.AUTHED_LEAVE.getKey(),
                                Constants.PlatformJobStatus.CALLED.getKey())
                                Constants.PlatformJobStatus.CANCEL.getKey()
                        )
                        .orderByAsc(PlatformJob::getId)
                        .last("limit 1"));
        dealJobDetailAndContractBiz(job,data);
        return data;
    }
    /**
     * 【园区物料中心调度】看板-根据车牌号查询作业信息和合同信息集合
     *
     * @return
     *
     */
    @Override
    public  CarsJobAndContractVO  getJobDetailsById(CarsJobAndContractByJobIdDTO param) {
        CarsJobAndContractVO data = new CarsJobAndContractVO();
        if(param.getId() == null){
            return  data;
        }
        PlatformJob job = platformJobMapper.selectJoinOne(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAll(PlatformJob.class)
                        .eq(PlatformJob::getId,param.getId())
                        .last("limit 1"));
        dealJobDetailAndContractBiz(job,data);
        return data;
    }
    private void dealJobDetailAndContractBiz(PlatformJob job, CarsJobAndContractVO data) {
        if(job!=null){
            List<PlatformLog>  logList = platformLogMapper.selectJoinList(PlatformLog.class,
                    new MPJLambdaWrapper<PlatformLog>()
@@ -838,7 +987,7 @@
                if(detailList!=null){
                    for(PlatformWmsDetail d : detailList){
                        if(isExistIocode(d.getIocode(),data.getContractList())){
                                continue;
                            continue;
                        }
                        tt = new CarsContractVO();
                        tt.setIoCode(d.getIocode());
@@ -851,10 +1000,6 @@
            }
        }
        return data;
    }
    private List<PlatformWmsDetail> getDetailListByCode(String iocode, List<PlatformWmsDetail> detailList,CarsContractVO tt) {
@@ -886,13 +1031,21 @@
    /**
     * 【消防管控】看板-告警信息集合
     *
     * @param type 0/null  = 当天;1=当月;2=当年
     * @return
     *
     */
    @Override
    public   AlarmDataVO alarmDataSumByCate(){
        AlarmDataVO alarmDataVO = getAlertDataByStartEndTime(DateUtil.getPlusTime2(DateUtil.addDaysToDate(new Date(),-1))
    public   AlarmDataVO alarmDataSumByCate(Integer type){
        Date startDate = Utils.Date.getStart(new Date());
        if(Objects.nonNull(type)){
            if(Constants.equalsInteger(type,Constants.TWO)){
                startDate = Utils.Date.getStart(DateUtil.getFirstThisYearDate());
            }else if(Constants.equalsInteger(type,Constants.ONE)){
                startDate = Utils.Date.getStart(DateUtil.getFirstThisMonthDate());
            }
        }
        AlarmDataVO alarmDataVO = getAlertDataByStartEndTime(DateUtil.getPlusTime2(startDate)
                ,(DateUtil.getPlusTime2(new Date())));
        return  alarmDataVO;
    }
@@ -904,25 +1057,41 @@
    @Override
    public  PlatformJobRunBoardNewVO platformJobCenterData(){
        PlatformJobRunBoardNewVO data = new PlatformJobRunBoardNewVO();
        Random random = new Random();
        data.setMonthOutTimes(random.nextInt(1000));
        data.setYearOutTimes(random.nextInt(1000) * 11);
        data.setMonthOutTimes(0);
        data.setYearOutTimes(0);
        Date month  = Utils.Date.getStart(new Date());//本月
        Date lastMonth =  DateUtil.addMonthToDate(month,-1);//上月
        Date year = Utils.Date.getStart(new Date());//今年
        Date lastYear = DateUtil.addYearToDate(year,-1);//去年
        log.error("1、=====================>"+DateUtil.getCurrDateTime());
        List<PlatformJob>  monthNum = platformJobMapper.selectJoinList(PlatformJob.class,
                    new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                            .selectAs(PlatformJob::getId,PlatformJob::getId)
                            .selectAs(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                            .selectAs(PlatformJob::getDoneDate,PlatformJob::getDoneDate)
                            .select(PlatformJob::getStatus,PlatformJob::getStatus)
                            .select(PlatformJob::getType,PlatformJob::getType)
                        .select(PlatformJob::getTotalNum,PlatformJob::getTotalNum)
                        .select(PlatformJob::getStatus,PlatformJob::getStatus)
                        .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
//                        .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(done_date) = year('"+DateUtil.getPlusTime2(month)+"') and month(done_date) = month('"+DateUtil.getPlusTime2(month)+"') "));
        log.error("2、=====================>"+DateUtil.getCurrDateTime());
        List<PlatformJob>  yearNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
                        .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(done_date) = year('"+DateUtil.getPlusTime2(year)+"')   and done_date<=  now()  "));
        log.error("3、=====================>"+DateUtil.getCurrDateTime());
        List<PlatformJob>  monthLastNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
@@ -935,17 +1104,8 @@
                        .in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey())
                        .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)
                        .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(done_date) = year('"+DateUtil.getPlusTime2(year)+"')   and done_date<= '"+DateUtil.getPlusTime2(year)+"'"));
        log.error("4、=====================>"+DateUtil.getCurrDateTime());
        List<PlatformJob> yearLastNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
@@ -955,15 +1115,16 @@
                        .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(done_date) = year('"+DateUtil.getPlusTime2(lastYear)+"')  and done_date<= '"+DateUtil.getPlusTime2(lastYear)+"'"));
                        .apply("year(done_date) = year('"+DateUtil.getPlusTime2(lastYear)+"')  and done_date<=  now()  "));
        data.setMonthOutTotal(getSumTotalByList(monthNum,0,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);
        data.setMonthOutTimes(monthNum!=null?monthNum.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.ONE)||Constants.equalsInteger(i.getType(),Constants.THREE)).collect(Collectors.toList()).size():0);
        data.setYearOutTimes(yearNum!=null?yearNum.size():0);
        log.error("5、=====================>"+DateUtil.getCurrDateTime());
        //==========今天之前未完成出入库任务
        List<PlatformJob> beforeJobNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
@@ -971,11 +1132,15 @@
                        .selectAs(PlatformJob::getStatus,PlatformJob::getStatus)
                        .selectAs(PlatformJob::getType,PlatformJob::getType)
                        .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)
                        // .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("   to_days(create_date) <to_days(now())"));
                        .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey(),
                                Constants.PlatformJobStatus.LEAVED.getKey(),Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                                ,Constants.PlatformJobStatus.CANCEL.getKey())
                        .apply("   to_days(create_date) < to_days(now()) ")
        );
        log.error("6、=====================>"+DateUtil.getCurrDateTime());
        //==========今天出入库完成量
        List<PlatformJob> currentDoneNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
@@ -985,9 +1150,11 @@
                        .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())
                        .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey())
                        .apply(" to_days(done_date) = to_days(now())"));
        //==========今天下发出入库任务----
        log.error("7、=====================>"+DateUtil.getCurrDateTime());
        //==========今天下发出入库任务 未完成的----
        List<PlatformJob> currentNum = platformJobMapper.selectJoinList(PlatformJob.class,
                new MPJLambdaWrapper<PlatformJob>()
                        .selectAs(PlatformJob::getId,PlatformJob::getId)
@@ -996,41 +1163,65 @@
                        .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())"));
                        .notIn(PlatformJob::getStatus,Constants.PlatformJobStatus.CANCEL.getKey())
                        .apply(" to_days(create_date) = to_days(now()) and done_date is null   "));
        log.error("8、=====================>"+DateUtil.getCurrDateTime());
        BigDecimal beforeOutNum = (getSumTotalByList(beforeJobNum,0,null));//今天之前未完成出库任务
        log.error("9、=====================>"+DateUtil.getCurrDateTime());
        BigDecimal currentOutNum = (getSumTotalByList(currentNum,0,null));//今天下发出库任务
        log.error("10、=====================>"+DateUtil.getCurrDateTime());
        BigDecimal beforeInNum = (getSumTotalByList(beforeJobNum,1,null));//今天之前未完成入库任务
        log.error("11、=====================>"+DateUtil.getCurrDateTime());
        BigDecimal currentInNum = (getSumTotalByList(currentNum,1,null));//今天下发入库任务
        data.setCurrentInNum(beforeInNum.add(currentInNum));//当前入库总任务成量
        data.setCurrentOutNum(beforeOutNum.add(currentOutNum));//当前出库总任务成量
        log.error("12、=====================>"+DateUtil.getCurrDateTime());
        data.setCurrentInDoneNum(getSumTotalByList(currentDoneNum,1,1));//今日完成量
        log.error("13、=====================>"+DateUtil.getCurrDateTime());
        data.setCurrentOutDoneNum(getSumTotalByList(currentDoneNum,0,1));//今日完成量
        log.error("14、=====================>"+DateUtil.getCurrDateTime());
        data.setCurrentInNum(beforeInNum.add(data.getCurrentInDoneNum()).add(currentInNum));//当前入库总任务成量
        log.error("15、=====================>"+DateUtil.getCurrDateTime());
        data.setCurrentOutNum(beforeOutNum.add(data.getCurrentOutDoneNum()).add(currentOutNum));//当前出库总任务成量
        log.error("16、=====================>"+DateUtil.getCurrDateTime());
        data.setTodayOutRate(getDayTotalRata(data.getCurrentOutDoneNum(),DateUtil.getToday()));//当日出库效率
        log.error("17、=====================>"+DateUtil.getCurrDateTime());
        data.setTodayInRate(getDayTotalRata(data.getCurrentInDoneNum(),DateUtil.getToday()));//当日入库效率
        log.error("18、=====================>"+DateUtil.getCurrDateTime());
        //查询本月全部日志
        List<PlatformLog> monthLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>().lambda()
                .eq(PlatformLog::getIsdeleted,Constants.ZERO)
                .and(i->i.isNotNull(PlatformLog::getParam1).or().isNotNull(PlatformLog::getParam2))
                .apply("year(CREATE_DATE) = year('"+DateUtil.getPlusTime2(month)+"') and month(CREATE_DATE) = month('"+DateUtil.getPlusTime2(month)+"') ")
        );
        //------------今日出入库效率----------------
        BigDecimal outHours = getTotalDoneTimes(currentDoneNum,0);//
        BigDecimal inHours = getTotalDoneTimes(currentDoneNum,1);//
        if(outHours.compareTo(new BigDecimal(0))>0){
            data.setTodayOutRate(data.getCurrentOutDoneNum().divide(outHours,2));//当前入库总任务成量
        }
        if(inHours.compareTo(new BigDecimal(0))>0){
            data.setTodayInRate(data.getCurrentInDoneNum().divide(inHours,2));//当前入库总任务成量
        }
        data.setMonthOutRate(getMonthRata(monthLogList,monthNum,Constants.ZERO));//本月出库效率
        log.error("19、=====================>"+DateUtil.getCurrDateTime());
        data.setMonthInRate(getMonthRata(monthLogList,monthNum,Constants.ONE));//本月入库效率
        log.error("20、=====================>"+DateUtil.getCurrDateTime());
        //------------今日出入库效率----------------
//        BigDecimal outHours = getTotalDoneTimes(currentDoneNum,0);//
//        BigDecimal inHours = getTotalDoneTimes(currentDoneNum,1);//
//
//        if(outHours.compareTo(new BigDecimal(0))>0){
//            data.setTodayOutRate(data.getCurrentOutDoneNum().divide(outHours,2));//当前入库总任务成量
//        }
//        if(inHours.compareTo(new BigDecimal(0))>0){
//            data.setTodayInRate(data.getCurrentInDoneNum().divide(inHours,2));//当前入库总任务成量
//        }
        //------------本月出入库效率----------------
//        BigDecimal outMonthNum = getSumTotalByList(monthNum,0,null).add(data.getCurrentOutDoneNum());
        BigDecimal inMonthNum = getSumTotalByList(monthNum,1,null).add(data.getCurrentInDoneNum());
        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(inMonthHours.compareTo(new BigDecimal(0))>0){
            data.setMonthInRate(inMonthNum.divide(inMonthHours,0,BigDecimal.ROUND_HALF_UP));//本月入库效率
        }
//        BigDecimal inMonthNum = getSumTotalByList(monthNum,1,null).add(data.getCurrentInDoneNum());
//        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(inMonthHours.compareTo(new BigDecimal(0))>0){
//            data.setMonthInRate(inMonthNum.divide(inMonthHours,0,BigDecimal.ROUND_HALF_UP));//本月入库效率
//        }
        return data;
    }
    private BigDecimal getDoneHoursByData(String start ,String end) {
        List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>().lambda()
@@ -1040,10 +1231,9 @@
        if(platformLogList!=null && platformLogList.size()>0){
            return new BigDecimal((double)(platformLogList.stream().map(m->Long.valueOf(m.getParam3())).reduce(Long.valueOf(0),Long::sum))/(double)60);
        }
        return new BigDecimal(0);
    }
    private BigDecimal getTotalDoneTimes(List<PlatformJob> list, Integer type) {
        BigDecimal r = new BigDecimal(0);
        if(list==null || list.size() == 0){
@@ -1079,7 +1269,112 @@
        return r;
    }
    private BigDecimal getSumTotalByList(List<PlatformJob> list,Integer type,Integer status) {
    private BigDecimal getMonthRata(List<PlatformLog> monthLogList,List<PlatformJob> list, Integer type) {
        BigDecimal r = new BigDecimal(0);
        if(list==null || list.size() == 0){
            return r;
        }
        List<PlatformJob> jobList= new ArrayList<>();
        for(PlatformJob job : list) {
            if (!(Constants.equalsInteger(job.getStatus(), Constants.PlatformJobStatus.DONE.getKey())
                    || Constants.equalsInteger(job.getStatus(), Constants.PlatformJobStatus.LEAVED.getKey())
                    || Constants.equalsInteger(job.getStatus(), Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()))) {
                //只查询完成数据
                continue;
            }
            if (type != null && type == 0 && (Constants.equalsInteger(job.getType(), Constants.ONE) || Constants.equalsInteger(job.getType(), Constants.THREE))) {
                //出库
                jobList.add(job);
            }
            if (type != null && type == 1 && (Constants.equalsInteger(job.getType(), Constants.ZERO) || Constants.equalsInteger(job.getType(), Constants.TWO) || Constants.equalsInteger(job.getType(), Constants.FOUR))) {
                //入库
                jobList.add(job);
            }
        }
        if(CollectionUtils.isNotEmpty(jobList)){
            //获取任务数据
            List<String> jobDataList = jobList.stream().filter(i->Objects.nonNull(i.getDoneDate()))
                    .map(i->DateUtil.formatDate(i.getDoneDate(),"yyyy-MM-dd")).collect(Collectors.toList());
            if(CollectionUtils.isNotEmpty(jobDataList)){
                for (String jobDate:jobDataList) {
                    //过滤当天的数据
                    List<PlatformJob> platformJobList = list.stream().
                            filter(i->jobDate.equals(DateUtil.formatDate(i.getDoneDate(),"yyyy-MM-dd"))).collect(Collectors.toList());
                    if(CollectionUtils.isNotEmpty(platformJobList)){
                        //获取今天的
                        r = r.add(this.getDayTotalForMonthRata(monthLogList,getSumTotalByList(platformJobList,type,null),jobDate));
                    }
                }
                r = r.divide(new BigDecimal(Integer.toString(jobList.size())),2,BigDecimal.ROUND_HALF_UP);
            }
        }
        return r;
    }
    private BigDecimal getDayTotalForMonthRata(List<PlatformLog> allList ,BigDecimal totalAmount,String today) {
        BigDecimal r = new BigDecimal(0);
        //查询今日最早/最晚的作业数据
        List<PlatformLog> platformLogList = allList.stream().filter(i->DateUtil.formatDate(i.getCreateDate(),"yyyy-MM-dd").equals(today)).collect(Collectors.toList());
//                platformLogMapper.selectList(new QueryWrapper<PlatformLog>()
//                .lambda()
//                .apply(" (  DATE_FORMAT( param1 ,'%Y-%m-%d' ) =  '"+today+"' or DATE_FORMAT( param2 ,'%Y-%m-%d' )  =  '"+today+"' ) ")
//        );
        if(totalAmount.compareTo(BigDecimal.ZERO)==0||CollectionUtils.isEmpty(platformLogList)){
            return BigDecimal.ZERO;
        }
        if(platformLogList!=null && platformLogList.size()>0){
            return this.getWorkTime(totalAmount,platformLogList,today);
        }
        return r;
    }
    private BigDecimal getDayTotalRata(BigDecimal totalAmount,String today) {
        BigDecimal r = new BigDecimal(0);
        //查询今日最早/最晚的作业数据
        List<PlatformLog> platformLogList = platformLogMapper.selectList(new QueryWrapper<PlatformLog>()
                .lambda()
                .apply(" (  DATE_FORMAT( param1 ,'%Y-%m-%d' ) =  '"+today+"' or DATE_FORMAT( param2 ,'%Y-%m-%d' )  =  '"+today+"' ) ")
        );
        if(totalAmount.compareTo(BigDecimal.ZERO)==0||CollectionUtils.isEmpty(platformLogList)){
            return BigDecimal.ZERO;
        }
        if(platformLogList!=null && platformLogList.size()>0){
            return this.getWorkTime(totalAmount,platformLogList,today);
        }
        return r;
    }
    /**
     * 查询作业时长(小时)
     * @param totalAmount
     * @param platformLogList
     * @return
     */
    public BigDecimal getWorkTime(BigDecimal totalAmount,List<PlatformLog> platformLogList,String today){
        if(CollectionUtils.isEmpty(platformLogList)){
            return BigDecimal.ZERO;
        }
        //获取开始时间
        List<Long> startTimeList = platformLogList.stream().filter(i->Objects.nonNull(i.getParam1()))
                .filter(i->Objects.nonNull(i.getParam1())&&i.getParam1().indexOf(today)>=0)
                .map(i->DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",i.getParam1()).getTime()).collect(Collectors.toList());
        Long startTime  = Collections.min(startTimeList);
        //获取结束时间
        List<Long> endTimeList = platformLogList.stream()
                .filter(i->Objects.nonNull(i.getParam2())&&i.getParam2().indexOf(today)>=0)
                .map(i->DateUtil.fromStringToDate("yyyy-MM-dd HH:mm:ss",i.getParam2()).getTime()).collect(Collectors.toList());
        Long endTime = Collections.max(endTimeList);
        if(Objects.isNull(startTime)
            || Objects.isNull(endTime) || (startTime>=endTime)){
            return BigDecimal.ZERO;
        }
        return   totalAmount.divide(new BigDecimal(( endTime - startTime )+"").divide(new BigDecimal("3600000"),2,BigDecimal.ROUND_HALF_UP),2,BigDecimal.ROUND_HALF_UP) ;
    }
    private BigDecimal  getSumTotalByList(List<PlatformJob> list,Integer type,Integer status) {
        BigDecimal r = new BigDecimal(0);
        if(list==null || list.size() == 0){
            return r;
@@ -1204,7 +1499,6 @@
    @Override
    public    YearDeviceDataVO yearFightingAdminDeviceData(){
        YearDeviceDataVO data = new YearDeviceDataVO();
        FireStatisticRequest param = new FireStatisticRequest();
        param.setIndexCode("api_fire_statistic");
        BaseResponse<FireStatisticResponse> response = HKService.fireStatistic(param);
@@ -1212,7 +1506,6 @@
            data.setProtectNum(Constants.formatIntegerNum(response.getData().getMaintenanceNum()));
            data.setPlanProtectTotal(Constants.formatIntegerNum(response.getData().getDeviceTotalNum()));
        }
        param = new FireStatisticRequest();
        param.setIndexCode("api_fire_statistic_month");
        BaseResponse<FireStatisticResponse> response1 = HKService.fireStatisticMonth(param);
@@ -1222,7 +1515,6 @@
            data.setMonthTotalNum(Constants.formatIntegerNum(response1.getData().getDeviceTotalNum()));
        }
        return data;
    }
    /**
@@ -1233,7 +1525,37 @@
    public  FightingAdminCenterDataVO centerFightingAdminData(){
        FightingAdminCenterDataVO data = new FightingAdminCenterDataVO();
        List<DeviceNumByTypeVO> list = new ArrayList<>();
        FireDevStatusTotalRequest param = new FireDevStatusTotalRequest();
        FindDeviceStatisticsRequest param1 = new FindDeviceStatisticsRequest();
        param1.setRegionIndexCode("root000000");
        BaseResponse<List<FindDeviceStatisticsResponse>> response = HKService.findDeviceStatistics(param1);
        if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null ){
            for(FindDeviceStatisticsResponse r :response.getData()){
                if(r.getDevices()!=null){
                    for(FindDeviceStatisticsInfoResponse td : r.getDevices()){
                        DeviceNumByTypeVO t = new DeviceNumByTypeVO();
                        t.setTypeName(td.getDeviceName());
                        //屏蔽数
                        t.setShieldDeviceNum(Constants.formatIntegerNum(t.getShieldDeviceNum() )+ Constants.formatIntegerNum(td.getShieldSensorCount()));
                        //报警数
                        t.setAlarmDeviceNum(Constants.formatIntegerNum(t.getAlarmDeviceNum())+ Constants.formatIntegerNum(td.getAlarmSensorCount()));
                        //正常数
                        t.setOnlineDeviceNum(Constants.formatIntegerNum(t.getOnlineDeviceNum())+Constants.formatIntegerNum(td.getNormalSensorCount()));
                        //故障数
                        t.setErrDeviceNum(Constants.formatIntegerNum(t.getErrDeviceNum())+ Constants.formatIntegerNum(td.getFaultSensorCount()));
                        //总设备数
                        t.setTotalDeviceNum(Constants.formatIntegerNum(t.getTotalDeviceNum())+ Constants.formatIntegerNum(td.getTotalSensorCount()));
                        list.add(t);
//                        data.setOfflineDeviceNum(Constants.formatIntegerNum( data.getOfflineDeviceNum())+Constants.formatIntegerNum(t.getOfflineDeviceNum()));
                        data.setShieldDeviceNum(Constants.formatIntegerNum( data.getShieldDeviceNum())+Constants.formatIntegerNum(t.getShieldDeviceNum()));
                        data.setAlarmDeviceNum(Constants.formatIntegerNum( data.getAlarmDeviceNum())+Constants.formatIntegerNum(t.getAlarmDeviceNum()));
                        data.setOnlineDeviceNum(Constants.formatIntegerNum( data.getOnlineDeviceNum())+Constants.formatIntegerNum(t.getOnlineDeviceNum()));
                        data.setErrDeviceNum(Constants.formatIntegerNum( data.getErrDeviceNum())+Constants.formatIntegerNum(t.getErrDeviceNum()));
                        data.setTotalDeviceNum(Constants.formatIntegerNum( data.getTotalDeviceNum())+Constants.formatIntegerNum(t.getTotalDeviceNum()));
                    }
                }
            }
        }
       /* FireDevStatusTotalRequest param = new FireDevStatusTotalRequest();
        param.setIncludeBool(1);
        param.setRegionIds(new String[]{"root000000"});
        BaseResponse<List<FireDevStatusListResponse>> response = HKService.getFireDevStatusList(param);
@@ -1253,16 +1575,17 @@
                data.setErrDeviceNum(Constants.formatIntegerNum( data.getErrDeviceNum())+Constants.formatIntegerNum(r.getFaultFireDevCount()));
                data.setTotalDeviceNum(Constants.formatIntegerNum( data.getTotalDeviceNum())+Constants.formatIntegerNum(r.getTotalFireDevCount()));
            }
        }
        }*/
        data.setDeviceTypeList(list);
        Long totalNum =hiddenDangerMapper.selectCount(new QueryWrapper<HiddenDanger>().lambda()
                .eq(HiddenDanger::getIsdeleted,Constants.ZERO )
                .apply("to_days(create_date) = to_days(now())" ) );
                .apply(" DATE_FORMAT(create_date, '%Y-%m')  = DATE_FORMAT(now(), '%Y-%m')  " ) );
        data.setDangerTotalNum(totalNum !=null?totalNum.intValue():0);//今日隐患数量
        totalNum =hiddenDangerMapper.selectCount(new QueryWrapper<HiddenDanger>().lambda()
                .eq(HiddenDanger::getIsdeleted,Constants.ZERO )
                .in(HiddenDanger::getStatus,Constants.ONE,Constants.TWO )
                .apply("to_days(check_date) = to_days(now())" ) );
//                .in(HiddenDanger::getStatus,Constants.ONE,Constants.TWO )
                .eq(HiddenDanger::getStatus,Constants.ZERO )
                .apply(" DATE_FORMAT(create_date, '%Y-%m')  = DATE_FORMAT(now(), '%Y-%m')  " ) );
        data.setDangerDealedNum(totalNum !=null?totalNum.intValue():0);//今日处理隐患数量
        return  data;
    }
@@ -1621,27 +1944,50 @@
                energyDataVOList.add(data);
            }
        }else{
            String lastYear = null;
            int lastMonths = 0,curMonths =0;
            String curYear =DateUtil.getFomartDate(new Date(),"yyyy");
            for (int i = 0; i < 12; i++) {
                Date tempDate = DateUtil.increaseMonth(lastMonth,i);
                String tt =DateUtil.getFomartDate(tempDate,"yyyy");
                if(!StringUtils.equals(curYear,tt)){
                   lastYear = tt;
                   lastMonths = i+1;//去年的月份数
                }
                EnergyDataVO data = new EnergyDataVO();
                data.setTimeData(DateUtil.getFomartDate(tempDate,"YYYY-MM"));
//                data.setTimeData(DateUtil.getFomartDate(tempDate,(i+1)+"月"));
                data.setEnergy(new BigDecimal(0));
                energyDataVOList.add(data);
            }
            //如果是用电数据
            curMonths = 12 - lastMonths;//今年的月份数
            EnergyTrendRequest param = new EnergyTrendRequest();
            param.setDate(DateUtil.getFomartDate(new Date(),"yyyy"));//年份
            param.setMeterType(1);
            param.setNodeType(2);
            param.setNodeId("root000000");
            param.setPeriodType("year");
            if(lastYear!=null){
                //如果是用电数据
                param.setDate(lastYear);//查询去年年份
                BaseResponse<EnergyTrendResponse> response = HKService.energyTrend(param);
                if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null&& response.getData().getYvalues()!=null ){
                    for (int i = 0; i < lastMonths; i++) { //0,11,取值1-12
                        if(response.getData().getYvalues().size()>0 &&response.getData().getYvalues().get(0).getValue().length>curMonths+i){
                            //取相应的参数值
                            energyDataVOList.get(i).setEnergy(new BigDecimal(StringUtils.defaultString(response.getData().getYvalues().get(0).getValue()[curMonths+i],"0")));
                        }
                    }
                }
            }
            //如果是用电数据
            param.setDate(curYear);//年份
            BaseResponse<EnergyTrendResponse> response = HKService.energyTrend(param);
            if(response != null && StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE) && response.getData()!=null&& response.getData().getYvalues()!=null ){
                for (int i = 0; i < 12; i++) {
                    if(response.getData().getYvalues().size()>0 &&response.getData().getYvalues().get(0).getValue().length>i){
                for (int i = lastMonths; i < 12; i++) { //12 取值 0
                    if(response.getData().getYvalues().size()>0 &&response.getData().getYvalues().get(0).getValue().length>i-lastMonths){
                        //取相应的参数值
                        energyDataVOList.get(i).setEnergy(new BigDecimal(StringUtils.defaultString(response.getData().getYvalues().get(0).getValue()[i],"0")));
                        energyDataVOList.get(i).setEnergy(new BigDecimal(StringUtils.defaultString(response.getData().getYvalues().get(0).getValue()[i-lastMonths],"0")));
                    }
                }
@@ -1652,17 +1998,16 @@
    @Override
    public  VisitDataVO visitSecurityData(){
        //待访问、已登记、已离开
        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(" now() >  STARTTIME and now() < ENDTIME")
                .in(Visits::getStatus,Constants.VisitStatus.pass,Constants.VisitStatus.xfSuccess )));//待访问
        result.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
        result.setRegisterVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
                .eq(Visits::getIsdeleted,Constants.ZERO)
                .apply("to_days(create_date)=to_days(now())")
                .in(Visits::getStatus,Constants.VisitStatus.signout,Constants.VisitStatus.signin )));//已登记
        result.setWaitVisitNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
        result.setLevelNum(visitsJoinMapper.selectCount(new MPJLambdaWrapper<Visits>()
                .eq(Visits::getIsdeleted,Constants.ZERO)
                .apply("to_days(create_date)=to_days(now())")
                .in(Visits::getStatus,Constants.VisitStatus.signout )));//已签离
@@ -1710,6 +2055,7 @@
                result.getVisitRetentionDataList().add(t);
            });
        }
        result.setRetentionNum(result.getVisitRetentionDataList().size());
        return result;
    }
@@ -1723,6 +2069,7 @@
                        .selectAll(Retention.class)
                        .selectAs(Company::getType,Retention::getCompanyType)
                        .leftJoin(Company.class,Company::getId,Retention::getCompanyId)
                        .eq(Retention::getIsdeleted,Constants.ZERO)
        );
        //今日在园人数
@@ -1731,11 +2078,11 @@
        );
        //在园长期相关方人数
        data.setRelatedTotal(
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) && Constants.equalsInteger(i.getCompanyType(),Constants.ZERO)).count()
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FOUR) ).count()
        );
        //在园内部员工人数
        data.setInternalTotal(
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) && Constants.equalsInteger(i.getCompanyType(),Constants.ONE)).count()
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.TWO) ).count()
        );
        //在园访客数量
        data.setVisitTotal(
@@ -1745,7 +2092,13 @@
        data.setInParkCarTotal(
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)).count()
        );
        //在园相关方车辆
        //2025年8月4日09:24:23 更换数据源 不从海康取
        data.setFreeParkingLot(data.getParkingLotTotal()<data.getInParkCarTotal()?Constants.ZERO:data.getParkingLotTotal() - data.getInParkCarTotal());
        //当前在园货车司机总数
        data.setInParkCarUserTotal(
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FIVE)).count()
        );
       /* //在园相关方车辆
        data.setRelatedCarTotal(
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.relation)).count()
@@ -1754,30 +2107,66 @@
        data.setInternalCarTotal(
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.internal)).count()
        );
        );*/
        //来访车辆
        data.setVisitCarTotal(
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.visitor)).count()
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.fkCar)).count()
        );
        //自由物流车数量
        data.setVisitCarTotal(
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.selfTruck)).count()
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.atwlzyCar)).count()
        );
        //市公司卸货车数量
        data.setInternalJobCarTotal(
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.cityComTruck)).count()
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.sgsxhCar)).count()
        );
        //外协车数量
        data.setRelatedJobCarTotal(
                (int) retentionList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.THREE)
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.outTruck)).count()
                        &&Constants.equalsInteger(i.getCarType(),Constants.RetentionCarType.wxysCar)).count()
        );
        data.setVideoPluginUrl(getVideoUrl());
        data.setOutHyLotTotal(Integer.valueOf(systemDictDataBiz.queryByCode(Constants.WMS_PARAM,Constants.OUT_HY_LOT_TOTAL).getCode()));
        data.setInParkCarList(this.getInParkCars(data));
        return data;
    }
    public List<Map<String,Object>> getInParkCars(SecurityBoardVO securityBoardVO){
        List<Map<String,Object>> mapList = categoryMapper.selectJoinMaps(new MPJLambdaWrapper<Category>()
                .select(Category::getName)
                .select(" ( select count(1) from retention r where r.isdeleted = 0 and  r.CATEGORY_PARENT_ID = t.id and r.TYPE = 3   ) as total ")
                .eq(Category::getType,Constants.ONE)
                .eq(Category::getIsdeleted,Constants.ZERO)
                .isNull(Category::getParentId)
                .groupBy(Category::getName)
        );
        if(CollectionUtils.isEmpty(mapList)){
            mapList = new ArrayList<>();
        }
        Map<String,Object> map = new HashMap<>();
        map.put("name","未知车辆");
        map.put("total", retentionMapper.selectCount(
                new MPJLambdaWrapper<Retention>()
                        .eq(Retention::getIsdeleted,Constants.ZERO)
                        .isNull(Retention::getCategoryId)
                        .eq(Retention::getCarType,Constants.SIX)
                    )
        );
        mapList.add(map);
        return mapList;
    }
    private String getVideoUrl() {
        return  systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode()+"plugin/VideoWebPlugin.exe";
@@ -1819,8 +2208,12 @@
                    .in(PlatformJob ::getStatus,new Integer[]{Constants.PlatformJobStatus.WORKING.getKey(),Constants.PlatformJobStatus.CALLED.getKey() })
//                    .leftJoin(Platform.class,Platform::getId,PlatformJob::getPlatformId)
                    .orderByDesc(PlatformJob::getStatus )
                    .orderByAsc(PlatformJob::getId )
                    .orderByAsc(PlatformJob::getSortnum )
            );
            List<PlatformDevice> platformDevices = platformDeviceMapper.selectList(new QueryWrapper<PlatformDevice>().lambda().eq(PlatformDevice::getType,Constants.ONE)
                    .eq(PlatformDevice::getIsdeleted,Constants.ZERO).isNotNull(PlatformDevice::getDeviceId));
            String videoUrl = getVideoUrl();
            //月台状态:0=作业中;1=空闲中;2=作业超时;3=叫号
            for(Platform model : platformList){
                PlatformWorkDataVO platformDurationVO = new PlatformWorkDataVO();
@@ -1828,6 +2221,13 @@
                platformDurationVO.setPlatformId(model.getId());
                platformDurationVO.setPlatformCode(model.getCode());
                platformDurationVO.setPlatformSort(model.getSortnum());
                if(CollectionUtils.isNotEmpty(platformDevices)){
                    List<PlatformDevice> deviceList = platformDevices.stream().filter(i->Constants.equalsInteger(i.getPlatformId(),model.getId())).collect(Collectors.toList());
                    if (CollectionUtils.isNotEmpty(deviceList)) {
                        platformDurationVO.setDeviceId(deviceList.get(Constants.ZERO).getDeviceId());
                        platformDurationVO.setVideoPluginUrl(videoUrl);
                    }
                }
                PlatformJob job = getJobFromListById(model.getId(),jobList);
                if(job != null){
                    if(Constants.equalsInteger(job.getType(),Constants.ONE) || Constants.equalsInteger(job.getType(),Constants.THREE)){
@@ -1835,9 +2235,13 @@
                    }else{
                        platformDurationVO.setWorkType(Constants.ZERO);//如果是卸货
                    }
                    Integer workMinute = Constants.formatBigdecimal(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"));
                    Integer workMinute = 0;
                    Date overDate =null;
                    if(model.getWorkRate()!=null && model.getWorkRate().compareTo(new BigDecimal(0)) !=0){
                        workMinute   = Constants.formatBigdecimal(job.getWorkNum()).multiply(new BigDecimal(60)).divide(model.getWorkRate(),0,BigDecimal.ROUND_HALF_UP).intValue();
                        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());//车牌号
@@ -1846,7 +2250,7 @@
                    }else{
                        platformDurationVO.setStatus(Constants.ZERO); //作业中
                        platformDurationVO.setWorkTime(PlatformJobServiceImpl.getWorkTime(job,platformLogMapper));//已工作时间
                        if(overDate.getTime() < System.currentTimeMillis() ){
                        if(overDate!=null && overDate.getTime() < System.currentTimeMillis() ){
                            model.setStatus(Constants.TWO); //作业已超时
                        }
                    }
@@ -1884,7 +2288,7 @@
        List<PlatformJob> jobList = platformJobMapper.selectJoinList(PlatformJob.class, new MPJLambdaWrapper<PlatformJob>()
                .selectAll( PlatformJob.class)
//                .select("(select sum(ifnull(a.io_qty,0)) from platform_wms_detail a where a.isdeleted=0 and a.job_id =t.id )", create_date)
                .apply("to_days(t.create_date) = to_days(now())")
                .apply("to_days(t.done_date) = to_days(now())")
                .eq(Platform::getIsdeleted, Constants.ZERO)
                .in(PlatformJob::getStatus, Constants.PlatformJobStatus.DONE.getKey()
                        , Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
@@ -1898,7 +2302,7 @@
        }
        int curtotalNum = 0;
        Date today =  Utils.Date.getStart(new Date());
        long curTime=0, lastTime=0;
        long curTime=0, lastTime=0 ;
        for (int i = 0; i < 8; i++) {
            lastTime = curTime;//上次的时间
            int curHour = 8+(i*2);
@@ -1921,7 +2325,7 @@
                curtotalNum += Constants.formatIntegerNum(workEfficiencyVO.getWorkNum()) ;
            }
            workEfficiencyVO.setTotalWorkNum(curtotalNum);//累计值
            if(System.currentTimeMillis() < curTime){
            if((System.currentTimeMillis() + 2*60*60*1000) < curTime ){
                workEfficiencyVO.setTotalWorkNum(0);
            }
            workEfficiencyVOList.add(workEfficiencyVO);
@@ -1983,16 +2387,16 @@
        data.setFreePlatform(
                list.stream().filter(i->Constants.formatIntegerNum(i.getWorkStatus())<=Constants.ZERO).collect(Collectors.toList()).size()
        );
        //查询今日月台个状态作业数量
      /*  //查询今日月台个状态作业数量
        List<PlatformJob> jobList =  platformJobMapper.selectJoinList(PlatformJob.class,new MPJLambdaWrapper<PlatformJob>()
                .selectAll(PlatformJob.class)
                .select("count(id)" ,PlatformJob::getCountum)
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .apply("to_days(create_date) = to_days(now())" )
                .groupBy(PlatformJob::getStatus )
                .groupBy(PlatformJob::getStatus)
        );
        if(jobList!=null){
        if(jobList!=null){
            //-------------TODO----------【看板】爱确认需求--------------
            //     * 0待确认 1待签到 2等待叫号 3入园等待 4已叫号 5作业中 6作业完成 7转移中 8异常挂起 9已授权离园 10已离园 11 已过号 12已取消
            for(PlatformJob model : jobList){
@@ -2069,14 +2473,64 @@
                }
            }
      }*/
        //预约数
        data.setReservationCar(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>()
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .apply("to_days(create_date) = to_days(now())" )).intValue());
        //作业中
        data.setWorkingCar(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>()
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WORKING.getKey())
        ).intValue());
        //排队车
        data.setLineUpCar(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>()
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .in(PlatformJob::getStatus,Constants.PlatformJobStatus.CALLED.getKey(),
                        Constants.PlatformJobStatus.WAIT_CALL.getKey(),
                        Constants.PlatformJobStatus.IN_WAIT.getKey())).intValue());
        //已叫号
        data.setCalledNum(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>()
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .apply("to_days(call_date) = to_days(now())" )).intValue());
        //签到数
        data.setSignedNum(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>()
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .apply("to_days(sign_date) = to_days(now())" )).intValue());
        //今日完成数
        data.setDoneNum(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>()
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .in(PlatformJob::getStatus,Constants.PlatformJobStatus.LEAVED.getKey(),
                        Constants.PlatformJobStatus.AUTHED_LEAVE.getKey(),
                        Constants.PlatformJobStatus.DONE.getKey())
                .apply("to_days(done_date) = to_days(now())" )).intValue());
            data.setVideoPluginUrl(getVideoUrl());
            String indexCodes = systemDictDataBiz.queryByCode(Constants.HK_PARAM,Constants.HK_CHANGNEI_SCREEN_INDEXCODES).getCode();
            if(StringUtils.isNotBlank(indexCodes)){
                data.setVideoIndexCodes(indexCodes.split(","));
            }
        //已作业数
        data.setWorkedNum(platformJobMapper.selectCount(new MPJLambdaWrapper<PlatformJob>()
                .eq(PlatformJob::getIsdeleted,Constants.ZERO)
                .and(w-> w.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WORKING.getKey())
                        .or().in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey()
                                ,Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
                                ,Constants.PlatformJobStatus.LEAVED.getKey()).apply("to_days(done_date) = to_days(now())")
                        .or().eq(PlatformJob::getStatus,Constants.PlatformJobStatus.EXCEPTION.getKey()).apply("to_days(done_date) = to_days(now())")
                        .or().eq(PlatformJob::getStatus,Constants.PlatformJobStatus.TRANSFERING.getKey()).apply("to_days(trans_platform_date) = to_days(now())")
                )
//                .and(w->{w.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.WORKING.getKey());})
//                .and(w->{w.in(PlatformJob::getStatus,Constants.PlatformJobStatus.DONE.getKey()
//                                ,Constants.PlatformJobStatus.AUTHED_LEAVE.getKey()
//                                ,Constants.PlatformJobStatus.LEAVED.getKey())
//                        .apply("to_days(done_date) = to_days(now())");})
//                .and(w->{w.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.EXCEPTION.getKey())
//                        .apply("to_days(error_date) = to_days(now())");})
//                .and(w->{w.eq(PlatformJob::getStatus,Constants.PlatformJobStatus.TRANSFERING.getKey())
//                        .apply("to_days(trans_platform_date) = to_days(now())");})
        ).intValue());
        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;
    }
@@ -2173,10 +2627,43 @@
     */
    @Override
    public  WholeProvinceBoardVO centerProvinceData(String  factoryCode){
        WholeProvinceBoardVO data = initWholeProvinceBoardVOData(factoryCode);
      /* Date date = new Date();
        TmsOutQtyAndVehicleQtyRequest param = new TmsOutQtyAndVehicleQtyRequest();
        param.setDateEnd(DateUtil.getShortTime(date));
        param.setDateStart(DateUtil.getShortTime(date));
        if(StringUtils.isNotBlank(code)){
            param.setFacrotyCodeList(new ArrayList<>());
            param.getFacrotyCodeList().add(code);//查询指定厂区
        }
        List<TmsOutQtyAndVehicleQtyResponse> listSame=  tmsService.getOutQtyAndVehicleQty(param);
        if(listSame!=null ){
            for(TmsOutQtyAndVehicleQtyResponse model : listSame){
                data.setCrrentOutNum(data.getCrrentOutNum().add(Constants.formatBigdecimal(model.getTotalOutQty())));//今日出库量
                data.setCrrentOutCarNum(data.getCrrentOutCarNum()+(Constants.formatIntegerNum(model.getVehicleQty())));//今日出库车次
            }
        }*/
        initOutboundCapability(data,factoryCode);
        return  data;
    }
    @Override
    public  WholeProvinceBoardVO centerProvinceDataNew(String  factoryCode){
        WholeProvinceBoardVO data = initWholeProvinceBoardVOData(factoryCode);
        initOutboundCapabilityNew(data,factoryCode);
        return  data;
    }
    private WholeProvinceBoardVO initWholeProvinceBoardVOData(String factoryCode) {
        WholeProvinceBoardVO data = new WholeProvinceBoardVO();
        data.setMaxAbility(new BigDecimal(0));
        data.setHoursAbility(new BigDecimal(0));
        data.setCurrentPlanNum(new BigDecimal(0));
        data.setCurrentOrderNum(new BigDecimal(0));
        data.setNoNeedTransportOrderNum(new BigDecimal(0));
        data.setNeedTransportOrderNum(new BigDecimal(0));
        data.setCurrentOrderNum(new BigDecimal(0));
        data.setCrrentRestNum(new BigDecimal(0));
        data.setCrrentOutNum(new BigDecimal(0));
@@ -2198,24 +2685,42 @@
                }
            }
        }
      /*  Date date = new Date();
        TmsOutQtyAndVehicleQtyRequest param = new TmsOutQtyAndVehicleQtyRequest();
        param.setDateEnd(DateUtil.getShortTime(date));
        param.setDateStart(DateUtil.getShortTime(date));
        return  data;
    }
    private void initOutboundCapabilityNew(WholeProvinceBoardVO data, String code) {
        TmsFacrotyCodeListRequest param = new TmsFacrotyCodeListRequest();
        if(StringUtils.isNotBlank(code)){
            param.setFacrotyCodeList(new ArrayList<>());
            param.getFacrotyCodeList().add(code);//查询指定厂区
            param.getFacrotyCodeList().add(code);
        }
        List<TmsOutQtyAndVehicleQtyResponse> listSame=  tmsService.getOutQtyAndVehicleQty(param);
        if(listSame!=null ){
            for(TmsOutQtyAndVehicleQtyResponse model : listSame){
                data.setCrrentOutNum(data.getCrrentOutNum().add(Constants.formatBigdecimal(model.getTotalOutQty())));//今日出库量
                data.setCrrentOutCarNum(data.getCrrentOutCarNum()+(Constants.formatIntegerNum(model.getVehicleQty())));//今日出库车次
            }
        }*/
        initOutboundCapability(data,factoryCode);
        return  data;
        TmsGetOutCapabilityResponse result=  tmsService.getOutCapacity(param);
        if(result !=null){
            data.setCrrentOutNum(Constants.formatBigdecimal(result.getCurrentOutNum())  );//今日出库量
            data.setNeedTransportOrderNum(Constants.formatBigdecimal(result.getCurrentTransportNum()));//当前任务量-已配载未出库
            data.setNoNeedTransportOrderNum(Constants.formatBigdecimal(result.getCurrentNotTransportNum())  );//当前任务量-无需调度
            data.setCrrentRestNum(Constants.formatBigdecimal(result.getCurrentTransportNum()));//剩余任务量-已配载未出库
            data.setCurrentOrderNum(Constants.formatBigdecimal(result.getCurrentOrderNum())  );//当前订单量
            data.setCurrentPlanCarNum(Constants.formatBigdecimal(result.getCurrentTransportVehicleNum()).intValue() );//当前任务车次
            data.setCrrentRestCarNum(Constants.formatBigdecimal(result.getCurrentTransportVehicleNum()).intValue() );//剩余任务车次量
            data.setCrrentOutCarNum(Constants.formatBigdecimal(result.getCurrentOutVehicleNum()).intValue());//今日出库车次
            //当前任务量和剩余任务量,为(无需配载+需要配载的任务量之和)
            data.setCurrentPlanNum(data.getNeedTransportOrderNum().add(data.getNoNeedTransportOrderNum()));//当前任务量
            data.setCrrentRestNum(data.getCurrentPlanNum());//当前任务量
        }
        //处理单位成“箱”,一箱=5万支
        if(Constants.UNIT_TYPE == 1) {
            data.setMaxAbility(Constants.formatBigdecimal(data.getMaxAbility()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setHoursAbility(Constants.formatBigdecimal(data.getHoursAbility()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setCrrentRestNum(Constants.formatBigdecimal(data.getCrrentRestNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setCurrentPlanNum(Constants.formatBigdecimal(data.getCurrentPlanNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setCrrentOutNum(Constants.formatBigdecimal(data.getCrrentOutNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setCurrentOrderNum(Constants.formatBigdecimal(data.getCurrentOrderNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setNoNeedTransportOrderNum(Constants.formatBigdecimal(data.getNoNeedTransportOrderNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setNeedTransportOrderNum(Constants.formatBigdecimal(data.getNeedTransportOrderNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
        }
    }
    private void initOutboundCapability(WholeProvinceBoardVO data, String code) {
        TmsFacrotyCodeListRequest param = new TmsFacrotyCodeListRequest();
@@ -2225,73 +2730,26 @@
        }
        TmsOutboundCapabilityResponse result=  tmsService.getOutboundCapability(param);
        if(result !=null){
            String todayDate = DateUtil.getShortTime(new Date());
            List<String> planCodes = new ArrayList<>();
            List<String> todayCodes = new ArrayList<>();
            String todayDate = DateUtil.getShortTime(new Date());
            if(result.getCurrentDayOrderList()!=null && result.getCurrentDayOrderList().size()>0){
                for(TmsOutboundCapabilityInfoResponse model :result.getCurrentDayOrderList()){
                    data.setCurrentOrderNum(data.getCurrentOrderNum().add(Constants.formatBigdecimal(model.getNcTotality())));//今日订单量
                    /**
                     * DISPATCH_TYPE in(1,2) 且 TRANSPORT_CODE不为空,sum(NC_TOTALITY)  +      DISPATCH_TYPE not in(1,2) sum(NC_TOTALITY)
                     *    今日出库下达的计划任务总量
                     */
                    if(StringUtils.isNotBlank(model.getTransportCode())
                            && (StringUtils.equals("1",model.getDispatchType()) || StringUtils.equals("2",model.getDispatchType()))){
                        data.setCurrentPlanNum(data.getCurrentPlanNum().add(Constants.formatBigdecimal(model.getNcTotality())));//今日订单量
                    }
                    if(!(StringUtils.equals("1",model.getDispatchType()) || StringUtils.equals("2",model.getDispatchType()))){
                        data.setCurrentPlanNum(data.getCurrentPlanNum().add(Constants.formatBigdecimal(model.getNcTotality())));//今日计划量
                    }
                    /**
                     * 今日下达出库的计划任务对应的运输车次数
                     * TRANSPORT_CODE不为空count(transport_code )
                     */
                    if(StringUtils.isNotBlank(model.getTransportCode()) && notInList(model.getTransportCode(),planCodes)){
                        planCodes.add(model.getTransportCode());
                    }
                    /**
                     * 今日下达出库的计划任务对应的运输车次数
                     * TRANSPORT_CODE不为空count(transport_code )
                     */
                    if(StringUtils.isNotBlank(model.getTransportCode()) && notInList(model.getTransportCode(),planCodes)){
                        planCodes.add(model.getTransportCode());
                    }
                    /**
                     *  out_date为当日,sum(NC_TOTALITY) 今日完成的出库作业任务总量
                     * TRANSPORT_CODE不为空 且out_date为当日 count(transport_code)     今日完成的出库作业任务的运输车次数
                     */
                    if(StringUtils.isNotBlank(model.getOutDate()) && model.getOutDate().length()> 10){
                        String tDate = model.getOutDate().substring(0,10);
                        if(tDate.equals(todayDate)){
                            //如果是当日
                            data.setCrrentOutNum(data.getCrrentOutNum().add(Constants.formatBigdecimal(model.getNcTotality())));//今日订单量
                        }
                        if(StringUtils.isNotBlank(model.getTransportCode()) && notInList(model.getTransportCode(),todayCodes)){
                            todayCodes.add(model.getTransportCode());
                        }
                    }
                    dealOutOrderBiz(data,model,planCodes,todayCodes,todayDate);
                }
            }
            if(result.getCurrentDayAgoOrderList()!=null && result.getCurrentDayAgoOrderList().size()>0){
                for(TmsOutboundCapabilityInfoResponse model :result.getCurrentDayAgoOrderList()){
                    /**
                     * out_date为空,sum(NC_TOTALITY)   昨天未完成出库计划任务
                     * out_date为空 且TRANSPORT_CODE不为空 * count(transport_code )   昨天未完成出库计划任务车次
                     */
                    if(StringUtils.isBlank(model.getOutDate())){
                        data.setCurrentPlanNum(data.getCurrentPlanNum().add(Constants.formatBigdecimal(model.getNcTotality())));//今日计划量
                        if(StringUtils.isNotBlank(model.getTransportCode()) && notInList(model.getTransportCode(),planCodes)){
                            planCodes.add(model.getTransportCode());
                        }
                    }
                    dealOutOrderBiz(data,model,planCodes,todayCodes,todayDate);
                }
            }
            data.setCurrentPlanCarNum(planCodes.size());//今日计划车次
            data.setCurrentPlanCarNum(planCodes.size());//今日任务车次
            data.setCrrentOutCarNum(todayCodes.size());//今日出库车次
        }
        data.setCrrentRestNum(data.getCurrentPlanNum().subtract(data.getCrrentOutNum()));
        data.setCrrentRestCarNum(data.getCurrentPlanCarNum() -data.getCrrentOutCarNum());
//        data.setCrrentRestNum(data.getCurrentPlanNum().subtract(data.getCrrentOutNum()));
//        data.setCrrentRestCarNum(data.getCurrentPlanCarNum() -data.getCrrentOutCarNum());
        data.setCrrentRestNum(data.getCurrentPlanNum());
        data.setCrrentRestCarNum(data.getCurrentPlanCarNum());
        if(data.getCrrentRestNum().compareTo(new BigDecimal(0)) <=0){
            data.setCrrentRestNum(new BigDecimal(0));
        }
@@ -2306,6 +2764,57 @@
            data.setCurrentPlanNum(Constants.formatBigdecimal(data.getCurrentPlanNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setCrrentOutNum(Constants.formatBigdecimal(data.getCrrentOutNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setCurrentOrderNum(Constants.formatBigdecimal(data.getCurrentOrderNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setNoNeedTransportOrderNum(Constants.formatBigdecimal(data.getNoNeedTransportOrderNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setNeedTransportOrderNum(Constants.formatBigdecimal(data.getNeedTransportOrderNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
        }
    }
    /**
     * 1、当前订单里:截止目前未配载订单量;
     * 2、当前任务量:截止目前已配载未出库订单量+无需配载的未出库任务量;
     * 3、当前任务量和剩余任务量统计逻辑一致;
     * @param data
     * @param model
     */
    private void dealOutOrderBiz(WholeProvinceBoardVO data, TmsOutboundCapabilityInfoResponse model,List<String> planCodes,List<String> todayCodes,  String todayDate ) {
        /**
         * 当前订单量:截至目前未配载的数据
         */
        if(StringUtils.isBlank(model.getTransportCode())
                &&( StringUtils.equals("1",model.getDispatchType()) || StringUtils.equals("2",model.getDispatchType()))){
            data.setCurrentOrderNum(data.getCurrentOrderNum().add(Constants.formatBigdecimal(model.getNcTotality())));//当前订单量
        }
        /**
         * 当前任务量(和剩余任务里):截至目前已配载未出库的订单
         */
        if(StringUtils.isNotBlank(model.getTransportCode()) && StringUtils.isBlank(model.getOutDate())){
            data.setCurrentPlanNum(data.getCurrentPlanNum().add(Constants.formatBigdecimal(model.getNcTotality())));//当前任务量(累计)
            data.setNeedTransportOrderNum(data.getNeedTransportOrderNum().add(Constants.formatBigdecimal(model.getNcTotality())));//同城剩余任务量(累计)
            if(notInList(model.getTransportCode(),planCodes)){
                planCodes.add(model.getTransportCode());
            }
        }
        /**
         *   同城单子(无需配载但是未完成)
         */
        if(StringUtils.isBlank(model.getOutDate())
                && !StringUtils.equals("1",model.getDispatchType()) && !StringUtils.equals("2",model.getDispatchType())){
            data.setNoNeedTransportOrderNum(data.getNoNeedTransportOrderNum().add(Constants.formatBigdecimal(model.getNcTotality())));//同城剩余任务量(累计)
            data.setCurrentPlanNum(data.getCurrentPlanNum().add(Constants.formatBigdecimal(model.getNcTotality())));//当前任务量(累计)
        }
        /**
         * 今日出库量,出库时间为今天的
         */
        if(StringUtils.isNotBlank(model.getOutDate()) && model.getOutDate().length()> 10){
            String tDate = model.getOutDate().substring(0,10);
            if(tDate.equals(todayDate)){
                //如果是当日
                data.setCrrentOutNum(data.getCrrentOutNum().add(Constants.formatBigdecimal(model.getNcTotality())));//今日出库量
                if(StringUtils.isNotBlank(model.getTransportCode()) && notInList(model.getTransportCode(),todayCodes)){
                    todayCodes.add(model.getTransportCode());
                }
            }
        }
    }
@@ -2327,7 +2836,10 @@
        TotalOutQtyNumVO  data = new TotalOutQtyNumVO();
        data.setCurrentInNum(new BigDecimal(0));
        data.setLastInNum(new BigDecimal(0));
        data.setCurrentProvinceNum(new BigDecimal(0));
        data.setCurrentOtherNum(new BigDecimal(0));
        data.setSameInNum(new BigDecimal(0));
        //---------省外----------------
        data.setCurrentOutNum(new BigDecimal(0));
        data.setLastOutNum(new BigDecimal(0));
@@ -2367,6 +2879,8 @@
            List<TmsOutQtyAndVehicleQtyResponse> listSame=  tmsService.getOutQtyAndVehicleQty(param);//去年同期
            if(listSame!=null ){
                for(TmsOutQtyAndVehicleQtyResponse model : listSame){
                    model.setOutSideProvinceOutQty(Constants.formatBigdecimal(model.getOutSideProvinceOutT03Qty()).add(Constants.formatBigdecimal(model.getOutSideProvinceOutT01Qty())));//省外累计
                    model.setInSideProvinceOutQty(Constants.formatBigdecimal(model.getInSideProvinceOutT03Qty()).add(Constants.formatBigdecimal(model.getInSideProvinceOutT01Qty())));//省内累计
                    data.setSameOutNum(data.getSameOutNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutQty())));
                    data.setSameInNum(data.getSameInNum().add(Constants.formatBigdecimal(model.getInSideProvinceOutQty())));
                }
@@ -2377,9 +2891,15 @@
        List<TmsOutQtyAndVehicleQtyResponse> listCur =  tmsService.getOutQtyAndVehicleQty(param);//本周期
        if(listCur!=null ){
            for(TmsOutQtyAndVehicleQtyResponse model : listCur){
                model.setOutSideProvinceOutQty(Constants.formatBigdecimal(model.getOutSideProvinceOutT03Qty()).add(Constants.formatBigdecimal(model.getOutSideProvinceOutT01Qty())));//省外累计
                model.setInSideProvinceOutQty(Constants.formatBigdecimal(model.getInSideProvinceOutT03Qty()).add(Constants.formatBigdecimal(model.getInSideProvinceOutT01Qty())));//省内累计
                data.setCurrentOutNum(data.getCurrentOutNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutQty())));
                data.setCurrentInNum(data.getCurrentInNum().add(Constants.formatBigdecimal(model.getInSideProvinceOutQty())));
                data.setTotalCarNum(data.getTotalCarNum()+Constants.formatIntegerNum(model.getVehicleQty()));//累计车次
                data.setCurrentProvinceNum(data.getCurrentProvinceNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutT01Qty()))
                        .add(Constants.formatBigdecimal(model.getInSideProvinceOutT01Qty())));//省内省外销售量
                data.setCurrentOtherNum(data.getCurrentOtherNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutT03Qty()))
                        .add(Constants.formatBigdecimal(model.getInSideProvinceOutT03Qty())));//省内省外其他出库量
            }
        }
        param.setDateEnd(DateUtil.getShortTime(lastEnd));
@@ -2387,6 +2907,8 @@
        List<TmsOutQtyAndVehicleQtyResponse> listLast =  tmsService.getOutQtyAndVehicleQty(param);//上周期
        if(listCur!=null ){
            for(TmsOutQtyAndVehicleQtyResponse model : listLast){
                model.setOutSideProvinceOutQty(Constants.formatBigdecimal(model.getOutSideProvinceOutT03Qty()).add(Constants.formatBigdecimal(model.getOutSideProvinceOutT01Qty())));//省外累计
                model.setInSideProvinceOutQty(Constants.formatBigdecimal(model.getInSideProvinceOutT03Qty()).add(Constants.formatBigdecimal(model.getInSideProvinceOutT01Qty())));//省内累计
                data.setLastOutNum(data.getLastOutNum().add(Constants.formatBigdecimal(model.getOutSideProvinceOutQty())));
                data.setLastInNum(data.getLastInNum().add(Constants.formatBigdecimal(model.getInSideProvinceOutQty())));
            }
@@ -2400,6 +2922,8 @@
        if(Constants.UNIT_TYPE == 1) {
            data.setCurrentInNum(Constants.formatBigdecimal(data.getCurrentInNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setCurrentOutNum(Constants.formatBigdecimal(data.getCurrentOutNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setCurrentOtherNum(Constants.formatBigdecimal(data.getCurrentOtherNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setCurrentProvinceNum(Constants.formatBigdecimal(data.getCurrentProvinceNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setLastInNum(Constants.formatBigdecimal(data.getLastInNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setLastOutNum(Constants.formatBigdecimal(data.getLastOutNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
            data.setSameInNum(Constants.formatBigdecimal(data.getSameInNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
@@ -2427,15 +2951,16 @@
                    t =new WholeProvinceMapVO();
                    t.setMonthNum( Constants.formatBigdecimal0Float(model.getMonthOutboundQuantity()));
                    t.setYearNum( Constants.formatBigdecimal0Float(model.getYearOutboundQuantity()));
                    if(Constants.UNIT_TYPE == 1) {
                        //处理单位成“箱”,一箱=5万支
                        t.setMonthNum(Constants.formatBigdecimal(t.getMonthNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
                        t.setYearNum(Constants.formatBigdecimal(t.getYearNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
                    }
                    t.setProvinceCode(model.getToProvinceCode());
                    t.setProvinceName(model.getToProvinceName());
                    result.add(t);
                }
            }
            if(Constants.UNIT_TYPE == 1) {
             for(WholeProvinceMapVO t : result){
                    //处理单位成“箱”,一箱=5万支
                    t.setMonthNum(Constants.formatBigdecimal(t.getMonthNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
                    t.setYearNum(Constants.formatBigdecimal(t.getYearNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
                }
            }
        }
@@ -2481,7 +3006,7 @@
        return infoList;
    }
    /**
     * 近七日到货情况
     * 近七日到货情况-改成近15日
     * @return
     */
    @Override
@@ -2493,17 +3018,17 @@
            param.getFacrotyCodeList().add(code);//查询指定厂区
        }
        Date date = new Date();
        Date startDate = DateUtil.addDaysToDate(date,-7);
        Date startDate = DateUtil.addDaysToDate(date,-15);
        //看板大屏近7日到货情况日期 0表示当天当前推7天,-1表示本月初1号-7号
        String flag = systemDictDataBiz.queryByCode(Constants.TSM_PARAM,Constants.SCREEN_SEVENT_ARRIVAL_STARTDATE).getCode();
        if(StringUtils.equals(flag,"-1")){
            startDate =DateUtil.getBeginDayOfMonth(0);
            date = DateUtil.addDaysToDate(startDate,7);
            date = DateUtil.addDaysToDate(startDate,15);
        }
        param.setNcCreateDateFrom(DateUtil.getShortTime(startDate));
        param.setNcCreateDateThrough(DateUtil.getShortTime(date));
        List<TmsSevenArrivalStatusAndDetailsResponse> infoList =   tmsService.getSevenArrivalStatusAndDetails(param);//查询出库量
        for (int i = 0; i < 7; i++) {
        for (int i = 0; i < 15; i++) {
            LastSevenDaysOrderVo model = new LastSevenDaysOrderVo();
            Date td = DateUtil.addDaysToDate(date,-i);
            model.setDateStr(DateUtil.getShortTime(td));
@@ -2544,6 +3069,7 @@
        WholeProvinceZXTVO result = new WholeProvinceZXTVO();
        result.setCurrentNum(new BigDecimal(0));
        result.setTotalNum(new BigDecimal(0));
        result.setZtNum(new BigDecimal(0));
        result.setUseRate(new BigDecimal(0));
        result.setDetailList(new ArrayList<>());
        List<TmsFactoryParam> paramList =factoryList();
@@ -2553,47 +3079,52 @@
                WholeProvinceZxtDetailVO t = new WholeProvinceZxtDetailVO();
                t.setFactoryName(p.getName());
                t.setCurrentNum(new BigDecimal(0));
                t.setZaituNum(new BigDecimal(0));
                t.setTotalNum(Constants.formatBigdecimal(p.getNum1()));//总库存量
                getFromReportVehicleQtyList(p.getCode(),t,response);//处理提报运力和总运力数据
                t.setUseRate(new BigDecimal(0));
                if(t.getTotalNum().compareTo(new BigDecimal(0)) !=0){
                    t.setUseRate(t.getCurrentNum().divide(t.getTotalNum(),4,BigDecimal.ROUND_HALF_UP));
                if((t.getTotalNum().subtract(t.getZaituNum())).compareTo(new BigDecimal(0)) !=0){
                    t.setUseRate(t.getCurrentNum().divide(t.getTotalNum().subtract(t.getZaituNum()),4,BigDecimal.ROUND_HALF_UP));
                }
                if(Constants.UNIT_TYPE == 1) {
                /*if(Constants.UNIT_TYPE == 1) {
                    //处理单位成“箱”,一箱=5万支
                    t.setCurrentNum(Constants.formatBigdecimal(t.getCurrentNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
                    t.setTotalNum(Constants.formatBigdecimal(t.getTotalNum()).divide(new BigDecimal(5), 2, BigDecimal.ROUND_HALF_UP));
                }
                }*/
                result.getDetailList().add(t);
                result.setCurrentNum(result.getCurrentNum().add(t.getCurrentNum()));
                result.setTotalNum(result.getTotalNum().add(t.getTotalNum()));
                result.setZtNum(result.getZtNum().add(t.getZaituNum()));
            }
        }
        if(result.getTotalNum().compareTo(new BigDecimal(0)) !=0){
            result.setUseRate(result.getCurrentNum().divide(result.getTotalNum(),4,BigDecimal.ROUND_HALF_UP));
        if((result.getTotalNum().subtract(result.getZtNum())).compareTo(new BigDecimal(0)) !=0){
            result.setUseRate(result.getCurrentNum().divide(result.getTotalNum().subtract(result.getZtNum()),4,BigDecimal.ROUND_HALF_UP));
        }
        return result;
    }
    private void getFromReportVehicleQtyList(String code,WholeProvinceZxtDetailVO t, List<TmsTotalAndReportVehicleQtyResponse> responses) {
        BigDecimal current = new BigDecimal(0);
        BigDecimal total= new BigDecimal(0);
        BigDecimal ztTotal= new BigDecimal(0);
        if(responses!=null && responses.size()>0){
            for(TmsTotalAndReportVehicleQtyResponse model: responses){
                if(StringUtils.equals(model.getFactoryCode(),code)){
                    ztTotal = ztTotal.add(Constants.formatBigdecimal(model.getInTransitQty()));
                    total = total.add(Constants.formatBigdecimal(model.getTotalQty()));
                    current = current.add(Constants.formatBigdecimal(model.getReportQty()));
                }
            }
        }
        t.setCurrentNum(current);
        t.setZaituNum(ztTotal);
        t.setTotalNum(total);
    }
    private BigDecimal getCurrentOutQryByList(List<TmsOutQtyAndVehicleQtyResponse> response) {
        BigDecimal r = new BigDecimal(0);
        if(response!=null && response.size()>0){
            for(TmsOutQtyAndVehicleQtyResponse model: response){
                    r = r.add(Constants.formatBigdecimal(model.getTotalOutQty()));
//                model.setTotalOutQty(Constants.formatBigdecimal(model.getTotalOutT03Qty()).add(Constants.formatBigdecimal(model.getTotalOutT01Qty())));
                r = r.add(Constants.formatBigdecimal(model.getTotalOutQty()));
            }
        }
        return r ;
@@ -2649,7 +3180,6 @@
            }
        }
        return r ;
    }