Compare commits

..

No commits in common. "e5524a54d8a5fff9ca263249ff53b924c84a1f42" and "de9bc54ac4cbc7cb3b5bd8e8f269915246882425" have entirely different histories.

19 changed files with 78 additions and 113 deletions

View File

@ -128,7 +128,3 @@ spring:
# 芋道配置项,设置当前项目所有自定义的配置
yudao:
demo: true # 开启演示模式
logging:
file:
name: D:/project/rcs/logs/${spring.application.name}.log

View File

@ -41,6 +41,4 @@ mqtt:
timeout: 10
keepalive: 20
logging:
file:
name: D:/project/rcs/logs/${spring.application.name}.log

View File

@ -170,11 +170,9 @@ public interface ErrorCodeConstants {
// ========== 线库/巷道 1-002-030-000 ==========
ErrorCode HOUSE_LANE_NOT_EXISTS = new ErrorCode(1-002-030-001, "线库不存在");
ErrorCode DUPLICATE_LINE_LIBRARY_NAME = new ErrorCode(1-002-030-002, "线库名称重复");
// ========== 库区 1-002-031-000 ==========
ErrorCode HOUSE_AREA_NOT_EXISTS = new ErrorCode(1-002-031-001, "库区不存在");
ErrorCode DUPLICATE_RESERVOIR_NAME = new ErrorCode(1-002-031-002, "库区名称重复");
// ========== 库位 1-002-032-000 ==========
ErrorCode HOUSE_LOCATION_NOT_EXISTS = new ErrorCode(1-002-032-001, "库位不存在");

View File

@ -1,32 +1,33 @@
package cn.iocoder.yudao.module.system.controller.admin.config;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.system.controller.admin.config.vo.CommonConfigPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.config.vo.CommonConfigRespVO;
import cn.iocoder.yudao.module.system.controller.admin.config.vo.CommonConfigSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.config.vo.*;
import cn.iocoder.yudao.module.system.dal.dataobject.config.CommonConfigDO;
import cn.iocoder.yudao.module.system.service.config.CommonConfigService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import java.io.IOException;
import java.util.List;
import org.springframework.validation.annotation.Validated;
import org.springframework.security.access.prepost.PreAuthorize;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.Operation;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import javax.validation.constraints.*;
import javax.validation.*;
import javax.servlet.http.*;
import java.util.*;
import java.io.IOException;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
@Tag(name = "管理后台 - 通用配置")
@RestController
@ -91,4 +92,4 @@ public class CommonConfigController {
BeanUtils.toBean(list, CommonConfigRespVO.class));
}
}
}

View File

@ -3,7 +3,6 @@ package cn.iocoder.yudao.module.system.controller.admin.housearea.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import javax.validation.constraints.NotNull;
import java.util.List;
@Schema(description = "管理后台 - 库区新增/修改 Request VO")
@ -16,11 +15,10 @@ public class HouseAreaSaveReqVO {
@Schema(description = "地图id", example = "芋艿")
private Long positionMapId;
@Schema(description = "物料说明", example = "芋艿")
@Schema(description = "地图id", example = "芋艿")
private String skuInfo;
@Schema(description = "库区名称", example = "李四")
@NotNull(message = "库区名称不能为空")
private String areaName;
@Schema(description = "库区说明")

View File

@ -20,12 +20,12 @@ public class WareHouseLaneRespVO {
@ExcelProperty("地图id")
private Long positionMapId;
@Schema(description = "线库名称", example = "芋艿")
@ExcelProperty("线库名称")
@Schema(description = "巷道名称", example = "芋艿")
@ExcelProperty("巷道名称")
private String laneName;
@Schema(description = "线库说明(可以拓展为区域说明)")
@ExcelProperty("线库说明(可以拓展为区域说明)")
@Schema(description = "巷道说明(可以拓展为区域说明)")
@ExcelProperty("巷道说明(可以拓展为区域说明)")
private String laneMsg;
@Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)

View File

@ -15,11 +15,7 @@ public class WareHouseLaneSaveReqVO {
@Schema(description = "地图id", example = "芋艿")
private Long positionMapId;
@Schema(description = "物料说明", example = "芋艿")
private String skuInfo;
@Schema(description = "线库名称", example = "芋艿")
@NotNull(message = "线库名称不能为空")
private String laneName;
@Schema(description = "线库说明(可以拓展为说明)")

View File

@ -1,8 +1,10 @@
package cn.iocoder.yudao.module.system.controller.admin.houselocation.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.*;
import java.util.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
@Schema(description = "管理后台 - 库位新增/修改 Request VO")
@ -101,4 +103,4 @@ public class WareHouseLocationSaveReqVO {
@Schema(description = "ware_position_map的id", example = "1")
private Long mapId;
}
}

View File

@ -1,11 +1,12 @@
package cn.iocoder.yudao.module.system.controller.admin.robot.vo;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.*;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Set;
import javax.validation.constraints.NotNull;
@Schema(description = "管理后台 - 车辆信息新增/修改 Request VO")
@Data
@ -50,4 +51,4 @@ public class RobotInformationSaveReqVO {
@Schema(description = "robot_task_detail的id")
private Long taskDetailId;
}
}

