zouxuan vor 5 Jahren
Ursprung
Commit
6035aa44db

+ 26 - 13
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -136,8 +136,10 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         if (studentId == null) {
             throw new BizException("请指定学员");
         }
-
+        List<Integer> goodsIds = goodsSellDtos.stream().map(e -> e.getGoodsId()).collect(Collectors.toList());
+        Map<Integer, String> integerStringMap = getMap("goods", "id_", "type_", goodsIds, Integer.class, String.class);
         goodsSellDtos.forEach(e->{
+            e.setGoodsType(integerStringMap.get(e.getGoodsId()));
             if(StringUtils.isNotEmpty(e.getComplementGoodsIdList())){
                 e.setGoodsSellDtos(goodsService.queryGoodsSellDtos(e.getComplementGoodsIdList()));
             }
@@ -163,7 +165,6 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 studentGoodsSell.setCooperationOrganId(musicGroup.getCooperationOrganId());
             }
         }
-        List<Integer> goodsIds = goodsSellDtos.stream().map(e -> e.getGoodsId()).collect(Collectors.toList());
 
         Map<Integer, BigDecimal> map = getMap("goods", "id_", "market_price_", goodsIds, Integer.class, BigDecimal.class);
         for (GoodsSellDto goodsSellDto : goodsSellDtos) {
@@ -787,7 +788,9 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 
         //获取组合商品列表
         List<SellOrder> orderList = sellOrderList.stream().filter(sellOrder -> sellOrder.getParentGoodsId() != null).collect(Collectors.toList());
-        for (SellOrder sellOrder : orderList) {
+        Map<Integer, List<SellOrder>> orderListMap = orderList.stream().collect(Collectors.groupingBy(SellOrder::getParentGoodsId));
+        for (Integer integer : orderListMap.keySet()) {
+            SellOrder sellOrder = orderListMap.get(integer).get(0);
             //获取组合商品销售总价
             GoodsSellDto goodsSellDto = collect.get(sellOrder.getParentGoodsId()).get(0);
             BigDecimal parentTotalGoodsPrice = goodsSellDto.getTotalGoodsPrice();
@@ -803,7 +806,8 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 parentGoodsCutTotalPriceMap.put(sellOrder.getParentGoodsId(),totalGoodsPrice.subtract(parentTotalGoodsPrice));
             }
         }
-        noAmount:for (SellOrder sellOrder : orderList) {
+        for (Integer integer : orderListMap.keySet()) {
+            SellOrder sellOrder = orderListMap.get(integer).get(0);
             GoodsSellDto goodsSellDto = collect.get(sellOrder.getParentGoodsId()).get(0);
             List<GoodsSellDto> goodsSellDtoList = goodsSellDto.getGoodsSellDtos();
             BigDecimal addTotalPrice = parentGoodsAddTotalPriceMap.get(sellOrder.getParentGoodsId());
@@ -817,7 +821,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 
                 if(addTotalPrice.doubleValue() > 0l){
                     //如果是最后一件商品
-                    if(i == goodsId.size() - 1){
+                    if(i == goodsSellDtoList.size() - 1){
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().add(usableParentGoodsAddTotalPrice));
                     }else {
                         //获取分配的附加
@@ -825,9 +829,10 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().add(multiply));
                         usableParentGoodsAddTotalPrice = usableParentGoodsAddTotalPrice.subtract(multiply);
                     }
+                    sellDto.setGoodsPrice(sellDto.getTotalGoodsPrice());
                 }else if(cutTotalPrice.doubleValue() > 0l){
                     //如果是最后一件商品
-                    if(i == goodsId.size() - 1){
+                    if(i == goodsSellDtoList.size() - 1){
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().subtract(usableParentGoodsCutTotalPrice));
                     }else {
                         //获取分配的组合减免金额
@@ -835,12 +840,12 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().subtract(multiply));
                         usableParentGoodsCutTotalPrice = usableParentGoodsCutTotalPrice.subtract(multiply);
                     }
+                    sellDto.setGoodsPrice(sellDto.getTotalGoodsPrice());
                 }else {
-                    continue noAmount;
+                    continue;
                 }
             }
         }
