浏览代码

Merge branch 'master' of http://git.dayaedu.com/yonge/mec into super_fee

zouxuan 4 年之前
父节点
当前提交
511a96efc1

+ 35 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SellOrderDao.java

@@ -13,6 +13,15 @@ public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
     int batchInsert(@Param("sellOrders") List<SellOrder> sellOrders);
 
     /**
+     * 获取订单的销售列表
+     *
+     * @param orderId
+     * @return
+     */
+    List<SellOrder> getOrderSellOrder(@Param("orderId") Long orderId);
+
+
+    /**
      * 获取分部学校的收入支出(乐团订单)
      *
      * @param startTime
@@ -59,9 +68,35 @@ public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
 
     /**
      * 维修单和商品销售
+     *
      * @param startTime
      * @param endTime
      * @return
      */
     List<OperatingReport> getRepairGoodsSellGroupMonthReport(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    /**
+     * 根据订单号删除
+     *
+     * @param orderId
+     * @return
+     */
+    int deleteByOrderId(@Param("orderId") Long orderId);
+
+    /**
+     * 获取乐团订单总收入
+     *
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<OperatingReport> getMusicGroupIncome(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    /**
+     * 外部订单总收入
+     * @param startTime
+     * @param endTime
+     * @return
+     */
+    List<OperatingReport> getOutOrderIncome(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentRouteOrderDao.java

@@ -44,4 +44,12 @@ public interface StudentPaymentRouteOrderDao extends BaseDAO<Long, StudentPaymen
     );
 
     List<StudentPaymentOrderExportDto> ExportQueryPage(Map<String, Object> params);
+
+    /**
+     * 根据订单号删除
+     *
+     * @param orderNo
+     * @return
+     */
+    Boolean deleteByOrderNo(@Param("orderNo") String orderNo);
 }

+ 53 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/OutOrderInfoDto.java

@@ -0,0 +1,53 @@
+package com.ym.mec.biz.dal.dto;
+
+import com.ym.mec.biz.dal.entity.SellOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+public class OutOrderInfoDto {
+
+    private StudentPaymentOrder StudentPaymentOrder;
+
+    @ApiModelProperty(value = "服务收入",required = true)
+    private BigDecimal serviceAmount = BigDecimal.ZERO;
+
+    @ApiModelProperty(value = "销售收入",required = true)
+    private BigDecimal goodsAmount = BigDecimal.ZERO;
+
+    private List<SellOrder> sellOrders;
+
+    public List<SellOrder> getSellOrders() {
+        return sellOrders;
+    }
+
+    public void setSellOrders(List<SellOrder> sellOrders) {
+        this.sellOrders = sellOrders;
+    }
+
+    public BigDecimal getServiceAmount() {
+        return serviceAmount;
+    }
+
+    public void setServiceAmount(BigDecimal serviceAmount) {
+        this.serviceAmount = serviceAmount;
+    }
+
+    public BigDecimal getGoodsAmount() {
+        return goodsAmount;
+    }
+
+    public void setGoodsAmount(BigDecimal goodsAmount) {
+        this.goodsAmount = goodsAmount;
+    }
+
+    public com.ym.mec.biz.dal.entity.StudentPaymentOrder getStudentPaymentOrder() {
+        return StudentPaymentOrder;
+    }
+
+    public void setStudentPaymentOrder(com.ym.mec.biz.dal.entity.StudentPaymentOrder studentPaymentOrder) {
+        StudentPaymentOrder = studentPaymentOrder;
+    }
+}

+ 22 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentRouteOrderDto.java

@@ -45,6 +45,12 @@ public class StudentPaymentRouteOrderDto extends StudentPaymentOrder {
     @ApiModelProperty(value = "商品 id->数量",required = true)
     private Map<Integer, Integer> goodies;
 
+    @ApiModelProperty(value = "服务收入",required = true)
+    private BigDecimal serviceAmount = BigDecimal.ZERO;
+
+    @ApiModelProperty(value = "销售收入",required = true)
+    private BigDecimal goodsAmount = BigDecimal.ZERO;
+
     public Integer getRouteOrganId() {
         return routeOrganId;
     }
@@ -108,4 +114,20 @@ public class StudentPaymentRouteOrderDto extends StudentPaymentOrder {
     public void setSaleType(Integer saleType) {
         this.saleType = saleType;
     }
+
+    public BigDecimal getServiceAmount() {
+        return serviceAmount;
+    }
+
+    public void setServiceAmount(BigDecimal serviceAmount) {
+        this.serviceAmount = serviceAmount;
+    }
+
+    public BigDecimal getGoodsAmount() {
+        return goodsAmount;
+    }
+
+    public void setGoodsAmount(BigDecimal goodsAmount) {
+        this.goodsAmount = goodsAmount;
+    }
 }

+ 1 - 2
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderTypeEnum.java

@@ -17,8 +17,7 @@ public enum OrderTypeEnum implements BaseEnum<String, OrderTypeEnum> {
 	LUCK("LUCK", "福袋活动"),
 	TENANT_RECHARGE("TENANT_RECHARGE","租户充值"),
 	GOODS_SELL("GOODS_SELL","商品销售"),
-	SCHOOL_BUY("SCHOOL_BUY", "学校采购"),
-	GROUP_COURSE_ADD("GROUP_COURSE_ADD", "乐团加课"),
+	OUTORDER("OUTORDER", "外部订单"),
 	REPAIR("REPAIR","乐器维修");
 
 

+ 7 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentRouteOrderService.java

@@ -30,4 +30,11 @@ public interface StudentPaymentRouteOrderService extends BaseService<Long, Stude
 	 */
 	StudentPaymentRouteOrder addRouteOrder(String orderNo,Integer routeOrganId, BigDecimal routeAmount);
 
+	/**
+	 * 删除外部添加的订单
+	 * @param orderId
+	 * @return
+	 */
+	Boolean deleteRouteOrder(Long orderId);
+
 }

+ 77 - 155
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OperatingReportServiceImpl.java

@@ -100,176 +100,95 @@ public class OperatingReportServiceImpl extends BaseServiceImpl<Integer, Operati
             }
         }
 
