فهرست منبع

Merge branch 'saas' of http://git.dayaedu.com/yonge/mec into feature/0427-school

 Conflicts:
	mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java
zouxuan 2 سال پیش
والد
کامیت
8151ac0145

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/StudentPaymentOrderDao.java

@@ -460,4 +460,6 @@ public interface StudentPaymentOrderDao extends BaseDAO<Long, StudentPaymentOrde
     List<StudentPaymentOrderExportDto> ExportQueryPage2(Map<String, Object> params);
 
     int queryCount1(Map<String, Object> params);
+
+    List<BaseMapDto<Long, BigDecimal>> groupSellOrder(Map<String, Object> params);
 }

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/HumanTypeDto.java

@@ -13,4 +13,6 @@ public class HumanTypeDto {
     private BigDecimal cloudCoachingCost = BigDecimal.ZERO; // 云教练成本
     private BigDecimal internalSettlement = BigDecimal.ZERO; // 内部结算
     private BigDecimal studentManagementFeeAdjustment = BigDecimal.ZERO; // 学员管理费调整
+    private BigDecimal commission = BigDecimal.ZERO; // 手续费
+    private BigDecimal tax = BigDecimal.ZERO; // 税费
 }

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

@@ -69,6 +69,12 @@ public class OASummaryExpensesDto {
     // 内部结算
     private BigDecimal internalSettlement;
 
-    // 学员管理费调整
+    // 学员管理费
     private BigDecimal studentManagementFeeAdjustment;
+
+    // 手续费
+    private BigDecimal commission;
+
+    // 税费
+    private BigDecimal tax;
 }

+ 4 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/HumanCostTypeEnum.java

@@ -9,7 +9,10 @@ public enum HumanCostTypeEnum implements BaseEnum<String, HumanCostTypeEnum> {
 	NETWORK_CLASSROOM("NETWORK_CLASSROOM","网络教室成本"),
 	CLOUD_COACHING_COST("CLOUD_COACHING_COST","云教练成本"),
 	INTERNAL_SETTLEMENT("INTERNAL_SETTLEMENT","内部结算"),
-	STUDENT_MANAGEMENT_FEE_ADJUSTMENT("STUDENT_MANAGEMENT_FEE_ADJUSTMENT","学员管理费调整");
+	STUDENT_MANAGEMENT_FEE_ADJUSTMENT("STUDENT_MANAGEMENT_FEE_ADJUSTMENT","学员管理费调整"),
+	COMMISSION("COMMISSION","手续费"),
+	TAX("TAX","税费"),
+	;
 
 	@EnumValue
 	private String code;

+ 35 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/wrapper/DegreeWrapper.java

@@ -235,13 +235,27 @@ public class DegreeWrapper {
         @ApiModelProperty("考级简章ID")
         private Long examinationBriefId;
 
+        @ApiModelProperty("链接地址")
+        private String examinationBriefLinkUrl;
+
+        @ApiModelProperty("跳转类型_bank,_slef")
+        private String examinationBriefHrefTarget;
+
+        @ApiModelProperty("考级通知ID")
+        private Long gradingNoticeId;
+
+        @ApiModelProperty("链接地址")
+        private String gradingNoticeLinkUrl;
+
+        @ApiModelProperty("跳转类型_bank,_slef")
+        private String gradingNoticeHrefTarget;
+
         @ApiModelProperty("考级城市分部")
         private List<DegreeCity> degreeCities;
 
         @ApiModelProperty("倒计时开始天数")
         private Integer startDays;
 
-
         public String jsonString() {
             return JSON.toJSONString(this);
         }
@@ -259,6 +273,26 @@ public class DegreeWrapper {
             }
             return Optional.ofNullable(startDays).orElse(0);
         }
+
+        public StudentDegreeInfo examinationBriefLinkUrl(String examinationBriefLinkUrl) {
+            this.examinationBriefLinkUrl = examinationBriefLinkUrl;
+            return this;
+        }
+
+        public StudentDegreeInfo examinationBriefHrefTarget(String examinationBriefHrefTarget) {
+            this.examinationBriefHrefTarget = examinationBriefHrefTarget;
+            return this;
+        }
+
+        public StudentDegreeInfo gradingNoticeLinkUrl(String gradingNoticeLinkUrl) {
+            this.gradingNoticeLinkUrl = gradingNoticeLinkUrl;
+            return this;
+        }
+
+        public StudentDegreeInfo gradingNoticeHrefTarget(String gradingNoticeHrefTarget) {
+            this.gradingNoticeHrefTarget = gradingNoticeHrefTarget;
+            return this;
+        }
     }
 
     @Data

