Browse Source

opt: 优化connector交互逻辑

master
yanps 7 months ago
parent
commit
e51f6c74dc
  1. 11
      acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java
  2. 20
      acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/xg_agv/XgagvDeviceDriver.java
  3. 2
      acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsUtil.java
  4. 2
      acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java
  5. 64
      acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/ConnectorController.java
  6. 2
      acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java
  7. 2
      acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java
  8. 2
      acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java
  9. 12
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java
  10. 7
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java
  11. 96
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java
  12. 6
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/connector/controller/ConnectorToWmsController.java
  13. 14
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/connector/service/impl/ConnectorToWmsServiceImpl.java
  14. 4
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java
  15. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml
  16. 33
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java
  17. 6
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cnt/CNTTask.java
  18. 13
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cnt/FTGTask.java
  19. 2
      lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/TBXMLTask.java
  20. 38
      lms/nladmin-ui/src/views/wms/sch/group/index.vue

11
acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/ndcone/AgvNdcOneDeviceDriver.java

@ -42,6 +42,7 @@ import org.nl.config.SpringContextHolder;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import java.util.List;
import java.util.Map;
/**
* NDC单工位AGV
@ -396,8 +397,12 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
} else if (device.getDeviceDriver() instanceof StandardOrdinarySiteDeviceDriver) {
try {
StandardOrdinarySiteDeviceDriver standar = (StandardOrdinarySiteDeviceDriver) device.getDeviceDriver();
boolean is_empty = (boolean)standar.getDevice().getExtraValue().get("is_empty");
data = feedBackStatus(data, index, 2, inst, task,1,false);
Map<String, Object> extraValue = standar.getDevice().getExtraValue();
boolean is_empty = false;
if(ObjectUtil.isNotEmpty(extraValue.get("is_empty"))){
is_empty = (boolean)extraValue.get("is_empty");
}
data = feedBackStatus(data, index, 4, inst, task,1,is_empty);
} catch (Exception e) {
log.info("放货完成反馈AGV状态失败:{},", e.getMessage());
}
@ -482,7 +487,7 @@ public class AgvNdcOneDeviceDriver extends AbstractDeviceDriver implements Devic
jo.put("task_code", inst.getTask_code());
jo.put("is_empty", is_empty);
ja.add(jo);
HttpResponse httpResponse = acsToWmsService.feedAgvTaskStatus(ja);
HttpResponse httpResponse = acsToWmsService.feedAgvTaskStatus(jo);
log.info("指令号:{},phase:{},acs反馈wms结果:{}", inst.getInstruction_code(), phase, httpResponse);
if (ObjectUtil.isNotEmpty(httpResponse) && httpResponse.getStatus() == 200) {
data = NDCAgvService.sendAgvOneModeInst(phase, index, 0, 0, 0, 0, 0);

20
acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/device_driver/basedriver/agv/xg_agv/XgagvDeviceDriver.java

@ -386,7 +386,7 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
.method("feedAgvTaskStatus")
.build();
luceneExecuteLogService.deviceExecuteLog(reqlogDto);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(jo);
LuceneLogDto resplogDto = LuceneLogDto.builder()
.device_code(device_code)
.content("返回参数:"+resp.body())
@ -427,7 +427,7 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
.method("feedAgvTaskStatus")
.build();
luceneExecuteLogService.deviceExecuteLog(reqlogDto);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(jo);
LuceneLogDto resplogDto = LuceneLogDto.builder()
.device_code(device_code)
.content("返回参数:"+resp.body())
@ -464,7 +464,7 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
.method("feedAgvTaskStatus")
.build();
luceneExecuteLogService.deviceExecuteLog(reqlogDto);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(jo);
LuceneLogDto resplogDto = LuceneLogDto.builder()
.device_code(device_code)
.content("返回参数:"+resp.body())
@ -499,7 +499,7 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
.method("feedAgvTaskStatus")
.build();
luceneExecuteLogService.deviceExecuteLog(reqlogDto);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(jo);
LuceneLogDto resplogDto = LuceneLogDto.builder()
.device_code(device_code)
.content("返回参数:"+resp.body())
@ -529,7 +529,7 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
.method("feedAgvTaskStatus")
.build();
luceneExecuteLogService.deviceExecuteLog(reqlogDto);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(jo);
LuceneLogDto resplogDto = LuceneLogDto.builder()
.device_code(device_code)
.content("返回参数:"+resp.body())
@ -550,7 +550,7 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
jo.put("status", "6");
jo.put("device_code", this.device_code);
ja.add(jo);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(jo);
if (resp.getStatus() == 200) {
writing("to_di_height", 0);
writing("to_di_low", 0);
@ -563,7 +563,7 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
jo.put("status", "7");
jo.put("device_code", this.device_code);
ja.add(jo);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(jo);
if (resp.getStatus() == 200) {
writing("to_di_low", 0);
} else {
@ -593,7 +593,7 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
.method("feedAgvTaskStatus")
.build();
luceneExecuteLogService.deviceExecuteLog(reqlogDto);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(jo);
LuceneLogDto resplogDto = LuceneLogDto.builder()
.device_code(device_code)
.content("返回参数:"+resp.body())
@ -614,7 +614,7 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
jo.put("status", "6");
jo.put("device_code", "A4");
ja.add(jo);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(jo);
if (resp.getStatus() == 200) {
writing("to_di_height", 0);
writing("to_di_low", 0);
@ -628,7 +628,7 @@ public class XgagvDeviceDriver extends AbstractOpcDeviceDriver implements Device
jo.put("status", "7");
jo.put("device_code", "A4");
ja.add(jo);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(ja);
HttpResponse resp = acsToWmsService.feedAgvTaskStatus(jo);
if (resp.getStatus() == 200) {
writing("to_di_height", 0);
} else {

2
acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/LmsUtil.java

@ -32,13 +32,11 @@ public class LmsUtil {
}
String liKu_wcs_url = paramService.findByCode("wmsurl").getValue();
try {
// log.info("请求LMS参数:{}", JSON.toJSONString(requestParam));
String body = HttpRequest
.post(liKu_wcs_url + api).setConnectionTimeout(3000)
.body(JSON.toJSONString(requestParam))
.execute()
.body();
// log.info("请求LMS参数返回参数:{}", body);
return body;
} catch (Exception e) {
JSONObject result = new JSONObject();

2
acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/AcsToWmsController.java

@ -109,7 +109,7 @@ public class AcsToWmsController {
@PostMapping("/feedAgvTaskStatus")
@Log(value = "反馈AGV取放货状态")
@ApiOperation("反馈AGV取放货状态")
public ResponseEntity<Object> feedAgvTaskStatus(@RequestBody JSONArray from) {
public ResponseEntity<Object> feedAgvTaskStatus(@RequestBody JSONObject from) {
return new ResponseEntity<>(acstowmsService.feedAgvTaskStatus(from), HttpStatus.OK);
}
}

64
acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/rest/ConnectorController.java

@ -0,0 +1,64 @@
package org.nl.acs.ext.wms.rest;
import cn.dev33.satoken.annotation.SaIgnore;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.nl.acs.ext.wms.liKuData.InStoreReportRequest;
import org.nl.common.logging.annotation.Log;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
@RequiredArgsConstructor
@Api(tags = "connector")
@RequestMapping("/api/iot/agvtask")
@Slf4j
public class ConnectorController {
@SaIgnore
@PostMapping
@Log(value = "立库反馈入库任务状态")
@ApiOperation("立库反馈入库任务状态")
public Map inStoreReport(@RequestBody JSONObject requestParam) throws Exception {
Map map = new HashMap();
String msg = "[\n" +
"{\n" +
"\"ID\":\"C202404281545\",\n" +
"\"Jobname\":\"N319001\",\n" +
"\"PalletID\":\"N319001_1_3\",\n" +
"\"ProductID\":\"A7E44207473001_0B\",\n" +
"\"Currentqty\":\"36\",\n" +
"\"SizeX\":\"140.98\",\n" +
"\"SizeY\":\"642\",\n" +
"\"Angle\":\"90\",\n" +
"\"Thickness\":\"2\",\n" +
"\"PositionX\":\"-227.379\",\n" +
"\"PositionY\":\"60\",\n" +
"\"vehicle_code\":\"T0001\", \n" +
"\"ProductionOrder\":\"800032285176\",\n" +
"\"Finished\": \"Y\",\n" +
"\"NextOperation\": \"\",\n" +
"\"DueDate\": \"\"\n" +
"} \n" +
"]";
JSONArray jo = JSONArray.parseArray(msg);
map.put("status",200);
map.put("message","请求成功");
map.put("data",jo);
return map;
}
}

2
acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/AcsToWmsService.java

@ -111,7 +111,7 @@ public interface AcsToWmsService {
* @param from
* @return
*/
HttpResponse feedAgvTaskStatus(JSONArray from);
HttpResponse feedAgvTaskStatus(JSONObject from);
/**

2
acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/ext/wms/service/impl/AcsToWmsServiceImpl.java

@ -531,7 +531,7 @@ public class AcsToWmsServiceImpl implements AcsToWmsService {
}
@Override
public HttpResponse feedAgvTaskStatus(JSONArray from) {
public HttpResponse feedAgvTaskStatus(JSONObject from) {
String wmsUrl = paramService.findByCode(AcsConfig.WMSURL).getValue();
AddressDto addressDto = addressService.findByCode("feedAgvTaskStatus");

2
acs/nladmin-system/nlsso-server/src/main/java/org/nl/acs/task/service/impl/TaskServiceImpl.java

@ -870,7 +870,7 @@ public class TaskServiceImpl extends CommonServiceImpl<TaskMapper, Task> impleme
FeedBackTaskStatusRequest request = new FeedBackTaskStatusRequest();
request.setTask_code(entity.getTask_code());
request.setTask_id(entity.getExt_task_id());
request.setTask_status(entity.getTask_status());
request.setTask_status(task.getTask_status());
request.setRequest_medthod_code(RequestMethodEnum.feedback_task_status.getCode());
request.setRequest_medthod_name(RequestMethodEnum.feedback_task_status.getName());
boolean flag = false;

12
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/controller/AcsToWmsController.java

@ -107,4 +107,16 @@ public class AcsToWmsController {
public ResponseEntity<Object> feedAgvAgain(@RequestBody JSONObject param) {
return new ResponseEntity<>(acsToWmsService.feedAgvAgain(param), HttpStatus.OK);
}
@PostMapping("/taskStatus")
@Log("acs反馈LMS任务状态")
@ApiOperation("acs反馈LMS任务状态")
@SaIgnore
@Deprecated
public ResponseEntity<Object> feedTaskStatus(@RequestBody JSONObject param) {
return new ResponseEntity<>(acsToWmsService.feedTaskStatus(param), HttpStatus.OK);
}
}

7
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/AcsToWmsService.java

@ -42,4 +42,11 @@ public interface AcsToWmsService {
* @return
*/
Object feedAgvAgain(JSONObject param);
/**
* acs反馈LMS任务状态
* @param param
* @return
*/
Object feedTaskStatus(JSONObject param);
}