-        //3.1、乐团订单的统计
-        List<OperatingReport> musicReports = sellOrderDao.getMusicGroupMonthReport(startTime, endTime);
-        for (OperatingReport musicReport : musicReports) {
-            OperatingReport organOperatingReport = new OperatingReport();
-            if (organOperating.containsKey(musicReport.getOrganId())) {
-                organOperatingReport = organOperating.get(musicReport.getOrganId());
-            }
-
-            OperatingReport cooperationOperatingReport = new OperatingReport();
-            if (cooperationOperating.containsKey(musicReport.getCooperationOrganId())) {
-                cooperationOperatingReport = cooperationOperating.get(musicReport.getCooperationOrganId());
-            }
-            organOperatingReport.setOrganId(musicReport.getOrganId());
-            cooperationOperatingReport.setOrganId(musicReport.getOrganId());
-            cooperationOperatingReport.setCooperationOrganId(musicReport.getCooperationOrganId());
-
-            if (musicReport.getSellAmount() == null) {
-                musicReport.setSellAmount(BigDecimal.ZERO);
-                musicReport.setSellCost(BigDecimal.ZERO);
-            }
-            BigDecimal serviceAmount = musicReport.getIncomeTotal().subtract(musicReport.getSellAmount());
-
-            organOperatingReport.setServiceAmount(organOperatingReport.getServiceAmount().add(serviceAmount));
-            organOperatingReport.setSellAmount(organOperatingReport.getSellAmount().add(musicReport.getSellAmount()));
-            organOperatingReport.setSellCost(organOperatingReport.getSellCost().add(musicReport.getSellCost()));
-            cooperationOperatingReport.setServiceAmount(cooperationOperatingReport.getServiceAmount().add(serviceAmount));
-            cooperationOperatingReport.setSellAmount(cooperationOperatingReport.getSellAmount().add(musicReport.getSellAmount()));
-            cooperationOperatingReport.setSellCost(cooperationOperatingReport.getSellCost().add(musicReport.getSellCost()));
-            organOperating.put(musicReport.getOrganId(), organOperatingReport);
-            cooperationOperating.put(musicReport.getCooperationOrganId(), cooperationOperatingReport);
-        }
-
+        //3.1、乐团销售订单的统计
+        List<OperatingReport> reports = sellOrderDao.getMusicGroupMonthReport(startTime, endTime);
+        //乐团订单总收入的统计
+        reports.addAll(sellOrderDao.getMusicGroupIncome(startTime, endTime));
         //3.2、VIP、网管课订单的统计(关联学生注册取一条记录)
