Commit 1abdcbaa LN

1.感应料架bug修改。

2.元器件增加物料间距,可导入,uid查找增加间距区间。
3.接口异常默认根据更新时间倒序。
1 个父辈 37986e3d
......@@ -211,9 +211,9 @@ public class ComponentController {
try {
List<Map<String, Object>> maps = new ArrayList<>();
List<String> titles = new ArrayList<>();
// String[] titleArray = new String[]{"料件编号" , "数量", "尺寸", "高度", "最大库存", "最小库存", "安全库存"
// String[] titleArray = new String[]{"料件编号" , "数量", "尺寸", "高度", "物料间距", "最小库存", "安全库存"
// , "呆滞天数", "整盘比", "散盘比", "描述"};
String[] titleArray = new String[]{"materialNo" , "amount", "plateSize", "height", "maxStoreNum", "minStoreNum", "safetyStoreNum"
String[] titleArray = new String[]{"materialNo" , "amount", "plateSize", "height", "distance", "minStoreNum", "safetyStoreNum"
, "sluggishDay", "wholeReel", "halfReel", "description"};
for (String title :
......@@ -228,7 +228,7 @@ public class ComponentController {
map.put("amount", 1000);
map.put("plateSize", 7);
map.put("height", 8);
map.put("maxStoreNum", "");
map.put("distance", "");
map.put("minStoreNum", "");
map.put("safetyStoreNum", "");
......@@ -260,14 +260,14 @@ public class ComponentController {
List<Component> items = new ArrayList<>();
try {
String[] titleArray = new String[]{"料件编号", "数量", "尺寸", "高度", "最大库存", "最小库存", "安全库存"
String[] titleArray = new String[]{"料件编号", "数量", "尺寸", "高度", "物料间距", "最小库存", "安全库存"
, "呆滞天数", "整盘", "散盘", "描述"};
CsvReader csvRead = CsvReader.newReader(fileUrl, "料件编号", "materialNo");
int partNumberIndex = csvRead.getIndex("料件编号", "materialNo");
int amountIndex = csvRead.getIndex("数量", "amount");
int plateSizeIndex = csvRead.getIndex("尺寸", "plateSize");
int heightIndex = csvRead.getIndex("高度", "height");
int maxStoreNumIndex = csvRead.getIndex("最大库存", "maxStoreNum");
int distanceIndex = csvRead.getIndex("物料间距", "distance");
int minStoreNumIndex = csvRead.getIndex("最小库存", "minStoreNum");
int safetyStoreNumIndex = csvRead.getIndex("安全库存", "safetyStoreNum");
int sluggishDayIndex = csvRead.getIndex("呆滞天数", "sluggishDay");
......@@ -296,7 +296,7 @@ public class ComponentController {
item.setAmount(Convert.toInt(lineValues[amountIndex].trim()));
item.setPlateSize(Convert.toInt(lineValues[plateSizeIndex].trim()));
item.setHeight(Convert.toInt(lineValues[heightIndex].trim()));
item.setMaxStorageTime(getIntValue(lineValues, maxStoreNumIndex, item.getMaxStorageTime()));
item.setDistance(getIntValue(lineValues, distanceIndex, item.getDistance()));
item.setMinStoreNum(getIntValue(lineValues, minStoreNumIndex, item.getMinStoreNum()));
item.setSafetyStoreNum(getIntValue(lineValues, safetyStoreNumIndex, item.getSafetyStoreNum()));
item.setSluggishDay(getIntValue(lineValues, sluggishDayIndex, item.getSluggishDay()));
......
......@@ -175,6 +175,11 @@ public class Component extends BasePo implements Serializable {
private int halfReel=0;
/**
* 物料间距
*/
private int distance=0;
/**
* 有效时长(生产日期+此天数为过期日期),设置默认有效期为2年
*/
private int validDay = 0;
......
......@@ -324,6 +324,11 @@ public class NLPShelfHandler extends BaseDeviceHandler{
for (String posName :
hasReelPosList) {
StoragePos pos = storagePosManager.getByPosName(posName);
if(pos==null) {
log.info("sensorChange 未找到库位 hasReelPosList [" + posName + "]");
continue;
}
if(!pos.isEnabled()){
continue;
}
......@@ -425,6 +430,10 @@ public class NLPShelfHandler extends BaseDeviceHandler{
//出库
for (String posName : noReelPosList) {
StoragePos pos = storagePosManager.getByPosName(posName);
if(pos==null){
log.info("sensorChange 未找到库位 noReelPosList ["+posName+"]");
continue;
}
if(!pos.isEnabled()){
continue;
}
......
......@@ -32,6 +32,7 @@ import com.neotel.smfcore.core.system.websocket.SocketMsg;
import com.neotel.smfcore.core.system.websocket.WebSocketServer;
import com.neotel.smfcore.hikvision.HikApi;
import com.neotel.smfcore.hikvision.bean.api.ResponseParam;
import com.neotel.smfcore.hikvision.util.JsonUtil;
import com.neotel.smfcore.security.TokenProvider;
import com.neotel.smfcore.security.service.manager.IUserManager;
import com.neotel.smfcore.security.service.po.Group;
......@@ -164,7 +165,10 @@ public class SingleInController {
@ApiOperation("扫码入库")
@PostMapping("/codeIn")
public ResultBean codeIn( @RequestBody Map<String, String> mapValues,HttpServletRequest request) {
return codeInProcess(mapValues, request);
}
private synchronized ResultBean codeInProcess(Map<String, String> mapValues,HttpServletRequest request){
//参数:code:条形码,
// storageId:料架ID,
// inType:入库类型(1=普通入库,2=并盘入库,3=截料入库,4=退料入库,5=转储入库)
......@@ -184,11 +188,13 @@ public class SingleInController {
}
// log.info("codeInProcess , code["+code+"],storageId["+storageId+"]开始验证是否有未结束的任务");
// WebSocketServer.sendMsg("", new SocketMsg("{0}未找到库位:{1}"+code, MsgType.INFO,"smfclient.nlp.cannotFindPos",new String[]{"消息测试","库位号"}));
String loginUser = SecurityUtils.getLoginUsername();
Collection<DataLog> queueTasks = taskService.getQueueTasks();
ResultBean resultBean = null;
for (DataLog queueTask : queueTasks) {
// log.info("------codeInProcess queueTask="+ JsonUtil.toJsonStr(queueTask));
if (queueTask.isPutInTask() &&(queueTask.isWait()||queueTask.isExecuting()) ) {
if (!Strings.isNullOrEmpty(storageId) && queueTask.getStorageId().equals(storageId)) {
log.info("codeIn [" + code + "][" + storageId + "]入库失败:条码[" + queueTask.getBarcode() + "]的任务还未结束 ");
......
......@@ -303,6 +303,13 @@ public class StoragePosController {
} else if (criteria.getMaxAmount() != null) {
baseCriteria.and("barcode.amount").lte(criteria.getMaxAmount());
}
if (criteria.getMinDistance() != null && criteria.getMaxDistance() != null) {
baseCriteria.and("barcode.distance").gte(criteria.getMinDistance()).lte(criteria.getMaxDistance());
} else if (criteria.getMinDistance() != null) {
baseCriteria.and("barcode.distance").gte(criteria.getMinDistance());
} else if (criteria.getMaxDistance() != null) {
baseCriteria.and("barcode.distance").lte(criteria.getMaxDistance());
}
query.addCriteria(baseCriteria);
return query;
......
......@@ -88,6 +88,11 @@ public class StoragePosFindCriteria {
@ApiModelProperty("最大数量")
private Integer maxAmount;
@ApiModelProperty("最小间距")
private Integer minDistance;
@ApiModelProperty("最大间距")
private Integer maxDistance;
public int getComponentType(){
int componentType = getType();
if (componentType != -1) {
......
......@@ -64,7 +64,10 @@ public class HikApiCache {
}
public static List<HikApiRequest> getAllRequestList() {
return new ArrayList<>(failedRequestMap.values());
List<HikApiRequest> requests=new ArrayList<>(failedRequestMap.values());
//自动根据更新时间排序
Collections.sort(requests);
return requests;
}
public static HikApiRequest getRequest(String req) {
return failedRequestMap.get(req);
......
package com.neotel.smfcore.hikvision.bean.api;
import com.neotel.smfcore.core.order.service.po.LiteOrderItem;
import com.neotel.smfcore.hikvision.util.JsonUtil;
import lombok.*;
......@@ -11,7 +12,7 @@ import java.util.Map;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class HikApiRequest implements Serializable {
public class HikApiRequest implements Serializable , Comparable<HikApiRequest>{
public HikApiRequest(int apiType,String url,String key,String secret,RequestParam param){
this.apiType=apiType;
......@@ -82,4 +83,11 @@ public class HikApiRequest implements Serializable {
return JsonUtil.toJsonStr(param.getData());
}
@Override
public int compareTo(HikApiRequest o) {
if(o.getUpdatetime()!=null&&this.getUpdatetime()!=null){
return o.getUpdatetime().compareTo(this.getUpdatetime());
}
return o.getCreateTime().compareTo(this.getCreateTime());
}
}
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!