提交 bfd383a4 authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/v4.9_create_goods_child_20230918' into…

Merge remote-tracking branch 'origin/v4.9_create_goods_child_20230918' into v4.9_create_goods_child_20230918
...@@ -19,6 +19,7 @@ public enum OrderGoodsTruckBindEnum { ...@@ -19,6 +19,7 @@ public enum OrderGoodsTruckBindEnum {
CANCEL(2, "取消"), CANCEL(2, "取消"),
GET(3, "已接单"), GET(3, "已接单"),
EXPIRE(4, "已失效")
; ;
......
...@@ -33,14 +33,13 @@ public class OrderGoodsIdGenerate { ...@@ -33,14 +33,13 @@ public class OrderGoodsIdGenerate {
public long getOrderGoodsId(Integer size) { public long getOrderGoodsId(Integer size) {
long baseStart = Long.parseLong(DateUtils.formatDate(LocalDate.now(), "yyyyMMdd").get() + "00001");
Object o = redisTemplate.opsForValue().get(RedisConstants.ORDER_GOODS_ID_GENERATE);
if (o == null) {
RLock rLock = null; RLock rLock = null;
try { try {
rLock = redissonClient.getLock(RedisConstants.ORDER_NO_BLOCK + type); rLock = redissonClient.getLock(RedisConstants.ORDER_NO_BLOCK + type);
rLock.lock(5, TimeUnit.SECONDS); rLock.lock(5, TimeUnit.SECONDS);
o = redisTemplate.opsForValue().get(RedisConstants.ORDER_GOODS_ID_GENERATE); long baseStart = Long.parseLong(DateUtils.formatDate(LocalDate.now(), "yyyyMMdd").get() + "00001");
Object o = redisTemplate.opsForHash().get(RedisConstants.ORDER_GOODS_ID, type);
if (o == null) { if (o == null) {
Long maxOrderGoodsId = null; Long maxOrderGoodsId = null;
String maxID = orderGoodsDao.getMaxOrderGoodsId(); String maxID = orderGoodsDao.getMaxOrderGoodsId();
...@@ -49,25 +48,25 @@ public class OrderGoodsIdGenerate { ...@@ -49,25 +48,25 @@ public class OrderGoodsIdGenerate {
} }
if (maxOrderGoodsId == null) { if (maxOrderGoodsId == null) {
maxOrderGoodsId = baseStart; maxOrderGoodsId = 0L;
} }
if (baseStart == maxOrderGoodsId) { if (baseStart > maxOrderGoodsId) {
redisTemplate.opsForValue().increment(RedisConstants.ORDER_GOODS_ID_GENERATE, size); redisTemplate.opsForHash().put(RedisConstants.ORDER_GOODS_ID, type, String.valueOf(baseStart + size));
return baseStart; return baseStart;
} else { } else {
redisTemplate.opsForValue().increment(RedisConstants.ORDER_GOODS_ID_GENERATE, size); long orderGoodsId = maxOrderGoodsId + size;
return maxOrderGoodsId; redisTemplate.opsForHash().put(RedisConstants.ORDER_GOODS_ID, type, String.valueOf(orderGoodsId));
return maxOrderGoodsId + 1;
} }
} else { } else {
long redisOrderGoodsId = Long.parseLong(o.toString()); long redisOrderGoodsId = Long.parseLong(o.toString());
if (redisOrderGoodsId < baseStart) { if (redisOrderGoodsId < baseStart) {
redisOrderGoodsId = baseStart; redisOrderGoodsId = baseStart;
} }
long orderGoodsId = redisOrderGoodsId + size;
redisTemplate.opsForValue().increment(RedisConstants.ORDER_GOODS_ID_GENERATE, size); redisTemplate.opsForHash().put(RedisConstants.ORDER_GOODS_ID, type, String.valueOf(orderGoodsId));
return redisOrderGoodsId; return redisOrderGoodsId;
} }
} catch (Exception e) { } catch (Exception e) {
throw new ServiceSystemException(PerformanceResultEnum.ORDER_GOODS_ID_GENERATE_LOCK, e.getMessage()); throw new ServiceSystemException(PerformanceResultEnum.ORDER_GOODS_ID_GENERATE_LOCK, e.getMessage());
...@@ -81,17 +80,6 @@ public class OrderGoodsIdGenerate { ...@@ -81,17 +80,6 @@ public class OrderGoodsIdGenerate {
log.error("redis 货单ID生成 分布式锁释放异常!", e); log.error("redis 货单ID生成 分布式锁释放异常!", e);
} }
} }
} else {
long redisOrderGoodsId = Long.parseLong(o.toString());
if (redisOrderGoodsId < baseStart) {
redisOrderGoodsId = baseStart;
}
redisTemplate.opsForValue().increment(RedisConstants.ORDER_GOODS_ID_GENERATE, size);
return redisOrderGoodsId;
}
} }
} }
...@@ -7,7 +7,9 @@ import com.clx.order.param.feign.UpdateOrderInfoParam; ...@@ -7,7 +7,9 @@ import com.clx.order.param.feign.UpdateOrderInfoParam;
import com.clx.order.vo.feign.FeignOrderVO; import com.clx.order.vo.feign.FeignOrderVO;
import com.clx.performance.constant.RedisConstants; import com.clx.performance.constant.RedisConstants;
import com.clx.performance.dao.OrderGoodsDao; import com.clx.performance.dao.OrderGoodsDao;
import com.clx.performance.dao.OrderGoodsTruckBindDao;
import com.clx.performance.enums.OrderGoodsStatusEnum; import com.clx.performance.enums.OrderGoodsStatusEnum;
import com.clx.performance.enums.OrderGoodsTruckBindEnum;
import com.clx.performance.model.OrderGoods; import com.clx.performance.model.OrderGoods;
import com.msl.common.base.Optional; import com.msl.common.base.Optional;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
...@@ -40,6 +42,9 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean { ...@@ -40,6 +42,9 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
@Autowired @Autowired
private OrderFeign orderFeign; private OrderFeign orderFeign;
@Autowired
private OrderGoodsTruckBindDao orderGoodsTruckBindDao;
public void expireProduce(LocalDateTime localDateTime, String orderGoodsNo) { public void expireProduce(LocalDateTime localDateTime, String orderGoodsNo) {
redisTemplate.opsForZSet().add(RedisConstants.ORDER_GOODS_STATUS_LAZY, orderGoodsNo, localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli()); redisTemplate.opsForZSet().add(RedisConstants.ORDER_GOODS_STATUS_LAZY, orderGoodsNo, localDateTime.toInstant(ZoneOffset.of("+8")).toEpochMilli());
} }
...@@ -102,7 +107,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean { ...@@ -102,7 +107,7 @@ public class OrderGoodsStatusLazyComponent implements InitializingBean {
log.info("当前货单状态为已完结"); log.info("当前货单状态为已完结");
//更新货单已完结 //更新货单已完结
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, OrderGoodsStatusEnum.Status.COMPLETED.getCode()); orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoodsNo, OrderGoodsStatusEnum.Status.COMPLETED.getCode());
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoodsNo, OrderGoodsTruckBindEnum.Status.EXPIRE.getCode());
BigDecimal residueTransportWeight = orderGoods.getResidueTransportWeight(); BigDecimal residueTransportWeight = orderGoods.getResidueTransportWeight();
UpdateOrderInfoParam updateOrderInfoParam = new UpdateOrderInfoParam(); UpdateOrderInfoParam updateOrderInfoParam = new UpdateOrderInfoParam();
updateOrderInfoParam.setOrderId(orderInfoFeign.getId()); updateOrderInfoParam.setOrderId(orderInfoFeign.getId());
......
...@@ -27,4 +27,6 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe ...@@ -27,4 +27,6 @@ public interface OrderGoodsTruckBindDao extends BaseDao<OrderGoodsTruckBindMappe
Optional<List<OrderGoodsTruckBind>> getValidByTruckNo(String truckNo); Optional<List<OrderGoodsTruckBind>> getValidByTruckNo(String truckNo);
Optional<List<OrderGoodsTruckBind>> selectListByTruckNo(List<String> truckList); Optional<List<OrderGoodsTruckBind>> selectListByTruckNo(List<String> truckList);
void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code);
} }
...@@ -73,4 +73,12 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM ...@@ -73,4 +73,12 @@ public class OrderGoodsTruckBindDaoImpl extends BaseDaoImpl<OrderGoodsTruckBindM
.eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.SUCCESS.getCode()) .eq(OrderGoodsTruckBind::getStatus, OrderGoodsTruckBindEnum.Status.SUCCESS.getCode())
.in(OrderGoodsTruckBind::getTruckNo,truckList).select(OrderGoodsTruckBind::getOrderGoodsNo))); .in(OrderGoodsTruckBind::getTruckNo,truckList).select(OrderGoodsTruckBind::getOrderGoodsNo)));
} }
@Override
public void updateOrderGoodsBindStatus(String orderGoodsNo, Integer code) {
update(lUdWrapper()
.eq(OrderGoodsTruckBind::getOrderGoodsNo, orderGoodsNo)
.set(OrderGoodsTruckBind::getStatus, code)
);
}
} }
...@@ -1114,6 +1114,7 @@ public class OrderChildServiceImpl implements OrderChildService { ...@@ -1114,6 +1114,7 @@ public class OrderChildServiceImpl implements OrderChildService {
if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) <= 0){ if (orderGoods.getResidueTransportWeight().compareTo(BigDecimal.ZERO) <= 0){
orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoods.getOrderGoodsNo(), OrderGoodsStatusEnum.Status.SUCCESS.getCode()); orderGoodsDao.updateOrderGoodsStatusByOrderGoodsNo(orderGoods.getOrderGoodsNo(), OrderGoodsStatusEnum.Status.SUCCESS.getCode());
orderGoodsTruckBindDao.updateOrderGoodsBindStatus(orderGoods.getOrderGoodsNo(), OrderGoodsTruckBindEnum.Status.EXPIRE.getCode());
} }
} }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论