Commit aae33481 zshaohui

1.Fuji对接功能提交

1 个父辈 fbf272dd
正在显示 23 个修改的文件 包含 274 行增加442 行删除
......@@ -591,6 +591,45 @@ public class HttpHelper {
}
}
public static String getParam(String url, Map<String, String> headerMap, Map<String,Object> paramMap) throws ApiException {
CloseableHttpClient httpClient = null;
CloseableHttpResponse response = null;
try {
List<NameValuePair> params = toNameValuePair(paramMap);
URI uri = new URIBuilder(url).setParameters(params).build();
log.info("getParam请求,地址为:"+uri);
HttpGet httpGet = new HttpGet(uri);
RequestConfig requestConfig = RequestConfig.custom().setConnectTimeout(CONNECTION_TIMEOUT).build();
httpGet.setConfig(requestConfig);
if (headerMap != null && !headerMap.isEmpty()) {
for (Entry<String, String> entry : headerMap.entrySet()) {
httpGet.addHeader(entry.getKey(), entry.getValue());
}
}
httpClient = HttpClients.createDefault();
response = httpClient.execute(httpGet);
HttpEntity entity = response.getEntity();
String responseContent = EntityUtils.toString(entity, CONTENT_CHARSET);
return responseContent;
} catch (Exception e) {
throw new ApiException("Request to [" + url + "] failed:" + e.getMessage());
} finally {
try {
if (response != null) {
response.close();
}
if (httpClient != null) {
httpClient.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static String appendString(String url, String paramStr) {
StringBuffer stringBuffer = new StringBuffer();
stringBuffer.append(url);
......
package com.neotel.smfcore.custom.fuji;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.neotel.smfcore.common.exception.ApiException;
import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.HttpHelper;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.api.bean.CodeValidateParam;
import com.neotel.smfcore.core.api.listener.BaseSmfApiListener;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.custom.fuji.config.FileDirectoryConfig;
import com.neotel.smfcore.custom.fuji.config.FujiUrlConfig;
import com.neotel.smfcore.custom.fuji.util.NotifyUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
@Service
@Slf4j
public class FujiApi extends BaseSmfApiListener {
@Override
public boolean isForThisApi(String apiName) {
return apiName != null && apiName.equalsIgnoreCase("fuji");
}
@Override
public Barcode canPutInAfterResolve(String inCheckUrl, CodeValidateParam params, Barcode barcode) throws ValidateException {
String accessToken = getAccessToken();
//log.info(barcode.getBarcode()+"获取token的结果为:"+accessToken);
boolean hasDid = inventoryHasDid(barcode.getBarcode(),accessToken);
if (hasDid){
log.info(barcode.getBarcode()+"在Fuji中已经存在,直接返回");
return barcode;
} else {
boolean register = registerNewDid(barcode, accessToken);
if (register){
log.info(barcode.getBarcode()+"在Fuji中注册成功,直接返回");
return barcode;
} else {
throw new ValidateException("smfcore.registerdid.false",barcode.getBarcode()+"注册失败");
}
}
}
@Override
public void inTaskStatusChange(String inNotifyUrl, DataLog task) {
if (task.isFinished()) {
NotifyUtil.createLoadEtn(task.getBarcode(),task.getPosName(),task.getNum(),"",task.getW(),task.getH(),task.getPartNumber(),task.getStorageName(),FileDirectoryConfig.NOTIFY);
}
}
@Override
public void outTaskStatusChange(String outNotifyUrl, DataLog task) {
if (task.isFinished()) {
NotifyUtil.createLoadEtn(task.getBarcode(),task.getPosName(),task.getNum(),"",task.getW(),task.getH(),task.getPartNumber(),task.getStorageName(),FileDirectoryConfig.NOTIFY);
NotifyUtil.createProvideEtn(task.getBarcode(),task.getPosName(),task.getNum(),"",task.getW(),task.getH(),task.getPartNumber(),task.getSourceName(),task.getLine(),task.getStorageName(),FileDirectoryConfig.NOTIFY);
NotifyUtil.createDeleteEtn(task.getBarcode(),task.getW(),task.getH(),task.getPartNumber(),FileDirectoryConfig.NOTIFY);
}
}
public boolean registerNewDid(Barcode barcode,String accessToken) {
Map<String, String> headerMap = new HashMap<>();
headerMap.put("fujiAccessToken", accessToken);
Map<String, Object> params = new HashMap<>();
params.put("did",barcode.getBarcode());
params.put("partBarcode",barcode.getFullCode());
params.put("quantity",barcode.getAmount());
params.put("packageType","paper"); //默认是paper,
params.put("partsoutWarning",0);
params.put("splicingWarning",0);
params.put("partNumber",barcode.getPartNumber());
params.put("vendorName",barcode.getProvider());
params.put("lotName",barcode.getBatch());
params.put("dateCode",barcode.getProduceDate());
params.put("location","");
params.put("memo","");
params.put("note1","");
params.put("note2","");
params.put("note3","");
params.put("note4","");
params.put("useSplicing",true);
params.put("useTrayPackage",true);
params.put("trayStackCount",1);
params.put("trayPickupPositionX",1);
params.put("trayPickupPositionY",1);
params.put("traySizeX",0);
params.put("traySizeY",0);
log.info("注册Fuji的did参数为:"+JSON.toJSONString(params));
try {
String result = HttpHelper.postJsonWithAuth(FujiUrlConfig.inventoryDids(), Arrays.asList(params), "", headerMap);
log.info("注册Fuji的did结果为:"+result);
JSONObject resultObj = JSONObject.parseObject(result);
Integer addedCount = resultObj.getInteger("addedCount");
if (addedCount != null && addedCount > 0){
return true;
} else {
String details = resultObj.getString("details");
throw new ValidateException("smfcore.registerdid.false",barcode.getBarcode()+"注册失败:"+details);
}
} catch (ApiException e) {
log.info("注册Fuji的did失败:",e);
}
return false;
}
public boolean inventoryHasDid(String barcode,String accessToken) {
Map<String, String> headerMap = new HashMap<>();
headerMap.put("fujiAccessToken", accessToken);
String search = "did == \""+barcode+"\"";
String orderBy = "did asc";
int pageToken = 0;
int pageSize = 200;
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("pageToken", pageToken);
paramMap.put("pageSize", pageSize);
paramMap.put("search", search);
paramMap.put("orderBy", orderBy);
try {
String result = HttpHelper.getParam(FujiUrlConfig.inventoryDids(), headerMap, paramMap);
log.info(barcode + "获取Fuji的inventory/dids结果为:" + result);
JSONObject resultObj = JSONObject.parseObject(result);
JSONArray dataArray = resultObj.getJSONArray("datas");
if (dataArray != null && !dataArray.isEmpty()){
for (int i = 0; i < dataArray.size(); i++) {
JSONObject data = dataArray.getJSONObject(i);
if (barcode.equals(data.getString("did"))){
return true;
}
}
}
} catch (ApiException e) {
log.info(barcode + "获取Fuji的inventory/dids失败:", e.getMessage());
}
return false;
}
/**
* 获取登录的token
* @return
*/
private String getAccessToken() {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("userName", FujiUrlConfig.userName);
paramMap.put("password", FujiUrlConfig.password);
log.info("获取Fuji的token参数为:" + JSON.toJSONString(paramMap));
String accessToken = "";
try {
String result = HttpHelper.postJson(FujiUrlConfig.getAuthLogin(), paramMap);
log.info("获取Fuji的token结果为:" + result);
JSONObject resultObj = JSONObject.parseObject(result);
accessToken = resultObj.getString("accessToken");
} catch (ApiException e) {
log.info("获取Fuji的token异常:", e);
accessToken = "";
}
if (StringUtils.isEmpty(accessToken)) {
throw new ValidateException("smfcore.accessToken.ng", "获取AccessToken失败");
}
return accessToken;
}
}
package com.neotel.smfcore.custom.nexim.bean;
package com.neotel.smfcore.custom.fuji.bean;
import lombok.Data;
......
package com.neotel.smfcore.custom.nexim.bean;
package com.neotel.smfcore.custom.fuji.bean;
import lombok.Data;
......
package com.neotel.smfcore.custom.nexim.bean;
package com.neotel.smfcore.custom.fuji.bean;
import lombok.Data;
......
package com.neotel.smfcore.custom.fuji.config;
public class FileDirectoryConfig {
public static final String NOTIFY = "\\\\175.41.238.212\\remoteorder\\notify\\";
}
package com.neotel.smfcore.custom.fuji.config;
import lombok.Data;
@Data
public class FujiUrlConfig {
private static final String baseUrl = "http://175.41.238.212/fujiopenwebapi/api/v1";
public static final String userName = "Neotel";
public static final String password = "Neotel";
private static final String authLogin = "/auth/login";
private static final String inventoryDids = "/inventory/dids";
public static String getAuthLogin() {
return baseUrl + authLogin;
}
public static String inventoryDids() {
return baseUrl + inventoryDids;
}
}
package com.neotel.smfcore.custom.nexim.enums;
package com.neotel.smfcore.custom.fuji.enums;
/**
* Action 类型
......
package com.neotel.smfcore.custom.nexim.enums;
package com.neotel.smfcore.custom.fuji.enums;
public class ErrorCode {
public static final int ok = 0;
......
package com.neotel.smfcore.custom.nexim.enums;
package com.neotel.smfcore.custom.fuji.enums;
public enum NexObject {
......
package com.neotel.smfcore.custom.nexim.enums;
package com.neotel.smfcore.custom.fuji.enums;
public class OrderType {
public static final String order = "[Order]";
......
package com.neotel.smfcore.custom.nexim.order;
package com.neotel.smfcore.custom.fuji.order;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.neotel.smfcore.common.utils.*;
import com.neotel.smfcore.core.api.SmfApi;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.order.LiteOrderCache;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager;
import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager;
import com.neotel.smfcore.core.storage.service.po.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.nexim.NeximApi;
import com.neotel.smfcore.custom.nexim.bean.OrderReq;
import com.neotel.smfcore.custom.nexim.bean.OrderResp;
import com.neotel.smfcore.custom.nexim.enums.Action;
import com.neotel.smfcore.custom.nexim.enums.ErrorCode;
import com.neotel.smfcore.custom.nexim.enums.NexObject;
import com.neotel.smfcore.custom.nexim.enums.OrderType;
import com.neotel.smfcore.custom.nexim.util.NotifyUtil;
import com.neotel.smfcore.custom.nexim.util.OrderUtil;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import jcifs.smb.SmbFile;
import lombok.SneakyThrows;
import com.neotel.smfcore.custom.fuji.util.NotifyUtil;
import com.neotel.smfcore.custom.fuji.util.OrderUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.PostConstruct;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Slf4j
@Component
public class OrderHandler {
private static IStoragePosManager storagePosManager;
@Autowired
public void setStoragePosManager(IStoragePosManager manager) {
storagePosManager = manager;
}
private static IBarcodeManager barcodeManager;
@Autowired
public void setBarcodeManager(IBarcodeManager manager) {
barcodeManager = manager;
}
private static DataCache dataCache;
@Autowired
......@@ -82,13 +34,6 @@ public class OrderHandler {
dataCache = cache;
}
private static TaskService taskService;
@Autowired
public void setTaskService(TaskService service) {
taskService = service;
}
private static ILiteOrderManager liteOrderManager;
@Autowired
......@@ -103,12 +48,6 @@ public class OrderHandler {
liteOrderCache = cache;
}
private static OrderCheckOutService checkOutService;
@Autowired
public void setOrderCheckOutService(OrderCheckOutService service) {
checkOutService = service;
}
public static SmfApi smfApi;
......@@ -122,16 +61,15 @@ public class OrderHandler {
@PostConstruct
public void init() {
scheduledThreadPool.scheduleAtFixedRate(() -> {
try {
if ("nexim".equals(smfApi.getApiName())) {
if ("nexim".equals(smfApi.getApiName())){
scheduledThreadPool.scheduleAtFixedRate(() -> {
try {
handler();
} catch (Exception e) {
log.info("执行fuji工单失败:",e);
}
} catch (IOException e) {
e.printStackTrace();
log.error(e.getMessage());
}
}, 60, 10, TimeUnit.SECONDS);
},60, 10, TimeUnit.SECONDS);
}
}
public static void handler() throws IOException {
......
package com.neotel.smfcore.custom.nexim.util;
package com.neotel.smfcore.custom.fuji.util;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSON;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.custom.nexim.bean.Notify;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.io.File;
import java.io.FileOutputStream;
......
package com.neotel.smfcore.custom.nexim.util;
package com.neotel.smfcore.custom.fuji.util;
import com.alibaba.fastjson.JSON;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.SmbUtil;
import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.custom.nexim.bean.Notify;
import com.neotel.smfcore.custom.nexim.bean.OrderReq;
import com.neotel.smfcore.custom.nexim.bean.OrderResp;
import com.neotel.smfcore.custom.nexim.enums.OrderType;
import com.neotel.smfcore.custom.fuji.bean.OrderResp;
import jcifs.smb.SmbFile;
import lombok.extern.slf4j.Slf4j;
......@@ -20,7 +15,6 @@ import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
......
package com.neotel.smfcore.custom.fushi;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.neotel.smfcore.common.utils.HttpHelper;
import com.neotel.smfcore.core.api.listener.DefaultSmfApiListener;
import com.neotel.smfcore.custom.fushi.bean.FushiApiToken;
import com.neotel.smfcore.custom.fushi.bean.InventoryDid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
@Slf4j
public class FuShiApi extends DefaultSmfApiListener {
@Value("${smd.userName}")
private String userName;
@Value("${smd.password}")
private String password;
@Value("${smd.url}")
private String fuShiUrl;
public static final String tokenUrl = "auth/login";
public static final String inventoryUrl = "inventory/dids";
private String accessToken;
public String getAccessToken() {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("userName", userName);
paramMap.put("password", password);
log.info("getAccessToken调用参数为:" + JSON.toJSONString(paramMap));
String result = "";
try {
String url = fuShiUrl + tokenUrl;
result = HttpHelper.postJson(url, paramMap);
// result = "{\n" +
// " \"accessToken\": \"accessToken1234\",\n" +
// " \"refreshToken\": \"refreshToken12345\"\n" +
// "}";
log.info("getAccessToken接口返回为:" + result);
FushiApiToken fushiApiToken = JSONObject.parseObject(result, FushiApiToken.class);
result = fushiApiToken.getAccess_token();
accessToken = fushiApiToken.getAccess_token();
} catch (Exception e) {
e.printStackTrace();
log.info("getAccessToken接口错误信息为:" + e.getMessage());
}
return result;
}
public List<String> getInventoryList(int pageSize, int pageToken) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("pageSize", pageSize);
paramMap.put("pageToken", pageToken);
log.info("getInventoryList调用参数为:" + JSON.toJSONString(paramMap));
List<String> inventoryDids = new ArrayList<>();
String result = "";
try {
String url = fuShiUrl + inventoryUrl;
HashMap<String, String> headerMap = new HashMap<>();
headerMap.put("fujiAccessToken", accessToken);
result = HttpHelper.getJson(url,headerMap, paramMap);
// result = "{\n" +
// " \"datas\": [\n" +
// " {\n" +
// " \"did\": \"121\",\n" +
// " \"partNumber\": \"M21000012\",\n" +
// " \"quantity\": 21234\n" +
// " },\n" +
// " {\n" +
// " \"did\": \"12345\",\n" +
// " \"partNumber\": \"M21230012\",\n" +
// " \"quantity\": 16394\n" +
// " },\n" +
// " {\n" +
// " \"did\": \"1223\",\n" +
// " \"partNumber\": \"M21000232\",\n" +
// " \"quantity\": 16734\n" +
// " }\n" +
// " ],\n" +
// " \"metadata\": {\n" +
// " \"totalCount\": 14,\n" +
// " \"pageSize\": 0\n" +
// " }\n" +
// "}";
log.info("getInventoryList接口返回为:" + result);
InventoryDid inventory = JSONObject.parseObject(result, InventoryDid.class);
if (inventory != null) {
if (inventory.getDatas() != null && !inventory.getDatas().isEmpty()) {
for (int i = 0; i < inventory.getDatas().size(); i++) {
String did = inventory.getDatas().get(i).getDid();
inventoryDids.add(did);
}
}
}
} catch (Exception e) {
e.printStackTrace();
log.info("getInventoryList接口错误信息为:" + e.getMessage());
}
return inventoryDids;
}
public String getInventoryAdd(String partBarcode, Integer quantity, String partNumber) {
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("partBarcode", partBarcode);
paramMap.put("quantity", quantity);
paramMap.put("partNumber", partNumber);
log.info("getInventoryAdd调用参数为:" + JSON.toJSONString(paramMap));
String result = "";
try {
String url = fuShiUrl + inventoryUrl;
HashMap<String, String> headerMap = new HashMap<>();
headerMap.put("fujiAccessToken", accessToken);
result = HttpHelper.postJson(url, paramMap, headerMap);
// result = "{\n" +
// " \"addedCount\": 100\n" +
// "}";
log.info("getInventoryAdd接口返回为:" + result);
InventoryDid ResultData = JSONObject.parseObject(result, InventoryDid.class);
Integer addedCount = ResultData.getAddedCount();
result = addedCount + "";
} catch (Exception e) {
e.printStackTrace();
log.info("getInventoryAdd接口错误信息为:" + e.getMessage());
}
return result;
}
}
package com.neotel.smfcore.custom.fushi.bean;
import lombok.Data;
@Data
public class FushiApiToken {
private String access_token;
private String refresh_token;
}
package com.neotel.smfcore.custom.fushi.bean.Inventory;
import lombok.Data;
@Data
public class Datas {
private String did;
private String partNumber;
private String partBarcode;
private String originalPartBarcode;
private Integer quantity;
private String packageType;
private Integer partsoutWarning;
private Integer splicingWarning;
private String vendorName;
private String lotName;
private String dateCode;
private String area;
private String location;
private String machine;
private Integer module;
private Integer stageNo;
private Integer slotNo;
private String createdUser;
private String createDate;
private String updatedUser;
private String updatedDate;
private String dryStatus;
private String boxLife;
private String floorLife;
private String memo;
private String lightingClass;
private Integer lightingLimit;
private String note1;
private String note2;
private String note3;
private String note4;
private boolean useSplicing;
private boolean useTrayPackage;
private Integer trayStackCount;
private Integer trayPickupPositionX;
private Integer trayPickupPositionY;
private Integer traySizeX;
private Integer traySizeY;
}
package com.neotel.smfcore.custom.fushi.bean.Inventory;
import lombok.Data;
@Data
public class MetaData {
private Integer totalCount;
private Integer pageSize;
private Integer pageToken;
private String nextPageToken;
}
package com.neotel.smfcore.custom.fushi.bean;
import com.neotel.smfcore.custom.fushi.bean.Inventory.Datas;
import com.neotel.smfcore.custom.fushi.bean.Inventory.MetaData;
import lombok.Data;
import java.util.List;
@Data
public class InventoryDid {
private List<Datas> datas;
private MetaData metadata;
private Integer addedCount;
}
package com.neotel.smfcore.custom.fushi.controller;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.custom.fushi.FuShiApi;
import com.neotel.smfcore.custom.fushi.bean.InventoryDid;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.client.methods.HttpPost;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpHeaders;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@Api(tags = "fuShi接口")
@Slf4j
@RestController
@RequestMapping("/manuallyPutStorage")
public class ManuallyPutStorageController {
@Autowired
private FuShiApi fuShiApi;
/***
*
* @param barcode
* @param did
*/
@RequestMapping("/PutInStorage")
public ResultBean PutInStorage(@RequestBody Barcode barcode, @RequestParam String did) {
log.info("调用接口PutInStorage用到的参数:" + barcode + " DiD为" + did);
String accessToken = fuShiApi.getAccessToken();
if (accessToken.isEmpty()) {
log.error("调用接口getAccessToken异常");
return ResultBean.newErrorResult(-1, "", "调用接口getAccessToken信息错误,数据为空");
}
Integer pageSize = 12;
Integer pageToken = 0;
List<String> inventoryList = fuShiApi.getInventoryList(pageSize, pageToken);
if (inventoryList == null || inventoryList.size() == 0) {
log.error("调用接口getInventoryList异常");
return ResultBean.newErrorResult(-1, "", "调用接口getInventoryList信息错误,数据为空");
}
boolean inFlag = true;
for (int i = 0; i < inventoryList.size(); i++) {
String inDid = inventoryList.get(i);
if (did.equals(inDid)) {
inFlag = false;
break;
}
}
if (inFlag) {
String partBarcode = barcode.getBarcode();
Integer quantity = barcode.getAmount();
String partNumber = barcode.getPartNumber();
String inventoryAdd = fuShiApi.getInventoryAdd(partBarcode, quantity, partNumber);
if ("".equals(inventoryAdd)) {
log.error("调用接口getInventoryAdd异常");
return ResultBean.newErrorResult(-1, "", "调用getInventoryAdd接口信息错误,数据为空");
}
}
return ResultBean.newOkResult("OK");
}
}
package com.neotel.smfcore.custom.nexim;
import com.neotel.smfcore.common.utils.FileUtil;
import com.neotel.smfcore.common.utils.SmbUtil;
import com.neotel.smfcore.core.api.listener.BaseSmfApiListener;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.custom.nexim.bean.Notify;
import com.neotel.smfcore.custom.nexim.config.FileDirectoryConfig;
import com.neotel.smfcore.custom.nexim.enums.Action;
import com.neotel.smfcore.custom.nexim.enums.NexObject;
import com.neotel.smfcore.custom.nexim.util.NotifyUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.io.File;
@Service
@Slf4j
public class NeximApi extends BaseSmfApiListener {
@Override
public boolean isForThisApi(String apiName) {
return apiName != null && apiName.equalsIgnoreCase("nexim");
}
@Override
public void inTaskStatusChange(String inNotifyUrl, DataLog task) {
if (task.isFinished()) {
NotifyUtil.createLoadEtn(task.getBarcode(),task.getPosName(),task.getNum(),"",task.getW(),task.getH(),task.getPartNumber(),task.getStorageName(),FileDirectoryConfig.NOTIFY);
}
}
@Override
public void outTaskStatusChange(String outNotifyUrl, DataLog task) {
if (task.isFinished()) {
NotifyUtil.createLoadEtn(task.getBarcode(),task.getPosName(),task.getNum(),"",task.getW(),task.getH(),task.getPartNumber(),task.getStorageName(),FileDirectoryConfig.NOTIFY);
NotifyUtil.createProvideEtn(task.getBarcode(),task.getPosName(),task.getNum(),"",task.getW(),task.getH(),task.getPartNumber(),task.getSourceName(),task.getLine(),task.getStorageName(),FileDirectoryConfig.NOTIFY);
NotifyUtil.createDeleteEtn(task.getBarcode(),task.getW(),task.getH(),task.getPartNumber(),FileDirectoryConfig.NOTIFY);
}
}
}
package com.neotel.smfcore.custom.nexim.config;
public class FileDirectoryConfig {
//public static final String NOTIFY = "Remoteorder\\notify\\";
public static final String NOTIFY = "F:\\FUJI\\remoteorder\\notify\\";
//public static final String INPUT = "Remoteorder\\input\\";
public static final String INPUT = "F:\\FUJI\\remoteorder\\line\\";
public static final String OUTPUT = "Remoteorder\\output\\";
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!