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
public enum TagNameEnum {
/**
* LMS系统
* 手持生箔下料
*/
RAW_DOWN("手持生箔下料"),
RAW_EMPTY_HOME("手持生箔空辊回库"),

View File

@@ -44,12 +44,6 @@ public class RawFoilPdaController {
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")
@Log("生箔下料")
public ResponseEntity<Object> needEmptyAxisV2(@RequestBody JSONObject whereJson) {

View File

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

View File

@@ -19,7 +19,9 @@
AND p.point_type = '3'
AND p.point_status = '2'
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 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

View File

@@ -70,11 +70,15 @@ public class AutoInHotTrussTask extends AbstractTask {
break;
}
PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(workOrderId);
// 校验工单是否满足
if (!verificationOrder(order)) {
break;
}
String bakingTemperature = order.getBaking_temperature();
// 如果需要烘烤, 先找对应点
List<StIvtHotpointivt> hotList = hotpointivtService.getNotTaskHotOven(order.getRoll_type(), "1");
if (hotList.size() == 0) {
log.error("找不到温度为:{} 的可用烘箱位置{}", bakingTemperature);
log.error("找不到温度为:{} 的可用烘箱位置", bakingTemperature);
break;
}
// 查找合适温度的点位
@@ -111,6 +115,26 @@ public class AutoInHotTrussTask extends AbstractTask {
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
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
checkTaskOptionStatus(taskObj);

View File

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