Commit 89fad21a LN

上传功能bug修改

1 个父辈 fd909f20
package com.neotel.smfcore.common.utils; package com.neotel.smfcore.common.utils;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
...@@ -57,6 +58,9 @@ public class DateUtil { ...@@ -57,6 +58,9 @@ public class DateUtil {
} }
public static String toDateString(Date aDate, String aMask) { public static String toDateString(Date aDate, String aMask) {
if(ObjectUtil.isEmpty(aMask)){
aMask="yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat df = null; SimpleDateFormat df = null;
String returnValue = ""; String returnValue = "";
...@@ -76,6 +80,9 @@ public class DateUtil { ...@@ -76,6 +80,9 @@ public class DateUtil {
public static Date toDate(String strDate,String aMask) public static Date toDate(String strDate,String aMask)
throws ParseException { throws ParseException {
if(ObjectUtil.isEmpty(aMask)){
aMask="yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat df; SimpleDateFormat df;
Date date; Date date;
df = new SimpleDateFormat(aMask); df = new SimpleDateFormat(aMask);
......
...@@ -182,36 +182,42 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -182,36 +182,42 @@ public class NLPShelfHandler extends BaseDeviceHandler{
handleMsg(statusBean); handleMsg(statusBean);
statusBean = saveAlarmAndHumidity(statusBean); statusBean = saveAlarmAndHumidity(statusBean);
OrderSetting orderSetting = dataCache.getOrderSetting(); // OrderSetting orderSetting = dataCache.getOrderSetting();
boolean openZhiYin = orderSetting.getShelfLightType().equals(1); // boolean openZhiYin = orderSetting.getShelfLightType().equals(1);
Map<String, List<DataLog>> outMap = new HashMap<>(); // Map<String, List<DataLog>> outMap = new HashMap<>();
//亮灯 //亮灯
Collection<DataLog> queueTasks = taskService.getQueueTasks(statusBean.getCid()); Collection<DataLog> queueTasks = taskService.getQueueTasks(statusBean.getCid());
for (DataLog queueTask : queueTasks) { for (DataLog queueTask : queueTasks) {
if(queueTask.isWait()){ if(queueTask.isWait()) {
queueTask.setStatus(OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(queueTask); ORDER_COLOR color = null;
String rgb = queueTask.getLightColor(); if (queueTask.isPutInTask()) {
ORDER_COLOR color = ORDER_COLOR.fromRgb(rgb); //入库默认深绿色 DARKGREEN
if(color == null){
if(queueTask.isPutInTask()){
color = ORDER_COLOR.DARKGREEN; color = ORDER_COLOR.DARKGREEN;
}else{ } else {
if (openZhiYin && ObjectUtil.isNotEmpty(queueTask.getSourceId())) { if (ObjectUtil.isNotEmpty(queueTask.getSourceId())) {
List<DataLog> dataLogList = outMap.get(queueTask.getSourceId()); if (queueTask.isInOperate()) {
if (dataLogList == null) { //首盘料 颜色:CYAN
dataLogList = new ArrayList<>(); //截料料 颜色:PURPLE
//普通工单 颜色:SKYBLUE
String rgb = queueTask.getLightColor();
color = ORDER_COLOR.fromRgb(rgb);
} else {
continue;
} }
dataLogList.add(queueTask);
outMap.put(queueTask.getSourceId(), dataLogList);
} else { } else {
//普通出库蓝色 BLUE
color = ORDER_COLOR.BLUE; color = ORDER_COLOR.BLUE;
} }
} }
if (color != null) {
queueTask.setStatus(OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(queueTask);
statusBean.addData("open", queueTask.getPosName() + "=" + color.name());
log.info("库位[" + queueTask.getPosName() + "]+亮灯:" + color.name());
} }
statusBean.addData("open",queueTask.getPosName()+"="+color.name());
log.info("库位["+queueTask.getPosName()+"]+亮灯:" + color.name());
} }
// else if(queueTask.isCancel()){ // else if(queueTask.isCancel()){
// if(queueTask.isCheckOutTask()){ // if(queueTask.isCheckOutTask()){
...@@ -224,11 +230,6 @@ public class NLPShelfHandler extends BaseDeviceHandler{ ...@@ -224,11 +230,6 @@ public class NLPShelfHandler extends BaseDeviceHandler{
// } // }
} }
List<DataLog> dataLogs = getLightGuideTask(outMap);
for (DataLog task :
dataLogs) {
statusBean.addData("open", task.getPosName() + "=" + ORDER_COLOR.fromRgb(task.getLightColor()).name());
}
return statusBean; return statusBean;
} }
......
...@@ -394,48 +394,6 @@ public class LiteOrderCache implements ITaskListener { ...@@ -394,48 +394,6 @@ public class LiteOrderCache implements ITaskListener {
@Autowired @Autowired
private SafetyInventoryMapper safetyInventoryMapper; private SafetyInventoryMapper safetyInventoryMapper;
// /**
// * 获取需要截料的物料
// * @return key=需要截料的物料编号
// */
// private Map<String,SafetyInventoryDto> getSafetyInventoryMap( ) {
// List<Component> componentList = componentManager.findByQuery(new Query());
// Map<String, InventoryItem> inventoryItemMap = dataCache.getAllInventory(null, "");
//
//
// Map<String, SafetyInventoryDto> resultsMap = new HashMap<>();
// //循环PN
// for (Component com :
// componentList) {
// InventoryItem item = inventoryItemMap.get(com.getPartNumber());
// SafetyInventoryDto dto = new SafetyInventoryDto();
// if (item == null) {
// } else {
// dto = safetyInventoryMapper.toDto(item);
// }
// dto.setPartNumber(com.getPartNumber());
// dto.setAmount(com.getAmount());
// dto.setSupplementReel(0);
// //截料: 库存物料的盘数≤设定值 ,设定值使用安全库存
// if (dto.getStockCount() < com.getSafetyStoreNum()) {
//
// if (dto.getStockReel() > 0 && dto.getStockCount() > 0) {
//
// int reelCount = dto.getStockCount() / dto.getStockReel();
// //补充盘数
// int needReel = (com.getMinStoreNum() - dto.getStockCount()) / reelCount;
// dto.setSupplementReel(needReel);
// } else {
// int needReel = com.getMinStoreNum() / dto.getAmount();
// dto.setSupplementReel(needReel);
// }
// }
//
// resultsMap.put(com.getPartNumber(), dto);
// }
// return resultsMap;
// }
/** /**
* 锁定物料 * 锁定物料
*/ */
...@@ -524,7 +482,6 @@ public class LiteOrderCache implements ITaskListener { ...@@ -524,7 +482,6 @@ public class LiteOrderCache implements ITaskListener {
boolean isGuizhong = orderItem.getOverFlag()==1; boolean isGuizhong = orderItem.getOverFlag()==1;
//判断是否需要截料 //判断是否需要截料
boolean needJieliao =false; boolean needJieliao =false;
// boolean needJieliao = jieliaoMap.containsKey(pn);
if (needNum <= 0) { if (needNum <= 0) {
continue; continue;
...@@ -544,7 +501,7 @@ public class LiteOrderCache implements ITaskListener { ...@@ -544,7 +501,7 @@ public class LiteOrderCache implements ITaskListener {
Component component = componentManager.findOneByPN(pn); Component component = componentManager.findOneByPN(pn);
if(component==null){ if(component==null){
log.info("工单[" + cacheOrder.getOrderNo() + "] 物料号[" + pn + "] ,需求数量[" + orderItem.getWemng() + "], 未找到元器件信息, 缺料 "); log.info("工单[" + cacheOrder.getOrderNo() + "] 物料号[" + pn + "] ,需求数量[" + orderItem.getWemng() + "], 未找到元器件信息, 缺料 ");
return "smfcore.order.out.short"; return materialShortPro(userName,cacheOrder);
} }
//判断库存 //判断库存
if(storageNum<component.getSafetyStoreNum()){ if(storageNum<component.getSafetyStoreNum()){
...@@ -554,7 +511,7 @@ public class LiteOrderCache implements ITaskListener { ...@@ -554,7 +511,7 @@ public class LiteOrderCache implements ITaskListener {
if(storageNum<orderItem.getQty()){ if(storageNum<orderItem.getQty()){
//不满足实际需求,不发,报缺料 //不满足实际需求,不发,报缺料
log.info("工单[" + cacheOrder.getOrderNo() + "] 物料号[" + pn + "] ,需求数量[" + orderItem.getWemng() + "], 库存总数量[" + storageNum + "], 不满足实际需求,缺料 "); log.info("工单[" + cacheOrder.getOrderNo() + "] 物料号[" + pn + "] ,需求数量[" + orderItem.getWemng() + "], 库存总数量[" + storageNum + "], 不满足实际需求,缺料 ");
return "smfcore.order.out.short"; return materialShortPro(userName,cacheOrder);
} }
int wholeReelCount = 0; int wholeReelCount = 0;
...@@ -672,7 +629,7 @@ public class LiteOrderCache implements ITaskListener { ...@@ -672,7 +629,7 @@ public class LiteOrderCache implements ITaskListener {
if (outNum < orderItem.getQty()) { if (outNum < orderItem.getQty()) {
//不满足实际需求,不发,报缺料 //不满足实际需求,不发,报缺料
log.info("工单[" + cacheOrder.getOrderNo() + "] 物料号[" + pn + "] ,需求数量[" + orderItem.getWemng() + "], 库存可发数量[" + outNum + "], 不满足实际需求,缺料 "); log.info("工单[" + cacheOrder.getOrderNo() + "] 物料号[" + pn + "] ,需求数量[" + orderItem.getWemng() + "], 库存可发数量[" + outNum + "], 不满足实际需求,缺料 ");
return "smfcore.order.out.short"; return materialShortPro(userName,cacheOrder);
} }
} }
//可以出库 //可以出库
...@@ -756,6 +713,21 @@ public class LiteOrderCache implements ITaskListener { ...@@ -756,6 +713,21 @@ public class LiteOrderCache implements ITaskListener {
return ""; return "";
} }
public String materialShortPro(String userName, LiteOrder liteOrder){
//挑料时缺料,直接 关闭工单
log.info("工单["+liteOrder.getOrderNo()+"]缺料,直接关闭工单");
liteOrder.setOperateUser(userName);
liteOrder.setStatus(LITEORDER_STATUS.CLOSED);
liteOrder.setClosed(true);
liteOrderManager.save(liteOrder);
liteOrderMap.put(liteOrder.getOrderNo(), liteOrder);
return "smfcore.order.out.short";
}
// /** // /**
// * 锁定物料 // * 锁定物料
// */ // */
......
...@@ -23,6 +23,7 @@ import com.neotel.smfcore.core.system.rest.bean.dto.TaskDto; ...@@ -23,6 +23,7 @@ import com.neotel.smfcore.core.system.rest.bean.dto.TaskDto;
import com.neotel.smfcore.core.system.rest.bean.mapstruct.TaskMapper; import com.neotel.smfcore.core.system.rest.bean.mapstruct.TaskMapper;
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.TaskService; import com.neotel.smfcore.core.system.util.TaskService;
import com.neotel.smfcore.hikvision.bean.HikOutInfo;
import com.neotel.smfcore.security.annotation.AnonymousAccess; import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.bean.FileProperties; import com.neotel.smfcore.security.bean.FileProperties;
import com.neotel.smfcore.security.service.manager.IGroupManager; import com.neotel.smfcore.security.service.manager.IGroupManager;
...@@ -174,38 +175,50 @@ public class OrderController { ...@@ -174,38 +175,50 @@ public class OrderController {
} }
File folder = new File(properties.getPath(), "pos"); File folder = new File(properties.getPath(), "pos");
File localFile = FileUtil.upload(orderFile, folder.getAbsolutePath()); File localFile = FileUtil.upload(orderFile, folder.getAbsolutePath());
Map<String, List<LiteOrderItem>> itemMap = orderFileWatch.readCsvFile(fileName, localFile.getAbsolutePath()); // Map<String, List<LiteOrderItem>> itemMap = orderFileWatch.readCsvFile(fileName, localFile.getAbsolutePath());
List<HikOutInfo> itemList = orderFileWatch.readCsvFile(fileName, localFile.getAbsolutePath());
if (itemMap == null || itemMap.size() <= 0) { if (itemList == null || itemList.size() <= 0) {
throw new ValidateException("smfcore.fileError", "文件解析失败"); throw new ValidateException("smfcore.fileError", "文件解析失败");
} }
for (String so : itemMap.keySet() for (HikOutInfo outInfo :
) { itemList) {
List<LiteOrderItem> liteOrderItems = itemMap.get(so); //查找工单是否存在
if (liteOrderItems.size() <= 0) { String orderNo = outInfo.getJobNo();
continue; if (ObjectUtil.isNotEmpty(outInfo.getReplenishmentNo())) {
orderNo += "-" + outInfo.getReplenishmentNo();
} }
LiteOrder liteOrder = new LiteOrder(so, liteOrderItems); LiteOrder order = liteOrderCache.findOrderByNo(orderNo);
liteOrder.setSource(localFile.getName()); if (order == null) {
LiteOrder dbOrder = liteOrderManager.findByOrderNo(liteOrder.getOrderNo()); //创建工单
if (dbOrder != null) { order = new LiteOrder();
order.setOrderNo(orderNo);
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); order.UpdateOutInfo(outInfo);
//把名字改为带时间的
String newOrderNo = liteOrder.getOrderNo() + "-" + format.format(new Date()); LiteOrderItem item = outInfo.crateOrderItem(orderNo);
dbOrder = liteOrderManager.findByOrderNo(newOrderNo);
if (dbOrder == null) { order.addOrderItems(item);
liteOrder.setOrderNo(newOrderNo);
liteOrderManager.createWithItems(order);
liteOrderCache.addOrderToMap(order);
log.info("新建工单[" + order.getOrderNo() + "]工单详情"+order.getOrderItems().size()+"条" );
} else { } else {
log.info("数据库中已存在工单号为[" + liteOrder.getOrderNo() + "],忽略文件:" + localFile.getAbsolutePath()); if (order.getStatus() > LITEORDER_STATUS.NEW) {
return ResultBean.newErrorResult(-1, "smfcore.order.ameExists", "工单名称[{0}]已存在", new String[]{liteOrder.getOrderNo()}); log.info("工单[" + orderNo + "]已存在,且状态为[" + order.getStatus() + "],不能修改工单信息:" + outInfo.toString());
continue;
} }
order.UpdateOutInfo(outInfo);
LiteOrderItem item = outInfo.crateOrderItem(orderNo);
order = liteOrderCache.updateOrderItem(order, item);
liteOrderCache.addOrderToMap(order);
log.info("更新工单[" + order.getOrderNo() + "]物料号["+item.getMaterialNo()+"]" );
} }
log.info("新增加订单:" + liteOrder.getOrderNo() + ",共" + liteOrderItems.size() + "条工单详情");
liteOrder = liteOrderManager.createWithItems(liteOrder);
liteOrderCache.addOrderToMap(liteOrder);
} }
return ResultBean.newOkResult("smfcore.order.uploadOK", "工单上传成功", ""); return ResultBean.newOkResult("smfcore.order.uploadOK", "工单上传成功", "");
...@@ -381,7 +394,6 @@ public class OrderController { ...@@ -381,7 +394,6 @@ public class OrderController {
return ResultBean.newOkResult("smfcore.order.nextOk", "成功切换到下一个工单", ""); return ResultBean.newOkResult("smfcore.order.nextOk", "成功切换到下一个工单", "");
} }
private List<LiteOrder> getExecuteOrders(User user) { private List<LiteOrder> getExecuteOrders(User user) {
//查询正在执行的工单列表 //查询正在执行的工单列表
Query query = new Query(Criteria.where("status").ne(LITEORDER_STATUS.CLOSED).ne(LITEORDER_STATUS.NEW)); Query query = new Query(Criteria.where("status").ne(LITEORDER_STATUS.CLOSED).ne(LITEORDER_STATUS.NEW));
......
...@@ -10,6 +10,7 @@ import org.springframework.data.annotation.Transient; ...@@ -10,6 +10,7 @@ import org.springframework.data.annotation.Transient;
import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -261,6 +262,7 @@ public class LiteOrder extends BasePo implements Serializable { ...@@ -261,6 +262,7 @@ public class LiteOrder extends BasePo implements Serializable {
this.setUpdateDate(new Date()); this.setUpdateDate(new Date());
this.setEndDate(outInfo.getEndD()); this.setEndDate(outInfo.getEndD());
this.setWemng(outInfo.getWemng()); this.setWemng(outInfo.getWemng());
orderItems=new ArrayList<>();
} }
public void addOrderItems(LiteOrderItem item){ public void addOrderItems(LiteOrderItem item){
......
...@@ -10,6 +10,7 @@ import com.neotel.smfcore.core.order.service.manager.ILiteOrderManager; ...@@ -10,6 +10,7 @@ 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.order.service.po.LiteOrderItem;
import com.neotel.smfcore.core.system.bean.OrderSetting; import com.neotel.smfcore.core.system.bean.OrderSetting;
import com.neotel.smfcore.hikvision.bean.HikOutInfo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.logging.log4j.util.Strings; import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -58,94 +59,94 @@ public class OrderFileWatch { ...@@ -58,94 +59,94 @@ public class OrderFileWatch {
} }
private synchronized void watchOrderDir(){ private synchronized void watchOrderDir(){
try{ // try{
String dir = dataCache.getOrderSetting().getOrderDir() ; // String dir = dataCache.getOrderSetting().getOrderDir() ;
if(Strings.isNotBlank(dir)){ // if(Strings.isNotBlank(dir)){
dir = dir.replaceAll("\\\\", "/"); // dir = dir.replaceAll("\\\\", "/");
}else{ // }else{
return; // return;
} // }
final String orderDir = dir; // final String orderDir = dir;
final String localDir = getLocalDir(orderDir); // final String localDir = getLocalDir(orderDir);
//orderFileDir = "/Volumes/SSD/code"; // //orderFileDir = "/Volumes/SSD/code";
if(Strings.isNotBlank(localDir)){ // if(Strings.isNotBlank(localDir)){
File orderFolder = new File(localDir); // File orderFolder = new File(localDir);
if(orderFolder.exists() && orderFolder.isDirectory()){ // if(orderFolder.exists() && orderFolder.isDirectory()){
for (File file : orderFolder.listFiles()) { // for (File file : orderFolder.listFiles()) {
if(file.isDirectory()){ // if(file.isDirectory()){
continue; // continue;
} // }
File resultFile = null; // File resultFile = null;
String fileName = file.getName(); // String fileName = file.getName();
String backupFileName = fileName +"_" + System.currentTimeMillis(); // String backupFileName = fileName +"_" + System.currentTimeMillis();
//看数据库是否已有此工单 // //看数据库是否已有此工单
if(fileName.endsWith(".process") || fileName.endsWith("_result.txt")){ // if(fileName.endsWith(".process") || fileName.endsWith("_result.txt")){
continue; // continue;
} // }
if(isOrderFileType(fileName)){ // if(isOrderFileType(fileName)){
LiteOrder fileNameOrder = liteOrderManager.findBySource(fileName); // LiteOrder fileNameOrder = liteOrderManager.findBySource(fileName);
if(fileNameOrder == null){ // if(fileNameOrder == null){
log.info("watchOrderDir:监控到新的Order文件,准备处理:" + file.getAbsolutePath()); // log.info("watchOrderDir:监控到新的Order文件,准备处理:" + file.getAbsolutePath());
try{ // try{
Map<String, List<LiteOrderItem>> itemMap = readCsvFile(fileName,file.getAbsolutePath()); // Map<String, List<LiteOrderItem>> itemMap = readCsvFile(fileName,file.getAbsolutePath());
//
if (itemMap == null || itemMap.size() <= 0) { // if (itemMap == null || itemMap.size() <= 0) {
log.error("watchOrderDir: 文件["+fileName+"]解析失败"); // log.error("watchOrderDir: 文件["+fileName+"]解析失败");
continue; // continue;
} // }
//
for (String so:itemMap.keySet() // for (String so:itemMap.keySet()
) { // ) {
//
List<LiteOrderItem> liteOrderItems = itemMap.get(so); // List<LiteOrderItem> liteOrderItems = itemMap.get(so);
if (liteOrderItems.size() <= 0) { // if (liteOrderItems.size() <= 0) {
continue; // continue;
} // }
//
LiteOrder liteOrder = new LiteOrder(so, liteOrderItems); // LiteOrder liteOrder = new LiteOrder(so, liteOrderItems);
liteOrder.setSource(fileName); // liteOrder.setSource(fileName);
LiteOrder dbOrder = liteOrderManager.findByOrderNo(liteOrder.getOrderNo()); // LiteOrder dbOrder = liteOrderManager.findByOrderNo(liteOrder.getOrderNo());
if (dbOrder != null) { // if (dbOrder != null) {
//
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss"); // SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
//把名字改为带时间的 // //把名字改为带时间的
String newOrderNo = liteOrder.getOrderNo() + "-" + format.format(new Date()); // String newOrderNo = liteOrder.getOrderNo() + "-" + format.format(new Date());
dbOrder = liteOrderManager.findByOrderNo(newOrderNo); // dbOrder = liteOrderManager.findByOrderNo(newOrderNo);
if (dbOrder == null) { // if (dbOrder == null) {
liteOrder.setOrderNo(newOrderNo); // liteOrder.setOrderNo(newOrderNo);
} else { // } else {
log.info("watchOrderDir:数据库中已存在工单号为[" + liteOrder.getOrderNo() + "],忽略文件:" + file.getAbsolutePath()); // log.info("watchOrderDir:数据库中已存在工单号为[" + liteOrder.getOrderNo() + "],忽略文件:" + file.getAbsolutePath());
resultFile = new File(localDir+File.separator + "error",backupFileName); // resultFile = new File(localDir+File.separator + "error",backupFileName);
continue; // continue;
} // }
} // }
log.info("watchOrderDir:新增加订单:" + liteOrder.getOrderNo() + ",共" + liteOrderItems.size() + "条工单详情"); // log.info("watchOrderDir:新增加订单:" + liteOrder.getOrderNo() + ",共" + liteOrderItems.size() + "条工单详情");
liteOrder = liteOrderManager.createWithItems(liteOrder); // liteOrder = liteOrderManager.createWithItems(liteOrder);
liteOrderCache.addOrderToMap(liteOrder); // liteOrderCache.addOrderToMap(liteOrder);
//
resultFile = new File(localDir+File.separator + "sucess",backupFileName); // resultFile = new File(localDir+File.separator + "sucess",backupFileName);
} // }
//
}catch (Exception e){ // }catch (Exception e){
log.error("read order from file ["+file.getAbsolutePath()+"] :",e); // log.error("read order from file ["+file.getAbsolutePath()+"] :",e);
resultFile = new File(localDir+File.separator + "error",backupFileName); // resultFile = new File(localDir+File.separator + "error",backupFileName);
} // }
} // }
//
resultFile = new File(localDir+File.separator + "sucess",backupFileName); // resultFile = new File(localDir+File.separator + "sucess",backupFileName);
} // }
//
if(resultFile != null){ // if(resultFile != null){
resultFile.getParentFile().mkdirs(); // resultFile.getParentFile().mkdirs();
file.renameTo(resultFile); // file.renameTo(resultFile);
} // }
} // }
} // }
//
} // }
}catch (Exception e){ // }catch (Exception e){
log.error("订单监控出错",e); // log.error("订单监控出错",e);
} // }
} }
private boolean isOrderFileType(String smbFile){ private boolean isOrderFileType(String smbFile){
...@@ -210,22 +211,121 @@ public class OrderFileWatch { ...@@ -210,22 +211,121 @@ public class OrderFileWatch {
} }
//
public Map<String ,List<LiteOrderItem>> readCsvFile(String fileName, String fileURL) { // public Map<String ,List<LiteOrderItem>> readCsvFile(String fileName, String fileURL) {
// try {
// fileName=fileName.replace(".csv","");
// log.info("开始更解析上传的工单");
// Map<String ,List<LiteOrderItem>> itemMap=new HashMap<>();
// List<LiteOrderItem> items = Lists.newArrayList();
//
// OrderSetting orderSetting = dataCache.getOrderSetting();
//
// CsvReader csvRead = CsvReader.newReader(fileURL,"PN", orderSetting.getPn());
// int partNumberIndex = csvRead.getIndex("PN", orderSetting.getPn());
// int qtyIndex = csvRead.getIndex("QTY", orderSetting.getQty());
// int feederIndex = csvRead.getIndex("FEEDER", orderSetting.getFeeder());
// int riIndex = csvRead.getIndex("RI",orderSetting.getRi());
// int soIndex = csvRead.getIndex("SO", orderSetting.getSo());
//
// int row = 1;
// int newRowCount = 0;
// int updateRowCount = 0;
//
// while (csvRead.readRecord()) {
// row++;
// String[] lineValues = csvRead.getValues();
// String partNumber = lineValues[partNumberIndex];
// String ri="";
// if(riIndex!=-1){
// ri=lineValues[riIndex];
// }
// if (partNumber.isEmpty()&&ri.isEmpty()) {
// log.warn("行[partNumber=" + partNumber + "]中PN和RI都 为空,此行忽略");
// } else {
// int num = 1;
// if (qtyIndex != -1) {
// String numStr = lineValues[qtyIndex];
// if (Strings.isNotBlank(numStr)) {
// try {
// num = Integer.valueOf(numStr);
// } catch (Exception e) {
// log.error(partNumber + "的数量:" + numStr + " 不是数字,使用1");
// }
// }
// }
// String feeder = "";
// if (feederIndex != -1) {
// feeder = lineValues[feederIndex];
// }
// String so=fileName;
//
// if(soIndex!=-1){
// so=lineValues[soIndex];
// }
// if(!ObjectUtil.isNotEmpty(so)){
// so=fileName;
// }
// LiteOrderItem item = new LiteOrderItem();
// item.setMaterialNo(partNumber);
// if(partNumber.isEmpty()){
// item.setNeedReelCount(1);
// }
// item.setQty(num);
//
// item.setStation(feeder);
// item.setRi(ri);
// if(!itemMap.containsKey(so)){
// itemMap.put(so,new ArrayList<LiteOrderItem>());
// }
// itemMap.get(so).add(item);
//
//
// items.add(item);
// }
// }
// return itemMap;
// } catch (Exception ex) {
// log.error("解析上传的工单出错:" + ex.toString());
// }
// return null;
// }
public List<HikOutInfo> readCsvFile(String fileName, String fileURL) {
try { try {
fileName=fileName.replace(".csv",""); fileName = fileName.replace(".csv", "");
log.info("开始更解析上传的工单"); log.info("开始更解析上传的工单");
Map<String ,List<LiteOrderItem>> itemMap=new HashMap<>(); List<HikOutInfo> items = Lists.newArrayList();
List<LiteOrderItem> items = Lists.newArrayList();
OrderSetting orderSetting = dataCache.getOrderSetting(); OrderSetting orderSetting = dataCache.getOrderSetting();
CsvReader csvRead = CsvReader.newReader(fileURL,"PN", orderSetting.getPn()); // jobNo String 16 工单号/合单号
int partNumberIndex = csvRead.getIndex("PN", orderSetting.getPn()); // station String 32 站位号
int qtyIndex = csvRead.getIndex("QTY", orderSetting.getQty()); // baseCode String 16 基地编号
int feederIndex = csvRead.getIndex("FEEDER", orderSetting.getFeeder()); // lgort String 16 库位
int riIndex = csvRead.getIndex("RI",orderSetting.getRi()); // workLine String 16 产线
int soIndex = csvRead.getIndex("SO", orderSetting.getSo()); // startDate String 19 开工时间
// endDate String 19 完工时间
// materialNo String 9 物料号
// qty Integer 需求数量
// overFlag Integer 超发标识(1是不允许超发,0是允许超发)
// increment Integer 发料增量
// wemng Integer 排程数量
CsvReader csvRead = CsvReader.newReader(fileURL, "jobNo", "jobNo");
int jobNoIndex = csvRead.getIndex("jobNo", "jobNo");
int stationIndex = csvRead.getIndex("station", "station");
int baseCodeIndex = csvRead.getIndex("baseCode", "baseCode");
int lgortIndex = csvRead.getIndex("lgort", "lgort");
int workLineIndex = csvRead.getIndex("workLine", "workLine");
int startDateIndex = csvRead.getIndex("startDate", "startDate");
int endDateIndex = csvRead.getIndex("endDate", "endDate");
int materialNoIndex = csvRead.getIndex("materialNo", "materialNo");
int qtyIndex = csvRead.getIndex("qty", "qty");
int overFlagIndex = csvRead.getIndex("overFlag", "overFlag");
int incrementIndex = csvRead.getIndex("increment", "increment");
int wemngIndex = csvRead.getIndex("wemng", "wemng");
int row = 1; int row = 1;
int newRowCount = 0; int newRowCount = 0;
...@@ -234,56 +334,33 @@ public class OrderFileWatch { ...@@ -234,56 +334,33 @@ public class OrderFileWatch {
while (csvRead.readRecord()) { while (csvRead.readRecord()) {
row++; row++;
String[] lineValues = csvRead.getValues(); String[] lineValues = csvRead.getValues();
String partNumber = lineValues[partNumberIndex]; String jobNo = lineValues[jobNoIndex];
String ri=""; if (ObjectUtil.isEmpty(jobNo)) {
if(riIndex!=-1){ continue;
ri=lineValues[riIndex];
} }
if (partNumber.isEmpty()&&ri.isEmpty()) {
log.warn("行[partNumber=" + partNumber + "]中PN和RI都 为空,此行忽略");
} else {
int num = 1;
if (qtyIndex != -1) {
String numStr = lineValues[qtyIndex];
if (Strings.isNotBlank(numStr)) {
try { try {
num = Integer.valueOf(numStr); HikOutInfo item = new HikOutInfo();
} catch (Exception e) { item.setJobNo(lineValues[jobNoIndex]);
log.error(partNumber + "的数量:" + numStr + " 不是数字,使用1"); item.setStation(lineValues[stationIndex]);
} item.setBaseCode(lineValues[baseCodeIndex]);
} item.setLgort(lineValues[lgortIndex]);
} item.setWorkLine(lineValues[workLineIndex]);
String feeder = ""; item.setStartDate(lineValues[startDateIndex]);
if (feederIndex != -1) { item.setEndDate(lineValues[endDateIndex]);
feeder = lineValues[feederIndex]; item.setMaterialNo(lineValues[materialNoIndex]);
} item.setQty(Integer.parseInt(lineValues[qtyIndex]));
String so=fileName; item.setOverFlag(Integer.parseInt(lineValues[overFlagIndex]));
item.setIncrement(Integer.parseInt(lineValues[incrementIndex]));
if(soIndex!=-1){ item.setWemng(Integer.parseInt(lineValues[wemngIndex]));
so=lineValues[soIndex];
}
if(!ObjectUtil.isNotEmpty(so)){
so=fileName;
}
LiteOrderItem item = new LiteOrderItem();
item.setMaterialNo(partNumber);
if(partNumber.isEmpty()){
item.setNeedReelCount(1);
}
item.setQty(num);
item.setStation(feeder);
item.setRi(ri);
if(!itemMap.containsKey(so)){
itemMap.put(so,new ArrayList<LiteOrderItem>());
}
itemMap.get(so).add(item);
items.add(item); items.add(item);
} catch (Exception ex) {
log.error("解析文件"+fileName+" 出错:"+ex);
continue;
} }
} }
return itemMap; return items;
} catch (Exception ex) { } catch (Exception ex) {
log.error("解析上传的工单出错:" + ex.toString()); log.error("解析上传的工单出错:" + ex.toString());
} }
......
...@@ -180,36 +180,92 @@ public class SettingsController { ...@@ -180,36 +180,92 @@ public class SettingsController {
List<String> titles = new ArrayList<>(); List<String> titles = new ArrayList<>();
OrderSetting orderSetting = dataCache.getOrderSetting(); OrderSetting orderSetting = dataCache.getOrderSetting();
titles.add(orderSetting.getPn() ); // int jobNoIndex = csvRead.getIndex("jobNo", "jobNo");
titles.add(orderSetting.getFeeder()); // int stationIndex = csvRead.getIndex("station", "station");
titles.add((orderSetting.getQty())); // int baseCodeIndex = csvRead.getIndex("baseCode", "baseCode");
titles.add(orderSetting.getRi()); // int lgortIndex = csvRead.getIndex("lgort", "lgort");
titles.add(orderSetting.getSo()); // int workLineIndex = csvRead.getIndex("workLine", "workLine");
for(int i=1;i<=10;i++) { // int startDateIndex = csvRead.getIndex("startDate", "startDate");
// int endDateIndex = csvRead.getIndex("endDate", "endDate");
// int materialNoIndex = csvRead.getIndex("materialNo", "materialNo");
// int qtyIndex = csvRead.getIndex("qty", "qty");
// int overFlagIndex = csvRead.getIndex("overFlag", "overFlag");
// int incrementIndex = csvRead.getIndex("increment", "increment");
// int wemngIndex = csvRead.getIndex("wemng", "wemng");
Map<String, Object> map = new LinkedHashMap<>(); String[] titleArray = new String[]{"jobNo", "station", "baseCode", "lgort", "workLine", "startDate", "endDate"
if(i<=4){ , "materialNo", "qty", "overFlag", "increment", "wemng"};
map.put(orderSetting.getPn(),"PN"+i);
map.put(orderSetting.getFeeder(),"Feeder1"+i); for (String title :
map.put(orderSetting.getQty(),"100"+i); titleArray) {
map.put(orderSetting.getRi(),""); titles.add(title);
map.put(orderSetting.getSo(),"WO1001" );
}
else{
map.put(orderSetting.getPn(),"PN2"+i);
map.put(orderSetting.getFeeder(),"Feeder2"+i);
map.put(orderSetting.getQty(),"200"+i);
map.put(orderSetting.getRi(),"");
map.put(orderSetting.getSo(),"WO1002" );
} }
String currTime = DateUtil.toDateString(new Date(), "yyyyMMdd-HHmm");
for (int i = 1; i <= 5; i++) {
Map<String, Object> map = new LinkedHashMap<>();
map.put("jobNo", "jobNo" + currTime);
map.put("station", "station".toUpperCase() + "-" + i);
map.put("baseCode", "baseCode".toUpperCase() + "-" + i);
map.put("lgort", "lgort".toUpperCase() + "-" + i);
map.put("workLine", "workLine" + currTime);
map.put("startDate", DateUtil.toDateString(new Date(), "yyyy-MM-dd HH:mm:ss"));
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.DAY_OF_MONTH, 7);
Date date = cal.getTime();
map.put("endDate", DateUtil.toDateString(date, "yyyy-MM-dd HH:mm:ss"));
map.put("materialNo", "materialNo".toUpperCase() + "-" + i);
map.put("qty", i * 1000);
map.put("overFlag", "1");
map.put("increment", i * 100);
map.put("wemng", i * 10);
maps.add(map); maps.add(map);
} }
FileUtil.downloadCSV(maps, titles, response); FileUtil.downloadCSV(maps, titles, response);
} catch (Exception e) { } catch (Exception e) {
log.error("导出失败" + e.getMessage(), e); log.error("导出失败" + e.getMessage(), e);
} }
} }
// public void downloadOrderModel( HttpServletResponse response) throws IOException {
// try {
// List<Map<String, Object>> maps = new ArrayList<>();
// List<String> titles = new ArrayList<>();
// OrderSetting orderSetting = dataCache.getOrderSetting();
//
// titles.add(orderSetting.getPn() );
// titles.add(orderSetting.getFeeder());
// titles.add((orderSetting.getQty()));
// titles.add(orderSetting.getRi());
// titles.add(orderSetting.getSo());
// for(int i=1;i<=10;i++) {
//
// Map<String, Object> map = new LinkedHashMap<>();
// if(i<=4){
// map.put(orderSetting.getPn(),"PN"+i);
// map.put(orderSetting.getFeeder(),"Feeder1"+i);
// map.put(orderSetting.getQty(),"100"+i);
// map.put(orderSetting.getRi(),"");
// map.put(orderSetting.getSo(),"WO1001" );
// }
// else{
// map.put(orderSetting.getPn(),"PN2"+i);
// map.put(orderSetting.getFeeder(),"Feeder2"+i);
// map.put(orderSetting.getQty(),"200"+i);
// map.put(orderSetting.getRi(),"");
// map.put(orderSetting.getSo(),"WO1002" );
// }
// maps.add(map);
// }
//
// FileUtil.downloadCSV(maps, titles, response);
// } catch (Exception e) {
// log.error("导出失败" + e.getMessage(), e);
// }
// }
@ApiOperation("获取版本号") @ApiOperation("获取版本号")
@GetMapping("/version") @GetMapping("/version")
......
...@@ -110,11 +110,6 @@ public class HikvisionApiController { ...@@ -110,11 +110,6 @@ public class HikvisionApiController {
LiteOrderItem item = outInfo.crateOrderItem(orderNo); LiteOrderItem item = outInfo.crateOrderItem(orderNo);
order = liteOrderCache.updateOrderItem(order, item); order = liteOrderCache.updateOrderItem(order, item);
// item = liteOrderItemManager.save(item);
// List<LiteOrderItem> items = order.getOrderItems();
// items.add(item);
// order.setOrderItems(items);
// liteOrderManager.save(order);
liteOrderCache.addOrderToMap(order); liteOrderCache.addOrderToMap(order);
} }
......
...@@ -21,7 +21,7 @@ public class HikOutInfo implements Serializable { ...@@ -21,7 +21,7 @@ public class HikOutInfo implements Serializable {
/** /**
*replenishmentNo String false 补料单号,如果有值表示此单为补料单[合并唯一] *replenishmentNo String false 补料单号,如果有值表示此单为补料单[合并唯一]
*/ */
protected String replenishmentNo; protected String replenishmentNo="";
/** /**
*baseCode String true 基地编号 *baseCode String true 基地编号
...@@ -79,7 +79,7 @@ public class HikOutInfo implements Serializable { ...@@ -79,7 +79,7 @@ public class HikOutInfo implements Serializable {
/** /**
*reason String false 移动原因 *reason String false 移动原因
*/ */
protected String reason; protected String reason="";
public LiteOrderItem crateOrderItem(String orderNo) { public LiteOrderItem crateOrderItem(String orderNo) {
LiteOrderItem item = new LiteOrderItem(); LiteOrderItem item = new LiteOrderItem();
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!