Commit 782479ec zshaohui

1.盘料仓和散料仓工单任务拆分

2.处理客户端发过来的msg 增加type类型
1 个父辈 8341952f
......@@ -80,9 +80,13 @@ public class XLRBoxHandler extends BaseDeviceHandler {
return statusBean;
}
protected void reelOnShelf(String cid, String posName){
DataLog task = taskService.findFinishedOutTask(cid,posName);
if(task != null){
protected void reelOnShelf(String cid, String posName) {
DataLog task = taskService.findFinishedOutTask(cid, posName);
if (task != null) {
if (task.isFinished()) {
log.info(task.getBarcode() + "库位:" + task.getPosName() + "状态已经完成,跳过");
return;
}
task.setStatus(OP_STATUS.FINISHED.name());
taskService.updateFinishedTask(task);
}
......
......@@ -15,7 +15,7 @@ public class MessageCriteria {
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "updateDate")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private BetweenData<Date> createDate;
private BetweenData<Date> updateDate;
@QueryCondition
......
......@@ -275,7 +275,15 @@ public class LiteOrderCache {
liteOrderItem.setOutReelCount(liteOrderItem.getOutReelCount() + 1);
liteOrderItem.setTotalOutNum(liteOrderItem.getTotalOutNum()+task.getNum());
liteOrderItem.setTotalOutReelCount(liteOrderItem.getTotalOutReelCount()+1);
liteOrderItem.setTaskFinished(true);
liteOrderItem.setPn(task.getPartNumber());
liteOrderItem = liteOrderItemManager.save(liteOrderItem);
if (liteOrderItem.isMultipleTask()) {
order.setMultipleFinishedTaskReelCount(order.getMultipleFinishedTaskReelCount() + 1);
} else {
order.setSingleFinishedTaskReelCount(order.getSingleFinishedTaskReelCount() + 1);
}
// Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
// if (barcode != null) {
// Float totalNeedNum = liteOrderItem.getNeedNum() * order.getOrderTimes();
......@@ -380,6 +388,9 @@ public class LiteOrderCache {
}
//liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder);
int taskReelCount = 0;
int singleTaskReelCount = 0; //盘料仓任务
int multipleTaskReelCount = 0; //散料仓任务
CHECKOUT_TYPE checkoutType = dataCache.getCheckOutType();
List<String> availableStorageIds = dataCache.getAvailableStorageIds();
......@@ -444,21 +455,54 @@ public class LiteOrderCache {
assignNum = assignNum + pos.getBarcode().getAmount();
taskReelCount = taskReelCount + 1;
log.info("工单[" + orderNo + "],任务数[" + taskReelCount + "]出库位置仓位【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "] PN=[" + partNumber + "] num:" + pos.getBarcode().getAmount());
DataLog task = newTask(pos) ;
task.setSourceId(cacheOrder.getId());
task.setSourceName(cacheOrder.getOrderNo());
task.setSubSourceId(orderItem.getId());
task.setSubSourceInfo(orderItem.getFeederInfo());
task.setType(OP.CHECKOUT);
task.setLightColor(nextColor.getRgb());
task.setStatus(OP_STATUS.WAIT.name());
task.setSlotnum(orderItem.getSlotNum());
//设置库位
orderItem.setPosName(pos.getPosName());
//判断是否为料箱
boolean isMultipleTask = false;
Barcode barcode = pos.getBarcode();
if (barcode.getSubCodeList() != null && !barcode.getSubCodeList().isEmpty()) {
multipleTaskReelCount = multipleTaskReelCount + 1;
isMultipleTask = true;
} else {
singleTaskReelCount = singleTaskReelCount + 1;
}
boolean hasTask = false;
if (isMultipleTask) {
orderItem.setMultipleTask(true);
orderItem.setBox(barcode.getBarcode());
List<DataLog> allTasks = taskService.getAllTasks();
for (DataLog dataLog : allTasks) {
if (dataLog.getBarcode().equals(barcode.getBarcode()) && dataLog.isCheckOutTask()) {
orderItem.setTaskCreateDate(dataLog.getCreateDate());
orderItem.setHasReel(true);
hasTask = true;
break;
}
}
} else {
orderItem.setMultipleTask(false);
}
if (!hasTask) {
DataLog task = newTask(pos);
task.setSourceId(cacheOrder.getId());
task.setSourceName(cacheOrder.getOrderNo());
task.setSubSourceId(orderItem.getId());
task.setSubSourceInfo(orderItem.getFeederInfo());
task.setType(OP.CHECKOUT);
task.setLightColor(nextColor.getRgb());
task.setStatus(OP_STATUS.WAIT.name());
task.setSlotnum(orderItem.getSlotNum());
// task = dataLogDao.save(task);
try {
taskService.addTaskToExecute(task);
} catch (Exception e) {
log.info(task.getBarcode()+"--添加任务到队列中,执行失败:"+e.getMessage());
try {
taskService.addTaskToExecute(task);
orderItem.setTaskCreateDate(task.getCreateDate());
orderItem.setHasReel(true);
} catch (Exception e) {
log.info(task.getBarcode() + "--添加任务到队列中,执行失败:" + e.getMessage());
}
}
}
......@@ -469,16 +513,13 @@ public class LiteOrderCache {
if (barcode != null) {
barcode.setOrderItemId(orderItemId);
barcode.setOut(true);
log.info("barcode:"+barcode.getBarcode()+"工单出库:"+orderNo);
log.info("barcode:" + barcode.getBarcode() + "工单出库:" + orderNo);
barcodeManager.save(barcode);
//同时更新
Criteria c = Criteria.where("subCodeList.barcode").is(orderItem.getRi());
Barcode parBarcode = barcodeManager.findByQueryOne(new Query(c));
if (parBarcode != null) {
List<Barcode> subCodeList = parBarcode.getSubCodeList();
subCodeList.removeIf(subCode -> subCode.getBarcode().equals(barcode.getBarcode()));
subCodeList.add(barcode);
parBarcode.setSubCodeList(subCodeList);
parBarcode.UpdateSubCode(barcode);
barcodeManager.saveBarcode(parBarcode);
}
}
......@@ -488,8 +529,11 @@ public class LiteOrderCache {
}
}
}
liteOrderItemManager.save(orderItem);
}
//cacheOrder.setOrderItems(orderItems);
cacheOrder.setMultipleTaskReelCount(multipleTaskReelCount);
cacheOrder.setSingleTaskReelCount(singleTaskReelCount);
cacheOrder.setTaskReelCount(taskReelCount);
cacheOrder.setTotalTaskReelCount(cacheOrder.getTotalTaskReelCount()+taskReelCount);
log.info("工单[" + orderNo + "]任务分配结束,任务数[" + taskReelCount + "]");
......
......@@ -59,6 +59,7 @@ import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.stream.Collectors;
@Slf4j
......@@ -464,6 +465,34 @@ public class OrderController {
return ResultBean.newOkResult("");
}
@ApiOperation("获取盘料仓或者散料仓工单出库详情")
@RequestMapping("/getSingleOrMultipleDetail")
@AnonymousAccess
public ResultBean getSingleOrMultipleDetail(@RequestParam("orderId") String orderId, @RequestParam("isMultipleTask") boolean isMultipleTask) {
List<LiteOrderItem> resultItems = new ArrayList<>();
List<LiteOrderItem> orderItems = liteOrderItemManager.findOrderItems(orderId);
for (LiteOrderItem orderItem : orderItems) {
if (isMultipleTask) {
if (!orderItem.isMultipleTask()) {
continue;
}
} else {
if (orderItem.isMultipleTask()) {
continue;
}
}
if (orderItem.isHasReel()) {
resultItems.add(orderItem);
}
}
if (resultItems != null && !resultItems.isEmpty()) {
resultItems = resultItems.stream().sorted(Comparator.comparing(LiteOrderItem::getTaskCreateDate)).collect(Collectors.toList());
}
return ResultBean.newOkResult(resultItems);
}
public void addVirtualOutToFinished( LiteOrder liteOrder, Barcode barcode,Integer num, String opUser) {
try {
DataLog dataLog = new DataLog();
......
......@@ -89,4 +89,20 @@ public class OrderDto implements Serializable {
@ApiModelProperty("工单线别")
private String line = "";
@ApiModelProperty("盘料仓任务盘数")
private int singleTaskReelCount = 0;
@ApiModelProperty("盘料仓已完成任务盘数")
private int singleFinishedTaskReelCount = 0;
@ApiModelProperty("散料仓任务盘数")
private int multipleTaskReelCount = 0;
@ApiModelProperty("散料仓任务盘数")
private int multipleFinishedTaskReelCount = 0;
}
......@@ -62,6 +62,30 @@ public class LiteOrder extends BasePo implements Serializable {
*/
private int totalFinishedReelCount = 0;
/**
* 盘料仓任务盘数
*/
private int singleTaskReelCount = 0;
/**
* 盘料仓已完成任务盘数
*/
private int singleFinishedTaskReelCount = 0;
/**
* 散料仓任务盘数
*/
private int multipleTaskReelCount = 0;
/**
* 散料仓任务盘数
*/
private int multipleFinishedTaskReelCount = 0;
/**
* 订单状态
*/
......
......@@ -6,6 +6,8 @@ import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
import java.util.Date;
@Data
@Document
public class LiteOrderItem extends BasePo implements Serializable ,Comparable<LiteOrderItem> {
......@@ -81,6 +83,37 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
private String side = "";
/**
* 箱子号
*/
private String box = "";
/**
* 库位名称
*/
private String posName = "";
/**
* 任务创建时间
*/
private Date taskCreateDate;
/**
* 是否任务完成
*/
private boolean isTaskFinished = false;
/**
* 是否散料仓任务
*/
private boolean isMultipleTask = false;
/**
* 是否有料
*/
private boolean hasReel = false;
/**
* 出库是否满足要求,已出库数量大于需求数量
*/
public boolean isOutFinished(){
......
......@@ -596,10 +596,12 @@ public class MaterialBoxController {
if (liteOrder != null){
task.setSo(liteOrder.getSo());
task.setSourceName(liteOrder.getOrderNo());
List<LiteOrderItem> orderItems = liteOrder.getOrderItems();
for (LiteOrderItem orderItem : orderItems) {
if (orderItem.getRi().equals(subBarcode.getBarcode())){
task.setSlotnum(orderItem.getSlotNum());
task.setSubSourceId(orderItem.getId());
break;
}
}
......
......@@ -75,14 +75,37 @@ public class DevicesStatusUtil {
//和上个消息是否一样
StatusBean msgBean=clientMsgs.get(cid);
if(msgBean!=null) {
if (msgBean.msgTimeOut()) {
newMsg = true;
} else if (msgBean.getMsgCode().equals(msgCode) && msgBean.getMsg().equals(clientMsg)) {
// if (msgBean.msgTimeOut()) {
// newMsg = true;
// } else
if (msgBean.getMsgCode().equals(msgCode) && msgBean.getMsg().equals(clientMsg)) {
newMsg = false;
}
}
if(newMsg){
DeviceMessageUtil.addDeviceMessage(cid, MessageType.ERROR.name(),"",msgCode,clientMsg,msgParam);
//判断是否有换行
String[] msgArray=clientMsg.split("\r\n");
if(msgArray!=null&& msgArray.length>0) {
for (String msg :
msgArray) {
String msgType = MessageType.ERROR.name();
if (msg.startsWith("A=")) {
msgType = MessageType.ERROR.name();
msg = msg.substring(2);
} else if (msg.startsWith("I=")) {
msgType = MessageType.INFO.name();
msg = msg.substring(2);
} else if (msg.startsWith("W=")) {
msgType = MessageType.WARNING.name();
msg = msg.substring(2);
}
DeviceMessageUtil.addDeviceMessage(cid, msgType, "", msgCode, msg, msgParam);
}
}
else {
DeviceMessageUtil.addDeviceMessage(cid, MessageType.ERROR.name(), "", msgCode, clientMsg, msgParam);
}
}
}
......
package com.neotel.smfcore.security.config;
import com.neotel.smfcore.common.init.DataInitManager;
import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.SecurityUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j
@Service(value = "el")
public class ElPermissionConfig {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!