From c0ca9e37a3989303624cbd4e1512fd5658dc5b21 Mon Sep 17 00:00:00 2001 From: psh Date: Fri, 13 Oct 2023 09:35:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8C=85=E7=89=87=E4=B8=8A=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../device/device_driver/DriverTypeEnum.java | 4 +- .../acs/device_driver/RequestMethodEnum.java | 3 +- .../StandardInspectSiteDeviceDriver.java | 3 + .../src/views/acs/device/config.vue | 3 + .../acs/device/driver/standard_autodoor.vue | 352 ++++++++++++++++++ .../sch/task_manage/task/tasks/BPSLTask.java | 160 ++++---- .../task_manage/task/tasks/KGHJRKTask.java | 159 +------- .../sch/task_manage/task/tasks/MJXLTask.java | 3 +- .../task_manage/task/tasks/TBXBKJTask.java | 159 +------- .../sch/task_manage/task/tasks/XSCKTask.java | 159 +------- .../task_manage/task/tasks/ZJBZKDDTask.java | 159 +------- .../task_manage/task/tasks/ghs/GHSFMTask.java | 2 +- .../task_manage/task/tasks/ghs/GHSQHTask.java | 268 +++++++------ .../task/tasks/mapper/PointMapper.java | 5 +- .../task/tasks/mapper/PointMapper.xml | 6 +- .../main/java/org/nl/wms/util/PointUtils.java | 1 - .../src/views/wms/sch/point/index.vue | 3 +- 17 files changed, 640 insertions(+), 809 deletions(-) create mode 100644 acs/nladmin-ui/src/views/acs/device/driver/standard_autodoor.vue diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java index 25cbc41..171c793 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device/device_driver/DriverTypeEnum.java @@ -25,7 +25,9 @@ public enum DriverTypeEnum { AGV_NDC_TWO(8, "agv_ndc_two", "NDC2楼AGV", "agv"), - XGAGV(9, "xg_agv", "xg_agv", "agv"); + XGAGV(9, "xg_agv", "xg_agv", "agv"), + + AUTODOOR(10, "standard_autodoor", "标准版-自动门", "autodoor"); //驱动索引 private int index; diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java index 192cfa6..fa681a3 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/RequestMethodEnum.java @@ -11,7 +11,8 @@ import com.alibaba.fastjson.JSONObject; */ public enum RequestMethodEnum { apply_mjxl(1, "MJXLTask", "涂板线满架下料","1"), - feedback_task_status(2, "feedback_task_status", "反馈任务状态","1"); + feedback_task_status(2, "feedback_task_status", "反馈任务状态","1"), + apply_bpsl(3, "BPSLTask", "包片上料","1"); //驱动索引 diff --git a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java index 1aca9c4..8a30c13 100644 --- a/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java +++ b/acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/standard_inspect_site/StandardInspectSiteDeviceDriver.java @@ -446,6 +446,9 @@ public class StandardInspectSiteDeviceDriver extends AbstractOpcDeviceDriver imp if (devicecode.startsWith("TBX")) { request.setRequest_medthod_code(RequestMethodEnum.apply_mjxl.getCode()); request.setRequest_medthod_name(RequestMethodEnum.apply_mjxl.getName()); + }else if(devicecode.startsWith("BP")){ + request.setRequest_medthod_code(RequestMethodEnum.apply_bpsl.getCode()); + request.setRequest_medthod_name(RequestMethodEnum.apply_bpsl.getName()); } String resp = acsToWmsService.applyTask(request); JSONObject res_jo = JSONObject.parseObject(resp); diff --git a/acs/nladmin-ui/src/views/acs/device/config.vue b/acs/nladmin-ui/src/views/acs/device/config.vue index 4f95dc4..91a8fc8 100644 --- a/acs/nladmin-ui/src/views/acs/device/config.vue +++ b/acs/nladmin-ui/src/views/acs/device/config.vue @@ -73,6 +73,7 @@ import crud from '@/mixins/crud' import { get, selectDriverCodeList } from '@/api/acs/device/driverConfig' import { getDicts } from '@/views/system/dict/dict' +import standard_autodoor from '@/views/acs/device/driver/standard_autodoor' import standard_inspect_site from './driver/standard_inspect_site' import standard_ordinary_site from './driver/standard_ordinary_site' import standard_storage from '@/views/acs/device/driver/standard_storage' @@ -88,9 +89,11 @@ import agv_ndc_one from '@/views/acs/device/driver/agv/agv_ndc_one' import agv_ndc_two from '@/views/acs/device/driver/agv/agv_ndc_two' import xg_agv from '@/views/acs/device/driver/agv/xg_agv' + export default { name: 'DeviceConfig', components: { + standard_autodoor, standard_ordinary_site, standard_inspect_site, standard_storage, diff --git a/acs/nladmin-ui/src/views/acs/device/driver/standard_autodoor.vue b/acs/nladmin-ui/src/views/acs/device/driver/standard_autodoor.vue new file mode 100644 index 0000000..41e2f46 --- /dev/null +++ b/acs/nladmin-ui/src/views/acs/device/driver/standard_autodoor.vue @@ -0,0 +1,352 @@ + + + + + diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/BPSLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/BPSLTask.java index 147429b..8845fb6 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/BPSLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/BPSLTask.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.MapOf; +import org.nl.wms.ext.service.WmsToAcsService; import org.nl.wms.pdm.service.IPdmBdWorkorderService; import org.nl.wms.pdm.service.dao.PdmBdWorkorder; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; @@ -19,6 +20,7 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.GeneralDefinition; import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; import org.nl.wms.sch.task_manage.enums.GroupStatusEnum; import org.nl.wms.sch.task_manage.task.TaskType; @@ -58,7 +60,9 @@ public class BPSLTask extends AbstractTask { @Autowired private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Autowired - private PointMapper yzMapper; + private PointMapper pointMapper; + @Autowired + private WmsToAcsService wmsToAcsService; @Override // @Transactional(rollbackFor = Exception.class) @@ -69,72 +73,64 @@ public class BPSLTask extends AbstractTask { SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); for (SchBaseTask task : tasks) { - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 + // 找起点 + SchBasePoint nextPoint = pointService.getOne(new LambdaQueryWrapper() + .eq(SchBasePoint::getPoint_code, task.getPoint_code2())); String extGroupData = task.getExt_group_data(); JSONObject jsonObject = JSONObject.parseObject(extGroupData); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); + String materialType = jsonObject.getString("material_type"); + SchBasePoint point = findNextPoint(jsonObject); if (ObjectUtil.isEmpty(point)) { task.setRemark("未找到所需点位!"); taskService.update(task); // 消息通知 + log.info("包片上料未找到当前符合条件的点位materialType:{},",materialType); continue; } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); + // 设置起点并修改创建成功状态 + task.setPoint_code1(point.getPoint_code()); task.setTask_status(TaskStatus.CREATED.getCode()); task.setRemark(""); taskService.update(task); + //发起任务时先把点位占用,防止发起重复任务 point.setIng_task_code(task.getTask_code()); + point.setVehicle_qty(point.getVehicle_qty() - 1); + point.setVehicle_type(materialType); pointService.update(point); //下发 -// this.renotifyAcs(task); + this.renotifyAcs(task); } } /** - * 判断是否加急:是->入窑口,否->双层缓存线 + * 判断目标点位 + * 从10-1查找可以物料一致且有货的点位 * - * @param nextRegionStr * @param extGroupData * @return */ - private SchBasePoint findNextPoint(List nextRegionStr, JSONObject extGroupData) { - // 需要获取nextRegionStr - if (nextRegionStr.size() < 2) { - throw new BadRequestException("压制送料任务的配置文件有错!"); - } - String regionCode = nextRegionStr.get(0); - // 当前设备的工单 - String workorderCode = extGroupData.getString("workorder_code"); - PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) - : null; - if (one == null) { - throw new BadRequestException("压制机的工单不能为空!"); - } - // 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线 - if (one.getIs_urgent()) { - regionCode = nextRegionStr.get(1); // 去窑区 + private SchBasePoint findNextPoint(JSONObject extGroupData) { + String regionCode = "HCQ1"; + String materialType = extGroupData.getString("material_type"); + List schBasePointList = pointMapper.findPointByRegion(regionCode,"2"); + for(int i=schBasePointList.size()-1;i>=0;i--){ + SchBasePoint schBasePoint=schBasePointList.get(i); + if (schBasePoint.getVehicle_qty()!=0 + &&ObjectUtil.isEmpty(schBasePoint.getIng_task_code()) + &&(ObjectUtil.isEmpty(schBasePoint.getVehicle_type())||materialType.equals(schBasePoint.getVehicle_type()))){ + log.info("包片上料任务找到当前符合条件的缓存区位置{}",schBasePoint.getPoint_code()); + return schBasePoint; + } } - List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( - MapOf.of("regionCode", regionCode, "pointType", ENTRANCE))); - return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null; - // ?? -// LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); -// lam.eq(SchBasePoint::getRegion_code, regionCode) -// .eq(SchBasePoint::getPoint_type, ENTRANCE) -// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 -// .or() -// .eq(SchBasePoint::getIng_task_code, "")) -// .eq(SchBasePoint::getIs_used, true); -// List schBasePoints = pointService.list(lam); -// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; + return null; } + /** + * 1.取货完毕后起点减少最后一份组盘,,并且该组盘视为已结束 + * 2.包片机LMS不记录点位信息,由人工对组盘进行操作 + */ @Override // @Transactional(rollbackFor = Exception.class) protected void updateStatus(String task_code, TaskStatus status) { @@ -146,18 +142,6 @@ public class BPSLTask extends AbstractTask { if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { throw new BadRequestException("该任务已取消!"); } - // 获取参数 - JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data()) - ? JSONObject.parseObject(taskObj.getExt_group_data()) - : null; - // 载具编码:没有就创建一个 - String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) - ? taskObj.getVehicle_code() - : IdUtil.getSnowflake(1, 1).nextIdStr(); - PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code")) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code"))) - : null; String startPoint = taskObj.getPoint_code1(); // 获取起点 String endPoint = taskObj.getPoint_code2(); // 获取终点 SchBasePoint startPointObj = pointService.getById(startPoint); @@ -168,46 +152,40 @@ public class BPSLTask extends AbstractTask { taskObj.setRemark("执行中"); } if (status.equals(TaskStatus.FINISHED)) { // 完成 + List vehicleCodeList = Arrays.stream(startPointObj.getVehicle_code().split(",")).collect(Collectors.toList()); + String vehicleCode=vehicleCodeList.get(vehicleCodeList.size()-1); + SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper() + .eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode) + .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, + GroupBindMaterialStatusEnum.BOUND.getValue())); + if (ObjectUtil.isEmpty(one)) { + throw new BadRequestException(vehicleCode + " => " + startPointObj.getVehicle_type() + "的组盘信息未找到"); + } + one.setTask_code(taskObj.getTask_code()); + one.setPoint_code(endPointObj.getPoint_code()); // 当前位置 + one.setPoint_name(endPointObj.getPoint_name()); + one.setMove_way(one.getMove_way()==null?"":(one.getMove_way() + " -> ") + endPointObj.getPoint_code()); + one.setGroup_bind_material_status(GroupBindMaterialStatusEnum.UNBOUND.getValue()); + one.setUpdate_id(GeneralDefinition.ACS_ID); + one.setUpdate_name(GeneralDefinition.ACS_NAME); + one.setUpdate_time(DateUtil.now()); + vehiclematerialgroupService.updateById(one); // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.clearPoint(startPointObj); + if (vehicleCodeList.size()==1) { + startPointObj.setVehicle_code(""); + }else{ + StringBuilder vehicle_code=new StringBuilder(); + for(int i=0;i<=vehicleCodeList.size()-2;i++){ + vehicle_code.append(vehicleCodeList.get(i)).append(','); + } + startPointObj.setVehicle_code(vehicle_code.toString()); } - // 终点解锁 - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - // 要把数据存到组盘表 -> 改造公共方法,返回id - SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); - groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr()); - groupEntity.setCreate_id("2"); - groupEntity.setCreate_name("ACS"); - groupEntity.setCreate_time(DateUtil.now()); - groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getMaterial_id() - : ""); - groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getStanding_time() - : 0); - groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData) - ? extGroupData.getBigDecimal("material_qty") - : BigDecimal.valueOf(0)); - groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getWorkorder_code() - : ""); - groupEntity.setVehicle_code(vehicle_code); - groupEntity.setVehicle_type(taskObj.getVehicle_type()); - groupEntity.setPoint_code(startPoint); - groupEntity.setPoint_name(startPointObj.getPoint_name()); - groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd")); - groupEntity.setInstorage_time(DateUtil.now()); - groupEntity.setTask_code(taskObj.getTask_code()); - groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 - groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 - groupEntity.setIs_delete(false); - vehiclematerialgroupService.save(groupEntity); - + startPointObj.setIng_task_code(""); + startPointObj.setUpdate_time(DateUtil.now()); + pointService.updateById(startPointObj); // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setGroup_id(groupEntity.getGroup_id()); + taskObj.setGroup_id(one.getGroup_id()); taskObj.setRemark("任务完成"); } if (status.equals(TaskStatus.CANCELED)) { // 取消 @@ -216,6 +194,12 @@ public class BPSLTask extends AbstractTask { endPointObj.setIng_task_code(""); pointService.update(endPointObj); } + // 起点解锁 + if (ObjectUtil.isNotEmpty(startPointObj)) { + startPointObj.setIng_task_code(""); + startPointObj.setVehicle_qty(startPointObj.getVehicle_qty()+1); + pointService.update(endPointObj); + } taskObj.setRemark("任务取消"); taskObj.setTask_status(TaskStatus.CANCELED.getCode()); } diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KGHJRKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KGHJRKTask.java index a7811f0..2a72516 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KGHJRKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/KGHJRKTask.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.MapOf; +import org.nl.wms.ext.service.WmsToAcsService; import org.nl.wms.pdm.service.IPdmBdWorkorderService; import org.nl.wms.pdm.service.dao.PdmBdWorkorder; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; @@ -58,168 +59,24 @@ public class KGHJRKTask extends AbstractTask { @Autowired private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Autowired - private PointMapper yzMapper; + private PointMapper pointMapper; + @Autowired + private WmsToAcsService wmsToAcsService; @Override // @Transactional(rollbackFor = Exception.class) protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - String extGroupData = task.getExt_group_data(); - JSONObject jsonObject = JSONObject.parseObject(extGroupData); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); - taskService.update(task); - // 消息通知 - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.update(task); - - point.setIng_task_code(task.getTask_code()); - pointService.update(point); - //下发 -// this.renotifyAcs(task); - } } - /** - * 判断是否加急:是->入窑口,否->双层缓存线 - * - * @param nextRegionStr - * @param extGroupData - * @return - */ - private SchBasePoint findNextPoint(List nextRegionStr, JSONObject extGroupData) { - // 需要获取nextRegionStr - if (nextRegionStr.size() < 2) { - throw new BadRequestException("压制送料任务的配置文件有错!"); - } - String regionCode = nextRegionStr.get(0); - // 当前设备的工单 - String workorderCode = extGroupData.getString("workorder_code"); - PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) - : null; - if (one == null) { - throw new BadRequestException("压制机的工单不能为空!"); - } - // 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线 - if (one.getIs_urgent()) { - regionCode = nextRegionStr.get(1); // 去窑区 - } - List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( - MapOf.of("regionCode", regionCode, "pointType", ENTRANCE))); - return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null; - // ?? -// LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); -// lam.eq(SchBasePoint::getRegion_code, regionCode) -// .eq(SchBasePoint::getPoint_type, ENTRANCE) -// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 -// .or() -// .eq(SchBasePoint::getIng_task_code, "")) -// .eq(SchBasePoint::getIs_used, true); -// List schBasePoints = pointService.list(lam); -// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; + + private SchBasePoint findNextPoint(SchBasePoint startPoint) { + return null; } @Override // @Transactional(rollbackFor = Exception.class) protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException("该任务已完成!"); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException("该任务已取消!"); - } - // 获取参数 - JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data()) - ? JSONObject.parseObject(taskObj.getExt_group_data()) - : null; - // 载具编码:没有就创建一个 - String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) - ? taskObj.getVehicle_code() - : IdUtil.getSnowflake(1, 1).nextIdStr(); - PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code")) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code"))) - : null; - String startPoint = taskObj.getPoint_code1(); // 获取起点 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint startPointObj = pointService.getById(startPoint); - SchBasePoint endPointObj = pointService.getById(endPoint); - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.clearPoint(startPointObj); - } - // 终点解锁 - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - // 要把数据存到组盘表 -> 改造公共方法,返回id - SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); - groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr()); - groupEntity.setCreate_id("2"); - groupEntity.setCreate_name("ACS"); - groupEntity.setCreate_time(DateUtil.now()); - groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getMaterial_id() - : ""); - groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getStanding_time() - : 0); - groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData) - ? extGroupData.getBigDecimal("material_qty") - : BigDecimal.valueOf(0)); - groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getWorkorder_code() - : ""); - groupEntity.setVehicle_code(vehicle_code); - groupEntity.setVehicle_type(taskObj.getVehicle_type()); - groupEntity.setPoint_code(startPoint); - groupEntity.setPoint_name(startPointObj.getPoint_name()); - groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd")); - groupEntity.setInstorage_time(DateUtil.now()); - groupEntity.setTask_code(taskObj.getTask_code()); - groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 - groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 - groupEntity.setIs_delete(false); - vehiclematerialgroupService.save(groupEntity); - - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setGroup_id(groupEntity.getGroup_id()); - taskObj.setRemark("任务完成"); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - // 终点解锁 - if (ObjectUtil.isNotEmpty(endPointObj)) { - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - } - taskObj.setRemark("任务取消"); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - } - taskService.update(taskObj); } @Override @@ -231,4 +88,4 @@ public class KGHJRKTask extends AbstractTask { public void cancel(String task_code) { this.updateStatus(task_code, TaskStatus.CANCELED); } -} +} \ No newline at end of file diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/MJXLTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/MJXLTask.java index c1190a8..d9a42d0 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/MJXLTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/MJXLTask.java @@ -78,7 +78,7 @@ public class MJXLTask extends AbstractTask { task.setRemark("未找到所需点位!"); taskService.update(task); // 消息通知 - log.info("未找到当前符合条件的点位materialType:{},",materialType); + log.info("满架下料未找到当前符合条件的点位materialType:{},",materialType); continue; } // 设置终点并修改创建成功状态 @@ -206,6 +206,7 @@ public class MJXLTask extends AbstractTask { groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 groupEntity.setIs_delete(false); + groupEntity.setMove_way(startPoint); vehiclematerialgroupService.save(groupEntity); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/TBXBKJTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/TBXBKJTask.java index 75752a2..8b4315f 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/TBXBKJTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/TBXBKJTask.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.MapOf; +import org.nl.wms.ext.service.WmsToAcsService; import org.nl.wms.pdm.service.IPdmBdWorkorderService; import org.nl.wms.pdm.service.dao.PdmBdWorkorder; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; @@ -58,168 +59,24 @@ public class TBXBKJTask extends AbstractTask { @Autowired private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Autowired - private PointMapper yzMapper; + private PointMapper pointMapper; + @Autowired + private WmsToAcsService wmsToAcsService; @Override // @Transactional(rollbackFor = Exception.class) protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - String extGroupData = task.getExt_group_data(); - JSONObject jsonObject = JSONObject.parseObject(extGroupData); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); - taskService.update(task); - // 消息通知 - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.update(task); - - point.setIng_task_code(task.getTask_code()); - pointService.update(point); - //下发 -// this.renotifyAcs(task); - } } - /** - * 判断是否加急:是->入窑口,否->双层缓存线 - * - * @param nextRegionStr - * @param extGroupData - * @return - */ - private SchBasePoint findNextPoint(List nextRegionStr, JSONObject extGroupData) { - // 需要获取nextRegionStr - if (nextRegionStr.size() < 2) { - throw new BadRequestException("压制送料任务的配置文件有错!"); - } - String regionCode = nextRegionStr.get(0); - // 当前设备的工单 - String workorderCode = extGroupData.getString("workorder_code"); - PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) - : null; - if (one == null) { - throw new BadRequestException("压制机的工单不能为空!"); - } - // 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线 - if (one.getIs_urgent()) { - regionCode = nextRegionStr.get(1); // 去窑区 - } - List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( - MapOf.of("regionCode", regionCode, "pointType", ENTRANCE))); - return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null; - // ?? -// LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); -// lam.eq(SchBasePoint::getRegion_code, regionCode) -// .eq(SchBasePoint::getPoint_type, ENTRANCE) -// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 -// .or() -// .eq(SchBasePoint::getIng_task_code, "")) -// .eq(SchBasePoint::getIs_used, true); -// List schBasePoints = pointService.list(lam); -// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; + + private SchBasePoint findNextPoint(SchBasePoint startPoint) { + return null; } @Override // @Transactional(rollbackFor = Exception.class) protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException("该任务已完成!"); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException("该任务已取消!"); - } - // 获取参数 - JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data()) - ? JSONObject.parseObject(taskObj.getExt_group_data()) - : null; - // 载具编码:没有就创建一个 - String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) - ? taskObj.getVehicle_code() - : IdUtil.getSnowflake(1, 1).nextIdStr(); - PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code")) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code"))) - : null; - String startPoint = taskObj.getPoint_code1(); // 获取起点 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint startPointObj = pointService.getById(startPoint); - SchBasePoint endPointObj = pointService.getById(endPoint); - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.clearPoint(startPointObj); - } - // 终点解锁 - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - // 要把数据存到组盘表 -> 改造公共方法,返回id - SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); - groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr()); - groupEntity.setCreate_id("2"); - groupEntity.setCreate_name("ACS"); - groupEntity.setCreate_time(DateUtil.now()); - groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getMaterial_id() - : ""); - groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getStanding_time() - : 0); - groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData) - ? extGroupData.getBigDecimal("material_qty") - : BigDecimal.valueOf(0)); - groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getWorkorder_code() - : ""); - groupEntity.setVehicle_code(vehicle_code); - groupEntity.setVehicle_type(taskObj.getVehicle_type()); - groupEntity.setPoint_code(startPoint); - groupEntity.setPoint_name(startPointObj.getPoint_name()); - groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd")); - groupEntity.setInstorage_time(DateUtil.now()); - groupEntity.setTask_code(taskObj.getTask_code()); - groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 - groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 - groupEntity.setIs_delete(false); - vehiclematerialgroupService.save(groupEntity); - - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setGroup_id(groupEntity.getGroup_id()); - taskObj.setRemark("任务完成"); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - // 终点解锁 - if (ObjectUtil.isNotEmpty(endPointObj)) { - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - } - taskObj.setRemark("任务取消"); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - } - taskService.update(taskObj); } @Override @@ -231,4 +88,4 @@ public class TBXBKJTask extends AbstractTask { public void cancel(String task_code) { this.updateStatus(task_code, TaskStatus.CANCELED); } -} +} \ No newline at end of file diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/XSCKTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/XSCKTask.java index 3316762..9f950f2 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/XSCKTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/XSCKTask.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.MapOf; +import org.nl.wms.ext.service.WmsToAcsService; import org.nl.wms.pdm.service.IPdmBdWorkorderService; import org.nl.wms.pdm.service.dao.PdmBdWorkorder; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; @@ -58,168 +59,24 @@ public class XSCKTask extends AbstractTask { @Autowired private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Autowired - private PointMapper yzMapper; + private PointMapper pointMapper; + @Autowired + private WmsToAcsService wmsToAcsService; @Override // @Transactional(rollbackFor = Exception.class) protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - String extGroupData = task.getExt_group_data(); - JSONObject jsonObject = JSONObject.parseObject(extGroupData); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); - taskService.update(task); - // 消息通知 - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.update(task); - - point.setIng_task_code(task.getTask_code()); - pointService.update(point); - //下发 -// this.renotifyAcs(task); - } } - /** - * 判断是否加急:是->入窑口,否->双层缓存线 - * - * @param nextRegionStr - * @param extGroupData - * @return - */ - private SchBasePoint findNextPoint(List nextRegionStr, JSONObject extGroupData) { - // 需要获取nextRegionStr - if (nextRegionStr.size() < 2) { - throw new BadRequestException("压制送料任务的配置文件有错!"); - } - String regionCode = nextRegionStr.get(0); - // 当前设备的工单 - String workorderCode = extGroupData.getString("workorder_code"); - PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) - : null; - if (one == null) { - throw new BadRequestException("压制机的工单不能为空!"); - } - // 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线 - if (one.getIs_urgent()) { - regionCode = nextRegionStr.get(1); // 去窑区 - } - List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( - MapOf.of("regionCode", regionCode, "pointType", ENTRANCE))); - return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null; - // ?? -// LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); -// lam.eq(SchBasePoint::getRegion_code, regionCode) -// .eq(SchBasePoint::getPoint_type, ENTRANCE) -// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 -// .or() -// .eq(SchBasePoint::getIng_task_code, "")) -// .eq(SchBasePoint::getIs_used, true); -// List schBasePoints = pointService.list(lam); -// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; + + private SchBasePoint findNextPoint(SchBasePoint startPoint) { + return null; } @Override // @Transactional(rollbackFor = Exception.class) protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException("该任务已完成!"); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException("该任务已取消!"); - } - // 获取参数 - JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data()) - ? JSONObject.parseObject(taskObj.getExt_group_data()) - : null; - // 载具编码:没有就创建一个 - String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) - ? taskObj.getVehicle_code() - : IdUtil.getSnowflake(1, 1).nextIdStr(); - PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code")) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code"))) - : null; - String startPoint = taskObj.getPoint_code1(); // 获取起点 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint startPointObj = pointService.getById(startPoint); - SchBasePoint endPointObj = pointService.getById(endPoint); - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.clearPoint(startPointObj); - } - // 终点解锁 - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - // 要把数据存到组盘表 -> 改造公共方法,返回id - SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); - groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr()); - groupEntity.setCreate_id("2"); - groupEntity.setCreate_name("ACS"); - groupEntity.setCreate_time(DateUtil.now()); - groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getMaterial_id() - : ""); - groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getStanding_time() - : 0); - groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData) - ? extGroupData.getBigDecimal("material_qty") - : BigDecimal.valueOf(0)); - groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getWorkorder_code() - : ""); - groupEntity.setVehicle_code(vehicle_code); - groupEntity.setVehicle_type(taskObj.getVehicle_type()); - groupEntity.setPoint_code(startPoint); - groupEntity.setPoint_name(startPointObj.getPoint_name()); - groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd")); - groupEntity.setInstorage_time(DateUtil.now()); - groupEntity.setTask_code(taskObj.getTask_code()); - groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 - groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 - groupEntity.setIs_delete(false); - vehiclematerialgroupService.save(groupEntity); - - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setGroup_id(groupEntity.getGroup_id()); - taskObj.setRemark("任务完成"); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - // 终点解锁 - if (ObjectUtil.isNotEmpty(endPointObj)) { - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - } - taskObj.setRemark("任务取消"); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - } - taskService.update(taskObj); } @Override @@ -231,4 +88,4 @@ public class XSCKTask extends AbstractTask { public void cancel(String task_code) { this.updateStatus(task_code, TaskStatus.CANCELED); } -} +} \ No newline at end of file diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZJBZKDDTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZJBZKDDTask.java index e90d441..0ae7ac9 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZJBZKDDTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ZJBZKDDTask.java @@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.MapOf; +import org.nl.wms.ext.service.WmsToAcsService; import org.nl.wms.pdm.service.IPdmBdWorkorderService; import org.nl.wms.pdm.service.dao.PdmBdWorkorder; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; @@ -58,168 +59,24 @@ public class ZJBZKDDTask extends AbstractTask { @Autowired private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Autowired - private PointMapper yzMapper; + private PointMapper pointMapper; + @Autowired + private WmsToAcsService wmsToAcsService; @Override // @Transactional(rollbackFor = Exception.class) protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - String extGroupData = task.getExt_group_data(); - JSONObject jsonObject = JSONObject.parseObject(extGroupData); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); - taskService.update(task); - // 消息通知 - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.update(task); - - point.setIng_task_code(task.getTask_code()); - pointService.update(point); - //下发 -// this.renotifyAcs(task); - } } - /** - * 判断是否加急:是->入窑口,否->双层缓存线 - * - * @param nextRegionStr - * @param extGroupData - * @return - */ - private SchBasePoint findNextPoint(List nextRegionStr, JSONObject extGroupData) { - // 需要获取nextRegionStr - if (nextRegionStr.size() < 2) { - throw new BadRequestException("压制送料任务的配置文件有错!"); - } - String regionCode = nextRegionStr.get(0); - // 当前设备的工单 - String workorderCode = extGroupData.getString("workorder_code"); - PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) - : null; - if (one == null) { - throw new BadRequestException("压制机的工单不能为空!"); - } - // 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线 - if (one.getIs_urgent()) { - regionCode = nextRegionStr.get(1); // 去窑区 - } - List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( - MapOf.of("regionCode", regionCode, "pointType", ENTRANCE))); - return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null; - // ?? -// LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); -// lam.eq(SchBasePoint::getRegion_code, regionCode) -// .eq(SchBasePoint::getPoint_type, ENTRANCE) -// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 -// .or() -// .eq(SchBasePoint::getIng_task_code, "")) -// .eq(SchBasePoint::getIs_used, true); -// List schBasePoints = pointService.list(lam); -// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; + + private SchBasePoint findNextPoint(SchBasePoint startPoint) { + return null; } @Override // @Transactional(rollbackFor = Exception.class) protected void updateStatus(String task_code, TaskStatus status) { - // 校验任务 - SchBaseTask taskObj = taskService.getById(task_code); - if (taskObj.getTask_status().equals(TaskStatus.FINISHED.getCode())) { - throw new BadRequestException("该任务已完成!"); - } - if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { - throw new BadRequestException("该任务已取消!"); - } - // 获取参数 - JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data()) - ? JSONObject.parseObject(taskObj.getExt_group_data()) - : null; - // 载具编码:没有就创建一个 - String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) - ? taskObj.getVehicle_code() - : IdUtil.getSnowflake(1, 1).nextIdStr(); - PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code")) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code"))) - : null; - String startPoint = taskObj.getPoint_code1(); // 获取起点 - String endPoint = taskObj.getPoint_code2(); // 获取终点 - SchBasePoint startPointObj = pointService.getById(startPoint); - SchBasePoint endPointObj = pointService.getById(endPoint); - // 根据传来的类型去对任务进行操作 - if (status.equals(TaskStatus.EXECUTING)) { // 执行中 - taskObj.setTask_status(TaskStatus.EXECUTING.getCode()); - taskObj.setRemark("执行中"); - } - if (status.equals(TaskStatus.FINISHED)) { // 完成 - // 起点清空 - if (ObjectUtil.isNotEmpty(startPointObj)) { - PointUtils.clearPoint(startPointObj); - } - // 终点解锁 - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - // 要把数据存到组盘表 -> 改造公共方法,返回id - SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); - groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr()); - groupEntity.setCreate_id("2"); - groupEntity.setCreate_name("ACS"); - groupEntity.setCreate_time(DateUtil.now()); - groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getMaterial_id() - : ""); - groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getStanding_time() - : 0); - groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData) - ? extGroupData.getBigDecimal("material_qty") - : BigDecimal.valueOf(0)); - groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getWorkorder_code() - : ""); - groupEntity.setVehicle_code(vehicle_code); - groupEntity.setVehicle_type(taskObj.getVehicle_type()); - groupEntity.setPoint_code(startPoint); - groupEntity.setPoint_name(startPointObj.getPoint_name()); - groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd")); - groupEntity.setInstorage_time(DateUtil.now()); - groupEntity.setTask_code(taskObj.getTask_code()); - groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 - groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 - groupEntity.setIs_delete(false); - vehiclematerialgroupService.save(groupEntity); - - // 任务完成 - taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setGroup_id(groupEntity.getGroup_id()); - taskObj.setRemark("任务完成"); - } - if (status.equals(TaskStatus.CANCELED)) { // 取消 - // 终点解锁 - if (ObjectUtil.isNotEmpty(endPointObj)) { - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - } - taskObj.setRemark("任务取消"); - taskObj.setTask_status(TaskStatus.CANCELED.getCode()); - } - taskService.update(taskObj); } @Override @@ -231,4 +88,4 @@ public class ZJBZKDDTask extends AbstractTask { public void cancel(String task_code) { this.updateStatus(task_code, TaskStatus.CANCELED); } -} +} \ No newline at end of file diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ghs/GHSFMTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ghs/GHSFMTask.java index c2d526a..8060f56 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ghs/GHSFMTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ghs/GHSFMTask.java @@ -242,7 +242,7 @@ public class GHSFMTask extends AbstractTask { one.setTask_code(taskObj.getTask_code()); one.setPoint_code(endPointObj.getPoint_code()); // 当前位置 one.setPoint_name(endPointObj.getPoint_name()); - one.setMove_way(one.getMove_way() + " -> " + endPointObj.getPoint_code()); + one.setMove_way(one.getMove_way()==null?"":(one.getMove_way() + " -> ") + endPointObj.getPoint_code()); one.setUpdate_id(GeneralDefinition.ACS_ID); one.setUpdate_name(GeneralDefinition.ACS_NAME); one.setUpdate_time(DateUtil.now()); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ghs/GHSQHTask.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ghs/GHSQHTask.java index de04a1b..3506ab8 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ghs/GHSQHTask.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/ghs/GHSQHTask.java @@ -1,6 +1,7 @@ package org.nl.wms.sch.task_manage.task.tasks.ghs; 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; @@ -8,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import lombok.extern.slf4j.Slf4j; import org.nl.common.exception.BadRequestException; import org.nl.config.MapOf; +import org.nl.wms.ext.service.WmsToAcsService; import org.nl.wms.pdm.service.IPdmBdWorkorderService; import org.nl.wms.pdm.service.dao.PdmBdWorkorder; import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService; @@ -19,6 +21,7 @@ import org.nl.wms.sch.task.service.ISchBaseTaskconfigService; import org.nl.wms.sch.task.service.dao.SchBaseTask; import org.nl.wms.sch.task.service.dao.SchBaseTaskconfig; import org.nl.wms.sch.task_manage.AbstractTask; +import org.nl.wms.sch.task_manage.GeneralDefinition; import org.nl.wms.sch.task_manage.enums.GroupBindMaterialStatusEnum; import org.nl.wms.sch.task_manage.enums.GroupStatusEnum; import org.nl.wms.sch.task_manage.task.TaskType; @@ -58,83 +61,141 @@ public class GHSQHTask extends AbstractTask { @Autowired private ISchBaseVehiclematerialgroupService vehiclematerialgroupService; @Autowired - private PointMapper yzMapper; + private PointMapper pointMapper; + @Autowired + private WmsToAcsService wmsToAcsService; + /** + * 1.扫描每个允许取货的固化室从1-10的顺序开始进行取货 + */ @Override // @Transactional(rollbackFor = Exception.class) protected void create() throws BadRequestException { - // 获取任务 - List tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY); - // 配置信息 - SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() - .eq(SchBaseTaskconfig::getConfig_code, TASK_CONFIG_CODE)); - for (SchBaseTask task : tasks) { - List nextRegionStr = Arrays.stream(taskConfig.getNext_region_str().split(",")).collect(Collectors.toList()); - // 找终点 - String extGroupData = task.getExt_group_data(); - JSONObject jsonObject = JSONObject.parseObject(extGroupData); - SchBasePoint point = findNextPoint(nextRegionStr, jsonObject); - if (ObjectUtil.isEmpty(point)) { - task.setRemark("未找到所需点位!"); - taskService.update(task); - // 消息通知 - continue; - } - // 设置终点并修改创建成功状态 - task.setPoint_code2(point.getPoint_code()); - task.setTask_status(TaskStatus.CREATED.getCode()); - task.setRemark(""); - taskService.update(task); - - point.setIng_task_code(task.getTask_code()); - pointService.update(point); - //下发 -// this.renotifyAcs(task); + List schBasePointList = pointMapper.findPointByRegion("GHS","3"); + if (schBasePointList.size()==0) { + // 消息通知 + log.info("未找到当前符合允许取货的固化室点位,暂不生成任务"); + return; + } + SchBasePoint schBasePoint=null; + //按顺序查找第一个符合条件的固化室位置,发起任务 + for(SchBasePoint schBasePoint1:schBasePointList){ + if (schBasePoint1.getVehicle_qty()==3&&ObjectUtil.isEmpty(schBasePoint1.getIng_task_code())) { + schBasePoint=schBasePoint1; + break; + } } + if (ObjectUtil.isEmpty(schBasePoint)) { + // 消息通知 + log.info("未找到当前符合允许取货的固化室点位,暂不生成任务"); + return; + } + SchBasePoint nextPoint=this.findNextPoint(schBasePoint); + if (ObjectUtil.isEmpty(nextPoint)) { + // 消息通知 + log.info("未找到当前符合允许放货的缓存点,暂不生成任务Vehicle_type:{}",schBasePoint.getVehicle_type()); + return; + } + this.createTask(schBasePoint,nextPoint.getPoint_code()); + } /** - * 判断是否加急:是->入窑口,否->双层缓存线 + * 创建任务并下发 * - * @param nextRegionStr - * @param extGroupData + * @param schBasePoint + * @param endPoint * @return */ - private SchBasePoint findNextPoint(List nextRegionStr, JSONObject extGroupData) { - // 需要获取nextRegionStr - if (nextRegionStr.size() < 2) { - throw new BadRequestException("压制送料任务的配置文件有错!"); + private void createTask(SchBasePoint schBasePoint,String endPoint) { + // 申请任务 + SchBaseTask task = new SchBaseTask(); // 任务实体 + String apply_point_code =schBasePoint.getPoint_code(); // 请求点 + String config_code = "GHSQHTask"; + // 1、校验数据 + SchBaseTaskconfig taskConfig = taskConfigService.getOne(new LambdaQueryWrapper() + .eq(SchBaseTaskconfig::getConfig_code, config_code)); + Assert.notNull(taskConfig, "找不到配置文件,请确认[" + config_code + "]配置是否存在!"); + // 最大任务数 + Integer tcmn = taskConfig.getTask_create_max_num(); + // 获取执行中的任务 + List unFinishTasksByTaskConfig = taskService.findUnFinishTasksByTaskConfig( + taskConfig.getConfig_code(), apply_point_code, taskConfig.getTask_direction()); + + Assert.isFalse(unFinishTasksByTaskConfig.size() >= tcmn, + "该点位申请的任务未完成数已超过上限,无法申请任务"); + // 获取对接位点位对象 + SchBasePoint pointObj = pointService.getOne(new LambdaQueryWrapper() + .eq(SchBasePoint::getPoint_code, apply_point_code)); + // 校验是否需要自动agv + if (!pointObj.getIs_auto()) { + // 如果不需要自动,则不创建任务 + return; } - String regionCode = nextRegionStr.get(0); - // 当前设备的工单 - String workorderCode = extGroupData.getString("workorder_code"); - PdmBdWorkorder one = ObjectUtil.isNotEmpty(workorderCode) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, workorderCode)) - : null; - if (one == null) { - throw new BadRequestException("压制机的工单不能为空!"); + // 2、创建申请任务 + task.setConfig_code(config_code); + task.setCreate_mode(GeneralDefinition.ACS_CREATION); + task.setVehicle_code(schBasePoint.getVehicle_code()); + task.setVehicle_qty(schBasePoint.getVehicle_qty()); + task.setTask_status(TaskStatus.APPLY.getCode()); + task.setWorkshop_code(taskConfig.getWorkshop_code()); // 车间编码 + task.setPoint_code2(endPoint); + task.setTask_status(TaskStatus.CREATED.getCode()); + task.setRemark(""); + // 设置起/终点 + this.setTaskPoint(taskConfig, task, apply_point_code); + taskService.create(task); + + //下发 + this.renotifyAcs(task); + } + + /** + * 1.根据当前固化室所处区域,判断到哪个区的缓存位 + * 2.从1010列到0101列倒叙判断当前列物料类型是否与起点一致且存在空位 + * 3.将当前点位设置为目标点 + * 4.如果没有符合条件的点位,跳过执行暂时等待 + */ + private SchBasePoint findNextPoint(SchBasePoint startPoint) { + String regionCode = null; + String materialType = startPoint.getVehicle_type(); + if ("GHS1".equals(startPoint.getRegion_code())) { + //HCQ1找A区 + regionCode = "HCQ1"; + + } else if ("GHS2".equals(startPoint.getRegion_code())) { + //GHS2找B区 + regionCode = "HCQ2"; } - // 判断是否加急,加急则去窑口,不加急就是去双层缓存输送线 - if (one.getIs_urgent()) { - regionCode = nextRegionStr.get(1); // 去窑区 + List schBasePointList = pointMapper.findPointByRegion(regionCode,"2"); + for(int i=schBasePointList.size()-1;i>=0;i--){ + SchBasePoint schBasePoint=schBasePointList.get(i); + SchBasePoint temp=null; + if (schBasePoint.getVehicle_qty()==0 + &&ObjectUtil.isEmpty(schBasePoint.getIng_task_code()) + &&(ObjectUtil.isEmpty(schBasePoint.getVehicle_type())||materialType.equals(schBasePoint.getVehicle_type()))){ + //发现有空位时暂存当前位置,检查当前列前面是否存在已放货位置,找最前面无货的位置 + //如果当列其他位置均已放满,则继续找下一列 + List tempList = pointMapper.findPointByParentPoint(schBasePoint.getParent_point_code()); + for(SchBasePoint tempPoint:tempList){ + if(tempPoint.getVehicle_qty()!=0||ObjectUtil.isNotEmpty(schBasePoint.getIng_task_code())){ + if(temp!=null){ + return temp; + } + temp=tempPoint; + } + } + log.info("固化室取货任务找到当前符合条件的缓存区位置{}",schBasePoint.getPoint_code()); + return temp; + } } - List pointForYZSL = yzMapper.findPointForYZSL(new JSONObject( - MapOf.of("regionCode", regionCode, "pointType", ENTRANCE))); - return ObjectUtil.isNotEmpty(pointForYZSL) ? pointForYZSL.get(0) : null; - // ?? -// LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); -// lam.eq(SchBasePoint::getRegion_code, regionCode) -// .eq(SchBasePoint::getPoint_type, ENTRANCE) -// .and(la -> la.isNull(SchBasePoint::getIng_task_code) // 当前执行的任务为空或者NULL,有数据表示锁住 -// .or() -// .eq(SchBasePoint::getIng_task_code, "")) -// .eq(SchBasePoint::getIs_used, true); -// List schBasePoints = pointService.list(lam); -// return ObjectUtil.isNotEmpty(schBasePoints) ? schBasePoints.get(0) : null; + return null; } + /** + * 1.如果起点点位为10结尾视为最后该固化室最后一个任务,取完后通知acs取货完毕 + */ @Override // @Transactional(rollbackFor = Exception.class) protected void updateStatus(String task_code, TaskStatus status) { @@ -146,18 +207,6 @@ public class GHSQHTask extends AbstractTask { if (taskObj.getTask_status().equals(TaskStatus.CANCELED.getCode())) { throw new BadRequestException("该任务已取消!"); } - // 获取参数 - JSONObject extGroupData = ObjectUtil.isNotEmpty(taskObj.getExt_group_data()) - ? JSONObject.parseObject(taskObj.getExt_group_data()) - : null; - // 载具编码:没有就创建一个 - String vehicle_code = ObjectUtil.isNotEmpty(taskObj.getVehicle_code()) - ? taskObj.getVehicle_code() - : IdUtil.getSnowflake(1, 1).nextIdStr(); - PdmBdWorkorder workorderCode = ObjectUtil.isNotEmpty(extGroupData.getString("workorder_code")) - ? workorderService.getOne(new LambdaQueryWrapper() - .eq(PdmBdWorkorder::getWorkorder_code, extGroupData.getString("workorder_code"))) - : null; String startPoint = taskObj.getPoint_code1(); // 获取起点 String endPoint = taskObj.getPoint_code2(); // 获取终点 SchBasePoint startPointObj = pointService.getById(startPoint); @@ -168,47 +217,54 @@ public class GHSQHTask extends AbstractTask { taskObj.setRemark("执行中"); } if (status.equals(TaskStatus.FINISHED)) { // 完成 + StringBuilder group_id= new StringBuilder(); + // 终点解锁 + endPointObj.setIng_task_code(""); + endPointObj.setVehicle_code(startPointObj.getVehicle_code()); + endPointObj.setVehicle_type(startPointObj.getVehicle_type()); + endPointObj.setVehicle_code(startPointObj.getVehicle_code()); + endPointObj.setVehicle_qty(startPointObj.getVehicle_qty()); + endPointObj.setUpdate_time(DateUtil.now()); + pointService.update(endPointObj); + List vehicleCodeList = Arrays.stream(startPointObj.getVehicle_code().split(",")).collect(Collectors.toList()); + for(String vehicleCode:vehicleCodeList) { + SchBaseVehiclematerialgroup one = vehiclematerialgroupService.getOne(new LambdaQueryWrapper() + .eq(SchBaseVehiclematerialgroup::getVehicle_code, vehicleCode) + .eq(SchBaseVehiclematerialgroup::getGroup_bind_material_status, + GroupBindMaterialStatusEnum.BOUND.getValue())); + if (ObjectUtil.isEmpty(one)) { + throw new BadRequestException(vehicleCode + " => " + startPointObj.getVehicle_type() + "的组盘信息未找到"); + } + one.setTask_code(taskObj.getTask_code()); + one.setPoint_code(endPointObj.getPoint_code()); // 当前位置 + one.setPoint_name(endPointObj.getPoint_name()); + one.setMove_way(one.getMove_way()==null?"":(one.getMove_way() + " -> ") + endPointObj.getPoint_code()); + one.setUpdate_id(GeneralDefinition.ACS_ID); + one.setUpdate_name(GeneralDefinition.ACS_NAME); + one.setUpdate_time(DateUtil.now()); + vehiclematerialgroupService.updateById(one); + group_id.append(one.getGroup_id()).append(','); + } // 起点清空 if (ObjectUtil.isNotEmpty(startPointObj)) { PointUtils.clearPoint(startPointObj); } - // 终点解锁 - endPointObj.setIng_task_code(""); - pointService.update(endPointObj); - // 要把数据存到组盘表 -> 改造公共方法,返回id - SchBaseVehiclematerialgroup groupEntity = new SchBaseVehiclematerialgroup(); - groupEntity.setGroup_id(IdUtil.getSnowflake(1,1).nextIdStr()); - groupEntity.setCreate_id("2"); - groupEntity.setCreate_name("ACS"); - groupEntity.setCreate_time(DateUtil.now()); - groupEntity.setMaterial_id(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getMaterial_id() - : ""); - groupEntity.setStanding_time(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getStanding_time() - : 0); - groupEntity.setMaterial_weight(ObjectUtil.isNotEmpty(extGroupData) - ? extGroupData.getBigDecimal("material_qty") - : BigDecimal.valueOf(0)); - groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(workorderCode) - ? workorderCode.getWorkorder_code() - : ""); - groupEntity.setVehicle_code(vehicle_code); - groupEntity.setVehicle_type(taskObj.getVehicle_type()); - groupEntity.setPoint_code(startPoint); - groupEntity.setPoint_name(startPointObj.getPoint_name()); - groupEntity.setPcsn( DateUtil.format(DateUtil.date(), "yyyyMMdd")); - groupEntity.setInstorage_time(DateUtil.now()); - groupEntity.setTask_code(taskObj.getTask_code()); - groupEntity.setGroup_bind_material_status(GroupBindMaterialStatusEnum.BOUND.getValue()); // 绑定 - groupEntity.setGroup_status(GroupStatusEnum.IN_STORAGE.getType()); // 暂时不维护。 - groupEntity.setIs_delete(false); - vehiclematerialgroupService.save(groupEntity); - // 任务完成 taskObj.setTask_status(TaskStatus.FINISHED.getCode()); - taskObj.setGroup_id(groupEntity.getGroup_id()); + taskObj.setGroup_id(group_id.toString()); taskObj.setRemark("任务完成"); + + //如果起点点位为10结尾视为最后该固化室最后一个任务,取完后通知acs取货完毕 + if(taskObj.getPoint_code1().endsWith("10")) { + String middle = taskObj.getPoint_code1().substring(taskObj.getPoint_code1().length() - 4, taskObj.getPoint_code1().length() - 2); + //通知acs已经放满,固化室可以进行固化 + String device_code = "ZDM" + middle; + log.info("当前固化室已经全部取完,通知固化室的自动门{}取货完毕", device_code); + JSONObject map = new JSONObject(); + map.put("device_code", device_code); + map.put("type", "2"); + wmsToAcsService.notifyAcs(map); + } } if (status.equals(TaskStatus.CANCELED)) { // 取消 // 终点解锁 diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/mapper/PointMapper.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/mapper/PointMapper.java index 5322087..9735d4c 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/mapper/PointMapper.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/mapper/PointMapper.java @@ -11,8 +11,9 @@ import java.util.List; * @Date: 2023/10/9 */ public interface PointMapper { - List findPointByRegion(String regionCode,String point_state); - List findPointByPoint(String pointCode); + List findPointByRegion(String regionCode,String point_status); + + List findPointByParentPoint(String pointCode); void updatePointStatus(String device_code,String state); List findPointForYZSL(JSONObject param); diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/mapper/PointMapper.xml b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/mapper/PointMapper.xml index 56f464d..c1e408e 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/mapper/PointMapper.xml +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/mapper/PointMapper.xml @@ -7,16 +7,16 @@ FROM `sch_base_point` p WHERE p.region_code like CONCAT('%', #{regionCode}, '%') - and p.point_state = #{point_state} + and p.point_status = #{point_status} ORDER BY region_code - SELECT p.* FROM `sch_base_point` p - WHERE p.point_code like CONCAT('%', #{pointCode}, '%') + WHERE p.parent_point_code like CONCAT('%', #{pointCode}, '%') ORDER BY point_code diff --git a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java index 4e51460..279b027 100644 --- a/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java +++ b/lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/util/PointUtils.java @@ -42,7 +42,6 @@ public class PointUtils { point.setVehicle_code(""); point.setIng_task_code(""); point.setVehicle_qty(0); - point.setVehicle_type(""); point.setUpdate_time(DateUtil.now()); pointService.updateById(point); } diff --git a/lms/nladmin-ui/src/views/wms/sch/point/index.vue b/lms/nladmin-ui/src/views/wms/sch/point/index.vue index e4bc86a..91406d2 100644 --- a/lms/nladmin-ui/src/views/wms/sch/point/index.vue +++ b/lms/nladmin-ui/src/views/wms/sch/point/index.vue @@ -247,7 +247,7 @@ - + @@ -256,6 +256,7 @@ {{ dict.label.vehicle_type[scope.row.vehicle_type] }} --> +