Commit 42d2a1ab zshaohui

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

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