+ 26 - 16
mec-biz/src/main/java/com/ym/mec/biz/service/impl/DegreeServiceImpl.java

@@ -7,26 +7,24 @@ import com.beust.jcommander.internal.Lists;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.biz.dal.dao.DegreeRegistrationDao;
 import com.ym.mec.biz.dal.dao.OrganizationDao;
-import com.ym.mec.biz.dal.dao.StudentPaymentOrderDetailDao;
-import com.ym.mec.biz.dal.entity.*;
+import com.ym.mec.biz.dal.entity.Degree;
+import com.ym.mec.biz.dal.entity.DegreeRegistration;
+import com.ym.mec.biz.dal.entity.Organization;
 import com.ym.mec.biz.dal.enums.DegreeNewsTypeEnum;
 import com.ym.mec.biz.dal.enums.EDegreeStatus;
-import com.ym.mec.biz.dal.enums.OrderDetailTypeEnum;
+import com.ym.mec.biz.dal.mapper.DegreeMapper;
 import com.ym.mec.biz.dal.vo.DegreeNewsVo;
 import com.ym.mec.biz.dal.wrapper.DegreeNewsWrapper;
+import com.ym.mec.biz.dal.wrapper.DegreeWrapper;
 import com.ym.mec.biz.service.DegreeNewsService;
+import com.ym.mec.biz.service.DegreeService;
 import com.ym.mec.biz.service.OrganizationService;
-import com.ym.mec.biz.service.StudentPaymentOrderService;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.common.tenant.TenantContextHolder;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
-import org.joda.time.DateTime;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
-import lombok.extern.slf4j.Slf4j;
-import com.ym.mec.biz.dal.wrapper.DegreeWrapper;
-import com.ym.mec.biz.dal.mapper.DegreeMapper;
-import com.ym.mec.biz.service.DegreeService;
 import org.springframework.util.CollectionUtils;
 
 import java.math.BigDecimal;
@@ -48,12 +46,6 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
     private DegreeRegistrationDao degreeRegistrationDao;
 
     @Autowired
-    private StudentPaymentOrderService studentPaymentOrderService;
-
-    @Autowired
-    private StudentPaymentOrderDetailDao studentPaymentOrderDetailDao;
-
-    @Autowired
     private OrganizationDao organizationDao;
 
     @Autowired
@@ -304,7 +296,25 @@ public class DegreeServiceImpl extends ServiceImpl<DegreeMapper, Degree> impleme
                 .build();
         List<DegreeNewsVo> records = degreeNewsService.selectPage(QueryInfo.getPage(newsQuery), newsQuery).getRecords();
         if (org.apache.commons.collections.CollectionUtils.isNotEmpty(records)) {
-            wrapper.setExaminationBriefId(records.get(0).getId());
+
+            DegreeNewsVo newsVo = records.get(0);
+            wrapper.examinationBriefLinkUrl(newsVo.getLinkUrl())
+                    .examinationBriefHrefTarget(newsVo.getHrefTarget())
+                    .setExaminationBriefId(newsVo.getId());
+        }
+
+        // 考级须知ID
+        {
+            newsQuery.setType(DegreeNewsTypeEnum.GRADING_NOTICE.getCode());
+
+            records = degreeNewsService.selectPage(QueryInfo.getPage(newsQuery), newsQuery).getRecords();
+            if (org.apache.commons.collections.CollectionUtils.isNotEmpty(records)) {
+
+                DegreeNewsVo newsVo = records.get(0);
+                wrapper.gradingNoticeLinkUrl(newsVo.getLinkUrl())
+                        .gradingNoticeHrefTarget(newsVo.getHrefTarget())
+                        .setGradingNoticeId(newsVo.getId());
+            }
         }
 
         return wrapper;

+ 3 - 9
mec-biz/src/main/java/com/ym/mec/biz/service/impl/OperatingReportNewServiceImpl.java

@@ -158,15 +158,6 @@ public class OperatingReportNewServiceImpl extends BaseServiceImpl<Integer, Oper
 			}
 			//业务退费
 			operatingReportNew.setBusinessRefund(getAmount(collect6.get(organId)));
