From 1910bf35b77f26d02452c443278c0339d48046e5 Mon Sep 17 00:00:00 2001 From: donqi Date: Wed, 30 Nov 2022 02:09:49 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=85=B3=E8=81=94=E5=95=86?= =?UTF-8?q?=E5=93=81=E6=9C=8D=E5=8A=A1=E6=95=B0=E9=87=8F=E9=9A=8F=E5=AD=90?= =?UTF-8?q?=E5=8D=95=E7=8A=B6=E6=80=81=E4=BF=AE=E6=94=B9=E8=80=8C=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/order/OrderController.java | 36 +++++++----------- .../service/impl/OrderDetailServiceImpl.java | 37 ++++++++++++++++++- 2 files changed, 49 insertions(+), 24 deletions(-) diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java index 1a5895ea..47492cab 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderController.java @@ -59,6 +59,11 @@ import org.springframework.web.bind.annotation.ResponseBody; import java.math.BigDecimal; import java.text.ParseException; +import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.ZoneId; +import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.stream.Collectors; @@ -511,33 +516,18 @@ public class OrderController extends BaseController { List overTimeList = (List)overTimeRes.get("data"); response.setOverTimeOrderNum(overTimeList.size()); // 统计今日单量 - Calendar today = Calendar.getInstance(); - today.set(Calendar.SECOND, 0); - today.set(Calendar.MINUTE, 0); - today.set(Calendar.HOUR_OF_DAY, 0); - today.set(Calendar.MILLISECOND, 0); + LocalDateTime today = LocalDateTime.of(LocalDate.now(), LocalTime.MIN); orderDetail.setOrderStatus(OrderStatus.GOING.code()); - orderDetail.setExpectTimeStart(today.getTime()); - today.set(Calendar.SECOND, 23); - today.set(Calendar.MINUTE, 59); - today.set(Calendar.HOUR_OF_DAY, 59); - today.set(Calendar.MILLISECOND, 0); - orderDetail.setExpectTimeEnd(today.getTime()); + orderDetail.setExpectTimeStart(Date.from(today.atZone(ZoneId.systemDefault()).toInstant())); + today = LocalDateTime.of(LocalDate.now(), LocalTime.MAX); + orderDetail.setExpectTimeEnd(Date.from(today.atZone(ZoneId.systemDefault()).toInstant())); response.setTodayOrderNum(orderDetailService.countOrderDetailList(orderDetail)); // 统计明日单量 - Calendar tomorrow = Calendar.getInstance(); - tomorrow.add(Calendar.DATE, 1); - tomorrow.set(Calendar.SECOND, 0); - tomorrow.set(Calendar.MINUTE, 0); - tomorrow.set(Calendar.HOUR_OF_DAY, 0); - tomorrow.set(Calendar.MILLISECOND, 0); + LocalDateTime tomorrow = LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MIN); orderDetail.setOrderStatus(OrderStatus.GOING.code()); - orderDetail.setExpectTimeStart(today.getTime()); - tomorrow.set(Calendar.SECOND, 23); - tomorrow.set(Calendar.MINUTE, 59); - tomorrow.set(Calendar.HOUR_OF_DAY, 59); - tomorrow.set(Calendar.MILLISECOND, 0); - orderDetail.setExpectTimeEnd(today.getTime()); + orderDetail.setExpectTimeStart(Date.from(tomorrow.atZone(ZoneId.systemDefault()).toInstant())); + tomorrow = LocalDateTime.of(LocalDate.now().plusDays(1), LocalTime.MAX); + orderDetail.setExpectTimeEnd(Date.from(tomorrow.atZone(ZoneId.systemDefault()).toInstant())); response.setTomorrowOrderNum(orderDetailService.countOrderDetailList(orderDetail)); } catch (Exception e) { e.printStackTrace(); diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java index ff0fefad..dae236d4 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java @@ -15,10 +15,12 @@ import com.ghy.common.utils.AdapayUtils; import com.ghy.common.utils.ObjectUtils; import com.ghy.common.utils.StringUtils; import com.ghy.order.domain.OrderDetail; +import com.ghy.order.domain.OrderGoods; import com.ghy.order.domain.OrderMaster; import com.ghy.order.mapper.OrderDetailMapper; import com.ghy.order.mapper.OrderMasterMapper; import com.ghy.order.service.OrderDetailService; +import com.ghy.order.service.OrderGoodsService; import com.ghy.order.service.OrderMasterService; import com.ghy.payment.domain.FinancialChangeRecord; import com.ghy.payment.domain.FinancialDetail; @@ -47,6 +49,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicLong; +import java.util.stream.Collectors; import static java.time.temporal.ChronoField.*; @@ -78,6 +81,8 @@ public class OrderDetailServiceImpl implements OrderDetailService { private FinancialDetailService financialDetailService; @Resource private FinancialChangeRecordService financialChangeRecordService; + @Resource + private OrderGoodsService orderGoodsService; @Override public int insertOrderDetail(OrderDetail orderDetail) { @@ -85,14 +90,44 @@ public class OrderDetailServiceImpl implements OrderDetailService { } @Override + @Transactional(rollbackFor = Exception.class) public int updateOrderDetail(OrderDetail orderDetail) { if (orderDetail.getOrderStatus() == null) { return orderDetailMapper.updateOrderDetail(orderDetail); } int orderStatus = orderDetail.getOrderStatus(); boolean flag = Boolean.TRUE; - int result = orderDetailMapper.updateOrderDetail(orderDetail); // 查子单信息 + OrderDetail originOrderDetail = this.orderDetailMapper.selectById(orderDetail.getId()); + int result = orderDetailMapper.updateOrderDetail(orderDetail); + // 查询主单关联商品 + List masterOrderGoodsList = orderGoodsService.selectByOrderMasterId(originOrderDetail.getOrderMasterId()); + Map masterGoodsMap = masterOrderGoodsList.stream().collect(Collectors.toMap(OrderGoods::getGoodsStandardId, obj -> obj)); + // 子单修改从服务中到确认中需要修改已服务商品数量,从确认中到服务中需要重置已服务商品数量 + if (OrderStatus.FINISH_CHECK.code() == orderDetail.getOrderStatus() && originOrderDetail.getOrderStatus() < OrderStatus.FINISH_CHECK.code()) { + List orderGoodsList = orderGoodsService.selectByOrderDetailId(orderDetail.getId()); + orderGoodsList.stream().forEach(orderGoods -> { + orderGoods.setServerGoodsNum(orderGoods.getGoodsNum()); + orderGoodsService.updateOrderGoods(orderGoods); + // 主单关联商品相应修改已服务数量 + Integer masterServerGoodsNum = masterGoodsMap.get(orderGoods.getGoodsStandardId()).getServerGoodsNum(); + masterGoodsMap.get(orderGoods.getGoodsStandardId()).setServerGoodsNum(masterServerGoodsNum += orderGoods.getServerGoodsNum()); + }); + } else if (OrderStatus.FINISH_CHECK.code() == originOrderDetail.getOrderStatus() && orderDetail.getOrderStatus() < OrderStatus.FINISH_CHECK.code()){ + List orderGoodsList = orderGoodsService.selectByOrderDetailId(orderDetail.getId()); + orderGoodsList.stream().forEach(orderGoods -> { + orderGoods.setServerGoodsNum(0); + orderGoodsService.updateOrderGoods(orderGoods); + // 主单关联商品相应修改已服务数量 + Integer masterServerGoodsNum = masterGoodsMap.get(orderGoods.getGoodsStandardId()).getServerGoodsNum(); + masterGoodsMap.get(orderGoods.getGoodsStandardId()).setServerGoodsNum(masterServerGoodsNum -= orderGoods.getGoodsNum()); + }); + } + // 更新主单关联商品 + masterOrderGoodsList.stream().forEach(masterOrderGoods ->{ + orderGoodsService.updateOrderGoods(masterOrderGoods); + }); + OrderDetail detailInfo = this.orderDetailMapper.selectById(orderDetail.getId()); // 判断是否需要更新主单状态.即是否有 // 1.更新大于当前 detail 1/2/3