feat: 气胀轴库与密集库库存校验
fix: 呼叫套轴信息管芯规格、时间排序、天数 fix: 内包间二次分配多次请求过滤。
This commit is contained in:
@@ -231,10 +231,13 @@ public class AutoCallAirShaftTask {
|
||||
// todo: 需要校验区域0/1
|
||||
List<BstIvtCutpointivt> qzzPoint = bcutpointivtService.getPointByTypeAndShaftSize("1", qzzSize, specification);
|
||||
if (qzzPoint.size() == 0) {
|
||||
// 调用ACS滚条气涨轴下来
|
||||
if (!toAcsOutShaft(qzzSize, location, empty)) {
|
||||
log.error("穿拔轴{}不进行套轴,跳过!", empty.getPoint_code());
|
||||
return;
|
||||
}
|
||||
// 保存所需要的分切计划数据到点位上(套轴对接位)更新分切计划
|
||||
saveCutPlanMessage(empty, needPlans, qzzSize);
|
||||
// 调用ACS滚条气涨轴下来
|
||||
toAcsOutShaft(qzzSize, location, empty);
|
||||
toCallAgvMovePaperTube(needPlans, location, empty);
|
||||
return;
|
||||
}
|
||||
@@ -245,7 +248,10 @@ public class AutoCallAirShaftTask {
|
||||
saveCutPlanMessage(empty, needPlans, qzzSize);
|
||||
// 如果不存在,则发起信号滚气涨轴
|
||||
// 调用ACS滚条气涨轴下来
|
||||
toAcsOutShaft(qzzSize, location, empty);
|
||||
if (!toAcsOutShaft(qzzSize, location, empty)) {
|
||||
log.error("穿拔轴{}不进行套轴,跳过!", empty.getPoint_code());
|
||||
return;
|
||||
}
|
||||
toCallAgvMovePaperTube(needPlans, location, empty);
|
||||
return;
|
||||
}
|
||||
@@ -429,13 +435,46 @@ public class AutoCallAirShaftTask {
|
||||
* @param location 位置:上半部分还是下半部分
|
||||
* @param empty 套拔轴点位
|
||||
*/
|
||||
private void toAcsOutShaft(String qzzSize, String location, BstIvtShafttubeivt empty) {
|
||||
private Boolean toAcsOutShaft(String qzzSize, String location, BstIvtShafttubeivt empty) {
|
||||
// 需要区分上下
|
||||
List<BstIvtShafttubeivt> shafttubeivts = bstIvtShafttubeivtService.getByQzzSize(qzzSize, empty.getPoint_code(), location);
|
||||
if (shafttubeivts.size() == 0) {
|
||||
throw new BadRequestException("气胀轴库找不到[" + qzzSize + "]规格的气涨轴位");
|
||||
log.error("气胀轴库找不到[" + qzzSize + "]规格的气涨轴位");
|
||||
return false;
|
||||
}
|
||||
// 气涨轴库
|
||||
BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0);
|
||||
// 判断气胀轴是否有轴
|
||||
JSONArray device_rows = new JSONArray();
|
||||
JSONObject device_obj = new JSONObject();
|
||||
device_rows.add(device_obj);
|
||||
device_obj.put("device_code", shafttubeivt.getPoint_code());
|
||||
// todo: 暂时都是B1
|
||||
device_obj.put("product_area", "B1");
|
||||
JSONObject pointStatus = wmsToAcsService.getPointStatus(device_rows);
|
||||
if (ObjectUtil.isEmpty(pointStatus) || ObjectUtil.isEmpty(pointStatus.getJSONArray("data"))) {
|
||||
log.error("获取气胀轴库信息失败");
|
||||
return false;
|
||||
}
|
||||
boolean judgment1 = true;
|
||||
boolean judgment2 = true;
|
||||
JSONObject data2 = pointStatus.getJSONArray("data").getJSONObject(0);
|
||||
if (data2.getInteger("qty") == 0) {
|
||||
log.warn("气胀轴库【" + shafttubeivt.getPoint_code() + "】没有气胀轴。");
|
||||
judgment1 = false;
|
||||
}
|
||||
// 获取气涨轴缓存没有任务的点位
|
||||
List<BstIvtShafttubeivt> qzzCache = bstIvtShafttubeivtService.getNotTaskShaftCache(qzzSize,
|
||||
shafttubeivt.getQzz_generation(), location);
|
||||
if (qzzCache.size() == 0) {
|
||||
log.warn("未找到气胀轴密集库气涨轴规格「" + qzzSize + "」的暂存位");
|
||||
judgment2 = false;
|
||||
}
|
||||
if (!judgment1 && !judgment2) {
|
||||
log.warn("没有气胀轴,不给ACS写出轴信息");
|
||||
return false;
|
||||
}
|
||||
// 判断气胀轴密集库是否有数据
|
||||
JSONArray acsParam = new JSONArray();
|
||||
// 出轴的信号
|
||||
JSONObject acsQzz = new JSONObject();
|
||||
@@ -447,6 +486,7 @@ public class AutoCallAirShaftTask {
|
||||
log.info("开始给ACS写信号出气胀轴 - {}", acsQzz);
|
||||
JSONObject action = wmsToAcsService.action(acsParam);
|
||||
log.info("下发给ACS写信号出气涨轴返回参数:{}", action);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -148,6 +148,7 @@
|
||||
p.qzz_size,
|
||||
p.qzz_generation,
|
||||
MIN(p.start_time) AS start_time,
|
||||
IF(p.paper_tube_or_FRP='1',p.paper_tube_description,p.FRP_description) AS tube,
|
||||
MIN( p.`status` ) AS `status`
|
||||
FROM
|
||||
`pdm_bi_slittingproductionplan` p
|
||||
@@ -156,7 +157,7 @@
|
||||
AND p.is_delete = '0'
|
||||
AND IFNULL(p.up_or_down, '') <![CDATA[ <> ]]> ''
|
||||
AND IFNULL(p.left_or_right, '') <![CDATA[ <> ]]> ''
|
||||
AND DATE(p.start_time) >= DATE_SUB(CURDATE(), INTERVAL 0 DAY)
|
||||
AND DATE(p.start_time) >= DATE_SUB(CURDATE(), INTERVAL 1 DAY)
|
||||
AND '1' = (SELECT c.is_used FROM st_ivt_cutpointivt c WHERE c.ext_code = p.resource_name)
|
||||
AND p.parent_container_name LIKE '%虚拟%'
|
||||
GROUP BY
|
||||
@@ -168,6 +169,6 @@
|
||||
p.qzz_size,
|
||||
p.qzz_generation
|
||||
ORDER BY
|
||||
`status`, start_time DESC
|
||||
`status`, start_time
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
@@ -34,6 +34,7 @@ public class CallPlanViewVO implements Serializable {
|
||||
* 气胀轴尺寸
|
||||
*/
|
||||
private String qzz_size;
|
||||
private String tube;
|
||||
/**
|
||||
* 气胀轴代数
|
||||
*/
|
||||
|
||||
@@ -2749,47 +2749,60 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
throw new BadRequestException("任务号【" + taskCode + "】对应的任务找不到!");
|
||||
}
|
||||
String targetPoint = "";
|
||||
boolean updateFlag = false;
|
||||
if ("1".equals(type)) {
|
||||
// 请求取货
|
||||
String deviceCode = task.getPoint_code2();
|
||||
BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false);
|
||||
JSONObject requestParam = JSONObject.parseObject(task.getRequest_param());
|
||||
String qzzSize = requestParam.getString("qzz_size");
|
||||
// 获取气涨轴缓存没有任务的点位
|
||||
List<BstIvtShafttubeivt> shafttubeivts = shafttubeivtService.getNotTaskShaftCache(qzzSize,
|
||||
startPoint.getQzz_generation(), startPoint.getPoint_location());
|
||||
if (shafttubeivts.size() == 0) {
|
||||
throw new BadRequestException("未找到气涨轴规格「" + qzzSize + "」的暂存位");
|
||||
if (task.getPoint_code1().contains("QHD")) {
|
||||
// 请求取货
|
||||
String deviceCode = task.getPoint_code2();
|
||||
BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false);
|
||||
JSONObject requestParam = JSONObject.parseObject(task.getRequest_param());
|
||||
String qzzSize = requestParam.getString("qzz_size");
|
||||
// 获取气涨轴缓存没有任务的点位
|
||||
List<BstIvtShafttubeivt> shafttubeivts = shafttubeivtService.getNotTaskShaftCache(qzzSize,
|
||||
startPoint.getQzz_generation(), startPoint.getPoint_location());
|
||||
if (shafttubeivts.size() == 0) {
|
||||
throw new BadRequestException("未找到气涨轴规格「" + qzzSize + "」的暂存位");
|
||||
}
|
||||
BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0);
|
||||
targetPoint = shafttubeivt.getPoint_code();
|
||||
// 修改任务
|
||||
task.setPoint_code1(targetPoint);
|
||||
task.setRemark("取货请求成功");
|
||||
task.setUpdate_time(DateUtil.now());
|
||||
updateFlag = true;
|
||||
} else {
|
||||
targetPoint = task.getPoint_code1();
|
||||
}
|
||||
BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0);
|
||||
targetPoint = shafttubeivt.getPoint_code();
|
||||
// 修改任务
|
||||
task.setPoint_code1(targetPoint);
|
||||
task.setRemark("取货请求成功");
|
||||
task.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
if ("2".equals(type)) {
|
||||
// 请求放货
|
||||
// 穿拔轴点位
|
||||
String deviceCode = task.getPoint_code1();
|
||||
BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false);
|
||||
JSONObject requestParam = JSONObject.parseObject(task.getRequest_param());
|
||||
String qzzSize = requestParam.getString("qzz_size");
|
||||
// 临时存放气涨轴尺寸
|
||||
startPoint.setQzz_size(qzzSize);
|
||||
// 获取空位
|
||||
List<BstIvtShafttubeivt> shafttubeivts = shafttubeivtService.getNotTaskShaftCacheEmpty(startPoint);
|
||||
if (shafttubeivts.size() == 0) {
|
||||
throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的空暂存位");
|
||||
if (task.getPoint_code1().contains("FHD")) {
|
||||
// 请求放货
|
||||
// 穿拔轴点位
|
||||
String deviceCode = task.getPoint_code1();
|
||||
BstIvtShafttubeivt startPoint = shafttubeivtService.getByPointCode(deviceCode, false);
|
||||
JSONObject requestParam = JSONObject.parseObject(task.getRequest_param());
|
||||
String qzzSize = requestParam.getString("qzz_size");
|
||||
// 临时存放气涨轴尺寸
|
||||
startPoint.setQzz_size(qzzSize);
|
||||
// 获取空位
|
||||
List<BstIvtShafttubeivt> shafttubeivts = shafttubeivtService.getNotTaskShaftCacheEmpty(startPoint);
|
||||
if (shafttubeivts.size() == 0) {
|
||||
throw new BadRequestException("未找到可存放气涨轴规格「" + qzzSize + "」的空暂存位");
|
||||
}
|
||||
BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0);
|
||||
targetPoint = shafttubeivt.getPoint_code();
|
||||
// 修改任务
|
||||
task.setPoint_code2(targetPoint);
|
||||
task.setRemark("放货请求成功");
|
||||
task.setUpdate_time(DateUtil.now());
|
||||
updateFlag = true;
|
||||
} else {
|
||||
targetPoint = task.getPoint_code2();
|
||||
}
|
||||
BstIvtShafttubeivt shafttubeivt = shafttubeivts.get(0);
|
||||
targetPoint = shafttubeivt.getPoint_code();
|
||||
// 修改任务
|
||||
task.setPoint_code2(targetPoint);
|
||||
task.setRemark("放货请求成功");
|
||||
task.setUpdate_time(DateUtil.now());
|
||||
}
|
||||
taskService.updateById(task);
|
||||
if (updateFlag) {
|
||||
taskService.updateById(task);
|
||||
}
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("device_code", targetPoint);
|
||||
result.put("message", "反馈成功!");
|
||||
|
||||
Reference in New Issue
Block a user