From 1f2140b4eeeadef7b139bd3ab7fdf1ce57fa9a12 Mon Sep 17 00:00:00 2001
From: gongzuming <gongzuming>
Date: 星期日, 08 九月 2024 16:25:57 +0800
Subject: [PATCH] 分配库位
---
src/main/java/com/mzl/flower/service/payment/OrderService.java | 205 ++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 153 insertions(+), 52 deletions(-)
diff --git a/src/main/java/com/mzl/flower/service/payment/OrderService.java b/src/main/java/com/mzl/flower/service/payment/OrderService.java
index 44149e3..e840003 100644
--- a/src/main/java/com/mzl/flower/service/payment/OrderService.java
+++ b/src/main/java/com/mzl/flower/service/payment/OrderService.java
@@ -131,47 +131,71 @@
@Autowired
private OrderItemCheckMapper orderItemCheckMapper;
+ @Autowired
+ private RedisLockService lockService;
+
public void changeFlower2Cart(CartSaveDTO dto) {
String userId = SecurityUtils.getUserId();
- Cart c = cartMapper.selectOne(new QueryWrapper<Cart>()
- .eq("create_by", userId).eq("flower_id", dto.getId()));
- if (c == null) {
- if (dto.getNum() <= 0) {
- throw new ValidationException("数量不能小于等于0,请刷新页面重试");
- }
- c = new Cart();
- c.setFlowerId(dto.getId());
- c.setNum(dto.getNum());
- c.create(userId);
+ String key = userId + "_" + dto.getId();
+ boolean lock = lockService.getObjectLock(RedisLockService.LOCK_KEY_CART_, key);
+ if(!lock){
+ return;
+ }
- cartMapper.insert(c);
- } else {
- c.setNum(c.getNum() + dto.getNum());
- c.update(userId);
- if (c.getNum() <= 0) {
- cartMapper.deleteById(c.getId());
+ try {
+ Cart c = cartMapper.selectOne(new QueryWrapper<Cart>()
+ .eq("create_by", userId).eq("flower_id", dto.getId()));
+ if (c == null) {
+ if (dto.getNum() <= 0) {
+ throw new ValidationException("数量不能小于等于0,请刷新页面重试");
+ }
+ c = new Cart();
+ c.setFlowerId(dto.getId());
+ c.setNum(dto.getNum());
+ c.create(userId);
+
+ cartMapper.insert(c);
} else {
- cartMapper.updateById(c);
+ c.setNum(c.getNum() + dto.getNum());
+ c.update(userId);
+ if (c.getNum() <= 0) {
+ cartMapper.deleteById(c.getId());
+ } else {
+ cartMapper.updateById(c);
+ }
}
+ } finally {
+ lockService.releaseObjectLock(RedisLockService.LOCK_KEY_CART_, key);
}
}
public void saveFlower2Cart(CartSaveDTO dto) {
String userId = SecurityUtils.getUserId();
- Cart c = cartMapper.selectOne(new QueryWrapper<Cart>()
- .eq("create_by", userId).eq("flower_id", dto.getId()));
- if (c == null) {
- c = new Cart();
- c.setFlowerId(dto.getId());
- c.setNum(dto.getNum());
- c.create(userId);
- cartMapper.insert(c);
- } else {
- c.setNum(dto.getNum());
- c.update(userId);
+ String key = userId + "_" + dto.getId();
+ boolean lock = lockService.getObjectLock(RedisLockService.LOCK_KEY_CART_, key);
+ if(!lock){
+ return;
+ }
- cartMapper.updateById(c);
+ try {
+ Cart c = cartMapper.selectOne(new QueryWrapper<Cart>()
+ .eq("create_by", userId).eq("flower_id", dto.getId()));
+ if (c == null) {
+ c = new Cart();
+ c.setFlowerId(dto.getId());
+ c.setNum(dto.getNum());
+ c.create(userId);
+
+ cartMapper.insert(c);
+ } else {
+ c.setNum(dto.getNum());
+ c.update(userId);
+
+ cartMapper.updateById(c);
+ }
+ } finally {
+ lockService.releaseObjectLock(RedisLockService.LOCK_KEY_CART_, key);
}
}
@@ -519,7 +543,27 @@
* 合伙人订单定时发货
*/
public void setPartnerOrderSend() {
- orderMapper.setPartnerOrderReceive();
+ List<Order> orders = orderMapper.getPartnerOrderReceive();
+ if(orders == null || orders.size() == 0){
+ return;
+ }
+ for (Order o : orders) {
+ //set status_backend = 'RECEIVE', status = 'RECEIVE'
+ o.setStatusBackend("RECEIVE");
+ o.setStatus("RECEIVE");
+ //发送微信发货请求
+ JSONObject jsonObject = sendWxDeliveryGood(o);
+ if (jsonObject != null && (int) jsonObject.get("errcode") == 0) {
+ o.setWxDeliveryGood(true);
+ o.setWxDeliveryMsg(GsonUtil.toJson(jsonObject));
+ } else {
+ o.setWxDeliveryGood(false);
+ o.setWxDeliveryMsg(GsonUtil.toJson(jsonObject));
+ }
+
+ orderMapper.updateById(o);
+ }
+ //orderMapper.setPartnerOrderReceive();
}
/**
@@ -539,6 +583,17 @@
o.setStatus(Constants.ORDER_STATUS.RECEIVE.name());
o.setStatusBackend(Constants.ORDER_STATUS_BACKEND.RECEIVE.name());
o.update(SecurityUtils.getUserId());
+
+ //发送微信发货请求
+ JSONObject jsonObject = sendWxDeliveryGood(o);
+ if (jsonObject != null && (int) jsonObject.get("errcode") == 0) {
+ o.setWxDeliveryGood(true);
+ o.setWxDeliveryMsg(GsonUtil.toJson(jsonObject));
+ } else {
+ o.setWxDeliveryGood(false);
+ o.setWxDeliveryMsg(GsonUtil.toJson(jsonObject));
+ }
+
orderMapper.updateById(o);
}
@@ -701,6 +756,74 @@
return ls;
}
+ public List<OrderCheckLocationListDTO> selectOrderCheckLocationList(OrderQueryDTO dto) {
+ dto.setIdList(splitParam(dto.getIds()));
+ dto.setStartDate(parseLocalDateTime(dto.getStartDateStr(), true));
+ dto.setEndDate(parseLocalDateTime(dto.getEndDateStr(), false));
+
+ dto.setCreateStartDate(parseLocalDateTime(dto.getCreateStartDateStr(), 17, 0, 0, -1));
+ dto.setCreateEndDate(parseLocalDateTime(dto.getCreateEndDateStr(), 17, 0, 0, 0));
+
+ List<OrderCheckListDTO> ls = orderMapper.selectOrderCheckList(dto);
+
+ List<OrderCheckLocationListDTO> result = new ArrayList<>();
+
+ if (ls != null && ls.size() > 0) {
+ List<String> orderIds = new ArrayList<>();
+ Map<Long, OrderCheckLocationListDTO> rMap = new HashMap<>();
+ Map<String, OrderCheckListDTO> orderMap = new HashMap<>();
+ for (OrderCheckListDTO c : ls) {
+ orderIds.add(c.getId());
+
+ orderMap.put(c.getId(), c);
+
+ Long locationId = c.getWarehouseLocationId();
+ OrderCheckLocationListDTO llc = rMap.get(locationId);
+ if(llc == null){
+ llc = new OrderCheckLocationListDTO();
+ BeanUtils.copyProperties(c, llc);
+ rMap.put(locationId, llc);
+
+ result.add(llc);
+ }
+ }
+
+ Map<Long, String> stationMap = prepareStationMap();
+
+ List<OrderItem> itemList = orderItemMapper.selectList(new QueryWrapper<OrderItem>()
+ .in("order_id", orderIds));
+ Map<String, List<OrderItemLocationListDTO>> map = new HashMap<>();
+
+ for (OrderItem oi : itemList) {
+ String orderId = oi.getOrderId();
+ List<OrderItemLocationListDTO> ll = map.computeIfAbsent(orderId, k -> new ArrayList<>());
+ OrderItemLocationListDTO d = new OrderItemLocationListDTO();
+ BeanUtils.copyProperties(oi, d);
+ d.setStationName(stationMap.get(oi.getStationId()));
+
+ OrderCheckListDTO c = orderMap.get(oi.getOrderId());
+ d.setOrderNo(c.getOrderNo());
+ d.setOrderId(c.getId());
+
+ ll.add(d);
+ }
+
+ for (OrderCheckListDTO c : ls) {
+ String orderId = c.getId();
+ Long locationId = c.getWarehouseLocationId();
+ OrderCheckLocationListDTO r = rMap.get(locationId);
+ List<OrderItemLocationListDTO> items = r.getItems();
+ if(items == null){
+ items = new ArrayList<>();
+ r.setItems(items);
+ }
+ items.addAll(map.get(orderId));
+ }
+ }
+
+ return result;
+ }
+
public Page<OrderListDTO> selectPartnerOrderList(Page page, OrderQueryDTO dto) {
Partner p = getCurrentPartner();
dto.setPartnerId(p.getId());
@@ -787,17 +910,6 @@
o.setStatusBackend(Constants.ORDER_STATUS_BACKEND.EVALUATE.name());
o.setReceiveTime(LocalDateTime.now());
o.update("sys");
-
-
- //发送微信发货请求
- JSONObject jsonObject = sendWxDeliveryGood(o);
- if (jsonObject != null && (int) jsonObject.get("errcode") == 0) {
- o.setWxDeliveryGood(true);
- o.setWxDeliveryMsg(GsonUtil.toJson(jsonObject));
- } else {
- o.setWxDeliveryGood(false);
- o.setWxDeliveryMsg(GsonUtil.toJson(jsonObject));
- }
orderMapper.updateById(o);
}
@@ -860,17 +972,6 @@
o.setStatusBackend(Constants.ORDER_STATUS_BACKEND.EVALUATE.name());
o.setReceiveTime(LocalDateTime.now());
o.update(userId);
-
- //发送微信发货请求
- JSONObject jsonObject = sendWxDeliveryGood(o);
- if (jsonObject != null && (int) jsonObject.get("errcode") == 0) {
- o.setWxDeliveryGood(true);
- o.setWxDeliveryMsg(GsonUtil.toJson(jsonObject));
- } else {
- o.setWxDeliveryGood(false);
- o.setWxDeliveryMsg(GsonUtil.toJson(jsonObject));
- }
-
orderMapper.updateById(o);
}
--
Gitblit v1.9.3