修改子件生成bug

liweidong
liweidong-hj 2 days ago
parent 66a674aae3
commit 50c3ddc6d4
  1. 26
      blade-service/blade-desk/src/main/java/org/springblade/desk/order/service/impl/YieldOrderServiceImpl.java

@ -1255,6 +1255,7 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
}
}
YieldOrder subYield = BeanUtil.copy(yieldOrder, YieldOrder.class);
subYield.setYpArea(null);
subYield.setFatherYoId(yieldOrder.getId());
subYield.setYoCode(nextYieldOrderCode(yieldOrder.getYoCode()));
subYield.setPartCode(dsPart.getPartCode());
@ -1308,25 +1309,24 @@ public class YieldOrderServiceImpl extends BaseServiceImpl<YieldOrderMapper, Yie
}
private String nextYieldOrderCode(String yoCode) {
// 自增总长度
int len = 2;
// 自增值
Integer num = 0;
String codePattern = yoCode + "-B";
// 编码模式
String codePattern = yoCode.toString() + "-B";
// 使用悲观锁查询当前最大编码
LambdaQueryWrapper<YieldOrder> wrapper = Wrappers.lambdaQuery(YieldOrder.class)
.likeRight(YieldOrder::getYoCode, codePattern)
.orderBy(true, false, YieldOrder::getYoCode)
.last("FOR UPDATE");
// 当前模式下最大编码
LambdaQueryWrapper<YieldOrder> wrapper = Wrappers.lambdaQuery(YieldOrder.class).likeRight(YieldOrder::getYoCode, codePattern).orderBy(true, false, YieldOrder::getYoCode);
YieldOrder yieldOrder = baseMapper.selectOne(wrapper);
List<YieldOrder> list = baseMapper.selectList(wrapper);
if (yieldOrder != null) {
num = Integer.parseInt(yieldOrder.getYoCode().substring(codePattern.length()));
Integer num = 0;
if (!list.isEmpty()) {
String maxCode = list.get(0).getYoCode();
num = Integer.parseInt(maxCode.substring(codePattern.length()));
}
num++;
// 下个编码
int len = Math.max(2, String.valueOf(num).length());
return codePattern + StringPrefixUtils.prefix(String.valueOf(num), "0", len);
}

Loading…
Cancel
Save