Quellcode durchsuchen

Merge remote-tracking branch 'origin/Joburgess' into Joburgess

周箭河 vor 5 Jahren
Ursprung
Commit
ad8ea4debd

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/page/GoodsQueryInfo.java

@@ -28,6 +28,9 @@ public class GoodsQueryInfo extends QueryInfo {
     @ApiModelProperty(value = "是否组合商品:0/1")
     private Integer groupGoods;
 
+    @ApiModelProperty(value = "客户端是否展示:0否,1是")
+    private Integer clientShow;
+
     public Integer getGroupGoods() {
         return groupGoods;
     }
@@ -75,4 +78,12 @@ public class GoodsQueryInfo extends QueryInfo {
     public void setStatus(YesOrNoEnum status) {
         this.status = status;
     }
+
+    public Integer getClientShow() {
+        return clientShow;
+    }
+
+    public void setClientShow(Integer clientShow) {
+        this.clientShow = clientShow;
+    }
 }

+ 16 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/CourseScheduleServiceImpl.java

@@ -1301,6 +1301,7 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 		Map<Long, CourseSchedule> idCourseMap = courseSchedules.stream().collect(Collectors.toMap(CourseSchedule::getId, c -> c));
 		List<Long> courseIds = courseSchedules.stream().map(CourseSchedule::getId).collect(Collectors.toList());
 		List<CourseSchedule> existCourses = courseScheduleDao.findByCourseScheduleIds(courseIds);
+
 		List<CourseScheduleModifyLog> scheduleModifyLogs = new ArrayList<>();
 		Date now=new Date();
 		for (CourseSchedule existCours : existCourses) {
@@ -1325,6 +1326,21 @@ public class CourseScheduleServiceImpl extends BaseServiceImpl<Long, CourseSched
 			scheduleModifyLog.setCurrentCourseSchedule(JSONObject.toJSONString(existCours));
 			scheduleModifyLogs.add(scheduleModifyLog);
 		}
+
+		Date startDateTime = existCourses.stream().min(Comparator.comparing(CourseSchedule::getStartClassTime)).get().getStartClassTime();
+		Date endDateTime = existCourses.stream().min(Comparator.comparing(CourseSchedule::getEndClassTime)).get().getEndClassTime();
+		if(PRACTICE.equals(existCourses.get(0).getGroupType())){
+			PracticeGroup practiceGroup = practiceGroupDao.get(Long.valueOf(existCourses.get(0).getMusicGroupId()));
+			if(practiceGroup.getType() != TRIAL){
+				if(DateUtil.minutesBetween(startDateTime,practiceGroup.getCoursesStartDate()) > 0){
+					throw new BizException("调整失败: 调整时间不得早于开课时间");
+				}
+				if(DateUtil.minutesBetween(practiceGroup.getCoursesExpireDate(),endDateTime) > 0){
+					throw new BizException("调整失败: 截止时间超过课程有效期");
+				}
+			}
+		}
+
 		checkNewCourseSchedules(existCourses, false);
 		courseScheduleDao.batchUpdate(existCourses);
 

+ 8 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/GoodsServiceImpl.java

@@ -401,9 +401,12 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 			for (Map.Entry<String, List<Integer>> batchNoGoodsIdMapEntry : batchNoGoodsIdMap.entrySet()) {
 				Map<Integer, Long> goodsNumMap = batchNoGoodsIdMapEntry.getValue().stream().collect(Collectors.groupingBy(gid -> gid, Collectors.counting()));
 				for (Map.Entry<Integer, Long> goodsNumMapEntry : goodsNumMap.entrySet()) {
+					Goods goods = idTempGoodsMap.get(goodsNumMapEntry.getKey());
 					SellOrder sellOrder = new SellOrder();
 					sellOrder.setGoodsId(goodsNumMapEntry.getKey());
 					sellOrder.setNum(goodsNumMapEntry.getValue().intValue());
+					sellOrder.setStockType(goods.getStockType());
+					sellOrder.setAccountType(accountType);
 					sellOrder.setBatchNo(batchNoGoodsIdMapEntry.getKey());
 					GoodsProcurement goodsProcurement = goodsProcurementDao.getWithGoodsAndBatchNo(sellOrder.getGoodsId(), sellOrder.getBatchNo());
 					sellOrder.setSellCost(goodsProcurement.getDiscountPrice().multiply(new BigDecimal(sellOrder.getNum())));
@@ -415,10 +418,13 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 		List<GoodsProcurement> groupGoodsList = goodsProcurements.stream().filter(g -> Objects.nonNull(g.getParentGoodsId())||Objects.isNull(g.getBatchNo())).collect(Collectors.toList());
 		if(!CollectionUtils.isEmpty(groupGoodsList)){
 			for (GoodsProcurement goodsProcurement : groupGoodsList) {
+				Goods goods = goodsDao.get(goodsProcurement.getGoodsId());
 				SellOrder sellOrder = new SellOrder();
 				sellOrder.setParentGoodsId(goodsProcurement.getParentGoodsId());
 				sellOrder.setGoodsId(goodsProcurement.getGoodsId());
 				sellOrder.setNum(1);
+				sellOrder.setStockType(goods.getStockType());
+				sellOrder.setAccountType(accountType);
 				sellOrder.setBatchNo(goodsProcurement.getBatchNo());
 				if(Objects.nonNull(goodsProcurement.getBatchNo())){
 					sellOrder.setSellCost(goodsProcurement.getDiscountPrice().multiply(new BigDecimal(sellOrder.getNum())));
@@ -474,8 +480,8 @@ public class GoodsServiceImpl extends BaseServiceImpl<Integer, Goods>  implement
 		Map<Integer, Long> goodsNumMap = sellOrders.stream().filter(so -> Objects.nonNull(so.getParentGoodsId())).collect(Collectors.groupingBy(SellOrder::getParentGoodsId, Collectors.counting()));
 		for (Map.Entry<Integer, Long> goodsIdNumMapEntry : goodsNumMap.entrySet()) {
 			Goods goods = idGoodsMap.get(goodsIdNumMapEntry.getKey());
-			int goodSize = (int) sellOrders.stream().filter(so -> goodsIdNumMapEntry.getKey().equals(so.getParentGoodsId())).count();
-			int sellNum = (int) (goodSize/goodsIdNumMapEntry.getValue());
+			int childGoodsNum = sellOrders.stream().filter(so -> goodsIdNumMapEntry.getKey().equals(so.getParentGoodsId())).map(SellOrder::getGoodsId).collect(Collectors.toSet()).size();
+			int sellNum = (int) (goodsIdNumMapEntry.getValue()/childGoodsNum);
 			goods.setSellCount(new AtomicInteger(goods.getSellCount()).addAndGet(-sellNum));
 			goodsDao.update(goods);
 		}

+ 48 - 23
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) {
@@ -748,15 +749,16 @@ 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++) {
                 goodsIds.add(e.getGoodsId());
             }
         });
-        AccountType accountType = sysPaymentConfigService.checkAccountType(PaymentChannelEnum.valueOf(orderByOrderNo.getPaymentChannel()), orderByOrderNo.getMerNos());
+        AccountType accountType = AccountType.INTERNAL;
+        if(StringUtils.isNotEmpty(orderByOrderNo.getPaymentChannel())){
+            accountType = sysPaymentConfigService.checkAccountType(PaymentChannelEnum.valueOf(orderByOrderNo.getPaymentChannel()), orderByOrderNo.getMerNos());
+        }
         //实际扣减的库存商品
         List<SellOrder> sellOrderList = goodsService.subtractStock(goodsIds, accountType);
         Map<String, BigDecimal> costMap = new HashMap<>(2);
@@ -787,7 +789,10 @@ 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,21 +808,32 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 parentGoodsCutTotalPriceMap.put(sellOrder.getParentGoodsId(),totalGoodsPrice.subtract(parentTotalGoodsPrice));
             }
         }
-        noAmount:for (SellOrder sellOrder : orderList) {
-            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 == goodsId.size() - 1){
+                    if(i == sellOrders.size() - 1){
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().add(usableParentGoodsAddTotalPrice));
                     }else {
                         //获取分配的附加
@@ -825,9 +841,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 == sellOrders.size() - 1){
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().subtract(usableParentGoodsCutTotalPrice));
                     }else {
                         //获取分配的组合减免金额
@@ -835,12 +852,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 noFreeAmount;
                 }
             }
         }
