Commit 898a760c zshaohui

1.io异常加在全部异常中

2.增加工单剩余数量缓存
3.虚拟回仓逻辑修改
4.迈征工单一盘料没有的时候 通知迈征
5.迈征服务器请求指定Reel的位置 修改
6.获取迈征请求数据 提供给客户端
1 个父辈 e2502472
...@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice; ...@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.support.HttpRequestHandlerServlet; import org.springframework.web.context.support.HttpRequestHandlerServlet;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Locale; import java.util.Locale;
import java.util.Objects; import java.util.Objects;
...@@ -106,6 +107,11 @@ public class GlobalExceptionHandler { ...@@ -106,6 +107,11 @@ public class GlobalExceptionHandler {
return buildResponseEntity(ApiError.error(message)); return buildResponseEntity(ApiError.error(message));
} }
@ExceptionHandler(value = IOException.class)
public void ioException(IOException e) {
log.error("捕获到IOException");
}
/** /**
* 统一返回 * 统一返回
*/ */
......
...@@ -190,4 +190,9 @@ public class Constants { ...@@ -190,4 +190,9 @@ public class Constants {
* 是否忽略流水线检查 * 是否忽略流水线检查
*/ */
public static final String CACHE_ignoreLineCheck = "ignoreLineCheck"; public static final String CACHE_ignoreLineCheck = "ignoreLineCheck";
/**
* 工单剩余数量
*/
public static final String CACHE_ordrRemainingQty = "ordrRemainingQty";
} }
...@@ -6,14 +6,11 @@ import com.google.common.collect.Lists; ...@@ -6,14 +6,11 @@ import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.ResultBean; import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException; import com.neotel.smfcore.common.exception.ValidateException;
import com.neotel.smfcore.common.utils.Constants; import com.neotel.smfcore.common.utils.Constants;
import com.neotel.smfcore.common.utils.JsonUtil;
import com.neotel.smfcore.common.utils.SecurityUtils; import com.neotel.smfcore.common.utils.SecurityUtils;
import com.neotel.smfcore.common.utils.StringUtils; import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.api.SmfApi; import com.neotel.smfcore.core.api.SmfApi;
import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager; import com.neotel.smfcore.core.barcode.service.manager.IBarcodeManager;
import com.neotel.smfcore.core.barcode.service.po.Barcode; import com.neotel.smfcore.core.barcode.service.po.Barcode;
import com.neotel.smfcore.core.device.bean.StatusBean;
import com.neotel.smfcore.core.device.enums.BOX_STATUS;
import com.neotel.smfcore.core.device.enums.OP; import com.neotel.smfcore.core.device.enums.OP;
import com.neotel.smfcore.core.device.enums.OP_STATUS; import com.neotel.smfcore.core.device.enums.OP_STATUS;
import com.neotel.smfcore.core.device.util.DataCache; import com.neotel.smfcore.core.device.util.DataCache;
...@@ -27,26 +24,22 @@ import com.neotel.smfcore.core.order.service.po.LiteOrder; ...@@ -27,26 +24,22 @@ import com.neotel.smfcore.core.order.service.po.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem; import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.storage.bean.InventoryItem; import com.neotel.smfcore.core.storage.bean.InventoryItem;
import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE; import com.neotel.smfcore.core.storage.enums.CHECKOUT_TYPE;
import com.neotel.smfcore.core.storage.enums.DeviceType;
import com.neotel.smfcore.core.storage.service.manager.IStoragePosManager; 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.Storage;
import com.neotel.smfcore.core.storage.service.po.StoragePos; import com.neotel.smfcore.core.storage.service.po.StoragePos;
import com.neotel.smfcore.core.system.service.po.DataLog; import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.core.system.util.DevicesStatusUtil;
import com.neotel.smfcore.core.system.util.TaskService; import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.lizhen.LizhenApi; import com.neotel.smfcore.custom.lizhen.LizhenApi;
import com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport; import com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport;
import com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType; import com.neotel.smfcore.custom.lizhen.innerBox.enums.ExtendType;
import com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil; import com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil;
import com.neotel.smfcore.custom.lizhen.report.bean.query.ReportQueryCondition; import com.neotel.smfcore.custom.lizhen.third.maicheng.api.MaiZhengApi;
import com.sun.org.apache.regexp.internal.RE;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query; import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update; import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import springfox.documentation.spring.web.json.Json;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
...@@ -83,6 +76,9 @@ public class LiteOrderCache { ...@@ -83,6 +76,9 @@ public class LiteOrderCache {
@Autowired @Autowired
private LizhenApi lizhenApi; private LizhenApi lizhenApi;
@Autowired
private MaiZhengApi maiZhengApi;
/** /**
* 正在执行的liteOrderMap, key 为orderNo,value 为order * 正在执行的liteOrderMap, key 为orderNo,value 为order
*/ */
...@@ -617,6 +613,10 @@ public class LiteOrderCache { ...@@ -617,6 +613,10 @@ public class LiteOrderCache {
liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder); liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder);
if (taskReelCount <= 0) { if (taskReelCount <= 0) {
//如果是迈征工单,则通知迈征
if (cacheOrder.isMaiZheng()){
maiZhengApi.transReelBox(cacheOrder);
}
//return "工单无可执行的任务"; //return "工单无可执行的任务";
return "smfcore.order.out.noTask"; return "smfcore.order.out.noTask";
} }
......
...@@ -549,9 +549,9 @@ public class OrderController { ...@@ -549,9 +549,9 @@ public class OrderController {
} }
LiteOrderItem findItem = findVirtualItem(liteOrder,barcode,true); LiteOrderItem findItem = findVirtualItem(liteOrder,barcode,true);
if (findItem == null) { /*if (findItem == null) {
findItem=findVirtualItem(liteOrder,barcode,false); findItem=findVirtualItem(liteOrder,barcode,false);
} }*/
if (findItem == null) { if (findItem == null) {
...@@ -563,8 +563,10 @@ public class OrderController { ...@@ -563,8 +563,10 @@ public class OrderController {
findItem.setTotalOutNum(findItem.getTotalOutNum() + num); findItem.setTotalOutNum(findItem.getTotalOutNum() + num);
findItem.setOutReelCount(findItem.getOutReelCount() + 1); findItem.setOutReelCount(findItem.getOutReelCount() + 1);
findItem.setTotalOutReelCount(findItem.getTotalOutReelCount() + 1); findItem.setTotalOutReelCount(findItem.getTotalOutReelCount() + 1);
findItem.setNeedReelCount(findItem.getNeedReelCount() + 1); //findItem.setNeedReelCount(findItem.getNeedReelCount() + 1);
liteOrderItemManager.save(findItem); liteOrderItemManager.save(findItem);
liteOrder.setTotalFinishedReelCount(liteOrder.getTotalFinishedReelCount() + 1);
liteOrder.updateOrderItems(findItem); liteOrder.updateOrderItems(findItem);
//工单未关闭的话,检查状态,全部都出完进行关闭 //工单未关闭的话,检查状态,全部都出完进行关闭
...@@ -700,7 +702,16 @@ public class OrderController { ...@@ -700,7 +702,16 @@ public class OrderController {
LiteOrderItem findItem = null; LiteOrderItem findItem = null;
for (LiteOrderItem item : for (LiteOrderItem item :
liteOrder.getOrderItems()) { liteOrder.getOrderItems()) {
if (checkNum && item.getTotalOutNum() >= item.getNeedNum()) { if (item.getTotalOutReelCount() >= item.getNeedReelCount()){
continue;
}
if (barcode.getPartNumber().equals(item.getPn())){
findItem = item;
break;
}
/*if (checkNum && item.getTotalOutNum() >= item.getNeedNum()) {
continue; continue;
} }
//pn //pn
...@@ -712,7 +723,7 @@ public class OrderController { ...@@ -712,7 +723,7 @@ public class OrderController {
} else if (item.getRi().equals(barcode.getBarcode())) { } else if (item.getRi().equals(barcode.getBarcode())) {
findItem = item; findItem = item;
break; break;
} }*/
} }
return findItem; return findItem;
} }
......
...@@ -85,6 +85,12 @@ public class SettingsController { ...@@ -85,6 +85,12 @@ public class SettingsController {
dataCache.updateCache(Constants.CACHE_ignoreLineCheck,ignoreLineCheck); dataCache.updateCache(Constants.CACHE_ignoreLineCheck,ignoreLineCheck);
} }
Integer ordrRemainingQty = dataCache.getCache(Constants.CACHE_ordrRemainingQty);
if (ordrRemainingQty == null){
ordrRemainingQty = -1;
dataCache.updateCache(Constants.CACHE_ordrRemainingQty,ordrRemainingQty);
}
SysSettingsDto dto = new SysSettingsDto(); SysSettingsDto dto = new SysSettingsDto();
dto.setStartJob(startJob); dto.setStartJob(startJob);
dto.setStopOut(stopOut); dto.setStopOut(stopOut);
...@@ -96,6 +102,7 @@ public class SettingsController { ...@@ -96,6 +102,7 @@ public class SettingsController {
dto.setLineConfigList(lineConfigList); dto.setLineConfigList(lineConfigList);
dto.setMaiZhengMinute(maiZhengMinute); dto.setMaiZhengMinute(maiZhengMinute);
dto.setIgnoreLineCheck(ignoreLineCheck); dto.setIgnoreLineCheck(ignoreLineCheck);
dto.setOrdrRemainingQty(ordrRemainingQty);
return dto; return dto;
} }
...@@ -123,6 +130,10 @@ public class SettingsController { ...@@ -123,6 +130,10 @@ public class SettingsController {
dataCache.updateCache(Constants.CACHE_ignoreLineCheck,sysSettingsDto.isIgnoreLineCheck()); dataCache.updateCache(Constants.CACHE_ignoreLineCheck,sysSettingsDto.isIgnoreLineCheck());
dataCache.updateCache(Constants.CACHE_ordrRemainingQty,sysSettingsDto.getOrdrRemainingQty());
log.info("更改系统设置:stopout=" + sysSettingsDto.isStopOut() + ",stopjob=" + sysSettingsDto.isStartJob() log.info("更改系统设置:stopout=" + sysSettingsDto.isStopOut() + ",stopjob=" + sysSettingsDto.isStartJob()
+ ",backUpMonth=" + sysSettingsDto.getBackUpMonth() + ",backUpMonth=" + sysSettingsDto.getBackUpMonth()
+ ",preGenerateTask=" + sysSettingsDto.getPreGenerateTask() + ",preGenerateTask=" + sysSettingsDto.getPreGenerateTask()
...@@ -132,6 +143,7 @@ public class SettingsController { ...@@ -132,6 +143,7 @@ public class SettingsController {
+",lineConfigList="+sysSettingsDto.getLineConfigList() +",lineConfigList="+sysSettingsDto.getLineConfigList()
+",maiZhengMinute="+sysSettingsDto.getMaiZhengMinute() +",maiZhengMinute="+sysSettingsDto.getMaiZhengMinute()
+",ignoreLineCheck="+sysSettingsDto.isIgnoreLineCheck() +",ignoreLineCheck="+sysSettingsDto.isIgnoreLineCheck()
+",ordrRemainingQty="+sysSettingsDto.getOrdrRemainingQty()
); );
return ResultBean.newOkResult("保存成功"); return ResultBean.newOkResult("保存成功");
} }
......
...@@ -43,6 +43,10 @@ public class SysSettingsDto implements Serializable { ...@@ -43,6 +43,10 @@ public class SysSettingsDto implements Serializable {
@ApiModelProperty("是否忽略流水线检查") @ApiModelProperty("是否忽略流水线检查")
private boolean ignoreLineCheck = false; private boolean ignoreLineCheck = false;
@ApiModelProperty("工单剩余数量")
private int ordrRemainingQty = -1;
} }
...@@ -219,16 +219,15 @@ public class MaiZhengController { ...@@ -219,16 +219,15 @@ public class MaiZhengController {
reelIDResponse.setState("1"); reelIDResponse.setState("1");
} else { } else {
//判断是否绑定工单发出 //判断是否绑定工单发出
DataLog dataLog = dataLogManager.findOne(new Query(Criteria.where("barcode").is(reelId) DataLog dataLog = dataLogManager.findOne(new Query(Criteria.where("barcode").is(reelId)).with(Sort.by(Sort.Direction.DESC, "updateDate")));
.and("sourceId").exists(true).ne(null)
.and("status").is(OP_STATUS.FINISHED.name())
.and("type").is(OP.CHECKOUT)).with(Sort.by(Sort.Direction.DESC, "updateDate")));
if (dataLog != null) { if (dataLog != null) {
log.info(reelId+":已经绑定工单发出,工单号为:"+dataLog.getSourceName()); if (!dataLog.isCancel() && StringUtils.isNotBlank(dataLog.getSourceId()) && dataLog.isCheckOutTask()) {
reelIDResponse.setState("3"); log.info(reelId + ":已经绑定工单发出,工单号为:" + dataLog.getSourceName());
reelIDResponse.setState("2");
reelIDResponse.setWorkID(dataLog.getSourceName()); reelIDResponse.setWorkID(dataLog.getSourceName());
} }
} }
}
responseList.add(reelIDResponse); responseList.add(reelIDResponse);
} }
......
...@@ -5,6 +5,7 @@ import com.neotel.smfcore.common.bean.ResultBean; ...@@ -5,6 +5,7 @@ import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.StringUtils; import com.neotel.smfcore.common.utils.StringUtils;
import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager; 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.LiteOrder;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.system.util.TaskService; import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport; import com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport;
import com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil; import com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil;
...@@ -17,6 +18,11 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -17,6 +18,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j @Slf4j
@RestController @RestController
@RequestMapping("/maizhengDevice") @RequestMapping("/maizhengDevice")
...@@ -81,4 +87,58 @@ public class MaiZhengDeviceController { ...@@ -81,4 +87,58 @@ public class MaiZhengDeviceController {
} }
} }
@ApiOperation("获取迈征请求数据")
@RequestMapping("/getTransReelBoxData")
@AnonymousAccess
public ResultBean getTransReelBoxData(String exportStr) {
StorageExport export = StorageExportUtil.getExport(exportStr + StorageExportUtil.OUT_STATION);
log.info(exportStr + "获取到出料口信息为:" + JSON.toJSONString(export));
String hSerial = export.getHSerial();
if (StringUtils.isBlank(hSerial)) {
return ResultBean.newErrorResult(-1, "smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{exportStr, "hSerial"});
}
LiteOrder liteOrder = liteOrderManager.findByOrderNo(hSerial);
if (liteOrder == null) {
return ResultBean.newErrorResult(-1, "smfcore.valueNotExist", "{0}[{1}]不存在", new String[]{"orderNo", hSerial});
}
String material = export.getMaterial();
if (StringUtils.isNotBlank(material)) {
liteOrder.setReelBoxId(material);
}
Map<String, Object> paramMap = new HashMap<>();
paramMap.put("GUID", liteOrder.getGuid());
paramMap.put("CacheIndex", liteOrder.getCacheIndex());
paramMap.put("CacheSlot", liteOrder.getCacheSlot());
paramMap.put("RecvIndex", liteOrder.getRecvIndex());
paramMap.put("Count", liteOrder.getCount());
paramMap.put("ReelBoxID", liteOrder.getReelBoxId());
paramMap.put("Dia", liteOrder.getDia());
paramMap.put("StartTime", liteOrder.getStartTime());
List<Map<String, Object>> list = new ArrayList<>();
List<LiteOrderItem> orderItemList = liteOrder.getOrderItems();
for (LiteOrderItem orderItem : orderItemList) {
List<String> outReelList = orderItem.getOutReelList();
if (outReelList != null && !outReelList.isEmpty()) {
for (int i = 0; i < outReelList.size(); i++) {
Map<String, Object> itemMap = new HashMap<>();
itemMap.put("Position", orderItem.getPositionList().get(i));
itemMap.put("PARTNUMBER", orderItem.getPn());
itemMap.put("REEL", orderItem.getReel());
itemMap.put("REELNew", outReelList.get(i));
itemMap.put("Width", orderItem.getWidth());
itemMap.put("Dia", orderItem.getDia());
list.add(itemMap);
}
}
}
paramMap.put("List", list);
return ResultBean.newOkResult(paramMap);
}
} }
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!