فهرست منبع

Merge branch 'master' of http://git.dayaedu.com/yonge/mec

Joburgess 5 سال پیش
والد
کامیت
0c8ef95de2

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto;
 import com.ym.mec.biz.dal.entity.OperatingReport;
 import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.common.dal.BaseDAO;
@@ -92,6 +93,7 @@ public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
 
     /**
      * 商品销售
+     *
      * @param startTime
      * @param endTime
      * @return
@@ -191,4 +193,11 @@ public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
      * @return
      */
     List<SellOrder> getRefundSellOrder(@Param("orderId") Long orderId);
+
+    /**
+     * 获取订单的各类型费用
+     * @param orderId
+     * @return
+     */
+    StudentPaymentOrderExportDto getFeeByType(@Param("orderId") Long orderId);
 }

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/StudentPaymentOrderExportDto.java

@@ -27,6 +27,9 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     //教辅费用
     private BigDecimal teachingFee;
 
+    //维修费用
+    private BigDecimal repairFee;
+
     //手续费
     private BigDecimal transferFee;
 
@@ -193,4 +196,12 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     public void setHighOnlineCourseFee(BigDecimal highOnlineCourseFee) {
         this.highOnlineCourseFee = highOnlineCourseFee;
     }
+
+    public BigDecimal getRepairFee() {
+        return repairFee;
+    }
+
+    public void setRepairFee(BigDecimal repairFee) {
+        this.repairFee = repairFee;
+    }
 }

+ 2 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/KitGroupPurchaseTypeEnum.java

@@ -6,7 +6,8 @@ import com.ym.mec.common.enums.BaseEnum;
 public enum  KitGroupPurchaseTypeEnum implements BaseEnum<String,KitGroupPurchaseTypeEnum> {
     FREE("FREE","免费"),
     GROUP("GROUP","团购"),
-    LEASE("LEASE","租赁");
+    LEASE("LEASE","租赁"),
+    OWNED("OWNED", "自备");
     private String code;
 
     private String msg;

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

@@ -317,7 +317,7 @@ public class StudentPaymentOrderDetailServiceImpl extends BaseServiceImpl<Long,
                 }
                 musicalListDetailDto.setMusicalAmount(studentGoods.getChangeMusicalPrice());
                 musicalListDetailDto.setAccessoriesAmount(studentGoods.getChangeAccessoriesPrice());
-                musicalListDetailDto.setCourseAmount(studentGoods.getChangeCourseFee());
+                musicalListDetailDto.setKitGroupPurchaseTypeEnum(studentGoods.getKitGroupPurchaseType());
             }
             for (SubjectChange margin : margins) {
                 if (!musicalListDetailDto.getUserId().equals(margin.getStudentId())) continue;

+ 12 - 6
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -234,8 +234,12 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         BigDecimal goodsMargin = subjectChange.getChangeMusicalPrice().add(subjectChange.getChangeAccessoriesPrice())
                 .subtract(subjectChange.getOriginalMusicalPrice()).subtract(subjectChange.getOriginalAccessoriesPrice());
         subjectChange.setGoodsMargin(goodsMargin);
-        subjectChange.setOriginalKitGroupPurchaseType(studentOriginal.getOriginalKitGroupPurchaseType());
+        subjectChange.setOriginalKitGroupPurchaseType(
+                studentOriginal.getOriginalKitGroupPurchaseType() == null ? KitGroupPurchaseTypeEnum.OWNED : studentOriginal.getOriginalKitGroupPurchaseType());
         String goodsIds = "";
+        if (subjectChange.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.OWNED)) {
+            subjectChange.setChangeMusical(null);
+        }
         if (subjectChange.getChangeMusical() != null) {
             goodsIds += subjectChange.getChangeMusical() + "";
         }
@@ -266,7 +270,7 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         subjectChange.setVersion(0);
         subjectChangeDao.insert(subjectChange);
 
