代码更新:

1. 增加拣选任务界面的后台
2. 增加工作流界面的后台
3. 修改库存查询条件 库位:eq->like
This commit is contained in:
梁州 2024-09-10 17:03:32 +08:00
parent bc42c796d7
commit fdfebcd544
8 changed files with 350 additions and 11 deletions

View File

@ -336,7 +336,7 @@ public class ExcelController {
// 查询参数
List<Stock> stockPoList = stockService.list(new LambdaQueryWrapper<Stock>()
.like(StringUtils.isNotEmpty(stockQuery.getVehicleId()), Stock::getVehicleId, stockQuery.getVehicleId())
.eq(StringUtils.isNotEmpty(stockQuery.getLocationId()), Stock::getLocationId, stockQuery.getLocationId())
.like(StringUtils.isNotEmpty(stockQuery.getLocationId()), Stock::getLocationId, stockQuery.getLocationId())
.eq(stockQuery.getStockStatus() != null, Stock::getStockStatus, stockQuery.getStockStatus())
.apply(StringUtils.isNotEmpty(stockQuery.getGoodsId()), "goods_related ->> '$.goodsId' like concat('%', {0}, '%')" + MYSQL_JSON_CI, stockQuery.getGoodsId())
.apply(StringUtils.isNotEmpty(stockQuery.getGoodsName()), "goods_related ->> '$.goodsName' like concat('%', {0}, '%')" + MYSQL_JSON_CI, stockQuery.getGoodsName()));

View File

@ -11,13 +11,8 @@ import com.wms.entity.app.dto.PageDto;
import com.wms.entity.app.dto.StockOfGoodsDto;
import com.wms.entity.app.request.*;
import com.wms.entity.app.vo.*;
import com.wms.entity.table.KateDBS;
import com.wms.entity.table.KateOrders;
import com.wms.entity.table.WorkStationConfig;
import com.wms.service.KateDBSService;
import com.wms.service.KateOrdersService;
import com.wms.service.StockService;
import com.wms.service.WorkStationConfigService;
import com.wms.entity.table.*;
import com.wms.service.*;
import com.wms.utils.HttpUtils;
import com.wms.utils.StringUtils;
import jakarta.servlet.http.HttpServletRequest;
@ -68,6 +63,10 @@ public class KateWorkQueryController {
* 库存服务
*/
private final StockService stockService;
/**
* 工作流服务
*/
private final WorkFlowService workFlowService;
/**
* 请求头部信息
*/
@ -542,4 +541,83 @@ public class KateWorkQueryController {
return convertJsonString(response);
}
}
/**
* 查询工作流
*/
@PostMapping("/getWorkFlows")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "查询工作流", logMethod = "getWorkFlows")
public String getWorkFlows(@RequestBody WorkFlowQuery workFlowQuery) {
logger.info("接收到查询工作流请求:{}请求ip{}", convertJsonString(workFlowQuery), HttpUtils.getIpAddr(servletRequest));
ResponseEntity response = new ResponseEntity();
try {
Page<WorkFlow> page = workFlowQuery.toMpPage();
Page<WorkFlow> workFlowsPage = workFlowService.page(page, new LambdaQueryWrapper<WorkFlow>()
.eq(workFlowQuery.getLightStatus() != null, WorkFlow::getLightStatus, workFlowQuery.getLightStatus())
.eq(workFlowQuery.getWorkStatus() != null, WorkFlow::getWorkStatus, workFlowQuery.getWorkStatus())
.like(StringUtils.isNotEmpty(workFlowQuery.getWorkStation()), WorkFlow::getWorkStation, workFlowQuery.getWorkStation())
.like(StringUtils.isNotEmpty(workFlowQuery.getWorkOrder()), WorkFlow::getWorkOrder, workFlowQuery.getWorkOrder())
.like(StringUtils.isNotEmpty(workFlowQuery.getWorkCenter()), WorkFlow::getWorkCenter, workFlowQuery.getWorkCenter())
.like(StringUtils.isNotEmpty(workFlowQuery.getGoodsId()), WorkFlow::getGoodsId, workFlowQuery.getGoodsId()));
PageDto<WorkFlowVo> pageDto = PageDto.of(workFlowsPage, workFlow -> BeanUtil.copyProperties(workFlow, WorkFlowVo.class));
logger.info("查询工作流成功。");
response.setCode(ResponseCode.OK.getCode());
response.setMessage("查询工作流成功。");
response.setReturnData(pageDto);
return convertJsonString(response);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("查询工作流发生异常:{}", convertJsonString(e));
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("查询工作流发生异常");
return convertJsonString(response);
}
}
/**
* 更新工作流信息
*
* @param workFlowQuery 请求参数
* @return 结果
*/
@PostMapping("/updateWorkFlows")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "更新工作流", logMethod = "updateWorkFlows")
public String updateWorkFlows(@RequestBody WorkFlowQuery workFlowQuery) {
logger.info("接收到更新工作流请求:{}请求ip{}", convertJsonString(workFlowQuery), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
if (StringUtils.isEmpty(workFlowQuery.getWorkFlowId())) {// id为空不允许执行
logger.error("请求的id为空不允许修改。");
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("请求的id为空不允许修改。");
return convertJsonString(rsp);
}
if (workFlowService.update(workFlowQuery.toWorkFlowPo(), new LambdaQueryWrapper<WorkFlow>().eq(WorkFlow::getWorkFlowId, workFlowQuery.getWorkFlowId()))) {
// 返回成功
logger.info("更新工作流信息成功。");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("更新工作流信息成功。");
} else {
// 返回失败
logger.error("更新工作流信息失败。");
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("更新工作流信息失败。");
}
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.info("更新工作流信息发生异常:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("更新工作流信息发生异常");
return convertJsonString(rsp);
}
}
}

