代码更新

This commit is contained in:
梁州 2024-07-24 22:13:18 +08:00
parent 6b6331b237
commit 15dca6d413
12 changed files with 395 additions and 23 deletions

View File

@ -5,7 +5,8 @@ public enum ConfigMapKeyEnum {
URL_WCS_TASK("URL_WCS_TASK"), URL_WCS_TASK("URL_WCS_TASK"),
URL_NEW_DESTINATION("URL_NEW_DESTINATION"), URL_NEW_DESTINATION("URL_NEW_DESTINATION"),
URL_WCS_PICK_TASK("URL_WCS_PICK_TASK"), URL_WCS_PICK_TASK("URL_WCS_PICK_TASK"),
URL_WCS_E_TASK("URL_WCS_E_TASK"); URL_WCS_E_TASK("URL_WCS_E_TASK"),
URL_WCS_DISPOSE_VEHICLE("URL_WCS_DISPOSE_VEHICLE");
private final String configKey; private final String configKey;
ConfigMapKeyEnum(String configKey) { ConfigMapKeyEnum(String configKey) {
this.configKey = configKey; this.configKey = configKey;

View File

@ -17,7 +17,9 @@ import com.wms.entity.app.wcs.*;
import com.wms.entity.table.*; import com.wms.entity.table.*;
import com.wms.service.*; import com.wms.service.*;
import com.wms.service.business.IValidateService; import com.wms.service.business.IValidateService;
import com.wms.service.business.IWcsService;
import com.wms.service.business.IWmsTaskService; import com.wms.service.business.IWmsTaskService;
import com.wms.service.business.IWorkService;
import com.wms.utils.HttpUtils; import com.wms.utils.HttpUtils;
import com.wms.utils.StringUtils; import com.wms.utils.StringUtils;
import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletRequest;
@ -113,6 +115,18 @@ public class TaskController {
* 流转中物料箱号数据 * 流转中物料箱号数据
*/ */
private final OutsideVehiclesService outsideVehiclesService; private final OutsideVehiclesService outsideVehiclesService;
/**
* 拣选任务记录服务
*/
private final PickTaskRecordService pickTaskRecordService;
/**
* Wcs服务
*/
private final IWcsService wcsService;
/**
* 工作服务
*/
private final IWorkService workService;
/** /**
* 接收入库任务请求 * 接收入库任务请求
@ -1046,34 +1060,93 @@ public class TaskController {
return convertJsonString(response); return convertJsonString(response);
} }
// 查询当前站台的拣货任务 // 查询当前站台的拣货任务
PickTask pickTasks = pickTaskService.getOne(new LambdaQueryWrapper<PickTask>() PickTask pickTask = pickTaskService.getOne(new LambdaQueryWrapper<PickTask>()
.eq(PickTask::getStandId, standId) .eq(PickTask::getStandId, standId)
.eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode())); .eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode()));
if (pickTasks == null) { if (pickTask == null) {
// 没有拣货任务直接放行 // 没有拣货任务直接放行
// TODO 调用Wcs的放行接口 // 调用Wcs的放行接口
wcsService.sendWcsDisposeVehicle(new WcsDisposeVehicleRequest(standId, null));
response.setCode(ResponseCode.OK.getCode());
response.setMessage("确认成功,放行");
} else { } else {
// 查询当前载具上的流转中的物料 // 查询当前载具上的流转中的物料
List<OutsideVehicles> outsideVehicles = outsideVehiclesService.list(new LambdaQueryWrapper<OutsideVehicles>() List<OutsideVehicles> outsideVehicles = outsideVehiclesService.list(new LambdaQueryWrapper<OutsideVehicles>()
.eq(OutsideVehicles::getVehicleId, pickTasks.getVehicleId())); .eq(OutsideVehicles::getVehicleId, pickTask.getVehicleId()));
List<String> goodsIdList = new ArrayList<>(); List<String> goodsIdList = new ArrayList<>();
if (outsideVehicles != null && !outsideVehicles.isEmpty()) { if (outsideVehicles != null && !outsideVehicles.isEmpty()) {
for (OutsideVehicles outsideVehicle : outsideVehicles) { for (OutsideVehicles outsideVehicle : outsideVehicles) {
// 料号不对应
if (Objects.equals(outsideVehicle.getGoodsId(), workConfirmRequest.getGoodsId())) { if (Objects.equals(outsideVehicle.getGoodsId(), workConfirmRequest.getGoodsId())) {
continue; continue;
} }
if (!goodsIdList.contains(outsideVehicle.getGoodsId())) {
goodsIdList.add(outsideVehicle.getGoodsId());
}
} }
} }
if (goodsIdList.size() > 0) {
// 判断这些物料是不是当前站台的工作流中人否需要
if (workFlowService.exists(new LambdaQueryWrapper<WorkFlow>()
.eq(WorkFlow::getWorkStation, standId)
.in(WorkFlow::getGoodsId, goodsIdList)
.ne(WorkFlow::getWorkStatus, 2))) {
// 需要不放行返回前台提示信息
StandPickVo pickVoEntity = new StandPickVo();
pickVoEntity.setTip("当前料箱还有其他物料需要拣货");
response.setCode(ResponseCode.WARNING.getCode());
response.setMessage("当前料箱还有其他物料需要拣货");
response.setReturnData(pickVoEntity);
} else {
// 存储拣选记录
PickTaskRecord pickTaskRecord = BeanUtil.copyProperties(pickTask, PickTaskRecord.class);
pickTaskRecord.setLastUpdateTime(LocalDateTime.now());
pickTaskRecordService.save(pickTaskRecord);
// 删除当前拣选任务
pickTaskService.removeById(pickTask);
// 不需要放行
wcsService.sendWcsDisposeVehicle(new WcsDisposeVehicleRequest(standId, pickTask.getVehicleId()));
// 判断是不是已经完成工作
if (workFlowService.exists(new LambdaQueryWrapper<WorkFlow>()
.eq(WorkFlow::getWorkStation, standId)
.ne(WorkFlow::getWorkStatus, 2))) {
// 当前站台工作未全部完成
response.setMessage("确认成功,放行");
} else {
// 当前站台工作已全部完成需要提示工作完成打印标签
response.setMessage("当前工作已经全部完成,请至完成界面进行后续工作。");
}
response.setCode(ResponseCode.OK.getCode());
}
} else {
// 存储拣选记录
PickTaskRecord pickTaskRecord = BeanUtil.copyProperties(pickTask, PickTaskRecord.class);
pickTaskRecord.setLastUpdateTime(LocalDateTime.now());
pickTaskRecordService.save(pickTaskRecord);
// 删除当前拣选任务
pickTaskService.removeById(pickTask);
// 放行
wcsService.sendWcsDisposeVehicle(new WcsDisposeVehicleRequest(standId, pickTask.getVehicleId()));
// 判断是不是已经完成工作
if (workFlowService.exists(new LambdaQueryWrapper<WorkFlow>()
.eq(WorkFlow::getWorkStation, standId)
.ne(WorkFlow::getWorkStatus, 2))) {
// 当前站台工作未全部完成
response.setMessage("确认成功,放行");
} else {
// 当前站台工作已全部完成需要提示工作完成打印标签
response.setMessage("当前工作已经全部完成,请至完成界面进行后续工作。");
}
response.setCode(ResponseCode.OK.getCode());
}
} }
return convertJsonString(response); return convertJsonString(response);
} catch (Exception e) { } catch (Exception e) {
// 回滚事务 // 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("获取工作信息异常"); logger.error("确认时发生异常:{}", convertJsonString(e));
response.setCode(ResponseCode.ERROR.getCode()); response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("获取工作信息异常"); response.setMessage("确认时发生异常");
return convertJsonString(response); return convertJsonString(response);
} }
} }
@ -1081,24 +1154,130 @@ public class TaskController {
/** /**
* Wcs请求释放箱子---站台实体按钮触发 * Wcs请求释放箱子---站台实体按钮触发
* *
* @param eTaskFeedbackRequest 反馈信息 * @param wcsDisposeVehicleRequest 请求信息
* @return 结果 * @return 结果
*/ */
@PostMapping("/requestFreeVehicle") @PostMapping("/requestFreeVehicle")
@ResponseBody @ResponseBody
@Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED) @Transactional(isolation = Isolation.REPEATABLE_READ, propagation = Propagation.REQUIRED)
@MyLog(logTitle = "Wcs请求释放箱子站台实体按钮触发", logMethod = "requestFreeVehicle") @MyLog(logTitle = "Wcs请求释放箱子站台实体按钮触发", logMethod = "requestFreeVehicle")
public String requestFreeVehicle(@RequestBody WcsETaskFeedbackRequest eTaskFeedbackRequest) { public String requestFreeVehicle(@RequestBody WcsDisposeVehicleRequest wcsDisposeVehicleRequest) {
logger.info("接收到获取备料工作信息请求:{}ip地址{}", convertJsonString(eTaskFeedbackRequest), HttpUtils.getIpAddr(servletRequest)); logger.info("Wcs请求释放箱子站台实体按钮触发{}ip地址{}", convertJsonString(wcsDisposeVehicleRequest), HttpUtils.getIpAddr(servletRequest));
ResponseEntity response = new ResponseEntity(); ResponseEntity response = new ResponseEntity();
try { try {
// 获取站台号
String standId = "";
if (StringUtils.isNotEmpty(wcsDisposeVehicleRequest.getLocation())) {
// 站台号从请求参数中获取
standId = wcsDisposeVehicleRequest.getLocation();
} else {
// 站台号从ip获取
Stand standOfIp = standService.getOne(new LambdaQueryWrapper<Stand>()
.eq(Stand::getStandIp, HttpUtils.getIpAddr(servletRequest))
.eq(Stand::getStandType, 1));
if (standOfIp != null && StringUtils.isNotEmpty(standOfIp.getStandId())) {
standId = standOfIp.getStandId();
}
}
if (StringUtils.isEmpty(standId)) {
// TODO 这里需要使用websocket从后台向前台推送消息
logger.error("请求参数缺少站台号。");
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("请求参数缺少站台号。");
return convertJsonString(response);
}
// 判断当前站台是否还有亮灯数据
if (etagLocationService.exists(new LambdaQueryWrapper<ETagLocation>()
.eq(ETagLocation::getWorkStation, standId)
.eq(ETagLocation::getPickStatus, 1))) {
// TODO 这里需要使用websocket从后台向前台推送消息
logger.error("站台灯光未全部拍灭,请检查。");
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("站台灯光未全部拍灭,请检查。");
return convertJsonString(response);
}
// 查询当前站台的拣货任务
PickTask pickTask = pickTaskService.getOne(new LambdaQueryWrapper<PickTask>()
.eq(PickTask::getStandId, standId)
.eq(PickTask::getPickStatus, PickTaskStatusEnum.FINISH.getCode()));
if (pickTask == null) {
// 没有拣货任务直接放行
// 调用Wcs的放行接口
wcsService.sendWcsDisposeVehicle(new WcsDisposeVehicleRequest(standId, null));
response.setCode(ResponseCode.OK.getCode());
response.setMessage("确认成功,放行");
} else {
// 查询当前载具上的流转中的物料
List<OutsideVehicles> outsideVehicles = outsideVehiclesService.list(new LambdaQueryWrapper<OutsideVehicles>()
.eq(OutsideVehicles::getVehicleId, pickTask.getVehicleId()));
List<String> goodsIdList = new ArrayList<>();
if (outsideVehicles != null && !outsideVehicles.isEmpty()) {
for (OutsideVehicles outsideVehicle : outsideVehicles) {
if (!goodsIdList.contains(outsideVehicle.getGoodsId())) {
goodsIdList.add(outsideVehicle.getGoodsId());
}
}
}
if (goodsIdList.size() > 0) {
// 判断这些物料是不是当前站台的工作流中人否需要
if (workFlowService.exists(new LambdaQueryWrapper<WorkFlow>()
.eq(WorkFlow::getWorkStation, standId)
.in(WorkFlow::getGoodsId, goodsIdList)
.ne(WorkFlow::getWorkStatus, 2))) {
// TODO 这里需要使用websocket从后台向前台推送消息
// 需要不放行返回前台提示信息
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("当前料箱还有其他物料需要拣货");
} else {
// 存储拣选记录
PickTaskRecord pickTaskRecord = BeanUtil.copyProperties(pickTask, PickTaskRecord.class);
pickTaskRecord.setLastUpdateTime(LocalDateTime.now());
pickTaskRecordService.save(pickTaskRecord);
// 删除当前拣选任务
pickTaskService.removeById(pickTask);
// 不需要放行
wcsService.sendWcsDisposeVehicle(new WcsDisposeVehicleRequest(standId, pickTask.getVehicleId()));
// 判断是不是已经完成工作
if (workFlowService.exists(new LambdaQueryWrapper<WorkFlow>()
.eq(WorkFlow::getWorkStation, standId)
.ne(WorkFlow::getWorkStatus, 2))) {
// 当前站台工作未全部完成
response.setMessage("确认成功,放行");
} else {
// 当前站台工作已全部完成需要提示工作完成打印标签
response.setMessage("当前工作已经全部完成,请至完成界面进行后续工作。");
}
response.setCode(ResponseCode.OK.getCode());
}
} else {
// 存储拣选记录
PickTaskRecord pickTaskRecord = BeanUtil.copyProperties(pickTask, PickTaskRecord.class);
pickTaskRecord.setLastUpdateTime(LocalDateTime.now());
pickTaskRecordService.save(pickTaskRecord);
// 删除当前拣选任务
pickTaskService.removeById(pickTask);
// 放行
wcsService.sendWcsDisposeVehicle(new WcsDisposeVehicleRequest(standId, pickTask.getVehicleId()));
// 判断是不是已经完成工作
if (workFlowService.exists(new LambdaQueryWrapper<WorkFlow>()
.eq(WorkFlow::getWorkStation, standId)
.ne(WorkFlow::getWorkStatus, 2))) {
// 当前站台工作未全部完成
response.setMessage("确认成功,放行");
} else {
// 当前站台工作已全部完成需要提示工作完成打印标签
response.setMessage("当前工作已经全部完成,请至完成界面进行后续工作。");
}
response.setCode(ResponseCode.OK.getCode());
}
}
return convertJsonString(response); return convertJsonString(response);
} catch (Exception e) { } catch (Exception e) {
// 回滚事务 // 回滚事务
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
logger.error("获取工作信息异常"); logger.error("Wcs请求释放箱子异常");
response.setCode(ResponseCode.ERROR.getCode()); response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("获取工作信息异常"); response.setMessage("Wcs请求释放箱子异常");
return convertJsonString(response); return convertJsonString(response);
} }
} }

View File

@ -0,0 +1,26 @@
package com.wms.entity.app.wcs;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* Wms请求输送线释放箱子
*/
@Data
public class WcsDisposeVehicleRequest {
/**
* 点位
*/
@JsonProperty("location")
private String location;
/**
* 载具号
*/
@JsonProperty("vehicleId")
private String vehicleId;
public WcsDisposeVehicleRequest(String location, String vehicleId) {
this.location = location;
this.vehicleId = vehicleId;
}
}

View File

@ -36,4 +36,14 @@ public class ELocationConfig {
*/ */
@TableField("order_box_no") @TableField("order_box_no")
private String orderBoxNo; private String orderBoxNo;
/**
* 是否打印
*/
@TableField("print_status")
private Integer printStatus = 0;
/**
* 是否打印
*/
@TableField("print_counts")
private Integer printCounts = 0;
} }

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
/** /**
* 工单明细 * 工单明细
@ -98,4 +99,9 @@ public class KateOrders {
*/ */
@TableField("user_name") @TableField("user_name")
private String userName; private String userName;
/**
* 完成时间
*/
@TableField("finish_time")
private LocalDateTime finishTime;
} }

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
/** /**
* 工单导入历史 * 工单导入历史
@ -97,4 +98,9 @@ public class KateOrdersHistory {
*/ */
@TableField("user_name") @TableField("user_name")
private String userName; private String userName;
/**
* 完成时间
*/
@TableField("finish_time")
private LocalDateTime finishTime;
} }

