Browse Source

add:增加RCS下发逻辑;

add:增加PC出库分配逻辑;
opt:优化通用API通讯工具;
master
龚宝雄 4 weeks ago
parent
commit
7d1d8c22e6
  1. 73
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/util/AcsUtil.java
  2. 50
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/util/NotifyUtil.java
  3. 82
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/GateWayService.java
  4. 38
      nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/IGateWayService.java

73
nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/util/AcsUtil.java

@ -1,73 +0,0 @@
package org.nl.wms.ext.util;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.config.SpringContextHolder;
import org.nl.system.enums.SysParamConstant;
import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.ext.service.util.AcsResponse;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.springframework.stereotype.Component;
/**
* <p>
* ACS工具类
* </p>
*
* @author Liuxy
* @since 2025-06-09
*/
@Slf4j
@Component
public class AcsUtil {
/**
* 下发任务
* @param api acs地址
* @param param 下发参数
* @return AcsResponse
*/
public static <T> AcsResponse 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 + "不存在");
}
if (isConnectAcs.getValue().equals(IOSConstant.IS_DELETE_NO)) {
return AcsResponse.requestOkMessage("下发成功,未连接ACS系统!");
}
//ACS地址
Param acsUrlParam = sysParamService.findByCode(SysParamConstant.ACS_URL);
if (ObjectUtil.isEmpty(acsUrlParam)) {
return AcsResponse.requestError("系统参数表中:" + SysParamConstant.ACS_URL + "不存在");
}
String url = acsUrlParam.getValue() + api;
try {
String resultMsg = HttpRequest.post(url)
.body(String.valueOf(param))
.execute().body();
// 格式转换
JSONObject result = JSONObject.parseObject(resultMsg);
resultAcs = JSONObject.toJavaObject(result, AcsResponse.class);
log.info("下发ACS任务的输出参数为:-------------------" + resultMsg);
} catch (Exception e) {
//网络不通
String msg = e.getMessage();
log.error("连接失败:{}", msg);
return AcsResponse.requestError("网络不通,操作失败!");
}
return resultAcs;
}
}

50
nladmin-system/nlsso-server/src/main/java/org/nl/wms/ext/util/NotifyUtil.java

@ -0,0 +1,50 @@
package org.nl.wms.ext.util;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.nl.common.exception.BadRequestException;
import org.nl.config.SpringContextHolder;
import org.nl.system.service.param.dao.Param;
import org.nl.system.service.param.impl.SysParamServiceImpl;
import org.nl.wms.warehouse_management.enums.IOSConstant;
import org.springframework.stereotype.Component;
/**
* <p>
* api连接工具类
* </p>
*
* @author gbx
* @since 2025-07-08
*/
@Slf4j
@Component
public class NotifyUtil {
public static <T, R> R apiNotify(String api, String isNeedConnect, String systemType, T param, Class<R> responseClass) {
SysParamServiceImpl sysParamService = SpringContextHolder.getBean(SysParamServiceImpl.class);
String connectValue = getParam(sysParamService, isNeedConnect);
if (IOSConstant.IS_DELETE_NO.equals(connectValue)) {
log.info("未连接系统,跳过下发!");
}
String url = getParam(sysParamService, systemType) + api;
try {
String response = HttpRequest.post(url).body(String.valueOf(param)).execute().body();
log.info("【下发任务请求】API: {}, param: {}", api, param);
log.info("下发ACS任务完成,api:{}下发参数为:-------------------{},响应信息:{}", api, param, response);
return JSONObject.parseObject(response, responseClass);
} catch (Exception e) {
log.error("下发任务失败,api: {}, 错误信息: {}", api, e.getMessage(), e);
throw new BadRequestException("下发任务失败:网络异常或调用失败!");
}
}
private static String getParam(SysParamServiceImpl service, String code) {
Param param = service.findByCode(code);
if (param == null || StrUtil.isBlank(param.getValue())) {
throw new BadRequestException("系统参数不存在: " + code);
}
return param.getValue();
}
}

