diff --git a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java index b4c4fb91..5acd3158 100644 --- a/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java +++ b/ghy-admin/src/main/java/com/ghy/web/controller/order/OrderDetailController.java @@ -26,9 +26,11 @@ import com.ghy.order.request.OrderProcessRequest; import com.ghy.order.service.*; import com.ghy.payment.domain.FinancialChangeRecord; import com.ghy.payment.domain.FinancialDetail; +import com.ghy.payment.domain.FinancialMaster; import com.ghy.payment.domain.OrderTimeoutRecord; import com.ghy.payment.service.FinancialChangeRecordService; import com.ghy.payment.service.FinancialDetailService; +import com.ghy.payment.service.FinancialMasterService; import com.ghy.payment.service.OrderFineRecordService; import com.ghy.system.domain.SysArea; import com.ghy.system.service.ISysAreaService; @@ -99,6 +101,8 @@ public class OrderDetailController extends BaseController { private IWorkerCertificationService workerCertificationService; @Autowired private IOrderAssessLabelService orderAssessLabelService; + @Autowired + private FinancialMasterService financialMasterService; @RequiresPermissions("order:detail:view") @GetMapping() @@ -123,6 +127,7 @@ public class OrderDetailController extends BaseController { OrderDetail detail = orderDetailService.selectById(request.getId()); // 主单信息 OrderMaster orderMaster = orderMasterService.selectById(detail.getOrderMasterId()); + FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderMaster.getId()); // 初始化属性 OrderListResponse orderListResponse = new OrderListResponse(); List standardList = new ArrayList<>(); @@ -192,7 +197,18 @@ public class OrderDetailController extends BaseController { orderStandard.setWaitServerNum(orderStandard.getStandardNum() - orderStandard.getServerNum()); standardList.add(orderStandard); } - + if(this.checkIsOnlyServer(orderMaster.getId(), detail.getWorkerId())){ + BigDecimal workerFee = financialMaster.getPayMoney(); + List financialDetailList = financialDetailService.selectByFinancialMasterId(financialMaster.getId()); + for (FinancialDetail param : financialDetailList) { + if (!detail.getWorkerId().equals(param.getPayeeId())) { + workerFee = workerFee.subtract(param.getPayMoney()); + } + } + orderListResponse.setPayMoney(workerFee); + }else { + orderListResponse.setPayMoney(detailPayMoney); + } // 编辑返回属性 orderListResponse.setOrderDetailId(detail.getId()); orderListResponse.setOrderDetailCode(detail.getCode()); @@ -202,7 +218,6 @@ public class OrderDetailController extends BaseController { orderListResponse.setGoodsLogoUrl(goods.getGoodsImgUrl()); orderListResponse.setDiscountMoney(financialDetail.getDiscountMoney()); orderListResponse.setTotalMoney(financialDetail.getTotalMoney()); - orderListResponse.setPayMoney(detailPayMoney); orderListResponse.setWorkerName(workerName); orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone()); orderListResponse.setMasterWorkerName(masterWorkerName); @@ -244,6 +259,7 @@ public class OrderDetailController extends BaseController { // 主单信息 OrderMaster orderMaster = orderMasterService.selectById(detail.getOrderMasterId()); + FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderMaster.getId()); // 初始化属性 OrderListResponse orderListResponse = new OrderListResponse(); List standardList = new ArrayList<>(); @@ -299,6 +315,19 @@ public class OrderDetailController extends BaseController { OrderTimeoutRecord orderTimeoutRecord = orderFineRecordService.selectByDetailIdAndStatus(detail.getId(), detail.getOrderStatus()); Boolean isOverTime = orderTimeoutRecord == null ? false : true; + if(this.checkIsOnlyServer(orderMaster.getId(), detail.getWorkerId())){ + BigDecimal workerFee = financialMaster.getPayMoney(); + List financialDetailList = financialDetailService.selectByFinancialMasterId(financialMaster.getId()); + for (FinancialDetail param : financialDetailList) { + if (!detail.getWorkerId().equals(param.getPayeeId())) { + workerFee = workerFee.subtract(param.getPayMoney()); + } + } + orderListResponse.setPayMoney(workerFee); + }else { + orderListResponse.setPayMoney(detailPayMoney); + } + // 编辑返回属性 orderListResponse.setOrderDetailId(detail.getId()); orderListResponse.setOrderDetailCode(detail.getCode()); @@ -308,7 +337,6 @@ public class OrderDetailController extends BaseController { orderListResponse.setGoodsLogoUrl(goods.getGoodsImgUrl()); orderListResponse.setDiscountMoney(financialDetail.getDiscountMoney()); orderListResponse.setTotalMoney(financialDetail.getTotalMoney()); - orderListResponse.setPayMoney(detailPayMoney); orderListResponse.setWorkerName(workerName); orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone()); orderListResponse.setCustomerName(customerAddress.getName()); @@ -335,6 +363,7 @@ public class OrderDetailController extends BaseController { @PostMapping("/after/list") @ResponseBody public TableDataInfo afterServiceList(@RequestBody OrderDetail orderDetail) { + FinancialMaster financialMaster = financialMasterService.selectByOrderMasterId(orderDetail.getOrderMasterId()); AfterServiceRecord afterServiceRecord = new AfterServiceRecord(); afterServiceRecord.setExcludeAfterServiceFinished(Boolean.TRUE); List afterServiceRecordList = afterServiceRecordService.selectAfterServiceRecordList(afterServiceRecord); @@ -413,6 +442,20 @@ public class OrderDetailController extends BaseController { OrderTimeoutRecord orderTimeoutRecord = orderFineRecordService.selectByDetailIdAndStatus(detail.getId(), detail.getOrderStatus()); Boolean isOverTime = orderTimeoutRecord == null ? false : true; + if(this.checkIsOnlyServer(orderMaster.getId(), detail.getWorkerId())){ + BigDecimal workerFee = financialMaster.getPayMoney(); + List financialDetailList = financialDetailService.selectByFinancialMasterId(financialMaster.getId()); + for (FinancialDetail param : financialDetailList) { + if (!detail.getWorkerId().equals(param.getPayeeId())) { + workerFee = workerFee.subtract(param.getPayMoney()); + } + } + orderListResponse.setPayMoney(workerFee); + }else { + orderListResponse.setPayMoney(detailPayMoney); + } + + // 编辑返回属性 orderListResponse.setOrderDetailId(detail.getId()); orderListResponse.setOrderDetailCode(detail.getCode()); @@ -422,7 +465,6 @@ public class OrderDetailController extends BaseController { orderListResponse.setGoodsLogoUrl(goods.getGoodsImgUrl()); orderListResponse.setDiscountMoney(financialDetail.getDiscountMoney()); orderListResponse.setTotalMoney(financialDetail.getTotalMoney()); - orderListResponse.setPayMoney(detailPayMoney); orderListResponse.setWorkerName(workerName); orderListResponse.setWorkerPhone(worker == null ? "" : worker.getPhone()); orderListResponse.setCustomerName(customerAddress.getName()); @@ -648,4 +690,34 @@ public class OrderDetailController extends BaseController { return AjaxResult.error("查询改价失败!"); } } + + private boolean checkIsOnlyServer(Long orderMasterId, Long workId){ + // 找出原单的数量 + List orderGoodsList = orderGoodsService.selectByOrderMasterId(orderMasterId); + // 找出原单关联的细单的商品数量 + List orderDetailList = orderDetailService.selectByOrderMasterId(orderMasterId); + for (OrderDetail detail : orderDetailList){ + // 非一个师傅接单 + if(!workId.equals(detail.getWorkerId())){ + return false; + } + // 子单数量 + List orderDetailGoodsList = orderGoodsService.selectByOrderDetailId(detail.getId()); + // 计算剩余未分配的商品数量 + for (OrderGoods detailGoods : orderDetailGoodsList) { + for(OrderGoods masterGoods : orderGoodsList){ + if(Objects.equals(masterGoods.getGoodsStandardId(), detailGoods.getGoodsStandardId())){ + masterGoods.setGoodsNum(masterGoods.getGoodsNum() - detailGoods.getGoodsNum()); + } + } + } + } + // 有单派完. + for (OrderGoods orderGoods : orderGoodsList) { + if (orderGoods.getGoodsNum() > 0) { + return false; + } + } + return true; + } }