nidapeng
2024-04-10 6c5d0a4a9264b7508c7ffe81b45ba239cabf2244
server/dmvisit_screen/src/main/java/com/doumee/service/impl/ScreenServiceImpl.java
@@ -1,6 +1,15 @@
package com.doumee.service.impl;
import com.doumee.core.constants.ResponseStatus;
import com.doumee.core.exception.BusinessException;
import com.doumee.core.haikang.model.HKConstants;
import com.doumee.core.haikang.model.param.BaseListPageResponse;
import com.doumee.core.haikang.model.param.BaseResponse;
import com.doumee.core.haikang.model.param.request.AcsDeviceStatusListRequest;
import com.doumee.core.haikang.model.param.request.TempCarInRecordListRequest;
import com.doumee.core.haikang.model.param.respose.AscDeviceStatusInfoResponse;
import com.doumee.core.haikang.model.param.respose.TempCarInRecordInfoResponse;
import com.doumee.core.haikang.service.HKService;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.dao.business.VisitEventMapper;
@@ -38,13 +47,13 @@
    public   CountDataResponse countData(BaseRequest param){
        MPJLambdaWrapper<Visits> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.select("count(1) as applyTotalNum");
        queryWrapper.select("(select count(1) from visits where TO_DAYS(create_date)=TO_DAYS(now()) and status not in(1,4,9)) as applyPassNum");
        queryWrapper.select("(select count(1) from visits where TO_DAYS(create_date)=TO_DAYS(now()) and status=8) as visitInNum");
        queryWrapper.select("(select count(1) from visits where TO_DAYS(create_date)=TO_DAYS(now()) and status=6) as visitOutNum");
        queryWrapper.select("(select count(1) from visits where TO_DAYS(starttime)=TO_DAYS(now()) and status not in(5,6,8)) as applyPassNum");
        queryWrapper.select("(select count(1) from visits where TO_DAYS(starttime)=TO_DAYS(now()) and status in (5)) as visitInNum");
        queryWrapper.select("(select count(1) from visits where TO_DAYS(starttime)=TO_DAYS(now()) and status in (6,8)) as visitOutNum");
        queryWrapper.select("(select count(1) from car_event where TO_DAYS(create_date)=TO_DAYS(now()) and inout_type=0 and event_type="+ HKConstants.EventTypes.PARK_PASS_IN.getKey() +") as carInNum");
        queryWrapper.select("(select count(1) from car_event where TO_DAYS(create_date)=TO_DAYS(now()) and inout_type=1 and event_type="+ HKConstants.EventTypes.PARK_PASS_OUT.getKey() +") as carOutNum");
        queryWrapper.select("(select count(1) from car_event where TO_DAYS(create_date)=TO_DAYS(now()) and (inout_type !=0 ) and event_type="+ HKConstants.EventTypes.PARK_PASS_OUT.getKey() +") as carOutNum");
        queryWrapper.eq(Visits::getIsdeleted, Constants.ZERO );
        queryWrapper.apply("TO_DAYS(create_date)=TO_DAYS(now())" );
        queryWrapper.apply("TO_DAYS(starttime)=TO_DAYS(now())" );
        queryWrapper.last("limit 1");
        CountDataResponse vModel =visitsMapper.selectJoinOne(CountDataResponse.class,queryWrapper);
        vModel.setVisitorNum(vModel.getVisitInNum()+vModel.getVisitOutNum());//今日访客总数
@@ -56,10 +65,33 @@
        wrapper.last("limit 1");
        CountDataResponse cModel =carEventMapper.selectJoinOne(CountDataResponse.class,wrapper);
        vModel.setMemberCarNum(vModel.getMemberCarNum());//今日员工车辆进场数
        vModel.setMemberCarNum(vModel.getCarInNum() - vModel.getMemberCarNum());//今日预约车辆进场数
        vModel.setVisitCarNum(vModel.getCarInNum() - vModel.getMemberCarNum());//今日预约车辆进场数
        vModel.setCarNum(getCarInRecordCount());
        return vModel;
    }
    public int getCarInRecordCount(){
        try {
            List<TempCarInRecordInfoResponse> allDoorList = new ArrayList<>();
            Date date =DateUtil.getDateFromString(DateUtil.getShortTime(new Date()) +" 00:00:00");
            int curPage = 1;
            //分页遍历循环查询所有门禁设备数据
            TempCarInRecordListRequest param = new TempCarInRecordListRequest();
            param.setStartTime(DateUtil.getISO8601Timestamp2(date));
            param.setPageNo(curPage);
            param.setPageSize(1);
            BaseResponse<BaseListPageResponse<TempCarInRecordInfoResponse>> response = HKService.tempCarInRecords(param);
            if(response == null || !StringUtils.equals(response.getCode(), HKConstants.RESPONSE_SUCCEE)){
                throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(), "对不起,海康同步数据失败~");
            }
            BaseListPageResponse r = response.getData();
            return  r.getTotal();
        }catch (Exception e){
        }
        return  0;
    }
    @Override
    public    List<CarsDataListResponse> carsDataList(BaseRequest param){
        List<CarsDataListResponse> list = new ArrayList<>();
@@ -84,7 +116,7 @@
                model.setCreateDate(event.getCreateDate());
                model.setCompanyName(event.getCompanyName());
                model.setMemberName(event.getMemberName());
                model.setType(event.getMemberType());
                model.setType(Constants.formatIntegerNum(event.getMemberType()) !=2?1:2);
                model.setVisitCompanyName(event.getVisitCompanyName());
                list.add(model);
            }