-        List<OperatingReport> VPReports = sellOrderDao.getMusicVipPracticeMonthReport(startTime, endTime);
-        for (OperatingReport vpReport : VPReports) {
-            OperatingReport organOperatingReport = new OperatingReport();
-            if (organOperating.containsKey(vpReport.getOrganId())) {
-                organOperatingReport = organOperating.get(vpReport.getOrganId());
-            }
-
-            OperatingReport cooperationOperatingReport = new OperatingReport();
-            if (vpReport.getCooperationOrganId() != null && cooperationOperating.containsKey(vpReport.getCooperationOrganId())) {
-                cooperationOperatingReport = cooperationOperating.get(vpReport.getCooperationOrganId());
-            }
-            organOperatingReport.setOrganId(vpReport.getOrganId());
-            cooperationOperatingReport.setOrganId(vpReport.getOrganId());
-            cooperationOperatingReport.setCooperationOrganId(vpReport.getCooperationOrganId());
-
-            organOperatingReport.setServiceAmount(organOperatingReport.getServiceAmount().add(vpReport.getIncomeTotal()));
-            cooperationOperatingReport.setServiceAmount(cooperationOperatingReport.getServiceAmount().add(vpReport.getIncomeTotal()));
-
-
-            organOperating.put(vpReport.getOrganId(), organOperatingReport);
-
-            if (vpReport.getCooperationOrganId() != null) {
-                cooperationOperating.put(vpReport.getCooperationOrganId(), cooperationOperatingReport);
-            }
-        }
-
-        //3.3、外部添加订单
-        List<OperatingReport> outOrderReports = sellOrderDao.getOutOrderMonthReport(startTime, endTime);
-        for (OperatingReport outOrderReport : outOrderReports) {
-            OperatingReport organOperatingReport = new OperatingReport();
-            if (organOperating.containsKey(outOrderReport.getOrganId())) {
-                organOperatingReport = organOperating.get(outOrderReport.getOrganId());
-            }
-
-            OperatingReport cooperationOperatingReport = new OperatingReport();
-            if (cooperationOperating.containsKey(outOrderReport.getCooperationOrganId())) {
-                cooperationOperatingReport = cooperationOperating.get(outOrderReport.getCooperationOrganId());
-            }
-
-            organOperatingReport.setOrganId(outOrderReport.getOrganId());
-            cooperationOperatingReport.setOrganId(outOrderReport.getOrganId());
-            cooperationOperatingReport.setCooperationOrganId(outOrderReport.getCooperationOrganId());
-
-            if (outOrderReport.getSellAmount() == null) {
-                outOrderReport.setSellAmount(BigDecimal.ZERO);
-                outOrderReport.setSellCost(BigDecimal.ZERO);
-            }
-            BigDecimal serviceAmount = outOrderReport.getIncomeTotal().subtract(outOrderReport.getSellAmount());
-
-            organOperatingReport.setServiceAmount(organOperatingReport.getServiceAmount().add(serviceAmount));
-            organOperatingReport.setSellAmount(organOperatingReport.getSellAmount().add(outOrderReport.getSellAmount()));
-            organOperatingReport.setSellCost(organOperatingReport.getSellCost().add(outOrderReport.getSellCost()));
-            cooperationOperatingReport.setServiceAmount(cooperationOperatingReport.getServiceAmount().add(serviceAmount));
-            cooperationOperatingReport.setSellAmount(cooperationOperatingReport.getSellAmount().add(outOrderReport.getSellAmount()));
-            cooperationOperatingReport.setSellCost(cooperationOperatingReport.getSellCost().add(outOrderReport.getSellCost()));
-            organOperating.put(cooperationOperatingReport.getOrganId(), organOperatingReport);
-            if (outOrderReport.getCooperationOrganId() != null) {
-                cooperationOperating.put(cooperationOperatingReport.getCooperationOrganId(), cooperationOperatingReport);
-            }
-        }
-
+        reports.addAll(sellOrderDao.getMusicVipPracticeMonthReport(startTime, endTime));
+        //3.3、外部添加订单销售
+        reports.addAll(sellOrderDao.getOutOrderMonthReport(startTime, endTime));
+        //外部添加订单销售总收入
+        reports.addAll(sellOrderDao.getOutOrderIncome(startTime, endTime));
         //3.4、乐器维修、商品销售
-        List<OperatingReport> repairGoodsSellReports = sellOrderDao.getRepairGoodsSellGroupMonthReport(startTime, endTime);
-        for (OperatingReport repairGoodsSellReport : repairGoodsSellReports) {
-            OperatingReport organOperatingReport = new OperatingReport();
-            if (organOperating.containsKey(repairGoodsSellReport.getOrganId())) {
-                organOperatingReport = organOperating.get(repairGoodsSellReport.getOrganId());
-            }
-
-            organOperatingReport.setOrganId(repairGoodsSellReport.getOrganId());
-
-            if (repairGoodsSellReport.getSellAmount() == null) {
-                repairGoodsSellReport.setSellAmount(BigDecimal.ZERO);
-                repairGoodsSellReport.setSellCost(BigDecimal.ZERO);
-            }
-            BigDecimal serviceAmount = repairGoodsSellReport.getIncomeTotal().subtract(repairGoodsSellReport.getSellAmount());
-
-            organOperatingReport.setServiceAmount(organOperatingReport.getServiceAmount().add(serviceAmount));
-            organOperatingReport.setSellAmount(organOperatingReport.getSellAmount().add(repairGoodsSellReport.getSellAmount()));
-            organOperatingReport.setSellCost(organOperatingReport.getSellCost().add(repairGoodsSellReport.getSellCost()));
-
-            organOperating.put(repairGoodsSellReport.getOrganId(), organOperatingReport);
-        }
-
+        reports.addAll(sellOrderDao.getRepairGoodsSellGroupMonthReport(startTime, endTime));
         //3.5、零星支付充值
