diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java index 8b2ab1a63..6c46b5db5 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/agv/ndctwo/AgvNdcTwoDeviceDriver.java @@ -1630,7 +1630,9 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic } } else if (device.getDeviceDriver() instanceof ManipulatorAgvStationDeviceDriver) { manipulatorAgvStationDeviceDriver = (ManipulatorAgvStationDeviceDriver) device.getDeviceDriver(); - + List linkDeviceCodes = manipulatorAgvStationDeviceDriver.getExtraDeviceCodes("link_device_code"); + String linkDeviceCode = linkDeviceCodes.get(0); + Device linkDevice = deviceAppService.findDeviceByCode(linkDeviceCode); //申请烘箱行架任务 if (ObjectUtil.isNotEmpty(manipulatorAgvStationDeviceDriver.getDevice().getExtraValue().get("request_robot_task")) @@ -1658,6 +1660,13 @@ public class AgvNdcTwoDeviceDriver extends AbstractDeviceDriver implements Devic manipulatorAgvStationDeviceDriver.setOvenGantryTask(true); manipulatorAgvStationDeviceDriver.writing(4); + }else { + // 失败的话将报错信息显示到大屏 + if (linkDevice.getDeviceDriver() instanceof OvenGantryManipulatorDeviceDriver) { + OvenGantryManipulatorDeviceDriver ovenGantryManipulatorDeviceDriver; + ovenGantryManipulatorDeviceDriver = (OvenGantryManipulatorDeviceDriver) linkDevice.getDeviceDriver(); + ovenGantryManipulatorDeviceDriver.setNotCreateInstMessage(jo.toString()); + } } } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/HongXiangConveyorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/HongXiangConveyorDeviceDriver.java index 9b30024ea..5aa3a0c4b 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/HongXiangConveyorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/hongxiang_device/HongXiangConveyorDeviceDriver.java @@ -143,7 +143,7 @@ public class HongXiangConveyorDeviceDriver extends AbstractOpcDeviceDriver imple @Override public void execute() { device_code - = this.getDeviceCode(); + = this.getDeviceCode(); heartbeat = this.itemProtocol.getItem_heartbeat(); mode = this.itemProtocol.getItem_mode(); move = this.itemProtocol.getItem_move(); @@ -185,6 +185,9 @@ public class HongXiangConveyorDeviceDriver extends AbstractOpcDeviceDriver imple dto.setError_info(ErrorUtil.getDictDetail("hx_error_type", String.valueOf(error))); deviceErrorLogService.create(dto); } + } else if (error != 0 || error1 != 0) { + this.setIserror(true); + message = "有报警"; } if (finish != last_finish) { if (finish == 1) { @@ -283,7 +286,7 @@ public class HongXiangConveyorDeviceDriver extends AbstractOpcDeviceDriver imple public void writing(int command) { String to_command = this.getDevice().getOpc_server_code() + "." + this.getDevice().getOpc_plc_code() + "." + this.getDevice().getDevice_code() - + "." ; + + "."; //String opcservcerid = this.getDevice().getOpc_server_id(); //Server server = ReadUtil.getServer(opcservcerid); Map itemMap = new HashMap(); @@ -433,6 +436,13 @@ public class HongXiangConveyorDeviceDriver extends AbstractOpcDeviceDriver imple if (error == 0 && iserror) { message = LangProcess.msg("universal_message11"); } + + if(this.getError() != 0){ + map.put("error", "error有报警,请检查烘箱!"); + } + if (this.getError1() != 0){ + map.put("error", "error1有报警,请检查烘箱!"); + } String door = "关门状态"; if (this.door == 1) { door = "开门状态"; diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java index 8ef504bff..9e01b2419 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/two_conveyor/oven_manipulator/OvenGantryManipulatorDeviceDriver.java @@ -478,7 +478,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i return false; } // 判断相邻烘箱是否有货有异常 -// if (filterNeighbors(startdevice)) return false; + if (filterNeighbors(startdevice)) return false; } if (nextdevice.getDeviceDriver() instanceof HongXiangConveyorDeviceDriver) { @@ -488,7 +488,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i return false; } // 判断相邻烘箱是否有货有异常 -// if (filterNeighbors(nextdevice)) return false; + if (filterNeighbors(nextdevice)) return false; } @@ -647,7 +647,7 @@ public class OvenGantryManipulatorDeviceDriver extends AbstractOpcDeviceDriver i Device deviceByAddress = deviceAppService.findDeviceByAddress(neighbor); hongXiangConveyorDeviceDriverNeighbor = (HongXiangConveyorDeviceDriver) deviceByAddress.getDeviceDriver(); if (hongXiangConveyorDeviceDriverNeighbor.getMode() == 0 || hongXiangConveyorDeviceDriverNeighbor.getMove() == 0 || hongXiangConveyorDeviceDriverNeighbor.getError() != 0 || hongXiangConveyorDeviceDriverNeighbor.getError1() != 0) { - notCreateInstMessage = "就绪任务未创建指令原因->-烘箱:" + hongXiangConveyorDeviceDriverNeighbor.getDevice_code() + "光电无货,无法生成指令!" + hongXiangConveyorDeviceDriverNeighbor.getError() + "异常" + +hongXiangConveyorDeviceDriverNeighbor.getError1() + "异常,无法生成指令!"; + notCreateInstMessage = "就绪任务未创建指令原因->-相邻光电异常烘箱:" + hongXiangConveyorDeviceDriverNeighbor.getDevice_code() + "光电无货,无法生成指令!" + hongXiangConveyorDeviceDriverNeighbor.getError() + "异常" + +hongXiangConveyorDeviceDriverNeighbor.getError1() + "异常,无法生成指令!"; return true; } diff --git a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java index c6552451e..72244d380 100644 --- a/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java +++ b/acs2/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java @@ -1038,13 +1038,20 @@ public class TaskServiceImpl extends CommonServiceImpl impleme //5、输送任务 //6、行架 //7、立库 - if (StrUtil.equals(task_type, CommonFinalParam.ONE)) { - instdto.setAgv_inst_type(CommonFinalParam.ONE); + if (StrUtil.equals(task_type, CommonFinalParam.ONE) ) { + //生箔四个点任务是生箔agv,两个点是普通任务 + if (StrUtil.isNotEmpty(instdto.getStart_device_code2())) { + instdto.setAgv_inst_type(CommonFinalParam.ONE); + instdto.setCarno("1"); + }else { + instdto.setAgv_inst_type("2"); + } + } else if (StrUtil.equals(task_type, "3")) { instdto.setAgv_inst_type("2"); - } else if (StrUtil.equals(task_type, "2")) { + }else if (StrUtil.equals(task_type, "2")) { instdto.setAgv_inst_type("3"); - } else if (StrUtil.equals(task_type, "8")) { + }else if (StrUtil.equals(task_type, "8")) { instdto.setAgv_inst_type("2"); } else { log.info("未找到对应的AGV指令类型,任务号:" + acsTask.getTask_code() + ",task_type:" + acsTask.getTask_type()); diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/enums/PointStatusEnum.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/enums/PointStatusEnum.java index d9c7255ca..34c69778b 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/enums/PointStatusEnum.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/enums/PointStatusEnum.java @@ -17,6 +17,7 @@ public enum PointStatusEnum { * 待烘烤 */ HOT_POINT("5", "待烘烤"), + /** * 待质检 */ diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingPdaServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingPdaServiceImpl.java index 59e1bb11b..71f31b9d7 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingPdaServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/BakingPdaServiceImpl.java @@ -156,6 +156,7 @@ 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 diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilPdaServiceImpl.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilPdaServiceImpl.java index 64718a829..dbc201227 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilPdaServiceImpl.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pda/mps/service/impl/RawFoilPdaServiceImpl.java @@ -3,6 +3,7 @@ package org.nl.wms.pda.mps.service.impl; import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; @@ -22,6 +23,7 @@ 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.core.constant.RegionConstant; +import org.nl.wms.sch.task_manage.tasks.hot.InHotTrussTask; import org.nl.wms.sch.task_manage.tasks.raw.RawCallRollTrussTask; import org.nl.wms.sch.task_manage.tasks.raw.RawDownAGVTask; import org.nl.wms.sch.task_manage.tasks.slitter.SlitterSendRollAGVTask; @@ -35,6 +37,8 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.util.Date; import java.util.List; +import java.util.Objects; +import java.util.stream.Collectors; import static org.nl.wms.sch.task_manage.core.constant.hot.HotConstant.*; import static org.nl.wms.util.TaskUtils.createVirtualContainer; @@ -64,6 +68,9 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService { @Autowired private ISchBasePointService pointService; + + @Autowired + private InHotTrussTask inHotTrussTask; @Override @Transactional(rollbackFor = Exception.class) public JSONObject needEmptyVehicle(JSONObject param) { @@ -176,15 +183,20 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService { TaskUtils.taskLock("call-raw-down", () -> { MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_DOWN.getTag()); log.info("手持生箔下料: {}", param); + String temperature = param.getString("temperature"); + if (!isValidInteger(temperature)) { + throw new BadRequestException("温度请输入整数!"); + } // point_code, order_code, is_call_empty String pointCode = param.getString("point_code"); // 母卷号 String orderCode = param.getString("order_code"); - // 收卷辊编码 - String rollCode = param.getString("roll_code"); + // 大小卷 + String rollType = param.getString("roll_type"); String isCallEmpty = param.getString("is_call_empty"); String theory_height = param.getString("theory_height"); String productin_qty = param.getString("productin_qty"); + String time = param.getString("time"); // 判断是否存在任务 List unFinishTasks = taskService.checkHaveTask(pointCode); // 判断是否存在对应的桁架任务 @@ -197,21 +209,34 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService { throw new BadRequestException("生箔位:" + pointCode + " 不存在,请检查是否被锁住!"); } PdmBiRawfoilworkorder order = rawfoilworkorderService.getByContainerName(orderCode); - - // 找对接位(状态是空的,没有任务的) 如果只有一个位置不能下生箔agv任务 - List points = pointService.getHotNotTaskPoint2(RegionConstant.A1, RegionConstant.REGION_A1_HXZC, - POINT_TYPE_HOT_DOCKING, POINT_STATUS_EMPTY,"1"); - if (points.size()<2){ - throw new BadRequestException("对接位已有两个被占用,请尽快处理"); + if (StrUtil.isEmpty(temperature) || StrUtil.isEmpty(time)){ + //找对接位位置 + setDjw(param); + } else { + // 找烘箱位置 + String stIvtHotpointivt = inHotTrussTask.getStIvtHotpointivt(rollType, temperature); + if (StrUtil.isNotEmpty(stIvtHotpointivt)) { + param.put("put_code", stIvtHotpointivt); + } else { + //找对接位位置 + setDjw(param); + } } // 锁定位置设置为待绑定 - SchBasePoint schBasePoint = points.get(0); - schBasePoint.setPoint_status(POINT_STATUS_BINDING); - pointService.updateById(schBasePoint); +// SchBasePoint schBasePoint = points.get(0); +// schBasePoint.setPoint_status(POINT_STATUS_BINDING); +// pointService.updateById(schBasePoint); if (ObjectUtil.isNotEmpty(order)) { - order.setTheory_height(new BigDecimal(theory_height)); - order.setProductin_qty(new BigDecimal(productin_qty)); + if (StrUtil.isNotEmpty(theory_height)) { + order.setTheory_height(new BigDecimal(theory_height)); + } + if (StrUtil.isNotEmpty(productin_qty)) { + order.setProductin_qty(new BigDecimal(productin_qty)); + } order.setUp_coiler_date(DateUtil.now()); + order.setBaking_temperature(temperature); + order.setBaking_time(time); + order.setRoll_type(rollType); rawfoilworkorderService.updateById(order); param.put("order_code", order.getContainer_name()); param.put("workorder_id", order.getWorkorder_id()); @@ -219,16 +244,23 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService { // todo: 暂时写死,创建工单 PdmBiRawfoilworkorder rawOrder = new PdmBiRawfoilworkorder(); rawOrder.setWorkorder_id(IdUtil.getSnowflake(1, 1).nextIdStr()); - rawOrder.setContainer_name(ObjectUtil.isNotEmpty(orderCode) ? orderCode : createVirtualContainer(rollCode, "yyMMddHHmmss", sbPoint.getExt_code())); + rawOrder.setContainer_name(ObjectUtil.isNotEmpty(orderCode) ? orderCode : createVirtualContainer("1", "yyMMddHHmmss", sbPoint.getExt_code())); rawOrder.setResource_name(sbPoint.getExt_code()); rawOrder.setMfg_order_name("$$$$"); rawOrder.setProduct_name("锂电"); rawOrder.setDescription("锂电"); - rawOrder.setTheory_height(new BigDecimal(theory_height)); - rawOrder.setProductin_qty(new BigDecimal(productin_qty)); + if (StrUtil.isNotEmpty(theory_height)) { + order.setTheory_height(new BigDecimal(theory_height)); + } + if (StrUtil.isNotEmpty(productin_qty)) { + order.setProductin_qty(new BigDecimal(productin_qty)); + } rawOrder.setUp_coiler_date(DateUtil.now()); rawOrder.setStatus("01"); - rawOrder.setWind_roll(rollCode); + rawOrder.setWind_roll("roll"); + rawOrder.setBaking_temperature(temperature); + rawOrder.setBaking_time(time); + rawOrder.setRoll_type(rollType); TaskUtils.setRawOrderCreateByDefault(rawOrder); rawOrder.setProduct_area(sbPoint.getProduct_area()); rawOrder.setOrder_type("1"); @@ -240,7 +272,6 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService { // 当前生箔的点位 param.put("device_code", pointCode); param.put("ext_code", sbPoint.getExt_code()); - param.put("vehicle_code2", rollCode); param.put("create_mode", GeneralDefinition.PDA_CREATION); // 判断是否呼叫空辊 if (GeneralDefinition.YES.equals(isCallEmpty)) { @@ -262,6 +293,21 @@ public class RawFoilPdaServiceImpl implements RawFoilPdaService { return result; } + private void setDjw(JSONObject param) { + // 找对接位(状态是空的,没有任务的) 如果只有一个位置不能下生箔agv任务 + List points = pointService.getHotNotTaskPoint2(RegionConstant.A1, RegionConstant.REGION_A1_HXZC, + POINT_TYPE_RAW_DOCKING, POINT_STATUS_EMPTY, "1"); + if (points.isEmpty()) { + throw new BadRequestException("烘箱无位置,生箔对接位有货,请给生箔agv让出一个位置"); + } + param.put("put_code", points.get(0).getPoint_code()); + } + + public boolean isValidInteger(String input) { + String regex = "^[+-]?\\d+$"; + return input.matches(regex); + } + @Override public JSONObject confirmBlanking(JSONObject param) { MDC.put(GeneralDefinition.MDC_KEY, TagNameEnum.RAW_READY.getTag()); diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/mapper/PdmBiRawfoilworkorderMapper.xml b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/mapper/PdmBiRawfoilworkorderMapper.xml index 03b3e202d..1b7cc1d3d 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/mapper/PdmBiRawfoilworkorderMapper.xml +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/pdm/bi/dao/mapper/PdmBiRawfoilworkorderMapper.xml @@ -18,5 +18,6 @@ FROM st_ivt_hotpointivt p LEFT JOIN pdm_bi_rawfoilworkorder w ON w.workorder_id = p.workorder_id WHERE p.point_status = '04'; + ORDER BY zc_point; diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java index d0ddf600a..6048614d6 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/ISchBasePointService.java @@ -101,6 +101,9 @@ public interface ISchBasePointService extends IService { List getHotNotTaskPoint2(String area, String region, String pointType, String pointStatus,String lockType); + + + /** * 从点位查找以下条件可用的没任务点位 * @param area 生产区域 diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java index f4ac19da6..c5fbff56b 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.java @@ -38,6 +38,8 @@ public interface SchBasePointMapper extends BaseMapper { List getHotNotTaskPoint2(String area, String region, String pointType, String pointStatus,String lockType); + + List getAllBusinessNotTaskPoint(String area, String region, String pointType, String pointStatus, String vehicleType, String vehicleCode); diff --git a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml index 30aadda4c..487e2ffe1 100644 --- a/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml +++ b/lms2/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/point/service/dao/mapper/SchBasePointMapper.xml @@ -56,6 +56,9 @@ AND (t.point_code1 = p.point_code OR t.point_code2 = p.point_code OR t.point_code4 = p.point_code)) + + +