@@ -98,9 +130,8 @@
        MPJLambdaWrapper<VisitEvent> wrapper = new MPJLambdaWrapper<>();
        wrapper.selectAll(VisitEvent.class) ;
        wrapper.apply("TO_DAYS(create_date)=TO_DAYS(now())" );
        wrapper.in(CarEvent::getEventType, Arrays.asList(new Integer[]{HKConstants.EventTypes.PARK_PASS_IN.getKey(),HKConstants.EventTypes.PARK_PASS_OUT.getKey()}));
        wrapper.last("limit 50");
        wrapper.orderByDesc(VisitEvent::getCreateDate);
        wrapper.orderByDesc(VisitEvent::getStartTime);
        List<VisitEvent> result =visitEventMapper.selectList( wrapper);
        if(result!=null){
            for(VisitEvent event :result){
@@ -203,7 +234,7 @@
        MPJLambdaWrapper<CarEvent> wrapper = new MPJLambdaWrapper<>();
        wrapper.select("count(id) as num, create_date");
        wrapper.apply("TO_DAYS(create_date)+"+days+" >= TO_DAYS(now()) " );
        wrapper.eq(CarEvent::getEventType,  HKConstants.EventTypes.PARK_LINE_IN.getKey());
        wrapper.in(CarEvent::getEventType,  HKConstants.EventTypes.PARK_PASS_IN.getKey(), HKConstants.EventTypes.PARK_PASS_OUT.getKey());
        wrapper.groupBy("TO_DAYS(create_date)");
        wrapper.orderByDesc(CarEvent::getCreateDate);
        List<CarEvent> result =carEventMapper.selectJoinList(CarEvent.class,wrapper);
@@ -211,12 +242,22 @@
    }
    private List<VisitEvent> getVisitEventListByDays(int days) {
        MPJLambdaWrapper<VisitEvent> wrapper = new MPJLambdaWrapper<>();
        wrapper.select("count(id) as num, create_date");
        wrapper.apply("TO_DAYS(create_date)+"+days+" >= TO_DAYS(now()) " );
        wrapper.select("count(id) as num, starttime");
        wrapper.apply("TO_DAYS(starttime)+"+days+" >= TO_DAYS(now()) " );
        wrapper.eq(VisitEvent::getEventType,  HKConstants.EventTypes.VISIT_SIGN_IN.getKey());
        wrapper.groupBy("TO_DAYS(create_date)");
        wrapper.groupBy("TO_DAYS(starttime)");
        wrapper.orderByDesc(CarEvent::getCreateDate);
        List<VisitEvent> result =visitEventMapper.selectJoinList(VisitEvent.class,wrapper);
        return  result;
    }
    private List<Visits> getVisitListByDays(int days) {
        MPJLambdaWrapper<Visits> wrapper = new MPJLambdaWrapper<>();
        wrapper.select("count(id) as num, starttime");
        wrapper.apply("TO_DAYS(starttime)+"+days+" >= TO_DAYS(now()) " );
        wrapper.in(Visits::getStatus,  5,6,7);
        wrapper.groupBy("TO_DAYS(starttime)");
        wrapper.orderByDesc(CarEvent::getCreateDate);
        List<Visits> result =visitsMapper.selectJoinList(Visits.class,wrapper);
        return  result;
    }
    @Override
@@ -255,9 +296,17 @@
        }
        return 0;
    }
    private Integer getVisistNumByDate(String s, List<VisitEvent> result) {
    private Integer getVisistEventNumByDate(String s, List<VisitEvent> result) {
        for(VisitEvent event:result){
            if(StringUtils.equals(s,DateUtil.formatDate(event.getCreateDate(),"MM.dd"))){
                return event.getNum();
            }
        }
        return 0;
    }
    private Integer getVisistNumByDate(String s, List<Visits> result) {
        for(Visits event:result){
            if(StringUtils.equals(s,DateUtil.formatDate(event.getStarttime(),"MM.dd"))){
                return event.getNum();
            }
        }
@@ -288,7 +337,7 @@
            times.add(DateUtil.formatDate(DateUtil.dateDayAdd(new Date(), -(days-i)+1),"MM.dd"));
            numList.add(0);
        }
        List<VisitEvent> result = getVisitEventListByDays(days);
        List<Visits> result = getVisitListByDays(days);
        if(result!=null&& result.size()>0){
            for (int i = 0; i < days; i++) {
                numList.set(i,getVisistNumByDate(times.get(i),result));