Commit c8c51f1f LN

1053:1.Pn出库增加数量。2.工单上传修改。

1 个父辈 23cc13c3
......@@ -8,10 +8,16 @@ import java.util.Map;
public class ExcelReader {
public static List<Map<Integer, String>> noModelRead(String fileName) {
public static List<Map<Integer, String>> noModelRead(String fileName,int headRowNumber) {
// 这里 只要,然后读取第一个sheet 同步读取会自动finish
NoModelDataListener listener = new NoModelDataListener();
EasyExcel.read(fileName, listener).sheet().doRead();
if(headRowNumber<=1){
EasyExcel.read(fileName, listener).sheet().doRead();
}
else{
EasyExcel.read(fileName, listener).sheet().headRowNumber(headRowNumber).doRead();
}
List<Map<Integer, String>> data = listener.getData();
Map<Integer, String> headerMap = listener.getHeaderMap();
if (headerMap != null) {
......@@ -22,18 +28,7 @@ public class ExcelReader {
}
return data;
}
// public static List<OrderLineItem> ReadOrder(String fileName){
// ExcelReaderBuilder workBook = EasyExcel.read
// (fileName, OrderLineItem.class, new OrderReaderListener());
//
// // 封装工作表
// ExcelReaderSheetBuilder sheet1 = workBook.sheet();
// // 读取
// sheet1.doRead();
//
// //写入数据库
// List<OrderLineItem> orderLineItems = OrderReaderListener.getStudentList();
// return orderLineItems;
//
// }
public static List<Map<Integer, String>> noModelRead(String fileName) {
return noModelRead(fileName,1);
}
}
......@@ -202,14 +202,17 @@ public class DefaultOrderFileListener implements IOrderFileListener {
return null;
}
public Map<String , List<LiteOrderItem>> readExcelFile(String fileName, String fileURL ) {
return readExcelFile(fileName, fileURL, 1);
}
public Map<String , List<LiteOrderItem>> readExcelFile(String fileName, String fileURL) {
public Map<String , List<LiteOrderItem>> readExcelFile(String fileName, String fileURL,int headRowNumber) {
try {
fileName = fileName.replace(".xlsx", "");
Map<String, List<LiteOrderItem>> itemMap = new HashMap<>();
List<Map<Integer, String>> data= ExcelReader.noModelRead(fileURL);
List<Map<Integer, String>> data= ExcelReader.noModelRead(fileURL,headRowNumber);
if(data!=null&&data.size()>=2){
......@@ -217,14 +220,27 @@ public class DefaultOrderFileListener implements IOrderFileListener {
Map<String,Integer> headerMap=new HashMap<>();
for (Integer key :
headerData.keySet()) {
if(ObjectUtil.isEmpty(key)){
continue;
}
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 qtyIndex = headerMap.getOrDefault( orderSetting.getQty(),-1);
int feederIndex = headerMap.getOrDefault( orderSetting.getFeeder(),-1);
int riIndex = headerMap.getOrDefault( orderSetting.getRi(),-1);
int soIndex = headerMap.getOrDefault( orderSetting.getSo(),-1);
int numIndex = headerMap.getOrDefault( orderSetting.getNum(),-1);
int mpnIndex = headerMap.getOrDefault( orderSetting.getMpn(),-1);
......
......@@ -15,6 +15,10 @@ public class TacticsOutDto implements Serializable {
@ApiModelProperty("出库盘数")
private Integer plateNumber;
@ApiModelProperty("数量")
private int needNum=0;
@ApiModelProperty("料仓Id")
private String storageId;
}
......@@ -985,11 +985,14 @@ public class TaskService {
//其他出库模式一次性全部生成任务
for (TacticsOutDto item : tacticsOutDtos) {
log.info("开始执行策略出库[" + item.getPartNumber() + "] [" + item.getStorageId() + "] 盘数=" + item.getPlateNumber());
log.info("开始执行策略出库[" + item.getPartNumber() + "] [" + item.getStorageId() + "] 盘数=" + item.getPlateNumber()+",数量="+item.getNeedNum());
String partNumber = item.getPartNumber();
for (int i = 1; i <= item.getPlateNumber(); i++) {
Collection<String> excludePosIds = excludePosIds();
int currNum=0;
int reelNum=0;
while (reelNum<item.getPlateNumber()||currNum<item.getNeedNum())
// for (int i = 1; i <= item.getPlateNumber(); i++) {
{ Collection<String> excludePosIds = excludePosIds();
StoragePos pos = null;
if (item.getStorageId() != null) {
String[] storageIds = new String[]{item.getStorageId()};
......@@ -1001,7 +1004,9 @@ public class TaskService {
log.error("策略出库[" + item.getPartNumber() + "] 未找到可以出库的物料[" + partNumber + "]");
break;
} else {
log.info("策略出库,PN[" + item.getPartNumber() + "]第[" + i + "]盘, 出库位置仓位【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "] PN=[" + partNumber + "] num:" + pos.getBarcode().getAmount());
currNum+=pos.getBarcode().getAmount();
reelNum+=1;
log.info("策略出库,PN[" + item.getPartNumber() + "]第[" + reelNum + "]盘, 出库位置仓位【" + pos.getPosName() + "】RI=[" + pos.getBarcode().getBarcode() + "] PN=[" + partNumber + "] num:" + pos.getBarcode().getAmount()+",累计数量:"+currNum);
DataLog task = newTask(pos);
task.setType(OP.CHECKOUT);
task.setOperator(SecurityUtils.getCurrentUsername());
......
......@@ -78,8 +78,25 @@ public class MicronDeviceController {
return ResultBean.newOkResult(resultMap);
}
@ApiOperation("更新设备数据")
@PostMapping(value = "/updateData")
@ResponseBody
@AnonymousAccess
public ResultBean updateData(HttpServletRequest request) {
String key = request.getParameter("key");
Object value = request.getParameter("value");
MicronDataCache.updateDData(key,value);
return ResultBean.newOkResult(key);
}
@ApiOperation("获取设备数据")
@PostMapping(value = "/getData")
@ResponseBody
@AnonymousAccess
public ResultBean getData(HttpServletRequest request) {
String key = request.getParameter("key");
Object value = MicronDataCache.getDDate(key);
return ResultBean.newOkResult(value);
}
// @ApiOperation("ML5设备状态更新")
// @PostMapping(value = "ml5/updateStatus")
......
package com.neotel.smfcore.custom.micron1053.util;
import cn.hutool.core.util.ObjectUtil;
import com.neotel.smfcore.core.system.service.po.DataLog;
import com.neotel.smfcore.custom.micron1053.bean.EquipMsg;
import com.neotel.smfcore.custom.micron1053.bean.MicronEquipStatus;
import java.util.HashMap;
import java.util.Map;
import java.util.*;
/**
* 设备状态缓存类
......@@ -19,8 +20,22 @@ public class MicronDataCache {
if (bean == null) {
return;
}
bean.setUpdateTime( System.currentTimeMillis());
List<EquipMsg> msgs=new ArrayList<>();
if(bean.getMsgList()!=null&&bean.getMsgList().size()>0){
for (EquipMsg msg :
bean.getMsgList()) {
if(ObjectUtil.isEmpty(msg.getName())){
msg.setName(bean.getEquipName());
}
if(msg.getTime()==null){
msg.setTime(new Date());
}
msgs.add(msg);
}
bean.setMsgList(msgs);
}
bean.setUpdateTime( System.currentTimeMillis());
if (equipStatusMap.containsKey(bean.getEquipName())) {
equipStatusMap.remove(bean.getEquipName());
}
......@@ -121,4 +136,13 @@ public class MicronDataCache {
}
}
private static Map<String,Object> deviceDataMap=new HashMap<>();
public static void updateDData(String key,Object value){
deviceDataMap.put(key,value);
}
public static Object getDDate(String key) {
Object value = deviceDataMap.getOrDefault(key, "");
return value;
}
}
......@@ -303,6 +303,7 @@ smfcore.ml2=MI2
smfcore.diagnosis=Diagnosis
smfcore.helps=Help
smfcore.error.storage.noPos={0}\u7684\u6599\u683C[{1}]\u5DF2\u6EE1,\u65E0\u6CD5\u7EE7\u7EED\u653E\u5165
smfcore.status=Status
#smfclient.nlp.onlyOneTray=\u4E0D\u53EF\u540C\u65F6\u653E\u5165\u591A\u76D8\u7269\u6599:{0}
#smfclient.nlp.cannotFindPos={0}\u672A\u627E\u5230\u5E93\u4F4D:{1}
#smfclient.nlp.inputOk={0}\u5165\u5E93\u5230{1}\u6210\u529F
......
......@@ -301,4 +301,5 @@ smfcore.ml=MI1
smfcore.ml2=MI2
smfcore.diagnosis=Diagnosis
smfcore.helps=Help
smfcore.error.storage.noPos={0}'s cell [{1}] is full and cannot be added
\ No newline at end of file
smfcore.error.storage.noPos={0}'s cell [{1}] is full and cannot be added
smfcore.status=Status
\ No newline at end of file
......@@ -299,3 +299,4 @@ smfcore.ml2=MI2
smfcore.diagnosis=Diagnosis
smfcore.helps=Help
smfcore.error.storage.noPos={0}\u7684\u6599\u683C[{1}]\u5DF2\u6EE1,\u65E0\u6CD5\u7EE7\u7EED\u653E\u5165
smfcore.status=Status
......@@ -298,4 +298,5 @@ smfcore.ml=MI1
smfcore.ml2=MI2
smfcore.diagnosis=Diagnosis
smfcore.helps=Help
smfcore.error.storage.noPos={0}\u7684\u6599\u683C[{1}]\u5DF2\u6EE1,\u65E0\u6CD5\u7EE7\u7EED\u653E\u5165
\ No newline at end of file
smfcore.error.storage.noPos={0}\u7684\u6599\u683C[{1}]\u5DF2\u6EE1,\u65E0\u6CD5\u7EE7\u7EED\u653E\u5165
smfcore.status=Status
\ No newline at end of file
......@@ -299,4 +299,5 @@ smfcore.ml=MI1
smfcore.ml2=MI2
smfcore.diagnosis=Diagnosis
smfcore.helps=Help
smfcore.error.storage.noPos={0}\u7684\u6599\u683C[{1}]\u5DF2\u6EFF,\u7121\u6CD5\u7E7C\u7E8C\u653E\u5165
\ No newline at end of file
smfcore.error.storage.noPos={0}\u7684\u6599\u683C[{1}]\u5DF2\u6EFF,\u7121\u6CD5\u7E7C\u7E8C\u653E\u5165
smfcore.status=Status
\ No newline at end of file
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!