package com.ruoyi.home.controller; import com.ruoyi.approve.pojo.ApproveProcess; import com.ruoyi.dto.MapDto; import com.ruoyi.framework.aspectj.lang.annotation.Log; import com.ruoyi.framework.aspectj.lang.enums.BusinessType; import com.ruoyi.framework.web.controller.BaseController; import com.ruoyi.framework.web.domain.R; import com.ruoyi.home.annotation.DefaultType; import com.ruoyi.home.dto.*; import com.ruoyi.home.service.HomeService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.text.ParseException; import java.util.List; import java.util.Map; /** * @author :yys * @date : 2025/7/25 9:15 */ @RestController @Tag(name = "首页统计") @RequestMapping("/home") @AllArgsConstructor public class HomeController extends BaseController { private final HomeService homeService; /********************************************************基础类*****************************************************/ @GetMapping("/todos") @Log(title = "待办事项", businessType = BusinessType.OTHER) @Operation(summary = "待办事项") public R todos(ApproveProcess req) throws ParseException { List approveProcessList = homeService.todos(); return R.ok(approveProcessList); } @GetMapping("/approveAndDeviceTodos") @Operation(summary = "审批协同,设备报修待办事项") public R approveAndDeviceTodos(){ Map map = homeService.approveAndDeviceTodos(); return R.ok(map); } @GetMapping("/noticesCount") @Operation(summary = "未过期的公告数量") public R noticesCount(){ Long count = homeService.noticesCount(); return R.ok(count); } @GetMapping("/deptStaffDistribution") @Operation(summary = "各部门人员分布") public R deptStaffDistribution() { DeptStaffDistributionDto dto = homeService.deptStaffDistribution(); return R.ok(dto); } @GetMapping("/summaryStatistics") @Operation(summary = "员工-客户-供应商总数") public R summaryStatistics() { HomeSummaryDto homeSummaryDto = homeService.summaryStatistics(); return R.ok(homeSummaryDto); } /********************************************************营销采购类**************************************************/ @GetMapping("/supplierPurchaseRanking") @Operation(summary = "供应商采购排名") public R supplierPurchaseRanking(@DefaultType Integer type) { List list = homeService.supplierPurchaseRanking(type); return R.ok(list); } @GetMapping("/customerRevenueAnalysis") @Operation(summary = "客户营收贡献数值分析") public R customerRevenueAnalysis(Long customerId, @DefaultType Integer type) { CustomerRevenueAnalysisDto dto = homeService.customerRevenueAnalysis(customerId, type); return R.ok(dto); } @GetMapping("/customerContributionRanking") @Operation(summary = "客户金额贡献排名") public R customerContributionRanking(@DefaultType Integer type) { List list = homeService.customerContributionRanking(type); return R.ok(list); } @GetMapping("/productSalesAnalysis") @Operation(summary = "各产品销售金额分析") public R productSalesAnalysis() { List list = homeService.productSalesAnalysis(); return R.ok(list); } @GetMapping("/rawMaterialPurchaseAmountRatio") @Operation(summary = "原材料采购金额占比") public R rawMaterialPurchaseAmountRatio(){ List list = homeService.rawMaterialPurchaseAmountRatio(); return R.ok(list); } @GetMapping("/business") @Log(title = "销售-采购-库存数据", businessType = BusinessType.OTHER) @Operation(summary = "销售-采购-库存数据") public R business(HomeBusinessDto req) { HomeBusinessDto homeBusinessDto = homeService.business(); return R.ok(homeBusinessDto); } @GetMapping("/analysisCustomerContractAmounts") @Log(title = "客户合同金额分析", businessType = BusinessType.OTHER) @Operation(summary = "客户合同金额分析") public R analysisCustomerContractAmounts(AnalysisCustomerContractAmountsDto req) { AnalysisCustomerContractAmountsDto analysisCustomerContractAmounts = homeService.analysisCustomerContractAmounts(); return R.ok(analysisCustomerContractAmounts); } /********************************************************生产类*****************************************************/ @GetMapping("/inputOutputAnalysis") @Operation(summary = "投入产出分析") public R inputOutputAnalysis(@DefaultType Integer type){ List list = homeService.inputOutputAnalysis(type); return R.ok(list); } @GetMapping("/processOutputAnalysis") @Operation(summary = "工序产出分析") public R processOutputAnalysis(@DefaultType Integer type){ List list = homeService.processOutputAnalysis(type); return R.ok(list); } @GetMapping("/workOrderEfficiencyAnalysis") @Operation(summary = "工单执行效率分析") public R workOrderEfficiencyAnalysis(@DefaultType Integer type){ List list = homeService.workOrderEfficiencyAnalysis(type); return R.ok(list); } @GetMapping("/productionAccountingAnalysis") @Operation(summary = "生产核算分析") public R productionAccountingAnalysis(@DefaultType Integer type){ List list = homeService.productionAccountingAnalysis(type); return R.ok(list); } @GetMapping("/orderCount") @Operation(summary = "订单数") public R orderCount(){ return R.ok(homeService.orderCount()); } @GetMapping("/progressStatistics") @Operation(summary = "各生产订单的完成进度统计") public R progressStatistics(){ ProductionProgressDto productionProgressDto = homeService.productionProgress(); return R.ok(productionProgressDto); } @GetMapping("/workInProcessTurnover") @Operation(summary = "在制品周转情况") public R workInProcessTurnover(){ ProductionTurnoverDto productionTurnoverDto = homeService.workInProcessTurnover(); return R.ok(productionTurnoverDto); } @GetMapping("/processDataProductionStatistics") @Operation(summary = "工序数据生产统计数据") public R processDataProductionStatistics(@DefaultType Integer type,@RequestParam(required = false) List processIds) { List list = homeService.processDataProductionStatistics(type, processIds); return R.ok(list); } /********************************************************质量类*****************************************************/ @GetMapping("/rawMaterialDetection") @Operation(summary = "原材料检测") public R rawMaterialDetection(@DefaultType Integer type){ return R.ok(homeService.rawMaterialDetection(type)); } @GetMapping("/processDetection") @Operation(summary = "过程检测") public R processDetection(@DefaultType Integer type){ return R.ok(homeService.processDetection(type)); } @GetMapping("/factoryDetection") @Operation(summary = "成品出厂检测") public R factoryDetection(@DefaultType Integer type){ return R.ok(homeService.factoryDetection(type)); } @GetMapping("/qualityInspectionCount") @Operation(summary = "质量检验数量") public R qualityInspectionCount(){ QualityInspectionCountDto qualityInspectionCountDto = homeService.qualityInspectionCount(); return R.ok(qualityInspectionCountDto); } @GetMapping("/nonComplianceWarning") @Operation(summary = "不合格预警") public R nonComplianceWarning(){ NonComplianceWarningDto nonComplianceWarningDto = homeService.nonComplianceWarning(); return R.ok(nonComplianceWarningDto); } @GetMapping("/completedInspectionCount") @Operation(summary = "完成检验数") public R completedInspectionCount(){ List list = homeService.completedInspectionCount(); return R.ok(list); } @GetMapping("/unqualifiedProductRanking") @Operation(summary = "不合格产品排名") public R unqualifiedProductRanking(){ List list = homeService.unqualifiedProductRanking(); return R.ok(list); } @GetMapping("/unqualifiedProductProcessingAnalysis") @Operation(summary = "不合格检品处理分析") public R unqualifiedProductProcessingAnalysis(){ List list = homeService.unqualifiedProductProcessingAnalysis(); return R.ok(list); } @GetMapping("/qualityStatistics") @Log(title = "质量分析", businessType = BusinessType.OTHER) @Operation(summary = "质量分析") public R qualityStatistics(QualityStatisticsDto req) { QualityStatisticsDto qualityStatisticsDto = homeService.qualityStatistics(); return R.ok(qualityStatisticsDto); } @GetMapping("/qualityInspectionStatistics") @Operation(summary = "质量统计") public R qualityInspectionStatistics(@DefaultType Integer type) { QualityStatisticsDto dto = homeService.qualityInspectionStatistics(type); return R.ok(dto); } /********************************************************财务类*****************************************************/ @GetMapping("/incomeExpenseAnalysis") @Operation(summary = "支收对比分析") public R incomeExpenseAnalysis(@DefaultType Integer type) { List> result = homeService.incomeExpenseAnalysis(type); return R.ok(result); } @GetMapping("/profitTrendAnalysis") @Operation(summary = "利润趋势分析") public R profitTrendAnalysis(){ List list = homeService.profitTrendAnalysis(); return R.ok(list); } @GetMapping("/expenseCompositionAnalysis") @Operation(summary = "构成分析") public R expenseCompositionAnalysis(@DefaultType Integer type) { List list = homeService.expenseCompositionAnalysis(type); return R.ok(list); } @GetMapping("/monthlyIncome") @Operation(summary = "月度收入") public R monthlyIncome(){ MonthlyIncomeDto dto = homeService.monthlyIncome(); return R.ok(dto); } @GetMapping("/monthlyExpenditure") @Operation(summary = "月度支出") public R monthlyExpenditure(){ MonthlyExpenditureDto dto = homeService.monthlyExpenditure(); return R.ok(dto); } @GetMapping("/statisticsReceivablePayable") @Log(title = "应收应付统计", businessType = BusinessType.OTHER) @Operation(summary = "应收应付统计") public R statisticsReceivablePayable(StatisticsReceivablePayableDto req, @DefaultType Integer type ) { StatisticsReceivablePayableDto statisticsReceivablePayable = homeService.statisticsReceivablePayable(type); return R.ok(statisticsReceivablePayable); } /********************************************************仓储类*****************************************************/ @GetMapping("/productCategoryDistribution") @Operation(summary = "产品大类分布") public R productCategoryDistribution() { ProductCategoryDistributionDto dto = homeService.productCategoryDistribution(); return R.ok(dto); } @GetMapping("/salesPurchaseStorageProductCount") @Operation(summary = "销售-采购-储存产品数") public R salesPurchaseStorageProductCount(){ List list = homeService.salesPurchaseStorageProductCount(); return R.ok(list); } @GetMapping("/productInOutAnalysis") @Operation(summary = "产品出入库分析") public R productInOutAnalysis(@DefaultType Integer type){ List> result = homeService.productInOutAnalysis(type); return R.ok(result); } @GetMapping("/productTurnoverDays") @Operation(summary = "产品周转天数") public R productTurnoverDays(){ List list = homeService.productTurnoverDays(); return R.ok(list); } }