Commit 339dbb7a zshaohui

1.移库bug修改

2.增加库位是否锁定功能
1 个父辈 4864f134
...@@ -881,6 +881,10 @@ public class DeviceController { ...@@ -881,6 +881,10 @@ public class DeviceController {
posName = ""; posName = "";
} }
} }
if (StringUtils.isEmpty(posName)){
ReelLockPosUtil.removeReelLockPosInfo(getLockPosSKey(needMovePos.getStorageId()));
}
//不从外侧库位进行查找 //不从外侧库位进行查找
/*if (StringUtils.isEmpty(posName)) { /*if (StringUtils.isEmpty(posName)) {
lockPosInfo = ReelLockPosUtil.getLockPosInfoByCode(getLockPosKey(needMovePos.getStorageId())); lockPosInfo = ReelLockPosUtil.getLockPosInfoByCode(getLockPosKey(needMovePos.getStorageId()));
......
...@@ -344,6 +344,18 @@ public class StoragePosController { ...@@ -344,6 +344,18 @@ public class StoragePosController {
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} }
@ApiOperation("批量解除锁定库位")
@RequestMapping("/batchRemoveLockPosId")
public ResultBean batchRemoveLockPosId(@RequestBody List<String> posIdList) {
if (posIdList != null && !posIdList.isEmpty()) {
for (String posId : posIdList) {
ReelLockPosUtil.removeLockPosId(posId);
}
}
return ResultBean.newOkResult("");
}
private Query getPosFindCriteria(StoragePosFindCriteria criteria){ private Query getPosFindCriteria(StoragePosFindCriteria criteria){
if (ObjectUtil.isNotEmpty(criteria.getStorageId()) && criteria.getStorageId().equals("0")) { if (ObjectUtil.isNotEmpty(criteria.getStorageId()) && criteria.getStorageId().equals("0")) {
criteria.setStorageId(null); criteria.setStorageId(null);
......
...@@ -16,4 +16,6 @@ public class StorageExportOutDetail { ...@@ -16,4 +16,6 @@ public class StorageExportOutDetail {
private String status; private String status;
private String lastStatus; private String lastStatus;
private boolean hasReel = true;
} }
...@@ -154,25 +154,61 @@ public class JkemController { ...@@ -154,25 +154,61 @@ public class JkemController {
if (barcode == null) { if (barcode == null) {
throw new ValidateException("smfcore.error.barcode.invalid", "未找到有效的条码"); throw new ValidateException("smfcore.error.barcode.invalid", "未找到有效的条码");
} }
boolean box = barcode.isBox(); /* boolean box = barcode.isBox();
if (box){ if (box){*/
int checkingAmount = barcode.getCheckingAmount(); int checkingAmount = barcode.getCheckingAmount();
if (checkingAmount > 0 || StringUtils.isNotEmpty(barcode.getOrderNo())){ if (checkingAmount > 0 || StringUtils.isNotEmpty(barcode.getOrderNo())){
log.info(barcode.getBarcode()+"为治具盒,点料数量为:"+checkingAmount+"需要清空"); log.info(barcode.getBarcode()+"为治具盒,点料数量为:"+checkingAmount+"需要清空");
barcode.setCheckingAmount(0); barcode.setCheckingAmount(0);
barcode.setOrderId(""); barcode.setOrderId("");
barcode.setOrderNo(""); barcode.setOrderNo("");
barcode.setOrderItemId("");
barcode.setFeederInfo("");
barcode.setMpn("");
barcodeManager.save(barcode); barcodeManager.save(barcode);
} }
//}
//判断是否为温湿度管控
int msd = 0;
MJPartNumber mjPartNumber = partNumberManager.findByJkemPartNumber(barcode.getPartNumber());
if (mjPartNumber != null){
log.info(barcode.getBarcode() + "查询到的信息为:" + JSON.toJSONString(mjPartNumber));
msd = mjPartNumber.getMsd();
} }
//判断是抛ng还是流水线
boolean ngReel = true;
for (Storage storage : dataCache.getAllStorage().values()) {
if (msd == 1) {
if (storage.isMsdControl()) {
boolean canPutIn = storage.canPutIn(barcode.getPlateSize(), barcode.getHeight());
if (canPutIn) {
ngReel = false;
break;
}
}
} else {
if (!storage.isMsdControl()) {
boolean canPutIn = storage.canPutIn(barcode.getPlateSize(), barcode.getHeight());
if (canPutIn) {
ngReel = false;
break;
}
}
}
}
if (ngReel) {
errorMsg = barcode.getBarcode()+"没有符合条件可以入库的料仓";
log.info(errorMsg);
resultMap.put("result", "-1");
resultMap.put("msg",errorMsg);
return resultMap;
}
//判断是不是要入到指定的料仓 //判断是不是要入到指定的料仓
List<String> newCidList = new ArrayList<>(); List<String> newCidList = new ArrayList<>();
List<Storage> newStorageList = new ArrayList<>(); List<Storage> newStorageList = new ArrayList<>();
MJPartNumber mjPartNumber = partNumberManager.findByJkemPartNumber(barcode.getPartNumber());
if (mjPartNumber != null) {
log.info(barcode.getBarcode() + "查询到的信息为:" + JSON.toJSONString(mjPartNumber));
int msd = mjPartNumber.getMsd();
if (msd == 1) { if (msd == 1) {
for (String cid : cidList) { for (String cid : cidList) {
if (msdCidList.contains(cid)) { if (msdCidList.contains(cid)) {
...@@ -185,18 +221,23 @@ public class JkemController { ...@@ -185,18 +221,23 @@ public class JkemController {
throw new ValidateException("smf.barcode.msd.validate", "该物料需要MSD管控不能在本料仓入库"); throw new ValidateException("smf.barcode.msd.validate", "该物料需要MSD管控不能在本料仓入库");
} }
} else { } else {
newCidList.addAll(cidList); for (String cid : cidList) {
newStorageList.addAll(storageList); Storage storage = dataCache.getStorage(cid);
if (storage.isMsdControl()) {
continue;
}
newCidList.add(cid);
}
for (Storage storage : storageList) {
if (storage.isMsdControl()) {
continue;
}
newStorageList.add(storage);
} }
} else {
newCidList.addAll(cidList);
newStorageList.addAll(storageList);
} }
//判断对应的尺寸,外侧的库位,是否保留5个 //判断对应的尺寸,外侧的库位,是否保留5个
List<String> findCidList = new ArrayList<>(); List<String> findCidList = new ArrayList<>();
List<Storage> findNewStorageList = new ArrayList<>(); List<Storage> findNewStorageList = new ArrayList<>();
for (Storage storage : newStorageList) { for (Storage storage : newStorageList) {
int count = storagePosManager.getRemainPosCountByStorage(storage, barcode, taskService.excludePosIds(), "", "_F"); int count = storagePosManager.getRemainPosCountByStorage(storage, barcode, taskService.excludePosIds(), "", "_F");
if (count > 5) { if (count > 5) {
...@@ -206,6 +247,8 @@ public class JkemController { ...@@ -206,6 +247,8 @@ public class JkemController {
log.info(storage.getCid()+"对应的尺寸:"+barcode.getPlateSize()+"x"+barcode.getHeight()+"外侧库位数量小于等于5个,忽略不入库"); log.info(storage.getCid()+"对应的尺寸:"+barcode.getPlateSize()+"x"+barcode.getHeight()+"外侧库位数量小于等于5个,忽略不入库");
} }
} }
if (findNewStorageList == null || findNewStorageList.isEmpty()){ if (findNewStorageList == null || findNewStorageList.isEmpty()){
throw new ValidateException("smfcore.noValidStorage", "[{0}]料仓列表中未找到可用的料仓",new String[]{barcode.getBarcode()}); throw new ValidateException("smfcore.noValidStorage", "[{0}]料仓列表中未找到可用的料仓",new String[]{barcode.getBarcode()});
} }
...@@ -257,6 +300,8 @@ public class JkemController { ...@@ -257,6 +300,8 @@ public class JkemController {
StoragePos pos = null; StoragePos pos = null;
int loopCount = 0; int loopCount = 0;
List<String> needRemoveLockPosId = new ArrayList<>();
while (pos == null) { while (pos == null) {
loopCount++; loopCount++;
if (loopCount >= 10) { if (loopCount >= 10) {
...@@ -288,6 +333,7 @@ public class JkemController { ...@@ -288,6 +333,7 @@ public class JkemController {
reelLocInfo.setLockPosName(pos.getPosName()); reelLocInfo.setLockPosName(pos.getPosName());
reelLocInfo.setLockPosId(pos.getId()); reelLocInfo.setLockPosId(pos.getId());
ReelLockPosUtil.addReelLockPosInfo(reelLocInfo, findCidList); ReelLockPosUtil.addReelLockPosInfo(reelLocInfo, findCidList);
needRemoveLockPosId.add(pos.getId());
// needRemoveReelLockPosIdList.add(pos.getId()); // needRemoveReelLockPosIdList.add(pos.getId());
pos = null; pos = null;
} }
...@@ -295,6 +341,14 @@ public class JkemController { ...@@ -295,6 +341,14 @@ public class JkemController {
} }
} }
//判断有没有锁定的异常库位
if (needRemoveLockPosId != null && !needRemoveLockPosId.isEmpty()){
for (String posId : needRemoveLockPosId) {
ReelLockPosUtil.removeReelLockPosInfo(posId);
}
}
if (pos != null) { if (pos != null) {
Storage theStorage = dataCache.getStorageById(pos.getStorageId()); Storage theStorage = dataCache.getStorageById(pos.getStorageId());
resultMap.put("result", "0"); resultMap.put("result", "0");
...@@ -548,6 +602,10 @@ public class JkemController { ...@@ -548,6 +602,10 @@ public class JkemController {
newBarcode.setPartNumber(barcode.getPartNumber()); newBarcode.setPartNumber(barcode.getPartNumber());
barcodeManager.save(newBarcode); barcodeManager.save(newBarcode);
//设置分盘的信息
barcode.setTraySeparationBarcode(newBarcode.getBarcode());
barcodeManager.save(barcode);
Map<String,Object> resultMap = new HashMap<>(); Map<String,Object> resultMap = new HashMap<>();
resultMap.put("barcode",barcode.getBarcode()); resultMap.put("barcode",barcode.getBarcode());
...@@ -594,13 +652,21 @@ public class JkemController { ...@@ -594,13 +652,21 @@ public class JkemController {
barcodeManager.save(barcode); barcodeManager.save(barcode);
DataLog dataLog = new DataLog(); DataLog dataLog = new DataLog();
if (StringUtils.isNotEmpty(barcode.getTraySeparationBarcode())){
dataLog.setBarcode(barcode.getTraySeparationBarcode());
} else {
dataLog.setBarcode(barcode.getBarcode()); dataLog.setBarcode(barcode.getBarcode());
}
dataLog.setPartNumber(barcode.getPartNumber()); dataLog.setPartNumber(barcode.getPartNumber());
dataLog.setNum(checkingAmount); dataLog.setNum(checkingAmount);
dataLog.setType(OP.CHECKOUT); dataLog.setType(OP.CHECKOUT);
dataLog.setStatus(OP_STATUS.FINISHED.name()); dataLog.setStatus(OP_STATUS.FINISHED.name());
dataLog.setSourceId(barcode.getOrderId()); dataLog.setSourceId(barcode.getOrderId());
dataLog.setSourceName(barcode.getOrderNo()); dataLog.setSourceName(barcode.getOrderNo());
dataLog.setSubSourceId(barcode.getOrderItemId());
dataLog.setPosName(barcode.getBarcode());
dataLog.setMpn(barcode.getMpn());
dataLog.updateAppendData("feederInfo",barcode.getFeederInfo());
dataLogManager.save(dataLog); dataLogManager.save(dataLog);
return ResultBean.newOkResult(""); return ResultBean.newOkResult("");
} }
......
...@@ -211,9 +211,12 @@ public class StorageExportController { ...@@ -211,9 +211,12 @@ public class StorageExportController {
if (detailList != null && !detailList.isEmpty()){ if (detailList != null && !detailList.isEmpty()){
for (StorageExportOutDetail detail : detailList) { for (StorageExportOutDetail detail : detailList) {
if (StringUtils.isNotEmpty(detail.getBarcode())){ if (StringUtils.isNotEmpty(detail.getBarcode())){
if (!OP_STATUS.ABNORMAL.name().equals(detail.getStatus()) if (/*!OP_STATUS.ABNORMAL.name().equals(detail.getStatus())
&& !OP_STATUS.FINISHED.name().equals(detail.getStatus()) && !OP_STATUS.FINISHED.name().equals(detail.getStatus())
&& !OP_STATUS.CANCEL.name().equals(detail.getStatus())){ && !OP_STATUS.CANCEL.name().equals(detail.getStatus())*/
OP_STATUS.WAIT.name().equals(detail.getStatus())
|| OP_STATUS.EXECUTING.name().equals(detail.getStatus())
){
showButton = false; showButton = false;
break; break;
} }
......
...@@ -155,6 +155,10 @@ public class UmExportSettingController { ...@@ -155,6 +155,10 @@ public class UmExportSettingController {
String export = lastTask.getExport(); String export = lastTask.getExport();
if (StringUtils.isNotEmpty(export)) { if (StringUtils.isNotEmpty(export)) {
String feederInfo = lastTask.getAppendData("feederInfo"); String feederInfo = lastTask.getAppendData("feederInfo");
Boolean hasReel = lastTask.getAppendData("hasReel");
if (hasReel == null){
hasReel = true;
}
StorageExportOutDetailDto resultDto = new StorageExportOutDetailDto(); StorageExportOutDetailDto resultDto = new StorageExportOutDetailDto();
resultDto.setFeederInfo(feederInfo); resultDto.setFeederInfo(feederInfo);
resultDto.setExport(export); resultDto.setExport(export);
...@@ -164,6 +168,7 @@ public class UmExportSettingController { ...@@ -164,6 +168,7 @@ public class UmExportSettingController {
resultDto.setLastStatus(lastTask.getStatus()); resultDto.setLastStatus(lastTask.getStatus());
resultDto.setOrderFeederInfo(feederInfo); resultDto.setOrderFeederInfo(feederInfo);
resultDto.setOrderNo(lastTask.getSourceName()); resultDto.setOrderNo(lastTask.getSourceName());
resultDto.setHasReel(hasReel);
return ResultBean.newOkResult(resultDto); return ResultBean.newOkResult(resultDto);
} }
} }
......
...@@ -80,7 +80,7 @@ public class ReturnStorageManagerImpl implements IReturnStorageManager { ...@@ -80,7 +80,7 @@ public class ReturnStorageManagerImpl implements IReturnStorageManager {
DataLog dataLog = dataLogManager.findOne(new Query( DataLog dataLog = dataLogManager.findOne(new Query(
Criteria.where("barcode").is(task.getBarcode()) Criteria.where("barcode").is(task.getBarcode())
.and("type").is(OP.CHECKOUT) .and("type").is(OP.CHECKOUT)
.and("posName").exists(true).ne("") //.and("posName").exists(true).ne("")
).with(Sort.by(Sort.Direction.DESC,"updateDate"))); ).with(Sort.by(Sort.Direction.DESC,"updateDate")));
if (dataLog != null) { if (dataLog != null) {
log.info(dataLog.getBarcode() + "找到上一个任务,对应的工单号为:" + dataLog.getStorageName() + "任务状态为:" + dataLog.getStatus() + ",上次出库的任务数量为:" + dataLog.getNum()); log.info(dataLog.getBarcode() + "找到上一个任务,对应的工单号为:" + dataLog.getStorageName() + "任务状态为:" + dataLog.getStatus() + ",上次出库的任务数量为:" + dataLog.getNum());
......
...@@ -14,8 +14,8 @@ spring: ...@@ -14,8 +14,8 @@ spring:
database: smf # 数据库 database: smf # 数据库
username: username:
password: password:
maxConSize: 600 maxConSize: 1000
minConsize: 300 minConsize: 500
#备份数据库,如果有,则开启,注意:如果主数据库设置了用户名和密码,备份服务器必须设置用户名和密码!! #备份数据库,如果有,则开启,注意:如果主数据库设置了用户名和密码,备份服务器必须设置用户名和密码!!
#西门子的正式和备份数据库,用户名和密码都是Siemens #西门子的正式和备份数据库,用户名和密码都是Siemens
......
支持 Markdown 格式
你添加了 0 到此讨论。请谨慎行事。
Finish editing this message first!