|
|
@@ -95,15 +95,18 @@ public class KwoTradeOrderService {
|
|
|
* @Param param:
|
|
|
* @return: void
|
|
|
*/
|
|
|
- public void addPurchaseOrderDraft(PurchaseOrderDraftParam param) {
|
|
|
+ public HttpResult addPurchaseOrderDraft(PurchaseOrderDraftParam param) {
|
|
|
String orderNo = getOrderNo();
|
|
|
+ if (StringUtils.isBlank(orderNo)) {
|
|
|
+ return HttpResult.error("采购下单草稿生成订单号异常!");
|
|
|
+ }
|
|
|
KwoTradeOrder order = BeanUtils.copyProperties(param, KwoTradeOrder.class);
|
|
|
order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(orderNo)
|
|
|
.setUnit(Objects.nonNull(param.getGoodsInfo()) ? param.getGoodsInfo().getUnit() : null)
|
|
|
.setSource(DictEnum.TORDER_SOURCE_1.getValue()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()));
|
|
|
kwoTradeOrderMapper.insert(order);
|
|
|
addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
|
|
|
-
|
|
|
+ return HttpResult.ok("采购下单草稿保存成功!");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -231,14 +234,18 @@ public class KwoTradeOrderService {
|
|
|
* @Param param:
|
|
|
* @return: void
|
|
|
*/
|
|
|
- public void addValetOrderDraft(ValetOrderDraftParam param) {
|
|
|
+ public HttpResult addValetOrderDraft(ValetOrderDraftParam param) {
|
|
|
String orderNo = getOrderNo();
|
|
|
+ if (StringUtils.isBlank(orderNo)) {
|
|
|
+ return HttpResult.error("代客下单草稿生成订单号异常!");
|
|
|
+ }
|
|
|
KwoTradeOrder order = BeanUtils.copyProperties(param, KwoTradeOrder.class);
|
|
|
order.setEntId(LoginUserHolder.getEntId()).setTOrderNo(orderNo)
|
|
|
.setUnit(Objects.nonNull(param.getGoodsInfo()) ? param.getGoodsInfo().getUnit() : null)
|
|
|
.setSource(DictEnum.TORDER_SOURCE_2.getValue()).setStatus(Integer.valueOf(DictEnum.TORDER_STATUS_0.getValue()));
|
|
|
kwoTradeOrderMapper.insert(order);
|
|
|
addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
|
|
|
+ return HttpResult.ok("代客下单草稿保存成功!");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -248,8 +255,11 @@ public class KwoTradeOrderService {
|
|
|
* @Param param:
|
|
|
* @return: void
|
|
|
*/
|
|
|
- public void addPurchaseOrderSubmit(PurchaseOrderParam param) {
|
|
|
+ public HttpResult addPurchaseOrderSubmit(PurchaseOrderParam param) {
|
|
|
String orderNo = getOrderNo();
|
|
|
+ if (StringUtils.isBlank(orderNo)) {
|
|
|
+ return HttpResult.error("采购下单提交生成订单号异常!");
|
|
|
+ }
|
|
|
GoodsInfo goodsInfo = param.getGoodsInfo();
|
|
|
if (Objects.isNull(goodsInfo.getPriceRangeId())) {
|
|
|
throw new BusinessException("采购下单价格梯度信息不能为空!");
|
|
|
@@ -270,6 +280,7 @@ public class KwoTradeOrderService {
|
|
|
throw new BusinessException(updateResult.getMsg());
|
|
|
}
|
|
|
addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
|
|
|
+ return HttpResult.ok("采购下单提交成功!");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -364,8 +375,11 @@ public class KwoTradeOrderService {
|
|
|
* @Param param:
|
|
|
* @return: void
|
|
|
*/
|
|
|
- public void addValetOrderSubmit(ValetOrderParam param) {
|
|
|
+ public HttpResult addValetOrderSubmit(ValetOrderParam param) {
|
|
|
String orderNo = getOrderNo();
|
|
|
+ if (StringUtils.isBlank(orderNo)) {
|
|
|
+ return HttpResult.error("代客下单提交生成订单号异常!");
|
|
|
+ }
|
|
|
OrderCheckDTO orderCheck = BeanUtils.copyProperties(param, OrderCheckDTO.class);
|
|
|
getTopEnt(orderCheck, param.getUnitInfo());
|
|
|
orderCheck.setGoodsId(param.getGoodsInfo().getGoodsId()).setUnitPrice(param.getGoodsInfo().getUnitPrice())
|
|
|
@@ -392,6 +406,7 @@ public class KwoTradeOrderService {
|
|
|
throw new BusinessException(updateResult.getMsg());
|
|
|
}
|
|
|
addOtherOrderInfo(order, BeanUtils.copyProperties(param, ValetOrderParam.class), false);
|
|
|
+ return HttpResult.ok("代客下单提交成功!");
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -402,9 +417,9 @@ public class KwoTradeOrderService {
|
|
|
*/
|
|
|
private String getOrderNo() {
|
|
|
Date date = new Date();
|
|
|
- String key = OrderGenerateSeqNoUtils.getKey(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER, date);
|
|
|
String lockKey = String.format(RedisConstant.TORDER_NO_GENERATE_KEY, DateUtils.formatDateToYYMMDD(date));
|
|
|
try {
|
|
|
+ String key = OrderGenerateSeqNoUtils.getKey(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER, date);
|
|
|
if (Boolean.FALSE.equals(RedissonUtils.exists(key))) {
|
|
|
if (Boolean.FALSE.equals(RedissonUtils.tryLock(lockKey, 5L, 10L))) {
|
|
|
throw new BusinessException("业务繁忙,请稍后再试!");
|
|
|
@@ -417,6 +432,10 @@ public class KwoTradeOrderService {
|
|
|
}
|
|
|
}
|
|
|
return OrderGenerateSeqNoUtils.getOtherSeqNo(RedisOrderGenerateEnum.TRADE_ORDER, OrderRuleEnum.TRADE_ORDER);
|
|
|
+
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("生成贸易订单号异常:{}",e.getMessage(),e);
|
|
|
+ return null;
|
|
|
} finally {
|
|
|
RedissonUtils.unlock(lockKey);
|
|
|
}
|
|
|
@@ -575,7 +594,8 @@ public class KwoTradeOrderService {
|
|
|
if (Objects.equals(source, DictEnum.TORDER_SOURCE_2.getValue()) && !Objects.equals(status, DictEnum.TORDER_STATUS_0.getValue())) {
|
|
|
throw new BusinessException("代客下单只能修改已保存状态的订单!");
|
|
|
}
|
|
|
- if (kwoTradeOrderUnitService.entMatch(param.getId(), LoginUserHolder.getEntId(), source)) {
|
|
|
+ if (!Objects.equals(0, order.getStatus())
|
|
|
+ && kwoTradeOrderUnitService.entMatch(param.getId(), LoginUserHolder.getEntId(), source)) {
|
|
|
throw new BusinessException("无权限修改此订单!");
|
|
|
}
|
|
|
if (Objects.equals(param.getOperateType(), 1)) {
|
|
|
@@ -619,10 +639,10 @@ public class KwoTradeOrderService {
|
|
|
|
|
|
private void checkParams(UpdateOrderParam param, String source) {
|
|
|
if (Objects.isNull(param.getAmount())) {
|
|
|
- throw new BusinessException("订单总量不能为空且!");
|
|
|
+ throw new BusinessException("订单总量不能为空!");
|
|
|
}
|
|
|
if (Objects.isNull(param.getPrice())) {
|
|
|
- throw new BusinessException("订单金额不能为空且!");
|
|
|
+ throw new BusinessException("订单金额不能为空!");
|
|
|
}
|
|
|
if (StringUtils.isBlank(param.getTrading())) {
|
|
|
throw new BusinessException("交易方式不能为空!");
|
|
|
@@ -673,8 +693,8 @@ public class KwoTradeOrderService {
|
|
|
if (Objects.isNull(goodsInfo.getPriceRangeId()) && Objects.equals(source, DictEnum.TORDER_SOURCE_1.getValue())) {
|
|
|
throw new BusinessException("价格段id不能为空!");
|
|
|
}
|
|
|
- if (Objects.isNull(goodsInfo.getUnitPrice()) || goodsInfo.getUnitPrice().compareTo(BigDecimal.ZERO) < 0) {
|
|
|
- throw new BusinessException("订单成交单价不能为空且不能为负数!");
|
|
|
+ if (Objects.isNull(goodsInfo.getUnitPrice()) || goodsInfo.getUnitPrice().compareTo(BigDecimal.ZERO) <= 0) {
|
|
|
+ throw new BusinessException("订单成交单价不能为空且必须大于零!");
|
|
|
}
|
|
|
|
|
|
List<UnitInfo> unitInfos = param.getUnitInfo();
|
|
|
@@ -939,7 +959,9 @@ public class KwoTradeOrderService {
|
|
|
if (CollectionUtils.isNotEmpty(list)) {
|
|
|
throw new BusinessException("删除操作仅针对“已保存”状态的订单");
|
|
|
}
|
|
|
- if (kwoTradeOrderUnitService.entBatchMatch(ids, LoginUserHolder.getEntId(), String.valueOf(param.getOrderType()))) {
|
|
|
+ //排除草稿状态权限匹配
|
|
|
+ List<Long> filterIds = list.stream().filter(e -> !(Objects.equals(e.getStatus(), 0))).map(KwoTradeOrder::getId).toList();
|
|
|
+ if (kwoTradeOrderUnitService.entBatchMatch(filterIds, LoginUserHolder.getEntId(), String.valueOf(param.getOrderType()))) {
|
|
|
throw new BusinessException("无订单操作权限!");
|
|
|
}
|
|
|
LambdaUpdateWrapper<KwoTradeOrder> updateWrapper = new LambdaUpdateWrapper<>();
|