modified: 烘烤出入烘箱的桁架任务
This commit is contained in:
@@ -48,7 +48,7 @@ public class AcsToWmsController {
|
||||
return new ResponseEntity<>(acsToWmsService.outHotTaskApply(whereJson), HttpStatus.OK);
|
||||
}
|
||||
@PostMapping("/applyOvenGantryTask")
|
||||
@Log(value = "申请出烘箱任务", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
|
||||
@Log(value = "申请入烘箱对接任务", isInterfaceLog = true, interfaceLogType = InterfaceLogType.ACS_TO_LMS)
|
||||
@SaIgnore
|
||||
public ResponseEntity<Object> applyOvenGantryTask(@RequestBody JSONObject whereJson) {
|
||||
return new ResponseEntity<>(acsToWmsService.applyOvenGantryTask(whereJson), HttpStatus.OK);
|
||||
|
||||
@@ -190,7 +190,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
|
||||
|
||||
@Override
|
||||
public JSONObject applyOvenGantryTask(JSONObject param) {
|
||||
return bakingOperationService.acsRequestInHotTask(param);
|
||||
// return bakingOperationService.acsRequestInHotTask(param);
|
||||
return bakingOperationService.acsRequestInHotTaskV2(param);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -13,9 +13,14 @@ import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||
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;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.tasks.hot.InHotTrussTask;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -34,6 +39,10 @@ public class BakingPdaServiceImpl implements BakingPdaService {
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private IpdmBiRawfoilworkorderService rawfoilworkorderService;
|
||||
@Autowired
|
||||
private InHotTrussTask inHotTrussTask;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Override
|
||||
public JSONObject bakingQuality(JSONObject param) {
|
||||
log.info("手持操作烘烤质检:{}", param);
|
||||
@@ -103,17 +112,18 @@ public class BakingPdaServiceImpl implements BakingPdaService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject doModifyRawInfos(JSONObject param) {
|
||||
log.info("手持修改温度/时间 - {}", param);
|
||||
// point_code, temperature, time
|
||||
// point_code, order_code, temperature, time
|
||||
String pointCode = param.getString("point_code");
|
||||
String orderCode = param.getString("order_code");
|
||||
String temperature = param.getString("temperature");
|
||||
String rollType = param.getString("roll_type");
|
||||
String isBaking = param.getString("is_baking");
|
||||
String time = param.getString("time");
|
||||
SchBasePoint hotPoint = pointService.getById(pointCode);
|
||||
if (ObjectUtil.isEmpty(hotPoint.getSource_id())) {
|
||||
throw new BadRequestException("点位 [" + pointCode + "] 不存在生箔工单信息!");
|
||||
}
|
||||
PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(hotPoint.getSource_id());
|
||||
PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode);
|
||||
if (ObjectUtil.isEmpty(order)) {
|
||||
throw new BadRequestException("生箔工单不存在!");
|
||||
}
|
||||
@@ -123,8 +133,28 @@ public class BakingPdaServiceImpl implements BakingPdaService {
|
||||
.set(PdmBiRawfoilworkorder::getUpdate_optid, SecurityUtils.getCurrentUserId())
|
||||
.set(PdmBiRawfoilworkorder::getUpdate_optname, SecurityUtils.getCurrentNickName())
|
||||
.set(PdmBiRawfoilworkorder::getUpdate_time, DateUtil.now())
|
||||
.eq(PdmBiRawfoilworkorder::getWorkorder_id, hotPoint.getSource_id());
|
||||
.set(PdmBiRawfoilworkorder::getRoll_type, rollType)
|
||||
.set(PdmBiRawfoilworkorder::getIs_baking, isBaking)
|
||||
.eq(PdmBiRawfoilworkorder::getContainer_name, orderCode);
|
||||
rawfoilworkorderService.update(lam);
|
||||
if (!hotPoint.getMaterial_code().equals(orderCode)) {
|
||||
// 点位绑定的与扫码的不一样,以扫码的数据为准, 修改点位信息。
|
||||
hotPoint.setMaterial_code(order.getContainer_name());
|
||||
PointUtils.setUpdateByPC(hotPoint);
|
||||
pointService.updateById(hotPoint);
|
||||
}
|
||||
// 创建入烘箱/入暂存
|
||||
log.info("开始创建桁架任务入烘箱对接位....");
|
||||
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode);
|
||||
if (schBaseTasks.size() > 0) {
|
||||
throw new BadRequestException("该点位已经创建过任务!");
|
||||
}
|
||||
JSONObject taskParam = new JSONObject();
|
||||
taskParam.put("order_code", orderCode);
|
||||
taskParam.put("device_code", pointCode);
|
||||
taskParam.put("config_code", "InHotTrussTask");
|
||||
taskParam.put("create_mode", GeneralDefinition.PDA_CREATION);
|
||||
inHotTrussTask.apply(taskParam);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("message", "操作成功!");
|
||||
return result;
|
||||
|
||||
@@ -163,62 +163,60 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject needEmptyAxisV2(JSONObject param) {
|
||||
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_DOWN.getTag());
|
||||
log.info("手持生箔下料: {}", param);
|
||||
// point_code, order_code, is_call_empty
|
||||
String pointCode = param.getString("point_code");
|
||||
String orderCode = param.getString("order_code");
|
||||
String isCallEmpty = param.getString("is_call_empty");
|
||||
// 判断是否存在任务
|
||||
List<SchBaseTask> unFinishTasks = taskService.checkHaveTask(pointCode);
|
||||
// 判断是否存在对应的桁架任务
|
||||
List<SchBaseTask> unFinishRelatedTasks = taskService.checkHaveRelatedTaskInRequestParam(pointCode);
|
||||
if (unFinishTasks.size() > 0 || unFinishRelatedTasks.size() > 0) {
|
||||
throw new BadRequestException("点位[" + pointCode + "]已经存在任务!");
|
||||
}
|
||||
StIvtSbpointivt sbPoint = stIvtSbpointivtService.getByPointCode(pointCode, true);
|
||||
if (ObjectUtil.isEmpty(sbPoint)) {
|
||||
throw new BadRequestException("生箔位:" + pointCode + " 不存在,请检查是否被锁住!");
|
||||
}
|
||||
// todo: 通过流转卡号到ERP系统查找对应的信息,最后生成工单存到LMS
|
||||
// 创建工单
|
||||
PdmBiRawfoilworkorder rawOrder = new PdmBiRawfoilworkorder();
|
||||
rawOrder.setWorkorder_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
rawOrder.setContainer_name(orderCode);
|
||||
rawOrder.setResource_name(sbPoint.getExt_code());
|
||||
rawOrder.setMfg_order_name("$$$$");
|
||||
rawOrder.setProduct_name("锂电");
|
||||
rawOrder.setDescription("锂电");
|
||||
rawOrder.setTheory_height(BigDecimal.valueOf(2000));
|
||||
rawOrder.setUp_coiler_date(DateUtil.now());
|
||||
rawOrder.setStatus("01");
|
||||
TaskUtils.setRawOrderCreateByDefault(rawOrder);
|
||||
rawOrder.setProduct_area(sbPoint.getProduct_area());
|
||||
// rawOrder.setIs_baking("1");
|
||||
rawOrder.setOrder_type("1");
|
||||
// rawOrder.setBaking_time("80");
|
||||
// rawOrder.setRoll_type("1");
|
||||
// rawOrder.setBaking_temperature("80");
|
||||
rawfoilworkorderService.save(rawOrder);
|
||||
// 组织请求任务参数
|
||||
// 当前生箔的点位
|
||||
param.put("device_code", pointCode);
|
||||
param.put("workorder_id", rawOrder.getWorkorder_id());
|
||||
param.put("ext_code", sbPoint.getExt_code());
|
||||
param.put("vehicle_code2", sbPoint.getExt_code());
|
||||
param.put("create_mode", GeneralDefinition.PDA_CREATION);
|
||||
// 判断是否呼叫空辊
|
||||
if (GeneralDefinition.YES.equals(isCallEmpty)) {
|
||||
// 创建桁架任务,之后创建AGV任务需要备注是四点任务
|
||||
param.put("config_code", "RawCallRollTrussTask");
|
||||
param.put("is_flag", "1");
|
||||
rawCallRollTrussTask.apply(param);
|
||||
} else {
|
||||
// 创建AGV任务,直接到烘箱的任务
|
||||
param.put("config_code", "RawDownAGVTask");
|
||||
param.put("is_flag", "0");
|
||||
rawDownAGVTask.apply(param);
|
||||
}
|
||||
TaskUtils.taskLock("call-raw-down", () -> {
|
||||
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_DOWN.getTag());
|
||||
log.info("手持生箔下料: {}", param);
|
||||
// point_code, order_code, is_call_empty
|
||||
String pointCode = param.getString("point_code");
|
||||
// 母卷号
|
||||
String orderCode = param.getString("order_code");
|
||||
String isCallEmpty = param.getString("is_call_empty");
|
||||
// 判断是否存在任务
|
||||
List<SchBaseTask> unFinishTasks = taskService.checkHaveTask(pointCode);
|
||||
// 判断是否存在对应的桁架任务
|
||||
List<SchBaseTask> unFinishRelatedTasks = taskService.checkHaveRelatedTaskInRequestParam(pointCode);
|
||||
if (unFinishTasks.size() > 0 || unFinishRelatedTasks.size() > 0) {
|
||||
throw new BadRequestException("点位[" + pointCode + "]已经存在任务!");
|
||||
}
|
||||
StIvtSbpointivt sbPoint = stIvtSbpointivtService.getByPointCode(pointCode, true);
|
||||
if (ObjectUtil.isEmpty(sbPoint)) {
|
||||
throw new BadRequestException("生箔位:" + pointCode + " 不存在,请检查是否被锁住!");
|
||||
}
|
||||
// 创建工单
|
||||
PdmBiRawfoilworkorder rawOrder = new PdmBiRawfoilworkorder();
|
||||
rawOrder.setWorkorder_id(IdUtil.getSnowflake(1,1).nextIdStr());
|
||||
rawOrder.setContainer_name(orderCode);
|
||||
rawOrder.setResource_name(sbPoint.getExt_code());
|
||||
rawOrder.setMfg_order_name("$$$$");
|
||||
rawOrder.setProduct_name("锂电");
|
||||
rawOrder.setDescription("锂电");
|
||||
rawOrder.setTheory_height(BigDecimal.valueOf(2000));
|
||||
rawOrder.setUp_coiler_date(DateUtil.now());
|
||||
rawOrder.setStatus("01");
|
||||
TaskUtils.setRawOrderCreateByDefault(rawOrder);
|
||||
rawOrder.setProduct_area(sbPoint.getProduct_area());
|
||||
rawOrder.setOrder_type("1");
|
||||
rawfoilworkorderService.save(rawOrder);
|
||||
// 组织请求任务参数
|
||||
// 当前生箔的点位
|
||||
param.put("device_code", pointCode);
|
||||
param.put("workorder_id", rawOrder.getWorkorder_id());
|
||||
param.put("ext_code", sbPoint.getExt_code());
|
||||
// param.put("vehicle_code2", sbPoint.getExt_code());
|
||||
param.put("create_mode", GeneralDefinition.PDA_CREATION);
|
||||
// 判断是否呼叫空辊
|
||||
if (GeneralDefinition.YES.equals(isCallEmpty)) {
|
||||
// 创建桁架任务,之后创建AGV任务需要备注是四点任务
|
||||
param.put("config_code", "RawCallRollTrussTask");
|
||||
param.put("is_flag", "1");
|
||||
rawCallRollTrussTask.apply(param);
|
||||
} else {
|
||||
// 创建AGV任务,直接到烘箱的任务
|
||||
param.put("config_code", "RawDownAGVTask");
|
||||
param.put("is_flag", "0");
|
||||
rawDownAGVTask.apply(param);
|
||||
}
|
||||
});
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "任务创建成功!");
|
||||
|
||||
@@ -157,6 +157,8 @@ public class SchBasePointServiceImpl extends ServiceImpl<SchBasePointMapper, Sch
|
||||
entity.setVehicle_type("");
|
||||
entity.setVehicle_code("");
|
||||
entity.setVehicle_qty(0);
|
||||
entity.setMaterial_code("");
|
||||
entity.setSource_id("");
|
||||
}
|
||||
pointMapper.updateById(entity);
|
||||
}
|
||||
|
||||
@@ -201,7 +201,7 @@ public abstract class AbstractTask {
|
||||
*/
|
||||
public abstract void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType);
|
||||
/**
|
||||
* 具体完成逻辑
|
||||
* 具体取消逻辑
|
||||
* @param taskObj 任务数据
|
||||
* @param taskFinishedType 完成枚举
|
||||
*/
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package org.nl.wms.sch.task_manage.core.constant;
|
||||
|
||||
/**
|
||||
* 区域常量
|
||||
* @Author: lyd
|
||||
* @Description: 区域常量
|
||||
* @Date: 2024/9/2
|
||||
*/
|
||||
public interface RegionConstant {
|
||||
@@ -12,7 +12,7 @@ public interface RegionConstant {
|
||||
public final static String REGION_A1_FB = "A1-FB";
|
||||
/** A1废箔区域 */
|
||||
public final static String REGION_A1_GXK = "A1-GXK";
|
||||
/** A1废箔区域 */
|
||||
/** A1烘箱暂存区域 */
|
||||
public final static String REGION_A1_HXZC = "A1-HXZC";
|
||||
/** A1电梯区域 */
|
||||
public final static String REGION_A1_LIFT_AREA = "A1-LIFT-AREA";
|
||||
|
||||
@@ -23,4 +23,10 @@ public interface BakingOperationService {
|
||||
* @return /
|
||||
*/
|
||||
JSONObject acsRequestInHotTask(JSONObject param);
|
||||
/**
|
||||
* ACS请求入烘箱
|
||||
* @param param /
|
||||
* @return /
|
||||
*/
|
||||
JSONObject acsRequestInHotTaskV2(JSONObject param);
|
||||
}
|
||||
|
||||
@@ -13,7 +13,9 @@ import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.service.BakingOperationService;
|
||||
import org.nl.wms.sch.task_manage.tasks.hot.InHotDockingTrussTask;
|
||||
import org.nl.wms.sch.task_manage.tasks.hot.InHotTrussTask;
|
||||
import org.nl.wms.sch.task_manage.tasks.hot.OutHotToDockingTrussTask;
|
||||
import org.nl.wms.sch.task_manage.tasks.hot.OutHotTrussTask;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.http.HttpStatus;
|
||||
@@ -35,9 +37,13 @@ public class BakingOperationServiceImpl implements BakingOperationService {
|
||||
@Autowired
|
||||
private OutHotTrussTask outHotTrussTask;
|
||||
@Autowired
|
||||
private OutHotToDockingTrussTask outHotToDockingTrussTask;
|
||||
@Autowired
|
||||
private IpdmBiRawfoilworkorderService rawfoilworkorderService;
|
||||
@Autowired
|
||||
private InHotTrussTask inHotTrussTask;
|
||||
@Autowired
|
||||
private InHotDockingTrussTask inHotDockingTrussTask;
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject acsRequestOutHotTask(JSONObject param) {
|
||||
@@ -49,16 +55,16 @@ public class BakingOperationServiceImpl implements BakingOperationService {
|
||||
if (schBaseTasks.size() > 0) {
|
||||
throw new BadRequestException("点位[" + deviceCode + "]已经存在任务!");
|
||||
}
|
||||
param.put("config_code", "OutHotTrussTask");
|
||||
outHotTrussTask.apply(param);
|
||||
param.put("config_code", "OutHotToDockingTrussTask");
|
||||
outHotToDockingTrussTask.apply(param);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "任务创建成功!");
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Deprecated
|
||||
public JSONObject acsRequestInHotTask(JSONObject param) {
|
||||
log.info("acs请求入烘箱:{}", param);
|
||||
// 任务完成将工单对应的状态设置04, 维护重量信息。触发烘箱桁架任务
|
||||
@@ -104,4 +110,52 @@ public class BakingOperationServiceImpl implements BakingOperationService {
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public JSONObject acsRequestInHotTaskV2(JSONObject param) {
|
||||
log.info("acs请求入烘箱:{}", param);
|
||||
// 任务完成将工单对应的状态设置04, 维护重量信息。触发烘箱桁架任务(送到烘箱对接位)
|
||||
// param: task_code
|
||||
String taskCode = param.getString("task_code");
|
||||
Assert.notBlank(taskCode, "任务编码不能为空!");
|
||||
SchBaseTask taskObj = taskService.getByCode(taskCode);
|
||||
if (ObjectUtil.isEmpty(taskObj)) {
|
||||
throw new BadRequestException("任务不存在");
|
||||
}
|
||||
JSONObject taskParam = new JSONObject();
|
||||
String requestParam = taskObj.getRequest_param();
|
||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||
String orderCode = requestObj.getString("order_code");
|
||||
if (ObjectUtil.isNotEmpty(orderCode)) {
|
||||
rawfoilworkorderService.update(new LambdaUpdateWrapper<PdmBiRawfoilworkorder>()
|
||||
.set(PdmBiRawfoilworkorder::getStatus, "04")
|
||||
.eq(PdmBiRawfoilworkorder::getContainer_name, orderCode));
|
||||
log.info("工单修改完毕 - 母卷号 - {}", orderCode);
|
||||
}
|
||||
// 烘箱对接位(生箔点位)
|
||||
String hxPointCode = "";
|
||||
// 获取点位
|
||||
if (ObjectUtil.isEmpty(taskObj.getPoint_code3())) {
|
||||
// 取满任务
|
||||
hxPointCode = taskObj.getPoint_code2();
|
||||
} else {
|
||||
// 取满放空任务
|
||||
hxPointCode = taskObj.getPoint_code4();
|
||||
}
|
||||
log.info("开始创建桁架任务入烘箱对接位....");
|
||||
taskParam.put("order_code", orderCode);
|
||||
taskParam.put("up_task_code", taskObj.getTask_code());
|
||||
taskParam.put("device_code", hxPointCode);
|
||||
taskParam.put("config_code", "InHotDockingTrussTask");
|
||||
taskParam.put("create_mode", GeneralDefinition.ACS_CREATION);
|
||||
// 满卷的收卷辊编码放在AGV任务的载具2上
|
||||
// taskParam.put("vehicle_code", taskObj.getVehicle_code2());
|
||||
inHotDockingTrussTask.apply(taskParam);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("status", HttpStatus.OK.value());
|
||||
result.put("message", "任务创建成功!");
|
||||
result.put("data", new JSONObject());
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,97 @@
|
||||
package org.nl.wms.sch.task_manage.tasks.hot;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.nl.common.exception.BadRequestException;
|
||||
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;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.core.constant.RegionConstant;
|
||||
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
|
||||
import static org.nl.wms.util.TaskUtils.setUpdateByPC;
|
||||
|
||||
/**
|
||||
* 入烘箱对接位桁架任务类
|
||||
* @Author: lyd
|
||||
* @Date: 2024/9/5
|
||||
*/
|
||||
@Slf4j
|
||||
@Component(value = "InHotDockingTrussTask")
|
||||
public class InHotDockingTrussTask extends AbstractTask {
|
||||
private final String THIS_CLASS = InHotDockingTrussTask.class.getName();
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Override
|
||||
public void create() throws BadRequestException {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 起点确认,找个终点(烘箱对接位)
|
||||
* @param task /
|
||||
*/
|
||||
@Override
|
||||
public void createCompletion(SchBaseTask task) {
|
||||
TaskUtils.taskLock(RegionConstant.REGION_A1_HXZC + "5", () -> {
|
||||
// 找个对接位(状态是空的,没有任务的)
|
||||
List<SchBasePoint> endPoints = pointService.getHotNotTaskPoint("A1", RegionConstant.REGION_A1_HXZC,
|
||||
"5", "1");
|
||||
if (endPoints.size() == 0) {
|
||||
throw new BadRequestException("没有可用的烘箱对接位!");
|
||||
}
|
||||
SchBasePoint endPoint = endPoints.get(0);
|
||||
task.setPoint_code2(endPoint.getPoint_code());
|
||||
// 保存任务参数
|
||||
task.setHandle_class(THIS_CLASS);
|
||||
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
||||
setUpdateByPC(task);
|
||||
taskService.save(task);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
JSONObject requestObj = JSONObject.parseObject(taskObj.getRequest_param());
|
||||
String orderCode = requestObj.getString("order_code");
|
||||
// 点位赋值。
|
||||
String endPointCode = taskObj.getPoint_code2();
|
||||
SchBasePoint endPoint = pointService.getById(endPointCode);
|
||||
endPoint.setPoint_status("5");
|
||||
endPoint.setMaterial_code(orderCode);
|
||||
PointUtils.setUpdateByType(endPoint, taskFinishedType);
|
||||
pointService.updateById(endPoint);
|
||||
// 完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 取消
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
TaskUtils.setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -9,8 +9,8 @@ import org.nl.common.exception.BadRequestException;
|
||||
import org.nl.common.utils.RedisUtils;
|
||||
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||
import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt;
|
||||
import org.nl.wms.pdm.ivt.hot.service.IstIvtHotpointivtService;
|
||||
import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt;
|
||||
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;
|
||||
@@ -26,11 +26,10 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.sch.task_manage.core.constant.RegionConstant.REGION_A1_HXZC;
|
||||
import static org.nl.wms.util.PointUtils.*;
|
||||
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
|
||||
import static org.nl.wms.util.TaskUtils.setUpdateByPC;
|
||||
import static org.nl.wms.util.PointUtils.setUpdateByType;
|
||||
import static org.nl.wms.util.PointUtils.setHxUpdateByType;
|
||||
import static org.nl.wms.sch.task_manage.core.constant.RegionConstant.REGION_A1_HXZC;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
@@ -69,6 +68,8 @@ public class InHotTrussTask extends AbstractTask {
|
||||
String orderCode = requestObj.getString("order_code");
|
||||
String flag = "0";
|
||||
PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode);
|
||||
// TODO: 没有设置是否烘烤、时间、温度、不继续
|
||||
|
||||
if (GeneralDefinition.YES.equals(order.getIs_baking())) {
|
||||
String bakingTemperature = order.getBaking_temperature();
|
||||
requestObj.put("temperature", bakingTemperature);
|
||||
@@ -145,6 +146,7 @@ public class InHotTrussTask extends AbstractTask {
|
||||
String caching = requestObj.getString("caching");
|
||||
String endPointCode = taskObj.getPoint_code2();
|
||||
SchBasePoint hotDjwPoint = pointService.getById(endPointCode);
|
||||
SchBasePoint startPoint = pointService.getById(taskObj.getPoint_code1());
|
||||
StIvtHotpointivt hotpointivt = hotpointivtService.getPointByCode(endPointCode, false);
|
||||
PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode);
|
||||
Assert.notNull(order, "工单不能为空!");
|
||||
@@ -167,6 +169,8 @@ public class InHotTrussTask extends AbstractTask {
|
||||
setHxUpdateByType(hotpointivt, taskFinishedType);
|
||||
hotpointivtService.updateById(hotpointivt);
|
||||
}
|
||||
// 起点清空
|
||||
clearPoint(startPoint, taskFinishedType);
|
||||
// 完成
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
@@ -175,7 +179,6 @@ public class InHotTrussTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 取消
|
||||
|
||||
@@ -0,0 +1,114 @@
|
||||
package org.nl.wms.sch.task_manage.tasks.hot;
|
||||
|
||||
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.bi.dao.PdmBiRawfoilworkorder;
|
||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||
import org.nl.wms.pdm.ivt.hot.service.IstIvtHotpointivtService;
|
||||
import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt;
|
||||
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;
|
||||
import org.nl.wms.sch.task.service.dao.SchBaseTask;
|
||||
import org.nl.wms.sch.task_manage.AbstractTask;
|
||||
import org.nl.wms.sch.task_manage.TaskStatus;
|
||||
import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
|
||||
import org.nl.wms.sch.task_manage.core.constant.RegionConstant;
|
||||
import org.nl.wms.sch.task_manage.core.enums.TaskFinishedTypeEnum;
|
||||
import org.nl.wms.util.PointUtils;
|
||||
import org.nl.wms.util.TaskUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.nl.wms.sch.task_manage.core.constant.RegionConstant.REGION_A1_HXZC;
|
||||
import static org.nl.wms.util.PointUtils.hotClearPoint;
|
||||
import static org.nl.wms.util.TaskUtils.*;
|
||||
|
||||
/**
|
||||
* 出烘箱到对接位质检桁架任务
|
||||
* @Author: lyd
|
||||
* @Date: 2024/9/6
|
||||
*/
|
||||
@Slf4j
|
||||
@Component("OutHotToDockingTrussTask")
|
||||
public class OutHotToDockingTrussTask extends AbstractTask {
|
||||
private final String THIS_CLASS = OutHotToDockingTrussTask.class.getName();
|
||||
@Autowired
|
||||
private ISchBasePointService pointService;
|
||||
@Autowired
|
||||
private IstIvtHotpointivtService hotpointivtService;
|
||||
@Autowired
|
||||
private ISchBaseTaskService taskService;
|
||||
@Autowired
|
||||
private IpdmBiRawfoilworkorderService rawfoilworkorderService;
|
||||
@Override
|
||||
public void create() throws BadRequestException {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createCompletion(SchBaseTask task) {
|
||||
TaskUtils.taskLock(REGION_A1_HXZC + "5", () -> {
|
||||
// 从烘箱对接位中找一个空位
|
||||
List<SchBasePoint> endPoints = pointService.getHotNotTaskPoint("A1", RegionConstant.REGION_A1_HXZC,
|
||||
"5", "1");
|
||||
if (endPoints.size() == 0) {
|
||||
throw new BadRequestException("没有可用的烘箱对接位!");
|
||||
}
|
||||
// 烘箱起点位置
|
||||
StIvtHotpointivt hotPoint = hotpointivtService.getPointByCode(task.getPoint_code1(), false);
|
||||
SchBasePoint endPoint = endPoints.get(0);
|
||||
String requestParam = task.getRequest_param();
|
||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||
requestObj.put("workorder_id", hotPoint.getWorkorder_id());
|
||||
task.setPoint_code2(endPoint.getPoint_code());
|
||||
task.setRequest_param(JSONObject.toJSONString(requestObj));
|
||||
// 保存任务参数
|
||||
task.setHandle_class(THIS_CLASS);
|
||||
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
||||
setUpdateByPC(task);
|
||||
taskService.save(task);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void finishTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
JSONObject request = JSONObject.parseObject(taskObj.getRequest_param());
|
||||
String startPointCode = taskObj.getPoint_code1();
|
||||
String endPointCode = taskObj.getPoint_code2();
|
||||
StIvtHotpointivt startPoint = hotpointivtService.getPointByCode(startPointCode, false);
|
||||
// 起点清空
|
||||
hotClearPoint(startPoint, taskFinishedType);
|
||||
// 终点赋值
|
||||
PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(request.getString("workorder_id"));
|
||||
SchBasePoint endPoint = pointService.getById(endPointCode);
|
||||
// 终点设置值
|
||||
endPoint.setMaterial_code(order.getContainer_name());
|
||||
endPoint.setSource_id(request.getString("workorder_id"));
|
||||
endPoint.setPoint_status("3");
|
||||
PointUtils.setUpdateByType(endPoint, taskFinishedType);
|
||||
pointService.updateById(endPoint);
|
||||
taskObj.setTask_status(TaskStatus.FINISHED.getCode());
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 取消
|
||||
taskObj.setTask_status(TaskStatus.CANCELED.getCode());
|
||||
taskObj.setRemark(GeneralDefinition.TASK_CANCEL);
|
||||
taskObj.setFinished_type(taskFinishedType.getCode());
|
||||
setUpdateByType(taskObj, taskFinishedType);
|
||||
taskService.updateById(taskObj);
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@ import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
|
||||
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
|
||||
import org.nl.wms.pdm.ivt.hot.service.IstIvtHotpointivtService;
|
||||
import org.nl.wms.pdm.ivt.hot.service.dao.StIvtHotpointivt;
|
||||
import org.nl.wms.quartz.AutoCreateOutHotTask;
|
||||
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;
|
||||
@@ -32,9 +33,12 @@ import static org.nl.wms.util.TaskUtils.setUpdateByType;
|
||||
import static org.nl.wms.sch.task_manage.core.constant.RegionConstant.REGION_A1_HXZC;
|
||||
|
||||
/**
|
||||
* @Author: lyd
|
||||
* @Description: 创建出烘箱任务
|
||||
* 创建出烘箱任务
|
||||
* <p>自动创建与ACS申请公用的任务类
|
||||
* <p>以下两个类进行调用</p>
|
||||
* @see org.nl.wms.sch.task_manage.service.impl.BakingOperationServiceImpl#acsRequestOutHotTask(JSONObject)
|
||||
* @see AutoCreateOutHotTask#run()
|
||||
* @Author: lyd
|
||||
* @Date: 2024/8/9
|
||||
*/
|
||||
@Slf4j
|
||||
@@ -138,7 +142,6 @@ public class OutHotTrussTask extends AbstractTask {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void cancelTask(SchBaseTask taskObj, TaskFinishedTypeEnum taskFinishedType) {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 取消
|
||||
|
||||
@@ -77,7 +77,7 @@ public class RawCallRollTrussTask extends AbstractTask {
|
||||
task.setPoint_code1(startPoint.getPoint_code());
|
||||
task.setPoint_code2(endPoint.getPoint_code());
|
||||
// 收卷辊库里的载具编码
|
||||
task.setVehicle_code(startPoint.getVehicle_code());
|
||||
// task.setVehicle_code(startPoint.getVehicle_code());
|
||||
task.setTask_status(TaskStatus.START_AND_POINT.getCode());
|
||||
setUpdateByPC(task);
|
||||
taskService.save(task);
|
||||
@@ -90,7 +90,6 @@ public class RawCallRollTrussTask extends AbstractTask {
|
||||
checkTaskOptionStatus(taskObj);
|
||||
// 完成任务:1、清空起点数据,2、创建AGV任务
|
||||
JSONObject taskParam = new JSONObject();
|
||||
// 获取参数
|
||||
String requestParam = taskObj.getRequest_param();
|
||||
// 其中device_code代表AGV的终点(生箔点位)
|
||||
JSONObject requestObj = JSONObject.parseObject(requestParam);
|
||||
@@ -116,7 +115,7 @@ public class RawCallRollTrussTask extends AbstractTask {
|
||||
}
|
||||
log.info("桁架任务完毕,开始创建 [{}] 的AGV任务", endAgvPoint);
|
||||
// 收卷辊库里的载具编码
|
||||
taskParam.put("vehicle_code", taskObj.getVehicle_code());
|
||||
// taskParam.put("vehicle_code", taskObj.getVehicle_code());
|
||||
taskParam.put("device_code", endAgvPoint);
|
||||
taskParam.put("is_flag", flag);
|
||||
taskParam.put("order_code", requestObj.getString("order_code"));
|
||||
|
||||
@@ -74,9 +74,9 @@ public class RawDownAGVTask extends AbstractTask {
|
||||
SchBasePoint hxPoint = hxPoints.get(0);
|
||||
if ("1".equals(flag)) {
|
||||
// 创建四点任务:先去收卷辊出口在到生箔位,在从生箔到烘箱对接位
|
||||
StIvtSbpointivt pointCode = sbpointivtService.getByPointCode(deviceCode, false);
|
||||
// StIvtSbpointivt pointCode = sbpointivtService.getByPointCode(deviceCode, false);
|
||||
// 标记一下是哪个生箔机的收卷辊
|
||||
task.setVehicle_code2(pointCode.getExt_code());
|
||||
// task.setVehicle_code2(pointCode.getExt_code());
|
||||
task.setPoint_code1(startPointCode);
|
||||
task.setPoint_code2(deviceCode + "_K");
|
||||
task.setPoint_code3(deviceCode + "_M");
|
||||
|
||||
@@ -40,13 +40,13 @@ public class TaskUtils {
|
||||
|
||||
/**
|
||||
* 创建任务
|
||||
* @param region 区域编码
|
||||
* @param code 锁编码
|
||||
* @param function
|
||||
*/
|
||||
@SneakyThrows
|
||||
public static void taskLock(String region, Runnable function){
|
||||
public static void taskLock(String code, Runnable function){
|
||||
RedissonClient redissonClient = SpringContextHolder.getBean(RedissonClient.class);
|
||||
RLock lock = redissonClient.getLock(region);
|
||||
RLock lock = redissonClient.getLock(code);
|
||||
boolean tryLock = lock.tryLock(5, TimeUnit.SECONDS);
|
||||
try {
|
||||
if (tryLock) {
|
||||
|
||||
Reference in New Issue
Block a user