-			//服务收入
-//			operatingReportNew.setServiceAmount(
-//					getAmount(collect3.get(organId))
-//					.add(getAmount(collect2.get(organId)))
-//					.add(getAmount(collect4.get(organId)))
-//					.add(getAmount(collect5.get(organId)))
-//					.add(getAmount(collect24.get(organId)))
-//					.add(getAmount(collect26.get(organId)))
-//					.add(operatingReportNew.getCourseAmount()));
 			//收入合计
 			operatingReportNew.setTotalIncome(operatingReportNew.getSaleAmount().add(operatingReportNew.getServiceAmount()).subtract(operatingReportNew.getBusinessRefund()));
 			//内部结算
@@ -174,7 +165,10 @@ public class OperatingReportNewServiceImpl extends BaseServiceImpl<Integer, Oper
 			//变动费用
 			operatingReportNew.setVariableCosts(getAmount(collect7.get(organId))
 					.add(humanTypeDto.getVariableCost())
+					.add(humanTypeDto.getCommission())
+					.add(humanTypeDto.getTax())
 					.add(humanTypeDto.getNetworkClassroomCost())
+					.add(humanTypeDto.getCloudCoachingCost())
 					.add(humanTypeDto.getStudentManagementFeeAdjustment()));
 			//固定费用
 			operatingReportNew.setFixedCosts(getAmount(collect8.get(organId)).add(humanTypeDto.getFixedCost()));

