소스 검색

Merge remote-tracking branch 'origin/master'

Joburgess 4 년 전
부모
커밋
ad8b895669

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/SubjectChangeDao.java

@@ -37,8 +37,16 @@ public interface SubjectChangeDao extends BaseDAO<Integer, SubjectChange> {
 
     /**
      * 获取声部更换列表
+     *
      * @param params
      * @return
      */
     List<SubjectChange> getPageList(Map<String, Object> params);
+
+    /**
+     * 获取更换的乐器辅件
+     * @param musicGroupId
+     * @return
+     */
+    SubjectChange getChangeGoods(@Param("musicGroupId") String musicGroupId);
 }

+ 109 - 42
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderDetailServiceImpl.java

@@ -45,6 +45,8 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
     private StudentRegistrationDao studentRegistrationDao;
     @Autowired
     private SubjectDao subjectDao;
+    @Autowired
+    private SubjectChangeDao subjectChangeDao;
 
     @Override
     public BaseDAO<Long, StudentPaymentOrderDetail> getDAO() {
@@ -62,41 +64,106 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
     }
 
     @Override
-	public List<Goods> getMusicalList(String musicGroupId) {
-		List<StudentPaymentOrderDetail> applyOrder = findApplyOrderSuccess(musicGroupId, DealStatusEnum.SUCCESS);
-		if (applyOrder == null || applyOrder.size() == 0) {
-			return null;
-		}
-		String goodsIdsStr = "";
-		for (StudentPaymentOrderDetail studentPaymentOrderDetail : applyOrder) {
-			if (studentPaymentOrderDetail.getGoodsIdList() != null && !studentPaymentOrderDetail.getGoodsIdList().isEmpty()) {
-				goodsIdsStr += studentPaymentOrderDetail.getGoodsIdList() + ",";
-			}
-		}
-		if (StringUtils.isNotBlank(goodsIdsStr)) {
-			goodsIdsStr = goodsIdsStr.substring(0, goodsIdsStr.length() - 1);
-
-			String[] goodSIdArr = goodsIdsStr.split(",");
-
-			List<Goods> goodies = goodsService.findGoodsByIds(goodsIdsStr);
-            MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
-            Organization organization = organizationDao.get(musicGroup.getOrganId());
-            goodies.forEach(e->{
-                e.setSellCount(0);
-                //当作乐团名称字段处理
-                e.setMemo(musicGroup.getName());
-                //当作分部名称字段处理
-                e.setBrief(organization.getName());
-                for (String goodsIdStr : goodSIdArr) {
-                    if (e.getId().equals(Integer.parseInt(goodsIdStr))) {
-                        e.setSellCount(e.getSellCount() + 1);
+    public List<Goods> getMusicalList(String musicGroupId) {
+        List<StudentPaymentOrderDetail> applyOrder = findApplyOrderSuccess(musicGroupId, DealStatusEnum.SUCCESS);
+        if (applyOrder == null || applyOrder.size() == 0) {
+            return null;
+        }
+        String goodsIdsStr = "";
+        for (StudentPaymentOrderDetail studentPaymentOrderDetail : applyOrder) {
+            if (studentPaymentOrderDetail.getGoodsIdList() != null && !studentPaymentOrderDetail.getGoodsIdList().isEmpty()) {
+                goodsIdsStr += studentPaymentOrderDetail.getGoodsIdList() + ",";
+            }
+        }
+        if (StringUtils.isNotBlank(goodsIdsStr)) {
+            return null;
+        }
+        goodsIdsStr = goodsIdsStr.substring(0, goodsIdsStr.length() - 1);
+
+        String[] goodSIdArr = goodsIdsStr.split(",");
+
+        List<Goods> goodies = goodsService.findGoodsByIds(goodsIdsStr);
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        Organization organization = organizationDao.get(musicGroup.getOrganId());
+        goodies.forEach(e -> {
+            e.setSellCount(0);
+            //当作乐团名称字段处理
+            e.setMemo(musicGroup.getName());
+            //当作分部名称字段处理
+            e.setBrief(organization.getName());
+            for (String goodsIdStr : goodSIdArr) {
+                if (e.getId().equals(Integer.parseInt(goodsIdStr))) {
+                    e.setSellCount(e.getSellCount() + 1);
+                }
+            }
+        });
+        //乐器更换的
+        SubjectChange changeGoods = subjectChangeDao.getChangeGoods(musicGroupId);
+        String originalGoodsIds = "";
+        String changeGoodsIds = "";
+        if (changeGoods != null) {
+            if (StringUtils.isNotBlank(changeGoods.getMusicGroupName())) {
+                originalGoodsIds += StringUtils.isNotBlank(originalGoodsIds) ? "," + changeGoods.getMusicGroupName() : changeGoods.getMusicGroupName();
+            }
+            if (StringUtils.isNotBlank(changeGoods.getOriginalAccessories())) {
+                originalGoodsIds += StringUtils.isNotBlank(originalGoodsIds) ? "," + changeGoods.getOriginalAccessories() : changeGoods.getOriginalAccessories();
+            }
+            if (StringUtils.isNotBlank(changeGoods.getTransNo())) {
+                changeGoodsIds += StringUtils.isNotBlank(changeGoodsIds) ? "," + changeGoods.getTransNo() : changeGoods.getTransNo();
+            }
+            if (StringUtils.isNotBlank(changeGoods.getChangeAccessories())) {
+                changeGoodsIds += StringUtils.isNotBlank(changeGoodsIds) ? "," + changeGoods.getChangeAccessories() : changeGoods.getChangeAccessories();
+            }
+        }
+        if (StringUtils.isNotBlank(changeGoodsIds)) {
+            String[] changGoodsIdsArr = changeGoodsIds.split(",");
+            List<Goods> addGoodies = new ArrayList<>();
+            for (String goodsId : changGoodsIdsArr) {
+                boolean has = false;
+                for (Goods goods : goodies) {
+                    if (goodsId.equals(goods.getId().toString())) {
+                        goods.setSellCount(goods.getSellCount() + 1);
+                        has = true;
+                        break;
                     }
                 }
-            });
-			return goodies;
-		}
-		return null;
-	}
+
+                for (Goods addGoods : addGoodies) {
+                    if (goodsId.equals(addGoods.getId().toString())) {
+                        addGoods.setSellCount(addGoods.getSellCount() + 1);
+                        has = true;
+                        break;
+                    }
+                }
+                if (!has) {
+                    Goods goods = goodsService.get(Integer.parseInt(goodsId));
+                    goods.setSellCount(1);
+                    goods.setMemo(musicGroup.getName());
+                    //当作分部名称字段处理
+                    goods.setBrief(organization.getName());
+                    addGoodies.add(goods);
+                }
+            }
+        }
+
+        if (StringUtils.isNotBlank(originalGoodsIds)) {
+            String[] originalGoodsIdsArr = originalGoodsIds.split(",");
+            for (String goodsId : originalGoodsIdsArr) {
+                for (Goods goods : goodies) {
+                    if (goodsId.equals(goods.getId().toString())) {
+                        goods.setSellCount(goods.getSellCount() - 1);
+                        break;
+                    }
+                }
+            }
+        }
+        while (goodies.iterator().hasNext()) {
+            if (goodies.iterator().next().getSellCount() <= 0) {
+                goodies.iterator().remove();
+            }
+        }
+        return goodies;
+    }
 
     @Override
     public Boolean verifyMusicalList(String musicGroupId) throws BizException {
@@ -146,7 +213,7 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
                 goodsIdsStr += studentPaymentOrderDetail.getGoodsIdList() + ",";
             }
         }
-        if(goodsIdsStr.isEmpty()){
+        if (goodsIdsStr.isEmpty()) {
             return null;
         }
         goodsIdsStr = goodsIdsStr.substring(0, goodsIdsStr.length() - 1);
@@ -174,21 +241,21 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
     @Override
     public List<MusicalListDetailDto> getMusicalListDetail(String musicGroupId) {
         List<MusicalListDetailDto> musicalListDetailDtos = studentPaymentOrderDetailDao.getMusicalListDetail(musicGroupId);
-        if(musicalListDetailDtos != null && musicalListDetailDtos.size() > 0){
+        if (musicalListDetailDtos != null && musicalListDetailDtos.size() > 0) {
             List<Long> paymentOrderNo = musicalListDetailDtos.stream().map(MusicalListDetailDto::getPaymentOrderId).collect(Collectors.toList());
             List<Integer> userIds = musicalListDetailDtos.stream().map(MusicalListDetailDto::getUserId).collect(Collectors.toList());
             //商品名称
             MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
             Organization organization = organizationDao.get(musicGroup.getOrganId());
-            Map<Long,String> goodsNameMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsNames(paymentOrderNo));
-            Map<Integer,String> usernameMap = MapUtil.convertIntegerMap(teacherDao.queryUsernameByIds(userIds));
+            Map<Long, String> goodsNameMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsNames(paymentOrderNo));
+            Map<Integer, String> usernameMap = MapUtil.convertIntegerMap(teacherDao.queryUsernameByIds(userIds));
             Map<Long, BigDecimal> actualAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDao.queryActualAmount(paymentOrderNo));
-            Map<Long, BigDecimal> musicalAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo,"MUSICAL"));
-            Map<Long, BigDecimal> accessoriesAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo,"ACCESSORIES"));
-            Map<Long, BigDecimal> courseAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo,"COURSE"));
+            Map<Long, BigDecimal> musicalAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo, "MUSICAL"));
+            Map<Long, BigDecimal> accessoriesAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo, "ACCESSORIES"));
+            Map<Long, BigDecimal> courseAmountMap = MapUtil.convertIntegerMap(studentPaymentOrderDetailDao.queryGoodsPrice(paymentOrderNo, "COURSE"));
             Map<Long, String> purchaseTypeMap = MapUtil.convertIntegerMap(studentRegistrationDao.queryPurchaseTypeMap(musicGroupId));
             Map<Integer, String> userSubjectMap = subjectDao.getRegisterSubject(musicGroupId, userIds).stream().collect(Collectors.toMap(StudentRegistration::getUserId, StudentRegistration::getSubjectName));
