Commit 898a760c zshaohui

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

2.增加工单剩余数量缓存
3.虚拟回仓逻辑修改
4.迈征工单一盘料没有的时候 通知迈征
5.迈征服务器请求指定Reel的位置 修改
6.获取迈征请求数据 提供给客户端
1 个父辈 e2502472
......@@ -17,6 +17,7 @@ import org.springframework.web.bind.annotation.RestControllerAdvice;
import org.springframework.web.context.support.HttpRequestHandlerServlet;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.Locale;
import java.util.Objects;
......@@ -106,6 +107,11 @@ public class GlobalExceptionHandler {
return buildResponseEntity(ApiError.error(message));
}
@ExceptionHandler(value = IOException.class)
public void ioException(IOException e) {
log.error("捕获到IOException");
}
/**
* 统一返回
*/
......
......@@ -190,4 +190,9 @@ public class Constants {
* 是否忽略流水线检查
*/
public static final String CACHE_ignoreLineCheck = "ignoreLineCheck";
/**
* 工单剩余数量
*/
public static final String CACHE_ordrRemainingQty = "ordrRemainingQty";
}
......@@ -6,14 +6,11 @@ import com.google.common.collect.Lists;
import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.exception.ValidateException;
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.StringUtils;
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.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_STATUS;
import com.neotel.smfcore.core.device.util.DataCache;
......@@ -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.storage.bean.InventoryItem;
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.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.DevicesStatusUtil;
import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.custom.lizhen.LizhenApi;
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.util.StorageExportUtil;
import com.neotel.smfcore.custom.lizhen.report.bean.query.ReportQueryCondition;
import com.sun.org.apache.regexp.internal.RE;
import com.neotel.smfcore.custom.lizhen.third.maicheng.api.MaiZhengApi;
import lombok.extern.slf4j.Slf4j;
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.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import springfox.documentation.spring.web.json.Json;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
......@@ -83,6 +76,9 @@ public class LiteOrderCache {
@Autowired
private LizhenApi lizhenApi;
@Autowired
private MaiZhengApi maiZhengApi;
/**
* 正在执行的liteOrderMap, key 为orderNo,value 为order
*/
......@@ -617,6 +613,10 @@ public class LiteOrderCache {
liteOrderMap.put(cacheOrder.getOrderNo(), cacheOrder);
if (taskReelCount <= 0) {
//如果是迈征工单,则通知迈征
if (cacheOrder.isMaiZheng()){
maiZhengApi.transReelBox(cacheOrder);
}
//return "工单无可执行的任务";
return "smfcore.order.out.noTask";
}
......
......@@ -549,9 +549,9 @@ public class OrderController {
}
LiteOrderItem findItem = findVirtualItem(liteOrder,barcode,true);
if (findItem == null) {
/*if (findItem == null) {
findItem=findVirtualItem(liteOrder,barcode,false);
}
}*/
if (findItem == null) {
......@@ -563,8 +563,10 @@ public class OrderController {
findItem.setTotalOutNum(findItem.getTotalOutNum() + num);
findItem.setOutReelCount(findItem.getOutReelCount() + 1);
findItem.setTotalOutReelCount(findItem.getTotalOutReelCount() + 1);
findItem.setNeedReelCount(findItem.getNeedReelCount() + 1);
//findItem.setNeedReelCount(findItem.getNeedReelCount() + 1);
liteOrderItemManager.save(findItem);
liteOrder.setTotalFinishedReelCount(liteOrder.getTotalFinishedReelCount() + 1);
liteOrder.updateOrderItems(findItem);
//工单未关闭的话,检查状态,全部都出完进行关闭
......@@ -700,7 +702,16 @@ public class OrderController {
LiteOrderItem findItem = null;
for (LiteOrderItem item :
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;
}
//pn
......@@ -712,7 +723,7 @@ public class OrderController {
} else if (item.getRi().equals(barcode.getBarcode())) {
findItem = item;
break;
}
}*/
}
return findItem;
}
......
......@@ -85,6 +85,12 @@ public class SettingsController {
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();
dto.setStartJob(startJob);
dto.setStopOut(stopOut);
......@@ -96,6 +102,7 @@ public class SettingsController {
dto.setLineConfigList(lineConfigList);
dto.setMaiZhengMinute(maiZhengMinute);
dto.setIgnoreLineCheck(ignoreLineCheck);
dto.setOrdrRemainingQty(ordrRemainingQty);
return dto;
}
......@@ -123,6 +130,10 @@ public class SettingsController {
dataCache.updateCache(Constants.CACHE_ignoreLineCheck,sysSettingsDto.isIgnoreLineCheck());
dataCache.updateCache(Constants.CACHE_ordrRemainingQty,sysSettingsDto.getOrdrRemainingQty());
log.info("更改系统设置:stopout=" + sysSettingsDto.isStopOut() + ",stopjob=" + sysSettingsDto.isStartJob()
+ ",backUpMonth=" + sysSettingsDto.getBackUpMonth()
+ ",preGenerateTask=" + sysSettingsDto.getPreGenerateTask()
......@@ -132,6 +143,7 @@ public class SettingsController {
+",lineConfigList="+sysSettingsDto.getLineConfigList()
+",maiZhengMinute="+sysSettingsDto.getMaiZhengMinute()
+",ignoreLineCheck="+sysSettingsDto.isIgnoreLineCheck()
+",ordrRemainingQty="+sysSettingsDto.getOrdrRemainingQty()
);
return ResultBean.newOkResult("保存成功");
}
......
......@@ -43,6 +43,10 @@ public class SysSettingsDto implements Serializable {
@ApiModelProperty("是否忽略流水线检查")
private boolean ignoreLineCheck = false;
@ApiModelProperty("工单剩余数量")
private int ordrRemainingQty = -1;
}
......@@ -219,14 +219,13 @@ public class MaiZhengController {
reelIDResponse.setState("1");
} else {
//判断是否绑定工单发出
DataLog dataLog = dataLogManager.findOne(new Query(Criteria.where("barcode").is(reelId)
.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")));
DataLog dataLog = dataLogManager.findOne(new Query(Criteria.where("barcode").is(reelId)).with(Sort.by(Sort.Direction.DESC, "updateDate")));
if (dataLog != null) {
log.info(reelId+":已经绑定工单发出,工单号为:"+dataLog.getSourceName());
reelIDResponse.setState("3");
reelIDResponse.setWorkID(dataLog.getSourceName());
if (!dataLog.isCancel() && StringUtils.isNotBlank(dataLog.getSourceId()) && dataLog.isCheckOutTask()) {
log.info(reelId + ":已经绑定工单发出,工单号为:" + dataLog.getSourceName());
reelIDResponse.setState("2");
reelIDResponse.setWorkID(dataLog.getSourceName());
}
}
}
responseList.add(reelIDResponse);
......
......@@ -5,6 +5,7 @@ import com.neotel.smfcore.common.bean.ResultBean;
import com.neotel.smfcore.common.utils.StringUtils;
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.system.util.TaskService;
import com.neotel.smfcore.custom.lizhen.innerBox.bean.StorageExport;
import com.neotel.smfcore.custom.lizhen.innerBox.util.StorageExportUtil;
......@@ -17,6 +18,11 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Slf4j
@RestController
@RequestMapping("/maizhengDevice")
......@@ -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!