zouxuan преди 3 години
родител
ревизия
fd51cc5d8f

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

@@ -44,7 +44,7 @@ public class StudentPaymentOrderExportDto extends StudentPaymentOrder {
     @ApiModelProperty(value = "平台手续费",required = true)
     private BigDecimal platformFee = BigDecimal.ZERO;
 
-    //乐团课程费用
+    //乐团家长采买课程费用
     @ApiModelProperty(value = "乐团课程费用",required = true)
     private BigDecimal musicGroupCourseFee = BigDecimal.ZERO;
 

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/entity/StudentPaymentRouteOrder.java

@@ -6,6 +6,7 @@ import java.util.Date;
 import com.alibaba.fastjson.JSONObject;
 import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.enums.AuditStatusEnum;
+import com.ym.mec.biz.dal.enums.OrderTypeEnum;
 import com.ym.mec.common.entity.BaseEntity;
 
 import static com.ym.mec.biz.dal.enums.AuditStatusEnum.ING;
@@ -92,6 +93,16 @@ public class StudentPaymentRouteOrder extends BaseEntity {
     
     private Organization organ = new Organization();
 
+    private OrderTypeEnum type;
+
+	public OrderTypeEnum getType() {
+		return type;
+	}
+
+	public void setType(OrderTypeEnum type) {
+		this.type = type;
+	}
+
 	public String getIncomeType() {
 		return incomeType;
 	}

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/OrderTypeEnum.java

@@ -22,6 +22,9 @@ public enum OrderTypeEnum implements BaseEnum<String, OrderTypeEnum> {
     TENANT_RECHARGE("TENANT_RECHARGE", "账户充值"),
     GOODS_SELL("GOODS_SELL", "商品购买"),
     OUTORDER("OUTORDER", "导入订单"),
+    //细分对外订单
+    SCHOOL("SCHOOL", "学校订单"),
+    PERSONAL("PERSONAL", "个人订单"),
     REPAIR("REPAIR", "乐器维修"),
     SUBJECT_CHANGE("SUBJECT_CHANGE", "声部更换"),
     //包含考级费用和乐理课费用,乐理课的费用在detail里面,对于的订单类型是 DEGREE_REGISTRATION

+ 78 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -1942,8 +1942,51 @@ public class ExportServiceImpl implements ExportService {
                                 subtract(row.getVipCourseFee()).subtract(row.getPracticeCourseFee()));
                     } else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
                         row.setRepairFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getOtherFee()));
-                    } else if (row.getType().equals(OUTORDER)) {
-                        row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(row.getTeachingFee()).subtract(row.getMaintenanceProductFee()).subtract(feeByType.getOtherFee()));
+                    }else if (row.getGroupType() == GroupType.OUTORDER) {
+                        //销售收入
+                        BigDecimal add = feeByType.getMusicalFee().add(row.getTeachingFee()).add(row.getMaintenanceProductFee()).add(feeByType.getOtherFee());
+                        //服务收入
+                        BigDecimal subtract = feeByType.getActualAmount().subtract(add);
+                        //如果是淘器微信那么就是零售
+                        if(Objects.equals("淘器微信",row.getMerNos()) && add.compareTo(BigDecimal.ZERO) > 0){
+                            //如果有服务收入那么是课程学校采买
+                            row.setOtherFee(subtract);
+                            row.setRetailGoodsFee(add);
+                            row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.RETAIL_GOODS);
+                        }else {
+                            //拆分导入订单
+                            if(row.getType() == OrderTypeEnum.OUTORDER || row.getType() == OrderTypeEnum.SCHOOL){
+                                if(row.getType() == OrderTypeEnum.SCHOOL){
+                                    row.setMusicalFee(BigDecimal.ZERO);
+                                    row.setTeachingFee(BigDecimal.ZERO);
+                                    row.setMaintenanceProductFee(BigDecimal.ZERO);
+                                    row.setOtherFee(BigDecimal.ZERO);
+                                    row.setLargeMusicalFee(add);
+                                }
+                                //如果有服务收入那么是课程学校采买
+                                if(subtract.compareTo(BigDecimal.ZERO) == 0){
+                                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.LARGE_MUSICAL);
+                                }else {
+                                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.COURSE_SCHOOL_BUY);
+                                }
+                                row.setCourseSchoolBuyAmount(subtract);
+                            }else if(row.getType() == OrderTypeEnum.OTHER){
+                                row.setOtherFee(row.getOtherFee().add(subtract));
+                            }else {
+                                row.setMusicalFee(BigDecimal.ZERO);
+                                row.setTeachingFee(BigDecimal.ZERO);
+                                row.setMaintenanceProductFee(BigDecimal.ZERO);
+                                row.setOtherFee(BigDecimal.ZERO);
+                                row.setRetailGoodsFee(add);
+                                row.setMusicGroupCourseFee(subtract);
+                                //如果有服务收入那么是课程学校采买
+                                if(subtract.compareTo(BigDecimal.ZERO) == 0){
+                                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.RETAIL_GOODS);
+                                }else {
+                                    row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.COURSE_STUDENT_BUY);
+                                }
+                            }
+                        }
                         row.setTransferFee(BigDecimal.ZERO);
                         row.setPlatformFee(BigDecimal.ZERO);
                     }