-
         for (int i = 0; i < sellOrderList.size(); i++) {
             SellOrder sellOrder = sellOrderList.get(i);
             Integer e = null;
@@ -850,17 +867,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 +903,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 +919,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());

+ 3 - 0
mec-biz/src/main/resources/config/mybatis/GoodsMapper.xml

@@ -280,6 +280,9 @@
             <if test="groupGoods!=null and groupGoods==1">
                 AND g.complement_goods_id_list_ IS NOT NULL
             </if>
+            <if test="clientShow!=null">
+                AND g.client_show_=#{clientShow}
+            </if>
             <if test="search!=null and search!=''">
                 AND (g.sn_=#{search} OR g.id_=#{search} OR g.name_ LIKE CONCAT('%', #{search}, '%'))
             </if>

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

@@ -67,7 +67,9 @@
         values (#{eduTeacherId},#{organId}, #{cooperationOrganId}, #{transNo}, #{orderNo},#{orderId}, #{expectAmount},
         #{actualAmount}, #{balanceAmount}, #{type},#{parentGoodsId}, #{goodsId}, #{goodsName}, #{sellCost},
         #{sellCost2}, #{num}, #{userId},
-        #{paymentChannel}, #{merNo},#{batchNo},#{stockType},#{accountType}, #{sellTime}, #{createIme}, #{updateTime})
+        #{paymentChannel}, #{merNo},#{batchNo},
+        #{stockType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{accountType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
+        #{sellTime}, #{createIme}, #{updateTime})
     </insert>
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.SellOrder">
         <!--@mbg.generated-->
@@ -250,7 +252,8 @@
             (#{sellOrder.organId},#{sellOrder.cooperationOrganId},#{sellOrder.transNo},#{sellOrder.orderId},#{sellOrder.orderNo},
             #{sellOrder.expectAmount},#{sellOrder.actualAmount},#{sellOrder.balanceAmount},#{sellOrder.type},#{sellOrder.parentGoodsId},#{sellOrder.goodsId},
             #{sellOrder.goodsName},#{sellOrder.sellCost},#{sellOrder.sellCost2},#{sellOrder.num},#{sellOrder.userId},
-            #{sellOrder.paymentChannel},#{sellOrder.merNo},#{sellOrder.batchNo},#{sellOrder.stockType},#{sellOrder.accountType},
+            #{sellOrder.paymentChannel},#{sellOrder.merNo},#{sellOrder.batchNo},
+            #{sellOrder.stockType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{sellOrder.accountType,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},
             #{sellOrder.sellTime},#{sellOrder.eduTeacherId},NOW(),NOW())
         </foreach>
     </insert>

+ 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>