代码更新:

1.增加标签打印
This commit is contained in:
梁州 2024-08-09 15:44:51 +08:00
parent 812558df92
commit 1e14df8455
8 changed files with 285 additions and 31 deletions

View File

@ -72,7 +72,7 @@ public class StockController {
.apply(StringUtils.isNotEmpty(stockQuery.getGoodsId()), "goods_related ->> '$.goodsId' like concat('%', {0}, '%')", stockQuery.getGoodsId()) .apply(StringUtils.isNotEmpty(stockQuery.getGoodsId()), "goods_related ->> '$.goodsId' like concat('%', {0}, '%')", stockQuery.getGoodsId())
.apply(StringUtils.isNotEmpty(stockQuery.getGoodsName()), "goods_related ->> '$.goodsName' like concat('%', {0}, '%')", stockQuery.getGoodsName())); .apply(StringUtils.isNotEmpty(stockQuery.getGoodsName()), "goods_related ->> '$.goodsName' like concat('%', {0}, '%')", stockQuery.getGoodsName()));
PageDto<StockVo> pageDto = PageDto.of(stockPage, stock -> BeanUtil.copyProperties(stock, StockVo.class)); PageDto<StockVo> pageDto = PageDto.of(stockPage, StockVo::of);
response.setCode(ResponseCode.OK.getCode()); response.setCode(ResponseCode.OK.getCode());
response.setMessage("查询库存成功"); response.setMessage("查询库存成功");
response.setReturnData(pageDto); response.setReturnData(pageDto);

View File

