package com.ruoyi.web.controller.api; import cn.afterturn.easypoi.excel.ExcelExportUtil; import cn.afterturn.easypoi.excel.entity.ExportParams; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.basic.PageInfo; import com.ruoyi.common.core.domain.R; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.WebUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.export.YcFinancialManagementExport; import com.ruoyi.system.model.YcFinancialManagement; import com.ruoyi.system.model.YcRevenueExpenditureType; import com.ruoyi.system.query.YcFinancialManagementQuery; import com.ruoyi.system.service.YcFinancialManagementService; import com.ruoyi.system.service.YcRevenueExpenditureTypeService; import com.ruoyi.system.vo.YcFinancialManagementVO; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLEncoder; import java.util.List; import java.util.Objects; /** *

* 财务管理 前端控制器 *

* * @author xiaochen * @since 2025-07-15 */ @Api(tags = "财务管理") @RestController @RequestMapping("/yc-financial-management") public class YcFinancialManagementController { private final YcRevenueExpenditureTypeService ycRevenueExpenditureTypeService; private final YcFinancialManagementService ycFinancialManagementService; private final TokenService tokenService; @Autowired public YcFinancialManagementController(YcRevenueExpenditureTypeService ycRevenueExpenditureTypeService, YcFinancialManagementService ycFinancialManagementService, TokenService tokenService) { this.ycRevenueExpenditureTypeService = ycRevenueExpenditureTypeService; this.ycFinancialManagementService = ycFinancialManagementService; this.tokenService = tokenService; } /** * 查询财务管理列表 */ @ApiOperation( value = "查询财务管理分页列表") @PostMapping(value = "/pageList") public R> pageList(@RequestBody YcFinancialManagementQuery query) { return R.ok(ycFinancialManagementService.pageList(query)); } /** * 添加财务管理管理 */ @ApiOperation( value = "添加财务管理") @Log(title = "财务管理-添加", businessType = BusinessType.INSERT) @PostMapping(value = "/add") public R add(@RequestBody YcFinancialManagement dto) { YcRevenueExpenditureType ycRevenueExpenditureType = ycRevenueExpenditureTypeService.getById(dto.getTypeId()); if(Objects.nonNull(ycRevenueExpenditureType)){ dto.setRevenueType(ycRevenueExpenditureType.getRevenueType()); } return R.ok(ycFinancialManagementService.save(dto)); } /** * 编辑财务管理 */ @ApiOperation( value = "编辑财务管理") @Log(title = "财务管理-编辑", businessType = BusinessType.UPDATE) @PostMapping(value = "/update") public R update(@RequestBody YcFinancialManagement dto) { return R.ok(ycFinancialManagementService.updateById(dto)); } /** * 查看财务管理详情 */ @ApiOperation( value = "查看财务管理详情") @GetMapping(value = "/getDetailById") public R getDetailById(@RequestParam("id") Long id) { YcFinancialManagement ycFinancialManagement = ycFinancialManagementService.getById(id); YcFinancialManagementVO ycFinancialManagementVO = new YcFinancialManagementVO(); BeanUtils.copyProperties(ycFinancialManagement, ycFinancialManagementVO); YcRevenueExpenditureType ycRevenueExpenditureType = ycRevenueExpenditureTypeService.getById(ycFinancialManagement.getTypeId()); if(Objects.nonNull(ycRevenueExpenditureType)){ ycFinancialManagementVO.setRevenueType(ycRevenueExpenditureType.getRevenueType()); ycFinancialManagementVO.setTypeName(ycRevenueExpenditureType.getTypeName()); } return R.ok(ycFinancialManagementVO); } /** * 删除财务管理 */ @ApiOperation( value = "删除财务管理") @Log(title = "财务管理-删除", businessType = BusinessType.DELETE) @DeleteMapping(value = "/deleteById") public R deleteById(@RequestParam("id") Integer id) { return R.ok(ycFinancialManagementService.removeById(id)); } @ApiOperation(value = "财务管理导出") @Log(title = "财务管理导出", businessType = BusinessType.OTHER) @PostMapping(value = "/financialManagementExport") public void financialManagementExport(@RequestBody YcFinancialManagementQuery query) { String userPermission = tokenService.getLoginUser().getUser().getUserPermission(); List exports = ycFinancialManagementService.financialManagementExport(query); for (YcFinancialManagementExport export : exports) { export.setProvinceAndCityName(export.getProvinceName() + "·" + export.getCityName()); export.setPayTimeStr(DateUtils.localDateTimeToString(export.getPayTime())); export.setUpdateTimeStr(DateUtils.localDateTimeToString(export.getUpdateTime())); if(export.getRevenueType() == 1){ if(userPermission.contains("4")){ export.setPayMoneyStr("¥" + export.getPayMoney()); }else { export.setPayMoneyStr("¥****"); } }else { if(userPermission.contains("3")){ export.setPayMoneyStr("¥" + export.getPayMoney()); }else { export.setPayMoneyStr("¥****"); } } } //1.获取excel模板 Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), YcFinancialManagementExport.class, exports); HttpServletResponse response = WebUtils.response(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); ServletOutputStream outputStream = null; try { String fileName = URLEncoder.encode("财务管理列表.xls", "utf-8"); response.setHeader("Content-dispodition", "attachment;filename=" + fileName); outputStream = response.getOutputStream(); workbook.write(outputStream); } catch (IOException e) { e.printStackTrace(); } finally { try { outputStream.close(); } catch (IOException e) { e.printStackTrace(); } } } }