Przeglądaj źródła

fix 增加临时班报错

周箭河 4 lat temu
rodzic
commit
ca8b433f7e

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

@@ -5,6 +5,7 @@ import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.common.dal.BaseDAO;
 import org.apache.ibatis.annotations.Param;
 
+import java.math.BigDecimal;
 import java.util.Date;
 import java.util.List;
 
@@ -110,4 +111,11 @@ public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
      * @return
      */
     List<OperatingReport> getOutOrderIncome(@Param("startTime") Date startTime, @Param("endTime") Date endTime);
+
+    /**
+     * 获取订单的销售成本
+     * @param orderId
+     * @return
+     */
+    BigDecimal getOrderSellCost(@Param("orderId") Long orderId);
 }

+ 8 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/SubjectChangeService.java

@@ -33,4 +33,12 @@ public interface SubjectChangeService extends BaseService<Integer, SubjectChange
      * @return
      */
     SubjectChange cancel(Integer id);
+
+    /**
+     *
+     * @param studentId
+     * @param musicGroupId
+     * @return
+     */
+    SubjectChange getStudentOriginal(Integer studentId,String musicGroupId);
 }

+ 77 - 10
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SubjectChangeServiceImpl.java

@@ -1,25 +1,19 @@
 package com.ym.mec.biz.service.impl;
 
-import com.ym.mec.biz.dal.dao.GoodsDao;
-import com.ym.mec.biz.dal.dao.StudentDao;
-import com.ym.mec.biz.dal.dao.SubjectChangeDao;
-import com.ym.mec.biz.dal.dao.SysConfigDao;
-import com.ym.mec.biz.dal.entity.StudentPaymentOrder;
-import com.ym.mec.biz.dal.entity.SubjectChange;
-import com.ym.mec.biz.dal.entity.SysUserCashAccount;
+import com.ym.mec.biz.dal.dao.*;
+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.IdGeneratorService;
 import com.ym.mec.common.service.impl.BaseServiceImpl;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 
 @Service
 public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectChange> implements SubjectChangeService {
@@ -42,6 +36,12 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
     private SysConfigDao sysConfigDao;
     @Autowired
     private PayService payService;
+    @Autowired
+    private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
+    @Autowired
+    private MusicGroupDao musicGroupDao;
+    @Autowired
+    private SellOrderDao sellOrderDao;
 
     @Override
     public BaseDAO<Integer, SubjectChange> getDAO() {
@@ -198,4 +198,71 @@ public class SubjectChangeServiceImpl extends BaseServiceImpl<Integer, SubjectCh
         }
         return subjectChange;
     }
