Browse Source

Merge branch 'online1' into music_group_feature_03_29

周箭河 4 years ago
parent
commit
a3b718ea38

+ 12 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/IndexBaseMonthDataDao.java

@@ -215,4 +215,16 @@ public interface IndexBaseMonthDataDao extends BaseDAO<Long, IndexBaseMonthData>
     List<IndexBaseMonthData> getFinanceBalanceData(@Param("dayStr") String dayStr);
 
     List<IndexBaseMonthData> getFinanceActualData(@Param("dayStr") String dayStr);
+
+    List<IndexBaseMonthData> getFinancePayDataWithTimely(@Param("startDate") String startDate,
+                                                         @Param("endDate") String endDate,
+                                                         @Param("organIds") List<Integer> organIds);
+
+    List<IndexBaseMonthData> getFinanceBalanceDataWithTimely(@Param("startDate") String startDate,
+                                                             @Param("endDate") String endDate,
+                                                             @Param("organIds") List<Integer> organIds);
+
+    List<IndexBaseMonthData> getFinanceActualDataWithTimely(@Param("startDate") String startDate,
+                                                            @Param("endDate") String endDate,
+                                                            @Param("organIds") List<Integer> organIds);
 }

+ 22 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/RouteScaleDto.java

@@ -23,6 +23,12 @@ public class RouteScaleDto {
 
     private BigDecimal balance = BigDecimal.ZERO;
 
+    //销售费用
+    private BigDecimal saleAmount = BigDecimal.ZERO;
+
+    //服务费用
+    private BigDecimal serviceAmount = BigDecimal.ZERO;
+
     public Integer getOrganId() {
         return organId;
     }
@@ -55,7 +61,6 @@ public class RouteScaleDto {
         this.feeFlag = feeFlag;
     }
 
-
     public Integer getScale() {
         return scale;
     }
@@ -87,4 +92,20 @@ public class RouteScaleDto {
     public void setBalance(BigDecimal balance) {
         this.balance = balance;
     }
+
+    public BigDecimal getSaleAmount() {
+        return saleAmount;
+    }
+
+    public void setSaleAmount(BigDecimal saleAmount) {
+        this.saleAmount = saleAmount;
+    }
+
+    public BigDecimal getServiceAmount() {
+        return serviceAmount;
+    }
+
+    public void setServiceAmount(BigDecimal serviceAmount) {
+        this.serviceAmount = serviceAmount;
+    }
 }

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/IndexBaseMonthDataServiceImpl.java

@@ -103,6 +103,10 @@ public class IndexBaseMonthDataServiceImpl extends BaseServiceImpl<Long, IndexBa
 		}
 
 		Map<IndexDataType, List<IndexBaseMonthData>> typeDateMap = indexBaseDatas.stream().filter(d->Objects.nonNull(d.getDataType())).collect(Collectors.groupingBy(IndexBaseMonthData::getDataType));