@@ -2024,12 +2067,6 @@ public class ExportServiceImpl implements ExportService {
         //获取机构费率
         Integer tenantId = (Integer) params.get("tenantId");
         TenantConfig tenantConfig = tenantConfigService.queryByTenantId(tenantId);
-        //获取外部订单的商品销售金额
-        List<Long> outOrderList = studentPaymentOrderExportDtos.stream().filter(e -> e.getType() == OUTORDER).map(e -> e.getId()).collect(Collectors.toList());
-        Map<Long,BigDecimal> outOrderAmountMap = new HashMap<>();
-        if(org.apache.commons.collections.CollectionUtils.isNotEmpty(outOrderList)){
-            outOrderAmountMap = MapUtil.convertIntegerMap(sellOrderDao.sumOutOrderAmount(outOrderList));
-        }
         List<Long> otherOrderIds = studentPaymentOrderExportDtos.stream().filter(e -> e.getGroupType() != GroupType.GOODS_SELL
                 && e.getGroupType() != GroupType.REPLACEMENT
                 && e.getGroupType() != GroupType.PRACTICE
@@ -2194,12 +2231,6 @@ public class ExportServiceImpl implements ExportService {
                 row.setMusicalFee(row.getActualAmount());
             } else if (row.getGroupType().equals(GroupType.GOODS_SELL)) {
                 row.setRetailGoodsFee(row.getActualAmount());
-            } else if (row.getGroupType().equals(GroupType.OUTORDER)) {
-                if(outOrderAmountMap.get(row.getId()) == null){
-                    row.setCourseSchoolBuyAmount(row.getActualAmount());
-                }else {
-                    row.setLargeMusicalFee(row.getActualAmount());
-                }
             } else {
                 List<StudentPaymentOrderExportDto> exportDtoList = feeByTypeMap.get(row.getId());
                 if(!CollectionUtils.isEmpty(exportDtoList)){
@@ -2216,8 +2247,39 @@ public class ExportServiceImpl implements ExportService {
                                 subtract(row.getVipCourseFee()).subtract(row.getPracticeCourseFee()));
                     } else if (row.getType().equals(OrderTypeEnum.REPAIR)) {
                         row.setRepairFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(feeByType.getTeachingFee()).subtract(feeByType.getOtherFee()));
-                    }else if (row.getType().equals(OUTORDER)) {
-                        row.setMusicGroupCourseFee(feeByType.getActualAmount().subtract(feeByType.getMusicalFee()).subtract(row.getTeachingFee()).subtract(row.getMaintenanceProductFee()).subtract(feeByType.getOtherFee()));
+                    }else if (row.getGroupType() == GroupType.OUTORDER) {
+                        //销售收入
+                        BigDecimal add = feeByType.getMusicalFee().add(row.getTeachingFee()).add(row.getMaintenanceProductFee()).add(feeByType.getOtherFee());
+                        //服务收入
+                        BigDecimal subtract = feeByType.getActualAmount().subtract(add);
+                        //如果是淘器微信那么就是零售
+                        if(Objects.equals("淘器微信",row.getMerNos()) && add.compareTo(BigDecimal.ZERO) > 0){
+                            //如果有服务收入那么是课程学校采买
+                            row.setOtherFee(subtract);
+                            row.setRetailGoodsFee(add);
+                            row.setTypeDesc(StudentPaymentOrderExportDto.TypeDesc.RETAIL_GOODS);
+                        }else {
+                            //拆分导入订单
+                            if (row.getType() == OrderTypeEnum.OUTORDER || row.getType() == OrderTypeEnum.SCHOOL) {
+                                if (row.getType() == OrderTypeEnum.SCHOOL) {
+                                    row.setMusicalFee(BigDecimal.ZERO);
+                                    row.setTeachingFee(BigDecimal.ZERO);
+                                    row.setMaintenanceProductFee(BigDecimal.ZERO);
+                                    row.setOtherFee(BigDecimal.ZERO);
+                                    row.setLargeMusicalFee(add);
+                                }
+                                row.setCourseSchoolBuyAmount(subtract);
+                            } else if (row.getType() == OrderTypeEnum.OTHER) {
+                                row.setOtherFee(row.getOtherFee().add(subtract));
+                            } else {
+                                row.setMusicalFee(BigDecimal.ZERO);
+                                row.setTeachingFee(BigDecimal.ZERO);
+                                row.setMaintenanceProductFee(BigDecimal.ZERO);
+                                row.setOtherFee(BigDecimal.ZERO);
+                                row.setRetailGoodsFee(add);
+                                row.setMusicGroupCourseFee(subtract);
+                            }
+                        }
                     }
                 }
             }

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

