Commit 146bc1dc LN

1053:1.除reel外,同时只能出两种料架的料。2.工单上传修改。bug修改

1 个父辈 c8c51f1f
......@@ -46,7 +46,7 @@ public class MainTimer {
log.info("开始加载未完成的任务...");
List<DataLog> unExecuteTasks = dataLogManager.findUnFinishedTasks();
for (DataLog unExecuteTask : unExecuteTasks) {
if (unExecuteTask.isExecuting() || unExecuteTask.isWait()) {
if (unExecuteTask.isExecuting() || unExecuteTask.isWait()||unExecuteTask.isOutBox()||unExecuteTask.isInLine()|| unExecuteTask.isInRobot()||unExecuteTask.isBoxdoor()) {
try {
taskService.addTaskToExecute(unExecuteTask);
}catch (Exception e){
......
......@@ -274,6 +274,12 @@ public class StatusBean {
addPosInfo(barcode,posId,plateW,plateH,isSingleOut,0);
}
/**
* 获取客户端发送上来的条码信息
*/
public String getBarcode(){
return data.get("barcode");
}
/**
* 入库时添加仓位及料盘大小信息(posId库位编号,plateW:料盘宽度,plateH:料盘高度,singleOut:是否出库到料仓门口)
*/
public void addPosInfo(String barcode, String posId, int plateW, int plateH, boolean isSingleOut,int usedCount){
......
......@@ -97,6 +97,13 @@ public class RobotBoxHandler extends BaseDeviceHandler {
if (dataCache.getCache(Constants.CACHE_StopOut)) {
return statusBean;
}
//如果当前有barcode,暂时不发出库任务
String sBarcode=statusBean.getBarcode();
if (ObjectUtil.isNotEmpty(sBarcode)) {
return statusBean;
}
String cid = statusBean.getCid();
// 任务根据时间排序。查找当前正在出的工单和料架 (入库任务不计算)
List<DataLog> allTasks=taskService.getAllTasks();
......@@ -113,7 +120,10 @@ public class RobotBoxHandler extends BaseDeviceHandler {
continue;
}
String shelf= MicronDataCache.getShelfType(task);
if(!shelfType.contains(shelf)){
if(shelfType.equals("S007")){
//reel料盘一直可以出库
}
else if(!shelfType.contains(shelf)) {
shelfType.add(shelf);
}
if(ObjectUtil.isNotEmpty(task.getSourceId())&&(!sourceIds.contains(task.getSourceId()))){
......@@ -155,11 +165,12 @@ public class RobotBoxHandler extends BaseDeviceHandler {
}
//reel可以一直出,不需要判断
//如果料架>=2,当前任务的料架在已出料架中,可以直接出
//如果料架<2,且当前任务属于已出工单,可以直接出
//循环查找,当前任务不满足时查找下一个任务
String shelf = MicronDataCache.getShelfType(queueTask);
if (shelfType.size() < 2 || shelfType.contains(shelf)) {
if (shelfType.equals("S007")||shelfType.size() < 2 || shelfType.contains(shelf)) {
//料架正确,工单为空,返回
if (ObjectUtil.isEmpty(queueTask.getSourceId())) {
outTask = queueTask;
......
......@@ -82,6 +82,12 @@ public class ThirdBoxHandler extends BaseDeviceHandler{
if (dataCache.getCache(Constants.CACHE_StopOut)) {
return statusBean;
}
//如果当前有barcode,暂时不发出库任务
String sBarcode=statusBean.getBarcode();
if (ObjectUtil.isNotEmpty(sBarcode)) {
return statusBean;
}
String cid = statusBean.getCid();
// 任务根据时间排序。查找当前正在出的工单和料架 (入库任务不计算)
List<DataLog> allTasks=taskService.getAllTasks();
......@@ -97,8 +103,11 @@ public class ThirdBoxHandler extends BaseDeviceHandler{
if(task.isCheckOutTask()&&task.isWait()){
continue;
}
String shelf= MicronDataCache.getShelfType(task);
if(!shelfType.contains(shelf)){
String shelf= MicronDataCache.getShelfType(task);
if(shelfType.equals("S007")){
//reel料盘一直可以出库
}
else if(!shelfType.contains(shelf)){
shelfType.add(shelf);
}
if(ObjectUtil.isNotEmpty(task.getSourceId())&&(!sourceIds.contains(task.getSourceId()))){
......@@ -140,11 +149,12 @@ public class ThirdBoxHandler extends BaseDeviceHandler{
}
//如果料架>=2,当前任务的料架在已出料架中,可以直接出
//reel可以一直出,不需要判断
// 如果料架>=2,当前任务的料架在已出料架中,可以直接出
//如果料架<2,且当前任务属于已出工单,可以直接出
//循环查找,当前任务不满足时查找下一个任务
String shelf = MicronDataCache.getShelfType(queueTask);
if (shelfType.size() < 2 || shelfType.contains(shelf)) {
if (shelfType.equals("S007")||shelfType.size() < 2 || shelfType.contains(shelf)) {
//料架正确,工单为空,返回
if (ObjectUtil.isEmpty(queueTask.getSourceId())) {
outTask = queueTask;
......
......@@ -214,54 +214,63 @@ public class DefaultOrderFileListener implements IOrderFileListener {
List<Map<Integer, String>> data= ExcelReader.noModelRead(fileURL,headRowNumber);
if(data!=null&&data.size()>=2){
if(data!=null&&data.size()>=2) {
Map<Integer, String> headerData=data.get(0);
Map<String,Integer> headerMap=new HashMap<>();
Map<Integer, String> headerData = data.get(0);
Map<String, Integer> headerMap = new HashMap<>();
for (Integer key :
headerData.keySet()) {
if(ObjectUtil.isEmpty(key)){
if (ObjectUtil.isEmpty(key)) {
continue;
}
String v=headerData.get(key);
headerMap.put(v,key);
}
String v = headerData.get(key);
headerMap.put(v, key);
}
OrderSetting orderSetting = dataCache.getOrderSetting();
int partNumberIndex = headerMap.getOrDefault( orderSetting.getPn(),-1);
int riIndex = headerMap.getOrDefault( orderSetting.getRi(),-1);
if(partNumberIndex==-1&&riIndex==-1){
if(headRowNumber<=1){
log.error("文件["+fileName+"],未找到列PN或RI,当前headRowNumber=["+headRowNumber+"],设置headRowNumber=3重新读取");
return readExcelFile(fileName,fileURL,3);
}
else {
log.error("文件["+fileName+"],未找到列PN或RI,当前headRowNumber=["+headRowNumber+"],读取文件失败,返回null");
int partNumberIndex = headerMap.getOrDefault(orderSetting.getPn(), -1);
int riIndex = headerMap.getOrDefault(orderSetting.getRi(), -1);
int mpnIndex = headerMap.getOrDefault(orderSetting.getMpn(), -1);
if (partNumberIndex == -1 && riIndex == -1 && mpnIndex == -1) {
if (headRowNumber <= 1) {
log.error("文件[" + fileName + "],未找到列PN或RI或MPN,当前headRowNumber=[" + headRowNumber + "],设置headRowNumber=3重新读取");
return readExcelFile(fileName, fileURL, 3);
} else {
log.error("文件[" + fileName + "],未找到列PN或RI或MPN,当前headRowNumber=[" + headRowNumber + "],读取文件失败,返回null");
return null;
}
}
int qtyIndex = headerMap.getOrDefault( orderSetting.getQty(),-1);
int feederIndex = headerMap.getOrDefault( orderSetting.getFeeder(),-1);
int soIndex = headerMap.getOrDefault( orderSetting.getSo(),-1);
int numIndex = headerMap.getOrDefault( orderSetting.getNum(),-1);
int mpnIndex = headerMap.getOrDefault( orderSetting.getMpn(),-1);
for(int i=1;i<data.size();i++){
Map<Integer, String> lineValues = data.get(i);
int qtyIndex = headerMap.getOrDefault(orderSetting.getQty(), -1);
int feederIndex = headerMap.getOrDefault(orderSetting.getFeeder(), -1);
int soIndex = headerMap.getOrDefault(orderSetting.getSo(), -1);
int numIndex = headerMap.getOrDefault(orderSetting.getNum(), -1);
for (int i = 1; i < data.size(); i++) {
Map<Integer, String> lineValues = data.get(i);
String partNumber = lineValues.get(partNumberIndex);
String ri="";
String mpn="";
if(riIndex!=-1){
ri=lineValues.get(riIndex);
String ri = "";
String mpn = "";
if (riIndex != -1) {
ri = lineValues.get(riIndex);
}
if (mpnIndex!=-1){
mpn=lineValues.get(mpnIndex);
if (mpnIndex != -1) {
mpn = lineValues.get(mpnIndex);
}
if (partNumber.isEmpty()&&ri.isEmpty()&&mpn.isEmpty()) {
if (partNumber == null) {
partNumber = "";
}
if (ri == null) {
ri = "";
}
if (mpn == null) {
mpn = "";
}
if (ObjectUtil.isEmpty(partNumber) && ObjectUtil.isEmpty(ri) && ObjectUtil.isEmpty(mpn)) {
log.warn("行[partNumber=" + partNumber + "]中PN和RI,MPN都 为空,此行忽略");
} else {
int num = 1;
if (qtyIndex != -1) {
String numStr = lineValues.get(qtyIndex) ;
String numStr = lineValues.get(qtyIndex);
if (Strings.isNotBlank(numStr)) {
try {
num = Integer.valueOf(numStr);
......@@ -274,19 +283,19 @@ public class DefaultOrderFileListener implements IOrderFileListener {
if (feederIndex != -1) {
feeder = lineValues.get(feederIndex);
}
String so=fileName;
String so = fileName;
if(soIndex!=-1){
so=lineValues.get(soIndex);
if (soIndex != -1) {
so = lineValues.get(soIndex);
}
if(!ObjectUtil.isNotEmpty(so)){
so=fileName;
if (!ObjectUtil.isNotEmpty(so)) {
so = fileName;
}
int count=1;
if (numIndex != -1){
int count = 1;
if (numIndex != -1) {
String countStr = lineValues.get(numIndex);
if (StringUtils.isNotBlank(countStr)){
if (StringUtils.isNotBlank(countStr)) {
try {
count = Integer.valueOf(countStr);
} catch (Exception e) {
......@@ -297,7 +306,7 @@ public class DefaultOrderFileListener implements IOrderFileListener {
LiteOrderItem item = new LiteOrderItem();
item.setPn(partNumber);
item.setNeedReelCount(count);
if(partNumber.isEmpty()){
if (partNumber.isEmpty()) {
item.setNeedReelCount(1);
}
item.setNeedNum(num);
......@@ -305,8 +314,8 @@ public class DefaultOrderFileListener implements IOrderFileListener {
item.setFeederInfo(feeder);
item.setRi(ri);
item.setMpn(mpn);
if(!itemMap.containsKey(so)){
itemMap.put(so,new ArrayList<LiteOrderItem>());
if (!itemMap.containsKey(so)) {
itemMap.put(so, new ArrayList<LiteOrderItem>());
}
itemMap.get(so).add(item);
}
......@@ -316,7 +325,7 @@ public class DefaultOrderFileListener implements IOrderFileListener {
return itemMap;
} catch (Exception ex) {
log.error("解析上传的工单出错:" + ex.toString());
log.error("解析上传的工单出错:" + ex.getMessage());
} finally {
}
......
......@@ -59,7 +59,7 @@ public class DataLogManagerImpl implements IDataLogManager {
@Override
public List<DataLog> findUnFinishedTasks( ) {
Criteria c = Criteria.where("status").nin(OP_STATUS.FINISHED.name(),OP_STATUS.CANCEL.name());
//只查找近12个小时未完成的任务
//只查找近48个小时未完成的任务
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY,-48);
c.and("updateDate").gte(calendar.getTime());
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!