diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java index 2620e38d..66b5d99f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/rest/AcsToWmsController.java @@ -9,7 +9,6 @@ import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.nl.common.anno.Log; import lombok.extern.slf4j.Slf4j; -import org.nl.common.utils.MapOf; import org.nl.common.utils.api.ResultCode; import org.nl.modules.common.exception.BizCoreException; import org.nl.wms.ext.acs.service.AcsToWmsService; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java index 7e0d4cbe..de46bcf7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java @@ -122,33 +122,19 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ String task_id = row.getString("task_id"); TaskDto taskDto = taskService.findById(task_id); String processing_class = taskDto.getHandle_class(); - //6:执行中,7:完成 ,8:acs取消 acs:123 - String acs_task_status = row.getString("status"); - String message = ""; - String status = ""; - if ("1".equals(acs_task_status)) { - status = StatusEnum.TASK_RUNNING.getCode(); - } - if ("2".equals(acs_task_status)) { - status = StatusEnum.TASK_FINISH.getCode(); - } - if ("3".equals(acs_task_status)) { - status = StatusEnum.TASK_CANNEL.getCode(); - } + String status = acsStatus2Mes(row); // 任务处理类 try { AbstractAcsTask taskHandler = (AbstractAcsTask)SpringContextHolder.getBean(Class.forName(processing_class)); taskHandler.updateTaskStatus(row,status); } catch (Exception e) { - log.info("任务状态更新失败:{}", message); - + log.info("任务状态更新失败:{}", e.getMessage()); JSONObject json = new JSONObject(); json.put("task_id", task_id); - json.put("message", message); + json.put("message", e.getMessage()); errArr.add(json); } } - JSONObject result = new JSONObject(); result.put("status", HttpStatus.OK.value()); result.put("message", "任务状态反馈成功!"); @@ -157,6 +143,22 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ return result; } + private String acsStatus2Mes(JSONObject row) { + //6:执行中,7:完成 ,8:acs取消 acs:123 + String acs_task_status = row.getString("status"); + String status = ""; + if ("1".equals(acs_task_status)) { + status = StatusEnum.TASK_RUNNING.getCode(); + } + if ("2".equals(acs_task_status)) { + status = StatusEnum.TASK_FINISH.getCode(); + } + if ("3".equals(acs_task_status)) { + status = StatusEnum.TASK_CANNEL.getCode(); + } + return status; + } + @Override public Map receivePointStatusFromAcs(Map jsonObject) { return null; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java index 17cd3889..03a9fb03 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/ext/acs/service/impl/AgvInstService.java @@ -80,7 +80,6 @@ public class AgvInstService { //判断缓存线是不是去深坑清洗:深坑区域15个点:判断空的物料坑位: if (next.getName().equals("深坑清洗")){ query.put("material_id",task.getString("material_id")); - query.put("spec",null); // query.put("qty",quantity) 深坑物料需要转重量 task.put("task_type",AcsTaskEnum.TASK_PRODUCT_WASH.getCode()); task.put("task_name",AcsTaskEnum.TASK_PRODUCT_WASH.getDesc()); @@ -104,15 +103,15 @@ public class AgvInstService { task.put("task_name",AcsTaskEnum.TASK_PRODUCT_CACHE.getDesc()); task.put("acs_task_type",AcsTaskEnum.ACS_TASK_TYPE_NOBLE_SINGLE_ENTRY_TASK.getCode()); cacheVehile = getCacheVehile(nextPoint, null); + if (StringUtils.isEmpty(cacheVehile)){ + throw new BadRequestException("当前缓存线无可用空箱:"+nextPoint); + } } - 结果校验:{ if (StringUtils.isBlank(nextPoint)) { throw new BadRequestException("逻辑非配错误,请检查代码"); } } -// basePointService.update(new UpdateWrapper() -// .set("lock_type",StatusEnum.LOCK_ON.getCode()).set("task_id",task.getString("task_id")).eq("point_code",nextPoint)); SchBaseTask schBaseTask = task.toJavaObject(SchBaseTask.class); schBaseTask.setBarcodeArr(cacheVehile); @@ -183,6 +182,7 @@ public class AgvInstService { schBaseTask.setPoint_code3(startPoint); schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); schBaseTask.setUpdate_time(new Date()); + schBaseTask.setUpdate_name("调度服务"); taskService.updateById(schBaseTask); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java index 3da80518..fd51a52a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeEmpTask.java @@ -5,28 +5,24 @@ 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.JSONArray; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.Nullable; import org.nl.common.enums.AcsTaskEnum; -import org.nl.common.enums.InterfaceLogType; import org.nl.common.enums.StatusEnum; import org.nl.common.utils.MapOf; import org.nl.common.utils.SecurityUtils; import org.nl.modules.common.exception.BadRequestException; import org.nl.modules.system.util.CodeUtil; -import org.nl.modules.wql.WQL; -import org.nl.modules.wql.core.bean.WQLObject; import org.nl.wms.ext.acs.service.impl.AgvInstService; import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; import org.nl.wms.product_manage.sch.manage.TaskStatusEnum; +import org.nl.wms.product_manage.service.device.IPdmBiDeviceService; +import org.nl.wms.product_manage.service.device.dao.PdmBiDevice; import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; -import org.nl.wms.scheduler_manage.service.cacheline.ISchCachelineVehilematerialService; -import org.nl.wms.scheduler_manage.service.cacheline.dao.SchCachelineVehilematerial; import org.nl.wms.scheduler_manage.service.point.ISchBasePointService; import org.nl.wms.scheduler_manage.service.point.dao.SchBasePoint; import org.nl.wms.scheduler_manage.service.scheduler.ISchProcessRouteService; @@ -38,10 +34,12 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.math.BigDecimal; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.*; +import java.util.function.Function; import java.util.stream.Collectors; /** @@ -55,17 +53,16 @@ public class SpeEmpTask extends AbstractAcsTask { @Autowired private ISchBaseTaskService taskService; @Autowired + private IPdmBiDeviceService iDeviceService; + @Autowired private AgvInstService agvInstService; @Autowired private ISchBasePointService basePointService; - @Autowired - private ISchCachelineVehilematerialService cacheLineVechileService; @Autowired private ISchProcessRouteService schProcessRouteService; private final Map SpeHandles= new HashMap<>(); - private static String OPT_NAME = "ACS回调# "; public SpeEmpTask() { @@ -74,15 +71,11 @@ public class SpeEmpTask extends AbstractAcsTask { @Override public void updateTaskStatus(JSONObject param,String status) { - WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); - log.info(InterfaceLogType.ACS_TO_LMS.getDesc()); - // 指令执行中 - JSONObject task = taskTable.query("task_id = '" + param.getString("task_id") + "'").uniqueResult(0); - AcsTaskEnum taskType = AcsTaskEnum.getType(task.getString("task_type"),"TASK_"); + SchBaseTask task = taskService.getOne(new QueryWrapper().eq("task_id", param.getString("task_id"))); try { - SpeHandles.get(taskType.name()).handle(param,status,task); + SpeHandles.get(task.getTask_name()).handle(param,status,task); }catch (Exception ex){ - log.error(OPT_NAME+"updateStatus error:{}",ex); + log.error("更新状态异常updateTaskStatus param:{},status:{},ex:{}",param,status,ex); throw ex; } } @@ -110,16 +103,7 @@ public class SpeEmpTask extends AbstractAcsTask { String taskId = IdUtil.getSnowflake(1, 1).nextId() + ""; JSONObject task = packageParam(form, taskId); taskService.save(task.toJavaObject(SchBaseTask.class)); - task.put("cacheLine",cahceLine); -// try { -// pointConfirm(task); -// //下发 -// }catch (Exception ex){ -// log.error("SpeEmpTask#点位确认异常:{}",ex.getMessage()); -// task.put("task_status", TaskStatusEnum.SURE_START_ERROR.getCode()); -// task.put("remark",ex.getMessage()); -// WQLObject.getWQLObject("sch_base_task").update(task); -// } + return taskId; } @@ -183,45 +167,40 @@ public class SpeEmpTask extends AbstractAcsTask { @Override public void cancel(String taskId) { - log.info(OPT_NAME+"cancel taskID:{}",taskId); - WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); - //专机-专机 - //专机-缓存线 - //缓存线出库 - taskTable.update(MapOf.of("task_status",StatusEnum.TASK_CANNEL.getCode()),"task_id = '"+taskId+"'"); - + taskService.update(new UpdateWrapper() + .set("task_status",StatusEnum.TASK_CANNEL.getCode()).eq("task_id",taskId)); } interface SpeStatusHandler{ - void handle(JSONObject param,String status,JSONObject task); + void handle(JSONObject param,String status,SchBaseTask task); } class Cache2Spe implements SpeStatusHandler{ @Override - public void handle(JSONObject param, String sta,JSONObject task) { + public void handle(JSONObject param, String sta,SchBaseTask task) { AcsTaskEnum status = AcsTaskEnum.getType(sta,"status_"); - WQLObject taskTable = WQLObject.getWQLObject("sch_base_task"); - WQLObject cacheVehTable = WQLObject.getWQLObject("sch_cacheline_vehilematerial"); - WQLObject pointTable = WQLObject.getWQLObject("SCH_BASE_Point"); - WQLObject deviceTable = WQLObject.getWQLObject("pdm_bi_device"); - switch (status){ case STATUS_START: - taskTable.update(MapOf.of("task_status",StatusEnum.TASK_RUNNING.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); + taskService.update(new UpdateWrapper() + .set("task_status",StatusEnum.TASK_RUNNING.getCode()) + .set("update_name","acs") + .set("update_time", DateUtil.now()) + .eq("task_id",task.getTask_id())); break; case STATUS_FINISH: - taskTable.update(MapOf.of("task_status",StatusEnum.TASK_FINISH.getCode(),"update_name","acs","update_time", DateUtil.now()),"task_id = '"+task.getString("task_id")+"'"); - - String point_code2 = task.getString("point_code2"); - JSONObject pointInfo = pointTable.query("point_code = '" + point_code2 + "'").uniqueResult(0); - JSONObject device = deviceTable.query("device_code = '" + pointInfo.getString("device_code") + "'").uniqueResult(0); - task.getDouble("material_qty"); - double currentQty = device.getDouble("deviceinstor_qty") + task.getDouble("material_qty"); - deviceTable.update(MapOf.of("deviceinstor_qty", String.valueOf(currentQty)), "device_code = '" + pointInfo.getString("device_code") + "'"); + taskService.update(new UpdateWrapper() + .set("task_status",StatusEnum.TASK_FINISH.getCode()) + .set("update_name","acs") + .set("update_time", DateUtil.now()) + .eq("task_id",task.getTask_id())); + SchBasePoint point = basePointService.getOne(new QueryWrapper().eq("point_code", task.getPoint_code2())); + PdmBiDevice device = iDeviceService.getOne(new QueryWrapper().eq("device_code", point.getDevice_code())); + BigDecimal currentQty = device.getDeviceinstor_qty().add(task.getMaterial_qty()); + iDeviceService.update(new UpdateWrapper().set("deviceinstor_qty",currentQty).eq("device_code",point.getDevice_code())); break; case STATUS_CANNEL: cancel(param.getString("task_id")); break; default: - throw new BadRequestException(OPT_NAME+"未定义任务状态:"+sta); + throw new BadRequestException("未定义任务状态:"+sta); } } } @@ -237,10 +216,10 @@ public class SpeEmpTask extends AbstractAcsTask { ArrayList Merge = new ArrayList<>(); if (!CollectionUtils.isEmpty(array)){ String pointCollect = array.stream().map(a->a.getPoint_code1() + "','" + a.getPoint_code2()).collect(Collectors.joining("','")); - JSONArray needMergeCollect = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "5", "point_codes", "'" + pointCollect + "'")).process().getResultJSONArray(0); - //区域编号对应point_code - Map> pointRegionCollent = needMergeCollect.stream().collect(Collectors.groupingBy(o -> ((JSONObject) o).getString("point_code"))); - Set mergePointCollent = needMergeCollect.stream().map(item -> ((JSONObject) item).getString("point_code")).collect(Collectors.toSet()); + List> needMergeCollect = basePointService.getAllPointRegin(pointCollect); + //区域编号对应point_code pointRegionCollent + Map>> pointRegionCollent = needMergeCollect.stream().collect(Collectors.groupingBy(o -> o.get("point_code"))); + Set mergePointCollent = needMergeCollect.stream().map(item -> item.get("point_code")).collect(Collectors.toSet()); //合并下发的任务 List notMerge = new ArrayList<>();//单独下发的任务 List waitingTask = new ArrayList<>();//可合并,但是只有单条任务 @@ -315,7 +294,7 @@ public class SpeEmpTask extends AbstractAcsTask { } - private String getMergePoint(Map> pointRegionCollent, String start,String end,List tasks,List taskIds) { + private String getMergePoint(Map>> pointRegionCollent, String start,String end,List tasks,List taskIds) { String findpoint = findpoint(pointRegionCollent, start, tasks, taskIds); if (findpoint == null){ findpoint = findpoint(pointRegionCollent, end, tasks, taskIds); @@ -323,13 +302,13 @@ public class SpeEmpTask extends AbstractAcsTask { return findpoint; } - private String findpoint(Map> pointRegionCollent, String start, List tasks, List taskIds) { - List objects = pointRegionCollent.get(start); + private String findpoint(Map>> pointRegionCollent, String start, List tasks, List taskIds) { + List> objects = pointRegionCollent.get(start); if (CollectionUtils.isEmpty(objects)){ return null; } - JSONObject startPointInfo = (JSONObject) objects.get(0); - String startPointCollent = startPointInfo.getString("pointcollent"); + Map startPointInfo = objects.get(0); + String startPointCollent = startPointInfo.get("pointcollent"); String[] split = startPointCollent.split(","); for (String s : split) { Optional any = tasks.stream().filter(a -> a.getPoint_code1().equals(s) && !taskIds.contains((a.getTask_id()))).findAny(); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java index 49c78d20..41041880 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/SpeMachinery/SpeFullTask.java @@ -110,14 +110,6 @@ public class SpeFullTask extends AbstractAcsTask { String taskId = IdUtil.getStringId(); JSONObject task = packageParam(form, taskId); taskService.save(task.toJavaObject(SchBaseTask.class)); -// try { -// pointConfirm(task); -// //下发 -// }catch (Exception ex){ -// task.put("task_status", TaskStatusEnum.SURE_START_ERROR.getCode()); -// task.put("remark",ex.getMessage()); -// WQLObject.getWQLObject("sch_base_task").update(task); -// } return taskId; } @@ -227,15 +219,13 @@ public class SpeFullTask extends AbstractAcsTask { .set("task_status", StatusEnum.TASK_RUNNING.getCode()) .set("update_name", "acs") .set("update_time", DateUtil.now()).eq("task_id", task.getTask_id()); - - if (extParam.get("outboxt")!= null){ wrapper.set("vehicle_code2",extParam.get("outboxt")); } + if (extParam.get("outbox")!= null){ wrapper.set("vehicle_code2",extParam.get("outbox")); } taskService.update(wrapper); - //outboxt箱子更新到任务表vechile_code2? - if (extParam.get("inboxt") != null){ + if (extParam.get("inbox") != null){ SchCachelineVehilematerial vehilematerial = new SchCachelineVehilematerial(); vehilematerial.setVehmaterial_id(IdUtil.getStringId()); - vehilematerial.setVehicle_code(extParam.get("inboxt")); + vehilematerial.setVehicle_code(extParam.get("inbox")); vehilematerial.setMaterial_id(task.getMaterial_id()); vehilematerial.setErr_type("0"); vehilematerial.setCreate_time(DateUtil.now()); diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/TaskScheduleService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/TaskScheduleService.java index 6347cf91..e93787a7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/TaskScheduleService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/sch/tasks/TaskScheduleService.java @@ -75,9 +75,8 @@ public class TaskScheduleService { try { AbstractAcsTask taskHandler = (AbstractAcsTask)SpringContextHolder.getBean(Class.forName(task.getHandle_class())); taskHandler.pointConfirm((JSONObject) JSONObject.toJSON(task)); - task.setTask_type(StatusEnum.TASK_START_END_P.getCode()); }catch (Exception ex){ - task.setTask_type(StatusEnum.TASK_START_ERROR.getCode()); + task.setTask_status(StatusEnum.TASK_START_ERROR.getCode()); task.setRemark(ex.getMessage()); task.setUpdate_time(new Date()); taskService.updateById(task); @@ -94,7 +93,13 @@ public class TaskScheduleService { for (Map.Entry> array : listMap.entrySet()) { //调用不同实现 AbstractAcsTask taskHandler = (AbstractAcsTask)SpringContextHolder.getBean(Class.forName(array.getKey())); - Merge.addAll(taskHandler.schedulerTask(array.getValue())); + try { + List schBaseTasks = taskHandler.schedulerTask(array.getValue()); + Merge.addAll(schBaseTasks); + }catch (Exception ex){ + log.error("调度任务分配异常:{}",ex); + continue; + } } JSONArray arr = new JSONArray(); for (SchBaseTask task : Merge) { diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/ISchBasePointService.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/ISchBasePointService.java index a22b5cdc..cdac44b7 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/ISchBasePointService.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/ISchBasePointService.java @@ -50,4 +50,6 @@ public interface ISchBasePointService extends IService { Map getWorkprodureById(String id); Map getWorkprodureByCode(String id); + + List> getAllPointRegin(String points); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.java index 940ab74b..341ea31a 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.java @@ -34,4 +34,6 @@ public interface SchBasePointMapper extends BaseMapper { Map getWorkprodure(@Param("workprodureId") String workprodureId, @Param("workprodureCode") String workprodureCode); + List> getRegionCollent(String points); + } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml index 820f9b00..30e7214c 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/dao/mapper/SchBasePointMapper.xml @@ -106,4 +106,18 @@ workprocedure_code = #{workprodureCode} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/impl/SchBasePointServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/impl/SchBasePointServiceImpl.java index e7d99441..4e698d00 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/impl/SchBasePointServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/point/impl/SchBasePointServiceImpl.java @@ -163,4 +163,9 @@ public class SchBasePointServiceImpl extends ServiceImpl> getAllPointRegin(String points) { + return this.baseMapper.getRegionCollent(points); + } }