瀏覽代碼

经营报表oa费用明细导出

zouxuan 2 年之前
父節點
當前提交
55d762b4b2

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

@@ -1,5 +1,6 @@
 package com.ym.mec.biz.dal.dao;
 
+import com.ym.mec.biz.dal.dto.OASummaryExpensesDto;
 import com.ym.mec.biz.dal.dto.OperatingReportNewDto1;
 import com.ym.mec.biz.dal.entity.OperatingReportNew;
 import com.ym.mec.common.dal.BaseDAO;
@@ -107,4 +108,7 @@ public interface OperatingReportNewDao extends BaseDAO<Integer, OperatingReportN
 
     //统计总部的销售收入,成本
     OperatingReportNew sumTotalSellAmount(@Param("month") String currentMonth);
+
+    //oa费用汇总
+    List<OASummaryExpensesDto> queryOASummaryExpenses(String month);
 }

+ 74 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/dto/OASummaryExpensesDto.java

@@ -0,0 +1,74 @@
+package com.ym.mec.biz.dal.dto;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class OASummaryExpensesDto {
+    // 组织id
+    private String organName;
+
+    // 房屋租金
+    private BigDecimal house;
+
+    // 办公用品
+    private BigDecimal office;
+
+    // 物业费
+    private BigDecimal mainsProperty;
+
+    // 差旅费
+    private BigDecimal travel;
+
+    // 服务费
+    private BigDecimal services;
+
+    // 福利费
+    private BigDecimal welfare;
+
+    // 活动费
+    private BigDecimal activities;
+
+    // 交通费
+    private BigDecimal traffic;
+
+    // 证书费
+    private BigDecimal certificates;
+
+    // 仪器设备
+    private BigDecimal instrument;
+
+    // 通信费
+    private BigDecimal communications;
+
+    // 邮政快递
+    private BigDecimal postalTransport;
+
+    // 招待费
+    private BigDecimal hospitality;
+
+    // 退款
+    private BigDecimal refund;
+
+    // 其他费用
+    private BigDecimal other;
+
+    // 固定人力成本
+    private BigDecimal fixedHumanCost;
+
+    // 变动人力成本
+    private BigDecimal variableHumanCost;
+
+    // 网络教室成本
+    private BigDecimal network;
+
+    // 云教练成本
+    private BigDecimal cloudCoachingCost;
+
+    // 内部结算
+    private BigDecimal internalSettlement;
+
+    // 学员管理费调整
+    private BigDecimal studentManagementFeeAdjustment;
+}

+ 1 - 0
mec-biz/src/main/java/com/ym/mec/biz/dal/enums/ExportEnum.java

