Selaa lähdekoodia

Merge remote-tracking branch 'origin/master'

Joburgess 5 vuotta sitten
vanhempi
commit
7441c93d3b

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

@@ -142,6 +142,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                 sellOrder.setStockType(goodsStockType);
             }
             //批次号 TODO
+            //goodsService.subtractStock();
 
             sellOrders.add(sellOrder);
             i++;

+ 23 - 14
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -749,8 +749,6 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         List<GoodsSellDto> goodsSellDtos = JSONObject.parseArray(goodsJson, GoodsSellDto.class);
         //用户选择的商品
         Map<Integer, List<GoodsSellDto>> collect = goodsSellDtos.stream().collect(Collectors.groupingBy(GoodsSellDto::getGoodsId));
-        List<Integer> goodsId = goodsSellDtos.stream().map(e -> e.getGoodsId()).collect(Collectors.toList());
-
         List<Integer> goodsIds = new ArrayList<>();
         goodsSellDtos.forEach(e->{
             for (int i = 0; i < e.getGoodsNum(); i++) {
@@ -792,6 +790,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         //获取组合商品列表
         List<SellOrder> orderList = sellOrderList.stream().filter(sellOrder -> sellOrder.getParentGoodsId() != null).collect(Collectors.toList());
         Map<Integer, List<SellOrder>> orderListMap = orderList.stream().collect(Collectors.groupingBy(SellOrder::getParentGoodsId));
+        //获取组合商品实际销售价,和单个商品总和价
         for (Integer integer : orderListMap.keySet()) {
             SellOrder sellOrder = orderListMap.get(integer).get(0);
             //获取组合商品销售总价
@@ -809,22 +808,32 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 parentGoodsCutTotalPriceMap.put(sellOrder.getParentGoodsId(),totalGoodsPrice.subtract(parentTotalGoodsPrice));
             }
         }
-        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());
+        //分配组合商品的中单个商品的价格
+        noFreeAmount:for (Integer parentGoodsId : orderListMap.keySet()) {
+
+            BigDecimal addTotalPrice = parentGoodsAddTotalPriceMap.get(parentGoodsId);
             usableParentGoodsAddTotalPrice = addTotalPrice;
-            BigDecimal cutTotalPrice = parentGoodsCutTotalPriceMap.get(sellOrder.getParentGoodsId());
+            BigDecimal cutTotalPrice = parentGoodsCutTotalPriceMap.get(parentGoodsId);
             usableParentGoodsCutTotalPrice = cutTotalPrice;
-            for (int i = 0; i < goodsSellDtoList.size(); i++) {
-                GoodsSellDto sellDto = goodsSellDtoList.get(i);
+
+            //获取组合商品销售总价
+            GoodsSellDto goodsSellDto = collect.get(parentGoodsId).get(0);
+            BigDecimal divide = goodsSellDto.getTotalGoodsPrice();
+
+            //获取子商品明细map
+            List<GoodsSellDto> sellDtos = goodsSellDto.getGoodsSellDtos();
+            Map<Integer, List<GoodsSellDto>> subGoodsMap = sellDtos.stream().collect(Collectors.groupingBy(GoodsSellDto::getGoodsId));
+
+            List<SellOrder> sellOrders = orderListMap.get(parentGoodsId);
+            for (int i = 0; i < sellOrders.size(); i++) {
+                SellOrder sellOrder = sellOrders.get(i);
+                GoodsSellDto sellDto = subGoodsMap.get(sellOrder.getGoodsId()).get(0);
                 //获取比例
-                BigDecimal ratioAmount = sellDto.getTotalGoodsPrice().divide(goodsSellDto.getTotalGoodsPrice(), 2, BigDecimal.ROUND_HALF_UP);
+                BigDecimal ratioAmount = sellDto.getTotalGoodsPrice().divide(divide, 2, BigDecimal.ROUND_HALF_UP);
 
                 if(addTotalPrice.doubleValue() > 0l){
                     //如果是最后一件商品
-                    if(i == goodsSellDtoList.size() - 1){
+                    if(i == sellOrders.size() - 1){
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().add(usableParentGoodsAddTotalPrice));
                     }else {
                         //获取分配的附加
@@ -835,7 +844,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                     sellDto.setGoodsPrice(sellDto.getTotalGoodsPrice());
                 }else if(cutTotalPrice.doubleValue() > 0l){
                     //如果是最后一件商品
-                    if(i == goodsSellDtoList.size() - 1){
+                    if(i == sellOrders.size() - 1){
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().subtract(usableParentGoodsCutTotalPrice));
                     }else {
                         //获取分配的组合减免金额
@@ -845,7 +854,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                     }
                     sellDto.setGoodsPrice(sellDto.getTotalGoodsPrice());
                 }else {
-                    continue;
+                    continue noFreeAmount;
                 }
             }
         }

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

@@ -5,8 +5,8 @@
         <!--@Table sys_payment_config-->
         <id column="id_" jdbcType="INTEGER" property="id"/>
         <result column="organ_id_" property="organId"/>
-        <result column="account_tyoe_" property="accountType"/>
-        <result column="pay_type_" property="payType"/>
+        <result column="account_type_" property="accountType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
+        <result column="pay_type_" property="payType" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
         <result column="yq_mer_no_" property="yqMerNo"/>
         <result column="hf_mer_no_" property="hfMerNo"/>
         <result column="type_" property="type"/>