-        List<OperatingReport> rechargeReports = sellOrderDao.getRechargeMonthReport(startTime, endTime);
-        for (OperatingReport rechargeReport : rechargeReports) {
+        reports.addAll(sellOrderDao.getRechargeMonthReport(startTime, endTime));
+        //3.6、零星收费(不是充值部分的)
+        reports.addAll(sellOrderDao.getSporadicMonthReport(startTime, endTime));
+        updateFee(organOperating,cooperationOperating,reports);
+
+//        Map<String, Object> params = new HashMap<>();
+//        params.put("startTime", startTime);
+//        params.put("endTime", endTime);
+//        organOperating.forEach((organId, operatingReport) -> {
+//            operatingReport.setMonth(startTime);
+//            operatingReport.setCreateTime(nowDate);
+//            updateReport(operatingReport, params);
+//        });
+//        cooperationOperating.forEach((organId, operatingReport) -> {
+//            operatingReport.setMonth(startTime);
+//            operatingReport.setCreateTime(nowDate);
+//            updateReport(operatingReport, params);
+//        });
+        return true;
+    }
+
+    /**
+     * 计算总收入
+     *
+     * @param organOperating
+     * @param cooperationOperating
+     * @param reports
+     */
+    private void updateFee(Map<Integer, OperatingReport> organOperating, Map<Integer, OperatingReport> cooperationOperating, List<OperatingReport> reports) {
+        for (OperatingReport report : reports) {
             OperatingReport organOperatingReport = new OperatingReport();
-            if (organOperating.containsKey(rechargeReport.getOrganId())) {
-                organOperatingReport = organOperating.get(rechargeReport.getOrganId());
+            if (organOperating.containsKey(report.getOrganId())) {
+                organOperatingReport = organOperating.get(report.getOrganId());
             }
 
             OperatingReport cooperationOperatingReport = new OperatingReport();
-            if (rechargeReport.getCooperationOrganId() != null && cooperationOperating.containsKey(rechargeReport.getCooperationOrganId())) {
-                cooperationOperatingReport = cooperationOperating.get(rechargeReport.getCooperationOrganId());
+            if (report.getCooperationOrganId() != null && cooperationOperating.containsKey(report.getCooperationOrganId())) {
+                cooperationOperatingReport = cooperationOperating.get(report.getCooperationOrganId());
             }
-            organOperatingReport.setOrganId(rechargeReport.getOrganId());
-            cooperationOperatingReport.setOrganId(rechargeReport.getOrganId());
-            cooperationOperatingReport.setCooperationOrganId(rechargeReport.getCooperationOrganId());
-
-            organOperatingReport.setOtherIncome(organOperatingReport.getOtherIncome().add(rechargeReport.getIncomeTotal()));
-            cooperationOperatingReport.setOtherIncome(cooperationOperatingReport.getIncomeTotal().add(rechargeReport.getIncomeTotal()));
-
-            organOperating.put(rechargeReport.getOrganId(), organOperatingReport);
+            organOperatingReport.setOrganId(report.getOrganId());
+            cooperationOperatingReport.setOrganId(report.getOrganId());
+            cooperationOperatingReport.setCooperationOrganId(report.getCooperationOrganId());
 
-            if (rechargeReport.getCooperationOrganId() != null) {
-                cooperationOperating.put(rechargeReport.getCooperationOrganId(), cooperationOperatingReport);
+            if (report.getSellAmount() == null) {
+                report.setSellAmount(BigDecimal.ZERO);
+                report.setSellCost(BigDecimal.ZERO);
             }
-        }
-
-        //3.6、零星收费(不是充值部分的)
-        List<OperatingReport> sporadicReports = sellOrderDao.getSporadicMonthReport(startTime, endTime);
-        for (OperatingReport sporadicReport : sporadicReports) {
-            OperatingReport organOperatingReport = new OperatingReport();
-            if (organOperating.containsKey(sporadicReport.getOrganId())) {
-                organOperatingReport = organOperating.get(sporadicReport.getOrganId());
+            if (report.getIncomeTotal() == null) {
+                report.setIncomeTotal(BigDecimal.ZERO);
             }
-
-            OperatingReport cooperationOperatingReport = new OperatingReport();
-            if (sporadicReport.getCooperationOrganId() != null && cooperationOperating.containsKey(sporadicReport.getCooperationOrganId())) {
-                cooperationOperatingReport = cooperationOperating.get(sporadicReport.getCooperationOrganId());
+            if (report.getOtherIncome() == null) {
+                report.setOtherIncome(BigDecimal.ZERO);
             }
-            organOperatingReport.setOrganId(sporadicReport.getOrganId());
-            cooperationOperatingReport.setOrganId(sporadicReport.getOrganId());
-            cooperationOperatingReport.setCooperationOrganId(sporadicReport.getCooperationOrganId());
 
-            organOperatingReport.setServiceAmount(organOperatingReport.getServiceAmount().add(sporadicReport.getIncomeTotal()));
-            cooperationOperatingReport.setServiceAmount(cooperationOperatingReport.getServiceAmount().add(sporadicReport.getIncomeTotal()));
+            //总收入
+            organOperatingReport.setIncomeTotal(organOperatingReport.getIncomeTotal().add(report.getIncomeTotal()));
+            cooperationOperatingReport.setIncomeTotal(cooperationOperatingReport.getIncomeTotal().add(report.getIncomeTotal()));
 
+            //销售收入
+            organOperatingReport.setSellAmount(organOperatingReport.getSellAmount().add(report.getSellAmount()));
+            organOperatingReport.setSellCost(organOperatingReport.getSellCost().add(report.getSellCost()));
+            cooperationOperatingReport.setSellAmount(cooperationOperatingReport.getSellAmount().add(report.getSellAmount()));
+            cooperationOperatingReport.setSellCost(cooperationOperatingReport.getSellCost().add(report.getSellCost()));
 
-            organOperating.put(sporadicReport.getOrganId(), organOperatingReport);
+            //其他收入
+            organOperatingReport.setOtherIncome(organOperatingReport.getOtherIncome().add(report.getOtherIncome()));
+            cooperationOperatingReport.setOtherIncome(cooperationOperatingReport.getOtherIncome().add(report.getOtherIncome()));
 
-            if (sporadicReport.getCooperationOrganId() != null) {
-                cooperationOperating.put(sporadicReport.getCooperationOrganId(), cooperationOperatingReport);
+            organOperating.put(report.getOrganId(), organOperatingReport);
+            if (report.getCooperationOrganId() != null) {
+                cooperationOperating.put(report.getCooperationOrganId(), cooperationOperatingReport);
             }
         }
-
+        Date nowDate = new Date();
+        Date startTime = DateUtil.getFirstDayOfMonth(DateUtil.addDays1(nowDate, -1));
+        Date endTime = DateUtil.getLastDayOfMonth(startTime);
         Map<String, Object> params = new HashMap<>();
         params.put("startTime", startTime);
         params.put("endTime", endTime);
@@ -283,12 +202,13 @@ public class OperatingReportServiceImpl extends BaseServiceImpl<Integer, Operati
             operatingReport.setCreateTime(nowDate);
             updateReport(operatingReport, params);
         });
-        return true;
     }
 
     private void updateReport(OperatingReport operatingReport, Map<String, Object> params) {
         //收入合计:销售收入+服务收入-业务退费
-        BigDecimal incomeTotal = operatingReport.getSellAmount().add(operatingReport.getServiceAmount()).add(operatingReport.getOtherIncome()).subtract(operatingReport.getRefundAmount());
+        BigDecimal serviceTotal = operatingReport.getIncomeTotal().subtract(operatingReport.getSellAmount()).subtract(operatingReport.getOtherIncome());
+        operatingReport.setServiceAmount(serviceTotal);
+        BigDecimal incomeTotal = operatingReport.getIncomeTotal().subtract(operatingReport.getRefundAmount());
         operatingReport.setIncomeTotal(incomeTotal);
         //成本费用合计:销售成本+固定支出+变动支出+分摊费用
         BigDecimal costAmount = operatingReport.getSellCost().add(operatingReport.getExpensesAmount()).add(operatingReport.getVariableCost()).add(operatingReport.getDistributionAmount());
@@ -297,9 +217,11 @@ public class OperatingReportServiceImpl extends BaseServiceImpl<Integer, Operati
         operatingReport.setProfit(incomeTotal.subtract(costAmount));
         params.put("organId", operatingReport.getOrganId());
         params.put("cooperationOrganId", operatingReport.getCooperationOrganId());
-        if (operatingReportDao.getReport(params) == null) {
+        OperatingReport hasReport = operatingReportDao.getReport(params);
+        if (hasReport == null) {
             operatingReportDao.insert(operatingReport);
         } else {
+            operatingReport.setId(hasReport.getId());
             operatingReportDao.update(operatingReport);
         }
     }

+ 3 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -165,7 +165,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 }
                 if (j == orderDetail.getGoodsList().size()) {
                     expectAmount = orderDetail.getPrice().subtract(routePrice);
-                    balance = orderDetail.getPrice().subtract(routeBalance);
+                    balance = detailBalance.subtract(routeBalance);
                 }
                 routePrice = routePrice.add(expectAmount);
                 routeBalance = routeBalance.add(balance);
@@ -189,6 +189,8 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 sellOrder.setExpectAmount(expectAmount);
                 sellOrder.setSellCost(goods.getDiscountPrice());
                 sellOrder.setSellCost2(JSON.toJSONString(CostMap));
+                sellOrder.setGoodsId(goods.getId());
+                sellOrder.setGoodsName(goods.getName());
                 sellOrder.setNum(1);
                 sellOrder.setUserId(studentPaymentOrder.getUserId());
                 sellOrder.setPaymentChannel(studentPaymentOrder.getPaymentChannel());

+ 18 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentRouteOrderServiceImpl.java

@@ -6,6 +6,7 @@ import com.ym.mec.biz.dal.dto.PageInfoOrder;
 import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
 import com.ym.mec.biz.dal.entity.Goods;
 import com.ym.mec.biz.dal.entity.SellOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
@@ -81,7 +82,7 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
     public StudentPaymentRouteOrderDto addOutOrder(StudentPaymentRouteOrderDto studentPaymentRouteOrderDto) {
         Date nowDate = new Date();
         String orderNo = idGeneratorService.generatorId("payment") + "";
-        studentPaymentRouteOrderDto.setType(studentPaymentRouteOrderDto.getSaleType().equals(1) ? OrderTypeEnum.GROUP_COURSE_ADD : OrderTypeEnum.SCHOOL_BUY);
+        studentPaymentRouteOrderDto.setType(OrderTypeEnum.OUTORDER);
         studentPaymentRouteOrderDto.setMerNos(studentPaymentRouteOrderDto.getMerNo());
         studentPaymentRouteOrderDto.setOrderNo(orderNo);
         studentPaymentRouteOrderDto.setGroupType(GroupType.OUTORDER);
@@ -114,9 +115,9 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
             for (Map.Entry<Integer, Integer> goodsMap : studentPaymentRouteOrderDto.getGoodies().entrySet()) {
                 Goods goods = goodsDao.get(goodsMap.getKey());
 
-                BigDecimal actualAmount = studentPaymentRouteOrderDto.getActualAmount().multiply(goods.getGroupPurchasePrice().multiply(new BigDecimal(goodsMap.getValue()))).divide(goodsTotalPrice, 2, BigDecimal.ROUND_HALF_UP);
+                BigDecimal actualAmount = studentPaymentRouteOrderDto.getGoodsAmount().multiply(goods.getGroupPurchasePrice().multiply(new BigDecimal(goodsMap.getValue()))).divide(goodsTotalPrice, 2, BigDecimal.ROUND_HALF_UP);
                 if (i == studentPaymentRouteOrderDto.getGoodies().size()) {
-                    actualAmount = studentPaymentRouteOrderDto.getActualAmount().subtract(hasRouteAmount);
+                    actualAmount = studentPaymentRouteOrderDto.getGoodsAmount().subtract(hasRouteAmount);
                 }
                 hasRouteAmount = hasRouteAmount.add(actualAmount);
                 i++;
@@ -128,6 +129,7 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
                 }
 
                 SellOrder sellOrder = new SellOrder();
+                sellOrder.setSellTime(studentPaymentRouteOrderDto.getPayTime());
                 sellOrder.setOrganId(studentPaymentRouteOrderDto.getOrganId());
                 sellOrder.setCooperationOrganId(studentPaymentRouteOrderDto.getSchoolId());
                 sellOrder.setTransNo(studentPaymentRouteOrderDto.getTransNo());
@@ -169,4 +171,17 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
         return studentPaymentRouteOrder;
     }
 
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Boolean deleteRouteOrder(Long orderId) {
+        StudentPaymentOrder studentPaymentOrder = studentPaymentOrderDao.get(orderId);
+        if (studentPaymentOrder == null) {
+            throw new BizException("订单不存在,请核查");
+        }
+        studentPaymentOrderDao.delete(orderId);
+        studentPaymentRouteOrderDao.deleteByOrderNo(studentPaymentOrder.getOrderNo());
+        sellOrderDao.deleteByOrderId(orderId);
+        return true;
+    }
+
 }

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/CooperationOrganMapper.xml

@@ -149,6 +149,6 @@
     <!-- 获取全部使用中的合作单位 -->
     <select id="getAllCooperationOrgan" resultMap="CooperationOrgan">
         SELECT * FROM cooperation_organ
-        WHERE full_job_resource_ =1 AND is_enable_=1 AND del_flag_ = 0
+        WHERE full_job_resource_ =1 AND del_flag_ = 0
     </select>
 </mapper>

+ 1 - 1
mec-biz/src/main/resources/config/mybatis/OperatingReportMapper.xml

@@ -141,7 +141,7 @@
         </where>
     </sql>
     <select id="getReport" resultMap="OperatingReport" parameterType="map">
-        SELECT * FROM operating_report opr
+        SELECT * FROM operating_report
         <where>
             <if test="organId != null">
                 AND organ_id_ = #{organId}

+ 59 - 16
mec-biz/src/main/resources/config/mybatis/SellOrderMapper.xml

@@ -52,7 +52,8 @@
     <insert id="insert" keyColumn="id_" keyProperty="id" parameterType="com.ym.mec.biz.dal.entity.SellOrder"
             useGeneratedKeys="true">
         <!--@mbg.generated-->
-        insert into sell_order (organ_id_, cooperation_organ_id_, trans_no_,order_id_, order_no_, expect_amount_, actual_amount_,
+        insert into sell_order (organ_id_, cooperation_organ_id_, trans_no_,order_id_, order_no_, expect_amount_,
+        actual_amount_,
         balance_amount_, type_, goods_id_,goods_name_, sell_cost_, sell_cost2_, num_, user_id_, payment_channel_,
         mer_no_, sell_time_, create_ime_, update_time_)
         values (#{organId}, #{cooperationOrganId}, #{transNo}, #{orderNo},#{orderId}, #{expectAmount}, #{actualAmount},
@@ -129,7 +130,8 @@
     </update>
 
     <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
-        insert into sell_order (organ_id_, cooperation_organ_id_, trans_no_,order_id_, order_no_, expect_amount_, actual_amount_,
+        insert into sell_order (organ_id_, cooperation_organ_id_, trans_no_,order_id_, order_no_, expect_amount_,
+        actual_amount_,
         balance_amount_, type_, goods_id_,goods_name_, sell_cost_, sell_cost2_, num_, user_id_, payment_channel_,
         mer_no_, sell_time_, create_ime_, update_time_)
         VALUE
@@ -188,10 +190,9 @@
     <!-- 获取分部学校的收入支出(乐团订单) -->
     <select id="getMusicGroupMonthReport" resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
         SELECT spo.organ_id_,
-               co.id_                  cooperation_organ_id_,
-               SUM(spo.actual_amount_) income_total_,
-               SUM(so.actual_amount_)  sell_amount_,
-               SUM(so.sell_cost_)      sellCost
+               co.id_                 cooperation_organ_id_,
+               SUM(so.actual_amount_) sell_amount_,
+               SUM(so.sell_cost_)     sellCost
         FROM student_payment_order spo
                  LEFT JOIN sell_order so on so.order_id_ = spo.id_
                  LEFT JOIN music_group mg ON mg.id_ = spo.music_group_id_
@@ -203,6 +204,20 @@
         GROUP BY spo.organ_id_, co.id_
         ]]></select>
 
+    <select id="getMusicGroupIncome" resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
+        SELECT spo.organ_id_,
+               co.id_                  cooperation_organ_id_,
+               SUM(spo.actual_amount_) income_total_
+        FROM student_payment_order spo
+                 LEFT JOIN music_group mg ON mg.id_ = spo.music_group_id_
+                 LEFT JOIN cooperation_organ co ON co.id_ = mg.cooperation_organ_id_
+        WHERE spo.status_ = 'SUCCESS'
+          AND spo.group_type_ = 'MUSIC'
+          AND spo.create_time_ >= #{startTime}
+          AND spo.create_time_ <= #{endTime}
+        GROUP BY spo.organ_id_, co.id_
+        ]]></select>
+
     <!-- 获取分部学校的收入支出(VIP,网管课) -->
     <select id="getMusicVipPracticeMonthReport" resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
         SELECT spo.organ_id_,
@@ -228,10 +243,9 @@
     <!-- 获取分部学校的收入支出(外部添加订单) -->
     <select id="getOutOrderMonthReport" resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
         SELECT spo.organ_id_,
-               co.id_                  cooperation_organ_id_,
-               SUM(spo.actual_amount_) income_total_,
-               SUM(so.actual_amount_)  sell_amount_,
-               SUM(so.sell_cost_)      sellCost
+               co.id_                 cooperation_organ_id_,
+               SUM(so.actual_amount_) sell_amount_,
+               SUM(so.sell_cost_)     sellCost
         FROM student_payment_order spo
                  LEFT JOIN sell_order so on so.order_id_ = spo.id_
                  LEFT JOIN cooperation_organ co ON co.id_ = spo.music_group_id_
@@ -242,11 +256,26 @@
         GROUP BY spo.organ_id_, co.id_
         ]]></select>
 