View File

@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data; import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.time.LocalDateTime;
/** /**
* 上一次导入的工单明细 * 上一次导入的工单明细
@ -97,4 +98,9 @@ public class KateOrdersLast {
*/ */
@TableField("user_name") @TableField("user_name")
private String userName; private String userName;
/**
* 完成时间
*/
@TableField("finish_time")
private LocalDateTime finishTime;
} }

View File

@ -0,0 +1,10 @@
package com.wms.service.business;
import com.wms.entity.app.wcs.WcsDisposeVehicleRequest;
/**
* Wcs服务
*/
public interface IWcsService {
void sendWcsDisposeVehicle(WcsDisposeVehicleRequest request) throws Exception;
}

View File

@ -20,5 +20,5 @@ public interface IWorkService {
* 完成工作 * 完成工作
* @param workStation 工作站台 * @param workStation 工作站台
*/ */
void finishWork(String workStation); String finishWork(String workStation) throws Exception;
} }

View File

@ -0,0 +1,60 @@
package com.wms.service.business.serviceImplements;
import com.alibaba.fastjson2.JSON;
import com.wms.constants.enums.ConfigMapKeyEnum;
import com.wms.constants.enums.ResponseCode;
import com.wms.entity.app.ResponseEntity;
import com.wms.entity.app.wcs.WcsDisposeVehicleRequest;
import com.wms.entity.table.WmsLog;
import com.wms.service.LogService;
import com.wms.service.business.IWcsService;
import com.wms.utils.HttpUtils;
import com.wms.utils.WmsUtils;
import lombok.RequiredArgsConstructor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
import java.util.Objects;
import static com.wms.config.InitLocalConfig.configMap;
import static com.wms.utils.StringUtils.convertJsonString;
/**
* Wcs服务实现类
*/
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class WcsServiceImplements implements IWcsService {
private final Logger logger = LoggerFactory.getLogger(this.getClass());// 日志
private final LogService logService;// 日志服务
/**
* Wms请求释放箱子
*/
@Override
public void sendWcsDisposeVehicle(WcsDisposeVehicleRequest request) throws Exception {
// 发送任务
String url = configMap.get(ConfigMapKeyEnum.URL_WCS_DISPOSE_VEHICLE.getConfigKey());
if (url != null) {
logger.info("向WCS发送释放箱子请求地址{},请求详情:{}", url, convertJsonString(request));
ResponseEntity result = JSON.parseObject(HttpUtils.sendHttpPostWithoutToken(url, convertJsonString(request)), ResponseEntity.class);
try {
logService.save(new WmsLog(WmsUtils.generateId("LOG_"), "向WCS发送释放箱子请求", ConfigMapKeyEnum.URL_WCS_DISPOSE_VEHICLE.getConfigKey(), convertJsonString(request), convertJsonString(result), url, LocalDateTime.now(), "WMS"));
} catch (Exception e) {
logger.error("插入日志错误");
}
if (result != null && Objects.equals(ResponseCode.OK.getCode(), result.getCode())) {
logger.info("Wms请求释放箱子成功");
} else {
logger.error("Wms请求释放箱子发生错误{}", convertJsonString(result));
throw new Exception("Wms请求释放箱子发生错误");
}
} else {
logger.error("WCS释放箱子地址为空");
throw new Exception("WCS释放箱子地址为空");
}
}
}

