package com.ruoyi.web.controller.project; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.poi.ExcelUtil; import com.ruoyi.project.domain.ServiceDonorpayment; import com.ruoyi.project.service.IServiceDonorpaymentService; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.io.*; import java.util.*; /** * 费用收款单Controller * * @author ruoyi * @date 2024-02-27 */ @Api("费用收款单") @RestController @RequestMapping("/project/donorpayment") public class ServiceDonorpaymentController extends BaseController { @Autowired private IServiceDonorpaymentService serviceDonorpaymentService; private static Configuration configuration = null; public ServiceDonorpaymentController() { configuration = new Configuration(); configuration.setDefaultEncoding("utf-8"); } /** * 查询费用收款单列表 */ @ApiOperation("查询费用收款单列表") @PreAuthorize("@ss.hasPermi('system:donorpayment:list')") @GetMapping("/list") public TableDataInfo list(ServiceDonorpayment serviceDonorpayment) { startPage(); List list = serviceDonorpaymentService.queryList(serviceDonorpayment); return getDataTable(list); } /** * 导出费用收款单列表 */ @ApiOperation("导出费用收款单列表") @PreAuthorize("@ss.hasPermi('system:donorpayment:export')") @Log(title = "费用收款单", businessType = BusinessType.EXPORT) @GetMapping("/export") public AjaxResult export(ServiceDonorpayment serviceDonorpayment) { List list = serviceDonorpaymentService.queryList(serviceDonorpayment); ExcelUtil util = new ExcelUtil(ServiceDonorpayment.class); return util.exportExcel(list, "费用收款单数据"); } /** * 获取费用收款单详细信息 */ @ApiOperation("获取费用收款单详细信息") @PreAuthorize("@ss.hasPermi('system:donorpayment:query')") @GetMapping(value = "/getInfo/{id}") public AjaxResult getInfo(@PathVariable("id") Long id) { return AjaxResult.success(serviceDonorpaymentService.getById(id)); } /** * 新增费用收款单 */ @ApiOperation("新增费用收款单") @PreAuthorize("@ss.hasPermi('system:donorpayment:add')") @Log(title = "费用收款单", businessType = BusinessType.INSERT) @PostMapping("/add") @RepeatSubmit public AjaxResult add(@RequestBody ServiceDonorpayment serviceDonorpayment) { boolean save = serviceDonorpaymentService.save(serviceDonorpayment); return success(serviceDonorpayment.getId().toString()); } /** * 修改费用收款单 */ @ApiOperation("修改费用收款单") @PreAuthorize("@ss.hasPermi('system:donorpayment:edit')") @Log(title = "费用收款单", businessType = BusinessType.UPDATE) @PostMapping("/edit") @RepeatSubmit public AjaxResult edit(@RequestBody ServiceDonorpayment serviceDonorpayment) { return toAjax(serviceDonorpaymentService.updateById(serviceDonorpayment)); } /** * 删除费用收款单 */ @ApiOperation("删除费用收款单") @PreAuthorize("@ss.hasPermi('system:donorpayment:remove')") @Log(title = "费用收款单", businessType = BusinessType.DELETE) @GetMapping("/remove/{ids}") public AjaxResult remove(@PathVariable Long[] ids) { return toAjax(serviceDonorpaymentService.removeByIds(Arrays.asList(ids))); } /** * 下载浙江省OPO收款结算单统计表 */ @ApiOperation("下载浙江省OPO收款结算单") @GetMapping(value = "/downloadInfo/{id}") public Map downloadInfo(@PathVariable("id") Long id) throws IOException { Map dataMap = new HashMap(); serviceDonorpaymentService.getDataById(dataMap, id); String filePath = getClass().getResource("/template/").getPath(); System.out.println(filePath); //设置模本装置方法和路径,FreeMarker支持多种模板装载方法。可以重servlet,classpath,数据库教程装载, configuration.setDirectoryForTemplateLoading(new File(filePath)); Template t = null; try { t = configuration.getTemplate("浙江省OPO收款结算单.ftl"); } catch (IOException e) { e.printStackTrace(); } String newTime = String.valueOf(Calendar.getInstance().getTimeInMillis()); String name = "浙江省OPO收款结算单_"+ newTime; //输出文档路径及名称 File outFile = new File(RuoYiConfig.getProfile() + "/download/wordtemplate/" + name + ".doc"); Writer out = null; try { out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile), "utf-8")); } catch (FileNotFoundException e1) { e1.printStackTrace(); } try { t.process(dataMap, out); } catch (TemplateException e) { e.printStackTrace(); } Map map = new HashMap<>(); map.put("downloadUrl", "/profile/download/wordtemplate/" + name + ".doc"); map.put("downloadName", name + ".doc"); return map; } }