+ 11 - 8
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -1702,7 +1702,12 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
     @Override
     public List<OperatingTotalIncomeDto> queryOperatingSummaryIncome(Map<String, Object> params) {
         List<StudentPaymentOrderExportDto> studentPaymentOrderExportDtos = studentPaymentOrderDao.ExportQueryPage1(params);
-//        studentPaymentOrderExportDtos.addAll(studentPaymentOrderDao.ExportQueryPage2(params));
+        studentPaymentOrderExportDtos.addAll(studentPaymentOrderDao.ExportQueryPage2(params));
+//        List<BaseMapDto<Long,BigDecimal>> sellOrderMap = studentPaymentOrderDao.groupSellOrder(params);
+//        Map<Long, BigDecimal> sellMap = new HashMap<>();
+//        if(CollectionUtils.isNotEmpty(sellOrderMap)){
+//            sellMap = sellOrderMap.stream().collect(Collectors.groupingBy(e -> e.getKey(), Collectors.collectingAndThen(Collectors.toList(), v -> v.get(0).getValue())));
+//        }
         long i = 1;
         //获取机构费率
         List<Long> otherOrderIds = studentPaymentOrderExportDtos.stream().filter(e -> e.getGroupType() != GroupType.GOODS_SELL
@@ -1749,7 +1754,7 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                 if (row.getBalancePaymentAmount() == null) {
                     row.setBalancePaymentAmount(BigDecimal.ZERO);
                 }
-                if (row.getOrderDetailList() != null) {
+                if (row.getOrderDetailList() != null && GroupType.GOODS_SELL != row.getGroupType()) {
                     for (StudentPaymentOrderDetail orderDetail : row.getOrderDetailList()) {
                         switch (orderDetail.getType()) {
                             case COURSE:
@@ -1767,12 +1772,10 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
                                 row.setMusicGroupCourseFee(row.getMusicGroupCourseFee().add(orderDetail.getPrice()));
                                 break;
                             case MUSICAL:
-                                if (row.getGroupType() != GroupType.GOODS_SELL) {
-                                    if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
-                                        row.setLeaseFee(getActualAmount(orderDetail.getPrice(), row));
-                                    } else {
-                                        row.setMusicalFee(orderDetail.getPrice());
-                                    }
+                                if (orderDetail.getKitGroupPurchaseType() != null && orderDetail.getKitGroupPurchaseType().equals(KitGroupPurchaseTypeEnum.LEASE)) {
+                                    row.setLeaseFee(getActualAmount(orderDetail.getPrice(), row));
+                                } else {
+                                    row.setMusicalFee(orderDetail.getPrice());
                                 }
                                 break;
                             case ACCESSORIES:

+ 20 - 13
mec-biz/src/main/resources/config/mybatis/OperatingReportNewMapper.xml

@@ -210,18 +210,18 @@
 		where #{month} BETWEEN DATE_FORMAT(orc.start_date_,'%Y-%m') AND DATE_FORMAT(orc.end_date_,'%Y-%m') AND orc.cloud_price_ > 0 AND orc.start_date_  IS NOT NULL;
 	</select>
 	<select id="sumRefundAmount" resultType="java.util.Map">
-		select organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure where process_id_ IN (19,22,23,28,51) AND fee_project_ = 19
+		select organ_id_ 'key',SUM(current_amount_) 'value' from financial_expenditure where process_id_ IN (19,22,23,28,51) AND fee_project_ = 19
 		AND effective_time_ = #{month} AND amount_ > 0 and del_flag_ = 0 group by organ_id_;
 	</select>
 	<select id="sumVariableCosts" resultType="java.util.Map">
-		select fe.organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure fe
+		select fe.organ_id_ 'key',SUM(current_amount_) 'value' from financial_expenditure fe
 		where effective_time_ = #{month} AND amount_ > 0 and del_flag_ = 0
-		AND fee_project_ BETWEEN 6 AND 21 AND process_id_ IN (19,22,23,28,51) group by fe.organ_id_;
+		AND fee_project_ IN (6,7,8,9,10,11,12,15,16,17,20,21) AND process_id_ IN (19,22,23,28,51) group by fe.organ_id_;
 	</select>
 	<select id="sumFixedCosts" resultType="java.util.Map">
-		select fe.organ_id_ 'key',SUM(amount_) 'value' from financial_expenditure fe
+		select fe.organ_id_ 'key',SUM(current_amount_) 'value' from financial_expenditure fe
 		where effective_time_ = #{month} AND amount_ > 0 and del_flag_ = 0
-		AND fee_project_ IN (1,2,3,4,5) AND process_id_ IN (19,22,23,28,51) group by fe.organ_id_;
+		AND fee_project_ IN (3,4,5) AND process_id_ IN (19,22,23,28,51) group by fe.organ_id_;
 	</select>
 	<select id="sumCloudPreAmount" resultType="java.util.Map">
 		select cto.organ_id_ 'key',TRUNCATE(SUM(operating_amount_ / (TIMESTAMPDIFF(DAY,cto.start_time_,cto.end_time_) + 1) *
@@ -372,16 +372,21 @@
 			SUM(CASE WHEN fee_project_ = 17 THEN fe.current_amount_ ELSE 0 END) AS hospitality,
 			SUM(CASE WHEN fee_project_ = 19 THEN fe.current_amount_ ELSE 0 END) AS refund,
 			SUM(CASE WHEN fee_project_ = 26 THEN fe.current_amount_ ELSE 0 END) AS other,
-			SUM(CASE WHEN hc.human_cost_type_ = 'FIXED' THEN hc.amount_ ELSE 0 END) AS fixedHumanCost,
-			SUM(CASE WHEN hc.human_cost_type_ = 'VARIABLE' THEN hc.amount_ ELSE 0 END) AS variableHumanCost,
-			SUM(CASE WHEN hc.human_cost_type_ = 'NETWORK_CLASSROOM' THEN hc.amount_ ELSE 0 END) AS network,
-			SUM(CASE WHEN hc.human_cost_type_ = 'CLOUD_COACHING_COST' THEN hc.amount_ ELSE 0 END) AS cloudCoachingCost,
-			SUM(CASE WHEN hc.human_cost_type_ = 'INTERNAL_SETTLEMENT' THEN hc.amount_ ELSE 0 END) AS internalSettlement,
-			SUM(CASE WHEN hc.human_cost_type_ = 'STUDENT_MANAGEMENT_FEE_ADJUSTMENT' THEN hc.amount_ ELSE 0 END) AS studentManagementFeeAdjustment
+			hc.fixedHumanCost,hc.fixedHumanCost, hc.variableHumanCost, hc.network, hc.cloudCoachingCost, hc.internalSettlement, hc.studentManagementFeeAdjustment
 		FROM
 			organization o
 				left join financial_expenditure fe ON o.id_ = fe.organ_id_ AND fe.process_id_ IN (19,22,23,28,51) AND fe.fee_project_ NOT IN (1,2,13,14) AND effective_time_= #{month} AND fe.del_flag_ = 0
-				left join human_cost hc ON hc.organ_id_ = o.id_  AND hc.month_ = #{month}
+				left join (select organ_id_,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'FIXED' THEN hc.amount_ ELSE 0 END) AS fixedHumanCost,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'VARIABLE' THEN hc.amount_ ELSE 0 END) AS variableHumanCost,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'NETWORK_CLASSROOM' THEN hc.amount_ ELSE 0 END) AS network,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'CLOUD_COACHING_COST' THEN hc.amount_ ELSE 0 END) AS cloudCoachingCost,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'INTERNAL_SETTLEMENT' THEN hc.amount_ ELSE 0 END) AS internalSettlement,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'STUDENT_MANAGEMENT_FEE_ADJUSTMENT' THEN hc.amount_ ELSE 0 END) AS studentManagementFeeAdjustment,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'TAX' THEN hc.amount_ ELSE 0 END) AS tax,
+								  SUM(CASE WHEN hc.human_cost_type_ = 'COMMISSION' THEN hc.amount_ ELSE 0 END) AS commission
+						   from human_cost hc where month_ = #{month}
+						   group by organ_id_) hc ON hc.organ_id_ = o.id_
 		WHERE
 			o.tenant_id_ = 1 AND o.del_flag_ = 0
 		GROUP BY
@@ -417,7 +422,9 @@
 			SUM(CASE WHEN human_cost_type_ = 'NETWORK_CLASSROOM' THEN amount_ ELSE 0 END) AS networkClassroomCost,
 			SUM(CASE WHEN human_cost_type_ = 'CLOUD_COACHING_COST' THEN amount_ ELSE 0 END) AS cloudCoachingCost,
 			SUM(CASE WHEN human_cost_type_ = 'INTERNAL_SETTLEMENT' THEN amount_ ELSE 0 END) AS internalSettlement,
-			SUM(CASE WHEN human_cost_type_ = 'STUDENT_MANAGEMENT_FEE_ADJUSTMENT' THEN amount_ ELSE 0 END) AS studentManagementFeeAdjustment
+			SUM(CASE WHEN human_cost_type_ = 'STUDENT_MANAGEMENT_FEE_ADJUSTMENT' THEN amount_ ELSE 0 END) AS studentManagementFeeAdjustment,
+			SUM(CASE WHEN human_cost_type_ = 'COMMISSION' THEN amount_ ELSE 0 END) AS commission,
+			SUM(CASE WHEN human_cost_type_ = 'TAX' THEN amount_ ELSE 0 END) AS tax
 		from human_cost
 		where month_ = #{month} group by organ_id_
 	</select>

+ 8 - 2
mec-biz/src/main/resources/config/mybatis/StudentPaymentOrderMapper.xml

@@ -772,11 +772,11 @@
     <select id="ExportQueryPage2" resultMap="orderAndDetail" parameterType="map">
         select spo.*,spod.id_ detail_id_,spod.type_ detail_type_,spod.price_
                               detail_price_,spod.kit_group_purchase_type_ detail_kit_group_purchase_type_,
-               sci.charge_type_ from (select distinct order_no_ from sell_order where DATE_FORMAT(delivery_time_,'%Y-%m') = #{month}) so
-                                         left join student_payment_order spo ON so.order_no_ = spo.order_no_
+               sci.charge_type_ from student_payment_order spo
                                          LEFT JOIN student_payment_order_detail spod on spo.id_ = spod.payment_order_id_
                                          LEFT JOIN sporadic_charge_info sci on spo.music_group_id_ = sci.id_
         where spo.tenant_id_ = 1 AND spo.status_ = 'SUCCESS'
+        AND spo.order_no_ IN (select distinct order_no_ from sell_order where DATE_FORMAT(delivery_time_,'%Y-%m') = #{month})
     </select>
     <resultMap id="SporadicChargeInfoDtoMap" type="com.ym.mec.biz.dal.dto.SporadicChargeInfoDto">
         <result property="organName" column="organ_name_"/>
@@ -1221,6 +1221,12 @@
             #{activityId}
         </foreach>
     </select>
+    <select id="groupSellOrder" resultType="com.ym.mec.biz.dal.dto.BaseMapDto">
+        SELECT so.organ_id_ 'key',SUM(so.actual_amount_) 'value'
+        FROM sell_order so
+        where so.tenant_id_  = 1 AND DATE_FORMAT(so.delivery_time_,'%Y-%m') = #{month}
+        group by so.organ_id_
+    </select>
 
 
 </mapper>

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

@@ -234,7 +234,7 @@ public class ExportController extends BaseController {
                     "收费模式", "收费类型", "乐团主管", "成团人数", "在读人数", "申请时间", "成团时间", "清单状态", "收费标准"}, new String[]{
                     "organName", "id", "name", "cooperationOrganName", "status.msg", "courseViewType.msg", "chargeTypeName",
                     "educationalTeacherName", "groupMemberNum", "payNum"
-                    , "createTime", "updateTime", "hasVerifyMusicalList?'已确认':'未确认'", "chargeStandard"}, rows);
+                    , "createTime", "billStartDate", "hasVerifyMusicalList?'已确认':'未确认'", "chargeStandard"}, rows);
             response.setContentType("application/octet-stream");
             response.setHeader("Content-Disposition", "attac:wq" +
                     "hment;filename=classGroup-" + DateUtil.getDate(new Date()) + ".xls");

