Commit ee164710 LN

增加dispatch接口

1 个父辈 6dbd7ddf
......@@ -14,6 +14,8 @@ import com.neotel.smfcore.core.system.bean.OrderSetting;
import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings;
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.stereotype.Service;
import java.io.File;
......@@ -100,6 +102,82 @@ public class DefaultOrderFileListener implements IOrderFileListener {
}
@Override
public boolean handleOrderFile(File orderFile, String mode, String reason) {
String fileName = orderFile.getName();
//String backupFileName = fileName +"_" + System.currentTimeMillis();
//看数据库是否已有此工单
// if(!fileName.endsWith(".process") && fileName.endsWith("_result.txt")){
//
// }
if (isFileType(fileName, "csv") || isFileType(fileName, "xlsx")) {
LiteOrder fileNameOrder = liteOrderManager.findBySource(fileName);
if (fileNameOrder == null) {
try {
Map<String, List<LiteOrderItem>> itemMap = null;
if (isFileType(fileName, "csv")) {
itemMap = readCsvFile(fileName, orderFile.getAbsolutePath());
} else if (isFileType(fileName, "xlsx")) {
itemMap = readExcelFile(fileName, orderFile.getAbsolutePath());
}
//新增为一个工单
String orderName = reason;
if(ObjectUtil.isEmpty(reason)) {
List<LiteOrder> orders = liteOrderManager.findByQuery(new Query(Criteria.where("mode").is(mode)));
orderName = mode + (orders.size() + 1);
}
LiteOrder dbOrder = liteOrderManager.findByOrderNo(orderName);
if (dbOrder != null) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
//把名字改为带时间的
String newOrderNo = orderName + "-" + format.format(new Date());
dbOrder = liteOrderManager.findByOrderNo(newOrderNo);
if (dbOrder == null) {
} else {
log.info("watchOrderDir,mode=[" + mode + "],reason=[" + reason + "]:数据库中已存在工单号为[" + orderName + "],忽略文件:" + orderFile.getAbsolutePath());
//resultFile = new File(localDir+File.separator + "error",backupFileName);
return false;
}
}
List<LiteOrderItem> allItems = new ArrayList<>();
if (itemMap != null && itemMap.size() > 0) {
for (String so : itemMap.keySet()) {
List<LiteOrderItem> liteOrderItems = itemMap.get(so);
if (liteOrderItems.size() <= 0) {
continue;
}
allItems.addAll(liteOrderItems);
}
}
if (allItems.size() <= 0) {
return false;
}
LiteOrder liteOrder = new LiteOrder(orderName, allItems);
liteOrder.setMode(mode);
log.info("watchOrderDir,mode=[" + mode + "],reason=[" + reason + "]:新增加订单:" + liteOrder.getOrderNo() + ",共" + allItems.size() + "条工单详情");
liteOrder = liteOrderManager.createWithItems(liteOrder);
liteOrderCache.addOrderToMap(liteOrder);
return true;
} catch (Exception e) {
log.error("read order from file [" + orderFile.getAbsolutePath() + "] :", e);
}
}
}
return false;
}
public Map<String , List<LiteOrderItem>> readCsvFile(String fileName, String fileURL) {
CsvReader csvRead = null;
try {
......
......@@ -9,4 +9,6 @@ public interface IOrderFileListener {
boolean handleOrderFile(File orderFile);
boolean handleOrderFile(File orderFile,String mode,String reason);
}
......@@ -126,7 +126,22 @@ public class OrderFileWatch {
return false;
}
/**
* 解析工单文件
* @param orderFile
* @return
*/
public boolean handleOrderFile(File orderFile,String mode,String reason){
log.info("开始处理Order文件:" + orderFile.getAbsolutePath());
for (IOrderFileListener orderFileListener : orderFileListenerList) {
boolean result = orderFileListener.handleOrderFile(orderFile,mode,reason);
if(result){
return true;
}
}
return false;
}
private String getLocalDir(String orderDir){
//String[] fileTypes=new String[]{"csv","xml","txt"};
......
package com.neotel.smfcore.custom.micron1053.task.bean;
import com.neotel.smfcore.common.base.BaseMapper;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.custom.micron1053.task.bean.dto.DispatchItemDto;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface DispatchItemMapper extends BaseMapper<DispatchItemDto, LiteOrderItem> {
}
package com.neotel.smfcore.custom.micron1053.task.bean.dto;
import io.swagger.annotations.ApiModelProperty;
import java.util.HashMap;
import java.util.Map;
public class DispatchItemDto {
@ApiModelProperty(value = "ID")
private String id;
@ApiModelProperty("物料编号")
private String pn;
@ApiModelProperty("唯一码")
private String ri;
@ApiModelProperty("需求数量")
private int needNum = 0;
@ApiModelProperty("需求料盘数")
private int needReelCount = 0;
@ApiModelProperty("已出数量")
private int outNum = 0;
@ApiModelProperty("已出盘数")
private int outReelCount = 0;
@ApiModelProperty("订单信息")
private String orderNo = "";
@ApiModelProperty("站位信息")
private String feederInfo = "";
/**
* 台车号
*/
@ApiModelProperty("台车号")
private String tableNo = "";
/**
* 面别
*/
@ApiModelProperty("面别")
private String side = "";
@ApiModelProperty("制造商物料编号")
private String mpn = "";
/**
* 库存数量
*/
private int inventoryQty = 0;
/**
* 库存盘数
*/
private int inventoryReelCount = 0;
@ApiModelProperty("自定义的附加字段,key=字段名,value=值")
public Map<String,String> appendData = new HashMap<>();
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!