Browse Source

订单增加销售记录

周箭河 5 years ago
parent
commit
d7b6370612

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

@@ -2,7 +2,11 @@ package com.ym.mec.biz.dal.dao;
 
 import com.ym.mec.biz.dal.entity.SellOrder;
 import com.ym.mec.common.dal.BaseDAO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 public interface SellOrderDao extends BaseDAO<Integer, SellOrder> {
 
+    int batchInsert(@Param("sellOrders") List<SellOrder> sellOrders);
 }

+ 4 - 3
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/SellOrder.java

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.entity;
 
+import com.ym.mec.biz.dal.enums.SellTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import java.math.BigDecimal;
@@ -74,7 +75,7 @@ public class SellOrder {
     * 销售类型
     */
     @ApiModelProperty(value="销售类型")
-    private String type;
+    private SellTypeEnum type;
 
     /**
     * 商品id
@@ -202,11 +203,11 @@ public class SellOrder {
         this.sellCost = sellCost;
     }
 
-    public String getType() {
+    public SellTypeEnum getType() {
         return type;
     }
 
-    public void setType(String type) {
+    public void setType(SellTypeEnum type) {
         this.type = type;
     }
 

+ 30 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/SellTypeEnum.java

@@ -0,0 +1,30 @@
+package com.ym.mec.biz.dal.enums;
+
+import com.ym.mec.common.enums.BaseEnum;
+
+public enum SellTypeEnum implements BaseEnum<String, SellTypeEnum> {
+
+	INSTRUMENT("INSTRUMENT", "乐器销售"),
+	ACCESSORIES("ACCESSORIES", "配件销售"),
+	SCHOOL_BUY("SCHOOL_BUY", "学校采购"),
+	OTHER("OTHER", "书籍(其他)");
+
+	private String code;
+
+	private String desc;
+
+	private SellTypeEnum(String code, String desc) {
+		this.code = code;
+		this.desc = desc;
+	}
+
+	@Override
+	public String getCode() {
+		return code;
+	}
+
+	public String getDesc() {
+		return desc;
+	}
+
+}

+ 16 - 3
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -92,6 +92,8 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
     private SysUserFeignService sysUserFeignService;
     @Autowired
     private RedisCache<String, Object> redisCache;
+    @Autowired
+    private SellOrderDao sellOrderDao;
 
     @Override
     public BaseDAO<Long, StudentRegistration> getDAO() {
@@ -871,16 +873,19 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                 BigDecimal remitFee = studentPaymentOrder.getRemitFee() != null ? studentPaymentOrder.getRemitFee() : BigDecimal.ZERO;
                 BigDecimal balancePaymentAmount = studentPaymentOrder.getBalancePaymentAmount() != null ? studentPaymentOrder.getBalancePaymentAmount() : BigDecimal.ZERO;
                 //总价格
-                BigDecimal totalPrice = orderDetails.stream().map(StudentPaymentOrderDetail::getPrice).reduce(BigDecimal.ZERO, BigDecimal::add).subtract(remitFee);
+                BigDecimal totalPrice = studentPaymentOrder.getExpectAmount();
                 for (StudentPaymentOrderDetail orderDetail : orderDetails) {
                     if (orderDetail.getType().equals(OrderDetailTypeEnum.MUSICAL) && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
                         continue;
                     }
+                    if (orderDetail.getType().equals(OrderDetailTypeEnum.MUSICAL) && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.GROUP)) {
+                        orderDetail.setPrice(orderDetail.getPrice().subtract(remitFee));
+                    }
 
                     BigDecimal goodsTotalPrice = orderDetail.getGoodsList().stream().map(Goods::getGroupPurchasePrice).reduce(BigDecimal.ZERO, BigDecimal::add);
                     for (Goods goods : orderDetail.getGoodsList()) {
-                        BigDecimal actualAmount = goods.getGroupPurchasePrice().multiply(orderDetail.getPrice().subtract(remitFee)).multiply(studentPaymentOrder.getActualAmount()).divide(goodsTotalPrice.multiply(totalPrice), 2, BigDecimal.ROUND_HALF_UP);
-                        BigDecimal balance = goods.getGroupPurchasePrice().multiply(orderDetail.getPrice().subtract(remitFee)).multiply(balancePaymentAmount).divide(goodsTotalPrice.multiply(totalPrice), 2, BigDecimal.ROUND_HALF_UP);
+                        BigDecimal actualAmount = goods.getGroupPurchasePrice().multiply(orderDetail.getPrice()).multiply(studentPaymentOrder.getActualAmount()).divide(goodsTotalPrice.multiply(totalPrice), 2, BigDecimal.ROUND_HALF_UP);
+                        BigDecimal balance = goods.getGroupPurchasePrice().multiply(orderDetail.getPrice()).multiply(balancePaymentAmount).divide(goodsTotalPrice.multiply(totalPrice), 2, BigDecimal.ROUND_HALF_UP);
                         SellOrder sellOrder = new SellOrder();
                         sellOrder.setOrganId(studentPaymentOrder.getOrganId());
                         sellOrder.setSchoolId(musicGroup.getSchoolId());
@@ -899,9 +904,17 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
                         sellOrder.setSellTime(studentPaymentOrder.getCreateTime());
                         sellOrder.setCreateIme(new Date());
                         sellOrder.setUpdateTime(new Date());
+                        if (goods.getType().equals(GoodsType.INSTRUMENT)) {
+                            sellOrder.setType(SellTypeEnum.INSTRUMENT);
+                        } else if (goods.getType().equals(GoodsType.ACCESSORIES)) {
+                            sellOrder.setType(SellTypeEnum.ACCESSORIES);
+                        } else {
+                            sellOrder.setType(SellTypeEnum.OTHER);
+                        }
                         sellOrders.add(sellOrder);
                     }
                 }
+                sellOrderDao.batchInsert(sellOrders);
             }
 
             //三方乐团不发送缴费通知

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

@@ -122,4 +122,17 @@
         </set>
         where id_ = #{id}
     </update>
+
+    <insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id_">
+        insert into sell_order (organ_id_, school_id_, trans_no_,order_id_, order_no_, expect_amount_, actual_amount_,
+        balance_amount_, type_, goods_id_,goods_name_, sell_cost_, sell_cost2_, num_, user_id_, payment_channel_,
+        mer_no_, sell_time_, create_ime_, update_time_)
+        VALUE
+        <foreach collection="sellOrders" separator="," item="sellOrder">
+            (#{sellOrder.organId},#{sellOrder.schoolId},#{sellOrder.transNo},#{sellOrder.orderId},#{sellOrder.orderNo},
+            #{sellOrder.expectAmount},#{sellOrder.actualAmount},#{sellOrder.balanceAmount},#{sellOrder.type},#{sellOrder.goodsId},
+            #{sellOrder.goodsName},#{sellOrder.sellCost},#{sellOrder.sellCost2},#{sellOrder.num},#{sellOrder.userId},
+            #{sellOrder.paymentChannel},#{sellOrder.merNo},#{sellOrder.sellTime},#{sellOrder.createIme},#{sellOrder.updateTime}
+        </foreach>
+    </insert>
 </mapper>

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

@@ -175,6 +175,6 @@
     <select id="getOrderDetail" resultMap="StudentPaymentOrderDetail">
         SELECT spod.*,g.id_ goods_id_,g.name_ goods_name_,g.group_purchase_price_,g.discount_price_,g.agree_cost_price_,g.type_ good_type_ FROM student_payment_order_detail spod
                           LEFT JOIN goods g ON FIND_IN_SET(g.id_,spod.goods_id_list_)
-        WHERE spod.payment_order_id_ = #{orderId} AND spod.goods_id_list_ IS NOT null
+        WHERE spod.payment_order_id_ = #{orderId} AND spod.goods_id_list_ IS NOT NULL
     </select>
 </mapper>