+		typeDateMap.put(IndexDataType.FINANCE_PAY,indexBaseMonthDataDao.getFinancePayDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
+		typeDateMap.put(IndexDataType.FINANCE_BALANCE_AMOUNT,indexBaseMonthDataDao.getFinanceBalanceDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
+		typeDateMap.put(IndexDataType.FINANCE_AMOUNT,indexBaseMonthDataDao.getFinanceActualDataWithTimely(startDate.toString(), endDate.toString(), new ArrayList<>(organIds)));
+
 
 		for (IndexDataType dataType : IndexDataType.values()) {
 			if(typeDateMap.containsKey(dataType)||(Objects.nonNull(dataTypes)&&!dataTypes.contains(dataType.getCode()))){

+ 10 - 19
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -308,6 +308,8 @@ public class PayServiceImpl implements PayService {
                 } else {
                     routeScaleDto.setAmount(routeScaleDto.getAmount().add(scaleDto.getAmount()));
                     routeScaleDto.setBalance(routeScaleDto.getBalance().add(scaleDto.getBalance()));
+                    routeScaleDto.setSaleAmount(routeScaleDto.getSaleAmount().add(scaleDto.getSaleAmount()));
+                    routeScaleDto.setServiceAmount(routeScaleDto.getServiceAmount().add(scaleDto.getServiceAmount()));
                 }
             }
             newRouteScaleDtos.add(routeScaleDto);
@@ -327,7 +329,6 @@ public class PayServiceImpl implements PayService {
         List<Map<String, Object>> tempRoutingList = new ArrayList<>();
 
         PaymentChannelEnum payType = null;
-        boolean feeFlag = false;
         Set<String> routingMerNoSet = new HashSet<>();
         for (RouteScaleDto routeScaleDto : routeScaleDtos) {
             payType = routeScaleDto.getPayType();
@@ -382,6 +383,8 @@ public class PayServiceImpl implements PayService {
             studentPaymentRouteOrder.setRouteAmount(routingMoney);
             studentPaymentRouteOrder.setRouteBalanceAmount(routeBalanceAmount);
             studentPaymentRouteOrder.setMerNo(routeScaleDto.getMerNo());
+            studentPaymentRouteOrder.setSaleAmount(routeScaleDto.getSaleAmount());
+            studentPaymentRouteOrder.setServiceAmount(routeScaleDto.getServiceAmount());
             RouteOrders.add(studentPaymentRouteOrder);
             routingMerNoSet.add(routeScaleDto.getMerNo());
         }
@@ -470,9 +473,11 @@ public class PayServiceImpl implements PayService {
             if (routeScaleDto.getFeeType().equals(FeeTypeEnum.SERVICE)) {
                 serviceHasRouteMoney = serviceHasRouteMoney.add(routingMoney);
                 serviceHasRouteBalance = serviceHasRouteBalance.add(routingBalance);
+                routeScaleDto.setServiceAmount(routingMoney);
             } else {
                 sellHasRouteMoney = sellHasRouteMoney.add(routingMoney);
                 sellHasRouteBalance = sellHasRouteBalance.add(routingBalance);
+                routeScaleDto.setSaleAmount(routingMoney);
             }
 
             if (routeScaleDto.getAmount().compareTo(BigDecimal.ZERO) <= 0) {
@@ -492,7 +497,6 @@ public class PayServiceImpl implements PayService {
         Map<String, List<RouteScaleDto>> routeScaleDtosMap = routeScaleDtos.stream().collect(Collectors.groupingBy(RouteScaleDto::getMerNo));
 
         //合并同账号的数据
-        BigDecimal maxAmount = BigDecimal.ZERO;
         List<RouteScaleDto> newRouteScaleDtos = new ArrayList<>();
         for (Map.Entry<String, List<RouteScaleDto>> groupRouteScaleDtos : routeScaleDtosMap.entrySet()) {
             RouteScaleDto routeScaleDto = null;
@@ -502,24 +506,12 @@ public class PayServiceImpl implements PayService {
                 } else {
                     routeScaleDto.setAmount(routeScaleDto.getAmount().add(scaleDto.getAmount()));
                     routeScaleDto.setBalance(routeScaleDto.getBalance().add(scaleDto.getBalance()));
+                    routeScaleDto.setSaleAmount(routeScaleDto.getSaleAmount().add(scaleDto.getSaleAmount()));
+                    routeScaleDto.setServiceAmount(routeScaleDto.getServiceAmount().add(scaleDto.getServiceAmount()));
                 }
             }
-            if (routeScaleDto != null && routeScaleDto.getAmount().compareTo(maxAmount) > 0) {
-                maxAmount = routeScaleDto.getAmount();
-            }
             newRouteScaleDtos.add(routeScaleDto);
         }
-
-        //金额最大的账号承担手续费
-        boolean hasFeeFlag = false;
-        for (RouteScaleDto routeScaleDto : newRouteScaleDtos) {
-            if (!hasFeeFlag && routeScaleDto.getAmount().compareTo(maxAmount) == 0) {
-                routeScaleDto.setFeeFlag("Y");
-                hasFeeFlag = true;
-            } else {
-                routeScaleDto.setFeeFlag("N");
-            }
-        }
         return newRouteScaleDtos;
     }
 
@@ -556,14 +548,13 @@ public class PayServiceImpl implements PayService {
 //                redisTemplate.expire(key, 600, TimeUnit.SECONDS);// 保留10分钟内的key
 //            }
 //        }else {
-            BigDecimal monthHasReceipt = studentPaymentRouteOrderDao.getRouteOrderAmount(routeScaleDto.getOrganId(), paymentChannelList, dayStartTime);
-            monthHasReceipt = monthHasReceipt == null ? BigDecimal.ZERO : monthHasReceipt;
+        BigDecimal monthHasReceipt = studentPaymentRouteOrderDao.getRouteOrderAmount(routeScaleDto.getOrganId(), paymentChannelList, dayStartTime);
+        monthHasReceipt = monthHasReceipt == null ? BigDecimal.ZERO : monthHasReceipt;
 //            monthHasReceipt.multiply(new BigDecimal(100));
 //
 //        }
 
 
-
         if (routeScaleDto.getAmount().add(monthHasReceipt).compareTo(monthMaxReceipt) > 0) {
             routeScaleDto.setMerNo(hfmember.getRouteMemberId());
             routeScaleDto.setOrganId(hfmember.getRouteOrganId());

+ 13 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -78,7 +78,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
         //已分配的商品余额
         BigDecimal hasRouteBalance = BigDecimal.ZERO;
         //已分配的商品现金
-        BigDecimal hasRouteActualAmount= BigDecimal.ZERO;
+        BigDecimal hasRouteActualAmount = BigDecimal.ZERO;
         //商品占用的的余额
         BigDecimal goodsTotalBalance = totalAmount.compareTo(BigDecimal.ZERO) <= 0 ? BigDecimal.ZERO : goodsTotalPrice.multiply(balance).divide(totalAmount, 2, BigDecimal.ROUND_DOWN);
         //商品占用的总现金
@@ -396,6 +396,13 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 return sellAmount;
             }
 
+            BigDecimal totalAmount = order.getExpectAmount().add(repairInfo.getExemptionAmount());
+            if (totalAmount.compareTo(BigDecimal.ZERO) <= 0) {
+                sellAmount.put("actualAmount", BigDecimal.ZERO);
+                sellAmount.put("balance", BigDecimal.ZERO);
+                return sellAmount;
+            }
+
             BigDecimal goodsTotalPrice = BigDecimal.ZERO;
             goodies = goodsDao.getGoodies(goodsIds);
             int i = 1;
@@ -408,8 +415,10 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 }
             }
             BigDecimal balance = order.getBalancePaymentAmount() == null ? BigDecimal.ZERO : order.getBalancePaymentAmount();
-            BigDecimal goodsTotalBalance = goodsTotalPrice.multiply(balance).divide(order.getExpectAmount(), 2, BigDecimal.ROUND_HALF_UP);
-            sellAmount.put("actualAmount", goodsTotalPrice.subtract(goodsTotalBalance));
+
+            BigDecimal goodsTotalBalance = goodsTotalPrice.multiply(balance).divide(totalAmount, 2, BigDecimal.ROUND_DOWN);
+            BigDecimal goodsTotalActualAmount = goodsTotalPrice.multiply(order.getActualAmount()).divide(totalAmount, 2, BigDecimal.ROUND_DOWN);
+            sellAmount.put("actualAmount", goodsTotalActualAmount);
             sellAmount.put("balance", goodsTotalBalance);
             return sellAmount;
         }
@@ -424,7 +433,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             //商品总付款
             BigDecimal detailTotalPrice = orderDetails.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add);
             //商品销售占的余额
-            BigDecimal detailTotalBalance = detailTotalPrice.multiply(totalBalance).divide(totalPrice, 2, BigDecimal.ROUND_HALF_UP);
+            BigDecimal detailTotalBalance = detailTotalPrice.multiply(totalBalance).divide(totalPrice, 2, BigDecimal.ROUND_DOWN);
 
             sellAmount.put("actualAmount", detailTotalPrice.subtract(detailTotalBalance));
             sellAmount.put("balance", detailTotalBalance);

+ 5 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -918,22 +918,24 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             BigDecimal multiply2 = goodsSellDto.getGoodsPrice().multiply(new BigDecimal(sellOrder.getNum()));
             //获取比例
             BigDecimal ratioAmount = multiply2.divide(totalAmount, 6, BigDecimal.ROUND_HALF_UP);
+            //实际支付价格
+            BigDecimal actualAmount = goodsSellDto.getGoodsPrice();
             //如果有减免金额
             if (marketAmount.doubleValue() > 0l) {
                 //如果是最后一件商品
                 if (i == sellOrderList.size() - 1) {
-                    goodsSellDto.setTotalGoodsPrice(multiply2.subtract(usableMarketAmount));
+                    actualAmount = multiply2.subtract(usableMarketAmount);
                 } else {
                     //获取分配的减免金额
                     BigDecimal multiply = ratioAmount.multiply(marketAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
-                    goodsSellDto.setTotalGoodsPrice(multiply2.subtract(multiply));
+                    actualAmount = multiply2.subtract(multiply);
                     usableMarketAmount = usableMarketAmount.subtract(multiply);
                 }
             }
 
             //如果没有使用余额,那么实际金额和预计金额一致
             if (balancePaymentAmount.doubleValue() == 0l) {
-                sellOrder.setActualAmount(goodsSellDto.getTotalGoodsPrice());
+                sellOrder.setActualAmount(actualAmount);
                 sellOrder.setBalanceAmount(BigDecimal.ZERO);
             } else {
                 //如果是最后一件商品

+ 2 - 2
mec-biz/src/main/resources/config/mybatis/GoodsProcurementMapper.xml

@@ -133,11 +133,11 @@
 		SELECT COUNT(*) FROM goods_procurement
 	</select>
 
-	<select id="getWithStockSurplusProcurement" resultMap="GoodsProcurement">
+	<select id="getWithStockSurplusProcurement" resultMap="GoodsProcurement" useCache="false" flushCache="true">
 		SELECT * FROM goods_procurement WHERE goods_id_ = #{goodsId} AND stock_count_>stock_sold_num_ ORDER BY create_time_ LIMIT 1
 	</select>
 
-	<select id="getWithTaxStockSurplusProcurement" resultMap="GoodsProcurement">
+	<select id="getWithTaxStockSurplusProcurement" resultMap="GoodsProcurement" useCache="false" flushCache="true">
 		SELECT * FROM goods_procurement WHERE goods_id_ = #{goodsId} AND tax_stock_count_>tax_stock_sold_num_ ORDER BY create_time_ LIMIT 1
 	</select>
 

+ 42 - 0
mec-biz/src/main/resources/config/mybatis/IndexBaseMonthDataMapper.xml

@@ -881,4 +881,46 @@
 		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') = #{dayStr}
 		GROUP BY spo.organ_id_
 	</select>
+
+	<select id="getFinancePayDataWithTimely"  resultMap="IndexBaseMonthData">
+		SELECT SUM(fe.amount_) total_num_,SUM(fe.amount_) activate_num_,SUM(fe.amount_) percent_,fe.organ_id_,DATE_FORMAT(fe.create_time_,'%Y-%m-%d') month_
+		FROM financial_expenditure fe
+		WHERE DATE_FORMAT(fe.create_time_,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+		  AND del_flag_ = 0
+			<if test="organIds!=null and organIds.size()>0">
+				AND fe.organ_id_ IN
+				<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+					#{organId}
+				</foreach>
+			</if>
+		GROUP BY DATE_FORMAT(fe.create_time_,'%Y-%m-%d')
+	</select>
+	<select id="getFinanceBalanceDataWithTimely" resultMap="IndexBaseMonthData">
+		SELECT spo.organ_id_,SUM(CASE WHEN spo.balance_payment_amount_ IS NULL THEN 0 ELSE spo.balance_payment_amount_ END) total_num_,
+			   SUM(CASE WHEN spo.balance_payment_amount_ IS NULL THEN 0 ELSE spo.balance_payment_amount_ END) activate_num_,
+			   SUM(CASE WHEN spo.balance_payment_amount_ IS NULL THEN 0 ELSE spo.balance_payment_amount_ END) percent_,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_
+		FROM student_payment_order spo
+		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+		<if test="organIds!=null and organIds.size()>0">
+			AND spo.organ_id_ IN
+			<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+				#{organId}
+			</foreach>
+		</if>
+		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
+	</select>
+	<select id="getFinanceActualDataWithTimely" resultMap="IndexBaseMonthData">
+		SELECT spo.organ_id_,SUM(spo.actual_amount_) total_num_,
+			   SUM(spo.actual_amount_) activate_num_,
+			   SUM(spo.actual_amount_) percent_,DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') month_
+		FROM student_payment_order spo
+		WHERE spo.status_ = 'SUCCESS' AND DATE_FORMAT(spo.pay_time_,'%Y-%m-%d') BETWEEN #{startDate} AND #{endDate}
+		<if test="organIds!=null and organIds.size()>0">
+			AND spo.organ_id_ IN
+			<foreach collection="organIds" item="organId" open="(" close=")" separator=",">
+				#{organId}
+			</foreach>
+		</if>
+		GROUP BY DATE_FORMAT(spo.pay_time_,'%Y-%m-%d')
+	</select>
 </mapper>

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

@@ -155,7 +155,8 @@
 
     <select id="findStudentsByOrganId" resultMap="studentManageListDto">
         SELECT o.`name_` organ_name_,o.grade_type_,s.`user_id_` ,su.`username_` ,su.`phone_` parents_phone_,su.`real_name_` ,su.`gender_` , su.organ_id_,
-		tu.`real_name_` teacher_name_,CASE s.service_tag_ WHEN 2 THEN 0 ELSE s.service_tag_ END service_tag_ ,s.`operating_tag_` , s.care_package_, s.come_on_package_, suca.`course_balance_` ,
+		tu.`real_name_` teacher_name_,CASE s.service_tag_ WHEN 2 THEN 0 ELSE s.service_tag_ END service_tag_ ,s.`operating_tag_` ,
+        s.care_package_, s.come_on_package_, suca.`course_balance_` ,suca.balance_,
 		sub.`name_` music_group_subject_ ,su.birthdate_,s.subject_id_list_,s.teacher_id_,s.current_grade_num_,s.current_class_,
         case when su.password_ is null then false else true end isActive_,s.is_new_user_,case when sut.user_id_ is null then 0 else 1 end is_signed_contract_
 		FROM `student` s LEFT JOIN `sys_user` su on s.`user_id_` = su.`id_`

+ 3 - 3
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -339,9 +339,9 @@ public class StudentOrderController extends BaseController {
     //    @Scheduled(cron = "0/30 * * * * ?")
     @GetMapping("/setSuccessStatus")
     public HttpResponseResult setSuccessStatus(String orderNo) throws Exception {
-//        if (!profiles.equals("dev")) {
-//            return failed("非法操作");
-//        }
+        if (!profiles.equals("dev")&&!profiles.equals("test")) {
+            return failed("非法操作");
+        }
         List<StudentPaymentOrder> payingOrders = studentPaymentOrderService.findOrdersByStatus(DealStatusEnum.ING, "ADAPAY");
 
         String[] statusArr = {"0", "1", "7"};