Commit 4a1baf9a sunke

接口推送到MES时放入线程处理

出库状态增加END处理
1 个父辈 f7d9a30b
......@@ -16,15 +16,18 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@Service
@Slf4j
public class SmfApi {
ExecutorService threadPool = Executors.newCachedThreadPool();
@Autowired
protected DataCache dataCache;
/**
* 入库验证
*/
......@@ -73,6 +76,8 @@ public class SmfApi {
orderNotifyUrl = dataCache.getConfigCache("api.orderNotifyUrl",orderNotifyUrl);
fetchInListUrl = dataCache.getConfigCache("api.fetchInListUrl",fetchInListUrl);
fetchOrderUrl = dataCache.getConfigCache("api.fetchOrderUrl",fetchOrderUrl);
}
/**
......@@ -87,28 +92,38 @@ public class SmfApi {
}
public void onTaskStatusChange(DataLog task) {
for (ISmfApiListener apiListener : apiListenerList) {
if(apiListener.isForThisApi(apiName)){
if(task.isPutInTask()){
if(isUrlExist(inNotifyUrl)){
apiListener.inTaskStatusChange(inNotifyUrl,task);
}
}else{
if(isUrlExist(outNotifyUrl)){
apiListener.outTaskStatusChange(outNotifyUrl,task);
threadPool.execute(new Runnable() {
@Override
public void run() {
for (ISmfApiListener apiListener : apiListenerList) {
if(apiListener.isForThisApi(apiName)){
if(task.isPutInTask()){
if(isUrlExist(inNotifyUrl)){
apiListener.inTaskStatusChange(inNotifyUrl,task);
}
}else{
if(isUrlExist(outNotifyUrl)){
apiListener.outTaskStatusChange(outNotifyUrl,task);
}
}
}
}
}
}
});
}
public void onOrderStatusChange(LiteOrder liteOrder){
if(isUrlExist(orderNotifyUrl)){
for (ISmfApiListener apiListener : apiListenerList) {
if(apiListener.isForThisApi(apiName)){
apiListener.onOrderStatusChange(orderNotifyUrl,liteOrder);
threadPool.execute(new Runnable() {
@Override
public void run() {
for (ISmfApiListener apiListener : apiListenerList) {
if(apiListener.isForThisApi(apiName)){
apiListener.onOrderStatusChange(orderNotifyUrl,liteOrder);
}
}
}
}
});
}
}
......
......@@ -253,12 +253,6 @@ public class BaseDeviceHandler implements IDeviceHandler {
}
//本地难条码是否可以入库
verifyBarcodePutIn(Lists.<Storage>newArrayList(storage), barcodeSave);
//从API验证
Barcode barcodeFromApi = smfApi.canPutInAfterResolve(barcodeSave);
if (barcodeFromApi != null) {
barcodeSave = barcodeFromApi;
}
// //西门子接口验证
// boolean result=SiemensApi.getMaterialLot(1, storage.getId(),storage.getName(),barcodeSave.getBarcode());
......@@ -408,7 +402,7 @@ public class BaseDeviceHandler implements IDeviceHandler {
} else if (BOX_STATUS.OUT_FINISHED == status) {//出仓完成
finishedOutPos(statusBean.getCid(),posName,executeTime);
} else if (BOX_STATUS.OUT_END == status) {//出库完成(放到仓门口
//暂不处理
endTask(statusBean.getCid(),posName);
}
// else if (BOX_STATUS.REWARM_TAKING_END == status) {
// //回温取料完成, 将库位清空
......@@ -532,6 +526,14 @@ public class BaseDeviceHandler implements IDeviceHandler {
protected void finishedOutPos(String cid, String posName) throws ValidateException {
finishedOutPos(cid,posName,-1);
}
protected void endTask(String cid, String posName){
DataLog task = taskService.findFinishedTask(cid, posName);
if(task != null){
task.setStatus(OP_STATUS.END.name());
taskService.updateFinishedTask(task);
}
}
/**
* 出仓位完成处理
* @param cid
......@@ -817,13 +819,11 @@ public class BaseDeviceHandler implements IDeviceHandler {
return dataLogs;
}
//先查找正在执行中的发过去
for (String sourceId :
outMap.keySet()) {
for (String sourceId : outMap.keySet()) {
List<DataLog> dataLogList = outMap.get(sourceId);
boolean isFind = false;
for (DataLog dataLog : dataLogList
) {
for (DataLog dataLog : dataLogList) {
if (dataLog.getStatus().equals(OP_STATUS.EXECUTING)) {
dataLogs.add(dataLog);
isFind = true;
......@@ -839,10 +839,8 @@ public class BaseDeviceHandler implements IDeviceHandler {
log.error("ACCSHELF: sourceId=" + sourceId + "的工单号未找到");
break;
}
for (LiteOrderItem item : order.getOrderItems()
) {
for (DataLog dataLog : dataLogList
) {
for (LiteOrderItem item : order.getOrderItems()) {
for (DataLog dataLog : dataLogList) {
if (dataLog.getStatus().equals(OP_STATUS.WAIT)) {
if ((ObjectUtil.isNotEmpty(item.getPn()) && item.getPn().equals(dataLog.getPartNumber())) ||
(ObjectUtil.isNotEmpty(item.getRi()) && item.getRi().equals(dataLog.getBarcode()))
......
......@@ -520,6 +520,7 @@ public class NLPShelfHandler extends BaseDeviceHandler {
// if(lightPosCidList.contains(cid)){
// hasReelPosColor = ORDER_COLOR.LIGHTBLUE.name();
// }
hasReelPosColor = "off";
Map<String, Object> dataMap = new HashMap<>();
dataMap.put("hasReelPosList", posList);
dataMap.put("hasReelPosColor", hasReelPosColor);
......
......@@ -272,6 +272,7 @@ public class SpBoxHandler extends BaseDeviceHandler {
return DeviceType.SOLDERPASTE;
}
@Override
protected StatusBean handleInOutFinished(StatusBean statusBean) {
Map<String, BoxStatusBean> statusOfBoxes = statusBean.getBoxStatus();
if (statusOfBoxes != null) {
......
......@@ -295,7 +295,7 @@ public class DataLog extends BasePo implements Serializable {
* 超过5分钟的已完成,已取消的任务都不再
*/
public boolean needRemoveFromCache(){
if(isFinished() || isCancel()){
if(isFinished() || isCancel() || isEnd()){
if(System.currentTimeMillis() - super.getUpdateDate().getTime() > 5 * 60 * 1000){
return true;
}
......
......@@ -74,9 +74,9 @@ public class TianTongApi extends BaseSmfApiListener {
*/
@Override
public void outTaskStatusChange(String outNotifyUrl, DataLog task) {
if (task.isStatus(OP_STATUS.OUT_BOX)) {
if (task.isFinished()) {
outBoxNotify(task);
}else if(task.isFinished()) {
}else if(task.isEnd()) {
outFinishedNotify(outNotifyUrl,task);
}
}
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!