|
|
@ -19,6 +19,8 @@ import org.nl.common.exception.BadRequestException; |
|
|
|
import org.nl.system.service.notice.ISysNoticeService; |
|
|
|
import org.nl.wms.cockpit.service.dao.DasDeviceFault; |
|
|
|
import org.nl.wms.cockpit.service.mapper.CockpitMapper; |
|
|
|
import org.nl.wms.database.material.service.IMdBaseMaterialService; |
|
|
|
import org.nl.wms.database.material.service.dao.MdBaseMaterial; |
|
|
|
import org.nl.wms.database.vehicle.service.IMdBaseVehicleService; |
|
|
|
import org.nl.wms.database.vehicle.service.dao.MdBaseVehicle; |
|
|
|
import org.nl.wms.ext.acs.service.AcsToWmsService; |
|
|
@ -95,6 +97,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { |
|
|
|
private WmsToSortingService sortingService; |
|
|
|
@Autowired |
|
|
|
private IMdBaseVehicleService iMdBaseVehicleService; |
|
|
|
@Autowired |
|
|
|
private IMdBaseMaterialService iMdBaseMaterialService; |
|
|
|
|
|
|
|
/** |
|
|
|
* 初始化反射方法 |
|
|
@ -315,27 +319,58 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { |
|
|
|
|
|
|
|
@Override |
|
|
|
public Object feedAgvAgain(JSONObject param) { |
|
|
|
if(ObjectUtil.isNotEmpty(param)){ |
|
|
|
if (ObjectUtil.isNotEmpty(param)) { |
|
|
|
String task_id = param.getString("task_id"); |
|
|
|
String device_code = param.getString("device_code"); |
|
|
|
if(StrUtil.isEmpty(task_id) || StrUtil.isEmpty(device_code)){ |
|
|
|
if (StrUtil.isEmpty(task_id) || StrUtil.isEmpty(device_code)) { |
|
|
|
throw new BadRequestException("task_id或device_code为空!"); |
|
|
|
} |
|
|
|
SchBaseTask schBaseTask = taskService.getById(task_id); |
|
|
|
if(ObjectUtil.isEmpty(schBaseTask)){ |
|
|
|
if (ObjectUtil.isEmpty(schBaseTask)) { |
|
|
|
throw new BadRequestException("任务不存在!task_id:" + task_id); |
|
|
|
} |
|
|
|
if(device_code.equals(schBaseTask.getPoint_code2())) throw new BadRequestException("设备号与任务设备不匹配!"); |
|
|
|
if (device_code.equals(schBaseTask.getPoint_code2())) throw new BadRequestException("设备号与任务设备不匹配!"); |
|
|
|
//查询点位是否存在
|
|
|
|
SchBasePoint schBasePoint = pointService.selectByPointCode(device_code); |
|
|
|
if(ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("点位不存在!device_code:" + device_code); |
|
|
|
SchBasePoint schBasePoint1 = pointService.selectByNextWaitPoint(device_code,schBaseTask.getVehicle_code()); |
|
|
|
if(ObjectUtil.isEmpty(schBasePoint1)) throw new BadRequestException("未查询到可用点位!等待点位:"+device_code); |
|
|
|
if (ObjectUtil.isEmpty(schBasePoint)) throw new BadRequestException("点位不存在!device_code:" + device_code); |
|
|
|
SchBasePoint schBasePoint1 = pointService.selectByNextWaitPoint(device_code, schBaseTask.getVehicle_code()); |
|
|
|
if (ObjectUtil.isEmpty(schBasePoint1)) throw new BadRequestException("未查询到可用点位!等待点位:" + device_code); |
|
|
|
return schBasePoint; |
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public Object feedTaskStatus(JSONObject param) { |
|
|
|
if(ObjectUtil.isNotEmpty(param)){ |
|
|
|
String task_code = param.getString("task_code"); |
|
|
|
String task_status = param.getString("task_status"); |
|
|
|
if(StrUtil.isEmpty(task_code) || StrUtil.isEmpty(task_status)){ |
|
|
|
throw new BadRequestException("task_code或task_status为空!"); |
|
|
|
} |
|
|
|
SchBaseTask schBaseTask = taskService.getOne(Wrappers.lambdaQuery(SchBaseTask.class) |
|
|
|
.eq(SchBaseTask::getTask_code, task_code).in(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode(), TaskStatus.ISSUED.getCode())); |
|
|
|
if(ObjectUtil.isEmpty(schBaseTask)) throw new BadRequestException("任务不存在!task_code:" + task_code); |
|
|
|
switch (task_status) { |
|
|
|
case "1": |
|
|
|
//执行中
|
|
|
|
taskService.update(Wrappers.lambdaUpdate(SchBaseTask.class) |
|
|
|
.set(SchBaseTask::getTask_status, TaskStatus.EXECUTING.getCode()) |
|
|
|
.eq(SchBaseTask::getTask_code, task_code)); |
|
|
|
break; |
|
|
|
case "2": |
|
|
|
//任务完成
|
|
|
|
AbstractTask connectorTask = taskFactory.getTask(schBaseTask.getConfig_code()); |
|
|
|
connectorTask.forceFinish(schBaseTask.getTask_code()); |
|
|
|
break; |
|
|
|
default: |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 放货完成 |
|
|
|
* |
|
|
@ -372,8 +407,8 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { |
|
|
|
private void finishTask(String task_code, String point_code) { |
|
|
|
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, point_code) |
|
|
|
.set(SchBasePoint::getIs_lock, false)); |
|
|
|
taskService.update(Wrappers.lambdaUpdate(SchBaseTask.class).eq(SchBaseTask::getTask_code, task_code) |
|
|
|
.set(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode())); |
|
|
|
/*taskService.update(Wrappers.lambdaUpdate(SchBaseTask.class).eq(SchBaseTask::getTask_code, task_code) |
|
|
|
.set(SchBaseTask::getTask_status, TaskStatus.FINISHED.getCode()));*/ |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -426,35 +461,34 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { |
|
|
|
private void requestPickup(SchBaseTask schBaseTask, String status, String is_connector) { |
|
|
|
if ("1".equals(is_connector)) { |
|
|
|
//反馈connector申请取货
|
|
|
|
/*SchBaseTaskconfig schBaseTaskconfig = taskConfigService.selectByConfigCode(schBaseTask.getConfig_code());*/ |
|
|
|
JSONObject json = new JSONObject(); |
|
|
|
// if (GoodsEnum.PICK_UP.getValue().equals(schBaseTaskconfig.getTask_qf_type())) {
|
|
|
|
// json.put("vehicle_code", schBaseTask.getVehicle_code());
|
|
|
|
// json.put("status", status);
|
|
|
|
// json.put("device_code", schBaseTask.getPoint_code2());
|
|
|
|
// json.put("task_code", schBaseTask.getTask_code());
|
|
|
|
// } else if (GoodsEnum.DELIVER_GOODS.getValue().equals(schBaseTaskconfig.getTask_qf_type())) {
|
|
|
|
json.put("vehicle_code", schBaseTask.getVehicle_code()); |
|
|
|
json.put("status", status); |
|
|
|
json.put("device_code", schBaseTask.getPoint_code1()); |
|
|
|
json.put("task_code", schBaseTask.getTask_code()); |
|
|
|
boolean flag = true; |
|
|
|
while (flag) { |
|
|
|
AcsResponse acsResponse = connectorService.feedAgvTaskStatus(json); |
|
|
|
if (acsResponse.getStatus() == 200 && StrUtil.isNotEmpty(acsResponse.getData())) { |
|
|
|
JSONArray objects = JSONObject.parseArray(acsResponse.getData()); |
|
|
|
List<ConnectorDto> connectorDtos = BeanUtil.copyToList(objects, ConnectorDto.class); |
|
|
|
for (ConnectorDto connectorDto : connectorDtos) { |
|
|
|
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup(); |
|
|
|
schBaseVehiclematerialgroup.setVehicle_code(connectorDto.getVehicle_code()); |
|
|
|
schBaseVehiclematerialgroup.setJob_name(connectorDto.getJobname()); |
|
|
|
schBaseVehiclematerialgroup.setMaterial_id(connectorDto.getProductID()); |
|
|
|
schBaseVehiclematerialgroup.setMaterial_qty(connectorDto.getCurrentqty()); |
|
|
|
schBaseVehiclematerialgroup.setRegion_code(connectorDto.getProductionOrder()); |
|
|
|
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup); |
|
|
|
AcsResponse acsResponse = connectorService.feedAgvTaskStatus(json); |
|
|
|
if (acsResponse.getStatus() == 200 && StrUtil.isNotEmpty(acsResponse.getData())) { |
|
|
|
JSONArray objects = JSONObject.parseArray(acsResponse.getData()); |
|
|
|
List<ConnectorDto> connectorDtos = BeanUtil.copyToList(objects, ConnectorDto.class); |
|
|
|
for (ConnectorDto connectorDto : connectorDtos) { |
|
|
|
if (schBaseTask.getVehicle_code().equals(connectorDto.getVehicle_code())) { |
|
|
|
//TODO:载具号不同
|
|
|
|
} |
|
|
|
MdBaseMaterial mdBaseMaterial = iMdBaseMaterialService.getOne(Wrappers.lambdaQuery(MdBaseMaterial.class) |
|
|
|
.eq(MdBaseMaterial::getMaterial_code, connectorDto.getProductID())); |
|
|
|
if (ObjectUtil.isEmpty(mdBaseMaterial)) { |
|
|
|
//TODO:物料不存在
|
|
|
|
} |
|
|
|
// vehiclematerialgroupService.updateByVehicleCode(schBaseTask.getVehicle_code(), acsResponse.getData());
|
|
|
|
flag = false; |
|
|
|
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup(); |
|
|
|
schBaseVehiclematerialgroup.setVehicle_code(connectorDto.getVehicle_code()); |
|
|
|
schBaseVehiclematerialgroup.setJob_name(connectorDto.getJobname()); |
|
|
|
schBaseVehiclematerialgroup.setMaterial_id(connectorDto.getProductID()); |
|
|
|
schBaseVehiclematerialgroup.setMaterial_qty(connectorDto.getCurrentqty()); |
|
|
|
schBaseVehiclematerialgroup.setRegion_code(connectorDto.getNextOperation()); |
|
|
|
schBaseVehiclematerialgroup.setExtend(connectorDto.toString()); |
|
|
|
schBaseVehiclematerialgroup.setOrder_code(connectorDto.getProductionOrder()); |
|
|
|
iSchBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|