From 568e38a95cb6fb20fe16b53d17f610aefc6f744f Mon Sep 17 00:00:00 2001
From: rk <94314517@qq.com>
Date: 星期四, 09 十月 2025 18:29:29 +0800
Subject: [PATCH] 钉钉通知 与钥匙柜开发

---
 server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/JkCabinetServiceImpl.java |  299 ++++++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 202 insertions(+), 97 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 ace6b04..36b38ff 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,14 @@
 package com.doumee.service.business.impl;
 
+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.JkCabinetGridMapper;
+import com.doumee.dao.business.JkKeysMapper;
+import com.doumee.dao.business.model.JkCabinetGrid;
+import com.doumee.dao.business.model.JkKeys;
+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;
@@ -10,11 +19,15 @@
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
 
-import java.util.List;
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 閽ュ寵鏌滃熀鏈俊鎭〃Service瀹炵幇
@@ -27,15 +40,118 @@
     @Autowired
     private JkCabinetMapper jkCabinetMapper;
 
+    @Autowired
+    private JkCabinetGridMapper jkCabinetGridMapper;
+
+    @Autowired
+    private JkKeysMapper jkKeysMapper;
+
     @Override
+    @Transactional(rollbackFor = {Exception.class,BusinessException.class})
     public Integer create(JkCabinet jkCabinet) {
+        if(Objects.isNull(jkCabinet)
+            || StringUtils.isBlank(jkCabinet.getCode())
+            || StringUtils.isBlank(jkCabinet.getName())
+            || StringUtils.isBlank(jkCabinet.getDevId())
+            || StringUtils.isBlank(jkCabinet.getLinkAddr())
+            || StringUtils.isBlank(jkCabinet.getCode())
+
+            || Objects.isNull(jkCabinet.getPort())
+            || CollectionUtils.isEmpty(jkCabinet.getManagerIdList())
+            || CollectionUtils.isEmpty(jkCabinet.getAuthMemberIdList())
+            || Objects.isNull(jkCabinet.getDoubleAuth())
+
+            || Objects.isNull(jkCabinet.getRowNum())
+            || jkCabinet.getRowNum() <= Constants.ZERO
+            || Objects.isNull(jkCabinet.getColumnNum())
+            || jkCabinet.getColumnNum() <= Constants.ZERO
+            || Objects.isNull(jkCabinet.getNoType())
+            || Objects.isNull(jkCabinet.getSortType())
+            || (
+                Constants.equalsInteger(jkCabinet.getNoType(),Constants.ONE)
+                && ( Objects.isNull(jkCabinet.getNoIndex()) || Objects.isNull(jkCabinet.getNoLength()) || StringUtils.isBlank(jkCabinet.getNoPrefix()) )
+                )
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        //鏌ヨ缂栧彿鏄惁閲嶅
+        if(jkCabinetMapper.selectCount(new QueryWrapper<JkCabinet>().lambda().eq(JkCabinet::getCode,jkCabinet.getCode()).eq(JkCabinet::getIsdeleted,Constants.ZERO))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閽ュ寵鏌滆澶囩紪鍙峰凡瀛樺湪锛�");
+        }
+        if(jkCabinetMapper.selectCount(new QueryWrapper<JkCabinet>().lambda().eq(JkCabinet::getDevId,jkCabinet.getDevId()).eq(JkCabinet::getIsdeleted,Constants.ZERO))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閽ュ寵鏌滆澶嘔D宸插瓨鍦紒");
+        }
+        LoginUserInfo loginUserInfo = jkCabinet.getLoginUserInfo();
+        jkCabinet.setCreateDate(new Date());
+        jkCabinet.setEditDate(jkCabinet.getCreateDate());
+        jkCabinet.setCreator(loginUserInfo.getId());
+        jkCabinet.setEditor(loginUserInfo.getId());
+        jkCabinet.setIsdeleted(Constants.ZERO);
+        jkCabinet.setStatus(Constants.ZERO);
+        jkCabinet.setRunStatus(Constants.ONE);
+        if(StringUtils.isNotBlank(jkCabinet.getJwd())&&jkCabinet.getJwd().split(",").length>Constants.ONE){
+            jkCabinet.setLongitude(new BigDecimal(jkCabinet.getJwd().split(",")[Constants.ZERO]));
+            jkCabinet.setLatitude(new BigDecimal(jkCabinet.getJwd().split(",")[Constants.ONE]));
+        }
+        jkCabinet.setManagerId(String.join(",",jkCabinet.getManagerIdList()));
+        jkCabinet.setAuthMemberId(String.join(",",jkCabinet.getAuthMemberIdList()));
         jkCabinetMapper.insert(jkCabinet);
+        this.createGrid(jkCabinet);
         return jkCabinet.getId();
+    }
+
+
+    public void createGrid(JkCabinet jkCabinet){
+        LoginUserInfo loginUserInfo = jkCabinet.getLoginUserInfo();
+        Integer startNo =  Constants.equalsInteger(jkCabinet.getNoType(),Constants.ZERO)?1:jkCabinet.getNoIndex() ;
+        List<JkCabinetGrid> jkCabinetGridList = new ArrayList<>();
+        Integer maxNum = jkCabinet.getRowNum() * jkCabinet.getColumnNum();
+        for (int i = 0; i < maxNum; i++) {
+            JkCabinetGrid grid = new JkCabinetGrid();
+            grid.setCreateDate(new Date());
+            grid.setEditDate(jkCabinet.getCreateDate());
+            grid.setCreator(loginUserInfo.getId());
+            grid.setEditor(loginUserInfo.getId());
+            grid.setIsdeleted(Constants.ZERO);
+            grid.setStatus(Constants.ZERO);
+            grid.setCabinetId(jkCabinet.getId());
+            if(Constants.equalsInteger(jkCabinet.getNoType(),Constants.ZERO)){
+                grid.setCode(StringUtils.leftPad(startNo.toString(),maxNum.toString().length()+1,"0"));
+            }else{
+                grid.setCode(jkCabinet.getNoPrefix() +  StringUtils.leftPad(startNo.toString(),jkCabinet.getNoLength(),"0"));
+            }
+
+            jkCabinetGridList.add(grid);
+            startNo = startNo + 1;
+        }
+        jkCabinetGridMapper.insert(jkCabinetGridList);
     }
 
     @Override
     public void deleteById(Integer id) {
-        jkCabinetMapper.deleteById(id);
+        JkCabinet jkCabinet = jkCabinetMapper.selectById(id);
+        if(Constants.equalsInteger(jkCabinet.getStatus(),Constants.ZERO)){
+           throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"闈炵鐢ㄦ暟鎹紝鏃犳硶杩涜鍒犻櫎");
+        }
+        //鏌ヨ閽ュ寵鏌滀笅鐨勬煖鏍间俊鎭�
+        List<JkCabinetGrid> jkCabinetGridList = jkCabinetGridMapper.selectList(new QueryWrapper<JkCabinetGrid>().lambda().eq(JkCabinetGrid::getIsdeleted,Constants.ZERO)
+                .eq(JkCabinetGrid::getCabinetId,jkCabinet.getId())
+        );
+        if(Objects.nonNull(jkCabinetGridList)){
+            jkCabinetGridMapper.update(null,new UpdateWrapper<JkCabinetGrid>().lambda().set(JkCabinetGrid::getIsdeleted,Constants.ONE)
+                    .in(JkCabinetGrid::getId,jkCabinetGridList.stream().map(i->i.getId()).collect(Collectors.toList()))
+            );
+            List<Integer> keyIdList = jkCabinetGridList.stream().filter(i->Objects.nonNull(i.getKeyId())).map(i->i.getKeyId()).collect(Collectors.toList());
+            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(keyIdList)){
+                jkKeysMapper.update(null,new UpdateWrapper<JkKeys>().lambda()
+                        .set(JkKeys::getStatus,Constants.ZERO)
+                        .in(JkKeys::getId,keyIdList)
+                );
+            }
+        }
+        jkCabinetMapper.update(null,new UpdateWrapper<JkCabinet>().lambda()
+                .set(JkCabinet::getIsdeleted,Constants.ONE)
+                .eq(JkCabinet::getId,jkCabinet.getId()));
     }
 
     @Override
