fix: 生箔-烘烤

This commit is contained in:
2024-09-05 13:36:51 +08:00
parent 36c4308156
commit d19a8d014f
6 changed files with 65 additions and 40 deletions

View File

@@ -12,7 +12,7 @@ import lombok.Getter;
@AllArgsConstructor @AllArgsConstructor
public enum TagNameEnum { public enum TagNameEnum {
/** /**
* LMS系统 * 手持生箔下料
*/ */
RAW_DOWN("手持生箔下料"), RAW_DOWN("手持生箔下料"),
RAW_EMPTY_HOME("手持生箔空辊回库"), RAW_EMPTY_HOME("手持生箔空辊回库"),

View File

@@ -44,12 +44,6 @@ public class RawFoilPdaController {
return new ResponseEntity<>(rawFoilPdaService.necessaryEmptyVehicle(whereJson), HttpStatus.OK); return new ResponseEntity<>(rawFoilPdaService.necessaryEmptyVehicle(whereJson), HttpStatus.OK);
} }
@PostMapping("/needEmptyAxis")
@Log("生箔下料")
public ResponseEntity<Object> needEmptyAxisBack(@RequestBody JSONObject whereJson) {
return new ResponseEntity<>(rawFoilPdaService.needEmptyAxis(whereJson), HttpStatus.OK);
}
@PostMapping("/needEmptyAxis/v2") @PostMapping("/needEmptyAxis/v2")
@Log("生箔下料") @Log("生箔下料")
public ResponseEntity<Object> needEmptyAxisV2(@RequestBody JSONObject whereJson) { public ResponseEntity<Object> needEmptyAxisV2(@RequestBody JSONObject whereJson) {

View File

@@ -59,24 +59,26 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
public JSONObject needEmptyVehicle(JSONObject param) { public JSONObject needEmptyVehicle(JSONObject param) {
log.info("手持呼叫空收卷辊: {}", param); log.info("手持呼叫空收卷辊: {}", param);
// parampoint_code // parampoint_code
String pointCode = param.getString("point_code"); TaskUtils.taskLock("rawCall", () -> {
// 判断是否存在任务 String pointCode = param.getString("point_code");
List<SchBaseTask> unFinishTasks = taskService.checkHaveTask(pointCode); // 判断是否存在任务
// 判断是否存在对应的桁架任务 List<SchBaseTask> unFinishTasks = taskService.checkHaveTask(pointCode);
List<SchBaseTask> unFinishRelatedTasks = taskService.checkHaveRelatedTaskInRequestParam(pointCode); // 判断是否存在对应的桁架任务
if (unFinishTasks.size() > 0 || unFinishRelatedTasks.size() > 0) { List<SchBaseTask> unFinishRelatedTasks = taskService.checkHaveRelatedTaskInRequestParam(pointCode);
log.error("点位 [{}] 已经存在任务!", pointCode); if (unFinishTasks.size() > 0 || unFinishRelatedTasks.size() > 0) {
throw new BadRequestException("点位[" + pointCode + "]已经存在任务!"); log.error("点位 [{}] 已经存在任务!", pointCode);
} throw new BadRequestException("点位[" + pointCode + "]已经存在任务!");
StIvtSbpointivt sbPoint = stIvtSbpointivtService.getByPointCode(pointCode, false); }
param.put("config_code", "RawCallRollTrussTask"); StIvtSbpointivt sbPoint = stIvtSbpointivtService.getByPointCode(pointCode, false);
param.put("device_code", pointCode); param.put("config_code", "RawCallRollTrussTask");
param.put("ext_code", sbPoint.getExt_code()); param.put("device_code", pointCode);
param.put("create_mode", GeneralDefinition.PDA_CREATION); param.put("ext_code", sbPoint.getExt_code());
// 标记一下这里的任务只是单纯送空 param.put("create_mode", GeneralDefinition.PDA_CREATION);
param.put("is_flag", "0"); // 标记一下这里的任务只是单纯送空
// 调用通用口, 创建空辊桁架任务 param.put("is_flag", "0");
rawCallRollTrussTask.apply(param); // 调用通用口, 创建空辊桁架任务
rawCallRollTrussTask.apply(param);
});
JSONObject result = new JSONObject(); JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value()); result.put("status", HttpStatus.OK.value());
result.put("message", "任务创建成功!"); result.put("message", "任务创建成功!");
@@ -192,11 +194,11 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
rawOrder.setStatus("01"); rawOrder.setStatus("01");
TaskUtils.setRawOrderCreateByDefault(rawOrder); TaskUtils.setRawOrderCreateByDefault(rawOrder);
rawOrder.setProduct_area(sbPoint.getProduct_area()); rawOrder.setProduct_area(sbPoint.getProduct_area());
rawOrder.setIs_baking("1"); // rawOrder.setIs_baking("1");
rawOrder.setOrder_type("1"); rawOrder.setOrder_type("1");
rawOrder.setBaking_time("80"); // rawOrder.setBaking_time("80");
rawOrder.setRoll_type("1"); // rawOrder.setRoll_type("1");
rawOrder.setBaking_temperature("80"); // rawOrder.setBaking_temperature("80");
rawfoilworkorderService.save(rawOrder); rawfoilworkorderService.save(rawOrder);
// 组织请求任务参数 // 组织请求任务参数
// 当前生箔的点位 // 当前生箔的点位
@@ -235,7 +237,7 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
SchBaseTask task = taskService.getTaskByPointCodeX(null, pointCode, null, null); SchBaseTask task = taskService.getTaskByPointCodeX(null, pointCode, null, null);
if (ObjectUtil.isEmpty(task)) { if (ObjectUtil.isEmpty(task)) {
// 可能是起点 // 可能是起点
task = taskService.getTaskByPointCodeX(pointCode, null, null, null); task = taskService.getTaskByPointCodeX(null, null, pointCode, null);
} }
if (ObjectUtil.isEmpty(task)) { if (ObjectUtil.isEmpty(task)) {
log.error("该点查不到任务!"); log.error("该点查不到任务!");
@@ -256,7 +258,7 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
acsParam.put("device_code", pointCode); acsParam.put("device_code", pointCode);
acsParam.put("task_code", task.getTask_code()); acsParam.put("task_code", task.getTask_code());
acsParam.put("product_area", task.getProduct_area()); acsParam.put("product_area", task.getProduct_area());
acsParam.put("option", "2"); acsParam.put("option", "1");
paramArr.add(acsParam); paramArr.add(acsParam);
JSONObject jsonObject = wmsToAcsService.updateTask(paramArr); JSONObject jsonObject = wmsToAcsService.updateTask(paramArr);
log.info("生箔下发ACS执行AGV动作请求参数{},返回结果:{}", paramArr, jsonObject); log.info("生箔下发ACS执行AGV动作请求参数{},返回结果:{}", paramArr, jsonObject);

View File

@@ -19,7 +19,9 @@
AND p.point_type = '3' AND p.point_type = '3'
AND p.point_status = '2' AND p.point_status = '2'
AND p.region_code = 'A1-SJGK' AND p.region_code = 'A1-SJGK'
AND p.vehicle_code = #{vehicleCode} <if test="vehicleCode != null">
AND p.vehicle_code = #{vehicleCode}
</if>
AND p.is_used = TRUE AND p.is_used = TRUE
AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.point_code1 = p.point_code AND t.task_status <![CDATA[<]]> '07') AND 0 = (SELECT COUNT(*) FROM sch_base_task t WHERE t.point_code1 = p.point_code AND t.task_status <![CDATA[<]]> '07')
ORDER BY p.update_time ORDER BY p.update_time

View File

@@ -70,11 +70,15 @@ public class AutoInHotTrussTask extends AbstractTask {
break; break;
} }
PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(workOrderId); PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(workOrderId);
// 校验工单是否满足
if (!verificationOrder(order)) {
break;
}
String bakingTemperature = order.getBaking_temperature(); String bakingTemperature = order.getBaking_temperature();
// 如果需要烘烤, 先找对应点 // 如果需要烘烤, 先找对应点
List<StIvtHotpointivt> hotList = hotpointivtService.getNotTaskHotOven(order.getRoll_type(), "1"); List<StIvtHotpointivt> hotList = hotpointivtService.getNotTaskHotOven(order.getRoll_type(), "1");
if (hotList.size() == 0) { if (hotList.size() == 0) {
log.error("找不到温度为:{} 的可用烘箱位置{}", bakingTemperature); log.error("找不到温度为:{} 的可用烘箱位置", bakingTemperature);
break; break;
} }
// 查找合适温度的点位 // 查找合适温度的点位
@@ -111,6 +115,26 @@ public class AutoInHotTrussTask extends AbstractTask {
return null; return null;
} }
/**
* 校验工单是否满足
* @param order 工单
* @return {@code true} or {@code false}
*/
private Boolean verificationOrder(PdmBiRawfoilworkorder order) {
if (ObjectUtil.isEmpty(order)) {
log.error("工单不存在");
return false;
}
if (ObjectUtil.isEmpty(order.getIs_baking())
|| ObjectUtil.isEmpty(order.getBaking_time())
|| ObjectUtil.isEmpty(order.getRoll_type())
|| ObjectUtil.isEmpty(order.getBaking_temperature())) {
log.error("工单信息[是否烘烤、烘烤时间、烘烤温度、大小卷]都不能为空");
return false;
}
return true;
}
@Override @Override
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) { public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
checkTaskOptionStatus(taskObj); checkTaskOptionStatus(taskObj);

View File

@@ -4,8 +4,8 @@ import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException; import org.nl.common.exception.BadRequestException;
import org.nl.wms.pdm.ivt.raw.service.dao.StIvtSbpointivt;
import org.nl.wms.pdm.ivt.raw.service.IstIvtSbpointivtService; import org.nl.wms.pdm.ivt.raw.service.IstIvtSbpointivtService;
import org.nl.wms.pdm.ivt.raw.service.dao.StIvtSbpointivt;
import org.nl.wms.sch.point.service.ISchBasePointService; import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint; import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.nl.wms.sch.task.service.ISchBaseTaskService; import org.nl.wms.sch.task.service.ISchBaseTaskService;
@@ -36,6 +36,10 @@ import static org.nl.wms.util.TaskUtils.setUpdateByPC;
@Component(value = "RawCallRollTrussTask") @Component(value = "RawCallRollTrussTask")
public class RawCallRollTrussTask extends AbstractTask { public class RawCallRollTrussTask extends AbstractTask {
private final String THIS_CLASS = RawCallRollTrussTask.class.getName(); private final String THIS_CLASS = RawCallRollTrussTask.class.getName();
/** 标记创建四点任务 */
private final String FOUR_POINT_TASK_FLAG = "1";
/** 标记不创建AGV任务 */
private final String NOT_AGV_TASK_FLAG = "2";
@Autowired @Autowired
private ISchBasePointService pointService; private ISchBasePointService pointService;
@Autowired @Autowired
@@ -54,9 +58,8 @@ public class RawCallRollTrussTask extends AbstractTask {
public void createCompletion(SchBaseTask task) { public void createCompletion(SchBaseTask task) {
log.info("生箔手持呼叫空辊任务创建, 参数:{}", task); log.info("生箔手持呼叫空辊任务创建, 参数:{}", task);
// 查找同类型且与生箔机指定的收卷辊的起点, 并且没有任务 // 查找同类型且与生箔机指定的收卷辊的起点, 并且没有任务
// 先获取生箔机指定的收卷辊 // 先获取收卷辊(不在指定固定的收卷辊)
JSONObject requestObj = JSONObject.parseObject(task.getRequest_param()); List<SchBasePoint> startPoints = pointService.getWindRollNotTaskPoints(null);
List<SchBasePoint> startPoints = pointService.getWindRollNotTaskPoints(requestObj.getString("ext_code"));
if (startPoints.size() == 0) { if (startPoints.size() == 0) {
throw new BadRequestException("找不到生箔机指定的收卷辊!"); throw new BadRequestException("找不到生箔机指定的收卷辊!");
} }
@@ -102,8 +105,8 @@ public class RawCallRollTrussTask extends AbstractTask {
clearPoint(startPointObj, taskFinishedType); clearPoint(startPointObj, taskFinishedType);
} }
log.info("点位清除完毕,清除后的数据:{}", startPointObj); log.info("点位清除完毕,清除后的数据:{}", startPointObj);
if ("2".equals(flag)) { if (NOT_AGV_TASK_FLAG.equals(flag)) {
// TODO: 此功能留给手持人工需要单独叫收卷辊出来,目前没有做手持功能 // 此功能留给手持人工需要单独叫收卷辊出来
log.info("手持单独呼叫收卷辊不创建AGV任务!"); log.info("手持单独呼叫收卷辊不创建AGV任务!");
} else { } else {
// 2、创建AGV任务 // 2、创建AGV任务
@@ -121,7 +124,7 @@ public class RawCallRollTrussTask extends AbstractTask {
taskParam.put("up_task_code", taskObj.getTask_code()); taskParam.put("up_task_code", taskObj.getTask_code());
taskParam.put("create_mode", GeneralDefinition.TASK_CREATION); taskParam.put("create_mode", GeneralDefinition.TASK_CREATION);
// 这里需要判断是否是送轴的任务 // 这里需要判断是否是送轴的任务
if ("1".equals(flag)) { if (FOUR_POINT_TASK_FLAG.equals(flag)) {
// 需要的是四点任务 // 需要的是四点任务
taskParam.put("config_code", "RawDownAGVTask"); taskParam.put("config_code", "RawDownAGVTask");
rawDownAGVTask.apply(taskParam); rawDownAGVTask.apply(taskParam);