Commit 42d2a1ab zshaohui

1.系统配置每次缺料预警生成多少工单

2.缺料预警校验是否生成,代码优化
1 个父辈 b557a600
......@@ -170,4 +170,9 @@ public class Constants {
* 楼层
*/
public static final String CACHE_floor = "floor";
/**
* 工单生成个数
*/
public static final String CACHE_preGenerateTask_Times = "preGenerateTask_times";
}
......@@ -75,6 +75,7 @@ public class SettingsController {
Integer preGenerateTask = dataCache.getCache(Constants.CACHE_preGenerateTask);
String permissionPassword = dataCache.getCache(Constants.CACHE_permissionPassword);
String floor = dataCache.getCache(Constants.CACHE_floor);
Integer preGenerateTaskTimes = dataCache.getCache(Constants.CACHE_preGenerateTask_Times);
SysSettingsDto dto = new SysSettingsDto();
dto.setStartJob(startJob);
dto.setStopOut(stopOut);
......@@ -82,6 +83,7 @@ public class SettingsController {
dto.setPreGenerateTask(preGenerateTask);
dto.setPermissionPassword(permissionPassword);
dto.setFloor(floor);
dto.setPreGenerateTaskTimes(preGenerateTaskTimes);
return dto;
}
......@@ -95,11 +97,13 @@ public class SettingsController {
dataCache.updateCache(Constants.CACHE_preGenerateTask, sysSettingsDto.getPreGenerateTask());
dataCache.updateCache(Constants.CACHE_permissionPassword,sysSettingsDto.getPermissionPassword());
dataCache.updateCache(Constants.CACHE_floor,sysSettingsDto.getFloor());
dataCache.updateCache(Constants.CACHE_preGenerateTask_Times,sysSettingsDto.getPreGenerateTaskTimes());
log.info("更改系统设置:stopout=" + sysSettingsDto.isStopOut() + ",stopjob=" + sysSettingsDto.isStartJob()
+ ",backUpMonth=" + sysSettingsDto.getBackUpMonth()
+ ",preGenerateTask=" + sysSettingsDto.getPreGenerateTask()
+ ",permissionPassword=" + sysSettingsDto.getPermissionPassword()
+ ",floor=" + sysSettingsDto.getFloor()
+",preGenerateTaskTimes=" +sysSettingsDto.getPreGenerateTaskTimes()
);
return ResultBean.newOkResult("保存成功");
}
......
......@@ -22,6 +22,9 @@ public class SysSettingsDto implements Serializable {
@ApiModelProperty("缺料预警生成工单时间")
private Integer preGenerateTask = 0;
@ApiModelProperty("缺料预警工单生成个数")
private Integer preGenerateTaskTimes = 0;
@ApiModelProperty("权限密码")
private String permissionPassword = "";
......
......@@ -318,8 +318,8 @@ public class TaskService {
updateFinishedTask(task);
log.info("任务[" + task.getId() + "] posName[" + task.getPosName() + "] Reel Id[" + task.getBarcode() + "]取消成功");
//同时进行库位屏蔽
if (/*task.isPutInTask() &&*/ !task.isFinished()) {
//同时进行库位屏蔽(不需要)
/* if (*//*task.isPutInTask() &&*//* !task.isFinished()) {
String posName = task.getPosName();
if (StringUtils.isNotBlank(posName)) {
StoragePos pos = storagePosManager.getByPosName(posName);
......@@ -346,7 +346,7 @@ public class TaskService {
}
//解除绑定
ReelLockPosUtil.removeReelLockPosInfo(task.getBarcode());
}
}*/
return true;
}
return false;
......
......@@ -65,9 +65,6 @@ public class PreWarningItemCache {
boolean hasIdleBox = true;
if (hasIdleBox) {
//最早的一条预警时间
List<PreWarningItem> lineItems = new ArrayList<>();
String firstItemLine = "";
//每次最多出多少盘
//int maxReelCount = 30;
//如果取不到,从数据库中取
......@@ -77,15 +74,22 @@ public class PreWarningItemCache {
if (queueItemList == null || queueItemList.isEmpty()) {
return;
}
Integer preGenerateTaskTimes = dataCache.getCache(Constants.CACHE_preGenerateTask_Times);
if (preGenerateTaskTimes == null || preGenerateTaskTimes == 0) {
preGenerateTaskTimes = 2;
}
for (int time = 0; time < preGenerateTaskTimes; time++) {
//最早的一条预警时间
List<PreWarningItem> lineItems = new ArrayList<>();
String firstItemLine = "";
for (PreWarningItem preWarningItem : queueItemList) {
String itemLine = preWarningItem.getLine();
if (Strings.isNotBlank(itemLine)) {
if (firstItemLine.isEmpty()) {
firstItemLine = itemLine;
//System.out.println(System.currentTimeMillis());
//System.out.println(preWarningItem.getReceiveDate().getTime());
if (System.currentTimeMillis() - preWarningItem.getReceiveDate().getTime() < 1 * 60 * 1000) {
//不到1分钟,暂不执行
return;
}
}
......@@ -93,18 +97,17 @@ public class PreWarningItemCache {
if (itemLine.equals(firstItemLine)) {
lineItems.add(preWarningItem);
}
/*if (lineItems.size() >= maxReelCount) {
break;
}*/
}
}
if (!lineItems.isEmpty()) {
createAndExecuteLiteOrder(lineItems,priority);
createAndExecuteLiteOrder(lineItems, priority);
}
}
}
}
/**
* 根据预警信息挑选物料, 生成工单任务并执行
*
......@@ -165,32 +168,31 @@ public class PreWarningItemCache {
preWarningItemManager.delete(item);
}
} else {
//判断是否已经生成
List<PreWarningItem> newItems = new ArrayList<>();
newItems.addAll(items);
for (int i = 0; i < items.size(); i++) {
PreWarningItem preWarningItem = items.get(i);
List<PreWarningItem> newItems = new ArrayList<>(items);
// 从newItems中移除已经在queueItemList中存在的items
if (queueItemList != null && !queueItemList.isEmpty()) {
for (PreWarningItem item : queueItemList) {
if (preWarningItem.getItemId().equals(item.getItemId())) {
newItems = newItems.stream().filter(t -> !t.getItemId().equals(item.getItemId())).collect(Collectors.toList());
//log.info("Mes缺料预警重复物料:" + item.getItemId() + "PN为:" + item.getPartnumber());
break;
}
}
}
newItems.removeIf(item -> queueItemList.stream().anyMatch(i -> i.getItemId().equals(item.getItemId())));
}
//判断工单是否已经出过
for (int i = 0; i < items.size(); i++) {
PreWarningItem item = items.get(i);
Query q = new Query();
Criteria c = Criteria.where("pn").is(item.getPartnumber()).and("warningItemId").is(item.getItemId());
List<LiteOrderItem> orderItems = liteOrderItemManager.findByQuery(q.addCriteria(c));
if (orderItems != null && !orderItems.isEmpty()) {
newItems = newItems.stream().filter(t -> !t.getItemId().equals(item.getItemId())).collect(Collectors.toList());
//log.info("Mes缺料预警已经生成工单:" + item.getItemId() + "PN为:" + item.getPartnumber());
// 从newItems中移除数据库中已经存在相应工单的items
if (!newItems.isEmpty()) {
List<String> itemIds = newItems.stream().map(PreWarningItem::getItemId).collect(Collectors.toList());
List<String> partNumbers = newItems.stream().map(PreWarningItem::getPartnumber).collect(Collectors.toList());
Criteria c = new Criteria();
c.and("pn").in(partNumbers);
c.and("warningItemId").in(itemIds);
LiteOrderItem orderItem = liteOrderItemManager.findOne(new Query().addCriteria(c));
if (orderItem != null){
String warningItemId = orderItem.getWarningItemId();
newItems = newItems.stream()
.filter(item -> !item.getItemId().equals(warningItemId))
.collect(Collectors.toList());
}
}
if (queueItemList == null || queueItemList.isEmpty()) {
queueItemList = newItems;
} else {
......
......@@ -61,7 +61,7 @@ forward:
#手动出库料箱
manualcheckout:
export: MU3_1
export: MU4_1
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!