View File

@ -317,9 +317,9 @@ public class LocationController {
@PostMapping("/updateVehicleInfo")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "更新载具信息", logMethod = "updateVehicleInfo")
@MyLog(logTitle = "更新料箱信息", logMethod = "updateVehicleInfo")
public String updateVehicleInfo(@RequestBody VehicleQuery vehicleQuery) {
logger.info("接收到更新载具信息信息请求:{}请求ip{}", convertJsonString(vehicleQuery), HttpUtils.getIpAddr(servletRequest));
logger.info("接收到更新料箱信息请求:{}请求ip{}", convertJsonString(vehicleQuery), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {

View File

@ -75,7 +75,7 @@ public class StockController {
Page<Stock> page = stockQuery.toMpPage();
Page<Stock> stockPage = stockService.page(page, new LambdaQueryWrapper<Stock>()
.like(StringUtils.isNotEmpty(stockQuery.getVehicleId()), Stock::getVehicleId, stockQuery.getVehicleId())
.eq(StringUtils.isNotEmpty(stockQuery.getLocationId()), Stock::getLocationId, stockQuery.getLocationId())
.like(StringUtils.isNotEmpty(stockQuery.getLocationId()), Stock::getLocationId, stockQuery.getLocationId())
.eq(stockQuery.getStockStatus() != null, Stock::getStockStatus, stockQuery.getStockStatus())
.apply(StringUtils.isNotEmpty(stockQuery.getGoodsId()), "goods_related ->> '$.goodsId' like concat('%', {0}, '%')" + MYSQL_JSON_CI, stockQuery.getGoodsId())
.apply(StringUtils.isNotEmpty(stockQuery.getGoodsName()), "goods_related ->> '$.goodsName' like concat('%', {0}, '%')" + MYSQL_JSON_CI, stockQuery.getGoodsName())

View File

@ -1,6 +1,7 @@
package com.wms.controller;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson2.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wms.annotation.MyLog;
@ -9,10 +10,12 @@ import com.wms.entity.app.ResponseEntity;
import com.wms.entity.app.dto.PageDto;
import com.wms.entity.app.request.PickTaskQuery;
import com.wms.entity.app.request.TaskQuery;
import com.wms.entity.app.request.VehicleQuery;
import com.wms.entity.app.vo.PickTaskVo;
import com.wms.entity.app.vo.TaskVO;
import com.wms.entity.table.PickTask;
import com.wms.entity.table.Task;
import com.wms.entity.table.Vehicle;
import com.wms.service.PickTaskService;
import com.wms.utils.HttpUtils;
import com.wms.utils.StringUtils;
@ -85,4 +88,49 @@ public class TaskMonitorController {
return convertJsonString(response);
}
}
/**
* 更新拣选任务信息
*
* @param pickTaskQuery 拣选任务请求
* @return 结果
*/
@PostMapping("/updatePickTaskInfo")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "更新拣选任务信息", logMethod = "updatePickTaskInfo")
public String updatePickTaskInfo(@RequestBody PickTaskQuery pickTaskQuery) {
logger.info("接收到更新拣选任务信息请求:{}请求ip{}", convertJsonString(pickTaskQuery), HttpUtils.getIpAddr(servletRequest));
// 创建响应信息
ResponseEntity rsp = new ResponseEntity();
try {
if (StringUtils.isEmpty(pickTaskQuery.getPickTaskId())) {// 拣选任务号为空
logger.error("缺少拣选任务号。");
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("缺少拣选任务号。");
return convertJsonString(rsp);
}
if (pickTaskService.update(pickTaskQuery.toPickTaskPo(), new LambdaQueryWrapper<PickTask>().eq(PickTask::getPickTaskId, pickTaskQuery.getPickTaskId()))) {
// 返回成功
logger.info("更新拣选任务信息成功。");
rsp.setCode(ResponseCode.OK.getCode());
rsp.setMessage("更新拣选任务信息成功。");
} else {
// 返回失败
logger.error("更新拣选任务信息失败。");
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("更新拣选任务信息失败。");
}
return convertJsonString(rsp);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.info("更新拣选任务信息发生异常:{}", convertJsonString(e));
// 返回其他异常
rsp.setCode(ResponseCode.ERROR.getCode());
rsp.setMessage("更新拣选任务信息发生异常");
return JSON.toJSONString(rsp);
}
}
}

View File

@ -1,6 +1,8 @@
package com.wms.entity.app.request;
import cn.hutool.core.bean.BeanUtil;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.wms.entity.table.PickTask;
import lombok.Data;
import lombok.EqualsAndHashCode;
@ -41,4 +43,12 @@ public class PickTaskQuery extends PageQuery {
*/
@JsonProperty("lastUpdateTime")
private LocalDateTime lastUpdateTime;
/**
* 转化为pickTaskPo
* @return 转化后的po
*/
public PickTask toPickTaskPo() {
return BeanUtil.copyProperties(this, PickTask.class);
}
}

View File

@ -0,0 +1,112 @@
package com.wms.entity.app.request;
import cn.hutool.core.bean.BeanUtil;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.wms.entity.table.PickTask;
import com.wms.entity.table.WorkFlow;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 工作流查询类
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class WorkFlowQuery extends PageQuery {
/**
* id
*/
@JsonProperty("workFlowId")
private String workFlowId;
/**
* 外键工单表id
*/
@JsonProperty("orderId")
private String orderId;
/**
* 工作站台
*/
@JsonProperty("workStation")
private String workStation;
/**
* 工单
*/
@JsonProperty("workOrder")
private String workOrder;
/**
* 工位
*/
@JsonProperty("workCenter")
private String workCenter;
/**
* 物料编号
*/
@JsonProperty("goodsId")
private String goodsId;
/**
* 已拣货数量
*/
@JsonProperty("pickedNum")
private BigDecimal pickedNum;
/**
* 需求数量
*/
@JsonProperty("needNum")
private BigDecimal needNum;
/**
* 亮灯状态
* 0未亮灯
* 1已亮灯
* 2已拍灯
*/
@JsonProperty("lightStatus")
private Integer lightStatus;
/**
* 工作状态
* 0未开始
* 1正在做
* 2已完成
*/
@JsonProperty("workStatus")
private Integer workStatus;
/**
* 任务创建时间
*/
@JsonProperty("createTime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 任务完成时间
*/
@JsonProperty("finishTime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime finishTime;
/**
* 操作人员
*/
@JsonProperty("opUser")
private String opUser;
/**
* 转化为WorkFlowPo
* @return 转化后的po
*/
public WorkFlow toWorkFlowPo() {
WorkFlow workFlow = BeanUtil.copyProperties(this, WorkFlow.class);
if (this.getWorkStatus() == 2) {
workFlow.setFinishTime(LocalDateTime.now());
workFlow.setOpUser(this.getUserName());
} else if (this.getWorkStatus() == 0) {
workFlow.setFinishTime(LocalDateTime.of(1, 1 , 1, 0, 0, 0));
workFlow.setOpUser("");
}
return workFlow;
}
}

View File

@ -0,0 +1,91 @@
package com.wms.entity.app.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;
import java.math.BigDecimal;
import java.time.LocalDateTime;
/**
* 工作流Vo
*/
@Data
public class WorkFlowVo {
/**
* id
*/
@JsonProperty("workFlowId")
private String workFlowId;
/**
* 外键工单表id
*/
@JsonProperty("orderId")
private String orderId;
/**
* 工作站台
*/
@JsonProperty("workStation")
private String workStation;
/**
* 工单
*/
@JsonProperty("workOrder")
private String workOrder;
/**
* 工位
*/
@JsonProperty("workCenter")
private String workCenter;
/**
* 物料编号
*/
@JsonProperty("goodsId")
private String goodsId;
/**
* 已拣货数量
*/
@JsonProperty("pickedNum")
private BigDecimal pickedNum;
/**
* 需求数量
*/
@JsonProperty("needNum")
private BigDecimal needNum;
/**
* 亮灯状态
* 0未亮灯
* 1已亮灯
* 2已拍灯
*/
@JsonProperty("lightStatus")
private Integer lightStatus;
/**
* 工作状态
* 0未开始
* 1正在做
* 2已完成
*/
@JsonProperty("workStatus")
private Integer workStatus;
/**
* 任务创建时间
*/
@JsonProperty("createTime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime createTime;
/**
* 任务完成时间
*/
@JsonProperty("finishTime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime finishTime;
/**
* 操作人员
*/
@JsonProperty("opUser")
private String opUser;
}