yonge 3 năm trước cách đây
mục cha
commit
8cdc19d621

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/GoodsProcurementDao.java

@@ -10,6 +10,8 @@ import java.util.Map;
 public interface GoodsProcurementDao extends BaseDAO<Long, GoodsProcurement> {
 
     int batchInsert(@Param("goodsProcurements") List<GoodsProcurement> goodsProcurements);
+    
+    int batchUpdate(@Param("goodsProcurements") List<GoodsProcurement> goodsProcurements);
 
     List<GoodsProcurement> queryGoodsProcurements(Map<String, Object> params);
     int countGoodsProcurements(Map<String, Object> params);

+ 27 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/PayServiceImpl.java

@@ -19,12 +19,14 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.alibaba.fastjson.JSON;
+import com.ym.mec.biz.dal.dao.GoodsProcurementDao;
 import com.ym.mec.biz.dal.dao.HfMemberDao;
 import com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao;
 import com.ym.mec.biz.dal.dao.SysConfigDao;
 import com.ym.mec.biz.dal.dto.AmountChannelDto;
 import com.ym.mec.biz.dal.dto.RouteScaleDto;
 import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.GoodsProcurement;
 import com.ym.mec.biz.dal.entity.HfMember;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
 import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
@@ -74,6 +76,8 @@ public class PayServiceImpl implements PayService {
     private HfMemberDao hfMemberDao;
     @Autowired
     private RedisCache<String, Object> redisCache;
+    @Autowired
+    private GoodsProcurementDao goodsProcurementDao;
 
     @Override
     public Map<String, Object> getPayMap(BigDecimal amount, BigDecimal balanceAmount, String orderNo, String notifyUrl, String returnUrl, String orderSubject, String orderBody, Integer organId, String receiver) throws Exception {
@@ -196,12 +200,15 @@ public class PayServiceImpl implements PayService {
         		List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = studentPaymentOrderDetailService.queryOrderDetail(studentPaymentOrder.getId());
         		if (studentPaymentOrderDetailList != null && studentPaymentOrderDetailList.size() > 0) {
         			
+        			List<GoodsProcurement> goodsProcurementList = new ArrayList<GoodsProcurement>();
+        			
         			String goodIds = studentPaymentOrderDetailList.stream().filter(t -> StringUtils.isNotBlank(t.getGoodsIdList())).map(StudentPaymentOrderDetail :: getGoodsIdList).collect(Collectors.joining(","));
         			if(StringUtils.isNotBlank(goodIds)){
         				List<Goods> goodsList = goodsService.getGoodsWithLocked(goodIds);
         				
         				Map<Integer,Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods :: getId, t -> t));
         				Goods goods = null;
+        				GoodsProcurement goodsProcurement = null;
         				BigDecimal totalAmout = studentPaymentOrder.getExpectAmount();
         				List<Integer> minuendStockGoodsIdList = null;
         				
@@ -237,10 +244,18 @@ public class PayServiceImpl implements PayService {
         									if(subGoods.getStockCount() > 0){
         										groupPurchaseAmount = groupPurchaseAmount.add(subGoods.getGroupPurchasePrice());
         										subGoods.setStockCount(new AtomicInteger(subGoods.getStockCount()).decrementAndGet());
+            									subGoods.setSellCount(new AtomicInteger(subGoods.getStockCount()).incrementAndGet());
         										subGoods.setUpdateTime(date);
         										batchUpdateGoodsList.add(subGoods);
         										
         										minuendStockGoodsIdList.add(subGoods.getId());
+        										
+        										goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
+        										if(goodsProcurement != null){
+        											goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).incrementAndGet());
+        											goodsProcurement.setUpdateTime(date);
+            										goodsProcurementList.add(goodsProcurement);
+        										}
         									}
         								}
         							}else{
@@ -249,10 +264,18 @@ public class PayServiceImpl implements PayService {
         								if(goods.getStockCount() > 0){
     										groupPurchaseAmount = groupPurchaseAmount.add(goods.getGroupPurchasePrice());
     										goods.setStockCount(new AtomicInteger(goods.getStockCount()).decrementAndGet());
+    										goods.setSellCount(new AtomicInteger(goods.getStockCount()).incrementAndGet());
     										goods.setUpdateTime(date);
     										batchUpdateGoodsList.add(goods);
     										
     										minuendStockGoodsIdList.add(goods.getId());
+    										
+    										goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(goods.getId());
+    										if(goodsProcurement != null){
+    											goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).incrementAndGet());
+    											goodsProcurement.setUpdateTime(date);
+        										goodsProcurementList.add(goodsProcurement);
+    										}
         								}
         							}
         						}