+
+    @Override
+    public SubjectChange getStudentOriginal(Integer studentId, String musicGroupId) {
+        //1、存在历史的更换
+        SubjectChange subjectChange = new SubjectChange();
+        SubjectChange studentLastChange = subjectChangeDao.getStudentLastChange(studentId, musicGroupId);
+        if (studentLastChange != null) {
+            subjectChange.setStudentId(studentLastChange.getStudentId());
+            subjectChange.setOrderId(studentLastChange.getOrderId());
+            subjectChange.setCooperationOrganId(studentLastChange.getCooperationOrganId());
+            subjectChange.setMusicGroupId(studentLastChange.getMusicGroupId());
+            subjectChange.setOriginalCourseFee(studentLastChange.getChangeCourseFee());
+            subjectChange.setKitGroupPurchaseType(studentLastChange.getKitGroupPurchaseType());
+            subjectChange.setOriginalCost(studentLastChange.getChangeCost());
+
+            if (studentLastChange.getChangeMusical() != null) {
+                subjectChange.setOriginalMusical(studentLastChange.getChangeMusical());
+                subjectChange.setOriginalMusicalGoods(goodsDao.get(studentLastChange.getChangeMusical()));
+                subjectChange.setOriginalMusicalPrice(studentLastChange.getOriginalMusicalPrice());
+            }
+
+            if (studentLastChange.getChangeAccessories() != null) {
+                subjectChange.setOriginalAccessories(studentLastChange.getChangeAccessories());
+                subjectChange.setOriginalAccessoriesGoods(goodsDao.findGoodsByIds(studentLastChange.getChangeAccessories()));
+                subjectChange.setOriginalAccessoriesPrice(studentLastChange.getChangeAccessoriesPrice());
+            }
+            return subjectChange;
+        }
+        //2.1不存在历史的更换
+        List<StudentPaymentOrderDetail> details = studentPaymentOrderDetailDao.getStudentApplyDetail(studentId, musicGroupId);
+        if (details.size() <= 0) {
+            return null;
+        }
+        MusicGroup musicGroup = musicGroupDao.get(musicGroupId);
+        subjectChange.setStudentId(studentId);
+        subjectChange.setOrganId(musicGroup.getOrganId());
+        subjectChange.setCooperationOrganId(musicGroup.getCooperationOrganId());
+        subjectChange.setMusicGroupId(musicGroupId);
+        String accessoriesIds = "";
+        BigDecimal accessoriesPrice = BigDecimal.ZERO;
+        for (StudentPaymentOrderDetail detail : details) {
+            if (detail.getType().equals(OrderDetailTypeEnum.COURSE)) {
+                subjectChange.setOriginalCourseFee(detail.getPrice());
+            } else if (detail.getType().equals(OrderDetailTypeEnum.MUSICAL)) {
+                subjectChange.setKitGroupPurchaseType(detail.getKitGroupPurchaseType());
+                int goodsId = Integer.parseInt(detail.getGoodsIdList());
+                subjectChange.setOriginalMusical(goodsId);
+                subjectChange.setOriginalMusicalGoods(goodsDao.get(goodsId));
+                subjectChange.setOriginalMusicalPrice(detail.getPrice());
+            } else {
+                if (StringUtils.isNotBlank(detail.getGoodsIdList())) {
+                    accessoriesPrice = accessoriesPrice.add(detail.getPrice());
+                    accessoriesIds = accessoriesIds.length() > 0 ? accessoriesIds + "," + detail.getGoodsIdList() : detail.getGoodsIdList();
+                }
+            }
+        }
+        if (StringUtils.isNotBlank(accessoriesIds)) {
+            subjectChange.setOriginalAccessories(accessoriesIds);
+            subjectChange.setOriginalAccessoriesGoods(goodsDao.findGoodsByIds(accessoriesIds));
+            subjectChange.setOriginalAccessoriesPrice(accessoriesPrice);
+        }
+        Long orderId = details.get(0).getPaymentOrderId();
+        //2.2 计算销售成本
+        BigDecimal orderSellCost = sellOrderDao.getOrderSellCost(orderId);
+        subjectChange.setOriginalCost(orderSellCost == null ? BigDecimal.ZERO : orderSellCost);
+        return subjectChange;
+    }
 }

+ 6 - 0
mec-biz/src/main/resources/config/mybatis/SellOrderMapper.xml

@@ -346,4 +346,10 @@
         FROM sell_order
         WHERE order_id_ = #{orderId}
     </delete>
+
+    <select id="getOrderSellCost" resultType="decimal">
+        SELECT SUM(sell_cost_ * num_)
+        FROM sell_order
+        WHERE order_id_ = #{orderId}
+    </select>
 </mapper>

+ 12 - 0
mec-web/src/main/java/com/ym/mec/web/controller/SubjectChangeController.java

@@ -44,6 +44,18 @@ public class SubjectChangeController extends BaseController {
         return succeed(studentRegistrationService.getStudentApplyDetail(studentId, musicGroupId));
     }
 
+    @ApiOperation(value = "获取更换前的详情")
+    @GetMapping("/getStudentOriginal")
+    @PreAuthorize("@pcs.hasPermissions('subjectChange/getStudentOriginal')")
+    @ApiImplicitParams({@ApiImplicitParam(name = "studentId", value = "学生编号", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "musicGroupId", value = "乐团编号", required = true, dataType = "String")})
+    public HttpResponseResult<SubjectChange> getStudentOriginal(Integer studentId, String musicGroupId) {
+        if (studentId == null || StringUtils.isEmpty(musicGroupId)) {
+            return failed("参数校验异常");
+        }
+        return succeed(subjectChangeService.getStudentOriginal(studentId, musicGroupId));
+    }
+
     @ApiOperation(value = "获取乐团声部费用信息及乐器和辅件")
     @GetMapping("/getSubjectGoodsAndInfo")
     @PreAuthorize("@pcs.hasPermissions('subjectChange/getSubjectGoodsAndInfo')")