diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/IdUtil.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/IdUtil.java new file mode 100644 index 0000000..41f47c0 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/IdUtil.java @@ -0,0 +1,11 @@ +package org.nl.common.utils; + +public class IdUtil { + public static Long getLongId() { + return cn.hutool.core.util.IdUtil.getSnowflake(1, 1).nextId(); + } + + public static String getStringId() { + return String.valueOf(IdUtil.getLongId()); + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/MapOf.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/MapOf.java new file mode 100644 index 0000000..7107bc7 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/MapOf.java @@ -0,0 +1,20 @@ +package org.nl.common.utils; + + +import java.io.Serializable; +import java.util.HashMap; + +/* + * @author ZZQ + * @Date 2022/11/29 2:55 下午 + */ +public class MapOf implements Serializable { + + public static HashMap of(K... key) { + HashMap map = new HashMap<>(); + for (int i = 0; i < (key.length & ~1); i = i + 2) { + map.put(key[i], key[i + 1]); + } + return map; + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/TableDataInfo.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/TableDataInfo.java new file mode 100644 index 0000000..55cd73a --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/TableDataInfo.java @@ -0,0 +1,80 @@ +package org.nl.common.utils; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.http.HttpStatus; +import com.baomidou.mybatisplus.core.metadata.IPage; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.List; + +/** + * 表格分页数据对象 + * + * @author Lion Li + */ + +@Data +@NoArgsConstructor +public class TableDataInfo implements Serializable { + private static final long serialVersionUID = 1L; + + /** + * 列表数据 + */ + /** + * 消息状态码 + */ + private Integer status; + private String timestamp = DateUtil.now(); + /** + * 消息内容 + */ + private String message; + /** + * 反馈数据 + */ + private Object data; + /** + * 分页 + * + * @param list 列表数据 + * @param total 总记录数 + */ + public TableDataInfo(List list, long total) { + this.data = list; + } + + public static TableDataInfo build(IPage page) { + TableDataInfo rspData = new TableDataInfo<>(); + rspData.setStatus(HttpStatus.HTTP_OK); + rspData.setMessage("操作成功"); + rspData.setData(page.getRecords()); + return rspData; + } + + public static TableDataInfo build(List list) { + TableDataInfo rspData = new TableDataInfo<>(); + rspData.setStatus(HttpStatus.HTTP_OK); + rspData.setMessage("操作成功"); + rspData.setData(list); + return rspData; + } + + public static TableDataInfo build() { + TableDataInfo rspData = new TableDataInfo<>(); + rspData.setStatus(HttpStatus.HTTP_OK); + rspData.setMessage("操作成功"); + return rspData; + } + + public static TableDataInfo buildJson(Object result) { + TableDataInfo rspData = new TableDataInfo<>(); + rspData.setStatus(HttpStatus.HTTP_OK); + rspData.setData(result); + rspData.setMessage("操作成功"); + return rspData; + } + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/BaseQuery.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/BaseQuery.java new file mode 100644 index 0000000..9035abb --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/BaseQuery.java @@ -0,0 +1,89 @@ +package org.nl.common.utils.query; + +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.LambdaUtils; +import com.baomidou.mybatisplus.core.toolkit.support.ColumnCache; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.utils.MapOf; +import sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl; + +import java.lang.reflect.Type; +import java.util.Map; + +/** + * 泛型必须为数据tb对应do:由mybatis管理 + * @author ZZQ + * @Date 2022/12/14 6:33 下午 + */ +@Data +public class BaseQuery { + /** + * 模糊查询 + */ + private String blurry; + /** + * 是否启用 + */ + private String is_used; + /** + * 创建时间范围查询 + */ + private String start_time; + private String end_time; + + + /** + * 字段映射Map:指定字段对应QueryWrapper的查询类型 + * 字段与数据库字段对应,不支持驼峰 + * @see org.nl.common.enums.QueryTEnum + * 通过buid构建 + */ + public Map doP = MapOf.of("blurry", QParam.builder().k(new String[]{"name"}).type(QueryTEnum.LK).build() + ,"startTime", QParam.builder().k(new String[]{"create_time"}).type(QueryTEnum.LT).build() + ,"endTime", QParam.builder().k(new String[]{"create_time"}).type(QueryTEnum.LE).build() + ,"sort", QParam.builder().k(new String[]{"sort"}).type(QueryTEnum.BY).build() + ); + + public QueryWrapper build(){ + this.paramMapping(); + QueryWrapper wrapper = new QueryWrapper<>(); + JSONObject json = (JSONObject)JSONObject.toJSON(this); + Type[] types = ((ParameterizedTypeImpl) this.getClass().getGenericSuperclass()).getActualTypeArguments(); + Map columnMap = LambdaUtils.getColumnMap((Class) types[0]); + + String dopStr = "doP"; + json.forEach((key, vel) -> { + if (vel != null && !key.equals(dopStr)){ + if (vel instanceof String){ + if (StringUtils.isNotEmpty((CharSequence) vel)){ + QParam qParam = doP.get(key); + if (qParam != null){ + QueryTEnum.build(qParam.type,wrapper,qParam.k,vel); + }else { + ColumnCache columnCache = columnMap.get(LambdaUtils.formatKey(key)); + if (columnCache!=null){ + wrapper.eq(columnCache.getColumn(),vel); + } + } + } + }else { + QParam qParam = doP.get(key); + if (qParam != null){ + QueryTEnum.build(qParam.type,wrapper,qParam.k,vel); + }else { + ColumnCache columnCache = columnMap.get(LambdaUtils.formatKey(key)); + if (columnCache!=null){ + wrapper.eq(columnCache.getColumn(),vel); + } + } + } + + } + }); + return wrapper; + } + + public void paramMapping(){}; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/LConsumer.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/LConsumer.java new file mode 100644 index 0000000..e795ada --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/LConsumer.java @@ -0,0 +1,19 @@ +package org.nl.common.utils.query; + +/** + * s + * @author ZZQ + * @Date 2022/12/14 8:40 下午 + */ +@FunctionalInterface +public interface LConsumer { + + /** + * 切面 + * @param x 、 + * @param y 、 + * @param z 、 + */ + void accept(X x,Y y,Z z); + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/PageQuery.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/PageQuery.java new file mode 100644 index 0000000..fabdb5f --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/PageQuery.java @@ -0,0 +1,135 @@ +package org.nl.common.utils.query; + +import cn.hutool.core.util.ObjectUtil; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; + +import java.io.Serializable; +import java.lang.reflect.Field; +import java.util.Locale; + +/** + *

+ * 分页参数 + *

+ * + * @author generator + * @since 2023-11-16 + */ +@Data +public class PageQuery implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 分页大小 + */ + private Integer size=100; + + /** + * 当前页数 + */ + private Integer page=0; + + /** + * 排序列menu_sort,desc + */ + private String sort; + + /** + * 排序的方向desc或者asc + */ + private Boolean isAsc; + + /** + * 当前记录起始索引 默认值 + */ + public static final int DEFAULT_PAGE_NUM = 1; + + /** + * 每页显示记录数 默认值 默认查全部 + */ + public static final int DEFAULT_PAGE_SIZE = Integer.MAX_VALUE; + + public Page build() { + Integer pageNum = ObjectUtil.defaultIfNull(getPage(), DEFAULT_PAGE_NUM); + Integer pageSize = ObjectUtil.defaultIfNull(getSize(), DEFAULT_PAGE_SIZE); + if (pageNum <= 0) { + pageNum = DEFAULT_PAGE_NUM; + } + Page page = new Page<>(pageNum, pageSize); + if (StringUtils.isNotEmpty(sort)){ + String[] split = sort.split(","); + for (int i = 0; i < (split.length & ~1); i = i + 2) { + String col = split[i]; + OrderItem item = new OrderItem(); + item.setColumn(col); + item.setAsc(split[i + 1].toLowerCase(Locale.ROOT).equals("asc")); + page.addOrder(item); + } + } + return page; + } + + public static void trimStringFields(Object obj) { + if (obj == null) { + return; + } + Field[] fields = obj.getClass().getDeclaredFields(); + for (Field field : fields) { + if (field.getType() == String.class) { + field.setAccessible(true); + try { + String value = (String) field.get(obj); + if (value != null) { + field.set(obj, value.trim().toUpperCase()); + } + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + } + + public Page build(Class r) { + Integer pageNum = ObjectUtil.defaultIfNull(getPage(), DEFAULT_PAGE_NUM); + Integer pageSize = ObjectUtil.defaultIfNull(getSize(), DEFAULT_PAGE_SIZE); + if (pageNum <= 0) { + pageNum = DEFAULT_PAGE_NUM; + } + Page page = new Page<>(pageNum, pageSize); + if (StringUtils.isNotEmpty(sort)) { + String[] split = sort.split(","); + for (int i = 0; i < (split.length & ~1); i=i+2) { + String col = split[i]; + if ("id".equals(col)){ + String mId = mappingId(r); + col = StringUtils.isNotEmpty(mId)?mId:col; + } + OrderItem item = new OrderItem(); + item.setColumn(col); + item.setAsc(split[i+1].toLowerCase(Locale.ROOT).equals("asc")); + page.addOrder(item); + } + + } + return page; + } + + private String mappingId(R r){ + if (r instanceof Class){ + Field[] fields = ((Class) r).getDeclaredFields(); + for (Field field : fields) { + TableId[] byType = field.getAnnotationsByType(TableId.class); + if (byType !=null && byType.length>0){ + TableId tableId = byType[0]; + return tableId.value(); + } + } + } + return null; + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/QParam.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/QParam.java new file mode 100644 index 0000000..1f32cd5 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/QParam.java @@ -0,0 +1,14 @@ +package org.nl.common.utils.query; + +import lombok.Builder; + +/** + * s + * @author ZZQ + * @Date 2022/12/15 1:41 下午 + */ +@Builder +public class QParam { + public String[] k; + public QueryTEnum type; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/QueryTEnum.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/QueryTEnum.java new file mode 100644 index 0000000..392cf5b --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/common/utils/query/QueryTEnum.java @@ -0,0 +1,81 @@ +package org.nl.common.utils.query; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import lombok.Getter; +import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.formula.functions.T; + +import java.util.Collection; + +/** + * s + * + * @author ZZQ + * @Date 2022/12/14 8:26 下午 + */ +@Getter +public enum QueryTEnum { + // + EQ((q, k, v) -> { + q.eq(k[0], v); + }), + IN((q, key, o) -> { + if (o instanceof Collection) { + q.in(key[0], (Collection) o); + } + }), + LK((q, keys, o) -> { + for (String key : keys) { + q.like(key, o); + } + }), + ORLK((q, k, o) -> { + q.and(query -> { + QueryWrapper queryWrapper = (QueryWrapper) query; + for (int i = 0; i < k.length; i++) { + queryWrapper.like(k[i], o); + if (i != (k.length - 1)) { + queryWrapper.or(); + } + } + }); + }), + LE((q, k, v) -> { + q.le(k[0], v); + }), + GE((q, k, v) -> { + q.ge(k[0], v); + }), + BY((q, k, v) -> { + q.orderByDesc(k[0], String.valueOf(v)); + }), + NO((q, k, v) -> { + q.isNull(k[0]); + }), + NULL_OR_EMPTY((queryWrapper, k, v) -> { + queryWrapper.nested(a -> a.isNull(k[0]).or().eq(k[0], "")); + }), + LT((q, k, v) -> { + q.lt(k[0], v); + }), + GT((q, k, v) -> { + q.gt(k[0], v); + }), + OREQ((q, k, v) -> { + if (StringUtils.isBlank((String) v)) { + q.isNull(k[0]); + } else { + q.eq(k[0], v); + } + }); + + private LConsumer, String[], Object> doP; + + QueryTEnum(LConsumer, String[], Object> doP) { + this.doP = doP; + } + + public static void build(QueryTEnum type, QueryWrapper q, String[] k, Object v) { + type.getDoP().accept(q, k, v); + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/controller/AgvCarController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/controller/AgvCarController.java new file mode 100644 index 0000000..a26294f --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/controller/AgvCarController.java @@ -0,0 +1,83 @@ +package org.nl.modules.layout.car.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import org.nl.common.utils.query.PageQuery; +import org.nl.modules.layout.car.dao.AgvCarQuery; +import org.nl.modules.layout.car.dto.AgvCarDto; +import org.nl.modules.layout.car.entity.AgvCar; +import org.nl.modules.layout.car.service.AgvCarService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; + +/** + * 车辆信息Controller + */ +@RestController +@RequestMapping("/api/agvCar") +@SaIgnore +public class AgvCarController { + + @Autowired + private AgvCarService agvCarService; + + /** + * 分页查询 + */ + @GetMapping("/list") + public ResponseEntity pageList(AgvCarQuery query, PageQuery pageQuery) { + return new ResponseEntity<>(agvCarService.page(pageQuery.build(), query.build()), HttpStatus.OK); + } + + /** + * 查询所有 + */ + @GetMapping("/all") + @SaIgnore + public ResponseEntity list() { + return new ResponseEntity<>(agvCarService.list(), HttpStatus.OK); + } + + /** + * 根据ID查询 + */ + @GetMapping("/{id}") + public ResponseEntity getById(@PathVariable Integer id) { + return new ResponseEntity<>(agvCarService.getById(id), HttpStatus.OK); + } + + /** + * 新增 + */ + @PostMapping + public ResponseEntity add(@RequestBody AgvCarDto dto) { + AgvCar entity = new AgvCar(); + BeanUtils.copyProperties(dto, entity); + agvCarService.save(entity); + return new ResponseEntity<>(entity, HttpStatus.OK); + } + + /** + * 修改 + */ + @PutMapping + public ResponseEntity update(@RequestBody AgvCarDto dto) { + AgvCar entity = new AgvCar(); + BeanUtils.copyProperties(dto, entity); + agvCarService.updateById(entity); + return new ResponseEntity<>(entity, HttpStatus.OK); + } + + /** + * 删除 + */ + @DeleteMapping + public ResponseEntity delete(@RequestBody Integer[] ids) { + agvCarService.removeByIds(Arrays.asList(ids)); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/dao/AgvCarQuery.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/dao/AgvCarQuery.java new file mode 100644 index 0000000..55a099c --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/dao/AgvCarQuery.java @@ -0,0 +1,41 @@ +package org.nl.modules.layout.car.dao; + +import org.apache.commons.lang3.StringUtils; +import org.nl.common.utils.query.BaseQuery; +import org.nl.modules.layout.car.entity.AgvCar; + +/** + * 车辆信息查询对象 + */ +public class AgvCarQuery extends BaseQuery { + + /** + * 车辆ID + */ + private String carId; + + /** + * 车辆类型 + */ + private String type; + + public String getCarId() { + return carId; + } + + public void setCarId(String carId) { + if (StringUtils.isNotEmpty(carId)){ + this.carId = carId; + } + } + + public String getType() { + return type; + } + + public void setType(String type) { + if (StringUtils.isNotEmpty(type)){ + this.type = type; + } + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/dto/AgvCarDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/dto/AgvCarDto.java new file mode 100644 index 0000000..4e1e1ae --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/dto/AgvCarDto.java @@ -0,0 +1,34 @@ +package org.nl.modules.layout.car.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 车辆信息DTO + */ +@Data +public class AgvCarDto implements Serializable { + + private Integer id; + + /** + * 车辆ID + */ + private String carId; + + /** + * 车辆类型 + */ + private String type; + + /** + * 车辆图标地址 + */ + private String icon; + + /** + * 图标文件ID + */ + private String fileId; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/entity/AgvCar.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/entity/AgvCar.java new file mode 100644 index 0000000..f06eadf --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/entity/AgvCar.java @@ -0,0 +1,47 @@ +package org.nl.modules.layout.car.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 车辆信息表 + */ +@Data +@TableName("agv_car") +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class AgvCar implements Serializable { + + @TableId(type = IdType.AUTO) + private Integer id; + + /** + * 车辆ID + */ + @TableField("car_id") + private String carId; + + /** + * 车辆类型 + */ + private String type; + + /** + * 车辆图标地址 + */ + private String icon; + /** + * 车辆图标地址 + */ + @TableField("file_id") + private String fileId; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/mapper/AgvCarMapper.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/mapper/AgvCarMapper.java new file mode 100644 index 0000000..b5ecb83 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/mapper/AgvCarMapper.java @@ -0,0 +1,12 @@ +package org.nl.modules.layout.car.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.nl.modules.layout.car.entity.AgvCar; + +/** + * 车辆信息Mapper + */ +@Mapper +public interface AgvCarMapper extends BaseMapper { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/service/AgvCarService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/service/AgvCarService.java new file mode 100644 index 0000000..653c57c --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/service/AgvCarService.java @@ -0,0 +1,10 @@ +package org.nl.modules.layout.car.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.modules.layout.car.entity.AgvCar; + +/** + * 车辆信息Service + */ +public interface AgvCarService extends IService { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/service/impl/AgvCarServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/service/impl/AgvCarServiceImpl.java new file mode 100644 index 0000000..e61aa7d --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/car/service/impl/AgvCarServiceImpl.java @@ -0,0 +1,14 @@ +package org.nl.modules.layout.car.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.modules.layout.car.entity.AgvCar; +import org.nl.modules.layout.car.mapper.AgvCarMapper; +import org.nl.modules.layout.car.service.AgvCarService; +import org.springframework.stereotype.Service; + +/** + * 车辆信息ServiceImpl + */ +@Service +public class AgvCarServiceImpl extends ServiceImpl implements AgvCarService { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/controller/BaseDataDeviceController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/controller/BaseDataDeviceController.java new file mode 100644 index 0000000..89b0f11 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/controller/BaseDataDeviceController.java @@ -0,0 +1,82 @@ +package org.nl.modules.layout.device.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import org.nl.common.utils.query.PageQuery; +import org.nl.modules.layout.device.dao.BaseDataDeviceQuery; +import org.nl.modules.layout.device.dto.BaseDataDeviceDto; +import org.nl.modules.layout.device.entity.BaseDataDevice; +import org.nl.modules.layout.device.service.BaseDataDeviceService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; +import java.util.Date; + +/** + * 设备信息Controller + */ +@RestController +@RequestMapping("/api/baseDevice") +@SaIgnore +public class BaseDataDeviceController { + + @Autowired + private BaseDataDeviceService baseDataDeviceService; + + /** + * 分页查询 + */ + @GetMapping("/list") + public ResponseEntity pageList(BaseDataDeviceQuery query, PageQuery pageQuery) { + return new ResponseEntity<>(baseDataDeviceService.page(pageQuery.build(), query.build()), HttpStatus.OK); + } + @GetMapping("/component") + @SaIgnore + public ResponseEntity List() { + return new ResponseEntity<>(baseDataDeviceService.list(), HttpStatus.OK); + } + + /** + * 根据ID查询 + */ + @GetMapping("/{id}") + public ResponseEntity getById(@PathVariable Integer id) { + return new ResponseEntity<>(baseDataDeviceService.getById(id), HttpStatus.OK); + } + + /** + * 新增 + */ + @PostMapping + public ResponseEntity add(@RequestBody BaseDataDeviceDto dto) { + BaseDataDevice entity = new BaseDataDevice(); + BeanUtils.copyProperties(dto, entity); + entity.setCreateTime(new Date()); + baseDataDeviceService.save(entity); + return new ResponseEntity<>(entity, HttpStatus.OK); + } + + /** + * 修改 + */ + @PutMapping + public ResponseEntity update(@RequestBody BaseDataDeviceDto dto) { + BaseDataDevice entity = new BaseDataDevice(); + BeanUtils.copyProperties(dto, entity); + entity.setUpdateTime(new Date()); + baseDataDeviceService.updateById(entity); + return new ResponseEntity<>(entity, HttpStatus.OK); + } + + /** + * 删除 + */ + @DeleteMapping + public ResponseEntity delete(@RequestBody Integer[] ids) { + baseDataDeviceService.removeByIds(Arrays.asList(ids)); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/dao/BaseDataDeviceQuery.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/dao/BaseDataDeviceQuery.java new file mode 100644 index 0000000..c72080d --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/dao/BaseDataDeviceQuery.java @@ -0,0 +1,56 @@ +package org.nl.modules.layout.device.dao; + +import org.apache.commons.lang3.StringUtils; +import org.nl.common.utils.query.BaseQuery; +import org.nl.modules.layout.device.entity.BaseDataDevice; + +/** + * 设备信息查询对象 + */ +public class BaseDataDeviceQuery extends BaseQuery { + + /** + * 设备编码 + */ + private String code; + + /** + * 设备类型 + */ + private String type; + + /** + * 所属区域 + */ + private String region; + + public String getCode() { + return code; + } + + public void setCode(String code) { + if (StringUtils.isNotEmpty(code)){ + this.code = code; + } + } + + public String getType() { + return type; + } + + public void setType(String type) { + if (StringUtils.isNotEmpty(type)){ + this.type = type; + } + } + + public String getRegion() { + return region; + } + + public void setRegion(String region) { + if (StringUtils.isNotEmpty(region)){ + this.region = region; + } + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/dto/BaseDataDeviceDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/dto/BaseDataDeviceDto.java new file mode 100644 index 0000000..02eee4b --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/dto/BaseDataDeviceDto.java @@ -0,0 +1,100 @@ +package org.nl.modules.layout.device.dto; + +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * 设备信息DTO + */ +@Data +public class BaseDataDeviceDto implements Serializable { + + private Integer id; + + /** + * 编码 + */ + private String code; + + /** + * 设备名称 + */ + private String name; + + /** + * 设备类型 + */ + private String type; + + /** + * 设备描述 + */ + private String description; + + /** + * 设备扩展信息 + */ + private String editParam; + + /** + * 图标地址 + */ + private String icon; + + /** + * 图标文件ID + */ + private String fileId; + + /** + * 所属区域 + */ + private String region; + + /** + * x坐标 + */ + private Integer x; + + /** + * y坐标 + */ + private Integer y; + + /** + * 角度 + */ + private Integer angle; + + /** + * 放大比例 + */ + private Integer size; + + /** + * 创建时间 + */ + private Date createTime; + + /** + * 创建用户 + */ + private String createName; + + /** + * 修改时间 + */ + private Date updateTime; + + /** + * 修改用户 + */ + private String updateName; + + /** + * 是否启用 + */ + private Boolean isUsed; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/entity/BaseDataDevice.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/entity/BaseDataDevice.java new file mode 100644 index 0000000..ac6384d --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/entity/BaseDataDevice.java @@ -0,0 +1,119 @@ +package org.nl.modules.layout.device.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; +import java.util.Date; + +/** + * 设备信息表 + */ +@Data +@TableName("base_data_device") +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class BaseDataDevice implements Serializable { + + @TableId(type = IdType.AUTO) + private Integer id; + + /** + * 编码 + */ + private String code; + + /** + * 设备名称 + */ + private String name; + + /** + * 设备类型 + */ + private String type; + + /** + * 设备描述 + */ + private String description; + + /** + * 设备扩展信息 + */ + @TableField("edit_param") + private String editParam; + + /** + * 图标地址 + */ + private String icon; + + /** + * 图标文件ID + */ + @TableField("file_id") + private String fileId; + + /** + * 所属区域 + */ + private String region; + + /** + * x坐标 + */ + private Integer x; + + /** + * y坐标 + */ + private Integer y; + + /** + * 角度 + */ + private Integer angle; + + /** + * 放大比例 + */ + private Integer size; + + /** + * 创建时间 + */ + @TableField("create_time") + private Date createTime; + + /** + * 创建用户 + */ + @TableField("create_name") + private String createName; + + /** + * 修改时间 + */ + @TableField("update_time") + private Date updateTime; + + /** + * 修改用户 + */ + @TableField("update_name") + private String updateName; + + /** + * 是否启用 + */ + @TableField("is_used") + private Boolean isUsed; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/mapper/BaseDataDeviceMapper.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/mapper/BaseDataDeviceMapper.java new file mode 100644 index 0000000..c0dec1a --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/mapper/BaseDataDeviceMapper.java @@ -0,0 +1,12 @@ +package org.nl.modules.layout.device.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.nl.modules.layout.device.entity.BaseDataDevice; + +/** + * 设备信息Mapper + */ +@Mapper +public interface BaseDataDeviceMapper extends BaseMapper { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/service/BaseDataDeviceService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/service/BaseDataDeviceService.java new file mode 100644 index 0000000..29eac1e --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/service/BaseDataDeviceService.java @@ -0,0 +1,10 @@ +package org.nl.modules.layout.device.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.modules.layout.device.entity.BaseDataDevice; + +/** + * 设备信息Service + */ +public interface BaseDataDeviceService extends IService { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/service/impl/BaseDataDeviceServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/service/impl/BaseDataDeviceServiceImpl.java new file mode 100644 index 0000000..48cec45 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/device/service/impl/BaseDataDeviceServiceImpl.java @@ -0,0 +1,14 @@ +package org.nl.modules.layout.device.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.modules.layout.device.entity.BaseDataDevice; +import org.nl.modules.layout.device.mapper.BaseDataDeviceMapper; +import org.nl.modules.layout.device.service.BaseDataDeviceService; +import org.springframework.stereotype.Service; + +/** + * 设备信息ServiceImpl + */ +@Service +public class BaseDataDeviceServiceImpl extends ServiceImpl implements BaseDataDeviceService { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/controller/AgvLayoutDeviceController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/controller/AgvLayoutDeviceController.java new file mode 100644 index 0000000..e114408 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/controller/AgvLayoutDeviceController.java @@ -0,0 +1,74 @@ +package org.nl.modules.layout.deviceLayout.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import org.nl.common.utils.query.PageQuery; +import org.nl.modules.layout.deviceLayout.dao.AgvLayoutDeviceQuery; +import org.nl.modules.layout.deviceLayout.dto.AgvLayoutDeviceDto; +import org.nl.modules.layout.deviceLayout.entity.AgvLayoutDevice; +import org.nl.modules.layout.deviceLayout.service.AgvLayoutDeviceService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.Arrays; + +/** + * 设备布局Controller + */ +@RestController +@RequestMapping("/api/deviceLayout") +@SaIgnore +public class AgvLayoutDeviceController { + + @Autowired + private AgvLayoutDeviceService agvLayoutDeviceService; + + /** + * 分页查询 + */ + @GetMapping("/list") + public ResponseEntity pageList(AgvLayoutDeviceQuery query, PageQuery pageQuery) { + return new ResponseEntity<>(agvLayoutDeviceService.page(pageQuery.build(), query.build()), HttpStatus.OK); + } + + /** + * 根据ID查询 + */ + @GetMapping("/{id}") + public ResponseEntity getById(@PathVariable Integer id) { + return new ResponseEntity<>(agvLayoutDeviceService.getById(id), HttpStatus.OK); + } + + /** + * 新增 + */ + @PostMapping + public ResponseEntity add(@RequestBody AgvLayoutDeviceDto dto) { + AgvLayoutDevice entity = new AgvLayoutDevice(); + BeanUtils.copyProperties(dto, entity); + agvLayoutDeviceService.save(entity); + return new ResponseEntity<>(entity, HttpStatus.OK); + } + + /** + * 修改 + */ + @PutMapping + public ResponseEntity update(@RequestBody AgvLayoutDeviceDto dto) { + AgvLayoutDevice entity = new AgvLayoutDevice(); + BeanUtils.copyProperties(dto, entity); + agvLayoutDeviceService.updateById(entity); + return new ResponseEntity<>(entity, HttpStatus.OK); + } + + /** + * 删除 + */ + @DeleteMapping + public ResponseEntity delete(@RequestBody Integer[] ids) { + agvLayoutDeviceService.removeByIds(Arrays.asList(ids)); + return new ResponseEntity<>(HttpStatus.OK); + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/dao/AgvLayoutDeviceQuery.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/dao/AgvLayoutDeviceQuery.java new file mode 100644 index 0000000..a9a9f11 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/dao/AgvLayoutDeviceQuery.java @@ -0,0 +1,29 @@ +package org.nl.modules.layout.deviceLayout.dao; + +import lombok.Data; +import org.nl.common.utils.query.BaseQuery; +import org.nl.modules.layout.deviceLayout.entity.AgvLayoutDevice; + + +/** + * 设备布局查询对象 + */ +@Data +public class AgvLayoutDeviceQuery extends BaseQuery { + + /** + * 地图布局ID + */ + private Integer mapLayoutId; + + /** + * 设备ID + */ + private Integer deviceId; + + /** + * 类型 + */ + private String type; + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/dto/AgvLayoutDeviceDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/dto/AgvLayoutDeviceDto.java new file mode 100644 index 0000000..aba21c1 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/dto/AgvLayoutDeviceDto.java @@ -0,0 +1,65 @@ +package org.nl.modules.layout.deviceLayout.dto; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 设备布局DTO + */ +@Data +public class AgvLayoutDeviceDto implements Serializable { + + private Integer id; + + /** + * 地图布局ID + */ + private Integer mapLayoutId; + + /** + * 设备ID + */ + private Integer deviceId; + + /** + * 编码 + */ + private String code; + + /** + * 名称 + */ + private String name; + + /** + * 类型 + */ + private String type; + + /** + * x坐标 + */ + private Integer x; + + /** + * y坐标 + */ + private Integer y; + + /** + * 角度 + */ + private Integer angle; + + /** + * 放大比例 + */ + private Integer size; + + /** + * 图标 + */ + private String icon; + private String fileId; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/entity/AgvLayoutDevice.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/entity/AgvLayoutDevice.java new file mode 100644 index 0000000..5332d8f --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/entity/AgvLayoutDevice.java @@ -0,0 +1,80 @@ +package org.nl.modules.layout.deviceLayout.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 设备布局表 + */ +@Data +@TableName("agv_layout_device") +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class AgvLayoutDevice implements Serializable { + + @TableId(type = IdType.AUTO) + private Integer id; + + /** + * 地图布局ID + */ + @TableField("map_layout_id") + private Integer mapLayoutId; + + /** + * 设备ID + */ + @TableField("device_id") + private Integer deviceId; + + /** + * 编码 + */ + private String code; + + /** + * 名称 + */ + private String name; + + /** + * 类型 + */ + private String type; + + /** + * x坐标 + */ + private Integer x; + + /** + * y坐标 + */ + private Integer y; + + /** + * 角度 + */ + private Integer angle; + + /** + * 放大比例 + */ + private Integer size; + + /** + * 图标 + */ + private String icon; + @TableField("file_id") + private String fileId; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/mapper/AgvLayoutDeviceMapper.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/mapper/AgvLayoutDeviceMapper.java new file mode 100644 index 0000000..9f3b9f4 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/mapper/AgvLayoutDeviceMapper.java @@ -0,0 +1,12 @@ +package org.nl.modules.layout.deviceLayout.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; +import org.nl.modules.layout.deviceLayout.entity.AgvLayoutDevice; + +/** + * 设备布局Mapper + */ +@Mapper +public interface AgvLayoutDeviceMapper extends BaseMapper { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/service/AgvLayoutDeviceService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/service/AgvLayoutDeviceService.java new file mode 100644 index 0000000..6b48a45 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/service/AgvLayoutDeviceService.java @@ -0,0 +1,10 @@ +package org.nl.modules.layout.deviceLayout.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.modules.layout.deviceLayout.entity.AgvLayoutDevice; + +/** + * 设备布局Service + */ +public interface AgvLayoutDeviceService extends IService { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/service/impl/AgvLayoutDeviceServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/service/impl/AgvLayoutDeviceServiceImpl.java new file mode 100644 index 0000000..7ab43bd --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/deviceLayout/service/impl/AgvLayoutDeviceServiceImpl.java @@ -0,0 +1,14 @@ +package org.nl.modules.layout.deviceLayout.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.modules.layout.deviceLayout.entity.AgvLayoutDevice; +import org.nl.modules.layout.deviceLayout.mapper.AgvLayoutDeviceMapper; +import org.nl.modules.layout.deviceLayout.service.AgvLayoutDeviceService; +import org.springframework.stereotype.Service; + +/** + * 设备布局ServiceImpl + */ +@Service +public class AgvLayoutDeviceServiceImpl extends ServiceImpl implements AgvLayoutDeviceService { +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/controller/AgvLayoutMapController.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/controller/AgvLayoutMapController.java new file mode 100644 index 0000000..c0c87cd --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/controller/AgvLayoutMapController.java @@ -0,0 +1,107 @@ +package org.nl.modules.layout.mapLayout.controller; + +import cn.dev33.satoken.annotation.SaIgnore; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import org.apache.commons.lang3.StringUtils; +import org.nl.common.utils.query.PageQuery; +import org.nl.modules.layout.mapLayout.dao.AgvLayoutMapQuery; +import org.nl.modules.layout.mapLayout.dto.AgvLayoutMapDto; +import org.nl.modules.layout.mapLayout.dto.AgvStatus; +import org.nl.modules.layout.mapLayout.entity.AgvLayoutMap; +import org.nl.modules.layout.mapLayout.service.AgvLayoutMapService; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Random; + +/** + * 地图布局Controller + */ +@RestController +@RequestMapping("/api/mapLayout") +@SaIgnore +public class AgvLayoutMapController { + + @Autowired + private AgvLayoutMapService agvLayoutMapService; + + /** + * 分页查询 + */ + @GetMapping("/list") + @SaIgnore + public ResponseEntity pageList(AgvLayoutMapQuery query, PageQuery pageQuery) { + return new ResponseEntity<>(agvLayoutMapService.page(pageQuery.build(), query.build()), HttpStatus.OK); + } + + /** + * 根据ID查询 + */ + @GetMapping("/{id}") + public ResponseEntity getById(@PathVariable Integer id) { + return new ResponseEntity<>(agvLayoutMapService.getById(id), HttpStatus.OK); + } + + /** + * 新增 + */ + @PostMapping + public ResponseEntity add(@RequestBody AgvLayoutMapDto dto) { + agvLayoutMapService.saveLayout(dto); + return new ResponseEntity<>(HttpStatus.OK); + } + + /** + * 修改 + */ + @PutMapping + public ResponseEntity update(@RequestBody AgvLayoutMapDto dto) { + AgvLayoutMap entity = new AgvLayoutMap(); + BeanUtils.copyProperties(dto, entity); + agvLayoutMapService.updateById(entity); + return new ResponseEntity<>(entity, HttpStatus.OK); + } + + /** + * 删除 + */ + @DeleteMapping + public ResponseEntity delete(@RequestBody Integer[] ids) { + agvLayoutMapService.removeByIds(Arrays.asList(ids)); + return new ResponseEntity<>(HttpStatus.OK); + } + + @GetMapping("initLayout") + @SaIgnore + public ResponseEntity initLayout(Long id) { + AgvLayoutMapDto agvLayoutMapDto = agvLayoutMapService.initLayoutMap(id); + return new ResponseEntity<>(agvLayoutMapDto,HttpStatus.OK); + } + @GetMapping("status") + @SaIgnore + public ResponseEntity status(String carId) { + List list = new ArrayList<>(); + for (int i = 0; i < 4; i++) { + AgvStatus build = AgvStatus.builder() + .status("2") + .carId(String.valueOf(i + 1)) + .action("请求取货") + .actionInfo("申请取货中") + .taskCode("33876") + .icon("/Users/mima0000/Desktop/car.png") + .fileId("3029") + .x(new Random().nextInt(1189) + 100) + .y(new Random().nextInt(1189) + 100) + .power(66) + .angle(new Random().nextInt(160) + 10).build(); + list.add(build); + } + return new ResponseEntity<>(list,HttpStatus.OK); + } +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/dao/AgvLayoutMapQuery.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/dao/AgvLayoutMapQuery.java new file mode 100644 index 0000000..7dfa616 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/dao/AgvLayoutMapQuery.java @@ -0,0 +1,28 @@ +package org.nl.modules.layout.mapLayout.dao; + +import lombok.Data; +import org.nl.common.utils.query.BaseQuery; +import org.nl.modules.layout.mapLayout.entity.AgvLayoutMap; + +/** + * 地图布局查询对象 + */ +@Data +public class AgvLayoutMapQuery extends BaseQuery { + + /** + * 地图ID + */ + private String mapId; + + /** + * 版本 + */ + private String version; + + /** + * 是否启用 + */ + private Boolean enable; + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/dto/AgvLayoutMapDto.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/dto/AgvLayoutMapDto.java new file mode 100644 index 0000000..3597106 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/dto/AgvLayoutMapDto.java @@ -0,0 +1,64 @@ +package org.nl.modules.layout.mapLayout.dto; + +import lombok.Data; +import org.nl.modules.layout.deviceLayout.dto.AgvLayoutDeviceDto; + +import java.io.Serializable; +import java.util.List; + +/** + * 地图布局DTO + */ +@Data +public class AgvLayoutMapDto implements Serializable { + + private Integer id; + + /** + * 地图ID + */ + private String mapId; + + /** + * 地图名称 + */ + private String mapName; + + /** + * 版本 + */ + private String version; + + /** + * 地图URL + */ + private String url; + + /** + * 高度 + */ + private Integer height; + + /** + * 宽度 + */ + private Integer width; + + /** + * x坐标 + */ + private Integer x; + + /** + * y坐标 + */ + private Integer y; + + /** + * 是否启用 + */ + private Boolean enable; + + + private List device; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/dto/AgvStatus.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/dto/AgvStatus.java new file mode 100644 index 0000000..9c529db --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/dto/AgvStatus.java @@ -0,0 +1,65 @@ +package org.nl.modules.layout.mapLayout.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class AgvStatus { + /** + * 车辆ID + */ + private String carId; + /** + * 车辆类型 + */ + private String type; + /** + * 图标地址 + */ + private String icon="/Users/mima0000/Desktop/car.png"; + /** + * 车辆图片地址ID + */ + private String fileId; + /** + * 状态类型:1.休息 2.正常运行 3.异常 + */ + private String status; + /** + * 异常时的异常信息 + */ + private String error; + /** + * 动作状态:请求取货/取货完成/请求放货/放货完成 + */ + private String action; + /** + * 动作交互信息 + */ + private String actionInfo; + /** + * 任务号 + */ + private String taskCode; + /** + * 坐标X + */ + private Integer x; + /** + * 坐标Y + */ + private Integer y; + /** + * 航向角 + */ + private Integer angle; + /** + * 电量 + */ + private Integer power; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/entity/AgvLayoutMap.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/entity/AgvLayoutMap.java new file mode 100644 index 0000000..a369c30 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/entity/AgvLayoutMap.java @@ -0,0 +1,73 @@ +package org.nl.modules.layout.mapLayout.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 地图布局表 + */ +@Data +@TableName("agv_layout_map") +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class AgvLayoutMap implements Serializable { + + @TableId(type = IdType.AUTO) + private Integer id; + + /** + * 地图ID + */ + @TableField("map_id") + private String mapId; + + /** + * 地图名称 + */ + @TableField("map_name") + private String mapName; + + /** + * 版本 + */ + private String version; + + /** + * 地图URL + */ + private String url; + + /** + * 高度 + */ + private Integer height; + + /** + * 宽度 + */ + private Integer width; + + /** + * x坐标 + */ + private Integer x; + + /** + * y坐标 + */ + private Integer y; + + /** + * 是否启用 + */ + private Boolean enable; +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/mapper/AgvLayoutMapMapper.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/mapper/AgvLayoutMapMapper.java new file mode 100644 index 0000000..c0a91a2 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/mapper/AgvLayoutMapMapper.java @@ -0,0 +1,21 @@ +package org.nl.modules.layout.mapLayout.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Insert; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Options; +import org.nl.modules.layout.mapLayout.dto.AgvLayoutMapDto; +import org.nl.modules.layout.mapLayout.entity.AgvLayoutMap; + +/** + * 地图布局Mapper + */ +@Mapper +public interface AgvLayoutMapMapper extends BaseMapper { + @Insert("INSERT INTO agv_layout_map (map_id,map_name, url, height, width, x, y) VALUES (#{mapId},#{mapName}, #{url}, #{height}, #{width}, #{x}, #{y})") + @Options(useGeneratedKeys = true, keyProperty = "id") + void insertUseGeneratedKeys(AgvLayoutMap map); + + AgvLayoutMapDto initLayoutMap(Long id); + +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/mapper/mappinng/AgvLayoutMapMapper.xml b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/mapper/mappinng/AgvLayoutMapMapper.xml new file mode 100644 index 0000000..700e231 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/mapper/mappinng/AgvLayoutMapMapper.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/service/AgvLayoutMapService.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/service/AgvLayoutMapService.java new file mode 100644 index 0000000..3e787b5 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/service/AgvLayoutMapService.java @@ -0,0 +1,14 @@ +package org.nl.modules.layout.mapLayout.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.modules.layout.mapLayout.dto.AgvLayoutMapDto; +import org.nl.modules.layout.mapLayout.entity.AgvLayoutMap; + +/** + * 地图布局Service + */ +public interface AgvLayoutMapService extends IService { + void saveLayout(AgvLayoutMapDto dto); + + AgvLayoutMapDto initLayoutMap(Long id); +} diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/service/impl/AgvLayoutMapServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/service/impl/AgvLayoutMapServiceImpl.java new file mode 100644 index 0000000..d794ea9 --- /dev/null +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/modules/layout/mapLayout/service/impl/AgvLayoutMapServiceImpl.java @@ -0,0 +1,64 @@ +package org.nl.modules.layout.mapLayout.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.nl.modules.layout.deviceLayout.dto.AgvLayoutDeviceDto; +import org.nl.modules.layout.deviceLayout.entity.AgvLayoutDevice; +import org.nl.modules.layout.deviceLayout.mapper.AgvLayoutDeviceMapper; +import org.nl.modules.layout.mapLayout.dto.AgvLayoutMapDto; +import org.nl.modules.layout.mapLayout.entity.AgvLayoutMap; +import org.nl.modules.layout.mapLayout.mapper.AgvLayoutMapMapper; +import org.nl.modules.layout.mapLayout.service.AgvLayoutMapService; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; + +import javax.annotation.Resource; +import java.util.List; + +/** + * 地图布局ServiceImpl + */ +@Service +public class AgvLayoutMapServiceImpl extends ServiceImpl implements AgvLayoutMapService { + + @Resource + private AgvLayoutDeviceMapper agvLayoutDeviceMapper; + + @Override + @Transactional + public void saveLayout(AgvLayoutMapDto dto) { + AgvLayoutMap layoutMap = AgvLayoutMap.builder() + .mapId(dto.getMapId()) + .mapName(dto.getMapName()) + .url(dto.getUrl()) + .width(dto.getWidth()) + .version("1") + .height(dto.getHeight()) + .x(dto.getX()) + .y(dto.getY()).build(); + this.baseMapper.insertUseGeneratedKeys(layoutMap); + List deviceLayout = dto.getDevice(); + if (!CollectionUtils.isEmpty(deviceLayout)){ + for (AgvLayoutDeviceDto device : deviceLayout) { + AgvLayoutDevice layoutDevice = AgvLayoutDevice.builder() + .deviceId(device.getDeviceId()) + .mapLayoutId(layoutMap.getId()) + .name(device.getName()) + .code(device.getCode()) + .type(device.getType()) + .angle(device.getAngle()) + .x(device.getX()) + .y(device.getY()) + .size(device.getSize()) + .icon(device.getIcon()) + .fileId(device.getFileId()).build(); + agvLayoutDeviceMapper.insert(layoutDevice); + } + } + } + + @Override + public AgvLayoutMapDto initLayoutMap(Long id) { + return this.baseMapper.initLayoutMap(id); + } +} diff --git a/acs2/nladmin-ui/src/api/layout/car.js b/acs2/nladmin-ui/src/api/layout/car.js new file mode 100644 index 0000000..d9da44c --- /dev/null +++ b/acs2/nladmin-ui/src/api/layout/car.js @@ -0,0 +1,42 @@ +import request from '@/utils/request' + +export function query(params) { + return request({ + url: 'api/agvCar/list', + method: 'get', + params + }) +} + +export function getById(id) { + return request({ + url: `api/agvCar/${id}`, + method: 'get' + }) +} + +export function add(data) { + return request({ + url: 'api/agvCar', + method: 'post', + data + }) +} + +export function edit(data) { + return request({ + url: 'api/agvCar', + method: 'put', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/agvCar', + method: 'delete', + data: ids + }) +} + +export default { query, getById, add, edit, del } diff --git a/acs2/nladmin-ui/src/api/layout/device.js b/acs2/nladmin-ui/src/api/layout/device.js new file mode 100644 index 0000000..3df8912 --- /dev/null +++ b/acs2/nladmin-ui/src/api/layout/device.js @@ -0,0 +1,42 @@ +import request from '@/utils/request' + +export function query(params) { + return request({ + url: 'api/baseDevice/list', + method: 'get', + params + }) +} + +export function getById(id) { + return request({ + url: `api/baseDevice/${id}`, + method: 'get' + }) +} + +export function add(data) { + return request({ + url: 'api/baseDevice', + method: 'post', + data + }) +} + +export function edit(data) { + return request({ + url: 'api/baseDevice', + method: 'put', + data + }) +} + +export function del(ids) { + return request({ + url: 'api/baseDevice', + method: 'delete', + data: ids + }) +} + +export default { query, getById, add, edit, del } diff --git a/acs2/nladmin-ui/src/api/layout/map.js b/acs2/nladmin-ui/src/api/layout/map.js new file mode 100644 index 0000000..a1a5d51 --- /dev/null +++ b/acs2/nladmin-ui/src/api/layout/map.js @@ -0,0 +1,42 @@ +import request from '@/utils/request' + +export function getComponentList() { + return request({ + url: '/api/baseDevice/component', + method: 'get' + }) +} + +export function saveMapLayout(data) { + return request({ + url: 'api/mapLayout', + method: 'post', + data + }) +} + +export function saveDeviceLayout(data) { + return request({ + url: 'api/deviceLayout', + method: 'post', + data + }) +} + +export function getMapLayoutList(params) { + return request({ + url: 'api/mapLayout/list', + method: 'get', + params + }) +} + +export function getDeviceLayoutList(params) { + return request({ + url: 'api/deviceLayout/list', + method: 'get', + params + }) +} + +export default { getComponentList, saveMapLayout, saveDeviceLayout, getMapLayoutList, getDeviceLayoutList } diff --git a/acs2/nladmin-ui/src/api/layout/mapManage.js b/acs2/nladmin-ui/src/api/layout/mapManage.js new file mode 100644 index 0000000..018b9b6 --- /dev/null +++ b/acs2/nladmin-ui/src/api/layout/mapManage.js @@ -0,0 +1,27 @@ +import request from '@/utils/request' + +export function getMapList(params) { + return request({ + url: 'api/mapLayout/list', + method: 'get', + params + }) +} + +export function getMapDetail(id) { + return request({ + url: 'api/mapLayout/initLayout', + method: 'get', + params: { id } + }) +} + +export function deleteMap(ids) { + return request({ + url: 'api/mapLayout', + method: 'delete', + data: ids + }) +} + +export default { getMapList, getMapDetail, deleteMap } diff --git a/acs2/nladmin-ui/src/api/layout/screen.js b/acs2/nladmin-ui/src/api/layout/screen.js new file mode 100644 index 0000000..e2ca05e --- /dev/null +++ b/acs2/nladmin-ui/src/api/layout/screen.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +export function getMapDetail(id) { + return request({ + url: 'api/mapLayout/initLayout', + method: 'get', + params: { id } + }) +} + +export function getAgvStatus() { + return request({ + url: 'api/mapLayout/status', + method: 'get' + }) +} + +export default { getMapDetail, getAgvStatus } diff --git a/acs2/nladmin-ui/src/api/localStorage.js b/acs2/nladmin-ui/src/api/localStorage.js new file mode 100644 index 0000000..7cd7928 --- /dev/null +++ b/acs2/nladmin-ui/src/api/localStorage.js @@ -0,0 +1,39 @@ +import request from '@/utils/request' + +export function query(params) { + return request({ + url: 'api/localStorage/list', + method: 'get', + params + }) +} + +export function upload(data) { + return request({ + url: 'api/localStorage/upload', + method: 'post', + headers: { + 'Content-Type': 'multipart/form-data' + }, + data + }) +} + +export function download(storageId) { + return request({ + url: 'api/localStorage/download', + method: 'get', + params: { storageId }, + responseType: 'blob' + }) +} + +export function del(ids) { + return request({ + url: 'api/localStorage', + method: 'delete', + data: ids + }) +} + +export default { query, upload, download, del } diff --git a/acs2/nladmin-ui/src/views/layout/car/index.vue b/acs2/nladmin-ui/src/views/layout/car/index.vue new file mode 100644 index 0000000..8ca67f3 --- /dev/null +++ b/acs2/nladmin-ui/src/views/layout/car/index.vue @@ -0,0 +1,407 @@ + + + + + diff --git a/acs2/nladmin-ui/src/views/layout/device/index.vue b/acs2/nladmin-ui/src/views/layout/device/index.vue new file mode 100644 index 0000000..e0c39a3 --- /dev/null +++ b/acs2/nladmin-ui/src/views/layout/device/index.vue @@ -0,0 +1,536 @@ + + + + + diff --git a/acs2/nladmin-ui/src/views/layout/map/index.vue b/acs2/nladmin-ui/src/views/layout/map/index.vue new file mode 100644 index 0000000..347fd28 --- /dev/null +++ b/acs2/nladmin-ui/src/views/layout/map/index.vue @@ -0,0 +1,675 @@ + + + + + diff --git a/acs2/nladmin-ui/src/views/layout/mapManage/index.vue b/acs2/nladmin-ui/src/views/layout/mapManage/index.vue new file mode 100644 index 0000000..66cf007 --- /dev/null +++ b/acs2/nladmin-ui/src/views/layout/mapManage/index.vue @@ -0,0 +1,423 @@ + + + + + diff --git a/acs2/nladmin-ui/src/views/layout/screen/index.vue b/acs2/nladmin-ui/src/views/layout/screen/index.vue new file mode 100644 index 0000000..2534086 --- /dev/null +++ b/acs2/nladmin-ui/src/views/layout/screen/index.vue @@ -0,0 +1,969 @@ + + + + +