@@ -278,6 +301,10 @@ public class PayServiceImpl implements PayService {
 							}
         				}
         			}
+        			
+        			if(goodsProcurementList.size() > 0){
+        				goodsProcurementDao.batchUpdate(goodsProcurementList);
+        			}
         		}
         		
         		if(batchUpdateList.size() > 0){

+ 167 - 30
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1,16 +1,157 @@
 package com.ym.mec.biz.service.impl;
 
+import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
+import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
+import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.MAINTENANCE;
+import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.PRACTICE;
+import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.VIP;
+import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
+import static com.ym.mec.biz.dal.enums.SysUserRoleEnum.ORGAN_MANAGER;
+
+import java.io.IOException;
+import java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+import javax.annotation.Resource;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Propagation;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.auth.api.enums.CertificateTypeEnum;
-import com.ym.mec.biz.dal.dao.*;
-import com.ym.mec.biz.dal.dto.*;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.*;
-import com.ym.mec.biz.dal.page.*;
+import com.ym.mec.biz.dal.dao.CourseScheduleDao;
+import com.ym.mec.biz.dal.dao.GoodsDao;
+import com.ym.mec.biz.dal.dao.GoodsProcurementDao;
+import com.ym.mec.biz.dal.dao.ImGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderDetailDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentCalenderStudentDetailDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPaymentStudentCourseDetailDao;
+import com.ym.mec.biz.dal.dao.MusicGroupStudentFeeDao;
+import com.ym.mec.biz.dal.dao.MusicGroupSubjectPlanDao;
+import com.ym.mec.biz.dal.dao.OrganizationDao;
+import com.ym.mec.biz.dal.dao.StudentCourseFeeDetailDao;
+import com.ym.mec.biz.dal.dao.StudentDao;
+import com.ym.mec.biz.dal.dao.StudentInstrumentDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dao.SubjectChangeDao;
+import com.ym.mec.biz.dal.dao.SubjectDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dao.SysUserCashAccountDao;
+import com.ym.mec.biz.dal.dao.TeacherDao;
+import com.ym.mec.biz.dal.dto.MusicGroupApplyGoodsDto;
+import com.ym.mec.biz.dal.dto.NoClassMusicStudentDto;
+import com.ym.mec.biz.dal.dto.PageInfoReg;
+import com.ym.mec.biz.dal.dto.RegisterDto;
+import com.ym.mec.biz.dal.dto.RegisterPayDto;
+import com.ym.mec.biz.dal.dto.StudentAddDto;
+import com.ym.mec.biz.dal.dto.StudentApplyDetailDto;
+import com.ym.mec.biz.dal.dto.StudentCourseInfoDto;
+import com.ym.mec.biz.dal.dto.StudentInfo;
+import com.ym.mec.biz.dal.dto.StudentMusicDetailDto;
+import com.ym.mec.biz.dal.dto.StudentMusicGroupDto;
+import com.ym.mec.biz.dal.dto.StudentRegisterInstrumentsDetailDto;
+import com.ym.mec.biz.dal.entity.ClassGroup;
+import com.ym.mec.biz.dal.entity.ClassGroupStudentMapper;
+import com.ym.mec.biz.dal.entity.CloudTeacherOrder;
+import com.ym.mec.biz.dal.entity.CooperationOrgan;
+import com.ym.mec.biz.dal.entity.CouponPayParam;
+import com.ym.mec.biz.dal.entity.CouponPayTypeInfo;
+import com.ym.mec.biz.dal.entity.CourseSchedule;
+import com.ym.mec.biz.dal.entity.CourseScheduleStudentPayment;
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.GoodsProcurement;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalender;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderActivity;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderCourseSettings;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderMember;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderRepair;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentCalenderStudentDetail;
+import com.ym.mec.biz.dal.entity.MusicGroupPaymentStudentCourseDetail;
+import com.ym.mec.biz.dal.entity.MusicGroupStudentFee;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectGoodsGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.Organization;
+import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.StudentCourseFeeDetail;
+import com.ym.mec.biz.dal.entity.StudentInstrument;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.Subject;
+import com.ym.mec.biz.dal.entity.SubjectChange;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
+import com.ym.mec.biz.dal.enums.ClassGroupStudentStatusEnum;
+import com.ym.mec.biz.dal.enums.ClassGroupTypeEnum;
+import com.ym.mec.biz.dal.enums.CouponDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.CourseStatusEnum;
+import com.ym.mec.biz.dal.enums.CourseViewTypeEnum;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.GoodsType;
+import com.ym.mec.biz.dal.enums.GroupType;
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.MusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.enums.PaymentStatusEnum;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.SysUserRoleEnum;
+import com.ym.mec.biz.dal.page.MusicGroupRecordStudentQueryInfo;
+import com.ym.mec.biz.dal.page.NoClassMusicStudentQueryInfo;
+import com.ym.mec.biz.dal.page.RegistrationOrPreQueryInfo;
+import com.ym.mec.biz.dal.page.StudentPreRegistrationQueryInfo;
+import com.ym.mec.biz.dal.page.StudentRegistrationQueryInfo;
 import com.ym.mec.biz.event.source.SendSeoMessageSource;
-import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.service.ClassGroupService;
+import com.ym.mec.biz.service.ClassGroupStudentMapperService;
+import com.ym.mec.biz.service.CloudTeacherOrderService;
+import com.ym.mec.biz.service.ContractService;
+import com.ym.mec.biz.service.CourseScheduleService;
+import com.ym.mec.biz.service.CourseScheduleStudentPaymentService;
+import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.biz.service.ImGroupMemberService;
+import com.ym.mec.biz.service.MusicGroupPaymentCalenderActivityService;
+import com.ym.mec.biz.service.MusicGroupPaymentCalenderMemberService;
+import com.ym.mec.biz.service.MusicGroupPaymentCalenderRepairService;
+import com.ym.mec.biz.service.MusicGroupPaymentCalenderService;
+import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.StudentRegistrationService;
+import com.ym.mec.biz.service.StudentService;
+import com.ym.mec.biz.service.SubjectService;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysCouponCodeService;
+import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.SysTenantConfigService;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
+import com.ym.mec.biz.service.SysUserCashAccountLogService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.entity.HttpResponseResult;
 import com.ym.mec.common.entity.ImResult;
@@ -25,30 +166,6 @@ import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.util.http.HttpUtil;
 
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Propagation;
-import org.springframework.transaction.annotation.Transactional;
-
-import javax.annotation.Resource;
-
-import java.io.IOException;
-import java.math.BigDecimal;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Collectors;
-
-import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.NON_PAYMENT;
-import static com.ym.mec.biz.dal.entity.MusicGroupStudentFee.PaymentStatus.PAID_COMPLETED;
-import static com.ym.mec.biz.dal.enums.OrderDetailTypeEnum.*;
-import static com.ym.mec.biz.dal.enums.PaymentStatusEnum.YES;
-import static com.ym.mec.biz.dal.enums.SysUserRoleEnum.ORGAN_MANAGER;
-
 @Service
 public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, StudentRegistration> implements StudentRegistrationService {
 
@@ -134,6 +251,10 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     private ImGroupDao imGroupDao;
     @Autowired
     private StudentInstrumentDao studentInstrumentDao;
+    
+    @Autowired
+    private GoodsProcurementDao goodsProcurementDao;
+    
     @Autowired
     private MusicGroupPaymentCalenderStudentDetailDao musicGroupPaymentCalenderStudentDetailDao;
     @Autowired
@@ -1248,6 +1369,7 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             } catch (Exception e) {
                 LOGGER.error("协议生成失败", e);
             }
+            
         }
 
         if (studentPaymentOrder.getStatus().equals(DealStatusEnum.FAILED)) {
@@ -1262,11 +1384,26 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
             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<GoodsProcurement> goodsProcurementList = new ArrayList<GoodsProcurement>();
             	List<Goods> goodsList = goodsService.getGoodsWithLocked(goodsIds);
             	for(Goods subGoods : goodsList){
 					subGoods.setStockCount(new AtomicInteger(subGoods.getStockCount()).incrementAndGet());
+					subGoods.setSellCount(new AtomicInteger(subGoods.getSellCount()).decrementAndGet());
 					subGoods.setUpdateTime(nowDate);
 					batchUpdateGoodsList.add(subGoods);
+					
+					// 进货清单
+					goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(subGoods.getId());
+					if(goodsProcurement != null){
+						goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
+						goodsProcurement.setUpdateTime(nowDate);
+						goodsProcurementList.add(goodsProcurement);
+					}
+            	}
+            	
+            	if(goodsProcurementList.size() > 0){
+            		goodsProcurementDao.batchUpdate(goodsProcurementList);
             	}
             }
             

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