-        if (amountMargin.compareTo(BigDecimal.ZERO) <= 0 && StringUtils.isNotBlank(goodsIds)) {
+        if (amountMargin.compareTo(BigDecimal.ZERO) <= 0) {
             String orderNo = idGeneratorService.generatorId("payment") + "";
             StudentPaymentOrder studentPaymentOrder = new StudentPaymentOrder();
             studentPaymentOrder.setUserId(subjectChange.getStudentId());
@@ -288,12 +292,14 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
             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());
+
+            if (StringUtils.isNotBlank(goodsIds)) {
+                List<Integer> goodsIdList = Arrays.stream(goodsIds.split(",")).map(Integer::parseInt).collect(Collectors.toList());
+                //添加新订单
+                this.addSellOrder(studentPaymentOrder.getId(), subjectChange.getMusicGroupId(), goodsIdList, BigDecimal.ZERO, BigDecimal.ZERO, subjectChange.getKitGroupPurchaseType());
+            }
         }
         return subjectChange;
     }

+ 11 - 1
mec-biz/src/main/resources/config/mybatis/SellOrderMapper.xml

@@ -485,7 +485,7 @@
         FROM student_payment_order spo
                  LEFT JOIN sell_order so on so.order_id_ = spo.id_
         WHERE spo.status_ = 'SUCCESS'
-          AND spo.group_type_ ='GOODS_SELL'
+          AND spo.group_type_ = 'GOODS_SELL'
           AND spo.create_time_ >= #{startTime}
           AND spo.create_time_ <= #{endTime}
         GROUP BY spo.organ_id_, so.cooperation_organ_id_
@@ -590,4 +590,14 @@
             #{sellOrderId}
         </foreach>
     </select>
+
+    <select id="getFeeByType" resultType="com.ym.mec.biz.dal.dto.StudentPaymentOrderExportDto">
+        SELECT MAX(spo.expect_amount_)                                expectAmount,
+               SUM(IF(g.type_ = 'INSTRUMENT', so.expect_amount_, 0))  musicalFee,
+               SUM(IF(g.type_ != 'INSTRUMENT', so.expect_amount_, 0)) teachingFee
+        FROM student_payment_order spo
+                 LEFT JOIN sell_order so ON spo.id_ = so.order_id_
+                 LEFT JOIN goods g ON g.id_ = so.goods_id_
+        WHERE spo.id_ = #{orderId}
+    </select>
 </mapper>

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

@@ -542,7 +542,7 @@
     </select>
     <sql id="exportStudentAttendancesQueryPageSql">
         <where>
