jiangping
2024-11-05 c50686f775664c5a722f4b5ad7afde1e5214b14d
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/ParkBookServiceImpl.java
@@ -7,7 +7,9 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.CarsMapper;
import com.doumee.dao.business.ParkBookMapper;
import com.doumee.dao.business.ParksMapper;
import com.doumee.dao.business.join.ParkBookJoinMapper;
import com.doumee.dao.business.model.*;
import com.doumee.service.business.ParkBookService;
@@ -20,11 +22,15 @@
import org.apache.commons.lang3.StringUtils;
import org.apache.shiro.SecurityUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * 车辆预约记录信息表Service实现
@@ -37,7 +43,11 @@
    @Autowired
    private ParkBookMapper parkBookMapper;
    @Autowired
    private CarsMapper carsMapper;
    @Autowired
    private HkSyncParkServiceImpl hkSyncParkService;
    @Autowired
    private ParksMapper parksMapper;
    @Autowired
    private ParkBookJoinMapper parkBookJoinMapper;
@@ -114,6 +124,112 @@
    }
    @Override
    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
    public   String batchAuth(Cars cars) {
        if(cars.getIdList() == null || cars.getIdList() == null
                ||cars.getAuthTimeType() == null
                ||cars.getAuthTimeType()>2
                ||cars.getAuthTimeType()<0 ){
            throw new BusinessException(ResponseStatus.BAD_REQUEST);
        }
        MPJLambdaWrapper<Cars> queryWrapper = new MPJLambdaWrapper<>();
        queryWrapper.selectAll(Cars.class);
        queryWrapper.selectAs(Member::getStartTime,Cars::getMemberStartTime);
        queryWrapper.selectAs(Member::getEndTime,Cars::getMemberEndTime);
        queryWrapper.selectAs(Member::getIsdeleted,Cars::getMemberDeleted);
        queryWrapper.selectAs(Member::getAuthStatus,Cars::getMemberAuthStatus);
        queryWrapper.leftJoin(Member.class,Member::getId,Cars::getMemberId);
        queryWrapper.eq(Cars::getIsdeleted,Constants.ZERO)
                .in(Cars::getId,cars.getIdList());
        List<Cars> carsList = carsMapper.selectList( queryWrapper);
       if(carsList== null || carsList.size() ==0){
           throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"车辆信息有误,请返回刷新页面重试!");
       }
        List<Parks> parksList = null;
       if(cars.getParkIdList()!=null && cars.getParkIdList().size() > 0){
           MPJLambdaWrapper<Parks> queryWrapper1 = new MPJLambdaWrapper<>();
           queryWrapper1.selectAll(Parks.class);
           queryWrapper1.eq(Parks::getIsdeleted,Constants.ZERO)
                   .in(Parks::getId,cars.getParkIdList());
          parksList = parksMapper.selectList( queryWrapper1);
           if(parksList== null || parksList.size() ==0){
               throw  new BusinessException(ResponseStatus.DATA_EMPTY.getCode(),"停车场信息有误,请返回刷新页面重试!");
           }
       }
        if(Constants.equalsInteger(cars.getAuthTimeType(),Constants.ONE)){
            if( cars.getStartTime() ==null || cars.getEndTime() == null ){
                throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,请填写正确的有效期范围");
            }
            if( cars.getEndTime().getTime() < System.currentTimeMillis()){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"有效期截止日期不能小于当前时间!");
            }
            if(cars.getEndTime().getTime() <= cars.getStartTime().getTime()){
                throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"有效期截止日期不能小于开始时间!");
            }
        }
       Date date = new Date();
       for(Cars model : carsList){
           Date startTime = cars.getStartTime();
           Date endTime = cars.getEndTime();
           if(Constants.equalsInteger(cars.getAuthTimeType(),Constants.TWO)){
                if(!Constants.equalsInteger(model.getMemberAuthStatus(),Constants.ONE)){
                    throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,车辆【"+model.getCode()+"】车主尚未授权门禁信息,授权无法【跟随车主】有效期!");
                }
                startTime = model.getMemberStartTime();
                endTime=model.getMemberEndTime();
           }
           model.setAuthTimeType(cars.getAuthTimeType());
           model.setStartTime(startTime);
           model.setEndTime(endTime);
           dealCarAuthByModel(model,cars.getLoginUserInfo().getId(),parksList,date,parkBookMapper);
           model.setAuthStatus(Constants.ONE);//已授权
           carsMapper.update(null,new UpdateWrapper<Cars>().lambda()
                   .eq(Cars::getId,model.getId())
                   .set(Cars::getEditDate,date)
                   .set(Cars::getEdirot,cars.getLoginUserInfo().getId())
                   .set(Cars::getAuthStatus,Constants.ONE)
                   .set(Cars::getStartTime,startTime)
                   .set(Cars::getEndTime,endTime)
           );
       }
       return  "授权成功";
    }
    public static int dealCarAuthByModel(Cars model, Integer userId, List<Parks> parksList,Date date,ParkBookMapper parkBookMapper) {
        //删除车量库记录数据
        parkBookMapper.update(null,new UpdateWrapper<ParkBook>().lambda()
                .eq(ParkBook::getCarCode,model.getCode())
                .set(ParkBook::getIsdeleted,Constants.ONE)
                .set(ParkBook::getHkStatus,Constants.ZERO)
        );
        if(org.apache.commons.collections.CollectionUtils.isNotEmpty(parksList)){
            List<ParkBook> parkBookList = new ArrayList<>();
            for (Parks parks:parksList) {
                ParkBook parkBook = new ParkBook();
                parkBook.setIsdeleted(Constants.ZERO);
                parkBook.setCreateDate(date);
                parkBook.setCreator(userId);
                parkBook.setEditor(userId);
                parkBook.setEditDate(date);
                parkBook.setCarCode(model.getCode());
                parkBook.setParkId(parks.getId());
                parkBook.setOrigin(Constants.ZERO);
                parkBook.setStartTime(model.getStartTime());
                parkBook.setEndTime(model.getEndTime());
                parkBook.setTimeType(model.getAuthTimeType());
                parkBook.setMemberId(model.getMemberId());
                parkBook.setHkStatus(Constants.ZERO);
                parkBook.setRemark("待同步安防平台");
                parkBookList.add(parkBook);
            }
            parkBookMapper.insert(parkBookList);
        }
        return 0;
    }
    @Override
    public ParkBook findOne(ParkBook parkBook) {
        QueryWrapper<ParkBook> wrapper = new QueryWrapper<>(parkBook);
        return parkBookMapper.selectOne(wrapper);
@@ -140,7 +256,16 @@
        queryWrapper.leftJoin(Parks.class,Parks::getId,ParkBook::getParkId);
        queryWrapper.leftJoin(Member.class,Member::getId,ParkBook::getMemberId);
        queryWrapper.leftJoin(Company.class,Company::getId,Member::getCompanyId);
        LoginUserInfo userInfo =pageWrap.getModel().getLoginUserInfo();
        if(userInfo!=null && userInfo.getCompanyIdList()!=null){
            if( userInfo.getCompanyIdList().size() ==0){
                //只能看自己
                queryWrapper.eq(Member::getId,userInfo.getMemberId());
            }else{
                queryWrapper.in(Company::getId,userInfo.getCompanyIdList());
            }
        }
        //数据权限开始--------------------end----------------
        queryWrapper
//                .eq(ParkBook::getIsdeleted, Constants.ZERO)
          .and(StringUtils.isNotBlank(pageWrap.getModel().getMemberName()), ms->ms.like(Member::getPhone,pageWrap.getModel().getMemberName())