@@ -34,6 +34,7 @@ import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.client.SysUserFeignService;
 import com.ym.mec.auth.api.entity.SysUser;
+import com.ym.mec.biz.dal.dao.GoodsProcurementDao;
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.StudentDao;
 import com.ym.mec.biz.dal.dao.StudentGoodsSellDao;
@@ -43,6 +44,7 @@ import com.ym.mec.biz.dal.dto.BasicUserDto;
 import com.ym.mec.biz.dal.dto.GoodsSellDto;
 import com.ym.mec.biz.dal.dto.RepairGoodsDto;
 import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.GoodsProcurement;
 import com.ym.mec.biz.dal.entity.MusicGroup;
 import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.biz.dal.entity.StudentGoodsSell;
@@ -126,6 +128,8 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
     @Autowired
     private StudentGoodsSellDao studentGoodsSellDao;
     @Autowired
+    private GoodsProcurementDao goodsProcurementDao;
+    @Autowired
     private ContractService contractService;
     @Autowired
     private GoodsService goodsService;
@@ -958,11 +962,26 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             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<GoodsProcurement> goodsProcurementList = new ArrayList<GoodsProcurement>();
             	List<Goods> goodsList = goodsService.getGoodsWithLocked(goodsIds);
             	for(Goods subGoods : goodsList){
 					subGoods.setStockCount(new AtomicInteger(subGoods.getStockCount()).incrementAndGet());
+					subGoods.setSellCount(new AtomicInteger(subGoods.getSellCount()).decrementAndGet());
 					subGoods.setUpdateTime(nowDate);
 					batchUpdateGoodsList.add(subGoods);
+					
+					// 进货清单
+					goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(subGoods.getId());
+					if(goodsProcurement != null){
+						goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
+						goodsProcurement.setUpdateTime(nowDate);
+						goodsProcurementList.add(goodsProcurement);
+					}
+            	}
+            	
+            	if(goodsProcurementList.size() > 0){
+            		goodsProcurementDao.batchUpdate(goodsProcurementList);
             	}
             }
             
