Commit 89fad21a LN

上传功能bug修改

1 个父辈 fd909f20
package com.neotel.smfcore.common.utils;
import cn.hutool.core.util.ObjectUtil;
import com.google.common.collect.Lists;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
......@@ -57,6 +58,9 @@ public class DateUtil {
}
public static String toDateString(Date aDate, String aMask) {
if(ObjectUtil.isEmpty(aMask)){
aMask="yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat df = null;
String returnValue = "";
......@@ -76,6 +80,9 @@ public class DateUtil {
public static Date toDate(String strDate,String aMask)
throws ParseException {
if(ObjectUtil.isEmpty(aMask)){
aMask="yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat df;
Date date;
df = new SimpleDateFormat(aMask);
......
......@@ -182,36 +182,42 @@ public class NLPShelfHandler extends BaseDeviceHandler{
handleMsg(statusBean);
statusBean = saveAlarmAndHumidity(statusBean);
OrderSetting orderSetting = dataCache.getOrderSetting();
boolean openZhiYin = orderSetting.getShelfLightType().equals(1);
Map<String, List<DataLog>> outMap = new HashMap<>();
// OrderSetting orderSetting = dataCache.getOrderSetting();
// boolean openZhiYin = orderSetting.getShelfLightType().equals(1);
// Map<String, List<DataLog>> outMap = new HashMap<>();
//亮灯
Collection<DataLog> queueTasks = taskService.getQueueTasks(statusBean.getCid());
for (DataLog queueTask : queueTasks) {
if(queueTask.isWait()){
queueTask.setStatus(OP_STATUS.EXECUTING.name());
taskService.updateQueueTask(queueTask);
String rgb = queueTask.getLightColor();
ORDER_COLOR color = ORDER_COLOR.fromRgb(rgb);
if(color == null){
if(queueTask.isPutInTask()){
if(queueTask.isWait()) {
ORDER_COLOR color = null;
if (queueTask.isPutInTask()) {
//入库默认深绿色 DARKGREEN
color = ORDER_COLOR.DARKGREEN;
}else{
if (openZhiYin && ObjectUtil.isNotEmpty(queueTask.getSourceId())) {
List<DataLog> dataLogList = outMap.get(queueTask.getSourceId());
if (dataLogList == null) {
dataLogList = new ArrayList<>();
} else {
if (ObjectUtil.isNotEmpty(queueTask.getSourceId())) {
if (queueTask.isInOperate()) {
//首盘料 颜色:CYAN
//截料料 颜色:PURPLE
//普通工单 颜色:SKYBLUE
String rgb = queueTask.getLightColor();
color = ORDER_COLOR.fromRgb(rgb);
} else {
continue;
}
dataLogList.add(queueTask);
outMap.put(queueTask.getSourceId(), dataLogList);
} else {
//普通出库蓝色 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()){
// if(queueTask.isCheckOutTask()){
......@@ -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;
}
......
......@@ -394,48 +394,6 @@ public class LiteOrderCache implements ITaskListener {
@Autowired
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 {
boolean isGuizhong = orderItem.getOverFlag()==1;
//判断是否需要截料
boolean needJieliao =false;
// boolean needJieliao = jieliaoMap.containsKey(pn);
if (needNum <= 0) {
continue;
......@@ -544,7 +501,7 @@ public class LiteOrderCache implements ITaskListener {
Component component = componentManager.findOneByPN(pn);
if(component==null){
log.info("工单[" + cacheOrder.getOrderNo() + "] 物料号[" + pn + "] ,需求数量[" + orderItem.getWemng() + "], 未找到元器件信息, 缺料 ");
return "smfcore.order.out.short";
return materialShortPro(userName,cacheOrder);
}
//判断库存
if(storageNum<component.getSafetyStoreNum()){
......@@ -554,7 +511,7 @@ public class LiteOrderCache implements ITaskListener {
if(storageNum<orderItem.getQty()){
//不满足实际需求,不发,报缺料
log.info("工单[" + cacheOrder.getOrderNo() + "] 物料号[" + pn + "] ,需求数量[" + orderItem.getWemng() + "], 库存总数量[" + storageNum + "], 不满足实际需求,缺料 ");
return "smfcore.order.out.short";
return materialShortPro(userName,cacheOrder);
}
int wholeReelCount = 0;
......@@ -672,7 +629,7 @@ public class LiteOrderCache implements ITaskListener {
if (outNum < orderItem.getQty()) {
//不满足实际需求,不发,报缺料
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 {
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;
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.util.TaskService;
import com.neotel.smfcore.hikvision.bean.HikOutInfo;
import com.neotel.smfcore.security.annotation.AnonymousAccess;
import com.neotel.smfcore.security.bean.FileProperties;
import com.neotel.smfcore.security.service.manager.IGroupManager;
......@@ -174,38 +175,50 @@ public class OrderController {
}
File folder = new File(properties.getPath(), "pos");
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", "文件解析失败");
}
for (String so : itemMap.keySet()
) {
for (HikOutInfo outInfo :
itemList) {
List<LiteOrderItem> liteOrderItems = itemMap.get(so);
if (liteOrderItems.size() <= 0) {
continue;
//查找工单是否存在
String orderNo = outInfo.getJobNo();
if (ObjectUtil.isNotEmpty(outInfo.getReplenishmentNo())) {
orderNo += "-" + outInfo.getReplenishmentNo();
}
LiteOrder liteOrder = new LiteOrder(so, liteOrderItems);
liteOrder.setSource(localFile.getName());
LiteOrder dbOrder = liteOrderManager.findByOrderNo(liteOrder.getOrderNo());
if (dbOrder != null) {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");
//把名字改为带时间的
String newOrderNo = liteOrder.getOrderNo() + "-" + format.format(new Date());
dbOrder = liteOrderManager.findByOrderNo(newOrderNo);
if (dbOrder == null) {
liteOrder.setOrderNo(newOrderNo);
LiteOrder order = liteOrderCache.findOrderByNo(orderNo);
if (order == null) {
//创建工单
order = new LiteOrder();
order.setOrderNo(orderNo);
order.UpdateOutInfo(outInfo);
LiteOrderItem item = outInfo.crateOrderItem(orderNo);
order.addOrderItems(item);
liteOrderManager.createWithItems(order);
liteOrderCache.addOrderToMap(order);
log.info("新建工单[" + order.getOrderNo() + "]工单详情"+order.getOrderItems().size()+"条" );
} else {
log.info("数据库中已存在工单号为[" + liteOrder.getOrderNo() + "],忽略文件:" + localFile.getAbsolutePath());
return ResultBean.newErrorResult(-1, "smfcore.order.ameExists", "工单名称[{0}]已存在", new String[]{liteOrder.getOrderNo()});
if (order.getStatus() > LITEORDER_STATUS.NEW) {
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", "工单上传成功", "");
......@@ -381,7 +394,6 @@ public class OrderController {
return ResultBean.newOkResult("smfcore.order.nextOk", "成功切换到下一个工单", "");
}
private List<LiteOrder> getExecuteOrders(User user) {
//查询正在执行的工单列表
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;
import org.springframework.data.mongodb.core.mapping.Document;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
......@@ -261,6 +262,7 @@ public class LiteOrder extends BasePo implements Serializable {
this.setUpdateDate(new Date());
this.setEndDate(outInfo.getEndD());
this.setWemng(outInfo.getWemng());
orderItems=new ArrayList<>();
}
public void addOrderItems(LiteOrderItem item){
......
......@@ -180,36 +180,92 @@ public class SettingsController {
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++) {
// 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");
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" );
String[] titleArray = new String[]{"jobNo", "station", "baseCode", "lgort", "workLine", "startDate", "endDate"
, "materialNo", "qty", "overFlag", "increment", "wemng"};
for (String title :
titleArray) {
titles.add(title);
}
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);
}
FileUtil.downloadCSV(maps, titles, response);
} catch (Exception 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("获取版本号")
@GetMapping("/version")
......
......@@ -110,11 +110,6 @@ public class HikvisionApiController {
LiteOrderItem item = outInfo.crateOrderItem(orderNo);
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);
}
......
......@@ -21,7 +21,7 @@ public class HikOutInfo implements Serializable {
/**
*replenishmentNo String false 补料单号,如果有值表示此单为补料单[合并唯一]
*/
protected String replenishmentNo;
protected String replenishmentNo="";
/**
*baseCode String true 基地编号
......@@ -79,7 +79,7 @@ public class HikOutInfo implements Serializable {
/**
*reason String false 移动原因
*/
protected String reason;
protected String reason="";
public LiteOrderItem crateOrderItem(String orderNo) {
LiteOrderItem item = new LiteOrderItem();
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!