diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/IBstIvtCutpointivtService.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/IBstIvtCutpointivtService.java index 911db000e..1177c7de4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/IBstIvtCutpointivtService.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/IBstIvtCutpointivtService.java @@ -92,4 +92,11 @@ public interface IBstIvtCutpointivtService extends IService { * @return / */ List getAllHalfPlacePoints(String type, String pointStatus, String location); + + /** + * 获取分切暂存下拉框 + * @param pointType / + * @return / + */ + List getPintByAgvCodesByPointType(String pointType); } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/impl/BstIvtCutpointivtServiceImpl.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/impl/BstIvtCutpointivtServiceImpl.java index 63634fda2..cce547d48 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/impl/BstIvtCutpointivtServiceImpl.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/bst/ivt/cutpointivt/service/impl/BstIvtCutpointivtServiceImpl.java @@ -13,6 +13,7 @@ import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.mapper.BstIvtCutpointivtMapper; import org.nl.b_lms.bst.ivt.cutpointivt.service.dto.BstIvtCutpointivtQuery; +import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant; import org.nl.common.domain.query.PageQuery; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; @@ -123,4 +124,10 @@ public class BstIvtCutpointivtServiceImpl extends ServiceImpl getAllHalfPlacePoints(String type, String pointStatus, String location) { return bstIvtCutpointivtMapper.getAllHalfPlacePoints(type, pointStatus, location); } + + @Override + public List getPintByAgvCodesByPointType(String pointType) { + return bstIvtCutpointivtMapper.selectList(new LambdaQueryWrapper() + .eq(BstIvtCutpointivt::getPoint_type, pointType)); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/SlitterPdaController.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/SlitterPdaController.java index 677c3804d..e2b0970db 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/SlitterPdaController.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/pda/controller/SlitterPdaController.java @@ -67,4 +67,23 @@ public class SlitterPdaController { public ResponseEntity cutIn(@RequestBody JSONObject param) { return new ResponseEntity<>(slitterDevices.cutIn(param), HttpStatus.OK); } + @PostMapping("/sendSubVolumeToNBJ") + @Log("分切缓存到内包间任务") + @SaIgnore + public ResponseEntity sendSubVolumeToNBJ(@RequestBody JSONObject param) { + return new ResponseEntity<>(slitterDevices.pdaSendSubVolumeToNBJ(param), HttpStatus.OK); + } + @PostMapping("/getCutCacheAgvPoints") + @Log("获取分切暂存位AGV点位下拉框数据") + @SaIgnore + public ResponseEntity getCutCacheAgvPoints() { + return new ResponseEntity<>(slitterDevices.getCutCacheAgvPoints(), HttpStatus.OK); + } + + @PostMapping("/toCleanCutCacheInventory") + @Log("清理分切缓存到内包间") + @SaIgnore + public ResponseEntity toCleanCutCacheInventory(@RequestBody JSONObject param) { + return new ResponseEntity<>(slitterDevices.toCleanCutCacheInventory(param), HttpStatus.OK); + } } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendAirShaftAgvTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendAirShaftAgvTask.java index 6f44d758c..d591095bd 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendAirShaftAgvTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SendAirShaftAgvTask.java @@ -88,12 +88,10 @@ public class SendAirShaftAgvTask extends AbstractAcsTask { if (StrUtil.equals(status, TaskStatusEnum.FINISHED.getCode())) { task.setTask_status(TaskStatusEnum.FINISHED.getCode()); // 互换资源 - String startPoint = task.getPoint_code1(); - BstIvtCutpointivt startPointObj = bcutpointivtService.getPintByAgvCode(startPoint, false); + // update: 在acs请求取货完成就已经清空点位信息 String endPoint = task.getPoint_code2(); BstIvtCutpointivt endPointObj = bcutpointivtService.getPintByAgvCode(endPoint, false); - TaskUtils.pointExchangeResources(startPointObj, endPointObj, "2"); - bcutpointivtService.updateById(startPointObj); + TaskUtils.pointMaintenanceInventory(task, endPointObj, "2"); bcutpointivtService.updateById(endPointObj); // 分切计划状态修改02->03 List collect = Stream.of(task.getVehicle_code(), task.getVehicle_code2()) diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterDownAgvTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterDownAgvTask.java index 0dde816da..e2cda5b25 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterDownAgvTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/SlitterDownAgvTask.java @@ -82,12 +82,10 @@ public class SlitterDownAgvTask extends AbstractAcsTask { } task.setTask_status(TaskStatusEnum.FINISHED.getCode()); // 互换资源 - String startPoint = task.getPoint_code1(); - BstIvtCutpointivt startPointObj = bcutpointivtService.getPintByAgvCode(startPoint, false); + // update: 在acs请求取货完成就已经清空点位信息 String endPoint = task.getPoint_code2(); BstIvtCutpointivt endPointObj = bcutpointivtService.getPintByAgvCode(endPoint, false); - TaskUtils.pointExchangeResources(startPointObj, endPointObj, "3"); - bcutpointivtService.updateById(startPointObj); + TaskUtils.pointMaintenanceInventory(task, endPointObj, "3"); bcutpointivtService.updateById(endPointObj); } // 取消 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/StockAreaCallTubeTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/StockAreaCallTubeTask.java index 118a9f3e1..af17ec2f4 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/StockAreaCallTubeTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/StockAreaCallTubeTask.java @@ -68,6 +68,7 @@ public class StockAreaCallTubeTask extends AbstractAcsTask { .start_device_code2(task.getPoint_code3()) .next_device_code2(task.getPoint_code4()) .vehicle_code(task.getVehicle_code()) + .interaction_json(JSONObject.parseObject(task.getRequest_param())) .agv_system_type(agv_system_type) .priority(task.getPriority()) .product_area(task.getProduct_area()) @@ -101,33 +102,6 @@ public class StockAreaCallTubeTask extends AbstractAcsTask { TaskUtils.updateOptMessageByBStockingPoint(startPointObj); stockingivtService.update(startPointObj); - - //下发ACS点位库存信息 - List list = mdPbPapervehicleService.list(new LambdaQueryWrapper().eq(MdPbPapervehicle::getVehicle_code, task.getVehicle_code())); - String[] material_codes = new String[list.size()]; - String[] material_specs = new String[list.size()]; - int[] qtys = new int[list.size()]; - for (int i = 0; i < list.size(); i++) { - MdPbPapervehicle vehicle = list.get(i); - String material_code = vehicle.getMaterial_code(); - int qty = vehicle.getQty().intValue(); - if (containscode(material_codes, material_code)) { - int index = getIndex(material_codes, material_code); - qtys[index] += qty; - } else { - material_codes[i] = vehicle.getMaterial_code(); - String spec = SlitterTaskUtil.getComposePaperTubeInformation(vehicle.getMaterial_name()); - material_specs[i] = spec; - qtys[i] = qty; - } - } - JSONObject jsonObject = new JSONObject(); - jsonObject.put("to_material", material_codes); - jsonObject.put("to_spec", material_codes); - jsonObject.put("to_qty", qtys); - jsonObject.put("device_code", material_specs); - wmsToAcsService.getTubeMsg(jsonObject); - } // 取消 if (status.equals(IOSEnum.IS_NOTANDYES.code("否"))) { @@ -137,25 +111,6 @@ public class StockAreaCallTubeTask extends AbstractAcsTask { taskService.updateById(task); } - public boolean containscode(String[] names, String name) { - for (String n : names) { - if (name.equals(n)) { - return true; - } - } - return false; - } - - // 获取name在数组中的索引 - public int getIndex(String[] names, String name) { - for (int i = 0; i < names.length; i++) { - if (name.equals(names[i])) { - return i; - } - } - return -1; // 如果找不到返回-1 - } - @Override public String createTask(JSONObject form) { String currentUserId = SecurityUtils.getCurrentUserId(); diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/StockAreaSendVehicleTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/StockAreaSendVehicleTask.java index b98cd6256..6cd7a34ad 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/StockAreaSendVehicleTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/StockAreaSendVehicleTask.java @@ -5,7 +5,10 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.papervehicle.service.IMdPbPapervehicleService; +import org.nl.b_lms.bst.ivt.papervehicle.service.dao.MdPbPapervehicle; import org.nl.b_lms.bst.ivt.stockingivt.service.IBstIvtStockingivtService; import org.nl.b_lms.bst.ivt.stockingivt.service.dao.BstIvtStockingivt; import org.nl.b_lms.sch.task.dao.SchBaseTask; @@ -28,6 +31,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.ArrayList; import java.util.List; +import static org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil.doSavePaperInfos; + /** * @Author: lyd * @Description: 备货区(靠近机械手)送走托盘到暂存位置的备货区 - AGV任务 @@ -43,6 +48,8 @@ public class StockAreaSendVehicleTask extends AbstractAcsTask { private IBstIvtStockingivtService stockingivtService; @Autowired private StockAreaCallTubeTask stockAreaCallTubeTask; + @Autowired + private IMdPbPapervehicleService mdPbPapervehicleService; @Override public List addTask() { /* @@ -107,6 +114,9 @@ public class StockAreaSendVehicleTask extends AbstractAcsTask { param.put("vehicle_code", callPoint.getString("vehicle_code")); param.put("task_type", SlitterEnum.TASK_TYPE.code("备货区送纸管")); param.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + List paperList = mdPbPapervehicleService.list(new LambdaQueryWrapper() + .eq(MdPbPapervehicle::getVehicle_code, callPoint.getString("vehicle_code"))); + doSavePaperInfos(paperList, param); stockAreaCallTubeTask.createTask(param); } // 取消 diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java index a2491ab6d..3f1ad4eec 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoCallAirShaftTask.java @@ -7,6 +7,8 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.bst.ivt.papervehicle.service.IMdPbPapervehicleService; +import org.nl.b_lms.bst.ivt.papervehicle.service.dao.MdPbPapervehicle; import org.nl.b_lms.bst.ivt.shafttubeivt.service.IBstIvtShafttubeivtService; import org.nl.b_lms.bst.ivt.shafttubeivt.service.dao.BstIvtShafttubeivt; import org.nl.b_lms.bst.ivt.stockingivt.service.IBstIvtStockingivtService; @@ -33,6 +35,8 @@ import org.springframework.transaction.annotation.Transactional; import java.util.List; import java.util.stream.Collectors; +import static org.nl.b_lms.sch.tasks.slitter.util.SlitterTaskUtil.*; + /** * @Author: lyd * @Date: 2024/2/1 @@ -64,6 +68,8 @@ public class AutoCallAirShaftTask { private StockAreaSendVehicleTask stockAreaSendVehicleTask; @Autowired private StockAreaCallTubeTask stockAreaCallTubeTask; + @Autowired + private IMdPbPapervehicleService mdPbPapervehicleService; /** * hint: 目前只是考虑了上区域 @@ -256,7 +262,10 @@ public class AutoCallAirShaftTask { param.put("point_code2", needMovePoint.getPoint_code()); param.put("vehicle_code", needPoint.getVehicle_code()); param.put("task_type", SlitterEnum.TASK_TYPE.code("备货区送纸管")); - param.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + // 存储纸管信息 + List paperList = mdPbPapervehicleService.list(new LambdaQueryWrapper() + .eq(MdPbPapervehicle::getVehicle_code, needPoint.getVehicle_code())); + doSavePaperInfos(paperList, param); stockAreaCallTubeTask.createTask(param); return; } diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterCacheDownAgvTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterCacheDownAgvTask.java new file mode 100644 index 000000000..c148f4a8d --- /dev/null +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterCacheDownAgvTask.java @@ -0,0 +1,70 @@ +package org.nl.b_lms.sch.tasks.slitter.auto; + +import com.alibaba.fastjson.JSONObject; +import lombok.extern.slf4j.Slf4j; +import org.nl.b_lms.bst.ivt.cutpointivt.service.IBstIvtCutpointivtService; +import org.nl.b_lms.bst.ivt.cutpointivt.service.dao.BstIvtCutpointivt; +import org.nl.b_lms.sch.tasks.slitter.SlitterDownAgvTask; +import org.nl.b_lms.sch.tasks.slitter.constant.SlitterConstant; +import org.nl.b_lms.sch.tasks.slitter.constant.SlitterEnum; +import org.nl.b_lms.sch.tasks.slitter.mapper.SlitterMapper; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; + +/** + * @Author: lyd + * @Description: 自动任务 分切机满卷下料(分切对接位:3)去拔轴 AGV任务 + * 先去套轴对接位,(标箔,套轴对接位不够的情况下是去分切缓存位) + * 改成:先去暂存位,手持送到内包间 + * + * 分切对接位和分切缓存位公用类 + * @Date: 2024/2/1 + * @see SlitterDownAgvTask#createTask(JSONObject) + */ +@Slf4j +@Component +public class AutoSlitterCacheDownAgvTask { + + @Autowired + private IBstIvtCutpointivtService cutpointivtService; + @Autowired + private SlitterDownAgvTask slitterDownAgvTask; + @Autowired + private SlitterMapper slitterMapper; + /** + * 业务: + * 分切下料满卷(分切计划是结束),通过气涨轴编码可定位。 + * 先往套轴对接位送,不够再送分切缓存位(针对B2,B4车间) + */ + public void run() { + // 获取分切对接位满轴数据 todo: 先不考虑区域,后期添加 + // bct.point_type IN ('2', '3') -> bct.point_type = '3' + List cutPointIvts = slitterMapper.getAreaFullVolume(); + cutPointIvts.forEach(cut -> { + // cut是起点 + // remove: 1、先去对应的套轴对接位,没有气涨轴(空位),没有任务的点位 + // update: 1、去分切缓存位,在由手持下发到内包间 + List areaEmptyNotTaskPoint = cutpointivtService.getAreaNotTaskPointByStatus("2", "1", "0","0"); + if (areaEmptyNotTaskPoint.size() == 0) { + log.warn(cut.getProduct_area() + "该区域暂无位置存放满轴"); + return; + } + // 生成任务 + BstIvtCutpointivt endPoint = areaEmptyNotTaskPoint.get(0); + toCreateTask(cut, endPoint); + }); + } + + private void toCreateTask(BstIvtCutpointivt cut, BstIvtCutpointivt endPoint) { + JSONObject param = new JSONObject(); + param.put("point_code1", cut.getPoint_code()); + param.put("point_code2", endPoint.getPoint_code()); + param.put("vehicle_code1", cut.getQzz_no1()); + param.put("vehicle_code2", cut.getQzz_no2()); + param.put("task_type", SlitterEnum.TASK_TYPE.code("分切机下料AGV任务")); + param.put("product_area", SlitterConstant.SLITTER_TASK_AREA); + slitterDownAgvTask.createTask(param); + } +} diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterDownAgvTask.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterDownAgvTask.java index d17b243df..022d0c0e0 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterDownAgvTask.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/auto/AutoSlitterDownAgvTask.java @@ -26,12 +26,13 @@ import java.util.stream.Stream; * @Author: lyd * @Description: 自动任务 分切机满卷下料(分切对接位:3)去拔轴 AGV任务 * 先去套轴对接位,(标箔,套轴对接位不够的情况下是去分切缓存位) - * + * update: 业务不需要 * 分切对接位和分切缓存位公用类 * @Date: 2024/2/1 * @see SlitterDownAgvTask#createTask(JSONObject) */ @Slf4j +@Deprecated @Component public class AutoSlitterDownAgvTask { diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/constant/SlitterEnum.java b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/constant/SlitterEnum.java index 626d53979..df4d7209b 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/constant/SlitterEnum.java +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/constant/SlitterEnum.java @@ -21,7 +21,7 @@ public enum SlitterEnum { */ TASK_TYPE(MapOf.of("穿拔轴缓存<>穿拔轴位", "010801", "穿拔轴缓存<>分切对接位", "010802", "穿拔轴位<>气胀轴缓存位", "010803" , "分切机下料AGV任务", "010804", "分切机上气胀轴", "010805", "分切机下气胀轴", "010806", "备货区送载具", "010807" - , "备货区送纸管", "010808", "分切机下料桁架任务", "010809")); + , "备货区送纸管", "010808", "分切机下料桁架任务", "010809", "分切机下料AGV到内包间", "010810")); private Map code; public String code(String desc) { diff --git a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml index 040815d30..c8cedd173 100644 --- a/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml +++ b/lms/nladmin-system/src/main/java/org/nl/b_lms/sch/tasks/slitter/mapper/SlitterMapper.xml @@ -25,7 +25,7 @@