|
@@ -1,23 +1,129 @@
|
|
|
package com.ym.mec.biz.service.impl;
|
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Iterator;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
+
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import com.ym.mec.biz.dal.dao.MusicGroupDeliveryRecordDao;
|
|
|
+import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
|
|
|
+import com.ym.mec.biz.dal.dao.SubjectChangeDao;
|
|
|
+import com.ym.mec.biz.dal.dto.MusicGroupDeliveryRecordDto;
|
|
|
+import com.ym.mec.biz.dal.entity.Goods;
|
|
|
import com.ym.mec.biz.dal.entity.MusicGroupDeliveryRecord;
|
|
|
+import com.ym.mec.biz.dal.entity.StudentPaymentOrderDetail;
|
|
|
+import com.ym.mec.biz.dal.entity.SubjectChange;
|
|
|
+import com.ym.mec.biz.dal.enums.DealStatusEnum;
|
|
|
+import com.ym.mec.biz.dal.page.MusicGroupDeliveryRecordQueryInfo;
|
|
|
+import com.ym.mec.biz.service.GoodsService;
|
|
|
import com.ym.mec.biz.service.MusicGroupDeliveryRecordService;
|
|
|
import com.ym.mec.common.dal.BaseDAO;
|
|
|
+import com.ym.mec.common.page.PageInfo;
|
|
|
import com.ym.mec.common.service.impl.BaseServiceImpl;
|
|
|
+import com.ym.mec.util.collection.MapUtil;
|
|
|
|
|
|
@Service
|
|
|
public class MusicGroupDeliveryRecordServiceImpl extends BaseServiceImpl<Long, MusicGroupDeliveryRecord> implements MusicGroupDeliveryRecordService {
|
|
|
|
|
|
@Autowired
|
|
|
private MusicGroupDeliveryRecordDao musicGroupDeliveryRecordDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private SubjectChangeDao subjectChangeDao;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private GoodsService goodsService;
|
|
|
|
|
|
@Override
|
|
|
public BaseDAO<Long, MusicGroupDeliveryRecord> getDAO() {
|
|
|
return musicGroupDeliveryRecordDao;
|
|
|
}
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public PageInfo<MusicGroupDeliveryRecordDto> queryPage(MusicGroupDeliveryRecordQueryInfo queryInfo) {
|
|
|
+ PageInfo<MusicGroupDeliveryRecordDto> pageInfo = new PageInfo<MusicGroupDeliveryRecordDto>(queryInfo.getPage(), queryInfo.getRows());
|
|
|
+ Map<String, Object> params = new HashMap<String, Object>();
|
|
|
+ MapUtil.populateMap(params, queryInfo);
|
|
|
+
|
|
|
+ List<MusicGroupDeliveryRecordDto> dataList = null;
|
|
|
+ int count = this.findCount(params);
|
|
|
+ if (count > 0) {
|
|
|
+ pageInfo.setTotal(count);
|
|
|
+ params.put("offset", pageInfo.getOffset());
|
|
|
+ dataList = musicGroupDeliveryRecordDao.queryPageList(params);
|
|
|
+ }
|
|
|
+ if (count == 0) {
|
|
|
+ dataList = new ArrayList<MusicGroupDeliveryRecordDto>();
|
|
|
+ }
|
|
|
+ pageInfo.setRows(dataList);
|
|
|
+ return pageInfo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public List<Goods> queryDeliveryList(String musicGroupId, String deliveryBatchNo) {
|
|
|
+
|
|
|
+ //查询subject_change
|
|
|
+ List<SubjectChange> subjectChangeList = subjectChangeDao.queryByDeliveryBatchNo(musicGroupId, deliveryBatchNo);
|
|
|
+
|
|
|
+ List<Integer> changeUserIdList = null;
|
|
|
+ StringBuilder goodsIdsStr = new StringBuilder();
|
|
|
+
|
|
|
+ if(subjectChangeList != null && subjectChangeList.size() > 0){
|
|
|
+ changeUserIdList = subjectChangeList.stream().distinct().map(t -> t.getStudentId()).collect(Collectors.toList());
|
|
|
+
|
|
|
+ for(SubjectChange sc : subjectChangeList) {
|
|
|
+ if(StringUtils.isNotBlank(sc.getChangeAccessories())){
|
|
|
+ goodsIdsStr.append(sc.getChangeAccessories()).append(",");
|
|
|
+ }
|
|
|
+ if(sc.getChangeMusical() != null){
|
|
|
+ goodsIdsStr.append(sc.getChangeMusical()).append(",");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //查询student_payment_order_detail,剔除有声部更换的用户
|
|
|
+ List<StudentPaymentOrderDetail> studentPaymentOrderDetailList = studentPaymentOrderDetailDao.findUserApplyOrder(null, musicGroupId, DealStatusEnum.SUCCESS);
|
|
|
+
|
|
|
+ studentPaymentOrderDetailList = studentPaymentOrderDetailList.stream().filter((t) -> StringUtils.isNotBlank(t.getGoodsIdList()) && StringUtils.equals(t.getDeliveryBatchNo(), deliveryBatchNo)).collect(Collectors.toList());
|
|
|
+
|
|
|
+ if(changeUserIdList != null && changeUserIdList.size() > 0){
|
|
|
+ Iterator<StudentPaymentOrderDetail> iterator = studentPaymentOrderDetailList.iterator();
|
|
|
+
|
|
|
+ while(iterator.hasNext()){
|
|
|
+ if(changeUserIdList.contains(iterator.next().getUserId())){
|
|
|
+ iterator.remove();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ for(StudentPaymentOrderDetail spod : studentPaymentOrderDetailList){
|
|
|
+ goodsIdsStr.append(spod.getGoodsIdList()).append(",");
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Goods> goodsList = goodsService.findGoodsByIds(goodsIdsStr.toString());
|
|
|
+ Map<Integer, Goods> goodsMap = goodsList.stream().collect(Collectors.toMap(Goods::getId, t -> t));
|
|
|
+
|
|
|
+ Goods g = null;
|
|
|
+ for (String goodsId : goodsIdsStr.toString().split(",")) {
|
|
|
+ g = goodsMap.get(Integer.parseInt(goodsId));
|
|
|
+
|
|
|
+ if(g == null) continue;
|
|
|
+
|
|
|
+ g.setSellCount(g.getSellCount() + 1);
|
|
|
+
|
|
|
+ goodsMap.put(g.getId(), g);
|
|
|
+ }
|
|
|
+
|
|
|
+ return new ArrayList<Goods>(goodsMap.values());
|
|
|
+ }
|
|
|
|
|
|
}
|