@@ -54,8 +170,59 @@
 
     @Override
     public void updateById(JkCabinet jkCabinet) {
+        if(Objects.isNull(jkCabinet)
+                || Objects.isNull(jkCabinet.getId())
+                || StringUtils.isBlank(jkCabinet.getCode())
+                || StringUtils.isBlank(jkCabinet.getName())
+                || StringUtils.isBlank(jkCabinet.getDevId())
+                || StringUtils.isBlank(jkCabinet.getLinkAddr())
+                || StringUtils.isBlank(jkCabinet.getCode())
+                || CollectionUtils.isEmpty(jkCabinet.getManagerIdList())
+                || CollectionUtils.isEmpty(jkCabinet.getAuthMemberIdList())
+                || Objects.isNull(jkCabinet.getPort())
+                || Objects.isNull(jkCabinet.getDoubleAuth())
+        ){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        jkCabinet.setRowNum(null);
+        jkCabinet.setColumnNum(null);
+        jkCabinet.setSortType(null);
+        jkCabinet.setNoType(null);
+        jkCabinet.setNoIndex(null);
+        jkCabinet.setNoLength(null);
+        jkCabinet.setNoPrefix(null);
+        //鏌ヨ缂栧彿鏄惁閲嶅
+        if(jkCabinetMapper.selectCount(new QueryWrapper<JkCabinet>().lambda().ne(JkCabinet::getId,jkCabinet.getId()).eq(JkCabinet::getCode,jkCabinet.getCode()).eq(JkCabinet::getIsdeleted,Constants.ZERO))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閽ュ寵鏌滆澶囩紪鍙峰凡瀛樺湪锛�");
+        }
+        if(jkCabinetMapper.selectCount(new QueryWrapper<JkCabinet>().lambda().ne(JkCabinet::getId,jkCabinet.getId()).eq(JkCabinet::getDevId,jkCabinet.getDevId()).eq(JkCabinet::getIsdeleted,Constants.ZERO))>Constants.ZERO){
+            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"閽ュ寵鏌滆澶嘔D宸插瓨鍦紒");
+        }
+        LoginUserInfo loginUserInfo = jkCabinet.getLoginUserInfo();
+        jkCabinet.setEditDate(new Date());
+        jkCabinet.setEditor(loginUserInfo.getId());
+        if(StringUtils.isNotBlank(jkCabinet.getJwd())&&jkCabinet.getJwd().split(",").length>Constants.ONE){
+            jkCabinet.setLongitude(new BigDecimal(jkCabinet.getJwd().split(",")[Constants.ZERO]));
+            jkCabinet.setLatitude(new BigDecimal(jkCabinet.getJwd().split(",")[Constants.ONE]));
+        }
+        jkCabinet.setManagerId(String.join(",",jkCabinet.getManagerIdList()));
+        jkCabinet.setAuthMemberId(String.join(",",jkCabinet.getAuthMemberIdList()));
         jkCabinetMapper.updateById(jkCabinet);
     }