96
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/acs/service/impl/AcsToWmsServiceImpl.java

@ -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);
}
}
}

6
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/connector/controller/ConnectorToWmsController.java

@ -8,6 +8,8 @@ import lombok.extern.slf4j.Slf4j;
import org.nl.common.logging.annotation.Log;
import org.nl.wms.ext.connector.service.ConnectorToWmsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
@ -28,9 +30,9 @@ public class ConnectorToWmsController {
@ApiOperation("connector下发agv任务")
@SaIgnore
@PostMapping("/wms/task")
public Object createTaskByConnector(@RequestBody JSONArray jsonArray){
public ResponseEntity<Object> createTaskByConnector(@RequestBody JSONArray jsonArray){
Object taskByConnector = connectorService.createTaskByConnector(jsonArray);
return taskByConnector;
return new ResponseEntity(connectorService.createTaskByConnector(jsonArray), HttpStatus.OK);
}
}

14
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/connector/service/impl/ConnectorToWmsServiceImpl.java

@ -39,7 +39,7 @@ public class ConnectorToWmsServiceImpl implements ConnectorToWmsService {
private TaskFactory taskFactory;
@Override
public Object createTaskByConnector(JSONArray jsonArray) {
public Map createTaskByConnector(JSONArray jsonArray) {
log.info("connector下发agv任务请求参数:{}", jsonArray);
Map map = new HashMap();
com.alibaba.fastjson.JSONArray objects = new com.alibaba.fastjson.JSONArray();
@ -47,7 +47,7 @@ public class ConnectorToWmsServiceImpl implements ConnectorToWmsService {
map.put("status", HttpStatus.HTTP_INTERNAL_ERROR);
map.put("message", "请求参数为空!");
objects.add(map);
return objects;
return map;
}
try {
for (Object jsonObject : jsonArray) {
@ -96,19 +96,21 @@ public class ConnectorToWmsServiceImpl implements ConnectorToWmsService {
param.put("remark", remark);
param.put("ext_data", data);
connectorTask.apply(param);
/*schBasePoint.setIs_lock(true);
schBasePointService.updateById(schBasePoint);*/
schBasePoint.setIs_lock(true);
schBasePointService.updateById(schBasePoint);
map1.put("task_code", task_code);
map1.put("status", HttpStatus.HTTP_OK);
map1.put("message", "操作成功!");
objects.add(map1);
}
map.put("status", HttpStatus.HTTP_OK);
map.put("message", "操作成功!");
} catch (Exception e) {
map.put("status", HttpStatus.HTTP_INTERNAL_ERROR);
map.put("message", e.getMessage());
objects.add(map);
return objects;
return map;
}
return objects;
return map;
}
}

4
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/SchBaseVehiclematerialgroup.java

@ -44,9 +44,11 @@ public class SchBaseVehiclematerialgroup implements Serializable {
@ApiModelProperty(value = "来源载具编码")
private String source_vehicle_code;
@TableField(exist = false)
@ApiModelProperty(value = "点位编码")
private String point_code;
@TableField(exist = false)
@ApiModelProperty(value = "点位名称")
private String point_name;
@ -72,7 +74,7 @@ public class SchBaseVehiclematerialgroup implements Serializable {
private BigDecimal material_weight;
@ApiModelProperty(value = "搬运工单编码")
private String workorder_code;
private String order_code;
@ApiModelProperty(value = "组盘次数")
private Integer group_number;

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/dao/mapper/SchBaseVehiclematerialgroupMapper.xml

@ -10,7 +10,7 @@
, po.region_name
FROM sch_base_vehiclematerialgroup vg
LEFT JOIN md_base_material ma ON vg.material_id = ma.material_id
LEFT JOIN sch_base_point po ON po.point_code = vg.point_code
LEFT JOIN sch_base_point po ON vg.region_code = po.region_code
WHERE 1 = 1
<if test="query.vehicle_code != null">
AND vg.vehicle_code = #{query.vehicle_code}

33
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/group/service/impl/SchBaseVehiclematerialgroupServiceImpl.java

@ -3,6 +3,8 @@ package org.nl.wms.sch.group.service.impl;
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 cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -15,11 +17,14 @@ import org.apache.commons.lang3.StringUtils;
import org.nl.common.domain.query.PageQuery;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.SecurityUtils;
import org.nl.wms.database.material.service.IMdBaseMaterialService;
import org.nl.wms.database.material.service.dao.MdBaseMaterial;
import org.nl.wms.sch.group.service.ISchBaseVehiclematerialgroupService;
import org.nl.wms.sch.group.service.dao.mapper.SchBaseVehiclematerialgroupMapper;
import org.nl.wms.sch.group.service.dao.SchBaseVehiclematerialgroup;
import org.nl.wms.sch.group.service.dto.SchBaseVehiclematerialgroupQuery;
import org.nl.wms.sch.point.service.ISchBasePointService;
import org.nl.wms.sch.point.service.dao.SchBasePoint;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -39,14 +44,38 @@ public class SchBaseVehiclematerialgroupServiceImpl extends ServiceImpl<SchBaseV
@Autowired
private SchBaseVehiclematerialgroupMapper vehiclematerialgroupMapper;
@Autowired
private IMdBaseMaterialService iMdBaseMaterialService;
@Autowired
private ISchBasePointService pointService;
@Override
public IPage<SchBaseVehiclematerialgroup> queryAll(SchBaseVehiclematerialgroupQuery whereJson, PageQuery page){
IPage<SchBaseVehiclematerialgroup> pages = new Page<>(page.getPage() + 1, page.getSize());
pages = vehiclematerialgroupMapper.selectPageLeftJoin(pages, whereJson);
return pages;
IPage<SchBaseVehiclematerialgroup> schBaseVehiclematerialgroupIPage = vehiclematerialgroupMapper.selectPage(pages, Wrappers.lambdaQuery(SchBaseVehiclematerialgroup.class)
.eq(StrUtil.isNotBlank(whereJson.getVehicle_code()), SchBaseVehiclematerialgroup::getVehicle_code, whereJson.getVehicle_code())
.eq(StrUtil.isNotBlank(whereJson.getWorkshop_code()), SchBaseVehiclematerialgroup::getWorkshop_code, whereJson.getWorkshop_code())
.eq(StrUtil.isNotBlank(whereJson.getGroup_bind_material_status()), SchBaseVehiclematerialgroup::getGroup_bind_material_status, whereJson.getGroup_bind_material_status())
.eq(StrUtil.isNotBlank(whereJson.getRegion_code()), SchBaseVehiclematerialgroup::getRegion_code, whereJson.getRegion_code()));
schBaseVehiclematerialgroupIPage.getRecords().forEach(item -> {
if(StrUtil.isNotBlank(item.getMaterial_id()))
{
MdBaseMaterial mdBaseMaterial = iMdBaseMaterialService.getOne(Wrappers.lambdaQuery(MdBaseMaterial.class)
.eq(MdBaseMaterial::getMaterial_code, item.getMaterial_id()));
if(ObjectUtil.isNotEmpty(mdBaseMaterial)){
item.setMaterial_name(mdBaseMaterial.getMaterial_name());
item.setMaterial_spec(mdBaseMaterial.getMaterial_spec());
item.setMaterial_code(mdBaseMaterial.getMaterial_code());
}
}
if(StrUtil.isNotBlank(item.getRegion_code()))
{
item.setRegion_name(pointService.list(Wrappers.lambdaQuery(SchBasePoint.class).eq(SchBasePoint::getRegion_code, item.getRegion_code())).get(0).getRegion_name());
}
});
// pages = vehiclematerialgroupMapper.selectPageLeftJoin(pages, whereJson);
return schBaseVehiclematerialgroupIPage;
}
@Override

6
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cnt/CNTTask.java

@ -132,13 +132,15 @@ public class CNTTask extends AbstractTask {
// 起点清空
if (ObjectUtil.isNotEmpty(schBasePoint)) {
PointUtils.updateByIngTaskCode(schBasePoint);
pointService.updateById(schBasePoint);
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, startPoint)
.set(SchBasePoint::getIs_lock, false).set(SchBasePoint::getVehicle_code, null));
}
String point_code2 = taskObj.getPoint_code2();
SchBasePoint schBasePoint2 = pointService.selectByPointCode(point_code2);
if (ObjectUtil.isNotEmpty(schBasePoint2)) {
PointUtils.updateByIngTaskCode(schBasePoint2);
pointService.updateById(schBasePoint2);
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, point_code2)
.set(SchBasePoint::getIs_lock, false).set(SchBasePoint::getVehicle_code, null));
}
// 任务完成
taskObj.setTask_status(TaskStatus.FINISHED.getCode());

13
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/cnt/FTGTask.java

@ -3,6 +3,7 @@ package org.nl.wms.sch.task_manage.task.tasks.cnt;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.enums.GoodsEnum;
import org.nl.common.enums.region.RegionEnum;
@ -26,6 +27,7 @@ import org.nl.wms.util.PointUtils;
import org.nl.wms.util.TaskUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@ -49,6 +51,7 @@ public class FTGTask extends AbstractTask {
private ISchBaseVehiclematerialgroupService schBaseVehiclematerialgroupService;
@Override
@Transactional(rollbackFor = Exception.class)
protected void create() throws BadRequestException {
// 获取任务
List<SchBaseTask> tasks = taskService.findTasksByTaskStatus(TASK_CONFIG_CODE, TaskStatus.APPLY);
@ -68,10 +71,10 @@ public class FTGTask extends AbstractTask {
continue;
}
SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
/*SchBaseVehiclematerialgroup schBaseVehiclematerialgroup = new SchBaseVehiclematerialgroup();
schBaseVehiclematerialgroup.setVehicle_code(task.getVehicle_code());
schBaseVehiclematerialgroup.setPoint_code(schBasePoint.getPoint_code());
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);
schBaseVehiclematerialgroupService.create(schBaseVehiclematerialgroup);*/
// 设置终点并修改创建成功状态
task.setPoint_code1(schBasePoint.getPoint_code());
@ -124,13 +127,15 @@ public class FTGTask extends AbstractTask {
// 起点清空
if (ObjectUtil.isNotEmpty(schBasePoint)) {
PointUtils.updateByIngTaskCode(schBasePoint);
pointService.updateById(schBasePoint);
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, startPoint)
.set(SchBasePoint::getIs_lock, false).set(SchBasePoint::getVehicle_code, null));
}
String point_code2 = taskObj.getPoint_code2();
SchBasePoint schBasePoint2 = pointService.selectByPointCode(point_code2);
if (ObjectUtil.isNotEmpty(schBasePoint2)) {
PointUtils.updateByIngTaskCode(schBasePoint2);
pointService.updateById(schBasePoint2);
pointService.update(Wrappers.lambdaUpdate(SchBasePoint.class).eq(SchBasePoint::getPoint_code, point_code2)
.set(SchBasePoint::getIs_lock, false).set(SchBasePoint::getVehicle_code, null));
}
// 任务完成
taskObj.setTask_status(TaskStatus.FINISHED.getCode());

2
lms/nladmin-system/nlsso-server/src/main/java/org/nl/wms/sch/task_manage/task/tasks/tbx/TBXMLTask.java

@ -318,7 +318,7 @@ public class TBXMLTask extends AbstractTask {
groupEntity.setStanding_time(ObjectUtil.isNotEmpty(orderObject)
? orderObject.getStanding_time()
: 0);
groupEntity.setWorkorder_code(ObjectUtil.isNotEmpty(orderObject)
groupEntity.setOrder_code(ObjectUtil.isNotEmpty(orderObject)
? orderObject.getWorkorder_code()
: "");
groupEntity.setMaterial_qty(ObjectUtil.isNotEmpty(qty) && qty > 0

38
lms/nladmin-ui/src/views/wms/sch/group/index.vue

@ -20,6 +20,7 @@
>
<el-option
v-for="item in workShopList"
:key="item.workshop_name"
:label="item.workshop_name"
:value="item.workshop_code"
/>
@ -33,6 +34,7 @@
>
<el-option
v-for="item in regionList"
:key="item.region_name"
:label="item.region_name"
:value="item.region_code"
/>
@ -58,6 +60,7 @@
>
<el-option
v-for="item in dict.group_bind_material_status"
:key="item.label"
:label="item.label"
:value="item.value"
/>
@ -184,6 +187,7 @@
>
<el-option
v-for="item in dict.group_status"
:key="item.label"
:label="item.label"
:value="item.value"
/>
@ -219,41 +223,41 @@
<el-table-column type="selection" width="55" />
<el-table-column prop="vehicle_code" label="载具编码" :min-width="flexWidth('vehicle_code',crud.data,'载具编码')" />
<!-- <el-table-column prop="child_vehicle_code" label="子载具编码" :min-width="flexWidth('child_vehicle_code',crud.data,'子载具编码')"/>-->
<el-table-column prop="source_vehicle_code" label="来源载具" :min-width="flexWidth('source_vehicle_code',crud.data,'来源载具')" />
<!-- <el-table-column prop="source_vehicle_code" label="来源载具" :min-width="flexWidth('source_vehicle_code',crud.data,'来源载具')" /> -->
<el-table-column prop="region_name" label="所属区域" :min-width="flexWidth('region_name',crud.data,'所属区域')" />
<el-table-column prop="point_code" label="点位编码" :min-width="flexWidth('point_code',crud.data,'点位编码')" />
<el-table-column prop="point_name" label="点位名称" :min-width="flexWidth('point_name',crud.data,'点位名称')" />
<el-table-column prop="is_full" label="是否满托" :min-width="flexWidth('is_full',crud.data,'是否满托')">
<!-- <el-table-column prop="point_code" label="点位编码" :min-width="flexWidth('point_code',crud.data,'点位编码')" /> -->
<!-- <el-table-column prop="point_name" label="点位名称" :min-width="flexWidth('point_name',crud.data,'点位名称')" /> -->
<!-- <el-table-column prop="is_full" label="是否满托" :min-width="flexWidth('is_full',crud.data,'是否满托')">
<template slot-scope="scope">
{{ scope.row.is_full?'是':'否' }}
</template>
</el-table-column>
<el-table-column prop="pcsn" label="批次" :min-width="flexWidth('pcsn',crud.data,'批次')" />
<el-table-column prop="workorder_code" label="工单编码" :min-width="flexWidth('workorder_code',crud.data,'工单编码')" />
<el-table-column prop="instorage_time" label="入库时间" :min-width="flexWidth('instorage_time',crud.data,'入库时间')" />
<el-table-column prop="group_bind_material_status" label="绑定状态" :min-width="flexWidth('group_bind_material_status',crud.data,'入库时间')">
</el-table-column> -->
<!-- <el-table-column prop="pcsn" label="批次" :min-width="flexWidth('pcsn',crud.data,'批次')" /> -->
<el-table-column prop="order_code" label="工单编码" :min-width="flexWidth('order_code',crud.data,'工单编码')" />
<!-- <el-table-column prop="instorage_time" label="入库时间" :min-width="flexWidth('instorage_time',crud.data,'入库时间')" /> -->
<!-- <el-table-column prop="group_bind_material_status" label="绑定状态" :min-width="flexWidth('group_bind_material_status',crud.data,'入库时间')">
<template slot-scope="scope">
{{ dict.label.group_bind_material_status[scope.row.group_bind_material_status] }}
</template>
</el-table-column>
<el-table-column prop="standing_time" label="静置时间(分钟)" :min-width="flexWidth('standing_time',crud.data,'静置时间(分钟)')" />
<el-table-column prop="material_name" label="物料名称" show-overflow-tooltip :min-width="flexWidth('material_qty',crud.data,'物料数量')" />
<el-table-column prop="standing_time" label="静置时间(分钟)" :min-width="flexWidth('standing_time',crud.data,'静置时间(分钟)')" /> -->
<el-table-column prop="material_name" label="物料名称" show-overflow-tooltip :min-width="flexWidth('material_name',crud.data,'物料数量')" />
<el-table-column prop="material_code" label="物料编码" show-overflow-tooltip :min-width="flexWidth('material_qty',crud.data,'物料数量')" />
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_qty',crud.data,'物料数量')" />
<el-table-column prop="material_qty" label="物料数量" :min-width="flexWidth('material_qty',crud.data,'物料数量')" />
<el-table-column prop="material_spec" label="物料规格" :min-width="flexWidth('material_spec',crud.data,'物料规格')" />
<!-- <el-table-column prop="material_qty" label="物料数量" :min-width="flexWidth('material_qty',crud.data,'物料数量')" />
<el-table-column prop="material_weight" label="物料重量" :min-width="flexWidth('material_weight',crud.data,'物料重量')" />
<el-table-column prop="group_number" label="组盘次数" :min-width="flexWidth('group_number',crud.data,'组盘次数')" />
<el-table-column prop="task_code" label="任务编码" :min-width="flexWidth('task_code',crud.data,'任务编码')" />
<el-table-column prop="task_code" label="任务编码" :min-width="flexWidth('task_code',crud.data,'任务编码')" /> -->
<!-- <el-table-column prop="workshop_code" label="车间编码" :min-width="flexWidth('workshop_code',crud.data,'车间编码')"/>-->
<el-table-column prop="group_status" label="组盘状态" :min-width="flexWidth('group_status',crud.data,'组盘状态')">
<!-- <el-table-column prop="group_status" label="组盘状态" :min-width="flexWidth('group_status',crud.data,'组盘状态')">
<template slot-scope="scope">
{{ dict.label.group_status[scope.row.group_status] }}
</template>
</el-table-column>
</el-table-column> -->
<!-- <el-table-column prop="is_first_flow_task" label="是否首个流程任务" :min-width="flexWidth('is_first_flow_task',crud.data,'是否首个流程任务')"/>-->
<!-- <el-table-column prop="flow_code" label="流程编码" :min-width="flexWidth('flow_code',crud.data,'流程编码')"/>-->
<!-- <el-table-column prop="flow_num" label="流程顺序" :min-width="flexWidth('flow_num',crud.data,'流程顺序')"/>-->
<el-table-column prop="move_way" label="移动途径" :min-width="flexWidth('move_way',crud.data,'移动途径')" />
<!-- <el-table-column prop="move_way" label="移动途径" :min-width="flexWidth('move_way',crud.data,'移动途径')" /> -->
<el-table-column prop="remark" label="备注" :min-width="flexWidth('remark',crud.data,'备注')" />
<el-table-column prop="create_name" label="创建人" :min-width="flexWidth('create_name',crud.data,'创建人')" />
<el-table-column prop="create_time" label="创建时间" :min-width="flexWidth('create_time',crud.data,'创建时间')" />

Loading…
Cancel
Save