@ -10,6 +10,7 @@ import com.wms.constants.enums.*;
import com.wms.entity.app.*; import com.wms.entity.app.*;
import com.wms.entity.app.dto.PageDto; import com.wms.entity.app.dto.PageDto;
import com.wms.entity.app.dto.extend.StockDetailInfo; import com.wms.entity.app.dto.extend.StockDetailInfo;
import com.wms.entity.app.dto.extend.TaskDetailInfo;
import com.wms.entity.app.request.*; import com.wms.entity.app.request.*;
import com.wms.entity.app.vo.StandPickFinishVo; import com.wms.entity.app.vo.StandPickFinishVo;
import com.wms.entity.app.vo.StandPickVo; import com.wms.entity.app.vo.StandPickVo;
@ -297,7 +298,7 @@ public class TaskController {
// 如果是入库 // 如果是入库
if (inTask.getTaskId().startsWith("RK")) { if (inTask.getTaskId().startsWith("RK")) {
// 添加库存 // 添加库存
if (inTask.getGoodsRelated() != null && !inTask.getGoodsRelated().getGoodsId().isEmpty()) { if (inTask.getGoodsRelated() != null && StringUtils.isNotEmpty(inTask.getGoodsRelated().getGoodsId())) {
// 查询这个物料有没有库存 // 查询这个物料有没有库存
// TODO 查询条件根据项目要求调整 // TODO 查询条件根据项目要求调整
Stock existStock = stockService.getOne(new LambdaQueryWrapper<Stock>() Stock existStock = stockService.getOne(new LambdaQueryWrapper<Stock>()
@ -330,8 +331,7 @@ public class TaskController {
} }
// 更新库存状态 // 更新库存状态
List<Stock> backStocks = stockService.list(new LambdaQueryWrapper<Stock>() List<Stock> backStocks = stockService.list(new LambdaQueryWrapper<Stock>()
.eq(Stock::getVehicleId, inTask.getVehicleId()) .eq(Stock::getVehicleId, inTask.getVehicleId()));
.ne(Stock::getStockStatus, StockStatus.OK.getCode()));
backStocks.forEach(stock -> { backStocks.forEach(stock -> {
if (stock.getGoodsRelated().getRemainNum().compareTo(BigDecimal.ZERO) == 0) { if (stock.getGoodsRelated().getRemainNum().compareTo(BigDecimal.ZERO) == 0) {
// 库存数量为0时要删除当前库存 // 库存数量为0时要删除当前库存
@ -1894,8 +1894,45 @@ public class TaskController {
} }
} }
/**
* 请求打印标签的数据
*
* @param printRequest 请求信息
* @return 结果
*/
@PostMapping("/requestPrintData")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "请求打印标签的数据", logMethod = "requestPrintData")
public String requestPrintData(@RequestBody PrintRequest printRequest) {
logger.info("请求打印标签的数据:{}ip地址{}", convertJsonString(printRequest), HttpUtils.getIpAddr(servletRequest));
ResponseEntity response = new ResponseEntity();
try {
response.setCode(ResponseCode.OK.getCode());
response.setMessage("可以回库。");
return convertJsonString(response);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("处理回库请求异常,{}", convertJsonString(e));
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("处理回库请求异常。");
return convertJsonString(response);
}
}
/// 下面的代码8月10号之后需要删除
/** /**
* 特殊用法---请求拣选 * 特殊用法---请求拣选
* *
@ -1980,7 +2017,7 @@ public class TaskController {
tempOutTask.setTaskStatus(WmsTaskStatus.NEW.getCode()); tempOutTask.setTaskStatus(WmsTaskStatus.NEW.getCode());
tempOutTask.setTaskPriority(1); tempOutTask.setTaskPriority(1);
tempOutTask.setVehicleId(tempStock.getVehicleId()); tempOutTask.setVehicleId(tempStock.getVehicleId());
tempOutTask.setUserName("WMS_AUTO"); tempOutTask.setUserName(taskOutRequest.getUserName());
tempOutTask.setOrigin(tempStock.getLocationId()); tempOutTask.setOrigin(tempStock.getLocationId());
tempOutTask.setDestination(""); tempOutTask.setDestination("");
tempOutTask.setCreateTime(LocalDateTime.now()); tempOutTask.setCreateTime(LocalDateTime.now());
@ -2007,13 +2044,23 @@ public class TaskController {
} }
} else { } else {
List<Vehicle> vehicles = vehicleService.list(new LambdaQueryWrapper<Vehicle>() List<Vehicle> vehicles = vehicleService.list(new LambdaQueryWrapper<Vehicle>()
.eq(Vehicle::getVehicleStatus, VehicleStatus.ON.getCode())
.eq(StringUtils.isNotEmpty(taskOutRequest.getVehicleId()), Vehicle::getVehicleId, taskOutRequest.getVehicleId())); .eq(StringUtils.isNotEmpty(taskOutRequest.getVehicleId()), Vehicle::getVehicleId, taskOutRequest.getVehicleId()));
if (taskOutRequest.getGoodsNum() == null || taskOutRequest.getGoodsNum().compareTo(BigDecimal.ZERO) <= 0) {
logger.error("缺少数量!");
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("缺少数量!");
return convertJsonString(response);
}
BigDecimal needNum = taskOutRequest.getGoodsNum(); BigDecimal needNum = taskOutRequest.getGoodsNum();
// 出库任务列表 // 出库任务列表
List<Task> outTasks = new ArrayList<>(); List<Task> outTasks = new ArrayList<>();
// 载具列表 // 载具列表
List<String> vehicleIds = new ArrayList<>(); List<String> vehicleIds = new ArrayList<>();
for (Vehicle vehicle : vehicles) { for (Vehicle vehicle : vehicles) {
if (needNum.compareTo(BigDecimal.ZERO) <= 0) {
break;
}
if (vehicleIds.contains(vehicle.getVehicleId())) { if (vehicleIds.contains(vehicle.getVehicleId())) {
continue; continue;
} }
@ -2025,7 +2072,7 @@ public class TaskController {
tempOutTask.setTaskStatus(WmsTaskStatus.NEW.getCode()); tempOutTask.setTaskStatus(WmsTaskStatus.NEW.getCode());
tempOutTask.setTaskPriority(1); tempOutTask.setTaskPriority(1);
tempOutTask.setVehicleId(vehicle.getVehicleId()); tempOutTask.setVehicleId(vehicle.getVehicleId());
tempOutTask.setUserName("WMS_AUTO"); tempOutTask.setUserName(taskOutRequest.getUserName());
tempOutTask.setOrigin(vehicle.getCurrentLocation()); tempOutTask.setOrigin(vehicle.getCurrentLocation());
tempOutTask.setDestination(""); tempOutTask.setDestination("");
tempOutTask.setCreateTime(LocalDateTime.now()); tempOutTask.setCreateTime(LocalDateTime.now());
@ -2034,6 +2081,7 @@ public class TaskController {
outTasks.add(tempOutTask); outTasks.add(tempOutTask);
// 添加载具列表 // 添加载具列表
vehicleIds.add(vehicle.getVehicleId()); vehicleIds.add(vehicle.getVehicleId());
needNum = needNum.subtract(BigDecimal.ONE);
} }
// 保存出库任务至任务表 // 保存出库任务至任务表
taskService.saveBatch(outTasks); taskService.saveBatch(outTasks);
@ -2086,7 +2134,6 @@ public class TaskController {
pickTaskService.saveBatch(pickTasks); pickTaskService.saveBatch(pickTasks);
} }
/** /**
* 特殊用法---请求回库 * 特殊用法---请求回库
* *
@ -2156,6 +2203,7 @@ public class TaskController {
Stock newStock = new Stock(); Stock newStock = new Stock();
newStock.setStockId(generateId("ST_")); newStock.setStockId(generateId("ST_"));
newStock.setVehicleId(pickTask.getVehicleId()); newStock.setVehicleId(pickTask.getVehicleId());
newStock.setLocationId("");
newStock.setNoUseDays(0); newStock.setNoUseDays(0);
newStock.setIsInventory(0); newStock.setIsInventory(0);
newStock.setCreateTime(LocalDateTime.now()); newStock.setCreateTime(LocalDateTime.now());
@ -2197,4 +2245,132 @@ public class TaskController {
return convertJsonString(response); return convertJsonString(response);
} }
} }
/**
* 特殊用法---请求入库
*
* @param taskOutRequest 出库任务
* @return 结果
*/
@PostMapping("/requestInTest")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "特殊用法---请求入库", logMethod = "requestInTest")
public String requestInTest(@RequestBody TaskOutRequest taskOutRequest) {
logger.info("接收到特殊用法---请求入库:{}ip地址{}", convertJsonString(taskOutRequest), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity response = new ResponseEntity();
try {
// 获取站台号
String standId = "";
if (StringUtils.isNotEmpty(taskOutRequest.getPickStand())) {
// 站台号从请求参数中获取
standId = taskOutRequest.getPickStand();
} else {
// 站台号从ip获取
Stand standOfIp = standService.getOne(new LambdaQueryWrapper<Stand>()
.eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest))
.eq(Stand::getStandType, 2));
if (standOfIp != null && StringUtils.isNotEmpty(standOfIp.getStandId())) {
standId = standOfIp.getStandId();
}
}
if (StringUtils.isEmpty(standId)) {
logger.error("请求参数缺少站台号。");
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("请求参数缺少站台号。");
return convertJsonString(response);
}
if (StringUtils.isEmpty(taskOutRequest.getVehicleId())) {
logger.error("缺少箱号。");
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("缺少箱号。");
return convertJsonString(response);
}
// 查找当前箱子是否有其他等待入库的箱子
Task sameVehicleTempTask = taskService.getOne(new LambdaQueryWrapper<Task>()
.eq(Task::getVehicleId, taskOutRequest.getVehicleId())
.eq(Task::getTaskStatus, WmsTaskStatus.TEMP.getCode())
.eq(Task::getTaskType, TaskType.IN.getCode())
.last("limit 1"));
// 生成入库任务
if (sameVehicleTempTask != null) {// 有相同的箱子任务
if (StringUtils.isEmpty(taskOutRequest.getGoodsId())) {// 空托入库
logger.error("请勿重复入空箱!");
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("请勿重复入空箱!");
return convertJsonString(response);
} else {// 带料入库
String taskGroupId = sameVehicleTempTask.getTaskGroup();
Task tempInTask = new Task();
tempInTask.setTaskId(generateId("RK_"));
tempInTask.setTaskType(TaskType.IN.getCode());
tempInTask.setTaskStatus(WmsTaskStatus.TEMP.getCode());
tempInTask.setTaskGroup(taskGroupId);
tempInTask.setTaskPriority(1);
tempInTask.setVehicleId(taskOutRequest.getVehicleId());
tempInTask.setVehicleSize(1);
tempInTask.setWeight(BigDecimal.ONE);
tempInTask.setCreateTime(LocalDateTime.now());
tempInTask.setUserName(taskOutRequest.getUserName());
// 物料相关信息
TaskDetailInfo goodsRelatedInfo = new TaskDetailInfo();
goodsRelatedInfo.setGoodsId(taskOutRequest.getGoodsId());
goodsRelatedInfo.setGoodsName(taskOutRequest.getGoodsId());
goodsRelatedInfo.setOpNum(taskOutRequest.getGoodsNum());
goodsRelatedInfo.setOriginNum(BigDecimal.ZERO);
tempInTask.setGoodsRelated(goodsRelatedInfo);
taskService.save(tempInTask);
}
} else {// 没有这个箱子的任务
if (StringUtils.isEmpty(taskOutRequest.getGoodsId())) {// 空托入库
Task tempInTask = new Task();
tempInTask.setTaskId(generateId("RK_"));
tempInTask.setTaskType(TaskType.IN.getCode());
tempInTask.setTaskStatus(WmsTaskStatus.TEMP.getCode());
tempInTask.setTaskGroup(generateId(""));
tempInTask.setTaskPriority(1);
tempInTask.setVehicleId(taskOutRequest.getVehicleId());
tempInTask.setVehicleSize(1);
tempInTask.setWeight(BigDecimal.ONE);
tempInTask.setCreateTime(LocalDateTime.now());
tempInTask.setUserName(taskOutRequest.getUserName());
taskService.save(tempInTask);
} else {// 带料入库
Task tempInTask = new Task();
tempInTask.setTaskId(generateId("RK_"));
tempInTask.setTaskType(TaskType.IN.getCode());
tempInTask.setTaskStatus(WmsTaskStatus.TEMP.getCode());
tempInTask.setTaskGroup(generateId(""));
tempInTask.setTaskPriority(1);
tempInTask.setVehicleId(taskOutRequest.getVehicleId());
tempInTask.setVehicleSize(1);
tempInTask.setWeight(BigDecimal.ONE);
tempInTask.setCreateTime(LocalDateTime.now());
tempInTask.setUserName(taskOutRequest.getUserName());
// 物料相关信息
TaskDetailInfo goodsRelatedInfo = new TaskDetailInfo();
goodsRelatedInfo.setGoodsId(taskOutRequest.getGoodsId());
goodsRelatedInfo.setGoodsName(taskOutRequest.getGoodsId());
goodsRelatedInfo.setOpNum(taskOutRequest.getGoodsNum());
goodsRelatedInfo.setOriginNum(BigDecimal.ZERO);
tempInTask.setGoodsRelated(goodsRelatedInfo);
taskService.save(tempInTask);
}
}
logger.info("请求入库成功!");
response.setCode(ResponseCode.OK.getCode());
response.setMessage("请求入库成功");
return convertJsonString(response);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("发生异常:{}", convertJsonString(e));
// 返回其他异常
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("发生异常");
return convertJsonString(response);
}
}
} }

View File

@ -1,7 +1,6 @@
package com.wms.controller; package com.wms.controller;
import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON;
import com.wms.annotation.MyLog; import com.wms.annotation.MyLog;
import com.wms.constants.enums.ResponseCode; import com.wms.constants.enums.ResponseCode;
import com.wms.entity.app.dto.MenuDto; import com.wms.entity.app.dto.MenuDto;

View File

@ -0,0 +1,21 @@
package com.wms.entity.app.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* 打印标签数据请求
*/
@Data
public class PrintRequest {
/**
* 站台号
*/
@JsonProperty("standId")
private String standId;
/**
* 用户名
*/
@JsonProperty("userName")
private String userName;
}

View File

@ -0,0 +1,54 @@
package com.wms.entity.app.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 打印标签数据
*/
@Data
public class BoxPrintData {
/**
* 顺序号
*/
@JsonProperty("sequenceNo")
private Integer sequenceNo;
/**
* 机器序列号
*/
@JsonProperty("machineNo")
private String machineNo;
/**
* 工单
*/
@JsonProperty("workOrder")
private String workOrder;
/**
* 小工位
*/
@JsonProperty("smallWorkCenter")
private String smallWorkCenter;
/**
* 料号数量
*/
@JsonProperty("goodsCount")
private Integer goodsCount;
/**
* 零件数量
*/
@JsonProperty("goodsNumCount")
private BigDecimal goodsNumCount;
/**
* 配料人员
*/
@JsonProperty("opUser")
private String opUser;
/**
* 配料日期
*/
@JsonProperty("opTime")
private LocalDateTime opTime;
}

View File

@ -100,28 +100,28 @@ public class StockVo {
private BigDecimal totalNum; private BigDecimal totalNum;
/** /**
* 从数据库实体转换为excel对象 * 从数据库实体转换为前端显示
* @param stockPo 数据库实体 * @param stockPo 数据库实体
* @return excel对象 * @return excel对象
*/ */
public static StockExcelVo of(Stock stockPo) { public static StockVo of(Stock stockPo) {
StockExcelVo stockExcelVo = new StockExcelVo(); StockVo stockVo = new StockVo();
stockExcelVo.setStockId(stockPo.getStockId()); stockVo.setStockId(stockPo.getStockId());
stockExcelVo.setLocationId(stockPo.getLocationId()); stockVo.setLocationId(stockPo.getLocationId());
stockExcelVo.setVehicleId(stockPo.getVehicleId()); stockVo.setVehicleId(stockPo.getVehicleId());
stockExcelVo.setWeight(stockPo.getWeight()); stockVo.setWeight(stockPo.getWeight());
stockExcelVo.setStockStatus(stockPo.getStockStatus()); stockVo.setStockStatus(stockPo.getStockStatus());
stockExcelVo.setCreateTime(stockPo.getCreateTime()); stockVo.setCreateTime(stockPo.getCreateTime());
stockExcelVo.setLastUpdateTime(stockPo.getLastUpdateTime()); stockVo.setLastUpdateTime(stockPo.getLastUpdateTime());
stockExcelVo.setLastUpdateUser(stockPo.getLastUpdateUser()); stockVo.setLastUpdateUser(stockPo.getLastUpdateUser());
stockExcelVo.setIsInventory(stockPo.getIsInventory()); stockVo.setIsInventory(stockPo.getIsInventory());
stockExcelVo.setInventoryTaskId(stockPo.getInventoryTaskId()); stockVo.setInventoryTaskId(stockPo.getInventoryTaskId());
stockExcelVo.setNoUseDays(stockPo.getNoUseDays()); stockVo.setNoUseDays(stockPo.getNoUseDays());
stockExcelVo.setGoodsId(stockPo.getGoodsRelated().getGoodsId()); stockVo.setGoodsId(stockPo.getGoodsRelated().getGoodsId());
stockExcelVo.setGoodsName(stockPo.getGoodsRelated().getGoodsName()); stockVo.setGoodsName(stockPo.getGoodsRelated().getGoodsName());
stockExcelVo.setGoodsStatus(stockPo.getGoodsRelated().getGoodsStatus()); stockVo.setGoodsStatus(stockPo.getGoodsRelated().getGoodsStatus());
stockExcelVo.setRemainNum(stockPo.getGoodsRelated().getRemainNum()); stockVo.setRemainNum(stockPo.getGoodsRelated().getRemainNum());
stockExcelVo.setTotalNum(stockPo.getGoodsRelated().getTotalNum()); stockVo.setTotalNum(stockPo.getGoodsRelated().getTotalNum());
return stockExcelVo; return stockVo;
} }
} }

View File

@ -7,10 +7,13 @@ import com.wms.entity.app.dto.UserDto;
import com.wms.entity.table.User; import com.wms.entity.table.User;
import com.wms.mapper.UserMapper; import com.wms.mapper.UserMapper;
import com.wms.service.UserService; import com.wms.service.UserService;
import com.wms.utils.StringUtils;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
@Service @Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired)) @RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class UserServiceImplements extends ServiceImpl<UserMapper, User> implements UserService { public class UserServiceImplements extends ServiceImpl<UserMapper, User> implements UserService {
@ -20,7 +23,8 @@ public class UserServiceImplements extends ServiceImpl<UserMapper, User> impleme
public UserDto validateUser(User user, boolean withAuth) { public UserDto validateUser(User user, boolean withAuth) {
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<User>() LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<User>()
.eq(User::getLoginAccount, user.getLoginAccount()) .eq(User::getLoginAccount, user.getLoginAccount())
.eq(withAuth, User::getLoginPassword, user.getLoginPassword()); .or().eq(withAuth, User::getLoginPassword, user.getLoginPassword())
return BeanUtil.copyProperties(super.getOne(queryWrapper), UserDto.class); .or().eq(StringUtils.isEmpty(user.getLoginPassword()), User::getLoginAccount, null);
return BeanUtil.copyProperties(userMapper.selectOne(queryWrapper), UserDto.class);
} }
} }

View File

@ -17,7 +17,7 @@ spring:
# username: coder # username: coder
# password: coder # password: coder
# driver-class-name: com.mysql.cj.jdbc.Driver # driver-class-name: com.mysql.cj.jdbc.Driver
# 本地环境 # # 本地环境
url: jdbc:mysql://localhost:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true url: jdbc:mysql://localhost:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
username: developer username: developer
password: developer password: developer