Commit b278bc06 LN

Merge remote-tracking branch 'origin/master'

2 个父辈 6b3c8f0c 52703709
......@@ -7,8 +7,10 @@ import com.neotel.smfcore.common.utils.HttpHelper;
import com.neotel.smfcore.common.utils.JsonUtil;
import com.neotel.smfcore.core.api.bean.ApiResult;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.manager.IComponentManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.api.bean.CodeValidateParam;
import com.neotel.smfcore.core.barcode.service.po.Component;
import com.neotel.smfcore.core.device.util.DataCache;
import com.neotel.smfcore.core.inList.service.manager.IInListManager;
import com.neotel.smfcore.core.inList.service.po.InList;
......@@ -49,6 +51,26 @@ public abstract class BaseSmfApiListener implements ISmfApiListener {
@Autowired
protected DataCache dataCache;
@Autowired
private IComponentManager componentManager;
protected Component resolveComponent(Barcode barcode){
Component component = componentManager.findByPartNumberAndProvider(barcode.getPartNumber(),barcode.getProvider());
if(component == null){
log.info("自动添加["+barcode.getPartNumber()+"]["+barcode.getProvider()+"]的档案信息");
component = new Component();
component.setPartNumber(barcode.getPartNumber());
component.setAmount(barcode.getAmount());
int w = barcode.getPlateSize();
int h = barcode.getHeight();
component.setPlateSize(w);
component.setHeight(h);
component.setProvider(barcode.getProvider());
component = componentManager.save(component);
}
return component;
}
@Override
public void inTaskStatusChange(String inNotifyUrl, DataLog task){
......
......@@ -240,10 +240,4 @@ public class DefaultSmfApiListener extends BaseSmfApiListener {
}
}
public LiteOrder fetchOrder(String fetchOrderUrl, String orderNumber, String username){
return null;
}
}
......@@ -36,12 +36,6 @@ public class NeotelApi extends BaseSmfApiListener {
@Autowired
private ILiteOrderItemManager liteOrderItemManager;
@Autowired
private CodeResolve codeResolve;
@Autowired
private IComponentManager componentManager;
@Override
public boolean isForThisApi(String apiName) {
return apiName != null && apiName.equalsIgnoreCase("neotel");
......@@ -218,22 +212,6 @@ public class NeotelApi extends BaseSmfApiListener {
}
private Component resolveComponent(Barcode barcode){
Component component = componentManager.findByPartNumberAndProvider(barcode.getPartNumber(),barcode.getProvider());
if(component == null){
log.info("自动添加["+barcode.getPartNumber()+"]["+barcode.getProvider()+"]的档案信息");
component = new Component();
component.setPartNumber(barcode.getPartNumber());
component.setAmount(barcode.getAmount());
int w = barcode.getPlateSize();
int h = barcode.getHeight();
component.setPlateSize(w);
component.setHeight(h);
component.setProvider(barcode.getProvider());
component = componentManager.save(component);
}
return component;
}
/**
* 入库判定
......@@ -314,9 +292,4 @@ public class NeotelApi extends BaseSmfApiListener {
public void onOrderStatusChange(String orderNotifyUrl, LiteOrder liteOrder) {
}
@Override
public LiteOrder fetchOrder(String fetchOrderUrl, String orderNumber, String username) {
return null;
}
}
......@@ -9,7 +9,10 @@ import com.neotel.smfcore.common.utils.HttpHelper;
import com.neotel.smfcore.common.utils.StorageConstants;
import com.neotel.smfcore.core.api.bean.CodeValidateParam;
import com.neotel.smfcore.core.api.listener.BaseSmfApiListener;
import com.neotel.smfcore.core.barcode.bean.CodeBean;
import com.neotel.smfcore.core.barcode.enums.COMPONENT_TYPE;
import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.barcode.utils.CodeResolve;
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;
......@@ -45,6 +48,10 @@ public class PanaApiController extends BaseSmfApiListener {
protected static DataCache dataCache;
@Autowired
protected CodeResolve codeResolve;
@Autowired
public void setDataCache(DataCache dataCache) {
PanaApiController.dataCache = dataCache;
......@@ -59,7 +66,6 @@ public class PanaApiController extends BaseSmfApiListener {
private static String PanaCIMPort = "";
private static String TowerID = "InoAutoB";
private static AtomicLong seq = new AtomicLong(0);
@RequestMapping(value = "/setConfiguration")
......@@ -111,7 +117,8 @@ public class PanaApiController extends BaseSmfApiListener {
return "OK";
}
private static String nextSeq(){
private static String nextSeq(String TowerID){
TowerID = TowerID.replaceAll(" ","_");
return "SMDBOX_"+TowerID+"_"+seq.incrementAndGet();
}
......@@ -373,20 +380,34 @@ public class PanaApiController extends BaseSmfApiListener {
return result;
}
@Override
public Barcode canPutInAfterResolve(String inCheckUrl, CodeValidateParam codeParams, Barcode barcode) throws ValidateException {
public Barcode canPutInBeforeResolve(String codeResolveUrl, CodeValidateParam codeParams) throws ValidateException {
String requestReelUrl = getRequestReelUrl();
try {
if(!Strings.isNullOrEmpty(requestReelUrl)){
log.info("向 PanaCIM["+requestReelUrl+"]请求料盘【"+barcode.getBarcode()+"】的信息");
//String url = getApiUrl("/api/Storage/requestReel");
log.info("向 PanaCIM["+requestReelUrl+"]请求料盘【"+codeParams.getCode()+"】的信息");
Collection<CodeBean> codeBeans = codeResolve.resolveCodeStr(codeParams.getCode(), COMPONENT_TYPE.COMPONENT);
String errorMsg = "";
for (CodeBean codebean : codeBeans) {
if (codebean.getReelHeight() <= 0) {
codebean.setReelHeight(1);
}
if (codebean.getReelWidth() <= 0) {
codebean.setReelWidth(1);
}
Barcode barcode = codebean.getBarcode();
if(codebean.getBarcode() == null){
barcode = new Barcode();
barcode.setBarcode(codebean.getCodeStr());
}
barcode.setPlateSize(codebean.getReelWidth());
barcode.setHeight(codebean.getReelHeight());
Map<String, Object> params = new HashMap<String, Object>();
params.put("TransactionID", nextSeq());
params.put("TransactionID", nextSeq("PANA"));
params.put("ErrorCode","0");
params.put("Reelbarcode",barcode.getBarcode());
String result = HttpHelper.postJson(requestReelUrl,params);
log.info("PanaCIM 返回料盘【"+barcode.getBarcode()+"】的信息:"+result);
log.info("PanaCIM 返回料盘【"+codebean.getCodeStr()+"】的信息:"+result);
if(!Strings.isNullOrEmpty(result)){
ObjectMapper mapper = new ObjectMapper();
HashMap<String,String> jsonMap = mapper.readValue(result, HashMap.class);
......@@ -411,18 +432,25 @@ public class PanaApiController extends BaseSmfApiListener {
if(qty > 0){
barcode.setAmount(qty);
}
String partNo = jsonMap.get("PartNo");
barcode.setPartNumber(partNo);
}
resolveComponent(barcode);
barcode = barcodeManager.saveBarcode(barcode);
return barcode;
}else{
throw new ValidateException("PanaCIM [" + barcode.getBarcode() + "] NG:"+ ErrorCode, "PanaCIM验证失败");
errorMsg = "PanaCIM [" + barcode.getBarcode() + "] NG:"+ ErrorCode;
}
}
}
throw new ValidateException(errorMsg, "PanaCIM验证失败");
}else{
log.info("没有配置PanaCIM条码检测接口,查找setConfiguration注册的IP 及端口");
return null;
}
} catch (Exception e) {
log.error("向 PanaCIM请求料盘【"+barcode.getBarcode()+"】的信息出错",e);
log.error("Request to PanaCIM["+codeParams.getCode()+"] Error",e);
}
return null;
}
......@@ -461,7 +489,7 @@ public class PanaApiController extends BaseSmfApiListener {
log.info("向 PanaCIM["+inNotifyApi+"] 通知料盘【"+task.getBarcode()+"】的入库信息");
//String url = getApiUrl("/api/Storage/checkInNotification");
Map<String, Object> params = new LinkedHashMap<>();
params.put("TransactionID",nextSeq());
params.put("TransactionID",nextSeq(task.getStorageName()));
params.put("ReelBarcode",task.getBarcode());
params.put("PartNo",task.getPartNumber());
params.put("Quantity",task.getNum());
......@@ -491,14 +519,14 @@ public class PanaApiController extends BaseSmfApiListener {
log.info("向 PanaCIM["+outNotifyApi+"] 通知料盘【"+task.getBarcode()+"】的出库信息");
//String url = getApiUrl("/api/Storage/deliverNotification");
Map<String, Object> params = new HashMap<String, Object>();
params.put("TransactionID",nextSeq());
params.put("TransactionID",nextSeq(task.getStorageName()));
params.put("ReelBarcode",task.getBarcode());
params.put("PartNO",task.getPartNumber());
params.put("Quantity",task.getNum());
SimpleDateFormat dataformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
params.put("Timestamp",dataformat.format(new Date()));
params.put("TowerID",task.getStorageName());
params.put("JobID","");
params.put("JobID",task.getSourceId());
params.put("Msd",false);
params.put("MsdLevel","1");
params.put("Location","0");
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!