@@ -1355,11 +1374,26 @@ public class StudentRepairServiceImpl extends BaseServiceImpl<Integer, StudentRe
             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<GoodsProcurement> goodsProcurementList = new ArrayList<GoodsProcurement>();
             	List<Goods> goodsList = goodsService.getGoodsWithLocked(goodsIds);
             	for(Goods subGoods : goodsList){
 					subGoods.setStockCount(new AtomicInteger(subGoods.getStockCount()).incrementAndGet());
+					subGoods.setSellCount(new AtomicInteger(subGoods.getSellCount()).decrementAndGet());
 					subGoods.setUpdateTime(nowDate);
 					batchUpdateGoodsList.add(subGoods);
+					
+					// 进货清单
+					goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(subGoods.getId());
+					if(goodsProcurement != null){
+						goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
+						goodsProcurement.setUpdateTime(nowDate);
+						goodsProcurementList.add(goodsProcurement);
+					}
+            	}
+            	
+            	if(goodsProcurementList.size() > 0){
+            		goodsProcurementDao.batchUpdate(goodsProcurementList);
             	}
             }
             

+ 114 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -1,39 +1,98 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.biz.dal.dao.*;
+import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
+import static com.ym.mec.biz.dal.enums.GroupType.SUBJECT_CHANGE;
+
+import java.math.BigDecimal;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Isolation;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.ym.mec.biz.dal.dao.GoodsDao;
+import com.ym.mec.biz.dal.dao.GoodsProcurementDao;
+import com.ym.mec.biz.dal.dao.MusicGroupDao;
+import com.ym.mec.biz.dal.dao.MusicGroupPurchaseListDao;
+import com.ym.mec.biz.dal.dao.SellOrderDao;
+import com.ym.mec.biz.dal.dao.StudentDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDao;
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
+import com.ym.mec.biz.dal.dao.StudentRegistrationDao;
+import com.ym.mec.biz.dal.dao.SubjectChangeDao;
+import com.ym.mec.biz.dal.dao.SysConfigDao;
+import com.ym.mec.biz.dal.dao.SysUserCashAccountLogDao;
 import com.ym.mec.biz.dal.dto.SubjectChangeParamDto;
