package com.ruoyi.home.controller; import com.ruoyi.approve.pojo.ApproveProcess; 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.AjaxResult; import com.ruoyi.home.dto.*; import com.ruoyi.home.service.HomeService; import com.ruoyi.dto.MapDto; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; 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 @Api(tags = "首页统计") @RequestMapping("/home") public class HomeController extends BaseController { @Autowired private HomeService homeService; /********************************************************基础类*****************************************************/ @GetMapping("/todos") @Log(title = "待办事项", businessType = BusinessType.OTHER) @ApiOperation("待办事项") public AjaxResult todos(ApproveProcess req) throws ParseException { List approveProcessList = homeService.todos(); return AjaxResult.success(approveProcessList); } @GetMapping("/approveAndDeviceTodos") @ApiOperation("审批协同,设备报修待办事项") public AjaxResult approveAndDeviceTodos(){ Map map = homeService.approveAndDeviceTodos(); return AjaxResult.success(map); } @GetMapping("/noticesCount") @ApiOperation("未过期的公告数量") public AjaxResult noticesCount(){ Long count = homeService.noticesCount(); return AjaxResult.success(count); } @GetMapping("/deptStaffDistribution") @ApiOperation("各部门人员分布") public AjaxResult deptStaffDistribution() { DeptStaffDistributionDto dto = homeService.deptStaffDistribution(); return AjaxResult.success(dto); } @GetMapping("/summaryStatistics") @ApiOperation("员工-客户-供应商总数") public AjaxResult summaryStatistics() { HomeSummaryDto homeSummaryDto = homeService.summaryStatistics(); return AjaxResult.success(homeSummaryDto); } @GetMapping("/supplierPurchaseRanking") @ApiOperation("供应商采购排名") public AjaxResult supplierPurchaseRanking(@RequestParam(value = "type", defaultValue = "1") Integer type) { List list = homeService.supplierPurchaseRanking(type); return AjaxResult.success(list); } @GetMapping("/customerRevenueAnalysis") @ApiOperation("客户营收贡献数值分析") public AjaxResult customerRevenueAnalysis(@RequestParam("customerId") Long customerId, @RequestParam(value = "type", defaultValue = "1") Integer type) { CustomerRevenueAnalysisDto dto = homeService.customerRevenueAnalysis(customerId, type); return AjaxResult.success(dto); } @GetMapping("/productCategoryDistribution") @ApiOperation("产品大类分布") public AjaxResult productCategoryDistribution() { ProductCategoryDistributionDto dto = homeService.productCategoryDistribution(); return AjaxResult.success(dto); } @GetMapping("/customerContributionRanking") @ApiOperation("客户金额贡献排名") public AjaxResult customerContributionRanking(@RequestParam(value = "type", defaultValue = "1") Integer type) { List list = homeService.customerContributionRanking(type); return AjaxResult.success(list); } @GetMapping("/productSalesAnalysis") @ApiOperation("各产品销售金额分析") public AjaxResult productSalesAnalysis() { List list = homeService.productSalesAnalysis(); return AjaxResult.success(list); } @GetMapping("/rawMaterialPurchaseAmountRatio") @ApiOperation("原材料采购金额占比") public AjaxResult rawMaterialPurchaseAmountRatio(){ List list = homeService.rawMaterialPurchaseAmountRatio(); return AjaxResult.success(list); } @GetMapping("/salesPurchaseStorageProductCount") @ApiOperation("销售-采购-储存产品数") public AjaxResult salesPurchaseStorageProductCount(){ List list = homeService.salesPurchaseStorageProductCount(); return AjaxResult.success(list); } @GetMapping("/productInOutAnalysis") @ApiOperation("产品出入库分析") public AjaxResult productInOutAnalysis(@RequestParam(value = "type", defaultValue = "1") Integer type){ List> result = homeService.productInOutAnalysis(type); return AjaxResult.success(result); } @GetMapping("/productTurnoverDays") @ApiOperation("产品周转天数") public AjaxResult productTurnoverDays(){ List list = homeService.productTurnoverDays(); return AjaxResult.success(list); } @GetMapping("/incomeExpenseAnalysis") @ApiOperation("支收对比分析") public AjaxResult incomeExpenseAnalysis(@RequestParam(value = "type", defaultValue = "1") Integer type) { List> result = homeService.incomeExpenseAnalysis(type); return AjaxResult.success(result); } @GetMapping("/profitTrendAnalysis") @ApiOperation("利润趋势分析") public AjaxResult profitTrendAnalysis(){ List list = homeService.profitTrendAnalysis(); return AjaxResult.success(list); } @GetMapping("/expenseCompositionAnalysis") @ApiOperation("构成分析") public AjaxResult expenseCompositionAnalysis(@RequestParam(value = "type", defaultValue = "1") Integer type) { List list = homeService.expenseCompositionAnalysis(type); return AjaxResult.success(list); } @GetMapping("/monthlyIncome") @ApiOperation("月度收入") public AjaxResult monthlyIncome(){ MonthlyIncomeDto dto = homeService.monthlyIncome(); return AjaxResult.success(dto); } @GetMapping("/monthlyExpenditure") @ApiOperation("月度支出") public AjaxResult monthlyExpenditure(){ MonthlyExpenditureDto dto = homeService.monthlyExpenditure(); return AjaxResult.success(dto); } /********************************************************营销采购类**************************************************/ @GetMapping("/business") @Log(title = "销售-采购-库存数据", businessType = BusinessType.OTHER) @ApiOperation("销售-采购-库存数据") public AjaxResult business(HomeBusinessDto req) { HomeBusinessDto homeBusinessDto = homeService.business(); return AjaxResult.success(homeBusinessDto); } @GetMapping("/analysisCustomerContractAmounts") @Log(title = "客户合同金额分析", businessType = BusinessType.OTHER) @ApiOperation("客户合同金额分析") public AjaxResult analysisCustomerContractAmounts(AnalysisCustomerContractAmountsDto req) { AnalysisCustomerContractAmountsDto analysisCustomerContractAmounts = homeService.analysisCustomerContractAmounts(); return AjaxResult.success(analysisCustomerContractAmounts); } /********************************************************生产类*****************************************************/ @GetMapping("/progressStatistics") @ApiOperation("各生产订单的完成进度统计") public AjaxResult progressStatistics(){ ProductionProgressDto productionProgressDto = homeService.productionProgress(); return AjaxResult.success(productionProgressDto); } @GetMapping("/workInProcessTurnover") @ApiOperation("在制品周转情况") public AjaxResult workInProcessTurnover(){ ProductionTurnoverDto productionTurnoverDto = homeService.workInProcessTurnover(); return AjaxResult.success(productionTurnoverDto); } /********************************************************质量类*****************************************************/ @GetMapping("/qualityStatistics") @Log(title = "质量分析", businessType = BusinessType.OTHER) @ApiOperation("质量分析") public AjaxResult qualityStatistics(QualityStatisticsDto req) { QualityStatisticsDto qualityStatisticsDto = homeService.qualityStatistics(); return AjaxResult.success(qualityStatisticsDto); } /********************************************************财务类*****************************************************/ @GetMapping("/statisticsReceivablePayable") @Log(title = "应收应付统计", businessType = BusinessType.OTHER) @ApiOperation("应收应付统计") public AjaxResult statisticsReceivablePayable(StatisticsReceivablePayableDto req, @RequestParam(value = "type", defaultValue = "1") Integer type ) { StatisticsReceivablePayableDto statisticsReceivablePayable = homeService.statisticsReceivablePayable(type); return AjaxResult.success(statisticsReceivablePayable); } /********************************************************仓储类*****************************************************/ }