+    <!-- 获取分部学校的收入支出(外部添加订单) -->
+    <select id="getOutOrderIncome" resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
+        SELECT spo.organ_id_,
+               co.id_                  cooperation_organ_id_,
+               SUM(spo.actual_amount_) income_total_
+        FROM student_payment_order spo
+                 LEFT JOIN cooperation_organ co ON co.id_ = spo.music_group_id_
+        WHERE spo.status_ = 'SUCCESS'
+          AND spo.group_type_ = 'OUTORDER'
+          AND spo.create_time_ >= #{startTime}
+          AND spo.create_time_ <= #{endTime}
+        GROUP BY spo.organ_id_, co.id_
+        ]]></select>
+
     <!-- 获取分部学校的收入(充值) -->
     <select id="getRechargeMonthReport" resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
         SELECT spo.organ_id_,
                co.id_                  cooperation_organ_id_,
-               SUM(spo.actual_amount_) income_total_
+               SUM(spo.actual_amount_) income_total_,
+               SUM(spo.actual_amount_) other_income_
         FROM student_payment_order spo
                  LEFT JOIN sporadic_charge_info sci ON sci.id_ = spo.music_group_id_
                  LEFT JOIN music_group mg ON mg.id_ = sci.music_group_id_
@@ -277,17 +306,31 @@
         ]]></select>
 
     <!-- 获取分部学校的收入支出(维修、商品销售订单) -->
