diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/WmsToAcsServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/api/AcsApi.java similarity index 52% rename from nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/WmsToAcsServiceImpl.java rename to nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/api/AcsApi.java index 85220e7..ce7dfad 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/WmsToAcsServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/api/AcsApi.java @@ -1,11 +1,9 @@ -package org.nl.wms.ext_manage.service.impl; +package org.nl.wms.ext_manage.api; import lombok.extern.slf4j.Slf4j; import org.nl.wms.ext_manage.enums.EXTConstant; -import org.nl.wms.ext_manage.service.WmsToAcsService; -import org.nl.wms.ext_manage.service.util.AcsResponse; import org.nl.wms.ext_manage.util.AcsUtil; -import org.nl.wms.sch_manage.service.core.AcsTaskDto; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import java.util.List; @@ -20,10 +18,9 @@ import java.util.List; */ @Slf4j @Service -public class WmsToAcsServiceImpl implements WmsToAcsService { +public class AcsApi { - @Override - public AcsResponse renotifyAcs(List list) { + public ResponseEntity renotifyAcs(List list) { return AcsUtil.notifyAcs(EXTConstant.SEND_TASK_ACS_API, list); } } diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/enums/ResultAcsStatus.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/enums/ResultAcsStatus.java index 7994fef..949c033 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/enums/ResultAcsStatus.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/enums/ResultAcsStatus.java @@ -16,7 +16,8 @@ public enum ResultAcsStatus { /** * 完成 */ - FINISHED("2", "完成", "完成"); + FINISHED("2", "完成", "完成"), + CANCEL("3", "取消", "取消"); ResultAcsStatus(String code, String name, String desc) { diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/WmsToAcsService.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/WmsToAcsService.java index 0ae42f7..1e20eb7 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/WmsToAcsService.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/WmsToAcsService.java @@ -2,7 +2,6 @@ package org.nl.wms.ext_manage.service; import org.nl.wms.ext_manage.service.util.AcsResponse; -import org.nl.wms.sch_manage.service.core.AcsTaskDto; import java.util.List; @@ -21,5 +20,5 @@ public interface WmsToAcsService { * @param list 任务集合 * @return AcsResponse */ - AcsResponse renotifyAcs(List list); + AcsResponse renotifyAcs(List list); } diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java index 0477799..83abeaf 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/service/impl/AcsToWmsServiceImpl.java @@ -62,13 +62,9 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { JSONArray errArr = new JSONArray(); for (int i = 0; i < array.size(); i++) { JSONObject row = array.getJSONObject(i); - String task_id = row.getString("task_id"); - RLock lock = redissonClient.getLock(task_id); - boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); + String task_code = row.getString("task_code"); try { - if (tryLock) { - SchBaseTask taskObj = iSchBaseTaskService.getById(task_id); - // acs反馈的任务类型 + SchBaseTask taskObj = iSchBaseTaskService.getByCode(task_code); String acs_task_status = row.getString("task_status"); TaskStatus status; if (ResultAcsStatus.EXECUTING.getCode().equals(acs_task_status)) { @@ -79,20 +75,15 @@ public class AcsToWmsServiceImpl implements AcsToWmsService { status = TaskStatus.FINISHED; iSchBaseTaskService.updateById(taskObj); } else { - // 取消 status = TaskStatus.CANCELED; } // 根据配置编码执行相关配置内的方法 AbstractTask task = taskFactory.getTask(taskObj.getConfig_code()); task.updateTaskStatus(taskObj.getTask_code(),status); - } else { - throw new BadRequestException("任务标识为:" + task_id + "的任务正在操作中!"); - } - } finally { - if (tryLock) { - lock.unlock(); } + catch (Exception ex){ + ex.getMessage(); } } JSONObject result = new JSONObject(); diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/AcsUtil.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/AcsUtil.java index a6a7ea0..aead51f 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/AcsUtil.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/ext_manage/util/AcsUtil.java @@ -2,16 +2,22 @@ package org.nl.wms.ext_manage.util; import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpRequest; +import cn.hutool.http.HttpResponse; import com.alibaba.fastjson.JSONObject; import lombok.extern.slf4j.Slf4j; +import org.nl.common.base.TableDataInfo; +import org.nl.common.exception.BadRequestException; import org.nl.config.SpringContextHolder; import org.nl.wms.system_manage.enums.SysParamConstant; import org.nl.wms.system_manage.service.param.dao.Param; import org.nl.wms.system_manage.service.param.impl.SysParamServiceImpl; -import org.nl.wms.ext_manage.service.util.AcsResponse; import org.nl.wms.warehouse_manage.enums.IOSConstant; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Component; +import java.nio.charset.StandardCharsets; + /** *

* ACS工具类 @@ -30,44 +36,46 @@ public class AcsUtil { * @param param 下发参数 * @return AcsResponse */ - public static AcsResponse notifyAcs(String api, T param) { + public static ResponseEntity notifyAcs(String api, T param) { log.info("下发ACS任务的输入参数为:-------------------" + param.toString()); - // 返回参数 - AcsResponse resultAcs; // 系统参数类 SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class); //判断是否连接ACS系统 Param isConnectAcs = sysParamService.findByCode(SysParamConstant.IS_CONNECT_ACS); if (ObjectUtil.isEmpty(isConnectAcs)) { - return AcsResponse.requestError("系统参数表中:" + SysParamConstant.IS_CONNECT_ACS + "不存在"); + throw new BadRequestException("系统参数表中:" + SysParamConstant.IS_CONNECT_ACS + "不存在"); } if (isConnectAcs.getValue().equals(IOSConstant.IS_DELETE_NO)) { - return AcsResponse.requestOkMessage("下发成功,未连接ACS系统!"); + return new ResponseEntity("sucess未连接ACS系统",HttpStatus.OK); } - //ACS地址 Param acsUrlParam = sysParamService.findByCode(SysParamConstant.ACS_URL); if (ObjectUtil.isEmpty(acsUrlParam)) { - return AcsResponse.requestError("系统参数表中:" + SysParamConstant.ACS_URL + "不存在"); + throw new BadRequestException("系统参数表中:" + SysParamConstant.ACS_URL + "不存在"); } - String url = acsUrlParam.getValue() + api; try { - String resultMsg = HttpRequest.post(url) + final HttpResponse execute = HttpRequest.post(url) .body(String.valueOf(param)) - .execute().body(); - // 格式转换 - JSONObject result = JSONObject.parseObject(resultMsg); - resultAcs = JSONObject.toJavaObject(result, AcsResponse.class); - - log.info("下发ACS任务的输出参数为:-------------------" + resultMsg); + .execute(); + if (execute.getStatus() == HttpStatus.OK.value()){ + JSONObject result = JSONObject.parseObject(execute.body()); + final Integer status = result.getInteger("status"); + if (Integer.valueOf(HttpStatus.OK.value()).equals(status)){ + return new ResponseEntity(HttpStatus.OK); + }else { + JSONObject errorMap = result.getJSONObject("data"); + return new ResponseEntity(errorMap,HttpStatus.BAD_REQUEST); + } + }else { + return new ResponseEntity("接口请求异常",HttpStatus.CONFLICT); + } } catch (Exception e) { //网络不通 String msg = e.getMessage(); log.error("连接失败:{}", msg); - return AcsResponse.requestError("网络不通,操作失败!"); + return new ResponseEntity("通讯异常,"+e.getMessage(),HttpStatus.GATEWAY_TIMEOUT); } - return resultAcs; } } diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaSchTaskServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaSchTaskServiceImpl.java index 8bdffd8..94c9c78 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaSchTaskServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/pda_manage/sch_manage/service/impl/PdaSchTaskServiceImpl.java @@ -1,7 +1,6 @@ package org.nl.wms.pda_manage.sch_manage.service.impl; import cn.hutool.core.util.ObjectUtil; -import cn.hutool.http.HttpStatus; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -23,6 +22,8 @@ import org.nl.wms.sch_manage.service.core.tasks.PdaPointTask; import org.nl.wms.warehouse_manage.enums.IOSConstant; import org.nl.wms.warehouse_manage.enums.IOSEnum; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -98,9 +99,9 @@ public class PdaSchTaskServiceImpl extends ServiceImpl taskDtoList = new ArrayList<>(); taskDtoList.add(this.sendAcsParam(task_id)); - return this.renotifyAcs(taskDtoList); + ResponseEntity response = this.renotifyAcs(taskDtoList); + if (response.getStatusCode().equals(HttpStatus.OK)) { + taskService.update(new LambdaUpdateWrapper() + .set(SchBaseTask::getTask_status,TaskStatus.ISSUED.getCode()) + .set(SchBaseTask::getUpdate_time,DateUtil.now()) + .set(SchBaseTask::getRemark,"") + .in(SchBaseTask::getTask_code,taskDtoList.stream().map(AcsTaskDto::getTask_code).collect(Collectors.toList()))); + }else { + JSONObject body = (JSONObject) response.getBody(); + for (String code : body.keySet()) { + taskService.update(new LambdaUpdateWrapper() + .set(SchBaseTask::getRemark,body.getString(code)) + .set(SchBaseTask::getUpdate_time,DateUtil.now()) + .eq(SchBaseTask::getTask_code,code)); + } + + } + return response; } /** @@ -99,47 +121,53 @@ public abstract class AbstractTask { * @return AcsResponse */ @SneakyThrows - protected AcsResponse renotifyAcs(List taskDtoList) { - AcsResponse resultForAcs = AcsResponse.requestOk(); - try { - // 创建下发对象 - resultForAcs = wmsToAcsService.renotifyAcs(taskDtoList); - } catch (Exception e) { - log.error("任务下发异常: {}", e.getMessage()); - resultForAcs.setResponseDate(DateUtil.now()); - resultForAcs.setCode(HttpStatus.HTTP_BAD_REQUEST); - resultForAcs.setMessage(e.getMessage()); - } + protected ResponseEntity renotifyAcs(List taskDtoList) { + ResponseEntity response = acsApi.renotifyAcs(convertToCreateTaskRequest(taskDtoList)); // 如果下发完毕,就修改状态 - if (resultForAcs.getCode() == HttpStatus.HTTP_OK) { - // 查询所有任务 - List taskList = taskService.list( - new QueryWrapper().lambda() - .in(SchBaseTask::getTask_code, taskDtoList.stream() - .map(AcsTaskDto::getTask_code) - .collect(Collectors.toList()) - ) - ); + return response; + } - // 解析并备注 - JSONArray errArr = resultForAcs.getErrArr(); - for (SchBaseTask schBaseTask : taskList) { - schBaseTask.setTask_status(TaskStatus.ISSUED.getCode()); - // 判断是否是出错的任务 - for (int i = 0; ObjectUtil.isNotEmpty(errArr) && i < errArr.size(); i++) { - JSONObject errObj = errArr.getJSONObject(i); - String taskCode = errObj.getString("task_code"); - if (taskCode.equals(schBaseTask.getTask_code())) { - // 出错的任务就设置出错信息为备注,不是出错就设置下发 - schBaseTask.setTask_status(TaskStatus.CREATED.getCode()); - schBaseTask.setRemark(errObj.getString("message")); - break; - } - } - } - taskService.updateBatchById(taskList); + private List convertToCreateTaskRequest(List taskDtoList) { + return taskDtoList.stream() + .map(this::convertToCreateTaskRequest) + .collect(Collectors.toList()); + } + + private JSONObject convertToCreateTaskRequest(AcsTaskDto taskDto) { + JSONObject request = new JSONObject(); + request.put("task_code", taskDto.getTask_code()); + request.put("start_device_code", taskDto.getStart_device_code()); + request.put("next_device_code", taskDto.getNext_device_code()); + request.put("priority", ObjectUtil.isNotEmpty(taskDto.getPriority()) ? taskDto.getPriority() : "1"); + request.put("vehicle_code", taskDto.getVehicle_code()); + request.put("vehicle_type", taskDto.getVehicle_type()); + request.put("task_type", taskDto.getTask_type()); + request.put("remark", taskDto.getRemark()); + + Map params = new HashMap<>(); + if (ObjectUtil.isNotEmpty(taskDto.getParams())) { + params.putAll(taskDto.getParams()); + } + putIfNotEmpty(params, "ext_task_uuid", taskDto.getExt_task_uuid()); + putIfNotEmpty(params, "start_device_code2", taskDto.getStart_device_code2()); + putIfNotEmpty(params, "next_device_code2", taskDto.getNext_device_code2()); + putIfNotEmpty(params, "put_device_code", taskDto.getPut_device_code()); + putIfNotEmpty(params, "route_plan_code", taskDto.getRoute_plan_code()); + putIfNotEmpty(params, "dtl_type", taskDto.getDtl_type()); + putIfNotEmpty(params, "agv_system_type", taskDto.getAgv_system_type()); + putIfNotEmpty(params, "oven_time", taskDto.getOven_time()); + putIfNotEmpty(params, "temperature", taskDto.getTemperature()); + putIfNotEmpty(params, "start_height", taskDto.getStart_height()); + putIfNotEmpty(params, "next_height", taskDto.getNext_height()); + putIfNotEmpty(params, "direction", taskDto.getDirection()); + request.put("params", params); + return request; + } + + private void putIfNotEmpty(Map params, String key, String value) { + if (ObjectUtil.isNotEmpty(value)) { + params.put(key, value); } - return resultForAcs; } /** diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/core/AutoTask.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/core/AutoTask.java index ca5bdee..eb891de 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/core/AutoTask.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/core/AutoTask.java @@ -39,17 +39,7 @@ public class AutoTask { //定时任务 @SneakyThrows public void run() { - RLock lock = redissonClient.getLock(this.getClass().getName()); - boolean tryLock = lock.tryLock(0, TimeUnit.SECONDS); - try { - if (tryLock) { - sendTask(); - } - } catch (Exception e) { - if (tryLock) { - lock.unlock(); - } - } + sendTask(); } /** diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml b/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml index 95fba31..fc4de21 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/dao/mapper/SchBasePointMapper.xml @@ -67,6 +67,7 @@ SELECT p.* FROM sch_base_point p WHERE p.is_used = 1 + AND p.point_type = '1' AND p.region_code IN diff --git a/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java b/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java index cedd15f..6e72e95 100644 --- a/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java +++ b/nladmin-system/wms-server/src/main/java/org/nl/wms/sch_manage/service/impl/SchBasePointServiceImpl.java @@ -104,12 +104,6 @@ public class SchBasePointServiceImpl extends ServiceImpl + - + diff --git a/nladmin-ui/src/views/wms/sch/point/ViewDialog.vue b/nladmin-ui/src/views/wms/sch/point/ViewDialog.vue index c1ff366..0af6f2d 100644 --- a/nladmin-ui/src/views/wms/sch/point/ViewDialog.vue +++ b/nladmin-ui/src/views/wms/sch/point/ViewDialog.vue @@ -26,7 +26,7 @@ - + diff --git a/nladmin-ui/src/views/wms/sch/point/index.vue b/nladmin-ui/src/views/wms/sch/point/index.vue index 6314e8e..5b940aa 100644 --- a/nladmin-ui/src/views/wms/sch/point/index.vue +++ b/nladmin-ui/src/views/wms/sch/point/index.vue @@ -193,11 +193,24 @@ - + + + + + + @@ -232,10 +245,10 @@ - + - + - + - -