+
+    @Override
+    public void updateStatusById(JkCabinet jkCabinet) {
+        if(Objects.isNull(jkCabinet)
+        || Objects.isNull(jkCabinet.getId())
+        || Objects.isNull(jkCabinet.getStatus())){
+            throw new BusinessException(ResponseStatus.BAD_REQUEST);
+        }
+        jkCabinetMapper.update(null,new UpdateWrapper<JkCabinet>()
+                .lambda().set(JkCabinet::getStatus,jkCabinet.getStatus())
+                .set(JkCabinet::getEditDate, DateUtil.getCurrDateTime())
+                .eq(JkCabinet::getId,jkCabinet.getId()));
+    }
+
 
     @Override
     public void updateByIdInBatch(List<JkCabinet> jkCabinets) {
@@ -72,6 +239,18 @@
         return jkCabinetMapper.selectById(id);
     }
 
+
+    @Override
+    public JkCabinet getDetail(Integer id){
+        JkCabinet jkCabinet = jkCabinetMapper.selectById(id);
+        if(Objects.nonNull(jkCabinet.getLongitude())
+            && Objects.nonNull(jkCabinet.getLatitude())){
+            jkCabinet.setJwd(jkCabinet.getLongitude() + "," + jkCabinet.getLatitude());
+        }
+        jkCabinet.setGridNum(jkCabinet.getColumnNum()*jkCabinet.getRowNum());
+        return jkCabinet;
+    }
+
     @Override
     public JkCabinet findOne(JkCabinet jkCabinet) {
         QueryWrapper<JkCabinet> wrapper = new QueryWrapper<>(jkCabinet);
@@ -80,6 +259,8 @@
 
     @Override
     public List<JkCabinet> findList(JkCabinet jkCabinet) {
+        jkCabinet.setIsdeleted(Constants.ZERO);
+        jkCabinet.setStatus(Constants.ZERO);
         QueryWrapper<JkCabinet> wrapper = new QueryWrapper<>(jkCabinet);
         return jkCabinetMapper.selectList(wrapper);
     }
@@ -87,103 +268,20 @@
     @Override
     public PageData<JkCabinet> findPage(PageWrap<JkCabinet> pageWrap) {
         IPage<JkCabinet> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
-        QueryWrapper<JkCabinet> queryWrapper = new QueryWrapper<>();
         Utils.MP.blankToNull(pageWrap.getModel());
-        if (pageWrap.getModel().getId() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getId, pageWrap.getModel().getId());
+        JkCabinet model = pageWrap.getModel();
+        IPage<JkCabinet> iPage = jkCabinetMapper.selectPage(page, new QueryWrapper<JkCabinet>()
+                .lambda()
+                .eq(JkCabinet::getIsdeleted,Constants.ZERO)
+                .like(StringUtils.isNotBlank(model.getName()),JkCabinet::getName, model.getName())
+                .like(StringUtils.isNotBlank(model.getCode()),JkCabinet::getCode, model.getCode())
+                .eq(Objects.nonNull(model.getStatus()),JkCabinet::getStatus, model.getStatus())
+                .eq(Objects.nonNull(model.getRunStatus()),JkCabinet::getRunStatus, model.getRunStatus())
+        );
+        for (JkCabinet jkCabinet:iPage.getRecords()) {
+            jkCabinet.setGridNum(jkCabinet.getColumnNum()*jkCabinet.getRowNum());
         }
-        if (pageWrap.getModel().getCreator() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getCreator, pageWrap.getModel().getCreator());
-        }
-        if (pageWrap.getModel().getCreateDate() != null) {
-            queryWrapper.lambda().ge(JkCabinet::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
-            queryWrapper.lambda().le(JkCabinet::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
-        }
-        if (pageWrap.getModel().getEditor() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getEditor, pageWrap.getModel().getEditor());
-        }
-        if (pageWrap.getModel().getEditDate() != null) {
-            queryWrapper.lambda().ge(JkCabinet::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
-            queryWrapper.lambda().le(JkCabinet::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
-        }
-        if (pageWrap.getModel().getIsdeleted() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getIsdeleted, pageWrap.getModel().getIsdeleted());
-        }
-        if (pageWrap.getModel().getInfo() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getInfo, pageWrap.getModel().getInfo());
-        }
-        if (pageWrap.getModel().getCode() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getCode, pageWrap.getModel().getCode());
-        }
-        if (pageWrap.getModel().getName() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getName, pageWrap.getModel().getName());
-        }
-        if (pageWrap.getModel().getDevId() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getDevId, pageWrap.getModel().getDevId());
-        }
-        if (pageWrap.getModel().getSerialNo() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getSerialNo, pageWrap.getModel().getSerialNo());
-        }
-        if (pageWrap.getModel().getLinkAddr() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getLinkAddr, pageWrap.getModel().getLinkAddr());
-        }
-        if (pageWrap.getModel().getStatus() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getStatus, pageWrap.getModel().getStatus());
-        }
-        if (pageWrap.getModel().getPort() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getPort, pageWrap.getModel().getPort());
-        }
-        if (pageWrap.getModel().getManagerId() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getManagerId, pageWrap.getModel().getManagerId());
-        }
-        if (pageWrap.getModel().getUseTime() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getUseTime, pageWrap.getModel().getUseTime());
-        }
-        if (pageWrap.getModel().getDoubleAuth() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getDoubleAuth, pageWrap.getModel().getDoubleAuth());
-        }
-        if (pageWrap.getModel().getAuthMemberId() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getAuthMemberId, pageWrap.getModel().getAuthMemberId());
-        }
-        if (pageWrap.getModel().getRowNum() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getRowNum, pageWrap.getModel().getRowNum());
-        }
-        if (pageWrap.getModel().getColumnNum() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getColumnNum, pageWrap.getModel().getColumnNum());
-        }
-        if (pageWrap.getModel().getHaertTime() != null) {
-            queryWrapper.lambda().ge(JkCabinet::getHaertTime, Utils.Date.getStart(pageWrap.getModel().getHaertTime()));
-            queryWrapper.lambda().le(JkCabinet::getHaertTime, Utils.Date.getEnd(pageWrap.getModel().getHaertTime()));
-        }
-        if (pageWrap.getModel().getLacation() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getLacation, pageWrap.getModel().getLacation());
-        }
-        if (pageWrap.getModel().getLongitude() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getLongitude, pageWrap.getModel().getLongitude());
-        }
-        if (pageWrap.getModel().getLatitude() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getLatitude, pageWrap.getModel().getLatitude());
-        }
-        if (pageWrap.getModel().getNoType() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getNoType, pageWrap.getModel().getNoType());
-        }
-        if (pageWrap.getModel().getNoPrefix() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getNoPrefix, pageWrap.getModel().getNoPrefix());
-        }
-        if (pageWrap.getModel().getNoLength() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getNoLength, pageWrap.getModel().getNoLength());
-        }
-        if (pageWrap.getModel().getNoIndex() != null) {
-            queryWrapper.lambda().eq(JkCabinet::getNoIndex, pageWrap.getModel().getNoIndex());
-        }
-        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
-            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
-                queryWrapper.orderByDesc(sortData.getProperty());
-            } else {
-                queryWrapper.orderByAsc(sortData.getProperty());
-            }
-        }
-        return PageData.from(jkCabinetMapper.selectPage(page, queryWrapper));
+        return PageData.from(iPage);
     }
 
     @Override
@@ -191,4 +289,11 @@
         QueryWrapper<JkCabinet> wrapper = new QueryWrapper<>(jkCabinet);
         return jkCabinetMapper.selectCount(wrapper);
     }
+
+
+
+
+
+
+
 }

--
Gitblit v1.9.3