View File

@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.system.dal.dataobject.houselane;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import com.baomidou.mybatisplus.annotation.*;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.List;
@ -32,19 +31,14 @@ public class WareHouseLaneDO extends BaseDO {
*/
private Long positionMapId;
/**
* 线库名称
* 巷道名称
*/
private String laneName;
/**
* 线库说明(可以拓展为区域说明)
* 巷道说明(可以拓展为区域说明)
*/
private String laneMsg;
/**
* 物料信息
*/
private String skuInfo;
/**
* 节点ids
*/

View File

@ -1,8 +1,10 @@
package cn.iocoder.yudao.module.system.dal.mysql.housearea;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.system.controller.admin.housearea.vo.HouseAreaPageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.housearea.HouseAreaDO;
import org.apache.ibatis.annotations.Mapper;
@ -17,7 +19,6 @@ public interface HouseAreaMapper extends BaseMapperX<HouseAreaDO> {
default PageResult<HouseAreaDO> selectPage(HouseAreaPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<HouseAreaDO>()
.eqIfPresent(HouseAreaDO::getPositionMapId, reqVO.getPositionMapId())
.likeIfPresent(HouseAreaDO::getAreaName, reqVO.getAreaName())
.eqIfPresent(HouseAreaDO::getAreaMsg, reqVO.getAreaMsg())
.betweenIfPresent(HouseAreaDO::getCreateTime, reqVO.getCreateTime())

View File

@ -1,7 +1,6 @@
package cn.iocoder.yudao.module.system.service.bulletinboard;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.LocalDateTimeUtil;
import cn.hutool.json.JSONUtil;
@ -32,7 +31,6 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
@ -111,10 +109,7 @@ public class BulletinBoardServiceImpl implements BulletinBoardService {
List<RobotElectricityLevelVO> robotElectricityLevelVOS = new ArrayList<>();
List<RobotInformationDO> allRobot = robotInformationService.getAllRobot();
List<RobotInfoStatusVO> agvListStatusInfo = robotInformationService.getAGVListStatusInfo();
Map<String, RobotInfoStatusVO> map = new HashMap<>();
if (CollUtil.isNotEmpty(agvListStatusInfo)){
map = agvListStatusInfo.stream().collect(Collectors.toMap(RobotInfoStatusVO::getMacAddress, Function.identity()));
}
Map<String, RobotInfoStatusVO> map = agvListStatusInfo.stream().collect(Collectors.toMap(RobotInfoStatusVO::getMacAddress, Function.identity()));
for (RobotInformationDO robotInformationDO : allRobot) {
String pose2dKey = RobotTaskChcheConstant.ROBOT_INFORMATION_POSE_BAT_SOC + robotInformationDO.getMacAddress();
Object object = redisUtil.get(pose2dKey);

View File

@ -1,12 +1,12 @@
package cn.iocoder.yudao.module.system.service.config;
import java.util.*;
import javax.validation.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.system.controller.admin.config.vo.CommonConfigPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.config.vo.CommonConfigSaveReqVO;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.module.system.controller.admin.config.vo.*;
import cn.iocoder.yudao.module.system.dal.dataobject.config.CommonConfigDO;
import javax.validation.Valid;
/**
* 通用配置 Service 接口
*
@ -52,4 +52,4 @@ public interface CommonConfigService {
*/
PageResult<CommonConfigDO> getConfigPage(CommonConfigPageReqVO pageReqVO);
}
}

View File

@ -1,16 +1,14 @@
package cn.iocoder.yudao.module.system.service.config;
import cn.hutool.core.date.DateTime;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.system.controller.admin.config.vo.CommonConfigPageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.config.vo.CommonConfigSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.config.vo.CommonConfigVO;
import cn.iocoder.yudao.module.system.controller.admin.config.vo.*;
import cn.iocoder.yudao.module.system.controller.admin.log.vo.UserOperationLogSaveReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.config.CommonConfigDO;
import cn.iocoder.yudao.module.system.dal.dataobject.robot.RobotTaskDetailDO;
import cn.iocoder.yudao.module.system.dal.mysql.config.CommonConfigMapper;
import cn.iocoder.yudao.module.system.enums.common.ZeroOneEnum;
import cn.iocoder.yudao.module.system.enums.config.CommandConfigTypeEnum;
@ -19,11 +17,20 @@ import cn.iocoder.yudao.module.system.service.tool.ToolsService;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.CONFIG_NOT_EXISTS;
@ -167,4 +174,4 @@ public class CommonConfigServiceImpl implements CommonConfigService {
return configMapper.selectPage(pageReqVO);
}
}
}

View File

@ -30,7 +30,8 @@ import java.util.List;
import java.util.stream.Collectors;
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.module.system.enums.ErrorCodeConstants.HOUSE_AREA_NOT_EXISTS;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.THERE_ARE_ALREADY_STORAGE_LOCATIONS_IN_OTHER_STORAGE_AREAS;
/**
* 库区 Service 实现类
@ -94,15 +95,6 @@ public class HouseAreaServiceImpl extends ServiceImpl<HouseAreaMapper, HouseArea
@Override
@Transactional(rollbackFor = Exception.class)
public void createOrEditOrDel(HouseAreaSaveReqVO createReqVO) {
// 判断名称唯一
Long count = houseAreaMapper.selectCount(
new LambdaQueryWrapper<HouseAreaDO>()
.eq(HouseAreaDO::getAreaName, createReqVO.getAreaName())
.ne(ObjectUtil.isNotNull(createReqVO.getId()), HouseAreaDO::getId, createReqVO.getId())
);
if (count > 0) {
throw exception(DUPLICATE_RESERVOIR_NAME);
}
HouseAreaDO houseArea = BeanUtil.copyProperties(createReqVO, HouseAreaDO.class);
houseAreaMapper.insertOrUpdate(houseArea);
// -- 先判定这些点位是否在同一区域内 - 如果不在则提示 哪些点位不在同一区域内
@ -113,12 +105,12 @@ public class HouseAreaServiceImpl extends ServiceImpl<HouseAreaMapper, HouseArea
.setAreaId(createReqVO.getId())
.setType(NodeTypeEnum.WARE.getType()));
//2.查询目前的地图所有的库位点位列表 - 如果没有的话 - 就设为空列表先 -
List<PositionMapItemDO> list = positionMapItemService.getByCondition(new PositionMapConditionDTO()
//2.查询目前的点位列表 - 如果没有的话 - 就设为空列表先 -
List<PositionMapItemDO> list = CollUtil.isEmpty(createReqVO.getMapItemIds()) ? Collections.emptyList() :
positionMapItemService.getByCondition(new PositionMapConditionDTO()
.setPositionMapId(createReqVO.getPositionMapId())
.setType(NodeTypeEnum.WARE.getType())
.setIds(createReqVO.getMapItemIds())
.setAreaId(createReqVO.getId()));
.setIds(createReqVO.getMapItemIds()));
//3.判定当前这些点位是否已经有包含线库了 -
List<PositionMapItemDO> containList = list.stream().filter(a -> a.getAreaId() != null && !a.getAreaId().equals(createReqVO.getId())).collect(Collectors.toList());

View File

@ -7,16 +7,17 @@ import cn.hutool.json.JSONUtil;
import cn.iocoder.yudao.framework.common.enums.NodeTypeEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.system.controller.admin.houselane.vo.WareHouseLanePageReqVO;
import cn.iocoder.yudao.module.system.controller.admin.houselane.vo.WareHouseLaneSaveReqVO;
import cn.iocoder.yudao.module.system.controller.admin.positionmap.dto.PositionMapConditionDTO;
import cn.iocoder.yudao.module.system.dal.dataobject.housearea.HouseAreaDO;
import cn.iocoder.yudao.module.system.dal.dataobject.houselane.WareHouseLaneDO;
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.dal.mysql.houselane.WareHouseLaneMapper;
import cn.iocoder.yudao.module.system.service.houselocation.HouseLocationService;
import cn.iocoder.yudao.module.system.service.positionmap.PositionMapItemService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -29,7 +30,8 @@ import java.util.List;
import java.util.stream.Collectors;
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.module.system.enums.ErrorCodeConstants.THERE_ARE_ALREADY_STORAGE_LOCATIONS_IN_OTHER_LINE_WAREHOUSES;
import static cn.iocoder.yudao.module.system.enums.ErrorCodeConstants.THE_LINE_LIBRARY_POINTS_ARE_NOT_LOCATED_IN_THE_SAME_AREA;
/**
@ -68,15 +70,6 @@ public class WareHouseLaneServiceImpl extends ServiceImpl<WareHouseLaneMapper, W
@Override
@Transactional(rollbackFor = Exception.class)
public void createOrEditOrDel(WareHouseLaneSaveReqVO createReqVO) {
// 判断名称唯一
Long num = houseLaneMapper.selectCount(
new LambdaQueryWrapper<WareHouseLaneDO>()
.eq(WareHouseLaneDO::getLaneName, createReqVO.getLaneName())
.ne(ObjectUtil.isNotNull(createReqVO.getId()), WareHouseLaneDO::getId, createReqVO.getId())
);
if (num > 0) {
throw exception(DUPLICATE_LINE_LIBRARY_NAME);
}
WareHouseLaneDO houseLane = BeanUtil.copyProperties(createReqVO, WareHouseLaneDO.class);
houseLaneMapper.insertOrUpdate(houseLane);
// -- 先判定这些点位是否在同一区域内 - 如果不在则提示 哪些点位不在同一区域内
@ -88,9 +81,9 @@ public class WareHouseLaneServiceImpl extends ServiceImpl<WareHouseLaneMapper, W
.setType(NodeTypeEnum.WARE.getType()));
//2.查询目前的点位列表 - 如果没有的话 - 就设为空列表先 -
List<PositionMapItemDO> list = positionMapItemService.getByCondition(new PositionMapConditionDTO()
List<PositionMapItemDO> list = CollUtil.isEmpty(createReqVO.getMapItemIds()) ? Collections.emptyList() :
positionMapItemService.getByCondition(new PositionMapConditionDTO()
.setPositionMapId(createReqVO.getPositionMapId())
.setLaneId(createReqVO.getId())
.setType(NodeTypeEnum.WARE.getType())
.setIds(createReqVO.getMapItemIds()));

View File

@ -29,7 +29,6 @@ import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@ -119,10 +118,9 @@ public class PositionMapServiceImpl extends ServiceImpl<PositionMapMapper, Posit
byte[] bytes = yamlFile.getBytes();
// Parse the YAML file
Yaml yaml = new Yaml();
Map<String, Object> data = yaml.load(new String(bytes,StandardCharsets.UTF_8));
Map<String, Object> data = yaml.load(new String(bytes));
Object floor = data.get("floor");
Object area = data.get("area");
// -- 根据楼和区域查询是否有存在地图信息 - 如果有存在则替换 - 并且通知所有该楼该区域的AGV
if (ObjUtil.isEmpty(floor) || ObjUtil.isEmpty(area)) {
throw exception(AGV_UPLOAD_INFORMATION_DOES_NOT_INCLUDE_FLOOR_OR_AREA_INFORMATION);

View File

@ -413,13 +413,12 @@ public class RobotInformationServiceImpl extends ServiceImpl<RobotInformationMap
public List<RobotInfoStatusVO> getAGVListStatusInfo() {
List<RobotInfoStatusVO> list = new ArrayList<>();
// -- 先从缓存中 获取AGV状态信息 - 如果没有的话 - 再从数据库中获取 - 并且缓存到redis中
List<RobotInformationDO> robotInformationDOS = informationMapper.selectList();
if (CollUtil.isEmpty(robotInformationDOS)) {
List<RobotInformationDO> robotInformationDO = informationMapper.selectList();
if (robotInformationDO == null) {
return list;
}
for (RobotInformationDO informationDO : robotInformationDOS) {
for (RobotInformationDO informationDO : robotInformationDO) {
RobotInfoStatusVO vo = new RobotInfoStatusVO();
vo.setMacAddress(informationDO.getMacAddress());
//0待命1任务中2锁定3离线4:充电中5:故障
String pose2dKey = RobotTaskChcheConstant.ROBOT_INFORMATION_POSE_BAT_SOC + informationDO.getMacAddress();
Object object = redisUtil.get(pose2dKey);

View File

@ -231,7 +231,3 @@ zn:
robot_config: #机器人取放货默认配置
offset_height: 0.1 #叉起货需要在原来高度基础上偏移的高度
default_tray_height: 1.1 #默认每层高度
logging:
file:
name: D:/project/rcs/logs/${spring.application.name}.log