-            musicalListDetailDtos.forEach(e->{
+            musicalListDetailDtos.forEach(e -> {
                 e.setGoodsNames(goodsNameMap.get(e.getPaymentOrderId()));
                 e.setMusicGroupName(musicGroup.getName());
                 e.setUsername(usernameMap.get(e.getUserId()));
@@ -199,7 +266,7 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
                 e.setCourseAmount(courseAmountMap.get(e.getPaymentOrderId()));
                 e.setSubjectName(userSubjectMap.get(e.getUserId()));
                 String s = purchaseTypeMap.get(e.getUserId().longValue());
-                if(StringUtils.isNotEmpty(s)){
+                if (StringUtils.isNotEmpty(s)) {
                     e.setKitGroupPurchaseTypeEnum(KitGroupPurchaseTypeEnum.valueOf(purchaseTypeMap.get(e.getUserId().longValue())));
                 }
             });

+ 9 - 0
mec-biz/src/main/resources/config/mybatis/SubjectChangeMapper.xml

@@ -252,4 +252,13 @@
         LEFT JOIN sys_user s ON sc.student_id_ = s.id_
         <include refid="queryPageSql"/>
     </select>
+
+    <select id="getChangeGoods" resultMap="SubjectChange">
+        SELECT GROUP_CONCAT(original_musical_) musicGroupName,GROUP_CONCAT(original_accessories_) original_accessories_,
+        GROUP_CONCAT(change_musical_) trans_no_,GROUP_CONCAT(change_accessories_) change_accessories_
+        FROM subject_change
+        WHERE music_group_id_ = #{musicGroupId}
+          AND status_ = 2
+        GROUP BY music_group_id_
+    </select>
 </mapper>