From 5841a771d4455d25adb185b8a0637c9ba498aab2 Mon Sep 17 00:00:00 2001 From: rk <94314517@qq.com> Date: 星期二, 21 十月 2025 15:37:54 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/wuhuyancao' into wuhuyancao --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java | 229 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 223 insertions(+), 6 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java index 6f1c80b..cd2a697 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java @@ -1,32 +1,36 @@ package com.doumee.service.business.impl; +import cn.hutool.core.bean.BeanUtil; import com.doumee.biz.system.SystemDictDataBiz; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.exception.BusinessException; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; +import com.doumee.dao.business.CategoryMapper; import com.doumee.dao.business.JkCabinetGridMapper; import com.doumee.dao.business.JkKeysMapper; -import com.doumee.dao.business.model.JkCabinetGrid; -import com.doumee.dao.business.model.JkKeys; -import com.doumee.dao.business.vo.CabinetConfigDataVO; +import com.doumee.dao.business.dao.MemberMapper; +import com.doumee.dao.business.model.*; +import com.doumee.dao.business.vo.*; import com.doumee.dao.system.model.SystemDictData; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; import com.doumee.core.utils.Utils; import com.doumee.dao.business.JkCabinetMapper; -import com.doumee.dao.business.model.JkCabinet; import com.doumee.service.business.JkCabinetService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import lombok.extern.java.Log; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.CollectionUtils; +import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import java.math.BigDecimal; import java.util.*; @@ -44,6 +48,9 @@ private JkCabinetMapper jkCabinetMapper; @Autowired + private CategoryMapper categoryMapper; + + @Autowired private JkCabinetGridMapper jkCabinetGridMapper; @Autowired @@ -51,6 +58,9 @@ @Autowired private SystemDictDataBiz systemDictDataBiz; + + @Autowired + private MemberMapper memberMapper; @Override @Transactional(rollbackFor = {Exception.class,BusinessException.class}) @@ -254,6 +264,16 @@ jkCabinet.setJwd(jkCabinet.getLongitude() + "," + jkCabinet.getLatitude()); } jkCabinet.setGridNum(jkCabinet.getColumnNum()*jkCabinet.getRowNum()); + if(StringUtils.isNotBlank(jkCabinet.getManagerId())){ + jkCabinet.setManagerIdList(Arrays.asList( + jkCabinet.getManagerId().split(",") + )); + } + if(StringUtils.isNotBlank(jkCabinet.getAuthMemberId())){ + jkCabinet.setAuthMemberIdList(Arrays.asList( + jkCabinet.getAuthMemberId().split(",") + )); + } return jkCabinet; } @@ -270,7 +290,7 @@ QueryWrapper<JkCabinet> wrapper = new QueryWrapper<>(jkCabinet); return jkCabinetMapper.selectList(wrapper); } - + @Override public PageData<JkCabinet> findPage(PageWrap<JkCabinet> pageWrap) { IPage<JkCabinet> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); @@ -340,8 +360,205 @@ systemDictData.setCode(cabinetConfigDataVO.getThreshold()); systemDictDataBiz.updateByIdNew(systemDictData); } + } + + + @Override + public List<AdminCabinetVO> getAdminCabinetInfo(LoginUserInfo loginUserInfo){ + List<AdminCabinetVO> adminCabinetVOList = new ArrayList<>(); + List<JkCabinet> jkCabinetList = jkCabinetMapper.selectList(new QueryWrapper<JkCabinet>() + .lambda() + .eq(JkCabinet::getIsdeleted,Constants.ZERO) + .apply(" FIND_IN_SET("+loginUserInfo.getId()+",MANAGER_ID) ") + .orderByAsc(JkCabinet::getCreateDate) + ); + if(CollectionUtils.isNotEmpty(jkCabinetList)){ + for (JkCabinet jkCabinet:jkCabinetList) { + AdminCabinetVO adminCabinetVO = new AdminCabinetVO(); + BeanUtil.copyProperties(jkCabinet,adminCabinetVO); + adminCabinetVOList.add(adminCabinetVO); + } + } + return adminCabinetVOList; + } + + + @Override + public CabinetDetailVO getCabinetDetail(Integer cabinetId,LoginUserInfo loginUserInfo){ + CabinetDetailVO cabinetDetailVO = new CabinetDetailVO(); + JkCabinet cabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>() + .lambda() + .eq(JkCabinet::getIsdeleted,Constants.ZERO) + .apply(" FIND_IN_SET("+loginUserInfo.getId()+",MANAGER_ID) ") + .eq(JkCabinet::getId,cabinetId) + .last(" limit 1") + ); + if(Objects.isNull(cabinet)){ + throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"瀵逛笉璧凤紝鏈煡璇㈠埌閽ュ寵鏌滀俊鎭�"); + } + BeanUtil.copyProperties(cabinet,cabinetDetailVO); + cabinetDetailVO.setGridNum(Constants.ZERO); + cabinetDetailVO.setErrGridNum(Constants.ZERO); + cabinetDetailVO.setOnlineKeyNum(Constants.ZERO); + cabinetDetailVO.setServiceKeyNum(Constants.ZERO); + cabinetDetailVO.setOutKeyNum(Constants.ZERO); + cabinetDetailVO.setUnBindGridNum(Constants.ZERO); + + //鎵�鏈夋煖鏍间俊鎭� + List<JkCabinetGrid> jkCabinetGridList = + jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, new MPJLambdaWrapper<JkCabinetGrid>() + .selectAll(JkCabinetGrid.class) + .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode) + .selectAs(JkKeys::getStatus,JkCabinetGrid::getKeyStatus) + .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId) + .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) + .eq(JkCabinetGrid::getCabinetId,cabinet.getId()) + .orderByDesc(JkCabinetGrid::getCode) + ); + + List<CabinetGridInfoVO> cabinetGridInfoVOList = new ArrayList<>(); + if(CollectionUtils.isNotEmpty(jkCabinetGridList)){ + cabinetDetailVO.setGridNum(jkCabinetGridList.size()); + for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) { + CabinetGridInfoVO cabinetGridInfoVO = new CabinetGridInfoVO(); + BeanUtil.copyProperties(jkCabinetGrid,cabinetGridInfoVO); + cabinetGridInfoVO.setBindStatus(Objects.isNull(jkCabinetGrid.getKeyId())?Constants.ZERO:Constants.ONE); + cabinetGridInfoVOList.add(cabinetGridInfoVO); + } + cabinetDetailVO.setErrGridNum( + cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getWorkingStatus(),Constants.ONE)).collect(Collectors.toList()).size() + ); + cabinetDetailVO.setOnlineKeyNum( + cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.ONE)).collect(Collectors.toList()).size() + ); + cabinetDetailVO.setOutKeyNum( + cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.TWO)).collect(Collectors.toList()).size() + ); + cabinetDetailVO.setServiceKeyNum( + cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getKeyStatus(),Constants.THREE)).collect(Collectors.toList()).size() + ); + cabinetDetailVO.setUnBindGridNum( + cabinetGridInfoVOList.stream().filter(i->Constants.equalsInteger(i.getBindStatus(),Constants.ZERO)).collect(Collectors.toList()).size() + ); + } + return cabinetDetailVO; + } + + + + @Override + public CabinetFaceVO getCabinetFaceVO(String code){ + CabinetFaceVO cabinetFaceVO = new CabinetFaceVO(); + List<CabinetFaceInfoVO> driverFaceList = new ArrayList<>(); + List<CabinetFaceInfoVO> autoFaceList = new ArrayList<>(); + + JkCabinet jkCabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>().lambda() + .eq(JkCabinet::getCode,code) + .eq(JkCabinet::getIsdeleted,Constants.ZERO) + .last("limit 1") + ); + if(Objects.nonNull(jkCabinet)){ + String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + + systemDictDataBiz.queryByCode(Constants.FTP,Constants.MEMBER_IMG).getCode(); + //鏌ヨ鍙告満淇℃伅 + List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class,new MPJLambdaWrapper<JkCabinetGrid>() + .selectAll(JkCabinetGrid.class) + .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId) + .innerJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId) + .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) + .eq(JkKeys::getIsdeleted,Constants.ZERO) + .isNotNull(JkKeys::getCarId) + .eq(JkCabinetGrid::getCabinetId,jkCabinet.getId()) + ); + if(CollectionUtils.isNotEmpty(jkCabinetGridList)){ + List<Integer> carIdList = jkCabinetGridList.stream().map(i->i.getKeyId()).collect(Collectors.toList()); + //鏌ヨ杞﹁締鎵�鏈変汉鍛樹俊鎭� + List<Member> memberList = memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>() + .selectAll(Member.class) + .leftJoin(CarDriver.class,CarDriver::getMemberId,Member::getId) + .eq(Member::getIsdeleted,Constants.ZERO) + .eq(CarDriver::getIsdeleted,Constants.ZERO) + .eq(CarDriver::getStatus,Constants.ZERO) + .isNotNull(Member::getFaceImg) + .in(CarDriver::getCarId,carIdList) + ); + if(CollectionUtils.isNotEmpty(memberList)){ + Set<Member> memberSet = new HashSet<>(memberList); + for (Member member:memberSet) { + CabinetFaceInfoVO cabinetFaceInfoVO = new CabinetFaceInfoVO(); + cabinetFaceInfoVO.setMemberId(member.getId()); + cabinetFaceInfoVO.setMemberName(member.getName()); + cabinetFaceInfoVO.setFaceImg(prefixUrl + member.getFaceImg()); + driverFaceList.add(cabinetFaceInfoVO); + } + } + } + //鏌ヨ璁惧楠岃瘉浜哄憳 + List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda() + .eq(Member::getIsdeleted,Constants.ZERO) + .isNotNull(Member::getFaceImg) + .apply(" FIND_IN_SET( id ,'"+jkCabinet.getManagerId()+"') ") + ); + if(CollectionUtils.isNotEmpty(memberList)){ + for (Member member:memberList) { + CabinetFaceInfoVO cabinetFaceInfoVO = new CabinetFaceInfoVO(); + cabinetFaceInfoVO.setMemberId(member.getId()); + cabinetFaceInfoVO.setMemberName(member.getName()); + cabinetFaceInfoVO.setFaceImg(prefixUrl + member.getFaceImg()); + autoFaceList.add(cabinetFaceInfoVO); + } + } + + } + cabinetFaceVO.setAutoFaceList(autoFaceList); + cabinetFaceVO.setDriverFaceList(driverFaceList); + return cabinetFaceVO; + } + + + @Override + public CabinetInfoVO getCabinetInfoForDriver(String code){ + JkCabinet jkCabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>() + .lambda() + .eq(JkCabinet::getIsdeleted,Constants.ZERO) + .eq(JkCabinet::getCode,code) + .orderByAsc(JkCabinet::getCreateDate) + .last(" limit 1 ") + ); + CabinetInfoVO cabinetInfoVO = new CabinetInfoVO(); + if(Objects.nonNull(jkCabinet)){ + BeanUtil.copyProperties(jkCabinet,cabinetInfoVO); + } + List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda() + .eq(Category::getIsdeleted,Constants.ZERO) + .eq(Category::getStatus,Constants.ZERO) + .eq(Category::getType,Constants.THREE) + .orderByAsc(Category::getSortnum) + ); + if(CollectionUtils.isNotEmpty(categoryList)){ + String prefixUrl = systemDictDataBiz.queryByCode(Constants.FTP,Constants.FTP_RESOURCE_PATH).getCode() + + systemDictDataBiz.queryByCode(Constants.FTP,Constants.BANNER_IMG).getCode(); + for (Category category:categoryList) { + category.setImgurlFull(prefixUrl + category.getImgurl()); + } + cabinetInfoVO.setBannerList( + categoryList.stream().map(i->i.getImgurlFull()).collect(Collectors.toList()) + ); + } + return cabinetInfoVO; + } + + + + @Override + public void updateRunStatusById(Integer id) { + jkCabinetMapper.update(null,new UpdateWrapper<JkCabinet>() + .lambda().set(JkCabinet::getRunStatus,Constants.ZERO) + .set(JkCabinet::getEditDate, DateUtil.getCurrDateTime()) + .set(JkCabinet::getHaertTime, DateUtil.getCurrDateTime()) + .eq(JkCabinet::getId,id)); } -- Gitblit v1.9.3