代码更新:

1.修复创建工作
2.增加拣选任务查询界面
This commit is contained in:
梁州 2024-09-09 20:35:13 +08:00
parent 061ef4050e
commit bc42c796d7
9 changed files with 233 additions and 60 deletions

View File

@ -124,7 +124,7 @@ public class JobComponent {
} catch (Exception e) { } catch (Exception e) {
// 回滚事务 // 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("创建工作时发生错误:{}", convertJsonString(e)); logger.error("创建工作时发生错误:{}", convertJsonString(e.getMessage()));
} }
} }
} }
@ -150,7 +150,7 @@ public class JobComponent {
} catch (Exception e) { } catch (Exception e) {
// 回滚事务 // 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("执行工作时发生错误:{}", convertJsonString(e)); logger.error("执行工作时发生错误:{}", convertJsonString(e.getMessage()));
} }
} }
} }

View File

@ -723,7 +723,7 @@ public class TaskController {
} }
/** /**
* 查找所有物料 * 查找所有任务
*/ */
@PostMapping("/getTasksByPage") @PostMapping("/getTasksByPage")
@ResponseBody @ResponseBody
@ -1072,9 +1072,7 @@ public class TaskController {
@PostMapping("/queryFinishByStandAndGoods") @PostMapping("/queryFinishByStandAndGoods")
@ResponseBody @ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "查询当前站台的正在拣选的物料是否完成", logMethod = "queryFinishByStandAndGoods")
public String queryFinishByStandAndGoods(@RequestBody WorkQuery workQuery) { public String queryFinishByStandAndGoods(@RequestBody WorkQuery workQuery) {
logger.info("查询当前站台的正在拣选的物料是否完成:{}ip地址{}", convertJsonString(workQuery), HttpUtils.getIpAddr(servletRequest));
ResponseEntity response = new ResponseEntity(); ResponseEntity response = new ResponseEntity();
try { try {
String validateInfo = validateService.validateGetWorkVoRequest(workQuery); String validateInfo = validateService.validateGetWorkVoRequest(workQuery);
@ -1206,6 +1204,7 @@ public class TaskController {
workFlow.setWorkStatus(2);// 已完成 workFlow.setWorkStatus(2);// 已完成
} }
// 更新workFlow // 更新workFlow
workFlow.setFinishTime(LocalDateTime.now());
workFlowService.updateById(workFlow); workFlowService.updateById(workFlow);
// 更新库存数量 // 更新库存数量
Stock existStock = stockService.getOne(new LambdaQueryWrapper<Stock>() Stock existStock = stockService.getOne(new LambdaQueryWrapper<Stock>()
@ -1919,7 +1918,6 @@ public class TaskController {
boolean hasInTask = taskService.exists(new LambdaQueryWrapper<Task>() boolean hasInTask = taskService.exists(new LambdaQueryWrapper<Task>()
.eq(Task::getVehicleId, requestBackQuery.getVehicleId()) .eq(Task::getVehicleId, requestBackQuery.getVehicleId())
.eq(Task::getTaskType, TaskType.IN.getCode()) .eq(Task::getTaskType, TaskType.IN.getCode())
.eq(Task::getTaskStatus, WmsTaskStatus.TEMP.getCode())
.likeRight(Task::getTaskId, "RK_")); .likeRight(Task::getTaskId, "RK_"));
if (hasInTask) { if (hasInTask) {
taskService.update(new LambdaUpdateWrapper<Task>() taskService.update(new LambdaUpdateWrapper<Task>()

View File

@ -0,0 +1,88 @@
package com.wms.controller;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.wms.annotation.MyLog;
import com.wms.constants.enums.ResponseCode;
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.vo.PickTaskVo;
import com.wms.entity.app.vo.TaskVO;
import com.wms.entity.table.PickTask;
import com.wms.entity.table.Task;
import com.wms.service.PickTaskService;
import com.wms.utils.HttpUtils;
import com.wms.utils.StringUtils;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.transaction.interceptor.TransactionAspectSupport;
import org.springframework.web.bind.annotation.*;
import static com.wms.utils.StringUtils.convertJsonString;
/**
* 任务监控控制类
*/
@Controller
@CrossOrigin
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
@RequestMapping(value = "/wms/taskMonitor")
public class TaskMonitorController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
/**
* 请求头部信息
*/
private final HttpServletRequest servletRequest;
/**
* 拣选任务服务
*/
private final PickTaskService pickTaskService;
/**
* 查询拣选任务---分页
*
* @param pickTaskQuery 查询参数
* @return 查询结果
*/
@PostMapping("/getPickTasksByPage")
@ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "查询拣选任务", logMethod = "getPickTasksByPage")
public String getTasksByPage(@RequestBody PickTaskQuery pickTaskQuery) {
logger.info("接收到查询拣选任务请求:{}ip地址{}", convertJsonString(pickTaskQuery), HttpUtils.getIpAddr(servletRequest));
ResponseEntity response = new ResponseEntity();
try {
Page<PickTask> page = pickTaskQuery.toMpPage();
//更新条件
LambdaQueryWrapper<PickTask> lambdaQueryWrapper = new LambdaQueryWrapper<PickTask>()
.eq(pickTaskQuery.getPickStatus() != null, PickTask::getPickStatus, pickTaskQuery.getPickStatus())
.like(StringUtils.isNotEmpty(pickTaskQuery.getPickTaskId()), PickTask::getPickTaskId, pickTaskQuery.getPickTaskId())
.like(StringUtils.isNotEmpty(pickTaskQuery.getVehicleId()), PickTask::getVehicleId, pickTaskQuery.getVehicleId())
.like(StringUtils.isNotEmpty(pickTaskQuery.getStandId()), PickTask::getStandId, pickTaskQuery.getStandId());
Page<PickTask> pickTasksPage = pickTaskService.page(page, lambdaQueryWrapper);
// 生成数据
PageDto<PickTaskVo> pageDto = PageDto.of(pickTasksPage, pickTasks -> BeanUtil.copyProperties(pickTasks, PickTaskVo.class));
response.setCode(ResponseCode.OK.getCode());
response.setMessage("查询拣选任务成功");
response.setReturnData(pageDto);
return convertJsonString(response);
} catch (Exception e) {
// 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("查询拣选任务发生异常");
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("查询拣选任务发生异常");
return convertJsonString(response);
}
}
}

View File

@ -0,0 +1,44 @@
package com.wms.entity.app.request;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
/**
* 拣选任务查询类
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class PickTaskQuery extends PageQuery {
/**
* 拣选任务号
*/
@JsonProperty("pickTaskId")
private String pickTaskId;
/**
* 载具号
*/
@JsonProperty("vehicleId")
private String vehicleId;
/**
* 站台号
*/
@JsonProperty("standId")
private String standId;
/**
* 拣选任务状态
* -1暂时不可发送
* 0初始化
* 1已发送
* 2已完成
*/
@JsonProperty("pickStatus")
private Integer pickStatus;
/**
* 最近更新时间
*/
@JsonProperty("lastUpdateTime")
private LocalDateTime lastUpdateTime;
}

View File

@ -0,0 +1,39 @@
package com.wms.entity.app.vo;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import java.time.LocalDateTime;
@Data
public class PickTaskVo {
/**
* 拣选任务号
*/
@JsonProperty("pickTaskId")
private String pickTaskId;
/**
* 载具号
*/
@JsonProperty("vehicleId")
private String vehicleId;
/**
* 站台号
*/
@JsonProperty("standId")
private String standId;
/**
* 拣选任务状态
* -1暂时不可发送
* 0初始化
* 1已发送
* 2已完成
*/
@JsonProperty("pickStatus")
private Integer pickStatus;
/**
* 最近更新时间
*/
@JsonProperty("lastUpdateTime")
private LocalDateTime lastUpdateTime;
}

View File

@ -232,7 +232,7 @@ public class ValidateServiceImplements implements IValidateService {
.eq(Task::getTaskType, TaskType.IN.getCode()) .eq(Task::getTaskType, TaskType.IN.getCode())
.eq(Task::getTaskStatus, WmsTaskStatus.TEMP.getCode()); .eq(Task::getTaskStatus, WmsTaskStatus.TEMP.getCode());
if (!taskService.exists(queryWrapper)) { if (!taskService.exists(queryWrapper)) {
return "当前载具没有入库或回库任务"; return "当前载具没有待下发的入库或回库任务";
} }
return ""; return "";

View File

@ -443,7 +443,7 @@ public class WmsJobServiceImplements implements IWmsJobService {
} catch (Exception e) { } catch (Exception e) {
logger.error("获取重要记录清理天数错误使用默认值365天"); logger.error("获取重要记录清理天数错误使用默认值365天");
} }
// 普通记录---入出库记录拣选任务记录
// 重要记录---盘点记录工作总结库存更新记录非计划领料记录上传文件记录 // 重要记录---盘点记录工作总结库存更新记录非计划领料记录上传文件记录
} catch (Exception exception) { } catch (Exception exception) {
// 回滚事务 // 回滚事务

View File

@ -66,11 +66,11 @@ public class WmsTaskServiceImplements implements IWmsTaskService {
tempInTask.setUserName(taskInRequest.getUserName()); tempInTask.setUserName(taskInRequest.getUserName());
try { try {
if (!taskService.save(tempInTask)) { if (!taskService.save(tempInTask)) {
return "添加空入库任务失败"; result = "添加空入库任务失败";
} }
} catch (Exception e) { } catch (Exception e) {
logger.error("添加空入库任务异常:{}", convertJsonString(e)); logger.error("添加空入库任务异常:{}", convertJsonString(e));
return "添加空入库任务失败"; result = "添加空入库任务失败";
} }
return result; return result;
} }

View File

@ -370,18 +370,19 @@ public class WorkServiceImplements implements IWorkService {
*/ */
private void findWorks(String workStation, List<WorkFlow> workFlows, String model) { private void findWorks(String workStation, List<WorkFlow> workFlows, String model) {
// 查到当前站台所有的小工位 // 查到当前站台所有的小工位
List<WorkStationConfig> currentStationConfigsOfNwl = workStationConfigService.list(new LambdaQueryWrapper<WorkStationConfig>() LambdaQueryWrapper<WorkStationConfig> stationConfigQueryWrapper = new LambdaQueryWrapper<WorkStationConfig>().eq(WorkStationConfig::getWorkStation, workStation);
.eq(WorkStationConfig::getWorkStation, workStation) if (Objects.equals(model, "MWL")) {
.eq(Objects.equals(model, "MWL"), WorkStationConfig::getModel, model) stationConfigQueryWrapper.eq(WorkStationConfig::getModel, "MWL");
.ne(!Objects.equals(model, "MWL"), WorkStationConfig::getModel, "MWL")); } else {
stationConfigQueryWrapper.ne(WorkStationConfig::getModel, "MWL");
}
List<WorkStationConfig> currentStationConfigsOfNwl = workStationConfigService.list(stationConfigQueryWrapper);
// 当前站台未分配库位 // 当前站台未分配库位
if (currentStationConfigsOfNwl == null || currentStationConfigsOfNwl.isEmpty()) { if (currentStationConfigsOfNwl == null || currentStationConfigsOfNwl.isEmpty()) {
return; return;
} }
// 今日开工的工单和小工位 // 今日开工的工单和小工位
Map<String, WorkCenterAndOrderDto> tasksOfTodayMap = new HashMap<>(); Map<String, List<WorkCenterAndOrderDto>> tasksOfTodayMap = new HashMap<>();
// 防止重复查询
Map<String, KateDBS> ordersAndDBSMap = new HashMap<>();
// 根据所有小工位查到对应的任务 // 根据所有小工位查到对应的任务
for (WorkStationConfig workConfig : currentStationConfigsOfNwl) { for (WorkStationConfig workConfig : currentStationConfigsOfNwl) {
// 查询当前小工位是否已经判断过开工日期 // 查询当前小工位是否已经判断过开工日期
@ -397,17 +398,17 @@ public class WorkServiceImplements implements IWorkService {
if (kateWorkOrders == null || kateWorkOrders.isEmpty()) { if (kateWorkOrders == null || kateWorkOrders.isEmpty()) {
continue; continue;
} }
List<WorkCenterAndOrderDto> toDaysOrders = new ArrayList<>();
// 防止重复查询
Map<String, KateDBS> ordersAndDBSMap = new HashMap<>();
for (KateOrders kateWorkOrder : kateWorkOrders) { for (KateOrders kateWorkOrder : kateWorkOrders) {
KateDBS kateDBS; if (!ordersAndDBSMap.containsKey(kateWorkOrder.getWorkOrder())) {
if (ordersAndDBSMap.containsKey(kateWorkOrder.getWorkOrder())) {
kateDBS = ordersAndDBSMap.get(kateWorkOrder.getWorkOrder());
} else {
// 从DBS表查询对应的工单以及开工时间 // 从DBS表查询对应的工单以及开工时间
kateDBS = kateDBSService.getOne(new LambdaQueryWrapper<KateDBS>() KateDBS kateDBS = kateDBSService.getOne(new LambdaQueryWrapper<KateDBS>()
.eq(KateDBS::getWorkOrder, kateWorkOrder.getWorkOrder()) .eq(KateDBS::getWorkOrder, kateWorkOrder.getWorkOrder())
.ne(KateDBS::getDbsStatus, 2) .ne(KateDBS::getDbsStatus, 2)
.orderByAsc(KateDBS::getWorkSequence)); .orderByAsc(KateDBS::getWorkSequence)
} .last("limit 1"));
if (kateDBS == null || StringUtils.isEmpty(kateDBS.getWorkOrder())) {// 不存在对应的工单计划 if (kateDBS == null || StringUtils.isEmpty(kateDBS.getWorkOrder())) {// 不存在对应的工单计划
continue; continue;
} }
@ -420,15 +421,17 @@ public class WorkServiceImplements implements IWorkService {
wcoDto.setWorkCenter(workConfig.getSmallBox()); wcoDto.setWorkCenter(workConfig.getSmallBox());
wcoDto.setWorkOrder(kateWorkOrder.getWorkOrder()); wcoDto.setWorkOrder(kateWorkOrder.getWorkOrder());
wcoDto.setStartDate(LocalDateTime.now().toLocalDate().atStartOfDay()); wcoDto.setStartDate(LocalDateTime.now().toLocalDate().atStartOfDay());
// 减少后续重复查询数据库 toDaysOrders.add(wcoDto);
tasksOfTodayMap.put(workConfig.getSmallBox(), wcoDto);
} }
} }
} }
tasksOfTodayMap.put(workConfig.getSmallBox(), toDaysOrders);
}
// 判断是否有今天开工的工单和小工位 // 判断是否有今天开工的工单和小工位
if (!tasksOfTodayMap.isEmpty()) { if (!tasksOfTodayMap.isEmpty()) {
for (String smallBoxKey : tasksOfTodayMap.keySet()) { for (String smallBoxKey : tasksOfTodayMap.keySet()) {
WorkCenterAndOrderDto currentWorkCenterAndOrderDto = tasksOfTodayMap.get(smallBoxKey); List<WorkCenterAndOrderDto> currentWorkCenterAndOrderDtoList = tasksOfTodayMap.get(smallBoxKey);
for (WorkCenterAndOrderDto currentWorkCenterAndOrderDto : currentWorkCenterAndOrderDtoList) {
// 通过工单表查询到对应的工单 // 通过工单表查询到对应的工单
List<KateOrders> kateWorkOrderList = kateOrdersService.list(new LambdaQueryWrapper<KateOrders>() List<KateOrders> kateWorkOrderList = kateOrdersService.list(new LambdaQueryWrapper<KateOrders>()
.eq(KateOrders::getWorkOrder, currentWorkCenterAndOrderDto.getWorkOrder()) .eq(KateOrders::getWorkOrder, currentWorkCenterAndOrderDto.getWorkOrder())
@ -455,3 +458,4 @@ public class WorkServiceImplements implements IWorkService {
} }
} }
} }
}