|
|
@ -159,15 +159,13 @@ public class AutoCallAirShaftTask extends Prun { |
|
|
|
List<BstIvtShafttubeivt> emptyPoints = bstIvtShafttubeivtService.getAllShaftPointsByConditions("2", |
|
|
|
cutpointivt.getProduct_area(), "0"); |
|
|
|
if(emptyPoints.size() == 0){ |
|
|
|
if(emptyPoints.size() == 0){ |
|
|
|
log.warn("气涨轴[{}]排队中,暂时无空闲拔轴机构!", qzzNo); |
|
|
|
bcutpointivtService.update(new UpdateWrapper<BstIvtCutpointivt>() |
|
|
|
.eq("ivt_id",cutpointivt.getIvt_id()) |
|
|
|
.set("remark","排队中,暂时无空闲拔轴机构!") |
|
|
|
.set("update_time",DateUtil.now())); |
|
|
|
//跳过当前子卷任务
|
|
|
|
continue; |
|
|
|
} |
|
|
|
log.warn("气涨轴[{}]排队中,暂时无空闲拔轴机构!", qzzNo); |
|
|
|
bcutpointivtService.update(new UpdateWrapper<BstIvtCutpointivt>() |
|
|
|
.eq("ivt_id",cutpointivt.getIvt_id()) |
|
|
|
.set("remark","排队中,暂时无空闲拔轴机构!") |
|
|
|
.set("update_time",DateUtil.now())); |
|
|
|
//跳过当前子卷任务
|
|
|
|
continue; |
|
|
|
} |
|
|
|
List<String> collect = list.stream().map(PdmBiSlittingproductionplan::getContainer_name).collect(Collectors.toList()); |
|
|
|
JSONObject param = new JSONObject(); |
|
|
@ -217,7 +215,7 @@ public class AutoCallAirShaftTask extends Prun { |
|
|
|
.findFirst() |
|
|
|
.orElse(null); |
|
|
|
//没有可以接续的套轴计划,直接下发拔轴任务即可
|
|
|
|
if (planDto == null) { |
|
|
|
if (ObjectUtil.isEmpty(planDto)) { |
|
|
|
log.warn("当前拔轴任务无可接续的套轴计划:{}", cutpointivt); |
|
|
|
if(!this.havaEmptyShaft(emptyPoints.get(0),plan,max_qzz_num)) { |
|
|
|
log.warn("气涨轴[{}]排队中,暂时无空闲气胀轴空位放空轴!", qzzNo); |
|
|
@ -316,24 +314,22 @@ public class AutoCallAirShaftTask extends Prun { |
|
|
|
String qzz_generation = planDto.getQzz_generation(); |
|
|
|
String product_area = ""; |
|
|
|
if (StrUtil.equals(qzz_generation, "4")){ |
|
|
|
product_area = "A"; |
|
|
|
product_area = "A1"; |
|
|
|
}else if (StrUtil.equals(qzz_generation, "5")){ |
|
|
|
product_area = "B"; |
|
|
|
product_area = "B1"; |
|
|
|
} |
|
|
|
|
|
|
|
//再次查询空的拔轴机构点位,优先查同区的拔轴设备
|
|
|
|
List<BstIvtShafttubeivt> emptyPoints = bstIvtShafttubeivtService.getAllShaftPointsByConditions("2", |
|
|
|
product_area, "0"); |
|
|
|
if(emptyPoints.size() == 0){ |
|
|
|
if(emptyPoints.size() == 0){ |
|
|
|
log.warn("分切计划{}排队中,暂时无空闲拔轴机构!", planDto.getWorkorder_id()); |
|
|
|
slittingproductionplanService.update(new UpdateWrapper<PdmBiSlittingproductionplan>() |
|
|
|
.eq("workorder_id",planDto.getWorkorder_id()) |
|
|
|
.set("remark","排队中,暂时无空闲拔轴机构!") |
|
|
|
.set("update_time",DateUtil.now())); |
|
|
|
//跳过当前计划
|
|
|
|
continue; |
|
|
|
} |
|
|
|
log.warn("分切计划{}排队中,暂时无空闲拔轴机构!", planDto.getWorkorder_id()); |
|
|
|
slittingproductionplanService.update(new UpdateWrapper<PdmBiSlittingproductionplan>() |
|
|
|
.eq("workorder_id",planDto.getWorkorder_id()) |
|
|
|
.set("remark","排队中,暂时无空闲拔轴机构!") |
|
|
|
.set("update_time",DateUtil.now())); |
|
|
|
//跳过当前计划
|
|
|
|
continue; |
|
|
|
} |
|
|
|
//判断是否有对应尺寸的气胀轴,无跳过
|
|
|
|
if(!this.havaEnoughShaft(planDto, emptyPoints.get(0))){ |
|
|
@ -474,56 +470,43 @@ public class AutoCallAirShaftTask extends Prun { |
|
|
|
String product_area = empty.getProduct_area(); |
|
|
|
//获取气胀轴缓存架最大缓存数量
|
|
|
|
Integer max_num = Integer.valueOf(max_qzz_num.getValue()); |
|
|
|
|
|
|
|
// 查询拔轴设备旁边缓存架点位是否存在
|
|
|
|
List<BstIvtShafttubeivt> shafttubeivts = bstIvtShafttubeivtService.getByQzzSize(qzzSize ,empty.getPoint_code(), product_area); |
|
|
|
if (shafttubeivts.size() == 0) { |
|
|
|
log.error("气胀轴库找不到[" + qzzSize + "]规格的气涨轴缓存位"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
// 对应尺寸的气涨轴库
|
|
|
|
BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); |
|
|
|
//判断是否存在残留的脏数据
|
|
|
|
String planStr = shafttubeivt.getPlan(); |
|
|
|
if(ObjectUtil.isNotEmpty(planStr) && StrUtil.equals(planStr, "1")){ |
|
|
|
log.error("气胀轴库" + shafttubeivt.getPoint_code() + "预分配字段plan异常,需要确认并初始化!"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
// 判断气胀轴是否有轴
|
|
|
|
JSONArray device_rows = new JSONArray(); |
|
|
|
JSONObject device_obj = new JSONObject(); |
|
|
|
device_rows.add(device_obj); |
|
|
|
device_obj.put("device_code", shafttubeivt.getPoint_code()); |
|
|
|
device_obj.put("product_area", product_area); |
|
|
|
JSONObject pointStatus = wmsToAcsService.getPointStatus(device_rows); |
|
|
|
if (ObjectUtil.isEmpty(pointStatus) || ObjectUtil.isEmpty(pointStatus.getJSONArray("data"))) { |
|
|
|
log.error("获取气胀轴库信息失败"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
JSONObject data2 = pointStatus.getJSONArray("data").getJSONObject(0); |
|
|
|
//若缓存架数量已经满了
|
|
|
|
if (data2.getInteger("qty") >= max_num) { |
|
|
|
log.warn("气胀轴库【" + shafttubeivt.getPoint_code() + "】没有气胀轴空位。"); |
|
|
|
// 根据尺寸和代数和车间区域,查询气涨轴暂存架是否有空位
|
|
|
|
List<BstIvtShafttubeivt> qzzCache = bstIvtShafttubeivtService.getNotTaskShaftCacheEmpty2(qzzSize,qzzGeneration,product_area); |
|
|
|
if (qzzCache.size() <= 0) { |
|
|
|
log.warn("气胀轴暂存架没空位,无法分配拔轴任务"); |
|
|
|
// 根据尺寸和代数和车间区域,查询气涨轴暂存架是否有空位
|
|
|
|
List<BstIvtShafttubeivt> qzzCache = bstIvtShafttubeivtService.getNotTaskShaftCacheEmpty2(qzzSize,qzzGeneration,product_area); |
|
|
|
if (qzzCache.size() > 0) { |
|
|
|
return true; |
|
|
|
}else{ |
|
|
|
// 查询拔轴设备旁边缓存架点位是否存在
|
|
|
|
List<BstIvtShafttubeivt> shafttubeivts = bstIvtShafttubeivtService.getByQzzSize(qzzSize ,empty.getPoint_code(), product_area); |
|
|
|
if (shafttubeivts.size() == 0) { |
|
|
|
log.error("气胀轴库找不到[" + qzzSize + "]规格的气涨轴缓存位"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
// 对应尺寸的气涨轴库
|
|
|
|
BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0); |
|
|
|
//判断是否存在残留的脏数据
|
|
|
|
String planStr = shafttubeivt.getPlan(); |
|
|
|
if(ObjectUtil.isNotEmpty(planStr) && StrUtil.equals(planStr, "1")){ |
|
|
|
log.error("气胀轴库" + shafttubeivt.getPoint_code() + "预分配字段plan异常,需要确认并初始化!"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
// 判断气胀轴是否有轴
|
|
|
|
JSONArray device_rows = new JSONArray(); |
|
|
|
JSONObject device_obj = new JSONObject(); |
|
|
|
device_rows.add(device_obj); |
|
|
|
device_obj.put("device_code", shafttubeivt.getPoint_code()); |
|
|
|
device_obj.put("product_area", product_area); |
|
|
|
JSONObject pointStatus = wmsToAcsService.getPointStatus(device_rows); |
|
|
|
if (ObjectUtil.isEmpty(pointStatus) || ObjectUtil.isEmpty(pointStatus.getJSONArray("data"))) { |
|
|
|
log.error("获取气胀轴库信息失败"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
JSONObject data2 = pointStatus.getJSONArray("data").getJSONObject(0); |
|
|
|
//若缓存架数量已经满了
|
|
|
|
if (data2.getInteger("qty") >= max_num) { |
|
|
|
log.warn("气胀轴库【" + shafttubeivt.getPoint_code() + "】没有气胀轴空位。"); |
|
|
|
return false; |
|
|
|
} |
|
|
|
// 预扣除暂存架库存
|
|
|
|
BstIvtShafttubeivt waitUsedPoint = qzzCache.get(0); |
|
|
|
waitUsedPoint.setPlan("1"); |
|
|
|
waitUsedPoint.setUpdate_time(DateUtil.now()); |
|
|
|
bstIvtShafttubeivtService.updateById(waitUsedPoint); |
|
|
|
log.info("暂存架空位被预分配 - {}", waitUsedPoint); |
|
|
|
}else{ |
|
|
|
// 预扣除缓存架库存
|
|
|
|
shafttubeivt.setPlan("1"); |
|
|
|
shafttubeivt.setUpdate_time(DateUtil.now()); |
|
|
|
bstIvtShafttubeivtService.updateById(shafttubeivt); |
|
|
|
log.info("缓存架空位被预分配 - {}", shafttubeivt); |
|
|
|
} |
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
@ -794,35 +777,13 @@ public class AutoCallAirShaftTask extends Prun { |
|
|
|
if (cuts.size() > 0) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
// 判断穿拔轴机是否存在正在套轴的,存在也不继续。
|
|
|
|
List<BstIvtShafttubeivt> shafts = bstIvtShafttubeivtService.getOtherCBJData(empty.getPoint_code(), empty.getPoint_location()); |
|
|
|
if (shafts.size() > 0) { |
|
|
|
BstIvtShafttubeivt shafttubeivt = shafts.get(0); |
|
|
|
String containerCode = ObjectUtil.isNotEmpty(shafttubeivt.getContainer_name1()) |
|
|
|
? shafttubeivt.getContainer_name1() : shafttubeivt.getContainer_name2(); |
|
|
|
// 获取这个子卷号的分切计划
|
|
|
|
PdmBiSlittingproductionplan byContainerName = slittingproductionplanService.getByContainerName(containerCode); |
|
|
|
if (ObjectUtil.isNotEmpty(byContainerName)) { |
|
|
|
String parent = "1".equals(byContainerName.getOrder_type()) |
|
|
|
? byContainerName.getParent_container_name() |
|
|
|
: byContainerName.getRestruct_container_name(); |
|
|
|
if (byContainerName.getResource_name().equals(dto.getResource_name())) { |
|
|
|
// 如果是同设备同母卷、同组,证明是一根轴上的,故允许套轴
|
|
|
|
if (parent.equals(dto.getParent_container_name()) |
|
|
|
&& byContainerName.getSplit_group().equals(dto.getSplit_group())) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
// 校验是否在拔轴暂存位、分切对接位有相同设备的分切计划信息。
|
|
|
|
// 有就返回false, 没有就返回true
|
|
|
|
List<BstIvtCutpointivt> cuts2 = bcutpointivtService.getReallyQzzSameDevice(dto.getResource_name()); |
|
|
|
if (cuts2.size() == 0) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
List<String> stringList = cuts2.stream().map(BstIvtCutpointivt::getPoint_code).collect(Collectors.toList()); |
|
|
|
//List<String> stringList = cuts2.stream().map(BstIvtCutpointivt::getPoint_code).collect(Collectors.toList());
|
|
|
|
} |
|
|
|
log.info("检查有同母卷不允许套轴:{}", dto); |
|
|
|
// 有就返回true
|
|
|
|