2/27 器械 药品 虚拟槽位 上货-剔除 bug优化

dev_2.5_optimize
wangwei 4 months ago
parent 95b8b7c04a
commit 92900c1390

@ -612,7 +612,7 @@ public class IoCodeTempController extends BaseController {
}
}
} else {
baseResponse = addMaterOrder(addOrderRequest, udiEntity, code);
baseResponse = addMaterOrder(addOrderRequest, udiEntity, code,groupNumber);
}
if (baseResponse.getCode() == 20000) {
@ -695,11 +695,11 @@ public class IoCodeTempController extends BaseController {
if (StrUtil.equals("return", addOrderRequest.getSplitType())) {
//ioSplitFifoInvService.getOne(new LambdaQueryWrapper<IoSplitFifoInv>().eq(IoSplitFifoInv::getInvCode,"").last("limit 1"));
}
Integer groupNumber = getMaxGroupNumber() == null ? 1 : getMaxGroupNumber() + 1;
if (IntUtil.value(udiEntity.getProductType()) == 2) {
Integer groupNumber = getMaxGroupNumber() == null ? 1 : getMaxGroupNumber() + 1;
return addDrugOrder(addOrderRequest, udiEntity, code, groupNumber);
} else {
return addMaterOrder(addOrderRequest, udiEntity, code);
return addMaterOrder(addOrderRequest, udiEntity, code,groupNumber);
}
}
@ -711,7 +711,7 @@ public class IoCodeTempController extends BaseController {
private IoOrderDetailCodeDao orderDetailCodeDao;
@Transactional(rollbackFor = Exception.class)
public BaseResponse addMaterOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code) {
public BaseResponse addMaterOrder(AddOrderRequest addOrderRequest, UdiEntity udiEntity, String code,Integer groupNumber) {
AddCodeResult addCodeResult = new AddCodeResult();
BasicBussinessTypeEntity bussinessTypeEntity = basicBussinessTypeService.findByAction(addOrderRequest.getAction());
@ -1142,7 +1142,8 @@ public class IoCodeTempController extends BaseController {
if (byBillNo != null && !StrUtil.isBlank(byBillNo.getWorkPlaceQueueCode())){
queueCode = byBillNo.getWorkPlaceQueueCode();
} else {
queueCode = ioSplitFifoInvService.setQueueCode(addOrderRequest.getWorkPlaceCode(),null);
// userId 没有什么用 设置为1 问题不大 避免空指针
queueCode = ioSplitFifoInvService.setQueueCode(addOrderRequest.getWorkPlaceCode(),1+"",udiRelevanceResponse1.getRelId());
addCodeResult.setQueueCode(queueCode);
}
}else {
@ -1173,6 +1174,7 @@ public class IoCodeTempController extends BaseController {
codeEnttity.setCount(1);
codeEnttity.setPrice(udiRelevanceResponse1.getPrice());
codeEnttity.setQueueCode(queueCode);
codeEnttity.setGroupNumber(groupNumber);
String unitFk = null;
if (bussinessTypeEntity.getCorpType() == ConstantStatus.CORP_TYPE_OUT) {
unitFk = addOrderRequest.getFromCorp();
@ -1648,6 +1650,20 @@ public class IoCodeTempController extends BaseController {
if (codeTempService.ieExitRel(code, orderId)) {
return ResultVOUtils.error(500, "当前追溯码已上传关联关系,请勿重复扫码!");
}
UdiRelevanceResponse udiRelevanceResponse1 = udiRelevanceService.selectByNameCode(udiEntity.getUdi());
// 只要是一单的话就用同一个 虚拟槽位 加载orderQueueCode !!!!
IoOrderEntity byBillNo = orderService.findByBillNo(orderId);
String queueCode;
if (StrUtil.isBlank(addOrderRequest.getWorkPlaceQueueCode())){
if (byBillNo != null && !StrUtil.isBlank(byBillNo.getWorkPlaceQueueCode())){
queueCode = byBillNo.getWorkPlaceQueueCode();
} else {
queueCode = ioSplitFifoInvService.setQueueCode(addOrderRequest.getWorkPlaceCode(),1 + "",udiRelevanceResponse1.getRelId());
addCodeResult.setQueueCode(queueCode);
}
} else {
queueCode = addOrderRequest.getWorkPlaceQueueCode();
}
IoCodeTempEntity codeEnttity = new IoCodeTempEntity();
codeEnttity.setCode(code);
codeEnttity.setOrderId(orderId);
@ -1672,7 +1688,7 @@ public class IoCodeTempController extends BaseController {
codeEnttity.setProductType(2);
codeEnttity.setCount(1);
codeEnttity.setGroupNumber(groupNumber);
codeEnttity.setQueueCode(addOrderRequest.getWorkPlaceQueueCode());
codeEnttity.setQueueCode(queueCode);
//如果是阿里拉的单据会有批次号
@ -1785,7 +1801,7 @@ public class IoCodeTempController extends BaseController {
orderEntity.setSplitBusType(addOrderRequest.getSplitBusType());
orderEntity.setFifoSplit(addOrderRequest.getFifoSplit());
orderEntity.setSplitBusType(addOrderRequest.getSplitBusType());
orderEntity.setWorkPlaceQueueCode(addOrderRequest.getWorkPlaceQueueCode());
orderEntity.setWorkPlaceQueueCode(queueCode);
orderEntity.setProductType(2);
orderService.insertOrder(orderEntity);
}
@ -1802,8 +1818,8 @@ public class IoCodeTempController extends BaseController {
if (StrUtil.isNotBlank(workplaceQueue.getRelId())) {
if (!udiRelevanceResponse.getId().equals(Long.parseLong(workplaceQueue.getRelId()))) {
// orderService.deleteByBillNo(orderId);
UdiRelevanceResponse udiRelevanceResponse1 = udiRelevanceService.selectByRelId(workplaceQueue.getRelId());
return ResultVOUtils.error(507, "上货产品不符!" + "当前取货槽已被" + udiRelevanceResponse1.getCpmctymc() + "使用");
UdiRelevanceResponse udiRelevanceResponse2 = udiRelevanceService.selectByRelId(workplaceQueue.getRelId());
return ResultVOUtils.error(507, "上货产品不符!" + "当前取货槽已被" + udiRelevanceResponse2.getCpmctymc() + "使用");
}
} else {
//判断产品是否已经绑定其他槽位
@ -3063,7 +3079,7 @@ public class IoCodeTempController extends BaseController {
}
} else {
baseResponse = addMaterOrder(addOrderRequest, udiEntity, code);
baseResponse = addMaterOrder(addOrderRequest, udiEntity, code,groupNumber);
}
if (baseResponse.getCode() == 20000) {

@ -139,7 +139,7 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS
.availableCount(IntUtil.value(ioSplitFifoCodeEntity.getTotalCount())).lockCount(0)
.createTime(new Date()).updateTime(new Date()).remark(null)
.enableRemind(false).invRemindCount(0)
.workPlaceQueueCode(orderEntity.getWorkPlaceQueueCode() == null ? setQueueCode(ioSplitFifoCodeEntity.getWorkPlaceCode(), orderEntity.getCreateUser()) : orderEntity.getWorkPlaceQueueCode())
.workPlaceQueueCode(orderEntity.getWorkPlaceQueueCode() == null ? setQueueCode(ioSplitFifoCodeEntity.getWorkPlaceCode(), orderEntity.getCreateUser(),ioSplitFifoCodeEntity.getRelId()) : orderEntity.getWorkPlaceQueueCode())
.build();
// if (isOnlyInv) {
// splitFifoInv.setBusType(ioSplitFifoCodeEntity.getBusType());
@ -174,20 +174,26 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS
@Resource
SysWorkplaceLayerService sysWorkplaceLayerService;
public String setQueueCode(Long workPlaceCode, String userId) {
public String setQueueCode(Long workPlaceCode, String userId,Long relId) {
List<SysWorkplaceQueue> queues = sysWorkplaceQueueService.list(new LambdaQueryWrapper<SysWorkplaceQueue>().eq(SysWorkplaceQueue::getWorkPlaceIdFk, workPlaceCode));
if (queues.size() == 0) {
throw new JsonException(500, "请增加取货槽");
}
//需要先判断 该产品是否已经有库存了 不然 工位有库存 在设置新的虚拟槽位 会显示同样产品 的多条数据但是 下面码明细一样
List<IoSplitFifoInv> ioSplitFifoInvs = list(new LambdaQueryWrapper<IoSplitFifoInv>().eq(IoSplitFifoInv::getRelId, relId));
if (ioSplitFifoInvs != null && ioSplitFifoInvs.size() > 0){
return ioSplitFifoInvs.get(0).getWorkPlaceQueueCode();
}
SysWorkplaceQueue workplaceQueue = queues.get(0);
// 使用流来过滤掉匹配的元素
List<SysWorkplaceQueue> filteredQueues = queues.stream()
.filter(queue -> {
IoSplitFifoInv one = getOne(
List<IoSplitFifoInv> list = list(
new LambdaQueryWrapper<IoSplitFifoInv>()
.eq(IoSplitFifoInv::getWorkPlaceQueueCode, queue.getCode())
);
return one == null; // 只保留那些没有匹配的槽位
return list == null || list.isEmpty();
})
.sorted((queue1, queue2) -> queue1.getCode().compareTo(queue2.getCode()))
.collect(Collectors.toList());
@ -208,7 +214,7 @@ public class IoSplitFifoInvService extends ServiceImpl<IoSplitFifoInvMapper, IoS
throw new JsonException(500, "虚拟槽位增加失败");
}
}
return setQueueCode(workPlaceCode, userId);
return setQueueCode(workPlaceCode, userId,relId);
}

Loading…
Cancel
Save