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"