-    <select id="getRepairGoodsSellGroupMonthReport" resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
+    <select id="getRepairGoodsSellGroupMonthReport"
+            resultMap="com.ym.mec.biz.dal.dao.OperatingReportDao.OperatingReport"><![CDATA[
         SELECT spo.organ_id_,
-               SUM(spo.actual_amount_) income_total_,
-               SUM(so.actual_amount_)  sell_amount_,
-               SUM(so.sell_cost_)      sellCost
+               SUM(so.actual_amount_) income_total_,
+               SUM(so.actual_amount_) sell_amount_,
+               SUM(so.sell_cost_)     sellCost
         FROM student_payment_order spo
                  LEFT JOIN sell_order so on so.order_id_ = spo.id_
         WHERE spo.status_ = 'SUCCESS'
-          AND spo.group_type_ IN ('REPAIR','GOODS_SELL')
+          AND spo.group_type_ IN ('REPAIR', 'GOODS_SELL')
           AND spo.create_time_ >= #{startTime}
           AND spo.create_time_ <= #{endTime}
         GROUP BY spo.organ_id_
         ]]></select>
+
+    <!-- 获取订单的销售列表 -->
+    <select id="getOrderSellOrder" resultMap="SellOrder">
+        SELECT *
+        FROM sell_order
+        WHERE order_id_ = #{orderId}
+    </select>
+
+    <delete id="deleteByOrderId">
+        DELETE
+        FROM sell_order
+        WHERE order_id_ = #{orderId}
+    </delete>
 </mapper>