-import com.ym.mec.biz.dal.entity.*;
-import com.ym.mec.biz.dal.enums.*;
+import com.ym.mec.biz.dal.entity.Goods;
+import com.ym.mec.biz.dal.entity.GoodsProcurement;
+import com.ym.mec.biz.dal.entity.MusicGroup;
+import com.ym.mec.biz.dal.entity.MusicGroupPurchaseList;
+import com.ym.mec.biz.dal.entity.MusicGroupSubjectPlan;
+import com.ym.mec.biz.dal.entity.SellOrder;
+import com.ym.mec.biz.dal.entity.Student;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
+import com.ym.mec.biz.dal.entity.StudentRegistration;
+import com.ym.mec.biz.dal.entity.SubjectChange;
+import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.entity.SysUserCashAccountDetail;
+import com.ym.mec.biz.dal.entity.SysUserCashAccountLog;
+import com.ym.mec.biz.dal.enums.AccountType;
+import com.ym.mec.biz.dal.enums.CouponDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
+import com.ym.mec.biz.dal.enums.GoodsType;
+import com.ym.mec.biz.dal.enums.KitGroupPurchaseTypeEnum;
+import com.ym.mec.biz.dal.enums.MessageTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
+import com.ym.mec.biz.dal.enums.PayStatus;
+import com.ym.mec.biz.dal.enums.PaymentChannelEnum;
+import com.ym.mec.biz.dal.enums.PlatformCashAccountDetailTypeEnum;
+import com.ym.mec.biz.dal.enums.ReturnFeeEnum;
+import com.ym.mec.biz.dal.enums.SellTypeEnum;
+import com.ym.mec.biz.dal.enums.StudentMusicGroupStatusEnum;
+import com.ym.mec.biz.dal.enums.SubjectChangeStatusEnum;
 import com.ym.mec.biz.dal.page.SubjectChangeQueryInfo;
-import com.ym.mec.biz.service.*;
+import com.ym.mec.biz.service.ContractService;
+import com.ym.mec.biz.service.GoodsService;
+import com.ym.mec.biz.service.MusicGroupSubjectPlanService;
+import com.ym.mec.biz.service.PayService;
+import com.ym.mec.biz.service.SellOrderService;
+import com.ym.mec.biz.service.StudentInstrumentService;
+import com.ym.mec.biz.service.StudentPaymentOrderDetailService;
+import com.ym.mec.biz.service.StudentPaymentOrderService;
+import com.ym.mec.biz.service.StudentPaymentRouteOrderService;
+import com.ym.mec.biz.service.StudentRegistrationService;
+import com.ym.mec.biz.service.SubjectChangeService;
+import com.ym.mec.biz.service.SysConfigService;
+import com.ym.mec.biz.service.SysCouponCodeService;
+import com.ym.mec.biz.service.SysMessageService;
+import com.ym.mec.biz.service.SysPaymentConfigService;
+import com.ym.mec.biz.service.SysUserCashAccountDetailService;
+import com.ym.mec.biz.service.SysUserCashAccountService;
 import com.ym.mec.common.dal.BaseDAO;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.page.PageInfo;
 import com.ym.mec.common.service.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