+ 20 - 0
mec-web/src/main/java/com/ym/mec/web/controller/degree/DegreeNewsController.java

@@ -4,12 +4,14 @@ import com.alibaba.fastjson.JSONObject;
 import com.microsvc.toolkit.common.response.paging.PageInfo;
 import com.microsvc.toolkit.common.response.paging.QueryInfo;
 import com.ym.mec.biz.dal.entity.DegreeNews;
+import com.ym.mec.biz.dal.enums.DegreeNewsTypeEnum;
 import com.ym.mec.biz.dal.vo.DegreeNewsVo;
 import com.ym.mec.biz.dal.wrapper.DegreeNewsWrapper;
 import com.ym.mec.biz.service.DegreeNewsService;
 import com.ym.mec.biz.service.SysUserService;
 import com.ym.mec.common.controller.BaseController;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.exception.BizException;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
@@ -18,6 +20,8 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.Objects;
+
 @Slf4j
 @Validated
 @RestController
@@ -67,6 +71,22 @@ public class DegreeNewsController extends BaseController {
 	@PostMapping("/enable")
 	public HttpResponseResult<JSONObject> enable(Long newsId) {
         DegreeNews degreeNews = degreeNewsService.getById(newsId);
+
+        if (Objects.isNull(degreeNews)) {
+            throw new BizException("考级资讯编号无效");
+        }
+
+        // 考级须知,若是启用,则停用其他的
+        if (degreeNews.getType() == DegreeNewsTypeEnum.GRADING_NOTICE
+                && !degreeNews.getStatus()) {
+            degreeNewsService.lambdaUpdate()
+                    .eq(DegreeNews::getTenantId, degreeNews.getTenantId())
+                    .eq(Objects.nonNull(degreeNews.getOrganIds()), DegreeNews::getOrganIds, degreeNews.getOrganIds())
+                    .eq(DegreeNews::getType, DegreeNewsTypeEnum.GRADING_NOTICE)
+                    .set(DegreeNews::getStatus, false)
+                    .update();
+        }
+
         degreeNews.setStatus(!degreeNews.getStatus());
         degreeNewsService.updateById(degreeNews);
         return succeed();

+ 2 - 2
mec-web/src/main/resources/exportColumnMapper.ini

@@ -343,8 +343,8 @@ headColumns = ["分部", "老师姓名", "声部", "课程时长(分)", "课
 fieldColumns = ["organName", "teacherName", "subjectName", "courseTime", "playTime", "totalPlayTime"]
 
 [oa费用汇总]
-headColumns = ["城市","固定人力成本","房屋","办公","水电物业","变动人力成本","差旅","外部服务","福利","活动","交通","考级","临时场地租赁","通讯","邮递运输","招待费","其他","学员管理费","云教练成本","网络教室成本","业务退费","内部结算"]
-fieldColumns = ["organName", "fixedHumanCost", "house", "office", "mainsProperty","variableHumanCost", "travel","services", "welfare", "activities", "traffic", "certificates", "instrument","communications", "postalTransport", "hospitality", "other", "studentManagementFeeAdjustment","cloudCoachingCost", "network", "refund", "internalSettlement"]
+headColumns = ["城市","固定人力成本","房屋","办公","水电物业","变动人力成本","差旅","外部服务","福利","活动","交通","考级","临时场地租赁","通讯","邮递运输","招待费","其他","学员管理费","云教练成本","网络教室成本","业务退费","内部结算","手续费","税费"]
+fieldColumns = ["organName", "fixedHumanCost", "house", "office", "mainsProperty","variableHumanCost", "travel","services", "welfare", "activities", "traffic", "certificates", "instrument","communications", "postalTransport", "hospitality", "other", "studentManagementFeeAdjustment","cloudCoachingCost", "network", "refund", "internalSettlement", "commission", "tax"]
 
 [oa费用明细]
 headColumns = ["城市","钉钉流程编号","费用归属学校","申请人","费用项目","费用类型","付款金额","付款时间","明细","学员编号","当期金额"]