Browse Source

更新维修单

周箭河 4 năm trước cách đây
mục cha
commit
a580bcfc64

+ 66 - 65
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRepairServiceImpl.java

@@ -109,11 +109,11 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public Map addGoodsSellOrder(StudentGoodsSell studentGoodsSell) throws Exception {
         //关闭老订单
-        if(StringUtils.isNotEmpty(studentGoodsSell.getOrderNo())){
+        if (StringUtils.isNotEmpty(studentGoodsSell.getOrderNo())) {
             StudentPaymentOrder orderByOrderNo = studentPaymentOrderService.findOrderByOrderNo(studentGoodsSell.getOrderNo());
-            if(orderByOrderNo.getBalancePaymentAmount() != null){
+            if (orderByOrderNo.getBalancePaymentAmount() != null) {
                 studentGoodsSell.setIsUseBalancePayment(true);
-            }else {
+            } else {
                 studentGoodsSell.setIsUseBalancePayment(false);
             }
             orderByOrderNo.setStatus(DealStatusEnum.CLOSE);
@@ -122,14 +122,14 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 sysUserCashAccountService.updateBalance(orderByOrderNo.getUserId(), orderByOrderNo.getBalancePaymentAmount(), PlatformCashAccountDetailTypeEnum.REFUNDS, "关闭订单");
             }
             StudentGoodsSell byOrderNo = studentGoodsSellDao.findByOrderNo(studentGoodsSell.getOrderNo());
-            if(byOrderNo != null){
+            if (byOrderNo != null) {
                 studentGoodsSell = byOrderNo;
-                studentGoodsSell.setGoodsSellDtos(JSON.parseArray(byOrderNo.getGoodsJson(),GoodsSellDto.class));
+                studentGoodsSell.setGoodsSellDtos(JSON.parseArray(byOrderNo.getGoodsJson(), GoodsSellDto.class));
             }
         }
         Integer studentId = studentGoodsSell.getUserId();
         List<GoodsSellDto> goodsSellDtos = studentGoodsSell.getGoodsSellDtos();
-        if(goodsSellDtos == null || goodsSellDtos.size() == 0){
+        if (goodsSellDtos == null || goodsSellDtos.size() == 0) {
             throw new BizException("请选择需要购买的商品");
         }
         if (studentId == null) {
@@ -139,21 +139,22 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         studentDao.lockUser(studentId);
         SysUser student = sysUserFeignService.queryUserById(studentId);
         //如果教务老师为空,代表学员自己创建的订单
-        if(studentGoodsSell.getTeacherId() == null){
+        MusicGroup musicGroup = null;
+        if (studentGoodsSell.getTeacherId() == null) {
             //获取学生关联的所有教务老师列表
             List<Integer> stuEducation = studentRepairDao.countStuEducation(studentId);
-            if (stuEducation != null && stuEducation.size() == 1){
+            if (stuEducation != null && stuEducation.size() == 1) {
                 //获取学员乐团关联的教务
-                MusicGroup musicGroup = musicGroupDao.getStuMusic(studentId);
+                musicGroup = musicGroupDao.getStuMusic(studentId);
                 studentGoodsSell.setTeacherId(stuEducation.get(0));
-                if(musicGroup != null){
+                if (musicGroup != null) {
                     studentGoodsSell.setCooperationOrganId(musicGroup.getCooperationOrganId());
                 }
             }
-        }else if(studentGoodsSell.getCooperationOrganId() == null){
+        } else if (studentGoodsSell.getCooperationOrganId() == null) {
             //获取教务老师,学员关联的乐团
-            MusicGroup musicGroup = musicGroupDao.getStuEduMusic(studentId,studentGoodsSell.getTeacherId());
-            if(musicGroup != null){
+            musicGroup = musicGroupDao.getStuEduMusic(studentId, studentGoodsSell.getTeacherId());
+            if (musicGroup != null) {
                 studentGoodsSell.setCooperationOrganId(musicGroup.getCooperationOrganId());
             }
         }
@@ -162,7 +163,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         Map<Integer, BigDecimal> map = getMap("goods", "id_", "discount_price_", goodsIds, Integer.class, BigDecimal.class);
         for (GoodsSellDto goodsSellDto : goodsSellDtos) {
             goodsSellDto.setGoodsType(integerStringMap.get(goodsSellDto.getGoodsId()));
-            if(StringUtils.isNotEmpty(goodsSellDto.getComplementGoodsIdList())){
+            if (StringUtils.isNotEmpty(goodsSellDto.getComplementGoodsIdList())) {
                 goodsSellDto.setGoodsSellDtos(goodsService.queryGoodsSellDtos(goodsSellDto.getComplementGoodsIdList()));
             }
             goodsSellDto.setGoodsPrice(map.get(goodsSellDto.getGoodsId()));
@@ -175,7 +176,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             amount = amount.add(goodsSellDto.getTotalGoodsPrice());
         }
         amount = amount.subtract(studentGoodsSell.getMarketAmount());
-        if(amount.signum() < 0){
+        if (amount.signum() < 0) {
             throw new BizException("操作失败:订单金额异常");
         }
         studentGoodsSell.setOrganId(student.getOrganId());
@@ -201,6 +202,9 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         studentPaymentOrder.setStatus(DealStatusEnum.ING);
         studentPaymentOrder.setOrganId(student.getOrganId());
         studentPaymentOrder.setRoutingOrganId(student.getOrganId());
+        if (musicGroup != null) {
+            studentPaymentOrder.setMusicGroupId(musicGroup.getCooperationOrganId().toString());
+        }
         studentPaymentOrderService.insert(studentPaymentOrder);
 
         studentPaymentOrder.setVersion(0);
@@ -257,13 +261,13 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         StudentGoodsSell studentGoodsSell = studentGoodsSellDao.get(goodsSellId);
         Integer studentId = studentGoodsSell.getUserId();
         studentDao.lockUser(studentId);
-        List<GoodsSellDto> goodsSellDtos = JSONObject.parseArray(studentGoodsSell.getGoodsJson(),GoodsSellDto.class);
+        List<GoodsSellDto> goodsSellDtos = JSONObject.parseArray(studentGoodsSell.getGoodsJson(), GoodsSellDto.class);
         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);
         Map<Integer, BigDecimal> map = getMap("goods", "id_", "discount_price_", goodsIds, Integer.class, BigDecimal.class);
         for (GoodsSellDto goodsSellDto : goodsSellDtos) {
             goodsSellDto.setGoodsType(integerStringMap.get(goodsSellDto.getGoodsId()));
-            if(StringUtils.isNotEmpty(goodsSellDto.getComplementGoodsIdList())){
+            if (StringUtils.isNotEmpty(goodsSellDto.getComplementGoodsIdList())) {
                 goodsSellDto.setGoodsSellDtos(goodsService.queryGoodsSellDtos(goodsSellDto.getComplementGoodsIdList()));
             }
             goodsSellDto.setGoodsPrice(map.get(goodsSellDto.getGoodsId()));
@@ -276,7 +280,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             amount = amount.add(goodsSellDto.getTotalGoodsPrice());
         }
         amount = amount.subtract(studentGoodsSell.getMarketAmount());
-        if(amount.signum() < 0){
+        if (amount.signum() < 0) {
             throw new BizException("操作失败:订单金额异常");
         }
         String orderNo1 = studentGoodsSell.getOrderNo();
@@ -284,16 +288,16 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 
         studentGoodsSell.setOrderNo(orderNo);
         StudentPaymentOrder studentPaymentOrder = null;
-        if(StringUtils.isNotEmpty(orderNo1)){
+        if (StringUtils.isNotEmpty(orderNo1)) {
             studentPaymentOrder = studentPaymentOrderService.findOrderByOrderNo(orderNo1);
-            if(studentPaymentOrder != null){
-                if(studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS){
+            if (studentPaymentOrder != null) {
+                if (studentPaymentOrder.getStatus() == DealStatusEnum.SUCCESS) {
                     throw new BizException("该订单已支付");
                 }
                 //关闭老订单
-                if(studentPaymentOrder.getBalancePaymentAmount() != null){
+                if (studentPaymentOrder.getBalancePaymentAmount() != null) {
                     studentGoodsSell.setIsUseBalancePayment(true);
-                }else {
+                } else {
                     studentGoodsSell.setIsUseBalancePayment(false);
                 }
                 studentPaymentOrder.setStatus(DealStatusEnum.CLOSE);
@@ -663,12 +667,8 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
     public void goodsSellOrderCallback(StudentPaymentOrder studentPaymentOrder) {
         Date nowDate = new Date();
-        StudentGoodsSell studentGoodsSell = studentGoodsSellDao.findByOrderNo(studentPaymentOrder.getOrderNo());
         //更新订单信息
         studentPaymentOrder.setUpdateTime(nowDate);
-        if(studentGoodsSell.getCooperationOrganId() !=null){
-            studentPaymentOrder.setMusicGroupId(studentGoodsSell.getCooperationOrganId().toString());
-        }
         int updateCount = studentPaymentOrderService.update(studentPaymentOrder);
         if (updateCount <= 0) {
             throw new BizException("订单更新失败");
@@ -730,7 +730,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         PageInfo<BasicUserDto> pageInfo = new PageInfo<>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<>();
         MapUtil.populateMap(params, queryInfo);
-        params.put("teacherId",sysUser.getId());
+        params.put("teacherId", sysUser.getId());
 
         List<BasicUserDto> dataList = null;
         int count = studentRepairDao.countEduStudents(params);
@@ -746,7 +746,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         return pageInfo;
     }
 
-    public void saveSellOrder(String orderNo){
+    public void saveSellOrder(String orderNo) {
         StudentPaymentOrder orderByOrderNo = studentPaymentOrderService.findOrderByOrderNo(orderNo);
         StudentGoodsSell studentGoodsSell = studentGoodsSellDao.findByOrderNo(orderNo);
         String goodsJson = studentGoodsSell.getGoodsJson();
@@ -754,13 +754,13 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         //用户选择的商品
         Map<Integer, List<GoodsSellDto>> collect = goodsSellDtos.stream().collect(Collectors.groupingBy(GoodsSellDto::getGoodsId));
         List<Integer> goodsIds = new ArrayList<>();
-        goodsSellDtos.forEach(e->{
+        goodsSellDtos.forEach(e -> {
             for (int i = 0; i < e.getGoodsNum(); i++) {
                 goodsIds.add(e.getGoodsId());
             }
         });
         AccountType accountType = AccountType.INTERNAL;
-        if(StringUtils.isNotEmpty(orderByOrderNo.getPaymentChannel())){
+        if (StringUtils.isNotEmpty(orderByOrderNo.getPaymentChannel())) {
             accountType = sysPaymentConfigService.checkAccountType(PaymentChannelEnum.valueOf(orderByOrderNo.getPaymentChannel()), orderByOrderNo.getMerNos());
         }
         //实际扣减的库存商品
@@ -775,11 +775,11 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         //包含减免余额的总金额
         BigDecimal totalAmount = goodsSellDtos.stream().map(e -> e.getTotalGoodsPrice()).reduce(BigDecimal.ZERO, BigDecimal::add);
         //组合商品减免金额
-        Map<Integer,BigDecimal> parentGoodsCutTotalPriceMap = new HashMap<>();
+        Map<Integer, BigDecimal> parentGoodsCutTotalPriceMap = new HashMap<>();
         //组合商品附加金额
-        Map<Integer,BigDecimal> parentGoodsAddTotalPriceMap = new HashMap<>();
+        Map<Integer, BigDecimal> parentGoodsAddTotalPriceMap = new HashMap<>();
         //组合商品实际总价
-        Map<Integer,BigDecimal> parentGoodsTotalPriceMap = new HashMap<>();
+        Map<Integer, BigDecimal> parentGoodsTotalPriceMap = new HashMap<>();
         //应付总额
         BigDecimal totalActual = totalAmount.subtract(marketAmount);
         //可用应付
@@ -808,16 +808,17 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             for (GoodsSellDto sellDto : goodsSellDto.getGoodsSellDtos()) {
                 totalGoodsPrice = totalGoodsPrice.add(sellDto.getTotalGoodsPrice());
             }
-            parentGoodsTotalPriceMap.put(sellOrder.getParentGoodsId(),totalGoodsPrice);
+            parentGoodsTotalPriceMap.put(sellOrder.getParentGoodsId(), totalGoodsPrice);
             //如果组合价大于预计总价
-            if (parentTotalGoodsPrice.compareTo(totalGoodsPrice) == 1){
-                parentGoodsAddTotalPriceMap.put(sellOrder.getParentGoodsId(),parentTotalGoodsPrice.subtract(totalGoodsPrice));
-            }else if(parentTotalGoodsPrice.compareTo(totalGoodsPrice) == -1){//小于
-                parentGoodsCutTotalPriceMap.put(sellOrder.getParentGoodsId(),totalGoodsPrice.subtract(parentTotalGoodsPrice));
+            if (parentTotalGoodsPrice.compareTo(totalGoodsPrice) == 1) {
+                parentGoodsAddTotalPriceMap.put(sellOrder.getParentGoodsId(), parentTotalGoodsPrice.subtract(totalGoodsPrice));
+            } else if (parentTotalGoodsPrice.compareTo(totalGoodsPrice) == -1) {//小于
+                parentGoodsCutTotalPriceMap.put(sellOrder.getParentGoodsId(), totalGoodsPrice.subtract(parentTotalGoodsPrice));
             }
         }
         //分配组合商品的中单个商品的价格
-        noFreeAmount:for (Integer parentGoodsId : orderListMap.keySet()) {
+        noFreeAmount:
+        for (Integer parentGoodsId : orderListMap.keySet()) {
 
             BigDecimal addTotalPrice = parentGoodsAddTotalPriceMap.get(parentGoodsId);
             usableParentGoodsAddTotalPrice = addTotalPrice;
@@ -838,29 +839,29 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
                 //获取比例
                 BigDecimal ratioAmount = sellDto.getTotalGoodsPrice().divide(divide, 6, BigDecimal.ROUND_HALF_UP);
 
-                if(addTotalPrice != null && addTotalPrice.doubleValue() > 0l){
+                if (addTotalPrice != null && addTotalPrice.doubleValue() > 0l) {
                     //如果是最后一件商品
-                    if(i == integers.size() - 1){
+                    if (i == integers.size() - 1) {
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().add(usableParentGoodsAddTotalPrice));
-                    }else {
+                    } else {
                         //获取分配的附加
-                        BigDecimal multiply = ratioAmount.multiply(addTotalPrice).setScale(2,BigDecimal.ROUND_HALF_UP);
+                        BigDecimal multiply = ratioAmount.multiply(addTotalPrice).setScale(2, BigDecimal.ROUND_HALF_UP);
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().add(multiply));
                         usableParentGoodsAddTotalPrice = usableParentGoodsAddTotalPrice.subtract(multiply);
                     }
                     sellDto.setGoodsPrice(sellDto.getTotalGoodsPrice());
-                }else if(cutTotalPrice != null && cutTotalPrice.doubleValue() > 0l){
+                } else if (cutTotalPrice != null && cutTotalPrice.doubleValue() > 0l) {
                     //如果是最后一件商品
-                    if(i == integers.size() - 1){
+                    if (i == integers.size() - 1) {
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().subtract(usableParentGoodsCutTotalPrice));
-                    }else {
+                    } else {
                         //获取分配的组合减免金额
-                        BigDecimal multiply = ratioAmount.multiply(cutTotalPrice).setScale(2,BigDecimal.ROUND_HALF_UP);
+                        BigDecimal multiply = ratioAmount.multiply(cutTotalPrice).setScale(2, BigDecimal.ROUND_HALF_UP);
                         sellDto.setTotalGoodsPrice(sellDto.getTotalGoodsPrice().subtract(multiply));
                         usableParentGoodsCutTotalPrice = usableParentGoodsCutTotalPrice.subtract(multiply);
                     }
                     sellDto.setGoodsPrice(sellDto.getTotalGoodsPrice());
-                }else {
+                } else {
                     continue noFreeAmount;
                 }
             }
@@ -868,14 +869,14 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
         for (int i = 0; i < sellOrderList.size(); i++) {
             SellOrder sellOrder = sellOrderList.get(i);
             Integer e = null;
-            if(sellOrder.getParentGoodsId() != null){
+            if (sellOrder.getParentGoodsId() != null) {
                 e = sellOrder.getParentGoodsId();
-            }else {
+            } else {
                 e = sellOrder.getGoodsId();
             }
             GoodsSellDto goodsSellDto = collect.get(e).get(0);
             List<GoodsSellDto> sellDtos = goodsSellDto.getGoodsSellDtos();
-            if(sellDtos != null && sellDtos.size() > 0){
+            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);
             }
@@ -892,32 +893,32 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             //获取比例
             BigDecimal ratioAmount = multiply2.divide(totalAmount, 6, BigDecimal.ROUND_HALF_UP);
             //如果有减免金额
-            if(marketAmount.doubleValue() > 0l){
+            if (marketAmount.doubleValue() > 0l) {
                 //如果是最后一件商品
-                if(i == sellOrderList.size() - 1){
+                if (i == sellOrderList.size() - 1) {
                     goodsSellDto.setTotalGoodsPrice(multiply2.subtract(usableMarketAmount));
-                }else {
+                } else {
                     //获取分配的减免金额
-                    BigDecimal multiply = ratioAmount.multiply(marketAmount).setScale(2,BigDecimal.ROUND_HALF_UP);
+                    BigDecimal multiply = ratioAmount.multiply(marketAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
                     goodsSellDto.setTotalGoodsPrice(multiply2.subtract(multiply));
                     usableMarketAmount = usableMarketAmount.subtract(multiply);
                 }
             }
 
             //如果没有使用余额,那么实际金额和预计金额一致
-            if(balancePaymentAmount.doubleValue() == 0l){
+            if (balancePaymentAmount.doubleValue() == 0l) {
                 sellOrder.setActualAmount(goodsSellDto.getTotalGoodsPrice());
                 sellOrder.setBalanceAmount(BigDecimal.ZERO);
-            }else {
+            } else {
                 //如果是最后一件商品
-                if(i == sellOrderList.size() - 1){
+                if (i == sellOrderList.size() - 1) {
                     sellOrder.setActualAmount(usableAmount);
                     sellOrder.setBalanceAmount(usableBalance);
-                }else {
+                } else {
                     //获取分配的余额
-                    BigDecimal multiply = ratioAmount.multiply(balancePaymentAmount).setScale(2,BigDecimal.ROUND_HALF_UP);
+                    BigDecimal multiply = ratioAmount.multiply(balancePaymentAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
                     //分配的实际支付
-                    BigDecimal multiply1 = ratioAmount.multiply(realityAmount).setScale(2,BigDecimal.ROUND_HALF_UP);
+                    BigDecimal multiply1 = ratioAmount.multiply(realityAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
                     sellOrder.setActualAmount(multiply1);
                     sellOrder.setBalanceAmount(multiply);
                     usableAmount = usableAmount.subtract(multiply1);
@@ -927,9 +928,9 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             }
             sellOrder.setExpectAmount(sellOrder.getActualAmount().add(sellOrder.getBalanceAmount()));
 //            sellOrder.setSellCost2(JSONObject.toJSONString(costMap));
-            if(SellTypeEnum.ACCESSORIES.getCode().equals(goodsSellDto.getGoodsType())||SellTypeEnum.INSTRUMENT.getCode().equals(goodsSellDto.getGoodsType())){
+            if (SellTypeEnum.ACCESSORIES.getCode().equals(goodsSellDto.getGoodsType()) || SellTypeEnum.INSTRUMENT.getCode().equals(goodsSellDto.getGoodsType())) {
                 sellOrder.setType(SellTypeEnum.valueOf(goodsSellDto.getGoodsType()));
-            }else{
+            } else {
                 sellOrder.setType(SellTypeEnum.OTHER);
             }
             sellOrder.setGoodsId(sellOrder.getGoodsId());
@@ -941,7 +942,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             sellOrder.setEduTeacherId(studentGoodsSell.getTeacherId());
             sellOrder.setCooperationOrganId(studentGoodsSell.getCooperationOrganId());
         }
-        if(sellOrderList.size() > 0){
+        if (sellOrderList.size() > 0) {
             sellOrderService.batchInsert(sellOrderList);
         }
     }