+ 5 - 0
mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml

@@ -209,4 +209,9 @@
         ORDER BY spo.id_ ASC
     </select>
 
+    <delete id="deleteByOrderNo">
+        DELETE FROM student_payment_route_order
+        where order_no_ = #{orderNo}
+    </delete>
+
 </mapper>

+ 0 - 1
mec-teacher/src/main/java/com/ym/mec/teacher/controller/TeacherCourseScheduleController.java

@@ -324,7 +324,6 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation(value = "课程批量调整检测-仅时间")
     @PostMapping("/courseAdjustOnlyWithClassDateCheck")
     public HttpResponseResult courseAdjustOnlyWithClassDateCheck(@RequestBody VipGroupCourseAdjustInfoDto vipGroupCourseAdjustInfo){
-        System.out.println(JSON.toJSONString(vipGroupCourseAdjustInfo));
         return succeed(scheduleService.courseAdjustOnlyWithClassDateCheck(vipGroupCourseAdjustInfo));
     }
 

+ 3 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SellOrderController.java

@@ -25,6 +25,7 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
@@ -72,6 +73,8 @@ public class SellOrderController extends BaseController {
     @PostMapping(value = "/update")
     @PreAuthorize("@pcs.hasPermissions('sellOrder/update')")
     public HttpResponseResult<SellOrder> update(SellOrder sellOrder) {
+        SellOrder oldOrder = sellOrderService.get(sellOrder.getId());
+        sellOrder.setSellCost(sellOrder.getSellCost().multiply(new BigDecimal(oldOrder.getNum())));
         sellOrderService.update(sellOrder);
         return succeed(sellOrder);
     }

+ 27 - 0
mec-web/src/main/java/com/ym/mec/web/controller/StudentPaymentRouteOrderController.java

@@ -3,14 +3,18 @@ package com.ym.mec.web.controller;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.EmployeeDao;
+import com.ym.mec.biz.dal.dao.SellOrderDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.BasicUserDto;
+import com.ym.mec.biz.dal.dto.OutOrderInfoDto;
 import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
 import com.ym.mec.biz.dal.entity.Employee;
+import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.page.SporadicOrderQueryInfo;
 import com.ym.mec.biz.dal.page.StudentPaymentOrderQueryInfo;
+import com.ym.mec.biz.service.SellOrderService;
 import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
 import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.biz.service.StudentPaymentRouteOrderService;
@@ -44,6 +48,8 @@ public class StudentPaymentRouteOrderController extends BaseController {
     private EmployeeDao employeeDao;
     @Autowired
     private StudentPaymentOrderDao studentPaymentOrderDao;
+    @Autowired
+    private SellOrderDao sellOrderDao;
 
     @ApiOperation(value = "财务订单列表")
     @GetMapping("/finance")
@@ -89,8 +95,29 @@ public class StudentPaymentRouteOrderController extends BaseController {
         if (studentPaymentRouteOrderDto.getSchoolId() != null) {
             studentPaymentRouteOrderDto.setMusicGroupId(studentPaymentRouteOrderDto.getSchoolId().toString());
         }
+        studentPaymentRouteOrderDto.setActualAmount(studentPaymentRouteOrderDto.getServiceAmount().add(studentPaymentRouteOrderDto.getGoodsAmount()));
         return succeed(studentPaymentRouteOrderService.addOutOrder(studentPaymentRouteOrderDto));
     }
 
+    @ApiOperation(value = "获取订单信息")
+    @GetMapping("/getOrderInfo")
+    @PreAuthorize("@pcs.hasPermissions('routeOrder/getOrderInfo')")
+    public HttpResponseResult<OutOrderInfoDto> getOrderInfo(Long orderId) {
+        OutOrderInfoDto outOrderInfoDto = new OutOrderInfoDto();
+        outOrderInfoDto.setStudentPaymentOrder(studentPaymentOrderDao.get(orderId));
+        List<SellOrder> sellOrders = sellOrderDao.getOrderSellOrder(orderId);
+        BigDecimal goodsAmount = sellOrders.stream().map(SellOrder::getActualAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
+        BigDecimal serviceAmount = outOrderInfoDto.getStudentPaymentOrder().getActualAmount().subtract(goodsAmount);
+        outOrderInfoDto.setServiceAmount(serviceAmount);
+        outOrderInfoDto.setGoodsAmount(goodsAmount);
+        outOrderInfoDto.setSellOrders(sellOrders);
+        return succeed(outOrderInfoDto);
+    }
 
+    @ApiOperation(value = "删除订单")
+    @PostMapping("/delete")
+    @PreAuthorize("@pcs.hasPermissions('routeOrder/delete')")
+    public HttpResponseResult<Boolean> delete(Long orderId) {
+        return succeed(studentPaymentRouteOrderService.deleteRouteOrder(orderId));
+    }
 }