feat:智能柜货柜生成
This commit is contained in:
1 parent
e962da405b
commit
b2d7db1f52
13 files changed
+276
-20
No files matched your search
@@ -71,6 +71,32 @@ CREATE TABLE hard_door_manager
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_general_ci COMMENT ='柜子设备管理';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for hard_door_cabinet
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `hard_door_cabinet`;
|
||||
CREATE TABLE hard_door_cabinet
|
||||
(
|
||||
id bigint NOT NULL COMMENT '编号',
|
||||
hard_door_id bigint NOT NULL COMMENT '智能柜编号',
|
||||
cabinet_no int NOT NULL COMMENT '货柜编号(1,2)',
|
||||
is_lock_online varchar(16) NOT NULL COMMENT '锁在线1:在线;2:离线;',
|
||||
lock_status int NOT NULL COMMENT '锁状态1:开锁;2:关锁;',
|
||||
door_status int NOT NULL COMMENT '门状态1:门关;2:门开',
|
||||
sale_status int NOT NULL COMMENT '货柜售卖状态1:在售;2:停售',
|
||||
qr_code varchar(256) DEFAULT NULL COMMENT '二维码',
|
||||
# 其他字段
|
||||
create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
|
||||
create_time datetime DEFAULT NULL COMMENT '创建时间',
|
||||
update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人',
|
||||
update_time datetime DEFAULT NULL COMMENT '修改时间',
|
||||
del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记',
|
||||
tenant_id bigint DEFAULT NULL COMMENT '租户ID',
|
||||
PRIMARY KEY (id)
|
||||
) ENGINE = InnoDB
|
||||
DEFAULT CHARSET = utf8mb4
|
||||
COLLATE = utf8mb4_general_ci COMMENT ='智能柜货柜';
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for hard_door_flow
|
||||
-- ----------------------------
|
||||
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
package com.bsd.pjcloud.hard.api.constant;
|
||||
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* 硬件授权类型
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
@Getter
|
||||
public enum HardAuthTypeEnum {
|
||||
|
||||
HARD_DDOR_AUTH("10", "智能柜授权"),
|
||||
;
|
||||
private final String type;
|
||||
private final String description;
|
||||
|
||||
public static HardAuthTypeEnum valueOfByType(String type) {
|
||||
if (ObjectUtil.isEmpty(type)) return null;
|
||||
return Arrays.stream(values()).filter(v -> ObjectUtil.equals(type, v.getType())).findFirst().get();
|
||||
}
|
||||
|
||||
}
|
||||
+8
-1
@@ -1,6 +1,7 @@
|
||||
package com.bsd.pjcloud.hard.api.dto;
|
||||
|
||||
import jakarta.validation.constraints.NotEmpty;
|
||||
import jakarta.validation.constraints.NotNull;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@@ -14,9 +15,15 @@ public class HardAuthAppDto {
|
||||
/**
|
||||
* 智能柜设备id
|
||||
*/
|
||||
@NotEmpty(message = "智能柜设备id不能为空")
|
||||
@NotNull(message = "智能柜设备id不能为空")
|
||||
private Long doorHardId;
|
||||
|
||||
/**
|
||||
* 货柜编号
|
||||
*/
|
||||
@NotNull(message = "货柜编号不能为空")
|
||||
private Integer cabinetNo;
|
||||
|
||||
/**
|
||||
* 是否授权
|
||||
*/
|
||||
|
||||
+115
@@ -0,0 +1,115 @@
|
||||
package com.bsd.pjcloud.hard.api.entity.manager;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.baomidou.mybatisplus.extension.activerecord.Model;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import com.bsd.pjcloud.common.core.util.TenantTable;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 智能柜货柜
|
||||
*
|
||||
* @author dzc
|
||||
* @date 2025-04-15 18:28:46
|
||||
*/
|
||||
@Data
|
||||
@TenantTable
|
||||
@TableName("hard_door_cabinet")
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@Schema(description = "智能柜货柜")
|
||||
public class HardDoorCabinetEntity extends Model<HardDoorCabinetEntity> {
|
||||
|
||||
|
||||
/**
|
||||
* 编号
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@Schema(description="编号")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 智能柜编号
|
||||
*/
|
||||
@Schema(description="智能柜编号")
|
||||
private Long hardDoorId;
|
||||
|
||||
/**
|
||||
* 货柜编号(1,2)
|
||||
*/
|
||||
@Schema(description="货柜编号(1,2)")
|
||||
private Integer cabinetNo;
|
||||
|
||||
/**
|
||||
* 锁在线1:在线;2:离线;
|
||||
*/
|
||||
@Schema(description="锁在线1:在线;2:离线;")
|
||||
private String isLockOnline;
|
||||
|
||||
/**
|
||||
* 锁状态1:开锁;2:关锁;
|
||||
*/
|
||||
@Schema(description="锁状态1:开锁;2:关锁;")
|
||||
private Integer lockStatus;
|
||||
|
||||
/**
|
||||
* 门状态1:门关;2:门开
|
||||
*/
|
||||
@Schema(description="门状态1:门关;2:门开")
|
||||
private Integer doorStatus;
|
||||
|
||||
/**
|
||||
* 货柜售卖状态1:在售;2:停售
|
||||
*/
|
||||
@Schema(description="货柜售卖状态1:在售;2:停售")
|
||||
private Integer saleStatus;
|
||||
|
||||
/**
|
||||
* 二维码
|
||||
*/
|
||||
@Schema(description="二维码")
|
||||
private String qrCode;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description="创建人")
|
||||
private String createBy;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description="创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
/**
|
||||
* 修改人
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(description="修改人")
|
||||
private String updateBy;
|
||||
|
||||
/**
|
||||
* 修改时间
|
||||
*/
|
||||
@TableField(fill = FieldFill.INSERT_UPDATE)
|
||||
@Schema(description="修改时间")
|
||||
private LocalDateTime updateTime;
|
||||
|
||||
/**
|
||||
* 删除标记
|
||||
*/
|
||||
@TableLogic
|
||||
@TableField(fill = FieldFill.INSERT)
|
||||
@Schema(description="删除标记")
|
||||
private String delFlag;
|
||||
|
||||
/**
|
||||
* 租户ID
|
||||
*/
|
||||
@Schema(description="租户ID")
|
||||
private Long tenantId;
|
||||
}
|
||||
+2
-2
@@ -14,6 +14,7 @@ import com.bsd.pjcloud.hard.api.dto.HardAuthDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardAuthEntity;
|
||||
import com.bsd.pjcloud.hard.api.vo.HardAuthVo;
|
||||
import com.bsd.pjcloud.hard.service.HardAuthService;
|
||||
import jakarta.validation.Valid;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import com.bsd.pjcloud.common.excel.annotation.ResponseExcel;
|
||||
import io.swagger.v3.oas.annotations.security.SecurityRequirement;
|
||||
@@ -42,8 +43,7 @@ public class HardAuthController {
|
||||
|
||||
@Operation(summary = "app智能柜授权", description = "app智能柜授权")
|
||||
@PostMapping("/app/auth-hard-door")
|
||||
@PreAuthorize("@pms.hasPermission('hard_hardAuth_view')")
|
||||
public R appAuthHardDoor(@RequestBody HardAuthAppDto dto) {
|
||||
public R appAuthHardDoor(@Valid @RequestBody HardAuthAppDto dto) {
|
||||
PjcloudUser user = SecurityUtils.getUser();
|
||||
dto.setUserId(user.getId());
|
||||
return R.ok(hardAuthService.appAuthHardDoor(dto));
|
||||
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
package com.bsd.pjcloud.hard.mapper.manager;
|
||||
|
||||
import com.bsd.pjcloud.common.data.datascope.PjcloudBaseMapper;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
|
||||
@Mapper
|
||||
public interface HardDoorCabinetMapper extends PjcloudBaseMapper<HardDoorCabinetEntity> {
|
||||
|
||||
|
||||
}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package com.bsd.pjcloud.hard.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity;
|
||||
|
||||
public interface HardDoorCabinetService extends IService<HardDoorCabinetEntity> {
|
||||
|
||||
}
|
||||
+5
@@ -31,4 +31,9 @@ public interface HardDoorManagerService extends IService<HardDoorManagerEntity>
|
||||
* 音量修改
|
||||
*/
|
||||
void changeVolume(HardChangeVolume dto);
|
||||
|
||||
/**
|
||||
* 校验设备和货柜编号
|
||||
*/
|
||||
HardDoorManagerVo checkDeviceAndCabinet(Long hardDoorId, Integer cabinetNo);
|
||||
}
|
||||
+19
-1
@@ -6,24 +6,31 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.admin.api.feign.RemoteUserService;
|
||||
import com.bsd.pjcloud.admin.api.utils.DataUtil;
|
||||
import com.bsd.pjcloud.admin.api.vo.UserVO;
|
||||
import com.bsd.pjcloud.common.core.constant.enums.YesNoEnum;
|
||||
import com.bsd.pjcloud.common.core.util.CollectionUtils;
|
||||
import com.bsd.pjcloud.common.core.util.R;
|
||||
import com.bsd.pjcloud.common.data.datascope.DataScope;
|
||||
import com.bsd.pjcloud.hard.api.constant.HardAuthTypeEnum;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardAuthAppDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.HardAuthDto;
|
||||
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
|
||||
import com.bsd.pjcloud.hard.api.entity.HardAuthEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
|
||||
import com.bsd.pjcloud.hard.api.utils.HardUtil;
|
||||
import com.bsd.pjcloud.hard.api.vo.HardAuthVo;
|
||||
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo;
|
||||
import com.bsd.pjcloud.hard.mapper.HardAuthMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.manager.HardDoorManagerMapper;
|
||||
import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper;
|
||||
import com.bsd.pjcloud.hard.service.HardAuthService;
|
||||
import com.bsd.pjcloud.hard.service.HardDoorManagerService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -36,7 +43,10 @@ import java.util.List;
|
||||
@Service
|
||||
public class HardAuthServiceImpl extends ServiceImpl<HardAuthMapper, HardAuthEntity> implements HardAuthService {
|
||||
|
||||
private final HardDoorManagerService hardDoorManagerService;
|
||||
|
||||
private final HardManagerMapper hardManagerMapper;
|
||||
private final HardDoorManagerMapper hardDoorManagerMapper;
|
||||
|
||||
private final RemoteUserService remoteUserService;
|
||||
|
||||
@@ -52,10 +62,18 @@ public class HardAuthServiceImpl extends ServiceImpl<HardAuthMapper, HardAuthEnt
|
||||
*/
|
||||
@Override
|
||||
public Long appAuthHardDoor(HardAuthAppDto dto) {
|
||||
// 检验智能柜
|
||||
HardDoorManagerVo hardDoorDetail = hardDoorManagerService.checkDeviceAndCabinet(dto.getDoorHardId(), dto.getCabinetNo());
|
||||
HardAuthEntity insetObj = HardAuthEntity.builder()
|
||||
.userId(dto.getUserId())
|
||||
.hardId(hardDoorDetail.getHardId())
|
||||
.authType(HardAuthTypeEnum.HARD_DDOR_AUTH.getType())
|
||||
.authStatus(dto.getAuthStatus())
|
||||
.authTime(LocalDateTime.now())
|
||||
.isDone(YesNoEnum.NO.getCode())
|
||||
.build();
|
||||
return 0L;
|
||||
baseMapper.insert(insetObj);
|
||||
return insetObj.getId();
|
||||
}
|
||||
|
||||
private void disposeList(List<HardAuthVo> list, HardAuthDto dto) {
|
||||
|
||||
+2
-16
@@ -79,7 +79,7 @@ public class HardDoorFlowServiceImpl extends ServiceImpl<HardDoorFlowMapper, Har
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void openDoorAccess(HardDoorFlowOpenDto dto) {
|
||||
// 查询智能柜
|
||||
HardDoorManagerVo doorDetail = checkDeviceAndCabinet(dto.getHardDoorId(), dto.getCabinetNo());
|
||||
HardDoorManagerVo doorDetail = hardDoorManagerService.checkDeviceAndCabinet(dto.getHardDoorId(), dto.getCabinetNo());
|
||||
getSelf().openDoor(dto, doorDetail);
|
||||
}
|
||||
|
||||
@@ -89,7 +89,7 @@ public class HardDoorFlowServiceImpl extends ServiceImpl<HardDoorFlowMapper, Har
|
||||
@Override
|
||||
public void closeAccess(HardDoorFlowOpenDto dto) {
|
||||
// 查询智能柜
|
||||
HardDoorManagerVo doorDetail = checkDeviceAndCabinet(dto.getHardDoorId(), dto.getCabinetNo());
|
||||
HardDoorManagerVo doorDetail = hardDoorManagerService.checkDeviceAndCabinet(dto.getHardDoorId(), dto.getCabinetNo());
|
||||
// 请求关门
|
||||
DoorOpenDto openDto = BeanUtil.toBean(dto, DoorOpenDto.class);
|
||||
openDto.setDeviceCode(doorDetail.getDeviceCode());
|
||||
@@ -180,20 +180,6 @@ public class HardDoorFlowServiceImpl extends ServiceImpl<HardDoorFlowMapper, Har
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验设备和货柜编号
|
||||
*/
|
||||
private HardDoorManagerVo checkDeviceAndCabinet(Long hardDoorId, Integer cabinetNo) {
|
||||
// 查询智能柜
|
||||
HardDoorManagerVo doorDetail = hardDoorManagerService.getByHardId(hardDoorId);
|
||||
if (ObjectUtil.isEmpty(doorDetail)) throw new RuntimeException("智能柜不存在");
|
||||
List<DoorStatusVo.Cabinet> cabinetList = JSONUtil.toList(doorDetail.getCabinetList(), DoorStatusVo.Cabinet.class);
|
||||
if (ObjectUtil.isEmpty(cabinetList)) throw new RuntimeException("货柜不存在");
|
||||
if (ObjectUtil.isEmpty(cabinetList.stream().filter(i -> ObjectUtil.equals(i.getCabinetNo(), cabinetNo)).findFirst().orElse(null))) {
|
||||
throw new RuntimeException("货柜不存在");
|
||||
}
|
||||
return doorDetail;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断货柜状态
|
||||
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
package com.bsd.pjcloud.hard.service.impl.manager;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity;
|
||||
import com.bsd.pjcloud.hard.mapper.manager.HardDoorCabinetMapper;
|
||||
import com.bsd.pjcloud.hard.service.HardDoorCabinetService;
|
||||
import org.springframework.stereotype.Service;
|
||||
/**
|
||||
* 智能柜货柜
|
||||
*/
|
||||
@Service
|
||||
public class HardDoorCabinetServiceImpl extends ServiceImpl<HardDoorCabinetMapper, HardDoorCabinetEntity> implements HardDoorCabinetService {
|
||||
|
||||
}
|
||||
+17
@@ -24,6 +24,8 @@ import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 智能柜设置
|
||||
*/
|
||||
@@ -163,4 +165,19 @@ public class HardDoorManagerServiceImpl extends ServiceImpl<HardDoorManagerMappe
|
||||
updateObj.setMediaVolume(dto.getMediaVolume());
|
||||
baseMapper.updateById(updateObj);
|
||||
}
|
||||
|
||||
/**
|
||||
* 校验设备和货柜编号
|
||||
*/
|
||||
public HardDoorManagerVo checkDeviceAndCabinet(Long hardDoorId, Integer cabinetNo) {
|
||||
// 查询智能柜
|
||||
HardDoorManagerVo doorDetail = getByHardId(hardDoorId);
|
||||
if (ObjectUtil.isEmpty(doorDetail)) throw new RuntimeException("智能柜不存在");
|
||||
List<DoorStatusVo.Cabinet> cabinetList = JSONUtil.toList(doorDetail.getCabinetList(), DoorStatusVo.Cabinet.class);
|
||||
if (ObjectUtil.isEmpty(cabinetList)) throw new RuntimeException("货柜不存在");
|
||||
if (ObjectUtil.isEmpty(cabinetList.stream().filter(i -> ObjectUtil.equals(i.getCabinetNo(), cabinetNo)).findFirst().orElse(null))) {
|
||||
throw new RuntimeException("货柜不存在");
|
||||
}
|
||||
return doorDetail;
|
||||
}
|
||||
}
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||
|
||||
<mapper namespace="com.bsd.pjcloud.hard.mapper.manager.HardDoorCabinetMapper">
|
||||
|
||||
<resultMap id="hardDoorCabinetMap" type="com.bsd.pjcloud.hard.api.entity.manager.HardDoorCabinetEntity">
|
||||
<id property="id" column="id"/>
|
||||
<result property="hardDoorId" column="hard_door_id"/>
|
||||
<result property="cabinetNo" column="cabinet_no"/>
|
||||
<result property="isLockOnline" column="is_lock_online"/>
|
||||
<result property="lockStatus" column="lock_status"/>
|
||||
<result property="doorStatus" column="door_status"/>
|
||||
<result property="saleStatus" column="sale_status"/>
|
||||
<result property="qrCode" column="qr_code"/>
|
||||
<result property="createBy" column="create_by"/>
|
||||
<result property="createTime" column="create_time"/>
|
||||
<result property="updateBy" column="update_by"/>
|
||||
<result property="updateTime" column="update_time"/>
|
||||
<result property="delFlag" column="del_flag"/>
|
||||
<result property="tenantId" column="tenant_id"/>
|
||||
</resultMap>
|
||||
</mapper>
|
||||
Reference in new issue
Block a user