Commit 339dbb7a zshaohui

1.移库bug修改

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