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 69dc0067..1f9b539b 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 @@ -89,7 +89,8 @@ public class AcsToWmsController { @ApiOperation("向wms反馈设备状态") @SaIgnore public ResponseEntity feedDeviceStatusType(@RequestBody JSONObject param) { - return new ResponseEntity<>(acsToWmsService.feedDeviceStatusType(param), HttpStatus.OK); + return null; +// return new ResponseEntity<>(acsToWmsService.feedDeviceStatusType(param), HttpStatus.OK); } 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 8145063d..34ed7a8a 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 @@ -22,6 +22,8 @@ import org.nl.wms.product_manage.sch.manage.AbstractAcsTask; import org.nl.wms.product_manage.sch.service.TaskService; import org.nl.wms.product_manage.sch.service.dto.TaskDto; import org.nl.wms.product_manage.sch.tasks.WashMachineryTask; +import org.nl.wms.product_manage.service.workorder.IPdmProduceWorkorderService; +import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.http.HttpStatus; @@ -47,6 +49,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ private TaskService taskService; @Autowired private CacheLineHandService cacheLineHandService; + @Autowired + private IPdmProduceWorkorderService workorderService; @@ -203,17 +207,12 @@ public class AcsToWmsServiceImpl implements AcsToWmsService{ public Map orderStatus(JSONObject orderJson) { JSONObject result = new JSONObject(); try { - JSONObject map = new JSONObject(); - map.put("workorder_id", orderJson.getString("workorder_id")); - map.put("workorder_status", orderJson.getString("status")); - map.put("update_id", "1"); - map.put("real_qty", orderJson.getString("real_qty")); - map.put("device_code", ""); - map.put("update_name", "acs"); - map.put("update_time", DateUtil.now()); - map.put("realproduceend_date", DateUtil.now()); - WQLObject.getWQLObject("PDM_produce_workOrder").update(map, "workorder_id = '" + orderJson.getString("workorder_id") + "'"); - //OptionRecord.record(OptionRecord.OptionEnum.UPDATEOP, OptionRecord.Buss.WORKORDER,orderJson.getString("workorder_id"),MapOf.of("workorder_status", orderJson.getString("status"))); + PdmProduceWorkorder workorder = new PdmProduceWorkorder(); + workorder.setWorkorder_id(orderJson.getString("workorder_id")); + workorder.setWorkorder_status(orderJson.getString("status")); + workorder.setDq_real_qty(orderJson.getBigDecimal("real_qty")); + workorder.setRealproduceend_date(DateUtil.now()); + workorderService.updateById(workorder); } catch (Exception e){ result.put("status", 400); result.put("message", e.getMessage()); 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 b91a647c..648b2e8b 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 @@ -52,7 +52,11 @@ public class AgvInstService { @Autowired private ISchCachelineVehicleService cachelineVehicleService; - + public static void main(String[] args) { + String a= "A1_DC_15_6"; + int i = a.lastIndexOf("_"); + System.out.println(a.substring(0, i)); + } //满料请求点位确认 //1.判断当前设备路由表是否配置下一道路由设备,如果不是则说明直接到清洗 @@ -81,11 +85,14 @@ public class AgvInstService { if (next.getParams().get("cacheLine") == null){ throw new BadRequestException("当前任务下一道工序无可用设备"); } - nextPoint = next.getParams().get("cacheLine"); + nextPoint = getParamByXml(workprodure, next, nextPoint); cacheVehile = getCacheVehile(nextPoint, null); } - if (StringUtils.isBlank(nextPoint)){ - throw new BadRequestException("逻辑非配错误,请检查代码"); + + 结果校验:{ + 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)); @@ -96,7 +103,20 @@ public class AgvInstService { schBaseTask.setTask_status(StatusEnum.TASK_START_END_P.getCode()); schBaseTask.setUpdate_time(new Date()); taskService.updateById(schBaseTask); - }; + } + + private String getParamByXml(Map workprodure, FlowElement next, String nextPoint) { + Object cacheLine = next.getParams().get("cacheLine"); + if (cacheLine instanceof String){ + nextPoint = (String) cacheLine; + } + if (cacheLine instanceof Map){ + nextPoint = ((Map) cacheLine).get(workprodure.get("device_code").substring(0, workprodure.get("device_code").lastIndexOf("_"))); + } + return nextPoint; + } + + ; public FlowElement getFlowElement(JSONObject task,Map workprodure){ if (CollectionUtils.isEmpty(workprodure)){ @@ -126,7 +146,7 @@ public class AgvInstService { //3.agv根据对应载具列表行进扫码匹配:匹配到对应物料则创建点对点任务 public void empMatter(JSONObject task){ //参数 - String targetDevice = task.getString("next_point_code"); + String targetDevice = task.getString("point_code2"); String material_id = task.getString("material_id"); SchBasePoint devicePoint = basePointService.getOne(new QueryWrapper() .eq("point_code", targetDevice) @@ -157,12 +177,14 @@ public class AgvInstService { } public String getCacheVehile(String cacheLine,String materialId){ - int count = taskService.count(new QueryWrapper().eq("point_code2", cacheLine).lt("task_status", StatusEnum.TASK_FINISH.getCode())); - String status = StringUtils.isBlank(materialId) ? StatusEnum.CACHE_VEL_EMT.getCode() : StatusEnum.CACHE_VEL_FULL.getCode(); - List vehicle = cachelineVehicleService.getCachelineVehicle(MapOf.of("vehicle_status", status, "material_id", materialId)); - if (vehicle.size()>0){ - if (vehicle.size()>count){ - return vehicle.stream().map(SchCachelineVehicle::getVehicle_code).collect(Collectors.joining(",")); + if (StringUtils.isNotEmpty(cacheLine)){ + int count = taskService.count(new QueryWrapper().eq("point_code2", cacheLine).lt("task_status", StatusEnum.TASK_FINISH.getCode())); + String status = StringUtils.isBlank(materialId) ? StatusEnum.CACHE_VEL_EMT.getCode() : StatusEnum.CACHE_VEL_FULL.getCode(); + List vehicle = cachelineVehicleService.getCachelineVehicle(MapOf.of("vehicle_status", status, "material_id", materialId)); + if (vehicle.size()>0){ + if (vehicle.size()>count){ + return vehicle.stream().map(SchCachelineVehicle::getVehicle_code).collect(Collectors.joining(",")); + } } } return ""; diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/ONEPART_QUERY.wql b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/ONEPART_QUERY.wql index 11fa5445..c7facecb 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/ONEPART_QUERY.wql +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/mps/wql/ONEPART_QUERY.wql @@ -72,7 +72,7 @@ WHERE d.is_delete = 0 ORDER BY device_code - LIMIT 10 + LIMIT 200 ENDSELECT ENDQUERY ENDIF 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 8aae9977..1a3ff0f1 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 @@ -6,6 +6,7 @@ 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 lombok.extern.slf4j.Slf4j; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.InterfaceLogType; @@ -18,11 +19,17 @@ 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.workorder.IPdmProduceWorkorderService; +import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; +import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -31,7 +38,10 @@ import java.util.Map; @Slf4j @Service public class SpeEmpTask extends AbstractAcsTask { - + @Autowired + private IPdmProduceWorkorderService workorderService; + @Autowired + private ISchBaseTaskService taskService; @Autowired AgvInstService agvInstService; private final Map SpeHandles= new HashMap<>(); @@ -62,28 +72,33 @@ public class SpeEmpTask extends AbstractAcsTask { @Override @Transactional public String createTask(JSONObject param) { - + //{"workorder_code":230523019,"device_code":"A1_TW_15_6_D","type":"1"} String point_code = param.getString("device_code"); String quantity = param.getString("quantity"); String type = param.getString("type"); - JSONObject order = WQLObject.getWQLObject("PDM_produce_workOrder").query("workorder_code = '" + param.getString("workorder_code") + "' and is_delete = 0 and workorder_status != "+StatusEnum.TASK_FINISH.getCode()).uniqueResult(0); - Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); - JSONArray chectIndDatabase = WQLObject.getWQLObject("SCH_BASE_Task").query((AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type) ? "point_code1" : "point_code2") + "= '" + point_code + "' and task_status < " + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(chectIndDatabase)){ - Assert.notNull(order, String.format("设备%s存在未完成任务", param.getString("point_code"))); - + PdmProduceWorkorder one = workorderService.getOne(new QueryWrapper() + .eq("workorder_code", param.getString("workorder_code")) + .lt("workorder_status", StatusEnum.TASK_FINISH.getCode())); + Assert.notNull(one, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); + List list = taskService.list(new QueryWrapper() + .eq("point_code2", point_code).lt("task_status", StatusEnum.TASK_FINISH.getCode()) + ); + if (!CollectionUtils.isEmpty(list)){ + throw new BadRequestException(String.format("设备%s存在未完成任务", param.getString("device_code"))); } + JSONObject form = new JSONObject(MapOf.of("start_point_code","", "next_point_code",point_code,"return_point_code", "","vehicle_code", - "","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id"))); + "","product_area",one.getProduct_area(),"quantity", quantity,"type",type,"material_id", one.getMaterial_id())); String taskId = IdUtil.getSnowflake(1, 1).nextId() + ""; - JSONObject task = packageParam(form, taskId); - WQLObject.getWQLObject("SCH_BASE_Task").insert(task); + taskService.save(task.toJavaObject(SchBaseTask.class)); + 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); 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 92eee538..5ddcdb9e 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 @@ -6,6 +6,7 @@ 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 lombok.extern.slf4j.Slf4j; import org.nl.common.enums.AcsTaskEnum; import org.nl.common.enums.InterfaceLogType; @@ -19,11 +20,17 @@ 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.workorder.IPdmProduceWorkorderService; +import org.nl.wms.product_manage.service.workorder.dao.PdmProduceWorkorder; +import org.nl.wms.scheduler_manage.service.task.ISchBaseTaskService; +import org.nl.wms.scheduler_manage.service.task.dao.SchBaseTask; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.HashMap; +import java.util.List; import java.util.Map; /** @@ -32,11 +39,15 @@ import java.util.Map; @Slf4j @Service public class SpeFullTask extends AbstractAcsTask { - + @Autowired + private IPdmProduceWorkorderService workorderService; + @Autowired + private ISchBaseTaskService taskService; @Autowired AgvInstService agvInstService; + private final Map SpeHandles= new HashMap<>(); - private static String OPT_NAME = "ACS回调# "; + private static String OPT_NAME = "ACS回调# "; public SpeFullTask() { @@ -63,25 +74,29 @@ public class SpeFullTask extends AbstractAcsTask { @Override @Transactional public String createTask(JSONObject param) { - + //{"quantity":5,"workorder_code":230523019,"device_code":"A1_TW_15_6_M","type":"2"} String point_code = param.getString("device_code"); String quantity = param.getString("quantity"); String type = param.getString("type"); - JSONObject order = WQLObject.getWQLObject("PDM_produce_workOrder").query("workorder_code = '" + param.getString("workorder_code") + "' and is_delete = 0 and workorder_status != "+StatusEnum.TASK_FINISH.getCode()).uniqueResult(0); + PdmProduceWorkorder order = workorderService.getOne(new QueryWrapper() + .eq("workorder_code", param.getString("workorder_code")) + .eq("is_delete", false) + .lt("workorder_status", StatusEnum.TASK_FINISH.getCode())); Assert.notNull(order, String.format("下发工单%s不存在未完成工单", param.getString("workorder_code"))); - JSONArray chectIndDatabase = WQLObject.getWQLObject("SCH_BASE_Task").query((AcsTaskEnum.REQUEST_CALLTYPE_FULL.getCode().equals(type) ? "point_code1" : "point_code2") + "= '" + point_code + "' and task_status < " + StatusEnum.TASK_FINISH.getCode()).getResultJSONArray(0); - if (ObjectUtil.isNotEmpty(chectIndDatabase)){ - Assert.notNull(order, String.format("设备%s存在未完成任务", param.getString("point_code"))); + List list = taskService.list(new QueryWrapper() + .eq("point_code1", point_code).lt("task_status", StatusEnum.TASK_FINISH.getCode()) + ); + if (!CollectionUtils.isEmpty(list)){ + throw new BadRequestException(String.format("设备%s存在未完成任务", param.getString("device_code"))); } JSONObject empPoint = WQL.getWO("sch_point").addParamMap(MapOf.of("flag", "2", "point_code", point_code, "point_type", StatusEnum.POINT_LOCATION_EMP.getCode())).process().uniqueResult(0); JSONObject form = new JSONObject(MapOf.of("start_point_code",point_code, "next_point_code","","return_point_code", empPoint.getString("point_code"),"vehicle_code", - "","product_area",order.getString("product_area"),"quantity", quantity,"type",type,"material_id", order.getString("material_id"))); + "","product_area",order.getProduct_area(),"quantity", quantity,"type",type,"material_id", order.getProduct_area())); String taskId = IdUtil.getSnowflake(1, 1).nextId() + ""; JSONObject task = packageParam(form, taskId); - WQLObject.getWQLObject("SCH_BASE_Task").insert(task); - + taskService.save(task.toJavaObject(SchBaseTask.class)); try { pointConfirm(task); //下发 diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml index fa038379..3fccb0be 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/device/dao/mapper/PdmBiDeviceMapper.xml @@ -11,7 +11,7 @@ WHERE device.is_delete = '0' - device.workprocedure_id = #{workprocedure_id} + and device.workprocedure_id = #{workprocedure_id} and device.device_code not in ( select o.device_code as device_code diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java index df9e9713..227eebf0 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/product_manage/service/workorder/impl/IPdmProduceWorkorderServiceImpl.java @@ -14,6 +14,7 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import io.jsonwebtoken.lang.Assert; +import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.jetbrains.annotations.NotNull; import org.nl.common.TableDataInfo; @@ -63,6 +64,7 @@ import java.util.stream.Collectors; * @since 2023-04-26 */ @Service +@Slf4j public class IPdmProduceWorkorderServiceImpl extends ServiceImpl implements IPdmProduceWorkorderService { @Autowired private IMdPbClassstandardService classstandardService; @@ -179,9 +181,9 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl() .set("workorder_status", WorkerOrderEnum.FORCE_COMPLETE.getCode()) - .set("update_id", SecurityUtils.getCurrentUserId()) - .set("update_name", SecurityUtils.getCurrentNickName()) - .set("update_time", new Date()) + .set("confirm_id", SecurityUtils.getCurrentUserId()) + .set("confirm_name", SecurityUtils.getCurrentNickName()) + .set("confirm_time", new Date()) .in("workorder_id", workorder_id)); JSONArray array = new JSONArray(); JSONObject map = new JSONObject(); @@ -190,7 +192,7 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl result = wmsToAcsService.orderStatusUpdate(array); if (!HttpStatus.OK.equals(result.get("status"))) { - throw new BadRequestException((String) result.get("message")); + log.error((String) result.get("message")); } this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, workorder_id); } @@ -525,8 +527,8 @@ public class IPdmProduceWorkorderServiceImpl extends ServiceImpl().eq("workorder_id", param.getString("workorder_id"))); - this.recordWorkOrder(OptionRecord.OptionEnum.UPDATE, result.getWorkorder_id()); return RestBusinessTemplate.execute(() -> resp); } diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml index c15858b7..0a847f3f 100644 --- a/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml +++ b/mes/hd/nladmin-system/src/main/java/org/nl/wms/scheduler_manage/service/cacheline/dao/mapper/xml/SchCachelineVehicleMapper.xml @@ -9,7 +9,7 @@ FROM sch_cacheline_vehilematerial v LEFT JOIN sch_cacheline_position p ON p.vehicle_code = v.vehicle_code - WHERE p.vehicle_code <> '' and + WHERE p.vehicle_code ]]> '' and v.vehicle_status = #{vehicle_status} v.material_id = #{material_id} 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 c4030f11..e7034ae8 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 @@ -91,7 +91,7 @@