yonge vor 3 Jahren
Ursprung
Commit
2badda52fe

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

@@ -405,9 +405,9 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 	                }
 	                studentPaymentOrderDetail.setGoodsIdList(goodsIdStr);
 	                
-	                BigDecimal tempPrice = studentPaymentOrder.getExpectAmount().multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, RoundingMode.UP);
+	                BigDecimal tempPrice = studentPaymentOrder.getExpectAmount().multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN);
 	                
-	                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIdsStr.split(",").length == studentPaymentOrderDetailList.size() - 1){
+	                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIdsStr.split(",").length == studentPaymentOrderDetailList.size() + 1){
 	                	studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));
 	                }else{
 	                	studentPaymentOrderDetail.setPrice(tempPrice);
@@ -739,7 +739,7 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
 	                }
 	                studentPaymentOrderDetail.setGoodsIdList(goodsIdStr);
 	                
-	                BigDecimal tempPrice = studentPaymentOrder.getExpectAmount().subtract(repairPrice).multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, RoundingMode.UP);
+	                BigDecimal tempPrice = studentPaymentOrder.getExpectAmount().subtract(repairPrice).multiply(goods.getGroupPurchasePrice()).divide(totalGroupPurchasePrice, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN);
 	                
 	                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIds.split(",").length == studentPaymentOrderDetailList.size()){
 	                	studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));

+ 48 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -214,6 +214,52 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
                 studentPaymentOrder.setUpdateTime(date);
                 studentPaymentOrderService.update(studentPaymentOrder);
                 subjectChange.setStatus(SubjectChangeStatusEnum.WAIT_PAY);
+                //增加商品库存
+                List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = studentPaymentOrderDetailService.queryOrderDetail(studentPaymentOrder.getId());
+                String goodsIds = studentPaymentOrderDetailList.stream().filter(t -> StringUtils.isNotBlank(t.getMinuendStockGoodsIdList())).map(t -> t.getMinuendStockGoodsIdList()).collect(Collectors.joining(","));
+                if(StringUtils.isNotBlank(goodsIds)){
+                	GoodsProcurement goodsProcurement = null;
+                	List<Goods> goodsList = goodsService.getGoodsWithLocked(goodsIds);
+                	Map<Integer,Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods :: getId, t -> t));
+                	Goods goods = null;
+        			Map<Integer, Goods> batchUpdateGoodsMap = new HashMap<Integer, Goods>();
+        			Map<Long, GoodsProcurement> goodsProcurementMap = new HashMap<Long, GoodsProcurement>();
+                	
+                	for(String goodsIdStr : goodsIds.split(",")){
+                		if(StringUtils.isBlank(goodsIdStr)){
+        					continue;
+        				}
+        				goods = goodsMap.get(Integer.parseInt(goodsIdStr));
+        				if(batchUpdateGoodsMap.get(goods.getId()) != null){
+        					goods = batchUpdateGoodsMap.get(goods.getId());
+        				}
+        				goods.setStockCount(new AtomicInteger(goods.getStockCount()).incrementAndGet());
+        				goods.setSellCount(new AtomicInteger(goods.getSellCount()).decrementAndGet());
+        				goods.setUpdateTime(date);
+        				
+        				batchUpdateGoodsMap.put(goods.getId(), goods);
+        				
+        				// 进货清单
+        				goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
+        				if(goodsProcurement != null){
+        					if(goodsProcurementMap.get(goodsProcurement.getId()) != null){
+        						goodsProcurement = goodsProcurementMap.get(goodsProcurement.getId());
+        					}
+        					goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
+        					goodsProcurement.setUpdateTime(date);
+        					goodsProcurementMap.put(goodsProcurement.getId(), goodsProcurement);
+        				}
+        				
+                	}
+                	
+                	if(goodsProcurementMap.size() > 0){
+                		goodsProcurementDao.batchUpdate(new ArrayList<GoodsProcurement>(goodsProcurementMap.values()));
+                	}
+                    
+                    if(batchUpdateGoodsMap.size() > 0){
+                    	goodsService.batchUpdate(new ArrayList<Goods>(batchUpdateGoodsMap.values()));
+                    }
+                }
             }
         }
 
@@ -306,13 +352,6 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         		changeGoodsList.add(id);
         	}
         	
-        	if(StringUtils.isNotBlank(subjectChange.getOriginalAccessories())){
-        		for(String id : subjectChange.getOriginalAccessories().split(",")){
-        			changeGoodsList.add(id);
-        		}
-        		//changeGoodsList.addAll(Arrays.asList(subjectChange.getOriginalAccessories().split(",")));
-        	}
-        	
         	if(subjectChange.getChangeMusical() != subjectChange.getOriginalMusical()){
         		changeGoodsList.add(subjectChange.getChangeMusical()+"");
         	}
@@ -344,9 +383,9 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
                 }
                 studentPaymentOrderDetail.setGoodsIdList(goods.getId() + "");
                 
-                BigDecimal tempPrice = studentPaymentOrder.getExpectAmount().multiply(goods.getGroupPurchasePrice()).divide(goodsTotalGroupPurchasePrice, RoundingMode.UP);
+                BigDecimal tempPrice = studentPaymentOrder.getExpectAmount().multiply(goods.getGroupPurchasePrice()).divide(goodsTotalGroupPurchasePrice, BigDecimal.ROUND_DOWN).setScale(2, BigDecimal.ROUND_DOWN);
                 
-                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIdsStr.split(",").length == studentPaymentOrderDetailList.size() - 1){
+                if(totalPrice.add(tempPrice).compareTo(studentPaymentOrder.getExpectAmount()) > 0 || goodsIdsStr.split(",").length == studentPaymentOrderDetailList.size() + 1){
                 	studentPaymentOrderDetail.setPrice(studentPaymentOrder.getExpectAmount().subtract(totalPrice));
                 }else{
                 	studentPaymentOrderDetail.setPrice(tempPrice);