Commit 782479ec zshaohui

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

2.处理客户端发过来的msg 增加type类型
1 个父辈 8341952f
...@@ -80,9 +80,13 @@ public class XLRBoxHandler extends BaseDeviceHandler { ...@@ -80,9 +80,13 @@ public class XLRBoxHandler extends BaseDeviceHandler {
return statusBean; return statusBean;
} }
protected void reelOnShelf(String cid, String posName){ protected void reelOnShelf(String cid, String posName) {
DataLog task = taskService.findFinishedOutTask(cid,posName); DataLog task = taskService.findFinishedOutTask(cid, posName);
if(task != null){ if (task != null) {
if (task.isFinished()) {
log.info(task.getBarcode() + "库位:" + task.getPosName() + "状态已经完成,跳过");
return;
}
task.setStatus(OP_STATUS.FINISHED.name()); task.setStatus(OP_STATUS.FINISHED.name());
taskService.updateFinishedTask(task); taskService.updateFinishedTask(task);
} }
......
...@@ -15,7 +15,7 @@ public class MessageCriteria { ...@@ -15,7 +15,7 @@ public class MessageCriteria {
@QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "updateDate") @QueryCondition(type = QueryCondition.Type.BETWEEN, propName = "updateDate")
@DateTimeFormat(pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd")
private BetweenData<Date> createDate; private BetweenData<Date> updateDate;
@QueryCondition @QueryCondition
......
...@@ -275,7 +275,15 @@ public class LiteOrderCache { ...@@ -275,7 +275,15 @@ public class LiteOrderCache {
liteOrderItem.setOutReelCount(liteOrderItem.getOutReelCount() + 1); liteOrderItem.setOutReelCount(liteOrderItem.getOutReelCount() + 1);
liteOrderItem.setTotalOutNum(liteOrderItem.getTotalOutNum()+task.getNum()); liteOrderItem.setTotalOutNum(liteOrderItem.getTotalOutNum()+task.getNum());
liteOrderItem.setTotalOutReelCount(liteOrderItem.getTotalOutReelCount()+1); liteOrderItem.setTotalOutReelCount(liteOrderItem.getTotalOutReelCount()+1);
liteOrderItem.setTaskFinished(true);
liteOrderItem.setPn(task.getPartNumber());
liteOrderItem = liteOrderItemManager.save(liteOrderItem); liteOrderItem = liteOrderItemManager.save(liteOrderItem);
if (liteOrderItem.isMultipleTask()) {
order.setMultipleFinishedTaskReelCount(order.getMultipleFinishedTaskReelCount() + 1);
} else {
order.setSingleFinishedTaskReelCount(order.getSingleFinishedTaskReelCount() + 1);
}
// Barcode barcode = barcodeManager.findByBarcode(task.getBarcode()); // Barcode barcode = barcodeManager.findByBarcode(task.getBarcode());
// if (barcode != null) { // if (barcode != null) {
// Float totalNeedNum = liteOrderItem.getNeedNum() * order.getOrderTimes(); // Float totalNeedNum = liteOrderItem.getNeedNum() * order.getOrderTimes();
...@@ -380,6 +388,9 @@ public class LiteOrderCache { ...@@ -380,6 +388,9 @@ public class LiteOrderCache {
} }
//liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder); //liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder);
int taskReelCount = 0; int taskReelCount = 0;
int singleTaskReelCount = 0; //盘料仓任务
int multipleTaskReelCount = 0; //散料仓任务
CHECKOUT_TYPE checkoutType = dataCache.getCheckOutType(); CHECKOUT_TYPE checkoutType = dataCache.getCheckOutType();
List<String> availableStorageIds = dataCache.getAvailableStorageIds(); List<String> availableStorageIds = dataCache.getAvailableStorageIds();
...@@ -444,8 +455,38 @@ public class LiteOrderCache { ...@@ -444,8 +455,38 @@ public class LiteOrderCache {
assignNum = assignNum + pos.getBarcode().getAmount(); assignNum = assignNum + pos.getBarcode().getAmount();
taskReelCount = taskReelCount + 1; taskReelCount = taskReelCount + 1;
log.info("工单[" + orderNo + "],任务数[" + taskReelCount + "]出库位置仓位【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "] PN=[" + partNumber + "] num:" + pos.getBarcode().getAmount()); log.info("工单[" + orderNo + "],任务数[" + taskReelCount + "]出库位置仓位【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "] PN=[" + partNumber + "] num:" + pos.getBarcode().getAmount());
DataLog task = newTask(pos) ;
//设置库位
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.setSourceId(cacheOrder.getId());
task.setSourceName(cacheOrder.getOrderNo()); task.setSourceName(cacheOrder.getOrderNo());
task.setSubSourceId(orderItem.getId()); task.setSubSourceId(orderItem.getId());
...@@ -457,8 +498,11 @@ public class LiteOrderCache { ...@@ -457,8 +498,11 @@ public class LiteOrderCache {
// task = dataLogDao.save(task); // task = dataLogDao.save(task);
try { try {
taskService.addTaskToExecute(task); taskService.addTaskToExecute(task);
orderItem.setTaskCreateDate(task.getCreateDate());
orderItem.setHasReel(true);
} catch (Exception e) { } catch (Exception e) {
log.info(task.getBarcode()+"--添加任务到队列中,执行失败:"+e.getMessage()); log.info(task.getBarcode() + "--添加任务到队列中,执行失败:" + e.getMessage());
}
} }
} }
...@@ -469,16 +513,13 @@ public class LiteOrderCache { ...@@ -469,16 +513,13 @@ public class LiteOrderCache {
if (barcode != null) { if (barcode != null) {
barcode.setOrderItemId(orderItemId); barcode.setOrderItemId(orderItemId);
barcode.setOut(true); barcode.setOut(true);
log.info("barcode:"+barcode.getBarcode()+"工单出库:"+orderNo); log.info("barcode:" + barcode.getBarcode() + "工单出库:" + orderNo);
barcodeManager.save(barcode); barcodeManager.save(barcode);
//同时更新 //同时更新
Criteria c = Criteria.where("subCodeList.barcode").is(orderItem.getRi()); Criteria c = Criteria.where("subCodeList.barcode").is(orderItem.getRi());
Barcode parBarcode = barcodeManager.findByQueryOne(new Query(c)); Barcode parBarcode = barcodeManager.findByQueryOne(new Query(c));
if (parBarcode != null) { if (parBarcode != null) {
List<Barcode> subCodeList = parBarcode.getSubCodeList(); parBarcode.UpdateSubCode(barcode);
subCodeList.removeIf(subCode -> subCode.getBarcode().equals(barcode.getBarcode()));
subCodeList.add(barcode);
parBarcode.setSubCodeList(subCodeList);
barcodeManager.saveBarcode(parBarcode); barcodeManager.saveBarcode(parBarcode);
} }
} }
...@@ -488,8 +529,11 @@ public class LiteOrderCache { ...@@ -488,8 +529,11 @@ public class LiteOrderCache {
} }
} }
} }
liteOrderItemManager.save(orderItem);
} }
//cacheOrder.setOrderItems(orderItems); //cacheOrder.setOrderItems(orderItems);
cacheOrder.setMultipleTaskReelCount(multipleTaskReelCount);
cacheOrder.setSingleTaskReelCount(singleTaskReelCount);
cacheOrder.setTaskReelCount(taskReelCount); cacheOrder.setTaskReelCount(taskReelCount);
cacheOrder.setTotalTaskReelCount(cacheOrder.getTotalTaskReelCount()+taskReelCount); cacheOrder.setTotalTaskReelCount(cacheOrder.getTotalTaskReelCount()+taskReelCount);
log.info("工单[" + orderNo + "]任务分配结束,任务数[" + taskReelCount + "]"); log.info("工单[" + orderNo + "]任务分配结束,任务数[" + taskReelCount + "]");
......
...@@ -59,6 +59,7 @@ import java.io.File; ...@@ -59,6 +59,7 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
@Slf4j @Slf4j
...@@ -464,6 +465,34 @@ public class OrderController { ...@@ -464,6 +465,34 @@ public class OrderController {
return ResultBean.newOkResult(""); 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) { public void addVirtualOutToFinished( LiteOrder liteOrder, Barcode barcode,Integer num, String opUser) {
try { try {
DataLog dataLog = new DataLog(); DataLog dataLog = new DataLog();
......
...@@ -89,4 +89,20 @@ public class OrderDto implements Serializable { ...@@ -89,4 +89,20 @@ public class OrderDto implements Serializable {
@ApiModelProperty("工单线别") @ApiModelProperty("工单线别")
private String line = ""; 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 { ...@@ -62,6 +62,30 @@ public class LiteOrder extends BasePo implements Serializable {
*/ */
private int totalFinishedReelCount = 0; 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; ...@@ -6,6 +6,8 @@ import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
@Data @Data
@Document @Document
public class LiteOrderItem extends BasePo implements Serializable ,Comparable<LiteOrderItem> { public class LiteOrderItem extends BasePo implements Serializable ,Comparable<LiteOrderItem> {
...@@ -81,6 +83,37 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li ...@@ -81,6 +83,37 @@ public class LiteOrderItem extends BasePo implements Serializable ,Comparable<Li
private String side = ""; 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(){ public boolean isOutFinished(){
......
...@@ -596,10 +596,12 @@ public class MaterialBoxController { ...@@ -596,10 +596,12 @@ public class MaterialBoxController {
if (liteOrder != null){ if (liteOrder != null){
task.setSo(liteOrder.getSo()); task.setSo(liteOrder.getSo());
task.setSourceName(liteOrder.getOrderNo()); task.setSourceName(liteOrder.getOrderNo());
List<LiteOrderItem> orderItems = liteOrder.getOrderItems(); List<LiteOrderItem> orderItems = liteOrder.getOrderItems();
for (LiteOrderItem orderItem : orderItems) { for (LiteOrderItem orderItem : orderItems) {
if (orderItem.getRi().equals(subBarcode.getBarcode())){ if (orderItem.getRi().equals(subBarcode.getBarcode())){
task.setSlotnum(orderItem.getSlotNum()); task.setSlotnum(orderItem.getSlotNum());
task.setSubSourceId(orderItem.getId());
break; break;
} }
} }
......
...@@ -75,14 +75,37 @@ public class DevicesStatusUtil { ...@@ -75,14 +75,37 @@ public class DevicesStatusUtil {
//和上个消息是否一样 //和上个消息是否一样
StatusBean msgBean=clientMsgs.get(cid); StatusBean msgBean=clientMsgs.get(cid);
if(msgBean!=null) { if(msgBean!=null) {
if (msgBean.msgTimeOut()) { // if (msgBean.msgTimeOut()) {
newMsg = true; // newMsg = true;
} else if (msgBean.getMsgCode().equals(msgCode) && msgBean.getMsg().equals(clientMsg)) { // } else
if (msgBean.getMsgCode().equals(msgCode) && msgBean.getMsg().equals(clientMsg)) {
newMsg = false; newMsg = false;
} }
} }
if(newMsg){ 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; 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 lombok.extern.slf4j.Slf4j;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@Slf4j @Slf4j
@Service(value = "el") @Service(value = "el")
public class ElPermissionConfig { public class ElPermissionConfig {
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!