diff --git a/src/main/java/com/wms/controller/ExcelController.java b/src/main/java/com/wms/controller/ExcelController.java index 6bfd5d0..e8c642c 100644 --- a/src/main/java/com/wms/controller/ExcelController.java +++ b/src/main/java/com/wms/controller/ExcelController.java @@ -336,7 +336,7 @@ public class ExcelController { // 查询参数 List stockPoList = stockService.list(new LambdaQueryWrapper() .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())); diff --git a/src/main/java/com/wms/controller/KateWorkQueryController.java b/src/main/java/com/wms/controller/KateWorkQueryController.java index ef75a68..5303dc3 100644 --- a/src/main/java/com/wms/controller/KateWorkQueryController.java +++ b/src/main/java/com/wms/controller/KateWorkQueryController.java @@ -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 page = workFlowQuery.toMpPage(); + Page workFlowsPage = workFlowService.page(page, new LambdaQueryWrapper() + .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 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().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); + } + } } \ No newline at end of file diff --git a/src/main/java/com/wms/controller/LocationController.java b/src/main/java/com/wms/controller/LocationController.java index 3d64e45..21137f3 100644 --- a/src/main/java/com/wms/controller/LocationController.java +++ b/src/main/java/com/wms/controller/LocationController.java @@ -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 { diff --git a/src/main/java/com/wms/controller/StockController.java b/src/main/java/com/wms/controller/StockController.java index beaeb3b..1bdfced 100644 --- a/src/main/java/com/wms/controller/StockController.java +++ b/src/main/java/com/wms/controller/StockController.java @@ -75,7 +75,7 @@ public class StockController { Page page = stockQuery.toMpPage(); Page stockPage = stockService.page(page, new LambdaQueryWrapper() .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()) diff --git a/src/main/java/com/wms/controller/TaskMonitorController.java b/src/main/java/com/wms/controller/TaskMonitorController.java index 172e914..91b5937 100644 --- a/src/main/java/com/wms/controller/TaskMonitorController.java +++ b/src/main/java/com/wms/controller/TaskMonitorController.java @@ -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().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); + } + } } diff --git a/src/main/java/com/wms/entity/app/request/PickTaskQuery.java b/src/main/java/com/wms/entity/app/request/PickTaskQuery.java index 16f097f..57afbd3 100644 --- a/src/main/java/com/wms/entity/app/request/PickTaskQuery.java +++ b/src/main/java/com/wms/entity/app/request/PickTaskQuery.java @@ -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); + } } diff --git a/src/main/java/com/wms/entity/app/request/WorkFlowQuery.java b/src/main/java/com/wms/entity/app/request/WorkFlowQuery.java new file mode 100644 index 0000000..d454868 --- /dev/null +++ b/src/main/java/com/wms/entity/app/request/WorkFlowQuery.java @@ -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; + } +} diff --git a/src/main/java/com/wms/entity/app/vo/WorkFlowVo.java b/src/main/java/com/wms/entity/app/vo/WorkFlowVo.java new file mode 100644 index 0000000..18986cc --- /dev/null +++ b/src/main/java/com/wms/entity/app/vo/WorkFlowVo.java @@ -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; +}