fix: 生箔母卷与收卷辊问题

This commit is contained in:
2024-10-28 17:18:18 +08:00
parent 2b00aa9ea1
commit 6c3bdcaee9
15 changed files with 164 additions and 50 deletions

View File

@@ -17,6 +17,7 @@ public enum TagNameEnum {
RAW_DOWN("手持生箔下料"),
RAW_EMPTY_HOME("手持生箔空辊回库"),
RAW_READY("手持生箔准备就绪"),
RAW_INFO_UPDATE("手持修改生箔信息"),
CUT_UP("手持分切上料"),
CUT_UP_CONFIRM("手持分切确认上料"),
CUT_EMPTY_BACK("手持空轴送回"),
@@ -27,7 +28,8 @@ public enum TagNameEnum {
ERROR_GX_IN_OUT("管芯满入空出异常处理"),
AUTO_CALL_EMPTY_BY_CZZC("自动称重暂存位叫空"),
AUTO_IN_HOT("自动创建入烘箱"),
AUTO_IN_OUT("自动创建出烘箱"),
AUTO_OUT_HOT("自动创建出烘箱"),
ACS_OUT_HOT("ACS请求出烘箱"),
ACS_FEEDBACK_TUBE_COMPLETE("ACS反馈管芯入库完成"),
/**
* 标记符号

View File

@@ -2,12 +2,14 @@ package org.nl.wms.pda.mps.service.impl;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.config.lucene.TagNameEnum;
import org.nl.wms.pda.mps.service.BakingPdaService;
import org.nl.wms.pdm.bi.dao.PdmBiRawfoilworkorder;
import org.nl.wms.pdm.bi.service.IpdmBiRawfoilworkorderService;
@@ -19,13 +21,19 @@ import org.nl.wms.sch.task_manage.core.constant.GeneralDefinition;
import org.nl.wms.sch.task_manage.tasks.hot.InHotCachingTrussTask;
import org.nl.wms.sch.task_manage.tasks.hot.InHotTrussTask;
import org.nl.wms.util.PointUtils;
import org.nl.wms.util.TaskUtils;
import org.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.nl.wms.util.TaskUtils.createVirtualContainer;
/**
* @Author: lyd
@@ -64,10 +72,10 @@ public class BakingPdaServiceImpl implements BakingPdaService {
throw new BadRequestException("点位 [" + pointCode + "] 对应的生箔工单不存在!");
}
if ("0".equals(quality)) {
// 重复烘烤
// 重复烘烤 - 待烘烤
hotZcPoint.setPoint_status("2");
} else {
// 质检合格
// 质检合格 - 待分切
hotZcPoint.setPoint_status("4");
}
PointUtils.setUpdateByPC(hotZcPoint);
@@ -129,35 +137,82 @@ public class BakingPdaServiceImpl implements BakingPdaService {
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject doModifyRawInfos(JSONObject param) {
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_INFO_UPDATE.getTag());
log.info("手持修改温度/时间 - {}", param);
// point_code, order_code, temperature, time
String pointCode = param.getString("point_code");
// 不一定有
String orderCode = param.getString("order_code");
// 收卷辊编码
String rollCode = param.getString("roll_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);
PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode);
if (ObjectUtil.isEmpty(order)) {
throw new BadRequestException("生箔工单不存在!");
}
LambdaUpdateWrapper<PdmBiRawfoilworkorder> lam = new LambdaUpdateWrapper<>();
lam.set(PdmBiRawfoilworkorder::getBaking_temperature, temperature)
.set(PdmBiRawfoilworkorder::getBaking_time, time)
.set(PdmBiRawfoilworkorder::getUpdate_optid, SecurityUtils.getCurrentUserId())
.set(PdmBiRawfoilworkorder::getUpdate_optname, SecurityUtils.getCurrentNickName())
.set(PdmBiRawfoilworkorder::getUpdate_time, DateUtil.now())
.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);
if (ObjectUtil.isNotEmpty(orderCode)) {
PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode);
if (ObjectUtil.isEmpty(order)) {
throw new BadRequestException("生箔工单不存在!");
}
LambdaUpdateWrapper<PdmBiRawfoilworkorder> lam = new LambdaUpdateWrapper<>();
lam.set(PdmBiRawfoilworkorder::getBaking_temperature, temperature)
.set(PdmBiRawfoilworkorder::getBaking_time, time)
.set(PdmBiRawfoilworkorder::getUpdate_optid, SecurityUtils.getCurrentUserId())
.set(PdmBiRawfoilworkorder::getUpdate_optname, SecurityUtils.getCurrentNickName())
.set(PdmBiRawfoilworkorder::getUpdate_time, DateUtil.now())
.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);
}
} else {
// 如果没有传母卷号,对比收卷辊编码
if (!hotPoint.getVehicle_code().equals(rollCode)) {
List<String> collect = Stream.of(hotPoint.getVehicle_code(), rollCode).filter(ObjectUtil::isNotEmpty).collect(Collectors.toList());
// 替换,吧之前绑定这个收卷辊的卷全部结束
LambdaUpdateWrapper<PdmBiRawfoilworkorder> lam = new LambdaUpdateWrapper<>();
lam.set(PdmBiRawfoilworkorder::getRealend_time, DateUtil.now())
.set(PdmBiRawfoilworkorder::getUpdate_optid, SecurityUtils.getCurrentUserId())
.set(PdmBiRawfoilworkorder::getUpdate_optname, SecurityUtils.getCurrentNickName())
.set(PdmBiRawfoilworkorder::getUpdate_time, DateUtil.now())
.set(PdmBiRawfoilworkorder::getStatus, "09")
.set(PdmBiRawfoilworkorder::getFinish_type, "02")
.in(PdmBiRawfoilworkorder::getWind_roll, collect);
rawfoilworkorderService.update(lam);
// 创建新的并绑定到点位中
PdmBiRawfoilworkorder rawOrder = new PdmBiRawfoilworkorder();
rawOrder.setWorkorder_id(IdUtil.getSnowflake(1,1).nextIdStr());
rawOrder.setContainer_name(ObjectUtil.isNotEmpty(orderCode) ? orderCode : createVirtualContainer(rollCode, "yyMMddHHmmss", "x"));
rawOrder.setResource_name("x");
rawOrder.setMfg_order_name("$$$$");
rawOrder.setProduct_name("锂电");
rawOrder.setDescription("锂电");
rawOrder.setTheory_height(BigDecimal.valueOf(2000));
rawOrder.setUp_coiler_date(DateUtil.now());
rawOrder.setStatus("04");
rawOrder.setIs_baking(isBaking);
rawOrder.setRoll_type(rollType);
rawOrder.setWind_roll(rollCode);
rawOrder.setBaking_time(time);
TaskUtils.setRawOrderCreateByDefault(rawOrder);
rawOrder.setProduct_area("A1");
rawOrder.setOrder_type("1");
rawfoilworkorderService.save(rawOrder);
// 点位绑定的与扫码的不一样,以扫码的数据为准, 修改点位信息。
hotPoint.setMaterial_code(rawOrder.getContainer_name());
hotPoint.setVehicle_code(rollCode);
PointUtils.setUpdateByPC(hotPoint);
pointService.updateById(hotPoint);
orderCode = rawOrder.getContainer_name();
}
}
// 创建入烘箱/入暂存
log.info("开始创建桁架任务入烘箱对接位....");
List<SchBaseTask> schBaseTasks = taskService.checkHaveTask(pointCode);
@@ -167,6 +222,7 @@ public class BakingPdaServiceImpl implements BakingPdaService {
JSONObject taskParam = new JSONObject();
taskParam.put("order_code", orderCode);
taskParam.put("device_code", pointCode);
taskParam.put("vehicle_code", rollCode);
taskParam.put("config_code", "InHotTrussTask");
taskParam.put("create_mode", GeneralDefinition.PDA_CREATION);
inHotTrussTask.apply(taskParam);

View File

@@ -32,6 +32,8 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.List;
import static org.nl.wms.util.TaskUtils.createVirtualContainer;
/**
* @Author: lyd
* @Description:
@@ -170,6 +172,8 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
String pointCode = param.getString("point_code");
// 母卷号
String orderCode = param.getString("order_code");
// 收卷辊编码
String rollCode = param.getString("roll_code");
String isCallEmpty = param.getString("is_call_empty");
// 判断是否存在任务
List<SchBaseTask> unFinishTasks = taskService.checkHaveTask(pointCode);
@@ -185,7 +189,7 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
// todo: 暂时写死,创建工单
PdmBiRawfoilworkorder rawOrder = new PdmBiRawfoilworkorder();
rawOrder.setWorkorder_id(IdUtil.getSnowflake(1,1).nextIdStr());
rawOrder.setContainer_name(orderCode);
rawOrder.setContainer_name(ObjectUtil.isNotEmpty(orderCode) ? orderCode : createVirtualContainer(rollCode, "yyMMddHHmmss", sbPoint.getExt_code()));
rawOrder.setResource_name(sbPoint.getExt_code());
rawOrder.setMfg_order_name("$$$$");
rawOrder.setProduct_name("锂电");
@@ -193,6 +197,7 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
rawOrder.setTheory_height(BigDecimal.valueOf(2000));
rawOrder.setUp_coiler_date(DateUtil.now());
rawOrder.setStatus("01");
rawOrder.setWind_roll(rollCode);
TaskUtils.setRawOrderCreateByDefault(rawOrder);
rawOrder.setProduct_area(sbPoint.getProduct_area());
rawOrder.setOrder_type("1");
@@ -200,9 +205,10 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService {
// 组织请求任务参数
// 当前生箔的点位
param.put("device_code", pointCode);
param.put("order_code", rawOrder.getContainer_name());
param.put("workorder_id", rawOrder.getWorkorder_id());
param.put("ext_code", sbPoint.getExt_code());
// param.put("vehicle_code2", sbPoint.getExt_code());
param.put("vehicle_code2", rollCode);
param.put("create_mode", GeneralDefinition.PDA_CREATION);
// 判断是否呼叫空辊
if (GeneralDefinition.YES.equals(isCallEmpty)) {

View File

@@ -91,6 +91,7 @@ public class SlitterPdaServiceImpl implements SlitterPdaService {
log.info("手持呼叫母卷:{}", param);
// param: workorder_id, zc_point, point_code, vehicle_code, resource_name
String workorderId = param.getString("workorder_id");
PdmBiRawfoilworkorder one = rawfoilworkorderService.getById(workorderId);
// 分切机满料位
String pointCode = param.getString("point_code");
String zcPoint = param.getString("zc_point");
@@ -115,7 +116,7 @@ public class SlitterPdaServiceImpl implements SlitterPdaService {
// 标记一下, 0: 只做呼叫母卷1呼叫母卷还要送空辊
param.put("is_flag", "01".equals(cutPoint.getFull_point_status()) ? "0" : "1");
param.put("vehicle_code", cutPoint.getFull_vehicle_code());
param.put("vehicle_code2", param.getString("resource_name"));
param.put("vehicle_code2", one.getWind_roll());
slitterUpTrussTask.apply(param);
JSONObject result = new JSONObject();
result.put("message", "操作成功!");

View File

@@ -31,7 +31,7 @@ public class AutoCreateOutHotTask {
private OutHotTrussTask outHotTrussTask;
@Transactional(rollbackFor = Exception.class)
public void run() {
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.AUTO_IN_OUT.getTag());
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.AUTO_OUT_HOT.getTag());
log.info("自动创建出烘箱任务开始执行...");
// 获取烘箱内部状态烘烤完毕暂存中04、03但不需要烘烤的点位
List<StIvtHotpointivt> hotPoints = hotpointivtService.getUnionBakedFinishPoint();

View File

@@ -6,20 +6,22 @@ package org.nl.wms.sch.task_manage.core.constant;
* @Date: 2024/9/2
*/
public interface RegionConstant {
/** A1区域 */
String A1 = "A1";
/** A1成品称重暂存区 */
public final static String REGION_A1_CZZC = "A1-CZZC";
String REGION_A1_CZZC = "A1-CZZC";
/** A1废箔区域 */
public final static String REGION_A1_FB = "A1-FB";
String REGION_A1_FB = "A1-FB";
/** A1废箔区域 */
public final static String REGION_A1_GXK = "A1-GXK";
String REGION_A1_GXK = "A1-GXK";
/** A1烘箱暂存区域 */
public final static String REGION_A1_HXZC = "A1-HXZC";
String REGION_A1_HXZC = "A1-HXZC";
/** A1电梯区域 */
public final static String REGION_A1_LIFT_AREA = "A1-LIFT-AREA";
String REGION_A1_LIFT_AREA = "A1-LIFT-AREA";
/** A1收卷辊库区 */
public final static String REGION_A1_SJGK = "A1-SJGK";
String REGION_A1_SJGK = "A1-SJGK";
/** A1样品检测区域 */
public final static String REGION_A1_YPJC = "A1-YPJC";
String REGION_A1_YPJC = "A1-YPJC";
/** A1装箱暂存区 */
public final static String REGION_A1_ZXZC = "A1-ZXZC";
String REGION_A1_ZXZC = "A1-ZXZC";
}

View File

@@ -0,0 +1,20 @@
package org.nl.wms.sch.task_manage.core.constant.hot;
/**
* 烘烤常量
* @Author: lyd
* @Date: 2024/10/28
*/
public class HotConstant {
/** 点位类型:点位 */
public final static String POINT_TYPE_EMPTY = "1";
/** 点位类型:烘箱对接位 */
public final static String POINT_TYPE_HOT_DOCKING = "5";
/** 点位状态:空位 */
public final static String POINT_STATUS_EMPTY = "1";
/** 点位状态:待质检 */
public final static String POINT_STATUS_WAIT_QUALITY = "3";
/** 烘箱点位(非对接位)状态 -空位 */
public final static String HOT_STATUS_EMPTY = "01";
}

View File

@@ -0,0 +1,9 @@
package org.nl.wms.sch.task_manage.core.constant.raw;
/**
* 生箔所使用的常量
* @Author: lyd
* @Date: 2024/10/28
*/
public class RawConstant {
}

View File

@@ -6,19 +6,21 @@ import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.config.lucene.TagNameEnum;
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.task.service.ISchBaseTaskService;
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.core.constant.hot.HotConstant;
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.slf4j.MDC;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.stereotype.Service;
@@ -51,6 +53,7 @@ public class BakingOperationServiceImpl implements BakingOperationService {
@Override
@Transactional(rollbackFor = Exception.class)
public JSONObject acsRequestOutHotTask(JSONObject param) {
MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.ACS_OUT_HOT.getTag());
log.info("acs请求出烘箱{}", param);
// device_code
// 校验任务
@@ -60,7 +63,7 @@ public class BakingOperationServiceImpl implements BakingOperationService {
throw new BadRequestException("点位[" + deviceCode + "]已经存在任务!");
}
StIvtHotpointivt hotPoint = hotpointivtService.getPointByCode(deviceCode, false);
if ("01".equals(hotPoint.getPoint_status())) {
if (HotConstant.HOT_STATUS_EMPTY.equals(hotPoint.getPoint_status())) {
throw new BadRequestException("烘箱「" + deviceCode + "」系统库存为空!");
}
param.put("config_code", "OutHotToDockingTrussTask");
@@ -158,7 +161,7 @@ public class BakingOperationServiceImpl implements BakingOperationService {
taskParam.put("config_code", "InHotDockingTrussTask");
taskParam.put("create_mode", GeneralDefinition.ACS_CREATION);
// 满卷的收卷辊编码放在AGV任务的载具2上
// taskParam.put("vehicle_code", taskObj.getVehicle_code2());
taskParam.put("vehicle_code", taskObj.getVehicle_code2());
inHotDockingTrussTask.apply(taskParam);
JSONObject result = new JSONObject();
result.put("status", HttpStatus.OK.value());

View File

@@ -22,9 +22,10 @@ import java.util.List;
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
import static org.nl.wms.util.TaskUtils.setUpdateByPC;
import static org.nl.wms.sch.task_manage.core.constant.hot.HotConstant.*;
/**
* 入烘箱对接位桁架任务类
* 入烘箱对接位桁架任务类(等待修改信息)
* @Author: lyd
* @Date: 2024/9/5
*/
@@ -49,8 +50,8 @@ public class InHotDockingTrussTask extends AbstractTask {
public void createCompletion(SchBaseTask task) {
TaskUtils.taskLock(RegionConstant.REGION_A1_HXZC + "5", () -> {
// 找个对接位(状态是空的,没有任务的)
List<SchBasePoint> endPoints = pointService.getHotNotTaskPoint("A1", RegionConstant.REGION_A1_HXZC,
"5", "1");
List<SchBasePoint> endPoints = pointService.getHotNotTaskPoint(RegionConstant.A1, RegionConstant.REGION_A1_HXZC,
POINT_TYPE_HOT_DOCKING, POINT_STATUS_EMPTY);
if (endPoints.size() == 0) {
throw new BadRequestException("没有可用的烘箱对接位!");
}
@@ -75,6 +76,7 @@ public class InHotDockingTrussTask extends AbstractTask {
SchBasePoint endPoint = pointService.getById(endPointCode);
endPoint.setPoint_status("5");
endPoint.setMaterial_code(orderCode);
endPoint.setVehicle_code(taskObj.getVehicle_code());
PointUtils.setUpdateByType(endPoint, taskFinishedType);
pointService.updateById(endPoint);
// 完成

View File

@@ -1,6 +1,5 @@
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;
@@ -28,6 +27,7 @@ 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.*;
import static org.nl.wms.sch.task_manage.core.constant.hot.HotConstant.*;
/**
* 出烘箱到对接位质检桁架任务
@@ -55,8 +55,8 @@ public class OutHotToDockingTrussTask extends AbstractTask {
public void createCompletion(SchBaseTask task) {
TaskUtils.taskLock(REGION_A1_HXZC + "5", () -> {
// 从烘箱对接位中找一个空位
List<SchBasePoint> endPoints = pointService.getHotNotTaskPoint("A1", RegionConstant.REGION_A1_HXZC,
"5", "1");
List<SchBasePoint> endPoints = pointService.getHotNotTaskPoint(RegionConstant.A1, RegionConstant.REGION_A1_HXZC,
POINT_TYPE_HOT_DOCKING, POINT_STATUS_EMPTY);
if (endPoints.size() == 0) {
throw new BadRequestException("没有可用的烘箱对接位!");
}
@@ -91,8 +91,9 @@ public class OutHotToDockingTrussTask extends AbstractTask {
SchBasePoint endPoint = pointService.getById(endPointCode);
// 终点设置值
endPoint.setMaterial_code(order.getContainer_name());
endPoint.setVehicle_code(order.getWind_roll());
endPoint.setSource_id(request.getString("workorder_id"));
endPoint.setPoint_status("3");
endPoint.setPoint_status(POINT_STATUS_WAIT_QUALITY);
PointUtils.setUpdateByType(endPoint, taskFinishedType);
pointService.updateById(endPoint);
taskObj.setTask_status(TaskStatus.FINISHED.getCode());

View File

@@ -8,7 +8,6 @@ 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.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;
@@ -28,6 +27,8 @@ import java.util.List;
import static org.nl.wms.util.TaskUtils.checkTaskOptionStatus;
import static org.nl.wms.util.TaskUtils.setUpdateByPC;
import static org.nl.wms.sch.task_manage.core.constant.RegionConstant.A1;
import static org.nl.wms.sch.task_manage.core.constant.hot.HotConstant.*;
/**
* @Author: lyd
@@ -66,12 +67,12 @@ public class RawDownAGVTask extends AbstractTask {
// 收卷辊库出口
String startPointCode = requestObj.getString("start_point_code");
// 查找烘箱对接位可用的位置(没货、没任务、没禁用)
List<SchBasePoint> hxPoints = pointService.getHotNotTaskPoint("A1", HX_REGION,
"1", "1");
List<SchBasePoint> hxPoints = pointService.getHotNotTaskPoint(A1, HX_REGION, POINT_TYPE_EMPTY, POINT_STATUS_EMPTY);
if (hxPoints.size() == 0) {
throw new BadRequestException("烘箱没有可以用的对接位!");
}
SchBasePoint hxPoint = hxPoints.get(0);
// flag由上游标记用来判断创建四点还是两任务
if ("1".equals(flag)) {
// 创建四点任务:先去收卷辊出口在到生箔位,在从生箔到烘箱对接位
// StIvtSbpointivt pointCode = sbpointivtService.getByPointCode(deviceCode, false);

View File

@@ -94,7 +94,6 @@ public class SlitterUpTrussTask extends AbstractTask {
// 创建AGV任务
log.info("点位{}更新完毕创建AGV任务给分切机上料", startPointCode);
PdmBiRawfoilworkorder order = rawfoilworkorderService.getById(workorderId);
JSONObject taskParam = new JSONObject();
taskParam.put("device_code", endPointCode);
taskParam.put("cut_point", requestObj.getString("device_code"));
@@ -103,7 +102,7 @@ public class SlitterUpTrussTask extends AbstractTask {
// 空轴的编码
taskParam.put("vehicle_code", taskObj.getVehicle_code());
// 满轴的载具号
taskParam.put("vehicle_code2", order.getResource_name());
taskParam.put("vehicle_code2", taskObj.getVehicle_code2());
taskParam.put("workorder_id", workorderId);
taskParam.put("config_code", "SlitterUpAGVTask");
taskParam.put("up_task_code", taskObj.getTask_code());

View File

@@ -387,4 +387,15 @@ public class TaskUtils {
point.setUpdate_optname(SecurityUtils.getCurrentUsername());
point.setUpdate_time(DateUtil.now());
}
/**
* 创建虚拟的母卷号
* @param rollCode 收卷辊编码
* @param format 时间格式
* @param pointCode 点位编码
* @return
*/
public static String createVirtualContainer(String rollCode, String format, String pointCode) {
return "R-" + pointCode + "-" + TaskUtils.getDateTime(format) + "-" + rollCode;
}
}

View File

@@ -244,12 +244,13 @@
<el-table-column prop="status" label="工单状态" :min-width="flexWidth('status',crud.data,'工单状态')" :formatter="formatStatusName" />
<el-table-column prop="container_name" label="母卷号" :min-width="flexWidth('container_name',crud.data,'母卷号')" />
<el-table-column prop="point_code" label="点位编码" :min-width="flexWidth('point_code',crud.data,'点位编码')" />
<el-table-column prop="wind_roll" label="收卷辊编号" :min-width="flexWidth('wind_roll',crud.data,'收卷辊编号')" />
<el-table-column prop="resource_name" label="机台编码" :min-width="flexWidth('resource_name',crud.data,'机台编码')" />
<el-table-column prop="product_name" label="产品编码" :min-width="flexWidth('product_name',crud.data,'产品编码')" />
<el-table-column prop="theory_height" label="理论长度" :min-width="flexWidth('theory_height',crud.data,'理论长度')" />
<el-table-column prop="realstart_time" label="开始时间" :min-width="flexWidth('realstart_time',crud.data,'开始时间')" />
<el-table-column prop="realend_time" label="结束时间" :min-width="flexWidth('realend_time',crud.data,'结束时间')" />
<el-table-column prop="productin_qty" label="重量" :min-width="flexWidth('productin_qty',crud.data,'重量', 30)" :formatter="crud.formatNum3" />
<!-- <el-table-column prop="productin_qty" label="重量" :min-width="flexWidth('productin_qty',crud.data,'重量', 30)" :formatter="crud.formatNum3" />-->
<el-table-column prop="agvno" label="车号" :min-width="flexWidth('agvno',crud.data,'车号')" />
<el-table-column prop="product_area" label="生产区域" :min-width="flexWidth('product_area',crud.data,'生产区域')" />
<el-table-column prop="is_baking" label="请求烘烤" :min-width="flexWidth('is_baking',crud.data,'请求烘烤')" :formatter="formatBakeIsOrNot" />