From 20f9d3a2ecd81b71342d8ee8db857e3bcbe69156 Mon Sep 17 00:00:00 2001 From: zhangsiqi <2825463979@qq.com> Date: Sat, 17 Aug 2024 09:51:10 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=EF=BC=9A=E6=A8=A1=E7=89=88?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE=E6=94=B9=E5=8F=98=E4=B8=BAattachments?= =?UTF-8?q?=EF=BC=8CController=E8=8E=B7=E5=8F=96=EF=BC=8CserviceImpl=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=8E=B7=E5=8F=96=E6=A8=A1=E7=89=88=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E6=89=80=E9=9C=80=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FinancialReceivablesController.java | 4 +- .../service/IFinancialReceivablesService.java | 2 + .../impl/FinancialReceivablesServiceImpl.java | 62 +++++++++++++++++-- .../FinancialReceivablesRecordsMapper.xml | 3 +- 4 files changed, 63 insertions(+), 8 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/controller/FinancialReceivablesController.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/controller/FinancialReceivablesController.java index 301745be..b661a651 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/controller/FinancialReceivablesController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/controller/FinancialReceivablesController.java @@ -154,12 +154,12 @@ public class FinancialReceivablesController extends BaseController public void excelReceivablesVoucher(@PathVariable("financialReceivablesId") Long financialReceivablesId,HttpServletResponse response) throws IOException { FinancialReceivables financialReceivables = financialReceivablesService.selectFinancialReceivablesById(financialReceivablesId); - + financialReceivablesService.exportTemplate(financialReceivablesId); // 模版位置 String name = "FinancialReceiptVoucherTemplate.xlsx"; // 设置响应头,指定文件名和文件类型 - response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("FinancialReceiptVoucher.xlsx", "UTF-8")); + response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("attachments/FinancialReceiptVoucher.xlsx", "UTF-8")); response.setContentType("application/octet-stream"); InputStream inputStream = null; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/service/IFinancialReceivablesService.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/service/IFinancialReceivablesService.java index e7a6051e..05d5fa31 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/service/IFinancialReceivablesService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/service/IFinancialReceivablesService.java @@ -94,4 +94,6 @@ public interface IFinancialReceivablesService * 查询导出收款凭证 */ Map exportReceivables(FinancialReceivables financialReceivables); + + Map exportTemplate(Long financialReceivablesId); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialReceivablesServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialReceivablesServiceImpl.java index 575d3a4e..09ec2077 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialReceivablesServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialReceivablesServiceImpl.java @@ -3,10 +3,7 @@ package com.ruoyi.financial.service.impl; import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import com.ruoyi.common.exception.BusinessException; import com.ruoyi.common.utils.DateUtils; @@ -21,6 +18,7 @@ import com.ruoyi.system.mapper.SysCustomerMapper; import com.ruoyi.system.mapper.SysSalesOrderMapper; import com.ruoyi.system.service.ISysSalesOrderService; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.ruoyi.financial.mapper.FinancialReceivablesMapper; @@ -28,6 +26,7 @@ import com.ruoyi.financial.domain.FinancialReceivables; import com.ruoyi.financial.service.IFinancialReceivablesService; import com.ruoyi.common.core.text.Convert; import org.springframework.transaction.annotation.Transactional; +import org.thymeleaf.util.NumberUtils; /** * 财务应收账款Service业务层处理 @@ -294,7 +293,6 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer if (StringUtils.isEmpty(maxCode)) { return prefix + "001"; } - // 解析并递增编号 int sequence = Integer.parseInt(maxCode.substring(4)) + 1; // 假设前4位为固定部分 @@ -308,4 +306,58 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer return prefix + df.format(sequence); } + /*设置导出模板数据*/ + @Override + public Map exportTemplate(Long id) throws NoSuchBeanDefinitionException { + Map map = new HashMap<>(); + //需要传输导出的值有:借方科目,开户银行,年,月,日, + //凭证信息批量:包含收款摘要,金额字符串截取,位数从亿开始,亿,千万,百万,十万,万,千,百,十,元,角,分。小数点后俩位为角,分,小数点不需要显示, + //将以上信息通过map传输出去 + FinancialReceivables financialReceivables = financialReceivablesMapper.selectFinancialReceivablesById(id); + List> financialReceivablesRecordsAmountList = new ArrayList<>(); + //接收拆分的数字 + FinancialReceivablesRecords financialReceivablesRecords = new FinancialReceivablesRecords(); + List financialReceivablesRecordsList = receivablesRecordsMapper.selectFinancialReceivablesRecordsListByCode(financialReceivables.getFinancialReceivablesCode()); + for (FinancialReceivablesRecords financialReceivablesRecord : financialReceivablesRecordsList) { + + } + return map; + } + /*切割返回数字*/ + public Map splitNumber(FinancialReceivablesRecords financialReceivablesRecord) { + Map map = new HashMap<>(); + /*获取当前传输过来的*/ + Map map1 = new HashMap<>(); + List result = new ArrayList<>(); + List units = Arrays.asList("亿", "千万", "百万", "十万", "万", "千", "百", "十", "元", "角", "分"); + List unitKey = Arrays.asList("fen", "jiao", "yuan", "shi", "bai", "qian", "wan", "shiw", "baiw", "qianw", "yi"); + BigDecimal amount = financialReceivablesRecord.getReceivablesPrice().setScale(2, BigDecimal.ROUND_HALF_UP); + String integerPart = amount.toBigInteger().toString(); // 获取整数部分 + String decimalPart = amount.remainder(BigDecimal.ONE).multiply(new BigDecimal(100)).toBigInteger().toString(); // 获取小数部分(角分) + int unitIndex = 0; + for (int i = integerPart.length() - 1; i >= 0; i--) { + char digit = integerPart.charAt(i); + if (digit != '0' || !units.get(unitIndex).isEmpty()) {result.add(0, String.valueOf(digit));} + unitIndex++; + if (unitIndex == units.size()) {unitIndex = 0;} + } + // Adding decimal part + if (decimalPart.length() < 2) {decimalPart += "0";} + result.add(decimalPart.substring(0, 1)); + result.add(decimalPart.substring(1, 2)); + /*根据长度设备map中的Stirng参数,调用对等获取实现map*/ + for (int i = 0; i < result.size(); i++) { + String unitKeyValue = unitKey.get(result.size() - i); + map1.put(unitKeyValue,result.get(i)); + } + for (int j = result.size() - 1 ; j < unitKey.size(); j ++){ + map1.put(unitKey.get(j),""); + } + //收款摘要 + map.put("receivablesAbstract",financialReceivablesRecord.getReceivablesAbstract()); + //金额对象 + map.put("receivablesPrice",map1); + return map; + } + } diff --git a/ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesRecordsMapper.xml b/ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesRecordsMapper.xml index a6765b6c..4e655b33 100644 --- a/ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesRecordsMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesRecordsMapper.xml @@ -26,7 +26,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"