-import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.thirdparty.message.MessageSenderPluginContext;
 import com.ym.mec.util.collection.MapUtil;
 import com.ym.mec.util.date.DateUtil;
 
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Isolation;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.math.BigDecimal;
-import java.math.RoundingMode;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Collectors;
-
-import static com.ym.mec.biz.dal.enums.DealStatusEnum.SUCCESS;
-import static com.ym.mec.biz.dal.enums.GroupType.SUBJECT_CHANGE;
-
 @Service
 public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectChange> implements SubjectChangeService {
 
@@ -91,6 +150,8 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
     private SysCouponCodeService sysCouponCodeService;
     @Autowired
     private SysUserCashAccountLogDao sysUserCashAccountLogDao;
+    @Autowired
+    private GoodsProcurementDao goodsProcurementDao;
 
     private final Logger logger = LoggerFactory.getLogger(this.getClass());
 
@@ -789,11 +850,26 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
 	        goodsIdsStr = originalAccessories.stream().map(t -> t.toString()).collect(Collectors.joining(","));
             //增加商品库存
             if(StringUtils.isNotBlank(goodsIdsStr)){
+            	GoodsProcurement goodsProcurement = null;
+            	List<GoodsProcurement> goodsProcurementList = new ArrayList<GoodsProcurement>();
             	List<Goods> goodsList = goodsService.getGoodsWithLocked(goodsIdsStr);
             	for(Goods subGoods : goodsList){
 					subGoods.setStockCount(new AtomicInteger(subGoods.getStockCount()).incrementAndGet());
+					subGoods.setSellCount(new AtomicInteger(subGoods.getSellCount()).decrementAndGet());
 					subGoods.setUpdateTime(nowDate);
 					batchUpdateGoodsList.add(subGoods);
+					
+					// 进货清单
+					goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(subGoods.getId());
+					if(goodsProcurement != null){
+						goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
+						goodsProcurement.setUpdateTime(nowDate);
+						goodsProcurementList.add(goodsProcurement);
+					}
+            	}
+            	
+            	if(goodsProcurementList.size() > 0){
+            		goodsProcurementDao.batchUpdate(goodsProcurementList);
             	}
             }
             
@@ -813,11 +889,26 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
             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<GoodsProcurement> goodsProcurementList = new ArrayList<GoodsProcurement>();
             	List<Goods> goodsList = goodsService.getGoodsWithLocked(goodsIds);
             	for(Goods subGoods : goodsList){
 					subGoods.setStockCount(new AtomicInteger(subGoods.getStockCount()).incrementAndGet());
+					subGoods.setSellCount(new AtomicInteger(subGoods.getSellCount()).decrementAndGet());
 					subGoods.setUpdateTime(nowDate);
 					batchUpdateGoodsList.add(subGoods);
+					
+					// 进货清单
+					goodsProcurement = goodsProcurementDao.getWithStockSurplusProcurement(subGoods.getId());
+					if(goodsProcurement != null){
+						goodsProcurement.setStockSoldNum(new AtomicInteger(goodsProcurement.getStockSoldNum()).decrementAndGet());
+						goodsProcurement.setUpdateTime(nowDate);
+						goodsProcurementList.add(goodsProcurement);
+					}
+            	}
+            	
+            	if(goodsProcurementList.size() > 0){
+            		goodsProcurementDao.batchUpdate(goodsProcurementList);
             	}
             }
             

+ 45 - 0
mec-biz/src/main/resources/config/mybatis/GoodsProcurementMapper.xml

@@ -92,6 +92,51 @@
 		</set> WHERE id_ = #{id} and tenant_id_ = #{tenantId}
 	</update>
 	
+    <update id="batchUpdate" parameterType="java.util.List">
+        <foreach collection="goodsProcurements" item="item" index="index" open="" close="" separator=";">
+			UPDATE goods_procurement
+			<set>
+				<if test="item.operatorId != null">
+					operator_id_ = #{item.operatorId},
+				</if>
+				<if test="item.agreeCostPrice != null">
+					agree_cost_price_ = #{item.agreeCostPrice},
+				</if>
+				<if test="item.id != null">
+					id_ = #{item.id},
+				</if>
+				<if test="item.goodsCategoryId != null">
+					goods_category_id_ = #{item.goodsCategoryId},
+				</if>
+				<if test="item.taxStockCount != null">
+					tax_stock_count_ = #{item.taxStockCount},
+				</if>
+				<if test="item.supplyChannel != null">
+					supply_channel_ = #{item.supplyChannel},
+				</if>
+				<if test="item.discountPrice != null">
+					discount_price_ = #{item.discountPrice},
+				</if>
+				<if test="item.stockCount != null">
+					stock_count_ = #{item.stockCount},
+				</if>
+				<if test="item.goodsId != null">
+					goods_id_ = #{item.goodsId},
+				</if>
+				<if test="item.batchNo != null">
+					batch_no_ = #{item.batchNo},
+				</if>
+				<if test="item.stockSoldNum != null">
+					stock_sold_num_ = #{item.stockSoldNum},
+				</if>
+				<if test="item.taxStockSoldNum != null">
+					tax_stock_sold_num_ = #{item.taxStockSoldNum},
+				</if>
+					update_time_ = NOW(),
+			</set> WHERE id_ = #{item.id} and tenant_id_ = #{item.tenantId}
+		</foreach>
+	</update>
+	
 	<!-- 根据主键删除一条记录 -->
 	<delete id="delete" >
 		DELETE FROM goods_procurement WHERE id_ = #{id}