From d5397923196daf2c54f00e927492261d66e1feb2 Mon Sep 17 00:00:00 2001 From: rk <94314517@qq.com> Date: 星期六, 11 十月 2025 18:19:34 +0800 Subject: [PATCH] 钥匙柜开发 --- server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java | 25 ++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/AdminCabinetVO.java | 27 ++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java | 90 +++++++ server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java | 9 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java | 2 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CloseGridDTO.java | 31 ++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetGridInfoVO.java | 50 ++++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java | 40 +++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java | 3 server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java | 24 ++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java | 284 ++++++++++++++++++++++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetDetailVO.java | 53 ++++ server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java | 15 + server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java | 24 ++ server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java | 18 + 15 files changed, 682 insertions(+), 13 deletions(-) diff --git a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java index b32f626..b814911 100644 --- a/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java +++ b/server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/JkKeysCloudController.java @@ -5,6 +5,7 @@ import com.doumee.core.annotation.excel.ExcelExporter; import com.doumee.core.annotation.pr.PreventRepeat; import com.doumee.core.utils.Constants; +import com.doumee.dao.business.model.JkCabinet; import com.doumee.dao.business.model.JkKeys; import com.doumee.service.business.JkKeysService; import com.doumee.service.business.third.model.ApiResponse; @@ -77,6 +78,14 @@ return ApiResponse.success(jkKeysService.findPage(pageWrap)); } + @ApiOperation("鍒楄〃鏌ヨ") + @PostMapping("/list") + @CloudRequiredPermission("business:jkkeys:query") + public ApiResponse<List<JkKeys>> findList (@RequestBody JkKeys jkKeys, @RequestHeader(Constants.HEADER_USER_TOKEN) String token) { + return ApiResponse.success(jkKeysService.findList(jkKeys)); + } + + @ApiOperation("瀵煎嚭Excel") @PostMapping("/exportExcel") @CloudRequiredPermission("business:jkkeys:exportExcel") diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CloseGridDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CloseGridDTO.java new file mode 100644 index 0000000..d48db4c --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/CloseGridDTO.java @@ -0,0 +1,31 @@ +package com.doumee.dao.business.dto; + +import com.doumee.service.business.third.model.LoginUserModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2025/10/11 16:01 + */ +@Data +public class CloseGridDTO{ + + @ApiModelProperty(value = "閽ュ寵鏌滀富閿�") + private Integer cabinetId; + + @ApiModelProperty(value = "楠岃瘉鏂瑰紡 0鍒疯劯 1鍒峰崱 2绠$悊鍛樻搷浣�") + private Integer authType; + + @ApiModelProperty(value = "鏌滄牸涓婚敭") + private Integer gridId; + + @ApiModelProperty(value = "鐢ㄦ埛涓婚敭") + private Integer memberId; + + @ApiModelProperty(value = "閽ュ寵鐘舵�侊細1鍦ㄤ綅 2鍊熷嚭") + private Integer keyStatus; + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java new file mode 100644 index 0000000..6b63c22 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/GetDriverGridDTO.java @@ -0,0 +1,24 @@ +package com.doumee.dao.business.dto; + +import com.doumee.service.business.third.model.LoginUserModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2025/10/11 16:01 + */ +@Data +public class GetDriverGridDTO{ + + @ApiModelProperty(value = "閽ュ寵鏌滀富閿�") + private Integer cabinetId; + + @ApiModelProperty(value = "0=鍙� 1=杩�") + private Integer type; + + @ApiModelProperty(value = "鐢ㄦ埛涓婚敭") + private Integer memberId; +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java new file mode 100644 index 0000000..2f76d84 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OpenGridDriverDTO.java @@ -0,0 +1,25 @@ +package com.doumee.dao.business.dto; + +import com.doumee.service.business.third.model.LoginUserModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2025/10/11 16:01 + */ +@Data +public class OpenGridDriverDTO extends LoginUserModel { + + @ApiModelProperty(value = "閽ュ寵鏌滀富閿�") + private Integer cabinetId; + + @ApiModelProperty(value = "楠岃瘉鏂瑰紡 0鍒疯劯 1鍒峰崱") + private Integer authType; + + @ApiModelProperty(value = "鏌滄牸涓婚敭") + private Integer gridId; + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java new file mode 100644 index 0000000..64db8b0 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/dto/OptGridDTO.java @@ -0,0 +1,24 @@ +package com.doumee.dao.business.dto; + +import com.doumee.service.business.third.model.LoginUserModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2025/10/11 16:01 + */ +@Data +public class OptGridDTO extends LoginUserModel { + + @ApiModelProperty(value = "閽ュ寵鏌滀富閿�") + private Integer cabinetId; + + @ApiModelProperty(value = "鏌滄牸涓婚敭鍒楄〃") + private List<Integer> gridIdList; + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java index b4d4302..84cb250 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetGrid.java @@ -86,8 +86,6 @@ private String channelCode; - - @ApiModelProperty(value = "缁戝畾鐘舵�� 0鏈粦瀹氾紱1宸茬粦瀹�", example = "1") @TableField(exist = false) private Integer bindStatus; @@ -99,4 +97,17 @@ @ApiModelProperty(value = "閽ュ寵缂栫爜", example = "1") @TableField(exist = false) private String keyCode; + + @ApiModelProperty(value = "杞︾墝鍙�", example = "1") + @TableField(exist = false) + private String carCode; + + @ApiModelProperty(value = "杞﹁締涓婚敭", example = "1") + @TableField(exist = false) + private Integer carId; + + @ApiModelProperty(value = "閽ュ寵鐘舵�� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭 3缁翠慨淇濆吇", example = "1") + @TableField(exist = false) + private Integer keyStatus; + } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java index 81db5e1..91d1265 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/JkCabinetLog.java @@ -77,6 +77,9 @@ @ExcelColumn(name="鐘舵��",index = 6,width = 10,valueMapping = "0=鎴愬姛;1=澶辫触;") private Integer status; + @ApiModelProperty(value = "鎿嶄綔绫诲瀷锛�0=寮�闂�;1=鍏抽棬;", example = "1") + private Integer type; + @ApiModelProperty(value = "鎿嶄綔浜洪儴闂�", example = "1",hidden = true) @TableField(exist = false) private String companyName; diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/AdminCabinetVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/AdminCabinetVO.java new file mode 100644 index 0000000..5b54199 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/AdminCabinetVO.java @@ -0,0 +1,27 @@ +package com.doumee.dao.business.vo; + +import com.doumee.core.annotation.excel.ExcelColumn; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2024/5/23 14:56 + */ +@Data +public class AdminCabinetVO { + + @ApiModelProperty(value = "璁惧涓婚敭锛堢郴缁熷唴锛�") + private Integer id; + + @ApiModelProperty(value = "璁惧缂栧彿") + private String code; + + @ApiModelProperty(value = "璁惧鍚嶇О") + private String name; + + @ApiModelProperty(value = "璁惧ID") + private String devId; +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetDetailVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetDetailVO.java new file mode 100644 index 0000000..618ffb5 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetDetailVO.java @@ -0,0 +1,53 @@ +package com.doumee.dao.business.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2024/5/23 14:56 + */ +@Data +public class CabinetDetailVO { + + @ApiModelProperty(value = "璁惧涓婚敭锛堢郴缁熷唴锛�") + private Integer id; + + @ApiModelProperty(value = "璁惧缂栧彿") + private String code; + + @ApiModelProperty(value = "璁惧鍚嶇О") + private String name; + + @ApiModelProperty(value = "璁惧ID") + private String devId; + + @ApiModelProperty(value = "鏌滄牸鎬绘暟") + private Integer gridNum; + + @ApiModelProperty(value = "鍦ㄤ綅閽ュ寵鏁�") + private Integer onlineKeyNum; + + @ApiModelProperty(value = "鍊熷嚭閽ュ寵鏁�") + private Integer outKeyNum; + + @ApiModelProperty(value = "缁翠慨淇濆吇閽ュ寵鏁�") + private Integer serviceKeyNum; + + @ApiModelProperty(value = "鏁呴殰鏌滀綋鏁伴噺") + private Integer errGridNum; + + @ApiModelProperty(value = "鏈粦瀹氭煖浣撴暟閲�") + private Integer unBindGridNum; + + @ApiModelProperty(value = "鏌滄牸淇℃伅") + private List<CabinetGridInfoVO> cabinetGridInfoVOList; + + + + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetGridInfoVO.java b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetGridInfoVO.java new file mode 100644 index 0000000..9045686 --- /dev/null +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/CabinetGridInfoVO.java @@ -0,0 +1,50 @@ +package com.doumee.dao.business.vo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.doumee.core.annotation.excel.ExcelColumn; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * Created by IntelliJ IDEA. + * + * @Author : Rk + * @create 2024/5/23 14:56 + */ +@Data +public class CabinetGridInfoVO { + + @ApiModelProperty(value = "涓婚敭", example = "1") + private Integer id; + + @ApiModelProperty(value = "缂栫爜") + private String code; + + @ApiModelProperty(value = "閽ュ寵缂栫爜锛堝叧鑱攋k_keys)", example = "1") + private Integer keyId; + + @ApiModelProperty(value = "鏌滀綋杩愯鐘舵�� 0姝e父 1鏁呴殰 ", example = "1") + private Integer workingStatus; + + @ApiModelProperty(value = "缁戝畾鐘舵�� 0鏈粦瀹氾紱1宸茬粦瀹�", example = "1") + private Integer bindStatus; + + @ApiModelProperty(value = "閽ュ寵鐘舵�� 0鏈粦瀹� 1鍦ㄤ綅 2鍊熷嚭 3缁翠慨淇濆吇", example = "1") + private Integer keyStatus; + + @ApiModelProperty(value = "鏉垮彿") + private String boardCode; + + @ApiModelProperty(value = "閫氶亾鍙�") + private String channelCode; + + @ApiModelProperty(value = "杞︾墝鍙�", example = "1") + private String carCode; + + +} diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java index f08d092..eee512d 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetGridService.java @@ -1,6 +1,11 @@ package com.doumee.service.business; +import com.doumee.dao.business.dto.OptGridDTO; +import com.doumee.dao.business.dto.CloseGridDTO; +import com.doumee.dao.business.dto.GetDriverGridDTO; +import com.doumee.dao.business.dto.OpenGridDriverDTO; import com.doumee.dao.business.model.JkCabinetGrid; +import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; @@ -99,4 +104,39 @@ void updateStatusById(JkCabinetGrid jkCabinetGrid); void unBindKeys(List<Integer> idList); + + /** + * 鏍囪鏌滄牸鏁呴殰 + * @param loginUserInfo + * @param cabinetId + * @param gridIdList + */ + void markFault(OptGridDTO dto); + + /** + * 鏍囪鏌滄牸姝e父 + * @param loginUserInfo + * @param cabinetId + * @param gridIdList + */ + void cancelFault(OptGridDTO dto); + + /** + * 鎵归噺寮�闂� - 绠$悊鍛� + */ + void batchOpenGridAdmin(OptGridDTO dto); + /** + * 鏍囪缁翠慨淇濆吇 - 绠$悊鍛� + * @param loginUserInfo + * @param cabinetId + * @param gridIdList + */ + void markRepair(OptGridDTO dto); + + void closeGrid(CloseGridDTO dto); + + List<JkCabinetGrid> getDriverGrid(GetDriverGridDTO getDriverGridDTO); + + void openGridDriver(OpenGridDriverDTO openGridDriverDTO); + } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java index c11b9c5..95caaf0 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/JkCabinetService.java @@ -1,6 +1,9 @@ package com.doumee.service.business; +import com.doumee.dao.business.vo.AdminCabinetVO; import com.doumee.dao.business.vo.CabinetConfigDataVO; +import com.doumee.dao.business.vo.CabinetDetailVO; +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.dao.business.model.JkCabinet; @@ -102,4 +105,19 @@ CabinetConfigDataVO getCabinetConfigDataVO(); void updCabinetConfig(CabinetConfigDataVO cabinetConfigDataVO); + + + /** + * 閽ュ寵鏌滅鐞嗗憳 鑾峰彇鍙鐞嗙殑閽ュ寵鏌滃垪琛� + * @param loginUserInfo + * @return + */ + List<AdminCabinetVO> getAdminCabinetInfo(LoginUserInfo loginUserInfo); + + /** + * 鑾峰彇閽ュ寵鏌滆鎯� + * @param cabinetId + * @return + */ + CabinetDetailVO getCabinetDetail(Integer cabinetId); } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java index 4cc4c61..28633c9 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetGridServiceImpl.java @@ -1,26 +1,24 @@ package com.doumee.service.business.impl; -import com.alibaba.druid.sql.visitor.functions.Concat; 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.JkKeysMapper; -import com.doumee.dao.business.model.Cars; -import com.doumee.dao.business.model.JkCabinet; -import com.doumee.dao.business.model.JkKeys; +import com.doumee.dao.business.*; +import com.doumee.dao.business.dto.OptGridDTO; +import com.doumee.dao.business.dto.CloseGridDTO; +import com.doumee.dao.business.dto.GetDriverGridDTO; +import com.doumee.dao.business.dto.OpenGridDriverDTO; +import com.doumee.dao.business.model.*; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; import com.doumee.core.utils.Utils; -import com.doumee.dao.business.JkCabinetGridMapper; -import com.doumee.dao.business.model.JkCabinetGrid; import com.doumee.service.business.JkCabinetGridService; 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.doumee.service.business.third.model.PageWrap; -import com.github.yulichang.toolkit.MPJWrappers; import com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -28,8 +26,7 @@ import com.github.xiaoymin.knife4j.core.util.CollectionUtils; import org.springframework.transaction.annotation.Transactional; -import java.util.List; -import java.util.Objects; +import java.util.*; import java.util.stream.Collectors; /** @@ -45,6 +42,13 @@ @Autowired private JkKeysMapper jkKeysMapper; + + @Autowired + private JkCabinetMapper jkCabinetMapper; + @Autowired + private JkCabinetLogMapper jkCabinetLogMapper; + + @Override public Integer create(JkCabinetGrid jkCabinetGrid) { @@ -237,7 +241,267 @@ } + /** + * 鏍囪鏁呴殰 + */ + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void markFault(OptGridDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getCabinetId()) + || CollectionUtils.isEmpty(dto.getGridIdList())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) + .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO) + .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId()) + .in(JkCabinetGrid::getId,dto.getGridIdList()) + ); + if(CollectionUtils.isEmpty(jkCabinetGridList)){ + return; + } + LoginUserInfo loginUserInfo = dto.getLoginUserInfo(); + for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) { + jkCabinetGrid.setEditor(loginUserInfo.getId()); + jkCabinetGrid.setEditDate(new Date()); + jkCabinetGrid.setWorkingStatus(Constants.ONE); + jkCabinetGridMapper.updateById(jkCabinetGrid); + } + } + + /** + * 鏍囪缁翠慨淇濆吇 + */ + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void markRepair(OptGridDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getCabinetId()) + || CollectionUtils.isEmpty(dto.getGridIdList())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, + new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class) + .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode) + .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode) + .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId) + .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId) + .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) + .eq(JkKeys::getStatus,Constants.ONE) + .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO) + .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId()) + .isNotNull(JkCabinetGrid::getKeyId) + .in(JkCabinetGrid::getId,dto.getGridIdList()) + ); + if(CollectionUtils.isEmpty(jkCabinetGridList)){ + return; + } + for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) { + jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda() + .set(JkKeys::getEditDate,DateUtil.getCurrDateTime()) + .set(JkKeys::getStatus,Constants.TWO) + .eq(JkKeys::getId,jkCabinetGrid.getKeyId()) + ); + } + } + /** + * 鍙栨秷鏁呴殰 + */ + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void cancelFault(OptGridDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getCabinetId()) + || CollectionUtils.isEmpty(dto.getGridIdList())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) + .eq(JkCabinetGrid::getWorkingStatus,Constants.ONE) + .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId()) + .in(JkCabinetGrid::getId,dto.getGridIdList()) + ); + if(CollectionUtils.isEmpty(jkCabinetGridList)){ + return; + } + LoginUserInfo loginUserInfo = dto.getLoginUserInfo(); + for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) { + jkCabinetGrid.setEditor(loginUserInfo.getId()); + jkCabinetGrid.setEditDate(new Date()); + jkCabinetGrid.setWorkingStatus(Constants.ZERO); + jkCabinetGridMapper.updateById(jkCabinetGrid); + } + } + + + /** + * 璁惧绠$悊鍛樻壒閲忓紑閿� + */ + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void batchOpenGridAdmin(OptGridDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getCabinetId()) + || CollectionUtils.isEmpty(dto.getGridIdList())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) + .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId()) + .in(JkCabinetGrid::getId,dto.getGridIdList()) + ); + if(CollectionUtils.isEmpty(jkCabinetGridList)){ + return; + } + LoginUserInfo loginUserInfo = dto.getLoginUserInfo(); + if(org.apache.commons.collections.CollectionUtils.isNotEmpty(jkCabinetGridList)){ + List<JkCabinetLog> jkCabinetLogs = new ArrayList<>(); + for (JkCabinetGrid jkCabinetGrid:jkCabinetGridList) { + JkCabinetLog jkCabinetLog = new JkCabinetLog(); + jkCabinetLog.setCreateDate(new Date()); + jkCabinetLog.setCreator(loginUserInfo.getId()); + jkCabinetLog.setIsdeleted(Constants.ZERO); + jkCabinetLog.setCabinetId(dto.getCabinetId()); + jkCabinetLog.setGridId(jkCabinetGrid.getId()); + jkCabinetLog.setAuthType(Constants.TWO); + jkCabinetLog.setMemberId(loginUserInfo.getMemberId()); + if(Objects.nonNull(jkCabinetGrid.getKeyId())){ + JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId()); + if(Objects.nonNull(jkKeys)){ + if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){ + jkCabinetLog.setCarId(jkKeys.getCarId()); + jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() ); + } + jkCabinetLog.setRoleType(jkKeys.getRoleType()); + } + } + jkCabinetLog.setType(Constants.ZERO); + jkCabinetLogs.add(jkCabinetLog); + } + jkCabinetLogMapper.insert(jkCabinetLogs); + } + } + + + /** + * 閽ュ寵鏌滃叧闂� + */ + @Override + @Transactional(rollbackFor = {BusinessException.class,Exception.class}) + public void closeGrid(CloseGridDTO dto){ + if(Objects.isNull(dto) + || Objects.isNull(dto.getGridId()) + || Objects.isNull(dto.getCabinetId()) + || Objects.isNull(dto.getKeyStatus()) + || Objects.isNull(dto.getAuthType()) + || Objects.isNull(dto.getMemberId()) + ){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + JkCabinetGrid jkCabinetGrid = jkCabinetGridMapper.selectOne(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) + .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId()) + .eq(JkCabinetGrid::getId,dto.getGridId()) + .last(" limit 1 ") + ); + if(Objects.isNull(jkCabinetGrid)){ + return; + } + JkCabinetLog jkCabinetLog = new JkCabinetLog(); + jkCabinetLog.setCreateDate(new Date()); + jkCabinetLog.setIsdeleted(Constants.ZERO); + jkCabinetLog.setCabinetId(dto.getCabinetId()); + jkCabinetLog.setGridId(jkCabinetGrid.getId()); + jkCabinetLog.setAuthType(dto.getAuthType()); + jkCabinetLog.setMemberId(dto.getMemberId()); + if(Objects.nonNull(jkCabinetGrid.getKeyId())){ + //鍙湁閽ュ寵鏌滅粦瀹氫簡閽ュ寵淇℃伅 鎵嶄細鏇存柊閽ュ寵鐨勪俊鎭� + JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId()); + if(Objects.nonNull(jkKeys)){ + if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){ + jkCabinetLog.setCarId(jkKeys.getCarId()); + jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() ); + } + jkCabinetLog.setRoleType(jkKeys.getRoleType()); + //閽ュ寵鐘舵�佷笌褰撳墠鎿嶄綔鐘舵�佷笉涓�鑷达紝鍒欒繘琛屾洿鏂伴挜鍖欑姸鎬� + if(!Constants.equalsInteger(jkKeys.getStatus(),dto.getKeyStatus())){ + jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda() + .set(JkKeys::getEditDate,DateUtil.getCurrDateTime()) + .set(JkKeys::getStatus,dto.getKeyStatus()) + .eq(JkKeys::getId,jkKeys.getId()) + ); + } + } + } + jkCabinetLog.setType(Constants.ONE); + jkCabinetLogMapper.insert(jkCabinetLog); + } + + + /** + * 鍙告満鑾峰彇鍙搷浣滅殑閽ュ寵鏌滄煖鏍� + */ + @Override + public List<JkCabinetGrid> getDriverGrid(GetDriverGridDTO dto){ + if(Objects.isNull(dto.getCabinetId()) + || Objects.isNull(dto.getCabinetId()) + || Objects.isNull(dto.getMemberId()) + || Objects.isNull(dto.getType())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectJoinList(JkCabinetGrid.class, + new MPJLambdaWrapper<JkCabinetGrid>().selectAll(JkCabinetGrid.class) + .selectAs(JkKeys::getCode,JkCabinetGrid::getKeyCode) + .selectAs(JkKeys::getCarCode,JkCabinetGrid::getCarCode) + .selectAs(JkKeys::getCarId,JkCabinetGrid::getCarId) + .leftJoin(JkKeys.class,JkKeys::getId,JkCabinetGrid::getKeyId) + .eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) + .eq(JkCabinetGrid::getWorkingStatus,Constants.ZERO) + .eq(JkCabinetGrid::getCabinetId,dto.getCabinetId()) + .in(Constants.equalsInteger(dto.getType(),Constants.ONE),JkKeys::getStatus,Constants.TWO,Constants.THREE) + .in(Constants.equalsInteger(dto.getType(),Constants.ZERO),JkKeys::getStatus,Constants.ONE) + .isNotNull(JkCabinetGrid::getKeyId) + .apply(" t1.car_id in ( select c.CAR_ID from car_driver c left join cars c1 on c.car_id = c1.id where c.ISDELETED = 0 and c.TYPE != 0 and c.MEMBER_ID = "+dto.getMemberId()+" ) ") + ); + return jkCabinetGridList; + } + + + /** + * 鍙告満寮�鍚煖鏍� + * @param openGridDriverDTO + */ + @Override + public void openGridDriver(OpenGridDriverDTO openGridDriverDTO){ + JkCabinetGrid jkCabinetGrid = jkCabinetGridMapper.selectOne(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO) + .eq(JkCabinetGrid::getCabinetId,openGridDriverDTO.getCabinetId()) + .eq(JkCabinetGrid::getId,openGridDriverDTO.getGridId()) + .last(" limit 1 ") + ); + if(Objects.isNull(jkCabinetGrid)){ + return; + } + LoginUserInfo loginUserInfo = openGridDriverDTO.getLoginUserInfo(); + List<JkCabinetLog> jkCabinetLogs = new ArrayList<>(); + JkCabinetLog jkCabinetLog = new JkCabinetLog(); + jkCabinetLog.setCreateDate(new Date()); + jkCabinetLog.setCreator(loginUserInfo.getId()); + jkCabinetLog.setIsdeleted(Constants.ZERO); + jkCabinetLog.setCabinetId(openGridDriverDTO.getCabinetId()); + jkCabinetLog.setGridId(jkCabinetGrid.getId()); + jkCabinetLog.setAuthType(openGridDriverDTO.getAuthType()); + jkCabinetLog.setMemberId(loginUserInfo.getMemberId()); + jkCabinetLog.setType(Constants.ZERO); + if(Objects.nonNull(jkCabinetGrid.getKeyId())){ + JkKeys jkKeys = jkKeysMapper.selectById(jkCabinetGrid.getKeyId()); + if(Objects.nonNull(jkKeys)){ + if(!Constants.equalsInteger(jkKeys.getStatus(),Constants.ZERO)){ + jkCabinetLog.setCarId(jkKeys.getCarId()); + jkCabinetLog.setKeyInfo(jkKeys.getCarCode() + "_" + jkKeys.getCode() ); + } + jkCabinetLog.setRoleType(jkKeys.getRoleType()); + } + } + jkCabinetLogMapper.insert(jkCabinetLogs); + } } 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..161d43f 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,5 +1,6 @@ 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; @@ -9,7 +10,10 @@ 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.AdminCabinetVO; import com.doumee.dao.business.vo.CabinetConfigDataVO; +import com.doumee.dao.business.vo.CabinetDetailVO; +import com.doumee.dao.business.vo.CabinetGridInfoVO; import com.doumee.dao.system.model.SystemDictData; import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; @@ -22,11 +26,14 @@ 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.*; @@ -340,8 +347,89 @@ 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){ + CabinetDetailVO cabinetDetailVO = new CabinetDetailVO(); + JkCabinet cabinet = jkCabinetMapper.selectOne(new QueryWrapper<JkCabinet>() + .lambda() + .eq(JkCabinet::getIsdeleted,Constants.ZERO) + .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; } diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java index 713869d..d2b5382 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkKeysServiceImpl.java @@ -164,6 +164,8 @@ @Override public List<JkKeys> findList(JkKeys jkKeys) { + jkKeys.setIsdeleted(Constants.ZERO); + jkKeys.setStatus(Constants.ZERO); QueryWrapper<JkKeys> wrapper = new QueryWrapper<>(jkKeys); return jkKeysMapper.selectList(wrapper); } -- Gitblit v1.9.3