@@ -204,7 +204,7 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
             if(studentPaymentRouteOrder.getSchoolId() != null) {
                 studentPaymentOrder.setMusicGroupId(studentPaymentRouteOrder.getSchoolId() + "");
             }
-            studentPaymentOrder.setType(OrderTypeEnum.OUTORDER);
+            studentPaymentOrder.setType(studentPaymentRouteOrder.getType());
             studentPaymentOrder.setMerNos(studentPaymentRouteOrder.getMerNo());
             studentPaymentOrder.setOrderNo(studentPaymentRouteOrder.getOrderNo());
             studentPaymentOrder.setGroupType(GroupType.OUTORDER);
@@ -412,6 +412,14 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
                             objectMap.put("incomeType", row.get(s));
                         }
                     }
+                    if (columnValue.equals("type")) {
+                        if (StringUtils.isEmpty(row.get(s).toString())) {
+                            sb.append("第" + rowNum).append("行数据导入失败:订单类型不可为空;");
+                            continue valueIsNull;
+                        } else {
+                            objectMap.put("type", row.get(s));
+                        }
+                    }
                     if (columnValue.equals("transNo")) {
                         if (StringUtils.isEmpty(row.get(s).toString())) {
                             sb.append("第" + rowNum).append("行数据导入失败:交易流水号不可为空;");

+ 13 - 8
mec-biz/src/main/resources/config/mybatis/StudentPaymentRouteOrderMapper.xml

@@ -28,6 +28,7 @@
         <result column="update_time_" property="updateTime"/>
         <result column="update_by_" property="updateBy"/>
         <result column="tenant_id_" property="tenantId"/>
+        <result column="type_" property="type" typeHandler="com.ym.mec.common.dal.CustomEnumTypeHandler"/>
     </resultMap>
 
     <resultMap id="StudentPaymentRouteOrderDto" type="com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto"
@@ -53,7 +54,9 @@
 
     <sql id="Base_Column_List">
         <!--@mbg.generated-->
-        id_, route_organ_id_, route_amount_,route_balance_amount_, mer_no_, order_no_, fee_flag_,user_id_,school_id_,trans_no_,pay_time_,sale_amount_,service_amount_,service_fee_,memo_,goods_json_,audit_status_,audit_comment_,calender_id_,create_time_,create_by_,update_time_,update_by_,tenant_id_
+        id_, route_organ_id_, route_amount_,route_balance_amount_, mer_no_, order_no_, fee_flag_,user_id_,
+school_id_,trans_no_,pay_time_,sale_amount_,service_amount_,service_fee_,memo_,goods_json_,audit_status_,audit_comment_,
+calender_id_,create_time_,create_by_,update_time_,update_by_,tenant_id_,type_
     </sql>
     <select id="get" parameterType="java.lang.Long" resultMap="StudentPaymentRouteOrderMap">
         <!--@mbg.generated-->
@@ -73,8 +76,12 @@
             parameterType="com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder" useGeneratedKeys="true">
         <!--@mbg.generated-->
         insert into student_payment_route_order (route_organ_id_, route_amount_,route_balance_amount_, mer_no_,
-        order_no_, fee_flag_,user_id_,school_id_,trans_no_,pay_time_,sale_amount_,service_amount_,service_fee_,memo_,goods_json_,audit_status_,audit_comment_,calender_id_,create_time_,update_time_,create_by_,update_by_,tenant_id_)
-        values (#{routeOrganId}, #{routeAmount},#{routeBalanceAmount}, #{merNo}, #{orderNo}, #{feeFlag},#{userId},#{schoolId},#{transNo},#{payTime},#{saleAmount},#{serviceAmount},#{serviceFee},#{memo},#{goodsJson},#{auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{auditComment},#{calenderId},#{createTime},#{updateTime},#{createBy},#{updateBy},#{tenantId})
+        order_no_, fee_flag_,user_id_,school_id_,trans_no_,pay_time_,sale_amount_,service_amount_,service_fee_,
+        memo_,goods_json_,audit_status_,audit_comment_,calender_id_,create_time_,update_time_,create_by_,update_by_,tenant_id_,type_)
+        values (#{routeOrganId}, #{routeAmount},#{routeBalanceAmount}, #{merNo}, #{orderNo}, #{feeFlag},#{userId},
+                #{schoolId},#{transNo},#{payTime},#{saleAmount},#{serviceAmount},#{serviceFee},#{memo},#{goodsJson},
+                #{auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{auditComment},#{calenderId},
+                #{createTime},#{updateTime},#{createBy},#{updateBy},#{tenantId},#{type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
     </insert>
     <update id="update" parameterType="com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder">
         <!--@mbg.generated-->
@@ -130,9 +137,6 @@
             <if test="updateTime != null">
                 update_time_ = #{updateTime},
             </if>
-            <if test="createBy != null">
-                create_by_ = #{createBy},
-            </if>
             <if test="updateBy != null">
                 update_by_ = #{updateBy},
             </if>
@@ -145,7 +149,7 @@
         INSERT INTO student_payment_route_order
         (order_no_,route_organ_id_, route_amount_,route_balance_amount_, mer_no_,fee_flag_,user_id_,
         school_id_,trans_no_,pay_time_,sale_amount_,service_amount_,service_fee_,memo_,goods_json_,audit_status_,
-        audit_comment_,calender_id_,create_time_,update_time_,create_by_,update_by_,tenant_id_)
+        audit_comment_,calender_id_,create_time_,update_time_,create_by_,update_by_,tenant_id_,type_)
         VALUE
         <foreach collection="routeOrders" item="routeOrder" separator=",">
             (#{routeOrder.orderNo},#{routeOrder.routeOrganId},#{routeOrder.routeAmount},
@@ -153,7 +157,8 @@
             #{routeOrder.userId},#{routeOrder.schoolId},#{routeOrder.transNo},#{routeOrder.payTime},
             #{routeOrder.saleAmount},#{routeOrder.serviceAmount},#{routeOrder.serviceFee},#{routeOrder.memo},#{routeOrder.goodsJson},
             #{routeOrder.auditStatus,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler},#{routeOrder.auditComment},
-            #{routeOrder.calenderId},NOW(),NOW(),#{routeOrder.createBy},#{routeOrder.updateBy},#{routeOrder.tenantId})
+            #{routeOrder.calenderId},NOW(),NOW(),#{routeOrder.createBy},#{routeOrder.updateBy},#{routeOrder.tenantId},
+            #{routeOrder.type,typeHandler=com.ym.mec.common.dal.CustomEnumTypeHandler})
         </foreach>
     </insert>
 

+ 1 - 0
mec-web/src/main/resources/columnMapper.ini

@@ -30,6 +30,7 @@
 
 
 [财务管理导入模板]
+订单类型 = type
 收入类型 = incomeType
 所属分部 = organName
 所属学校 = cooperationOrganName

BIN
mec-web/src/main/resources/excelTemplate/财务管理导入模板.xls