-            <if test="organId != null">
+            <if test="organId != null and organId != ''">
                 AND FIND_IN_SET(cs.organ_id_,#{organId})
             </if>
             <if test="groupType != null">

+ 27 - 13
mec-web/src/main/java/com/ym/mec/web/controller/ExportController.java

@@ -111,6 +111,8 @@ public class ExportController extends BaseController {
     private SellOrderService sellOrderService;
     @Autowired
     private CourseScheduleStudentPaymentDao courseScheduleStudentPaymentDao;
+    @Autowired
+    private SellOrderDao sellOrderDao;
 
     @ApiOperation(value = "学员考勤记录导出")
     @PostMapping("export/exportStudentAttendances")
@@ -139,7 +141,7 @@ public class ExportController extends BaseController {
         OutputStream outputStream = response.getOutputStream();
         try {
             HSSFWorkbook workbook = POIUtil.exportExcel(new String[]{"分部编号", "分部名称", "课程组类型", "课程组编号", "课程组名称", "学员姓名",
-                    "学员编号", "课程编号", "课程名称", "上课日期", "上课开始时间","上课结束时间","指导老师名称","指导老师编号","教务老师名称","教务老师编号","学员考勤状态"}, new String[]{
+                    "学员编号", "课程编号", "课程名称", "上课日期", "上课开始时间", "上课结束时间", "指导老师名称", "指导老师编号", "教务老师名称", "教务老师编号", "学员考勤状态"}, new String[]{
                     "organId", "organName", "groupType.desc", "groupId", "groupName", "username",
                     "userId", "courseScheduleId", "courseScheduleName", "classDate", "startClassTime", "endClassTime", "guideTeacherName", "guideTeacherId"
                     , "educationalTeacherName", "educationalTeacherId", "studentAttendanceStatus.msg"}, rows);
@@ -990,14 +992,7 @@ public class ExportController extends BaseController {
             row.setMemo(goodsName);
             row.setHighOnlineCourseFee(highOnlineCourseFee);
             //专业
-            if (row.getGroupType().equals(GroupType.MUSIC)) {
-                StudentRegistration studentRegistration = studentRegistrationDao.findStudentByMusicGroupIdAndUserId(row.getMusicGroupId(), row.getUserId());
-                if (studentRegistration != null) {
-                    row.setSubjectName(studentRegistration.getSubjectName());
-                    row.setSchoolName(studentRegistration.getSchoolName());
-                    row.setCooperationOrganName(studentRegistration.getRemark());
-                }
-            } else if (row.getGroupType().equals(GroupType.VIP)) {
+            if (row.getGroupType().equals(GroupType.VIP)) {
                 row.setCourseFee(row.getActualAmount());
                 VipGroup vipGroupInfo = vipGroupDao.findVipGroupInfo(Integer.parseInt(row.getMusicGroupId()), row.getClassGroupId());
                 if (vipGroupInfo != null) {
@@ -1029,6 +1024,25 @@ public class ExportController extends BaseController {
                 if (practiceGroup != null) {
                     row.setSubjectName(practiceGroup.getSubjectName());
                 }
+            } else {
+                StudentPaymentOrderExportDto feeByType = sellOrderDao.getFeeByType(row.getId());
+                row.setMusicalFee(feeByType.getMusicalFee());
+                row.setTeachingFee(feeByType.getTeachingFee());
+                if (row.getGroupType().equals(GroupType.MUSIC)) {
+                    StudentRegistration studentRegistration = studentRegistrationDao.findStudentByMusicGroupIdAndUserId(row.getMusicGroupId(), row.getUserId());
+                    if (studentRegistration != null) {
+                        row.setSubjectName(studentRegistration.getSubjectName());
+                        row.setSchoolName(studentRegistration.getSchoolName());
+                        row.setCooperationOrganName(studentRegistration.getRemark());
+                    }
+                    if (row.getCourseFee().compareTo(BigDecimal.ZERO) == 0) {
+                        row.setCourseFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()));
+                    }
+                } else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
+                    row.setRepairFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()));
+                } else if (row.getType().equals(OrderTypeEnum.OUTORDER)) {
+                    row.setCourseFee(feeByType.getExpectAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()));
+                }
             }
             String paymentChannel = "";
             if (row.getPaymentChannel() == null) {
@@ -1046,9 +1060,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", "repairFee", "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");
@@ -1323,7 +1337,7 @@ public class ExportController extends BaseController {
         Set<Integer> studentIds = vipGroupExports.stream().map(CourseGroupExportDto::getStudentId).collect(Collectors.toSet());
         List<Map<Integer, Date>> studentLastCourseSchedule = courseScheduleStudentPaymentDao.findStudentLastCourseSchedule(new ArrayList<>(studentIds));
         Map<Integer, String> studentLastCourseMap = new HashMap<>();
-        if(!CollectionUtils.isEmpty(studentLastCourseSchedule)){
+        if (!CollectionUtils.isEmpty(studentLastCourseSchedule)) {
             studentLastCourseMap = MapUtil.convertMybatisMap(studentLastCourseSchedule);
         }
         List<CourseGroupExportDto> studentCourseInfos = courseScheduleDao.getStudentVipCourseInfo(studentIds);
@@ -1332,7 +1346,7 @@ public class ExportController extends BaseController {
         for (CourseGroupExportDto vipGroupExport : vipGroupExports) {
 
             String lastClassDateStr = studentLastCourseMap.get(vipGroupExport.getStudentId());
-            if(StringUtils.isNotBlank(lastClassDateStr)){
+            if (StringUtils.isNotBlank(lastClassDateStr)) {
                 vipGroupExport.setLastClassDate(DateUtil.stringToDate(lastClassDateStr));
             }