View File

@ -5,7 +5,6 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.wms.constants.enums.*; import com.wms.constants.enums.*;
import com.wms.entity.app.ResponseEntity; import com.wms.entity.app.ResponseEntity;
import com.wms.entity.app.request.TaskInRequest;
import com.wms.entity.app.wcs.WcsStandTaskRequest; import com.wms.entity.app.wcs.WcsStandTaskRequest;
import com.wms.entity.app.wcs.WcsTaskRequest; import com.wms.entity.app.wcs.WcsTaskRequest;
import com.wms.entity.table.PickTask; import com.wms.entity.table.PickTask;
@ -29,7 +28,6 @@ import java.util.*;
import static com.wms.config.InitLocalConfig.configMap; import static com.wms.config.InitLocalConfig.configMap;
import static com.wms.utils.StringUtils.convertJsonString; import static com.wms.utils.StringUtils.convertJsonString;
import static com.wms.utils.WmsUtils.generateId;
/** /**
* Wms定时任务服务实现 * Wms定时任务服务实现

View File

@ -39,8 +39,11 @@ public class WorkServiceImplements implements IWorkService {
private final TaskService taskService;// 任务服务 private final TaskService taskService;// 任务服务
private final PickTaskService pickTaskService;// 拣选任务服务 private final PickTaskService pickTaskService;// 拣选任务服务
private final VehicleService vehicleService;// 载具服务 private final VehicleService vehicleService;// 载具服务
private final WorkSummaryService workSummaryService;// 工作总结服务
private final List<String> workCreatingStations = new ArrayList<>();// 当前正在创建任务的站台 private final List<String> workCreatingStations = new ArrayList<>();// 当前正在创建任务的站台
private final List<String> workDoingStations = new ArrayList<>();// 当前正在执行任务的站台 private final List<String> workDoingStations = new ArrayList<>();// 当前正在执行任务的站台
private final List<String> workFinishingStations = new ArrayList<>();// 当前正在完成任务的站台
@Override @Override
public void createWork(String workStation) throws Exception { public void createWork(String workStation) throws Exception {
if (workCreatingStations.contains(workStation)) { if (workCreatingStations.contains(workStation)) {
@ -281,15 +284,80 @@ public class WorkServiceImplements implements IWorkService {
} }
@Override @Override
public void finishWork(String workStation) { public String finishWork(String workStation) throws Exception {
// TODO if (workFinishingStations.contains(workStation)) {
// 当前站台正在完成工作
return "当前站台正在完成工作,请勿重复操作";
} else {
// 添加站台
workFinishingStations.add(workStation);
}
try {
if (workFlowService.exists(new LambdaQueryWrapper<WorkFlow>()
.eq(WorkFlow::getWorkStation, workStation)
.ne(WorkFlow::getWorkStatus, 2))) {
// 当前站台工作未全部完成
return "工作未全部做完,不允许确认完成。";
}
if (eLocationConfigService.exists(new LambdaQueryWrapper<ELocationConfig>()
.eq(ELocationConfig::getWorkStation, workStation)
.eq(ELocationConfig::getPrintStatus, 0))) {
// 有标签未打印
return "有标签未打印";
}
// 删除所有的标签配置
eLocationConfigService.remove(new LambdaQueryWrapper<ELocationConfig>()
.eq(ELocationConfig::getWorkStation, workStation));
// 查询当前站台的所有工作流列表
List<WorkFlow> workFlowList = workFlowService.list(new LambdaQueryWrapper<WorkFlow>()
.eq(WorkFlow::getWorkStation, workStation)
.eq(WorkFlow::getWorkStatus, 2));
// workSummary列表
List<WorkSummary> workSummaryList = new ArrayList<>();
for (WorkFlow workFlow : workFlowList) {
WorkSummary summary = new WorkSummary();
summary.setWorkFlowId(workFlow.getWorkFlowId());
summary.setWorkStation(workFlow.getWorkStation());
summary.setWorkOrder(workFlow.getWorkOrder());
summary.setWorkCenter(workFlow.getWorkCenter());
summary.setGoodsId(workFlow.getGoodsId());
summary.setPickedNum(workFlow.getPickedNum());
summary.setNeedNum(workFlow.getNeedNum());
summary.setLackNum(workFlow.getNeedNum().subtract(workFlow.getPickedNum()));
summary.setWorkDate(workFlow.getFinishTime());
summary.setWorkStatus(workFlow.getWorkStatus());
summary.setLackStatus(summary.getLackNum().compareTo(BigDecimal.ZERO) > 0 ? 1 : 0);
summary.setFinishTime(workFlow.getFinishTime());
workSummaryList.add(summary);
kateOrdersService.update(new LambdaUpdateWrapper<KateOrders>()
.set(KateOrders::getOrderStatus, 2)
.set(KateOrders::getFinishTime, LocalDateTime.now())
.set(KateOrders::getPickedQuantity, workFlow.getPickedNum())
.set(KateOrders::getLackQuantity, workFlow.getNeedNum().subtract(workFlow.getPickedNum()))
.eq(KateOrders::getOrderId, workFlow.getOrderId())
.eq(KateOrders::getSupplyArea, workFlow.getWorkCenter())
.eq(KateOrders::getGoodsId, workFlow.getGoodsId()));
}
workSummaryService.saveBatch(workSummaryList);
// 更新工单表
// 更新DBS表
} catch (Exception e) {
throw new Exception("完成站台:" + workStation + "工作发生异常!");
} finally {
// 当前站台工作完成
workFinishingStations.remove(workStation);
}
return "";
} }
/** /**
* 先找到MWL的小工位的配置 * 先找到MWL的小工位的配置
*
* @param workStation 工站 * @param workStation 工站
* @param workFlows 工作流/工作任务 * @param workFlows 工作流/工作任务
* @param model 机型 * @param model 机型
*/ */
private void findWorks(String workStation, List<WorkFlow> workFlows, String model) { private void findWorks(String workStation, List<WorkFlow> workFlows, String model) {
// 查到当前站台所有的小工位 // 查到当前站台所有的小工位
@ -380,6 +448,7 @@ public class WorkServiceImplements implements IWorkService {
/** /**
* 生成出库任务同时生成拣选任务 * 生成出库任务同时生成拣选任务
*
* @param waitForOutStocks 待出库库存 * @param waitForOutStocks 待出库库存
*/ */
private void createVehicleOutTaskAndPickTask(List<Stock> waitForOutStocks, String workStation) { private void createVehicleOutTaskAndPickTask(List<Stock> waitForOutStocks, String workStation) {
@ -456,9 +525,10 @@ public class WorkServiceImplements implements IWorkService {
/** /**
* 生成拣选任务 * 生成拣选任务
* @param vehicleIds 载具列表 *
* @param vehicleIds 载具列表
* @param workStation 工作站台 * @param workStation 工作站台
* @param pickStatus 任务状态只接受-10-1暂存不发送0可发送 * @param pickStatus 任务状态只接受-10-1暂存不发送0可发送
*/ */
private void createPickTasks(List<String> vehicleIds, String workStation, Integer pickStatus) { private void createPickTasks(List<String> vehicleIds, String workStation, Integer pickStatus) {
if (!Objects.equals(pickStatus, PickTaskStatusEnum.TEMP.getCode()) && !Objects.equals(pickStatus, PickTaskStatusEnum.NEW.getCode())) { if (!Objects.equals(pickStatus, PickTaskStatusEnum.TEMP.getCode()) && !Objects.equals(pickStatus, PickTaskStatusEnum.NEW.getCode())) {