82
nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/GateWayService.java

@ -1,82 +0,0 @@
package org.nl.wms.gateway.service;
import cn.hutool.core.lang.Assert;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import org.nl.common.exception.BadRequestException;
import org.nl.common.utils.RedissonUtils;
import org.nl.wms.ext.service.AcsToWmsService;
import org.nl.wms.gateway.dto.InteracteDto;
import org.nl.wms.gateway.service.impl.GateWayServiceImpl;
import org.nl.wms.sch_manage.service.ISchBasePointService;
import org.nl.wms.sch_manage.service.ISchBaseTaskService;
import org.nl.wms.sch_manage.service.dao.SchBasePoint;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.concurrent.atomic.AtomicReference;
/**
* 网关执行接口层
*
* @author gbx
* @since 2025-06-27
*/
@Service
public class GateWayService {
@Autowired
private GateWayServiceImpl gateWayServiceImpl;
@Autowired
private ISchBasePointService iSchBasePointService;
@Autowired
private ISchBaseTaskService iSchBaseTaskService;
public JSONObject apply(InteracteDto<Map> param) {
JSONObject jsonObject = new JSONObject(param.getData());
//处理日志相关
JSONObject result = new JSONObject();
String service = param.getService();
String type = param.getType();
//根据服务拆分不同的业务
if ("InStorage".equals(service)) {
RedissonUtils.lock(() -> {
String taskCode = gateWayServiceImpl.applyTask(param.getService(), type, jsonObject, param);
result.put("taskCode", taskCode);
}, param.getService() + param.getType(), null);
}
if ("Task".equals(service)) {
iSchBaseTaskService.operation(jsonObject);
}
if ("DeviceInfo".equals(service)) {
}
if ("Device".equals(service)) {
Assert.noNullElements(new Object[]{jsonObject.getString("devicePoint"), jsonObject.getString("status")}, "请求参数不能为空");
if (!"1207".equals(jsonObject.getString("devicePoint")) && !"1210".equals(jsonObject.getString("devicePoint"))) {
throw new BadRequestException("您输入的拣选位不存在,请输入1207或1210拣选位!");
}
RedissonUtils.lock(() -> {
LambdaUpdateWrapper<SchBasePoint> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(SchBasePoint::getIs_used, "0".equals(jsonObject.getString("status")) ? 0 : 1);
iSchBasePointService.update(updateWrapper);
}, param.getService() + param.getType(), null);
}
if ("ErrorInfo".equals(service)) {
Assert.noNullElements(new Object[]{type, jsonObject.getString("msg")}, "请求参数不能为空");
String msg = jsonObject.getString("msg").trim();
//iSchBasePointService.sendErrorMsg(type,null, msg);
}
if ("ErrorTask".equals(service)) {
AtomicReference<JSONObject> reference = new AtomicReference<>(new JSONObject());
RedissonUtils.lock(() -> {
// reference.set(iSchBaseTaskService.errorTask(jsonObject, param.getType()));
}, param.getService() + param.getType(), null);
return reference.get();
}
return result;
}
}

38
nladmin-system/nlsso-server/src/main/java/org/nl/wms/gateway/service/IGateWayService.java

@ -0,0 +1,38 @@
package org.nl.wms.gateway.service;
import com.alibaba.fastjson.JSONObject;
import org.nl.wms.ext.service.util.AcsResponse;
import org.nl.wms.gateway.dto.InteracteDto;
import org.nl.wms.gateway.dto.RcsResponse;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
/**
* 网关执行接口层
*
* @author gbx
* @since 2025-06-27
*/
@Service
public interface IGateWayService {
/**
* 外部系统请求wms
*/
JSONObject apply(InteracteDto<Map> param);
/**
* 下发Rcs任务
* @param list 任务集合
* @return AcsResponse
*/
RcsResponse renotifyRcs(List<String> list);
}
Loading…
Cancel
Save