@@ -88,6 +88,7 @@ public enum ExportEnum implements BaseEnum<String, ExportEnum> {
     EXPORT_CLOUD_TEACHER_SUM_DETAIL("EXPORT_CLOUD_TEACHER_SUM_DETAIL", "云教练统计详情导出"),
     EXPORT_INDEX_COOP("EXPORT_INDEX_COOP", "首页经营数据合作单位导出"),
     EXPORT_TEACHER_CLOUD_COURSE_REPORT("EXPORT_TEACHER_CLOUD_COURSE_REPORT","老师云教练使用数据"),
+    EXPORT_OA_SUMMARY_EXPENSES("EXPORT_OA_SUMMARY_EXPENSES","oa费用汇总"),
     ;
 
     private String code;

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

@@ -26,7 +26,8 @@ public enum ExportTypeEnum implements BaseEnum<Integer, ExportTypeEnum> {
 	EXPORT_CLOUD_TEACHER_SUM(20, "云教练统计导出"),
 	CLASS_GROUP(21, "班级列表导出"),
 	EXPORT_CLOUD_TEACHER_SUM_DETAIL(22, "云教练统计详情导出"),
-	EXPORT_TEACHER_CLOUD_COURSE_REPORT(23, "老师云教练使用数据")
+	EXPORT_TEACHER_CLOUD_COURSE_REPORT(23, "老师云教练使用数据"),
+	EXPORT_OA_SUMMARY_EXPENSES(24,"oa费用汇总")
 	;
 
 	private Integer code;

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

@@ -7,6 +7,7 @@ public enum HumanCostTypeEnum implements BaseEnum<String, HumanCostTypeEnum> {
 	FIXED("FIXED","固定人力成本"),
 	VARIABLE("VARIABLE","变动人力成本"),
 	NETWORK_CLASSROOM("NETWORK_CLASSROOM","网络教室成本"),
+	CLOUD_COACHING_COST("CLOUD_COACHING_COST","云教练成本"),
 	INTERNAL_SETTLEMENT("INTERNAL_SETTLEMENT","内部结算"),
 	STUDENT_MANAGEMENT_FEE_ADJUSTMENT("STUDENT_MANAGEMENT_FEE_ADJUSTMENT","学员管理费调整");
 

+ 11 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/OperatingReportNewService.java

@@ -1,14 +1,25 @@
 package com.ym.mec.biz.service;
 
 import com.ym.mec.biz.dal.dao.OperatingReportNewDao;
+import com.ym.mec.biz.dal.dto.OASummaryExpensesDto;
 import com.ym.mec.biz.dal.entity.OperatingReportNew;
 import com.ym.mec.common.service.BaseService;
 
 import java.util.Date;
+import java.util.List;
 
 public interface OperatingReportNewService extends BaseService<Integer, OperatingReportNew> {
 
     OperatingReportNewDao getDao();
 
     void operatingReportMonth(Date month);
+
+    /**
+    * @description: oa费用汇总
+     * @param month
+    * @return void
+    * @author zx
+    * @date 2023/4/21 14:55
+    */
+    List<OASummaryExpensesDto> queryOASummaryExpenses(String month);
 }

+ 17 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ExportServiceImpl.java

@@ -383,6 +383,16 @@ public class ExportServiceImpl implements ExportService {
         exportManageFuncMap.put(ExportEnum.EXPORT_CLOUD_TEACHER_SUM_DETAIL, (info) -> exportCloudTeacherSumDetail(info));
         exportManageFuncMap.put(ExportEnum.CLASS_GROUP, info -> exportClassGroup(info));
         exportManageFuncMap.put(ExportEnum.EXPORT_TEACHER_CLOUD_COURSE_REPORT, info -> exportTeacherCloudCourseReport(info));
+        exportManageFuncMap.put(ExportEnum.EXPORT_OA_SUMMARY_EXPENSES, info -> exportOaSummaryExpenses(info));
+    }
+
+    private HttpResponseResult exportOaSummaryExpenses(Map<String, Object> info) {
+        String month = getParam(info, "month", String.class);
+        SysUser user = sysUserService.getUser();
+        ManagerDownload managerDownload = saveManagerDownload(ExportTypeEnum.EXPORT_OA_SUMMARY_EXPENSES,user.getId());
+        return this.asyncExport(() -> this.initExportInfo(operatingReportNewService.queryOASummaryExpenses(month),
+                        managerDownload,ExportEnum.EXPORT_OA_SUMMARY_EXPENSES),
+                managerDownload.getName());
     }
 
     private List<StudentServeExportDto> exportStudentServeInfo(Map<String, Object> info) {
@@ -1329,7 +1339,9 @@ public class ExportServiceImpl implements ExportService {
                 }
             }
             for (MusicGroupBuildLog groupAuditSuccess : musicGroupAuditSuccess) {
-                if (!groupAuditSuccess.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) continue;
+                if (!groupAuditSuccess.getMusicGroupId().equals(musicGroupRegister.getMusicGroupId())) {
+                    continue;
+                }
                 musicGroupRegisterMap.put("auditSuccessTime", groupAuditSuccess.getCreateTime());
             }
             musicGroupRegisterMap.put("groupBuyMusicalNum", musicGroupRegister.getGroupBuyMusicalNum());
@@ -2094,7 +2106,9 @@ public class ExportServiceImpl implements ExportService {
                 }
                 if (row.getChargeType() != null) {
                     for (SporadicChargeTypeEnum chargeType : SporadicChargeTypeEnum.values()) {
-                        if (!chargeType.getCode().equals(row.getChargeType())) continue;
+                        if (!chargeType.getCode().equals(row.getChargeType())) {
+                            continue;
+                        }
                         row.setSporadicType(chargeType.getMsg());
                     }
                 }
@@ -2538,6 +2552,7 @@ public class ExportServiceImpl implements ExportService {
         return subtract;
     }
 
+    @Override
     public void mallRouteOrderList(Map<String, Object> params, ManagerDownload managerDownload) {
         //获取分润订单(不包含订单详情)(纯余额支付不处理)
         List<StudentPaymentOrderMallExportDto> studentPaymentOrderExportDtos = studentPaymentRouteOrderDao.exportMallQueryPage(params);

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

@@ -4,6 +4,7 @@ import com.ym.mec.biz.dal.dao.CourseScheduleDao;
 import com.ym.mec.biz.dal.dao.OperatingReportCloudDao;
 import com.ym.mec.biz.dal.dao.OperatingReportNewDao;
 import com.ym.mec.biz.dal.dao.VipGroupCategoryDao;
+import com.ym.mec.biz.dal.dto.OASummaryExpensesDto;
 import com.ym.mec.biz.dal.entity.OperatingReportNew;
 import com.ym.mec.biz.dal.entity.VipGroupCategory;
 import com.ym.mec.biz.service.OperatingReportNewService;
@@ -214,7 +215,13 @@ public class OperatingReportNewServiceImpl extends BaseServiceImpl<Integer, Oper
 		//将本月乐团课标记为已结算
 		courseScheduleDao.makeSettlementReport(currentMonth);
 	}
-	private BigDecimal getAmount(BigDecimal amount){
+
+    @Override
+    public List<OASummaryExpensesDto> queryOASummaryExpenses(String month) {
+		return operatingReportNewDao.queryOASummaryExpenses(month);
+    }
+
+    private BigDecimal getAmount(BigDecimal amount){
 		if(amount == null){
 			amount = BigDecimal.ZERO;
 		}

+ 33 - 0
mec-biz/src/main/resources/config/mybatis/OperatingReportNewMapper.xml

@@ -351,4 +351,37 @@
 			(DATE_FORMAT(spo.pay_time_,'%Y-%m') = #{month} AND (mg.musical_instruments_provide_status_ IS NULL OR mg.musical_instruments_provide_status_ = 1));
 
 	</select>
+    <select id="queryOASummaryExpenses" resultType="com.ym.mec.biz.dal.dto.OASummaryExpensesDto">
+		SELECT
+			o.name_ AS organName,
+			SUM(CASE WHEN fee_project_ = 3 THEN fe.amount_ ELSE 0 END) AS house,
+			SUM(CASE WHEN fee_project_ = 4 THEN fe.amount_ ELSE 0 END) AS office,
+			SUM(CASE WHEN fee_project_ = 5 THEN fe.amount_ ELSE 0 END) AS mainsProperty,
+			SUM(CASE WHEN fee_project_ = 6 THEN fe.amount_ ELSE 0 END) AS travel,
+			SUM(CASE WHEN fee_project_ = 7 THEN fe.amount_ ELSE 0 END) AS services,
+			SUM(CASE WHEN fee_project_ = 8 THEN fe.amount_ ELSE 0 END) AS welfare,
+			SUM(CASE WHEN fee_project_ = 9 THEN fe.amount_ ELSE 0 END) AS activities,
+			SUM(CASE WHEN fee_project_ = 10 THEN fe.amount_ ELSE 0 END) AS traffic,
+			SUM(CASE WHEN fee_project_ = 11 THEN fe.amount_ ELSE 0 END) AS certificates,
+			SUM(CASE WHEN fee_project_ IN (12,20) THEN fe.amount_ ELSE 0 END) AS instrument,
+			SUM(CASE WHEN fee_project_ = 15 THEN fe.amount_ ELSE 0 END) AS communications,
+			SUM(CASE WHEN fee_project_ = 16 THEN fe.amount_ ELSE 0 END) AS postalTransport,
+			SUM(CASE WHEN fee_project_ = 17 THEN fe.amount_ ELSE 0 END) AS hospitality,
+			SUM(CASE WHEN fee_project_ = 19 THEN fe.amount_ ELSE 0 END) AS refund,
+			SUM(CASE WHEN fee_project_ = 26 THEN fe.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
+		FROM
+			organization o
+				left join financial_expenditure fe ON o.id_ = fe.organ_id_ AND fe.process_id_ = 28 AND DATE_FORMAT(fe.create_time_, '%Y-%m') = #{month} AND fe.del_flag_ = 0
+				left join human_cost hc ON hc.organ_id_ = o.id_  AND hc.month_ = #{month}
+		WHERE
+			o.tenant_id_ = 1 AND o.del_flag_ = 0
+		GROUP BY
+			o.id_
+	</select>
 </mapper>

+ 4 - 0
mec-web/src/main/resources/exportColumnMapper.ini

@@ -341,3 +341,7 @@ fieldColumns = ["name", "amount"]
 [老师云教练使用数据]
 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"]