فهرست منبع

Merge remote-tracking branch 'origin/master'

Joburgess 4 سال پیش
والد
کامیت
8470c157b2

+ 11 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/MusicGroupBuildLogDao.java

@@ -2,6 +2,7 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.MusicGroupBuildLog;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -9,8 +10,17 @@ public interface MusicGroupBuildLogDao extends BaseDAO<Integer, MusicGroupBuildL
 
     /**
      * 获取所有日志记录
+     *
      * @param musicGroupId
      * @return
      */
-    List<MusicGroupBuildLog> findById(String musicGroupId);
+    List<MusicGroupBuildLog> findById(@Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 获取乐团的审核通过时间
+     *
+     * @param musicGroupIds
+     * @return
+     */
+    List<MusicGroupBuildLog> getMusicGroupAuditSuccess(@Param("musicGroupIds") List<String> musicGroupIds);
 }

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

@@ -53,6 +53,7 @@ public interface SubjectChangeDao extends BaseDAO<Integer, SubjectChange> {
 
     /**
      * 获取用户换取的乐器辅件
+     *
      * @param musicGroupId
      * @return
      */
@@ -60,9 +61,17 @@ public interface SubjectChangeDao extends BaseDAO<Integer, SubjectChange> {
 
     /**
      * 获取学生待支付的声部更改
+     *
      * @param studentId
      * @param musicGroupId
      * @return
      */
     SubjectChange getStudentWaitPay(@Param("studentId") Integer studentId, @Param("musicGroupId") String musicGroupId);
+
+    /**
+     * 获取退还的差额
+     * @param musicGroupId
+     * @return
+     */
+    List<SubjectChange> getMargin(@Param("musicGroupId") String musicGroupId);
 }

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/ClassGroupStudentMapperService.java

@@ -27,7 +27,7 @@ public interface ClassGroupStudentMapperService extends BaseService<Long, ClassG
      * @param classGroupId
      * @return
      */
-    boolean delClassGroupStudent(Integer userId, Integer classGroupId);
+    boolean delClassGroupStudent(Integer userId, Integer classGroupId,Boolean quitMusicGroup);
 
 
     /**

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ClassGroupStudentMapperServiceImpl.java

@@ -93,10 +93,10 @@ public class ClassGroupStudentMapperServiceImpl extends BaseServiceImpl<Long, Cl
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean delClassGroupStudent(Integer userId, Integer classGroupId) {
+    public boolean delClassGroupStudent(Integer userId, Integer classGroupId,Boolean quitMusicGroup) {
         ClassGroup classGroup = classGroupService.get(classGroupId);
         Integer studentNum = classGroupStudentMapperDao.countClassGroupNormalStudentNum(classGroupId);
-        if (classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) && studentNum <= 3) {
+        if (!quitMusicGroup && classGroup.getType().equals(ClassGroupTypeEnum.HIGH_ONLINE) && studentNum <= 3) {
             throw new BizException(classGroup.getName()+"(网络基础训练课班级)人数不能少于3,请调整");
         }
 

+ 2 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupServiceImpl.java

@@ -1419,7 +1419,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
                 if (classGroup.getType().equals(ClassGroupTypeEnum.MUSIC_NETWORK)) {
                     classGroupService.delSingle(classGroupId);
                 } else {
-                    classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId);
+                    classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId,true);
                 }
             }
 
@@ -1521,7 +1521,7 @@ public class MusicGroupServiceImpl extends BaseServiceImpl<String, MusicGroup> i
             if (classGroup.getType().equals(ClassGroupTypeEnum.MUSIC_NETWORK)) {
                 classGroupService.delSingle(classGroupId);
             } else {
-                classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId);
+                classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId,true);
             }
         }
 

+ 7 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -1,7 +1,6 @@
 package com.ym.mec.biz.service.impl;
 
 
-import com.alibaba.fastjson.JSON;
 import com.ym.mec.biz.dal.dao.GoodsDao;
 import com.ym.mec.biz.dal.dao.MusicGroupDao;
 import com.ym.mec.biz.dal.dao.SellOrderDao;
@@ -10,7 +9,6 @@ import com.ym.mec.biz.dal.entity.*;
 import com.ym.mec.biz.dal.enums.*;
 import com.ym.mec.biz.service.*;
 import com.ym.mec.common.dal.BaseDAO;
-import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -150,6 +148,9 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                     sellOrder.setType(SellTypeEnum.OTHER);
                 }
                 sellOrder.setHasRoute(true);
+                if (complementGoodsNum <= 0) {
+                    break;
+                }
             }
         }
         sellOrderDao.batchInsert(sellOrderList);
@@ -273,11 +274,13 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                         sellOrder.setExpectAmount(BigDecimal.ZERO);
                     }
                     sellOrder.setHasRoute(true);
+                    if (complementGoodsNum <= 0) {
+                        break;
+                    }
                 }
 
-                sellOrders.addAll(sellOrderList);
-
             }
+            sellOrders.addAll(sellOrderList);
         }
         if (sellOrders.size() > 0) {
             sellOrderDao.batchInsert(sellOrders);

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

@@ -286,12 +286,17 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
             studentPaymentOrder.setOrganId(subjectChange.getOrganId());
             studentPaymentOrder.setRoutingOrganId(subjectChange.getOrganId());
             studentPaymentOrderService.insert(studentPaymentOrder);
+
+            subjectChange.setOrderId(studentPaymentOrder.getId().intValue());
+            subjectChange.setOrderNo(orderNo);
+            subjectChangeDao.update(subjectChange);
+
             List<Integer> goodsIdList = Arrays.stream(goodsIds.split(",")).map(Integer::parseInt).collect(Collectors.toList());
 
             //退原订单商品
             sellOrderService.refundByOrderId(subjectChange.getOriginalOrderId().longValue(), false);
             //添加新订单
-            this.addSellOrder(studentPaymentOrder.getId(), subjectChange.getMusicGroupId(), goodsIdList, BigDecimal.ZERO, BigDecimal.ZERO,subjectChange.getKitGroupPurchaseType());
+            this.addSellOrder(studentPaymentOrder.getId(), subjectChange.getMusicGroupId(), goodsIdList, BigDecimal.ZERO, BigDecimal.ZERO, subjectChange.getKitGroupPurchaseType());
         }
         return subjectChange;
     }
@@ -316,7 +321,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         SubjectChange subjectChange = new SubjectChange();
         SubjectChange studentLastChange = subjectChangeDao.getStudentLastChange(studentId, musicGroupId);
         if (studentLastChange != null) {
-            Set<Integer> refundSellOrderGoodsIds = getRefundGoodsId(subjectChange.getOrderId().longValue());
+            Set<Integer> refundSellOrderGoodsIds = getRefundGoodsId(studentLastChange.getOrderId().longValue());
             subjectChange.setStudentId(studentLastChange.getStudentId());
             subjectChange.setOrderId(studentLastChange.getOrderId());
             subjectChange.setCooperationOrganId(studentLastChange.getCooperationOrganId());
@@ -480,7 +485,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
                 //退原订单商品
                 sellOrderService.refundByOrderId(subjectChange.getOriginalOrderId().longValue(), false);
                 //添加新订单
-                this.addSellOrder(studentPaymentOrder.getId(), subjectChange.getMusicGroupId(), goodsIdList, studentPaymentOrder.getExpectAmount(), studentPaymentOrder.getBalancePaymentAmount(),subjectChange.getKitGroupPurchaseType());
+                this.addSellOrder(studentPaymentOrder.getId(), subjectChange.getMusicGroupId(), goodsIdList, studentPaymentOrder.getExpectAmount(), studentPaymentOrder.getBalancePaymentAmount(), subjectChange.getKitGroupPurchaseType());
             }
 
             //插入交易明细
@@ -584,7 +589,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
     }
 
     @Override
-    public List<SellOrder> addSellOrder(Long orderId, String musicGroupId, List<Integer> goodsIds, BigDecimal totalAmount, BigDecimal balance,KitGroupPurchaseTypeEnum kitGroupPurchaseType) {
+    public List<SellOrder> addSellOrder(Long orderId, String musicGroupId, List<Integer> goodsIds, BigDecimal totalAmount, BigDecimal balance, KitGroupPurchaseTypeEnum kitGroupPurchaseType) {
         if (goodsIds == null || goodsIds.size() <= 0) {
             return null;
         }
@@ -636,6 +641,12 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
                 goodsBalance = balance.subtract(hasRouteBalance);
                 expectAmount = totalAmount.subtract(hasRouteExpectAmount);
             }
+            //租赁、免费的没有销售收入,有销售成本
+            if (nowGoods.getType().equals(GoodsType.INSTRUMENT) && (kitGroupPurchaseType.equals(KitGroupPurchaseTypeEnum.LEASE) || kitGroupPurchaseType.equals(KitGroupPurchaseTypeEnum.FREE))) {
+                goodsBalance = BigDecimal.ZERO;
+                expectAmount = BigDecimal.ZERO;
+            }
+
             hasRouteBalance = hasRouteBalance.add(goodsBalance);
             hasRouteExpectAmount = hasRouteExpectAmount.add(expectAmount);
             i++;
@@ -696,11 +707,8 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
                     sellOrder.setType(SellTypeEnum.OTHER);
                 }
                 sellOrder.setHasRoute(true);
-                //租赁、免费的没有销售收入,有销售成本
-                if (sellOrder.getType().equals(SellTypeEnum.INSTRUMENT) && (kitGroupPurchaseType.equals(KitGroupPurchaseTypeEnum.LEASE) || kitGroupPurchaseType.equals(KitGroupPurchaseTypeEnum.FREE))) {
-                    sellOrder.setActualAmount(BigDecimal.ZERO);
-                    sellOrder.setBalanceAmount(BigDecimal.ZERO);
-                    sellOrder.setExpectAmount(BigDecimal.ZERO);
+                if (complementGoodsNum <= 0) {
+                    break;
                 }
             }
         }

+ 1 - 0
mec-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -2313,6 +2313,7 @@
             cs.teach_mode_,
             cs.type_,
             cs.schoole_id_,
+            cs.create_time_,
             s.name_ schoole_name_,
             o.name_ organ_name_,
             CASE WHEN COUNT(sa.id_) > 0 THEN 1 ELSE 0 END isCallNames

+ 7 - 0
mec-biz/src/main/resources/config/mybatis/MusicGroupBuildLogMapper.xml

@@ -72,4 +72,11 @@
 		SELECT mgbl.*,su.real_name_ FROM music_group_build_log mgbl LEFT JOIN sys_user su ON mgbl.operator_ = su.id_
 		WHERE music_group_id_ = #{musicGroupId}
 	</select>
+
+    <select id="getMusicGroupAuditSuccess" resultMap="MusicGroupBuildLog">
+        SELECT * FROM music_group_build_log where music_group_id_ IN
+        <foreach collection="musicGroupIds" item="musicGroupId" open="(" close=")" separator=",">
+            #{musicGroupId}
+        </foreach>
+    </select>
 </mapper>

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

@@ -303,4 +303,11 @@
           AND status_ IN (0, 1)
         LIMIT 1
     </select>
+    <select id="getMargin" resultMap="SubjectChange">
+        SELECT student_id_,SUM(goods_margin_+course_margin_) goods_margin_
+        FROM subject_change
+        WHERE music_group_id_ = #{musicGroupId}
+          AND status_ = 2
+        GROUP BY student_id_
+    </select>
 </mapper>

+ 1 - 1
mec-web/src/main/java/com/ym/mec/web/controller/ClassGroupStudentController.java

@@ -33,7 +33,7 @@ public class ClassGroupStudentController extends BaseController {
     @ApiImplicitParams({@ApiImplicitParam(name = "userId", value = "用户id", required = true, dataType = "int"),
             @ApiImplicitParam(name = "classGroupId", value = "班级id", required = true, dataType = "int")})
     public HttpResponseResult del(Integer userId, Integer classGroupId) throws Exception {
-        return succeed(classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId));
+        return succeed(classGroupStudentMapperService.delClassGroupStudent(userId, classGroupId,false));
     }
 
     @ApiOperation(value = "查询班级所有学生")

+ 24 - 14
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -100,6 +100,8 @@ public class ExportController extends BaseController {
     private MusicGroupPaymentCalenderDetailService musicGroupPaymentCalenderDetailService;
     @Autowired
     private TeacherService teacherService;
+    @Autowired
+    private MusicGroupBuildLogDao musicGroupBuildLogDao;
 
     @ApiOperation(value = "乐团管理--修改--缴费设置--缴费记录导出")
     @PostMapping("export/musicGroupPaymentCalenderDetail")
@@ -111,7 +113,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"学员编号", "学员姓名", "学员声部", "学员状态", "手机号", "预计缴费金额",
-                    "缴费开始日期","缴费截止日期","是否开启缴费","缴费状态","支付时间"}, new String[]{
+                    "缴费开始日期", "缴费截止日期", "是否开启缴费", "缴费状态", "支付时间"}, new String[]{
                     "userId", "sysUser.username", "studentRegistration.subjectName", "studentRegistration.musicGroupStatus.msg", "sysUser.phone", "expectAmount",
                     "startPaymentDateMgpc", "deadlinePaymentDateMgpc", "openFlag.msg", "paymentStatus.desc", "payTime"}, rows);
             response.setContentType("application/octet-stream");
@@ -476,23 +478,23 @@ public class ExportController extends BaseController {
         if (rows != null && rows.size() > 0) {
             rows.forEach(e -> {
                 e.setSubClassTimes(e.getTotalClassTimes() == null ? 0 : e.getTotalClassTimes() - (e.getCurrentClassTimes() == null ? 0 : e.getCurrentClassTimes()));
-                if(e.getBuyMonths() == null || e.getBuyMonths() == 0){
+                if (e.getBuyMonths() == null || e.getBuyMonths() == 0) {
                     e.setPayStatus("免费");
-                }else {
-                    if(e.getBeRenewGroupId() == null || e.getBeRenewGroupId() == 0l){
+                } else {
+                    if (e.getBeRenewGroupId() == null || e.getBeRenewGroupId() == 0l) {
                         e.setPayStatus("首充");
-                    }else {
+                    } else {
                         e.setPayStatus("续费");
                     }
                 }
             });
         }
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{ "课程组编号","课程组名称", "课程组类型","分部", "教务老师", "指导老师", "班级人数",
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"课程组编号", "课程组名称", "课程组类型", "分部", "教务老师", "指导老师", "班级人数",
                     "当前课次", "总课次", "剩余课次", "开课时间", "结束时间", "课程组状态", "是否续费", "备注"}, new String[]{
-                    "id","name","type.msg","organName", "educationalTeacherName", "teacherName", "studentNum","currentClassTimes",
+                    "id", "name", "type.msg", "organName", "educationalTeacherName", "teacherName", "studentNum", "currentClassTimes",
                     "totalClassTimes", "subClassTimes", "coursesStartDate", "coursesExpireDate",
-                    "groupStatus.desc","payStatus","memo"}, rows);
+                    "groupStatus.desc", "payStatus", "memo"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             response.flushBuffer();
@@ -716,8 +718,8 @@ public class ExportController extends BaseController {
         }
         OutputStream outputStream = response.getOutputStream();
         try {
-            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团", "学员编号", "学员姓名","声部", "购买商品", "乐器采购方式", "乐器金额", "教辅金额", "课程金额", "订单总价"}, new String[]{
-                    "organName", "musicGroupName", "userId", "username","subjectName", "goodsNames", "kitGroupPurchaseTypeEnum.msg", "musicalAmount", "accessoriesAmount", "courseAmount", "orderAmount"}, musicalList);
+            HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部", "乐团", "学员编号", "学员姓名", "声部", "购买商品", "乐器采购方式", "乐器金额", "教辅金额", "课程金额", "订单总价"}, new String[]{
+                    "organName", "musicGroupName", "userId", "username", "subjectName", "goodsNames", "kitGroupPurchaseTypeEnum.msg", "musicalAmount", "accessoriesAmount", "courseAmount", "orderAmount"}, musicalList);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
             response.flushBuffer();
@@ -865,7 +867,7 @@ public class ExportController extends BaseController {
                         courseFee = courseFee.add(orderDetail.getPrice());
                     } else if (orderDetail.getType().equals(OrderDetailTypeEnum.ACCESSORIES) || orderDetail.getType().equals(OrderDetailTypeEnum.TEACHING) || orderDetail.getType().equals(OrderDetailTypeEnum.OTHER)) {
                         teachingFee = teachingFee.add(orderDetail.getPrice());
-                    }else if (orderDetail.getType().equals(OrderDetailTypeEnum.HIGH_ONLINE_COURSE)) {
+                    } else if (orderDetail.getType().equals(OrderDetailTypeEnum.HIGH_ONLINE_COURSE)) {
                         highOnlineCourseFee = highOnlineCourseFee.add(orderDetail.getPrice());
                     }
                 }
@@ -954,9 +956,9 @@ public class ExportController extends BaseController {
 
         try {
             String[] header = {"序号", "学生姓名", "交易流水号", "订单编号", "收款渠道", "收款账户", "应付金额", "现金支付", "余额支付", "到账时间",
-                    "关联乐团ID/VIP课ID", "课程形态", "课程费用","新生专享课程费用", "乐器减免费用","课程减免费用", "押金", "乐器", "教辅费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "合作机构", "备注"};
+                    "关联乐团ID/VIP课ID", "课程形态", "课程费用", "新生专享课程费用", "乐器减免费用", "课程减免费用", "押金", "乐器", "教辅费用", "零星收款费用", "零星收款类别", "手续费", "专业", "分部", "单位/学校", "合作机构", "备注"};
             String[] body = {"id", "user.username", "transNo", "orderNo", "paymentChannel", "merNos", "expectAmount", "actualAmount", "balancePaymentAmount", "payTime", "musicGroupId",
-                    "groupType.desc", "courseFee","highOnlineCourseFee", "remitFee","courseRemitFee", "leaseFee", "musicalFee", "teachingFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
+                    "groupType.desc", "courseFee", "highOnlineCourseFee", "remitFee", "courseRemitFee", "leaseFee", "musicalFee", "teachingFee", "sporadicAmount", "sporadicType", "transferFee", "subjectName", "organName", "schoolName", "cooperationOrganName", "memo"};
             HSSFWorkbook workbook = POIUtil.exportExcel(header, body, studentPaymentOrderExportDtos);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attachment;filename=lender-" + DateUtil.getDate(new Date()) + ".xls");
@@ -1781,16 +1783,20 @@ public class ExportController extends BaseController {
         List<MusicGroupRegisterDto> musicGroupRegisterOrders = musicGroupDao.getMusicGroupRegisterOrder(musicGroupIds);
         List<MusicGroupRegisterDto> musicGroupRegisterTotalMoneys = musicGroupDao.getMusicGroupRegisterTotalMoney(musicGroupIds);
 
+        List<MusicGroupBuildLog> musicGroupAuditSuccess = musicGroupBuildLogDao.getMusicGroupAuditSuccess(musicGroupIds);
+
         HashSet<Integer> added = new HashSet<>();
         List<String> header = new ArrayList<>();
         header.add("分部");
         header.add("乐团名称");
         header.add("乐团状态");
+        header.add("审核通过时间");
         header.add("报名总数");
         List<String> body = new ArrayList<>();
         body.add("organName");
         body.add("musicGroupName");
         body.add("musicGroupStatus");
+        body.add("auditSuccessTime");
         body.add("registerNum");
         for (RegisterSubjectDto registerSubject : registerSubjects) {
             if (!added.contains(registerSubject.getSubjectId())) {
@@ -1838,6 +1844,10 @@ public class ExportController extends BaseController {
                     musicGroupRegisterMap.put("subject" + registerSubject.getSubjectId(), 0);
                 }
             }
+            for (MusicGroupBuildLog groupAuditSuccess : musicGroupAuditSuccess) {
+                if (groupAuditSuccess.getMusicGroupId() != musicGroupRegister.getMusicGroupId()) continue;
+                musicGroupRegisterMap.put("auditSuccessTime", groupAuditSuccess.getCreateTime());
+            }
             musicGroupRegisterMap.put("groupBuyMusicalNum", musicGroupRegister.getGroupBuyMusicalNum());
             musicGroupRegisterMap.put("registerPayNum", registerPayNum);
             musicGroupRegisterMap.put("totalMoney", musicGroupRegister.getTotalMoney());
@@ -2231,7 +2241,7 @@ public class ExportController extends BaseController {
         if (practiceGroupIds.size() > 0) {
             practiceGroupsTeacher = practiceGroupDao.getPracticeGroupByIds(practiceGroupIds);
         }
-        if(studentIds.size() > 0){
+        if (studentIds.size() > 0) {
             studentTeachers = studentDao.getStudentTeacher(studentIds);
         }