-
         for (int i = 0; i < sellOrderList.size(); i++) {
             SellOrder sellOrder = sellOrderList.get(i);
             Integer e = null;
@@ -850,17 +855,27 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 e = sellOrder.getGoodsId();
             }
             GoodsSellDto goodsSellDto = collect.get(e).get(0);
+            List<GoodsSellDto> sellDtos = goodsSellDto.getGoodsSellDtos();
+            if(sellDtos != null && sellDtos.size() > 0){
+                Map<Integer, List<GoodsSellDto>> map = sellDtos.stream().collect(Collectors.groupingBy(GoodsSellDto::getGoodsId));
+                goodsSellDto = map.get(sellOrder.getGoodsId()).get(0);
+            }
             sellOrder.setOrganId(orderByOrderNo.getOrganId());
             sellOrder.setTransNo(orderByOrderNo.getTransNo());
             sellOrder.setOrderId(orderByOrderNo.getId());
             sellOrder.setOrderNo(orderByOrderNo.getOrderNo());
+            Goods goods = goodsService.get(e);
+            costMap.put("sellCost", goods.getDiscountPrice());
+            if (goods.getAgreeCostPrice() != null) {
+                costMap.put("SellCost2", goods.getAgreeCostPrice());
+            }
             goodsSellDto.setTotalGoodsPrice(goodsSellDto.getGoodsPrice().multiply(new BigDecimal(sellOrder.getNum())));
             //获取比例
             BigDecimal ratioAmount = goodsSellDto.getTotalGoodsPrice().divide(totalAmount, 2, BigDecimal.ROUND_HALF_UP);
             //如果有减免金额
             if(marketAmount.doubleValue() > 0l){
                 //如果是最后一件商品
-                if(i == goodsId.size() - 1){
+                if(i == sellOrderList.size() - 1){
                     goodsSellDto.setTotalGoodsPrice(goodsSellDto.getTotalGoodsPrice().subtract(usableMarketAmount));
                 }else {
                     //获取分配的减免金额
@@ -876,7 +891,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 sellOrder.setBalanceAmount(BigDecimal.ZERO);
             }else {
                 //如果是最后一件商品
-                if(i == goodsId.size() - 1){
+                if(i == sellOrderList.size() - 1){
                     sellOrder.setActualAmount(usableAmount);
                     sellOrder.setBalanceAmount(usableBalance);
                 }else {
@@ -892,12 +907,10 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 }
             }
             sellOrder.setExpectAmount(sellOrder.getActualAmount().add(sellOrder.getBalanceAmount()));
-//            sellOrder.setSellCost(goods.getDiscountPrice());
             sellOrder.setSellCost2(JSONObject.toJSONString(costMap));
             sellOrder.setType(SellTypeEnum.valueOf(goodsSellDto.getGoodsType()));
-            sellOrder.setGoodsId(e);
+            sellOrder.setGoodsId(sellOrder.getGoodsId());
             sellOrder.setGoodsName(goodsSellDto.getGoodsName());
-            sellOrder.setNum(goodsSellDto.getGoodsNum());
             sellOrder.setUserId(studentGoodsSell.getUserId());
             sellOrder.setPaymentChannel(orderByOrderNo.getPaymentChannel());
             sellOrder.setMerNo(orderByOrderNo.getMerNos());

+ 9 - 11
mec-biz/src/main/resources/config/mybatis/SysPaymentConfigMapper.xml

@@ -189,16 +189,14 @@
     <!-- 获取所有账户类型为外部的账户 -->
     <select id="getOutAccounts" resultMap="SysPaymentConfig">
         SELECT * FROM sys_payment_config WHERE account_type_ = 1
-        <where>
-            <if test="payType != null">
-                AND pay_type_ = #{payType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
-            </if>
-            <if test='payType != null and payType.code.equals("YQPAY")'>
-                AND yq_mer_no_ != ''
-            </if>
-            <if test='payType != null and payType.code.equals("ADAPAY")'>
-                AND hf_mer_no_ !=''
-            </if>
-        </where>
+        <if test="payType != null">
+            AND pay_type_ = #{payType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler}
+        </if>
+        <if test='payType != null and payType.code.equals("YQPAY")'>
+            AND yq_mer_no_ != ''
+        </if>
+        <if test='payType != null and payType.code.equals("ADAPAY")'>
+            AND hf_mer_no_ != ''
+        </if>
     </select>
 </mapper>