feat(system): 新增设备信息管理功能
- 添加设备信息相关实体类、控制器、服务类和Mapper - 实现设备信息的批量保存、编辑和删除功能 - 添加通过地图ID获取设备列表的接口 - 优化停车点相关代码,统一使用positionMapId和positionMapItemId字段 - 新增设备点位数据处理策略
This commit is contained in:
parent
1eae75bb96
commit
4d49a7b7e0
@ -13,7 +13,7 @@ import lombok.Getter;
|
||||
public enum NodeTypeEnum {
|
||||
ROUTE(1, "路径点位"),
|
||||
WARE(2, "库位点"),
|
||||
EQUIPMENT(3, "设备点"),
|
||||
DEVICE(3, "设备点"),
|
||||
PARKING(4, "停车点"),
|
||||
CHANGE(5, "区域变更点"),
|
||||
WAIT(6, "等待点");
|
||||
|
@ -72,6 +72,13 @@ public class DeviceInformationController {
|
||||
return success(BeanUtils.toBean(information, DeviceInformationRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/list")
|
||||
@Operation(summary = "获得设备信息列表")
|
||||
public CommonResult<List<DeviceInformationRespVO>> getList(@Valid DeviceInformationPageReqVO pageReqVO) {
|
||||
List<DeviceInformationDO> list = informationService.getList(pageReqVO);
|
||||
return success(BeanUtils.toBean(list, DeviceInformationRespVO.class));
|
||||
}
|
||||
|
||||
@GetMapping("/page")
|
||||
@Operation(summary = "获得设备信息分页")
|
||||
@PreAuthorize("@ss.hasPermission('device:information:query')")
|
||||
|
@ -1,6 +1,9 @@
|
||||
package cn.iocoder.yudao.module.system.controller.admin.information.vo;
|
||||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
@ -14,6 +17,23 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@ToString(callSuper = true)
|
||||
public class DeviceInformationPageReqVO extends PageParam {
|
||||
@Schema(description = "地图id", example = "6609")
|
||||
private Long positionMapId;
|
||||
|
||||
@Schema(description = "地图子表节点id", example = "23591")
|
||||
private Long positionMapItemId;
|
||||
|
||||
@Schema(description = "库位坐标x轴")
|
||||
private String locationX;
|
||||
|
||||
@Schema(description = "库位坐标y轴")
|
||||
private String locationY;
|
||||
|
||||
@Schema(description = "宽度")
|
||||
private BigDecimal locationWide;
|
||||
|
||||
@Schema(description = "深度")
|
||||
private BigDecimal locationDeep;
|
||||
|
||||
@Schema(description = "设备类型(1:充电桩、2:输送线、 3:码垛机、4:拆垛机、5:自动门、6:提升机、7:信号灯、8:按钮盒)", example = "2")
|
||||
private Integer deviceType;
|
||||
@ -24,6 +44,9 @@ public class DeviceInformationPageReqVO extends PageParam {
|
||||
@Schema(description = "mac地址")
|
||||
private String macAddress;
|
||||
|
||||
@Schema(description = "设备在地图上图标")
|
||||
private String mapImageUrl;
|
||||
|
||||
@Schema(description = "上传图片附件", example = "https://www.iocoder.cn")
|
||||
private String url;
|
||||
|
||||
@ -47,4 +70,4 @@ public class DeviceInformationPageReqVO extends PageParam {
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.system.controller.admin.information.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import java.time.LocalDateTime;
|
||||
@ -16,6 +18,30 @@ public class DeviceInformationRespVO {
|
||||
@ExcelProperty("主键ID")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "地图id", example = "6609")
|
||||
@ExcelProperty("地图id")
|
||||
private Long positionMapId;
|
||||
|
||||
@Schema(description = "地图子表节点id", example = "23591")
|
||||
@ExcelProperty("地图子表节点id")
|
||||
private Long positionMapItemId;
|
||||
|
||||
@Schema(description = "库位坐标x轴")
|
||||
@ExcelProperty("库位坐标x轴")
|
||||
private String locationX;
|
||||
|
||||
@Schema(description = "库位坐标y轴")
|
||||
@ExcelProperty("库位坐标y轴")
|
||||
private String locationY;
|
||||
|
||||
@Schema(description = "宽度")
|
||||
@ExcelProperty("宽度")
|
||||
private BigDecimal locationWide;
|
||||
|
||||
@Schema(description = "深度")
|
||||
@ExcelProperty("深度")
|
||||
private BigDecimal locationDeep;
|
||||
|
||||
@Schema(description = "设备类型(1:充电桩、2:输送线、 3:码垛机、4:拆垛机、5:自动门、6:提升机、7:信号灯、8:按钮盒)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||
@ExcelProperty("设备类型(1:充电桩、2:输送线、 3:码垛机、4:拆垛机、5:自动门、6:提升机、7:信号灯、8:按钮盒)")
|
||||
private Integer deviceType;
|
||||
@ -28,6 +54,10 @@ public class DeviceInformationRespVO {
|
||||
@ExcelProperty("mac地址")
|
||||
private String macAddress;
|
||||
|
||||
@Schema(description = "设备在地图上图标")
|
||||
@ExcelProperty("设备在地图上图标")
|
||||
private String mapImageUrl;
|
||||
|
||||
@Schema(description = "上传图片附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
|
||||
@ExcelProperty("上传图片附件")
|
||||
private String url;
|
||||
@ -56,4 +86,4 @@ public class DeviceInformationRespVO {
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -2,6 +2,8 @@ package cn.iocoder.yudao.module.system.controller.admin.information.vo;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.*;
|
||||
import javax.validation.constraints.*;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
@ -14,6 +16,24 @@ public class DeviceInformationSaveReqVO {
|
||||
@Schema(description = "主键ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "14335")
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "地图id", example = "6609")
|
||||
private Long positionMapId;
|
||||
|
||||
@Schema(description = "地图子表节点id", example = "23591")
|
||||
private Long positionMapItemId;
|
||||
|
||||
@Schema(description = "库位坐标x轴")
|
||||
private String locationX;
|
||||
|
||||
@Schema(description = "库位坐标y轴")
|
||||
private String locationY;
|
||||
|
||||
@Schema(description = "宽度")
|
||||
private BigDecimal locationWide;
|
||||
|
||||
@Schema(description = "深度")
|
||||
private BigDecimal locationDeep;
|
||||
|
||||
@Schema(description = "设备类型(1:充电桩、2:输送线、 3:码垛机、4:拆垛机、5:自动门、6:提升机、7:信号灯、8:按钮盒)", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
|
||||
@NotNull(message = "设备类型不能为空")
|
||||
private Integer deviceType;
|
||||
@ -24,6 +44,9 @@ public class DeviceInformationSaveReqVO {
|
||||
@Schema(description = "mac地址")
|
||||
private String macAddress;
|
||||
|
||||
@Schema(description = "设备在地图上图标")
|
||||
private String mapImageUrl;
|
||||
|
||||
@Schema(description = "上传图片附件", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn")
|
||||
private String url;
|
||||
|
||||
@ -42,4 +65,4 @@ public class DeviceInformationSaveReqVO {
|
||||
@Schema(description = "设备最后通讯时间")
|
||||
private LocalDateTime deviceLastTime;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -17,10 +17,10 @@ import static cn.iocoder.yudao.framework.common.util.date.DateUtils.FORMAT_YEAR_
|
||||
public class ParkingSpotPageReqVO extends PageParam {
|
||||
|
||||
@Schema(description = "地图id", example = "6609")
|
||||
private Long mapId;
|
||||
private Long positionMapId;
|
||||
|
||||
@Schema(description = "地图字表节点id", example = "23591")
|
||||
private Long mapItemId;
|
||||
@Schema(description = "地图子表节点id", example = "23591")
|
||||
private Long positionMapItemId;
|
||||
|
||||
@Schema(description = "库位坐标x轴")
|
||||
private String locationX;
|
||||
@ -47,4 +47,4 @@ public class ParkingSpotPageReqVO extends PageParam {
|
||||
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
|
||||
private LocalDateTime[] createTime;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -19,11 +19,11 @@ public class ParkingSpotRespVO {
|
||||
|
||||
@Schema(description = "地图id", example = "6609")
|
||||
@ExcelProperty("地图id")
|
||||
private Long mapId;
|
||||
private Long positionMapId;
|
||||
|
||||
@Schema(description = "地图字表节点id", example = "23591")
|
||||
@ExcelProperty("地图字表节点id")
|
||||
private Long mapItemId;
|
||||
@Schema(description = "地图子表节点id", example = "23591")
|
||||
@ExcelProperty("地图子表节点id")
|
||||
private Long positionMapItemId;
|
||||
|
||||
@Schema(description = "库位坐标x轴")
|
||||
@ExcelProperty("库位坐标x轴")
|
||||
@ -57,4 +57,4 @@ public class ParkingSpotRespVO {
|
||||
@ExcelProperty("创建时间")
|
||||
private LocalDateTime createTime;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -14,10 +14,10 @@ public class ParkingSpotSaveReqVO {
|
||||
private Long id;
|
||||
|
||||
@Schema(description = "地图id", example = "6609")
|
||||
private Long mapId;
|
||||
private Long positionMapId;
|
||||
|
||||
@Schema(description = "地图字表节点id", example = "23591")
|
||||
private Long mapItemId;
|
||||
@Schema(description = "地图子表节点id", example = "23591")
|
||||
private Long positionMapItemId;
|
||||
|
||||
@Schema(description = "库位坐标x轴")
|
||||
private String locationX;
|
||||
|
@ -1,12 +1,14 @@
|
||||
package cn.iocoder.yudao.module.system.dal.dataobject.information;
|
||||
|
||||
import lombok.*;
|
||||
import java.util.*;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.LocalDateTime;
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.KeySequence;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.*;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
/**
|
||||
* 设备信息 DO
|
||||
@ -28,6 +30,30 @@ public class DeviceInformationDO extends BaseDO {
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
private Long id;
|
||||
/**
|
||||
* 地图id
|
||||
*/
|
||||
private Long positionMapId;
|
||||
/**
|
||||
* 地图子表节点id
|
||||
*/
|
||||
private Long positionMapItemId;
|
||||
/**
|
||||
* 库位坐标x轴
|
||||
*/
|
||||
private String locationX;
|
||||
/**
|
||||
* 库位坐标y轴
|
||||
*/
|
||||
private String locationY;
|
||||
/**
|
||||
* 宽度
|
||||
*/
|
||||
private BigDecimal locationWide;
|
||||
/**
|
||||
* 深度
|
||||
*/
|
||||
private BigDecimal locationDeep;
|
||||
/**
|
||||
* 设备类型(1:充电桩、2:输送线、 3:码垛机、4:拆垛机、5:自动门、6:提升机、7:信号灯、8:按钮盒)
|
||||
*/
|
||||
@ -40,6 +66,10 @@ public class DeviceInformationDO extends BaseDO {
|
||||
* mac地址
|
||||
*/
|
||||
private String macAddress;
|
||||
/**
|
||||
* 设备在地图上图标
|
||||
*/
|
||||
private String mapImageUrl;
|
||||
/**
|
||||
* 上传图片附件
|
||||
*/
|
||||
@ -65,4 +95,4 @@ public class DeviceInformationDO extends BaseDO {
|
||||
*/
|
||||
private LocalDateTime deviceLastTime;
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -32,11 +32,11 @@ public class ParkingSpotDO extends BaseDO {
|
||||
/**
|
||||
* 地图id
|
||||
*/
|
||||
private Long mapId;
|
||||
private Long positionMapId;
|
||||
/**
|
||||
* 地图字表节点id
|
||||
* 地图子表节点id
|
||||
*/
|
||||
private Long mapItemId;
|
||||
private Long positionMapItemId;
|
||||
/**
|
||||
* 库位坐标x轴
|
||||
*/
|
||||
|
@ -1,13 +1,11 @@
|
||||
package cn.iocoder.yudao.module.system.dal.mysql.parkingspot;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.parkingspot.vo.ParkingSpotPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.parkingspot.ParkingSpotDO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.parkingspot.vo.*;
|
||||
|
||||
/**
|
||||
* 停车点 Mapper
|
||||
@ -19,8 +17,8 @@ public interface ParkingSpotMapper extends BaseMapperX<ParkingSpotDO> {
|
||||
|
||||
default PageResult<ParkingSpotDO> selectPage(ParkingSpotPageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<ParkingSpotDO>()
|
||||
.eqIfPresent(ParkingSpotDO::getMapId, reqVO.getMapId())
|
||||
.eqIfPresent(ParkingSpotDO::getMapItemId, reqVO.getMapItemId())
|
||||
.eqIfPresent(ParkingSpotDO::getPositionMapId, reqVO.getPositionMapId())
|
||||
.eqIfPresent(ParkingSpotDO::getPositionMapItemId, reqVO.getPositionMapItemId())
|
||||
.eqIfPresent(ParkingSpotDO::getLocationX, reqVO.getLocationX())
|
||||
.eqIfPresent(ParkingSpotDO::getLocationY, reqVO.getLocationY())
|
||||
.eqIfPresent(ParkingSpotDO::getLocationWide, reqVO.getLocationWide())
|
||||
@ -32,4 +30,4 @@ public interface ParkingSpotMapper extends BaseMapperX<ParkingSpotDO> {
|
||||
.orderByDesc(ParkingSpotDO::getId));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -3,18 +3,12 @@ package cn.iocoder.yudao.module.system.handler.mapnode;
|
||||
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.iocoder.yudao.framework.common.enums.NodeTypeEnum;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.NodeBaseDTO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.houselocation.WareHouseLocationDO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.positionmap.PositionMapItemDO;
|
||||
import cn.iocoder.yudao.module.system.handler.mapnode.strategy.HouseLocationStrategyImpl;
|
||||
import cn.iocoder.yudao.module.system.handler.mapnode.strategy.MapNodeStrategyImpl;
|
||||
import cn.iocoder.yudao.module.system.handler.mapnode.strategy.NodeProcessingStrategy;
|
||||
import cn.iocoder.yudao.module.system.handler.mapnode.strategy.ParkingSpotStrategyImpl;
|
||||
import cn.iocoder.yudao.module.system.handler.mapnode.strategy.*;
|
||||
import cn.iocoder.yudao.module.system.service.positionmap.PositionMapItemService;
|
||||
import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@ -23,16 +17,13 @@ import javax.annotation.PostConstruct;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
import static com.baomidou.mybatisplus.core.toolkit.IdWorker.getId;
|
||||
|
||||
@Component
|
||||
public class NodeProcessingContext {
|
||||
|
||||
private final Map<Integer, NodeProcessingStrategy> strategyMap = new HashMap<>();
|
||||
|
||||
|
||||
@Autowired
|
||||
private PositionMapItemService positionMapItemService;
|
||||
@Autowired
|
||||
private MapNodeStrategyImpl mapNodeStrategyImpl;
|
||||
@Autowired
|
||||
@ -40,7 +31,7 @@ public class NodeProcessingContext {
|
||||
@Autowired
|
||||
private ParkingSpotStrategyImpl parkingSpotStrategyImpl;
|
||||
@Autowired
|
||||
private PositionMapItemService positionMapItemService;
|
||||
private DeviceStrategyImpl deviceStrategyImpl;
|
||||
|
||||
/**
|
||||
* 项目启动时 初始化策略
|
||||
@ -52,7 +43,7 @@ public class NodeProcessingContext {
|
||||
// 库位
|
||||
strategyMap.put(NodeTypeEnum.WARE.getType(), houseLocationStrategyImpl);
|
||||
// 设备点
|
||||
// strategyMap.put(NodeTypeEnum.EQUIPMENT.getType(), houseLocationStrategyImpl);
|
||||
strategyMap.put(NodeTypeEnum.DEVICE.getType(), deviceStrategyImpl);
|
||||
// 停车点
|
||||
strategyMap.put(NodeTypeEnum.PARKING.getType(), parkingSpotStrategyImpl);
|
||||
// 路径点
|
||||
|
@ -0,0 +1,51 @@
|
||||
package cn.iocoder.yudao.module.system.handler.mapnode.strategy;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.NodeBaseDTO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.information.DeviceInformationDO;
|
||||
import cn.iocoder.yudao.module.system.service.information.DeviceInformationService;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static com.baomidou.mybatisplus.core.toolkit.IdWorker.getId;
|
||||
|
||||
@Component
|
||||
public class DeviceStrategyImpl implements NodeProcessingStrategy {
|
||||
@Resource
|
||||
private DeviceInformationService deviceInformationService;
|
||||
|
||||
@Override
|
||||
public void processNodes(Long positionMapId, List<NodeBaseDTO> nodeBaseDTOS) {
|
||||
// -- 策略3 处理设备点
|
||||
// -- 将data里面的json 数据转为实体类 - 再对比节点id - 然后做新增删除修改操作
|
||||
// --------------- dataJSON里面没有具体的类的id - 然后库位要根据层数添加 多个库位数据 即 一个点位 对应多个库位
|
||||
List<DeviceInformationDO> newList = new ArrayList<>();
|
||||
nodeBaseDTOS.forEach(item -> {
|
||||
if (item.getId() == null) {
|
||||
item.setId(getId());
|
||||
}
|
||||
item.setPositionMapId(positionMapId);
|
||||
DeviceInformationDO deviceInformationDO = JSONUtil.toBean(item.getDataJson(), DeviceInformationDO.class);
|
||||
if (deviceInformationDO.getId() == null) {
|
||||
deviceInformationDO.setId(getId());
|
||||
}
|
||||
deviceInformationDO.setLocationX(item.getLocationX());
|
||||
deviceInformationDO.setLocationY(item.getLocationY());
|
||||
|
||||
deviceInformationDO.setPositionMapId(positionMapId);
|
||||
deviceInformationDO.setPositionMapItemId(item.getId());
|
||||
newList.add(deviceInformationDO);
|
||||
item.setDataJson(JSONUtil.toJsonStr(deviceInformationDO));
|
||||
});
|
||||
|
||||
List<DeviceInformationDO> oldList = deviceInformationService.getByMapId(positionMapId);
|
||||
List<List<DeviceInformationDO>> list = CollectionUtils.diffList(oldList, newList,
|
||||
(oldVal, newVal) -> ObjectUtil.equal(oldVal.getId(), newVal.getId()));
|
||||
deviceInformationService.batchSaveOrEditOrDel(positionMapId, list);
|
||||
}
|
||||
}
|
@ -30,7 +30,6 @@ public class ParkingSpotStrategyImpl implements NodeProcessingStrategy {
|
||||
item.setId(getId());
|
||||
}
|
||||
item.setPositionMapId(positionMapId);
|
||||
// -- 如果是库位点 - 可能是一对多情况 - 需要将多个库位点的id set进去
|
||||
ParkingSpotDO parkingSpotDO = JSONUtil.toBean(item.getDataJson(), ParkingSpotDO.class);
|
||||
if (parkingSpotDO.getId() == null) {
|
||||
parkingSpotDO.setId(getId());
|
||||
@ -38,8 +37,8 @@ public class ParkingSpotStrategyImpl implements NodeProcessingStrategy {
|
||||
parkingSpotDO.setLocationX(item.getLocationX());
|
||||
parkingSpotDO.setLocationY(item.getLocationY());
|
||||
|
||||
parkingSpotDO.setMapId(positionMapId);
|
||||
parkingSpotDO.setMapItemId(item.getId());
|
||||
parkingSpotDO.setPositionMapId(positionMapId);
|
||||
parkingSpotDO.setPositionMapItemId(item.getId());
|
||||
newList.add(parkingSpotDO);
|
||||
item.setDataJson(JSONUtil.toJsonStr(parkingSpotDO));
|
||||
});
|
||||
|
@ -1,13 +1,13 @@
|
||||
package cn.iocoder.yudao.module.system.service.information;
|
||||
|
||||
import java.util.*;
|
||||
import javax.validation.*;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageParam;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.information.vo.DeviceInformationPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.information.vo.DeviceInformationSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.information.DeviceInformationDO;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 设备信息 Service 接口
|
||||
*
|
||||
@ -53,4 +53,27 @@ public interface DeviceInformationService {
|
||||
*/
|
||||
PageResult<DeviceInformationDO> getInformationPage(DeviceInformationPageReqVO pageReqVO);
|
||||
|
||||
}
|
||||
/**
|
||||
* 批量新增删除修改
|
||||
*
|
||||
* @param positionMapId
|
||||
* @param list
|
||||
*/
|
||||
void batchSaveOrEditOrDel(Long positionMapId, List<List<DeviceInformationDO>> list);
|
||||
|
||||
/**
|
||||
* 通过地图id获取设备列表
|
||||
*
|
||||
* @param positionMapId
|
||||
* @return
|
||||
*/
|
||||
List<DeviceInformationDO> getByMapId(Long positionMapId);
|
||||
|
||||
/**
|
||||
* 获取设备列表
|
||||
*
|
||||
* @param pageReqVO
|
||||
* @return
|
||||
*/
|
||||
List<DeviceInformationDO> getList(@Valid DeviceInformationPageReqVO pageReqVO);
|
||||
}
|
||||
|
@ -1,25 +1,29 @@
|
||||
package cn.iocoder.yudao.module.system.service.information;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import cn.iocoder.yudao.module.grpc.api.GrpcServiceApi;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.information.vo.DeviceInformationPageReqVO;
|
||||
import cn.iocoder.yudao.module.system.controller.admin.information.vo.DeviceInformationSaveReqVO;
|
||||
import cn.iocoder.yudao.module.system.dal.dataobject.information.DeviceInformationDO;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.information.DeviceInformationMapper;
|
||||
import cn.iocoder.yudao.module.system.enums.device.DeviceInformationEnum;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
import javax.annotation.Resource;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
||||
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
||||
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.hutool.core.collection.CollUtil.isNotEmpty;
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.*;
|
||||
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.INFORMATION_MAC_EXIST;
|
||||
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.INFORMATION_NOT_EXISTS;
|
||||
|
||||
/**
|
||||
* 设备信息 Service 实现类
|
||||
@ -42,7 +46,7 @@ public class DeviceInformationServiceImpl implements DeviceInformationService {
|
||||
DeviceInformationPageReqVO pageReqVO = new DeviceInformationPageReqVO();
|
||||
pageReqVO.setMacAddress(createReqVO.getMacAddress());
|
||||
PageResult<DeviceInformationDO> pageResult = informationMapper.selectPage(pageReqVO);
|
||||
if(ObjectUtil.isNotEmpty(pageResult.getList())){
|
||||
if (ObjectUtil.isNotEmpty(pageResult.getList())) {
|
||||
throw exception(INFORMATION_MAC_EXIST);
|
||||
}
|
||||
// 插入
|
||||
@ -87,4 +91,31 @@ public class DeviceInformationServiceImpl implements DeviceInformationService {
|
||||
return informationMapper.selectPage(pageReqVO);
|
||||
}
|
||||
|
||||
}
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void batchSaveOrEditOrDel(Long positionMapId, List<List<DeviceInformationDO>> list) {
|
||||
//批量添加、修改、删除
|
||||
if (isNotEmpty(list.get(0))) {
|
||||
informationMapper.insertBatch(list.get(0));
|
||||
}
|
||||
if (isNotEmpty(list.get(1))) {
|
||||
informationMapper.updateBatch(list.get(1));
|
||||
}
|
||||
if (isNotEmpty(list.get(2))) {
|
||||
informationMapper.deleteByIds(convertList(list.get(2), DeviceInformationDO::getId));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceInformationDO> getByMapId(Long positionMapId) {
|
||||
return informationMapper.selectList(new LambdaQueryWrapperX<DeviceInformationDO>()
|
||||
.eq(DeviceInformationDO::getPositionMapId, positionMapId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DeviceInformationDO> getList(DeviceInformationPageReqVO pageReqVO) {
|
||||
return informationMapper.selectList(new LambdaQueryWrapper<DeviceInformationDO>()
|
||||
.eq(pageReqVO.getDeviceType() != null, DeviceInformationDO::getDeviceType, pageReqVO.getDeviceType()));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.parkingspot.ParkingSpotDO;
|
||||
import cn.iocoder.yudao.module.system.dal.mysql.parkingspot.ParkingSpotMapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
@ -65,10 +66,11 @@ public class ParkingSpotServiceImpl extends ServiceImpl<ParkingSpotMapper, Parki
|
||||
@Override
|
||||
public List<ParkingSpotDO> getByMapId(Long positionMapId) {
|
||||
return parkingSpotMapper.selectList(new LambdaQueryWrapperX<ParkingSpotDO>()
|
||||
.eq(ParkingSpotDO::getMapId, positionMapId));
|
||||
.eq(ParkingSpotDO::getPositionMapId, positionMapId));
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void batchSaveOrEditOrDel(Long positionMapId, List<List<ParkingSpotDO>> list) {
|
||||
//批量添加、修改、删除
|
||||
if (isNotEmpty(list.get(0))) {
|
||||
|
Loading…
Reference in New Issue
Block a user