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 182c4cdc..23ce6395 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 @@ -3,10 +3,9 @@ package com.ruoyi.financial.controller; import java.io.*; import java.net.URLEncoder; import java.time.format.DateTimeFormatter; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; +import java.util.stream.IntStream; import com.alibaba.excel.EasyExcel; import com.alibaba.excel.ExcelWriter; @@ -14,14 +13,21 @@ import com.alibaba.excel.write.builder.ExcelWriterBuilder; import com.alibaba.excel.write.metadata.WriteSheet; import com.alibaba.excel.write.metadata.fill.FillConfig; import com.alibaba.excel.write.metadata.fill.FillWrapper; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.core.text.Convert; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.ShiroUtils; +import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.file.FileDownloadUtils; import com.ruoyi.financial.domain.FinancialReceivablesRecords; import com.ruoyi.financial.domain.VO.ExportFinancialReceivablesVo; import com.ruoyi.financial.service.IFinancialReceivablesRecordsService; import com.ruoyi.framework.web.service.DictService; +import com.ruoyi.system.domain.BaseExpenseAccountChild; +import com.ruoyi.system.domain.SysMakeorderPickVo; +import com.ruoyi.system.service.ISysUserService; import org.apache.avalon.framework.service.ServiceException; +import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.*; import org.apache.poi.ss.util.CellRangeAddress; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -30,6 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ClassPathResource; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; +import org.springframework.util.ResourceUtils; import org.springframework.web.bind.annotation.*; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.enums.BusinessType; @@ -66,7 +73,7 @@ public class FinancialReceivablesController extends BaseController private IFinancialReceivablesRecordsService receivablesRecordsService; @Autowired - private DictService dictService; + private DictService dictService; @RequiresPermissions("financial:receivables:view") @GetMapping() public String receivables() @@ -94,11 +101,19 @@ public class FinancialReceivablesController extends BaseController @Log(title = "财务应收账款", businessType = BusinessType.EXPORT) @PostMapping("/export") @ResponseBody - public AjaxResult export(FinancialReceivables financialReceivables) + public AjaxResult export(FinancialReceivables financialReceivables, String ids) { - List list = financialReceivablesService.selectFinancialReceivablesList(financialReceivables); - ExcelUtil util = new ExcelUtil(FinancialReceivables.class); - return util.exportExcel(list, "财务应收账款数据"); + if (org.springframework.util.StringUtils.isEmpty(ids)){ + List list = financialReceivablesService.selectFinancialReceivablesList(financialReceivables); + ExcelUtil util = new ExcelUtil(FinancialReceivables.class); + return util.exportExcel(list, "财务应收账款数据"); + }else { + String[] codes = ids.split(","); + List list = financialReceivablesService.selectFinancialReceivablesByNos(codes); + ExcelUtil util = new ExcelUtil(FinancialReceivables.class); + return util.exportExcel(list, ids); + } + } /** @@ -161,18 +176,19 @@ public class FinancialReceivablesController extends BaseController /**导出收款凭证*/ @RequiresPermissions("financial:receivables:export") @Log(title = "财务应收账款凭证", businessType = BusinessType.EXPORT) - @GetMapping("/excelReceivablesVoucher/{financialReceivablesId}") - public void excelReceivablesVoucher(@PathVariable("financialReceivablesId") Long financialReceivablesId,HttpServletResponse response) throws IOException { + @GetMapping("/excelReceivablesVoucher") + public void excelReceivablesVoucher(@RequestParam("financialReceivablesId") Long financialReceivablesId,@RequestParam("ids") String ids, HttpServletResponse response) throws IOException { FinancialReceivables financialReceivables = financialReceivablesService.selectFinancialReceivablesById(financialReceivablesId); List financialReceivablesRecordsList = receivablesRecordsService.selectFinancialReceivablesRecordsListByCode(financialReceivables.getFinancialReceivablesCode()); -// -// Map map = financialReceivablesService.exportTemplate(financialReceivablesRecordsList); - + if(StringUtils.isNotEmpty(ids)){ + financialReceivablesRecordsList = receivablesRecordsService.selectFinancialReceivablesRecordsListByIds(Convert.toStrArray(ids)); + } // 模版位置 String name = "FinancialReceiptVoucherTemplate.xlsx"; FileDownloadUtils fileDownloadUtils = new FileDownloadUtils(); //获取文件的绝对路径 String fileAbsolutePath = fileDownloadUtils.getFileAbsolutePath(name); + File file = ResourceUtils.getFile(fileAbsolutePath); String fileName = DateUtils.dateTimeNow() + financialReceivables.getFinancialReceivablesCode() +"收款凭证.xlsx"; // 设置响应头,指定文件名和文件类型 @@ -180,30 +196,62 @@ public class FinancialReceivablesController extends BaseController response.setContentType("application/octet-stream"); // 获取模板文件的输入流,引用绝对路径上的模版 // 创建一个ExcelWriterBuilder对象,并指定输出流和输入流 - // 每页最多显示的行数 - ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(fileAbsolutePath).build(); final int maxRowsPerPage = 6; // 计算需要多少页 int totalPages = (int) Math.ceil((double) financialReceivablesRecordsList.size() / maxRowsPerPage); - for (int i = 0; i < totalPages - 1; i++) { - List financialReceivablesRecordsListPage = - receivablesRecordsService.selectFinancialReceivablesRecordsListByCodePage(financialReceivables.getFinancialReceivablesCode(), i + 1, maxRowsPerPage); - Map map = financialReceivablesService.exportTemplate(financialReceivablesRecordsListPage); - Map map1 = new HashMap<>(); - map1.put("debitAccount",dictService.getLabel("receivables_debit_entry", financialReceivables.getDebitAccount())); + + List receivablesRecordsList = financialReceivablesRecordsList; + + List> pages = IntStream.range(0, totalPages) + .mapToObj(i -> receivablesRecordsList.subList( + i * maxRowsPerPage, + Math.min((i + 1) * maxRowsPerPage, receivablesRecordsList.size()))) + .collect(Collectors.toList()); + + + // 重新制作导出模板 + XSSFWorkbook workbook = null; + if (file.exists()) { + try { + workbook = new XSSFWorkbook(file); + for (int i = 0; i < totalPages; i++) { + if (i == 0) { + workbook.setSheetName(i, "sheet" + (i + 1)); + } else { + workbook.cloneSheet(0, "sheet" + (i + 1)); + } + } + } catch (InvalidFormatException e) { + throw new RuntimeException(e); + } + } + //写到流里 + ByteArrayOutputStream bos = new ByteArrayOutputStream(); + workbook.write(bos); + byte[] bArray = bos.toByteArray(); + InputStream is = new ByteArrayInputStream(bArray); + + // 这里 会填充到第一个sheet, 然后文件流会自动关闭 + ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(is).build(); + + for (int i = 0; i < totalPages; i++) { + List receivablesRecordsListPage = pages.get(i); + + Map map = financialReceivablesService.exportTemplate(receivablesRecordsListPage); + map.put("debitAccount", financialReceivables.getDebitAccount()); + map.put("debitBank", financialReceivables.getDebitBank()); String date = DateUtils.getDate(); String[] dateArray = date.split("-"); - map1.put("year", dateArray[0]); - map1.put("month", dateArray[1]); - map1.put("day", dateArray[2]); - map1.put("debitBank", dictService.getLabel("receivables_bank", financialReceivables.getOpenBank())); - map1.put("loginName", ShiroUtils.getLoginName()); + map.put("year", dateArray[0]); + map.put("month", dateArray[1]); + map.put("day", dateArray[2]); + SysUser loginUser = ShiroUtils.getSysUser(); + map.put("loginName", loginUser.getUserName()); // 创建一个WriteSheet对象,并指定模板中的Sheet编号 WriteSheet writeSheet = EasyExcel.writerSheet("sheet" + (i + 1)).build(); FillConfig fillConfig = FillConfig.builder().forceNewRow(false).build(); - excelWriter.fill(map1,fillConfig, writeSheet); + excelWriter.fill(map, writeSheet); excelWriter.fill(map.get("list"), fillConfig, writeSheet); - excelWriter.fill(map.get("amount"), writeSheet); } excelWriter.finish(); } @@ -258,18 +306,6 @@ public class FinancialReceivablesController extends BaseController } - /** - * 结案 - */ - @RequiresPermissions("financial:receivables:receivablesClosing") - @Log(title = "财务应收账款", businessType = BusinessType.UPDATE) - @GetMapping( "/receivablesClosing/{financialReceivablesId}") - @ResponseBody - public AjaxResult receivablesClosing(@PathVariable("financialReceivablesId") Long financialReceivablesId){ - return toAjax(financialReceivablesService.closingFinancialReceivablesById(financialReceivablesId)); - } - - /** * 应收款账单详情 */ @@ -345,4 +381,24 @@ public class FinancialReceivablesController extends BaseController { return AjaxResult.success( financialReceivablesService.updateReceivableDebit(financialReceivables)); } + + /** + * 应收款账单结案 + */ + @GetMapping("/closed/{financialReceivablesId}") + public String receivablesClosed(@PathVariable("financialReceivablesId") Long financialReceivablesId, ModelMap mmap) + { + FinancialReceivables financialReceivables = financialReceivablesService.selectFinancialReceivablesById(financialReceivablesId); + mmap.put("financialReceivables", financialReceivables); + return prefix + "/closed"; + } + /** + * 保存应收账款结案 + */ + @PostMapping("/closed") + @ResponseBody + public AjaxResult saveClosed(FinancialReceivables financialReceivables) + { + return toAjax(financialReceivablesService.closingFinancialReceivables(financialReceivables)); + } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialReceivables.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialReceivables.java index 79f04ca1..84743a64 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialReceivables.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/domain/FinancialReceivables.java @@ -32,31 +32,32 @@ public class FinancialReceivables extends BaseEntity private String financialReceivablesCode; /** 收款结案状态 (0 待付款,1 部分付款,2 已结案) */ - @Excel(name = "收款结案状态",readConverterExp = "0=待付款,1=部分付款,2=已结案") + @Excel(name = "收款结案状态",dictType = "receivables_closing_status") private String receivablesClosingStatus; /** 关联销售订单号 */ @Excel(name = "关联销售订单号") private String salesOrderCode; /*借方科目*/ - @Excel(name = "借方科目", readConverterExp="0=银行存款,1=现金") + @Excel(name = "借方科目") private String debitAccount; - @Excel(name = "借方开户银行" ,readConverterExp="0=中行基本户,建行一般户") + + @Excel(name = "借方开户银行") private String debitBank; /** 贷方科目 */ - @Excel(name = "贷方科目") +// @Excel(name = "贷方科目") private String creditAccount; /** 贷方明细 */ - @Excel(name = "贷方明细") +// @Excel(name = "贷方明细") private String creditDetail; /** 开户银行 */ - @Excel(name = "开户银行") +// @Excel(name = "开户银行") private String openBank; - /** 开户账号 */ - @Excel(name = "开户账号") + /** 借方账户 */ +// @Excel(name = "借方账户") private String openAccount; /** 客户ID */ @@ -64,14 +65,15 @@ public class FinancialReceivables extends BaseEntity private String customerId; /** 客户名称 */ + @Excel(name = "客户名称") private String customerName; /** 合同编号 */ - @Excel(name = "合同编号") +// @Excel(name = "合同编号") private String contractNumber; /** 币种 */ - @Excel(name = "币种") + @Excel(name = "币种",dictType = "sys_common_currency") private String currencyType; /** 不含税金额 */ @@ -88,31 +90,31 @@ public class FinancialReceivables extends BaseEntity /** 实收含税金额 */ @Excel(name = "实收含税金额") - private String receivedIncludesTax; + private BigDecimal receivedIncludesTax; /** 未收含税金额 */ @Excel(name = "未收含税金额") - private String notReceivedIncludesTax; + private BigDecimal notReceivedIncludesTax; /** 业务人员 */ @Excel(name = "业务人员") private String businessMembers; /** 发货状态(0 待发货,1 部分发货,2 全部发货,3 客户已验收) */ - @Excel(name = "发货状态",readConverterExp = "0=待发货,1=部分发货,2=全部发货,3=客户已验收") + @Excel(name = "发货状态",dictType = "financial_deliver_status") private String financialDeliverStatus; /** 收款日期 */ @JsonFormat(pattern = "yyyy-MM-dd") - @Excel(name = "收款日期", width = 30, dateFormat = "yyyy-MM-dd") +// @Excel(name = "收款日期", width = 30, dateFormat = "yyyy-MM-dd") private Date receivablesDate; /** 收款金额 */ - @Excel(name = "收款金额") +// @Excel(name = "收款金额") private BigDecimal receivablesPrice; /** 收款摘要 */ - @Excel(name = "收款摘要") +// @Excel(name = "收款摘要") private String receivablesAbstract; /** 操作时间 */ @@ -128,9 +130,13 @@ public class FinancialReceivables extends BaseEntity private String day; /** 收款备注 */ - @Excel(name = "收款备注") +// @Excel(name = "收款备注") private String receivablesRemark; + /** 结案原因 */ + @Excel(name = "结案原因") + private String closedReason; + public String getYear() { return year; } @@ -295,21 +301,21 @@ public class FinancialReceivables extends BaseEntity { return paymentCondition; } - public void setReceivedIncludesTax(String receivedIncludesTax) + public void setReceivedIncludesTax(BigDecimal receivedIncludesTax) { this.receivedIncludesTax = receivedIncludesTax; } - public String getReceivedIncludesTax() + public BigDecimal getReceivedIncludesTax() { return receivedIncludesTax; } - public void setNotReceivedIncludesTax(String notReceivedIncludesTax) + public void setNotReceivedIncludesTax(BigDecimal notReceivedIncludesTax) { this.notReceivedIncludesTax = notReceivedIncludesTax; } - public String getNotReceivedIncludesTax() + public BigDecimal getNotReceivedIncludesTax() { return notReceivedIncludesTax; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialReceivablesMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialReceivablesMapper.java index 0c35b220..51fe4701 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialReceivablesMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialReceivablesMapper.java @@ -88,4 +88,7 @@ public interface FinancialReceivablesMapper * 结案 */ public int updateReceivablesClosingStatusById(Long financialReceivablesId); + + /*批量查询*/ + public List selectFinancialReceivablesByNos(String[] ids); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialReceivablesRecordsMapper.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialReceivablesRecordsMapper.java index 0b56f1af..c37bea74 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialReceivablesRecordsMapper.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/mapper/FinancialReceivablesRecordsMapper.java @@ -86,4 +86,8 @@ public interface FinancialReceivablesRecordsMapper List selectFinancialReceivablesRecordsListByCode(String financialReceivablesCode); List selectFinancialReceivablesRecordsListByCodePage(Map paramsMap); + + /* + * 根据单号批量查找*/ + List selectFinancialReceivablesRecordsListByIds(String[] receivablesRecordsIds); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/service/IFinancialReceivablesRecordsService.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/service/IFinancialReceivablesRecordsService.java index e1f6d2fb..a6b913d6 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/service/IFinancialReceivablesRecordsService.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/service/IFinancialReceivablesRecordsService.java @@ -80,4 +80,8 @@ public interface IFinancialReceivablesRecordsService List selectFinancialReceivablesRecordsListByCodePage(String financialReceivablesCode, int pageNum, int pageSize); + + /* + * 根据单号批量查找*/ + List selectFinancialReceivablesRecordsListByIds(String[] receivablesRecordsIds); } 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 e51cfce5..31c7de85 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 @@ -82,7 +82,7 @@ public interface IFinancialReceivablesService /** * 结案 * */ - int closingFinancialReceivablesById(Long financialReceivablesId); + int closingFinancialReceivables(FinancialReceivables financialReceivables); /* * 应收账款详情 @@ -102,4 +102,7 @@ public interface IFinancialReceivablesService Map exportTemplate(List financialReceivablesRecordsList) throws IOException; Integer updateReceivableDebit(FinancialReceivables financialReceivables); + + /*批量查询*/ + public List selectFinancialReceivablesByNos(String[] ids); } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialReceivablesRecordsServiceImpl.java b/ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialReceivablesRecordsServiceImpl.java index 4df94175..19e6b269 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialReceivablesRecordsServiceImpl.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/financial/service/impl/FinancialReceivablesRecordsServiceImpl.java @@ -153,4 +153,10 @@ public class FinancialReceivablesRecordsServiceImpl implements IFinancialReceiva map.put("pageSize",pageSize); return financialReceivablesRecordsMapper.selectFinancialReceivablesRecordsListByCodePage(map); } + + /* + * 根据单号批量查找*/ + public List selectFinancialReceivablesRecordsListByIds(String[] receivablesRecordsIds){ + return financialReceivablesRecordsMapper.selectFinancialReceivablesRecordsListByIds(receivablesRecordsIds); + } } 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 017c9d5d..debb07d1 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 @@ -120,30 +120,62 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer * @param financialReceivables 财务应收账款 * @return 结果 */ - @Transactional + @Transactional(rollbackFor = Exception.class) @Override public int updateFinancialReceivables(FinancialReceivables financialReceivables) { String loginName = ShiroUtils.getLoginName(); - financialReceivables.setUpdateBy(loginName); - financialReceivables.setUpdateTime(DateUtils.getNowDate()); List receivablesRecordsVOList = financialReceivables.getReceivablesRecordsVOList(); if (StringUtils.isEmpty(receivablesRecordsVOList)){ log.warn("收款记录数据为空"); } + FinancialReceivables originReceivables = financialReceivablesMapper.selectFinancialReceivablesById(financialReceivables.getFinancialReceivablesId()); + + BigDecimal receivedNum = Optional.ofNullable(originReceivables.getReceivedIncludesTax()).orElse(BigDecimal.ZERO); + BigDecimal priceIncludTax = Optional.ofNullable(originReceivables.getPriceIncludesTax()).orElse(BigDecimal.ZERO); + for (FinancialReceivablesRecordsVO financialReceivablesRecordsVO : receivablesRecordsVOList) { FinancialReceivablesRecords receivablesRecords = new FinancialReceivablesRecords(); receivablesRecords.setCreateBy(loginName); receivablesRecords.setCreateTime(new Date()); //拿到应收账款的code receivablesRecords.setFinancialReceivablesCode(financialReceivables.getFinancialReceivablesCode()); + receivablesRecords.setSalesOrderCode(receivablesRecords.getSalesOrderCode()); receivablesRecords.setOperatingTime(new Date()); receivablesRecords.setReceivablesRemark(financialReceivablesRecordsVO.getReceivablesRemark()); receivablesRecords.setReceivablesDate(financialReceivablesRecordsVO.getReceivablesDate()); receivablesRecords.setReceivablesPrice(financialReceivablesRecordsVO.getReceivablesPrice()); receivablesRecords.setReceivablesAbstract(financialReceivablesRecordsVO.getReceivablesAbstract()); receivablesRecordsMapper.insertFinancialReceivablesRecords(receivablesRecords); + + receivedNum = receivedNum.add(receivablesRecords.getReceivablesPrice()); + } + BigDecimal notReceivedNum = priceIncludTax.subtract(receivedNum); + if(priceIncludTax.compareTo(receivedNum) == 0 && notReceivedNum.compareTo(BigDecimal.ZERO) == 0){ + financialReceivables.setReceivablesClosingStatus("2");//已结案 + closingFinancialReceivables(financialReceivables); + }else if((priceIncludTax.compareTo(receivedNum)) > 0 && receivedNum.compareTo(BigDecimal.ZERO) != 0){ + financialReceivables.setReceivablesClosingStatus("1");//部分收款 + //更新关联销售订单收款状态 + String salesOrderCode = financialReceivables.getSalesOrderCode(); + if(salesOrderCode != null){ + SysSalesOrderVo sysSalesOrderVo = sysSalesOrderMapper.selectSysSalesOrderBySalesOrderCode(salesOrderCode); + if (sysSalesOrderVo == null){ + throw new BusinessException("关联销售订单不存在"); + } + sysSalesOrderVo.setCloseStatus("1");//部分收款 + sysSalesOrderVo.setUpdateBy(loginName); + sysSalesOrderVo.setUpdateTime(DateUtils.getNowDate()); + int updateSysSalesOrderResult = sysSalesOrderMapper.updateSysSalesOrder(sysSalesOrderVo); + if (updateSysSalesOrderResult <= 0){ + throw new BusinessException("更新销售订单失败"); + } + } } + financialReceivables.setReceivedIncludesTax(receivedNum);//已收 + financialReceivables.setNotReceivedIncludesTax(notReceivedNum);//未收 + financialReceivables.setUpdateBy(loginName); + financialReceivables.setUpdateTime(DateUtils.getNowDate()); return financialReceivablesMapper.updateFinancialReceivables(financialReceivables); } @@ -168,7 +200,7 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer @Override public int generateReceivablesBySalesOrderCode(String salesOrderCode) { FinancialReceivables financialReceivables = new FinancialReceivables(); - FinancialReceivablesRecords receivablesRecords = new FinancialReceivablesRecords(); +// FinancialReceivablesRecords receivablesRecords = new FinancialReceivablesRecords(); // 更改日期格式以提高可读性 SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String datePart = df.format(new Date()); @@ -190,9 +222,12 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer financialReceivables.setOpenBank(sysCustomerVo.getDepositBank()); financialReceivables.setOpenAccount(sysCustomerVo.getBankAccount()); financialReceivables.setCustomerId(sysCustomerVo.getEnterpriseCode()); + financialReceivables.setCustomerName(sysCustomerVo.getEnterpriseName()); financialReceivables.setCurrencyType(sysSalesOrderVo.getCommonCurrency()); financialReceivables.setPriceExcludingTax(BigDecimal.valueOf(sysSalesOrderVo.getNoRmbSum())); financialReceivables.setPriceIncludesTax(BigDecimal.valueOf(sysSalesOrderVo.getRmbTaxSum())); + financialReceivables.setReceivedIncludesTax(BigDecimal.ZERO); + financialReceivables.setNotReceivedIncludesTax(BigDecimal.valueOf(sysSalesOrderVo.getRmbTaxSum())); financialReceivables.setPaymentCondition(sysSalesOrderVo.getPaymentTerms()); financialReceivables.setBusinessMembers(sysSalesOrderVo.getBusinessMembers()); financialReceivables.setFinancialDeliverStatus("0"); @@ -200,12 +235,6 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer financialReceivables.setCreateBy(ShiroUtils.getLoginName()); //插入数据到应收款明细中 - receivablesRecords.setFinancialReceivablesCode(newCode); - receivablesRecords.setReceivablesClosingStatus("0"); - receivablesRecords.setSalesOrderCode(salesOrderCode); - receivablesRecords.setCreateTime(new Date()); - receivablesRecords.setCreateBy(ShiroUtils.getLoginName()); - receivablesRecordsMapper.insertFinancialReceivablesRecords(receivablesRecords); return financialReceivablesMapper.insertFinancialReceivables(financialReceivables); } @@ -275,10 +304,15 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer * */ @Transactional(rollbackFor = Exception.class) @Override - public int closingFinancialReceivablesById(Long financialReceivablesId) { - int result = financialReceivablesMapper.updateReceivablesClosingStatusById(financialReceivablesId); - FinancialReceivables financialReceivables = financialReceivablesMapper.selectFinancialReceivablesById(financialReceivablesId); - String salesOrderCode = financialReceivables.getSalesOrderCode(); + public int closingFinancialReceivables(FinancialReceivables financialReceivables) { + String loginName = ShiroUtils.getLoginName(); + financialReceivables.setReceivablesClosingStatus("2");//已结案 + financialReceivables.setUpdateBy(loginName); + financialReceivables.setUpdateTime(DateUtils.getNowDate()); + int result = financialReceivablesMapper.updateFinancialReceivables(financialReceivables); + + FinancialReceivables receivables = financialReceivablesMapper.selectFinancialReceivablesById(financialReceivables.getFinancialReceivablesId()); + String salesOrderCode = receivables.getSalesOrderCode(); SysSalesOrderVo sysSalesOrderVo = sysSalesOrderMapper.selectSysSalesOrderBySalesOrderCode(salesOrderCode); //设置为已结案 @@ -286,18 +320,21 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer if (sysSalesOrderVo == null){ log.warn("销售单号不存在:{}", salesOrderCode); } + sysSalesOrderVo.setUpdateBy(loginName); + sysSalesOrderVo.setUpdateTime(DateUtils.getNowDate()); int updateSysSalesOrderResult = sysSalesOrderMapper.updateSysSalesOrder(sysSalesOrderVo); - if (updateSysSalesOrderResult <= 0){ + if (updateSysSalesOrderResult <= 0){ throw new BusinessException("销售订单结案失败"); - } + } //更改客户资料客户标识 为下过单 SysCustomerVo sysCustomerVo = sysCustomerMapper.selectSysCustomerByEnterpriseCode(sysSalesOrderVo.getEnterpriseCode()); - sysCustomerVo.setCustomerSign("2"); + sysCustomerVo.setCustomerSign("2"); + sysCustomerVo.setUpdateBy(loginName); + sysCustomerVo.setUpdateTime(DateUtils.getNowDate()); int updateSysCustomer = sysCustomerMapper.updateSysCustomer(sysCustomerVo); if (updateSysCustomer <= 0){ throw new BusinessException("客户资料更改客户标识失败"); } - return result; } @@ -335,11 +372,6 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer //将以上信息通过map传输出去 BigDecimal amount = BigDecimal.ZERO; List list = new ArrayList<>(); - String date = DateUtils.getDate(); - String[] dateArray = date.split("-"); - map.put("year", dateArray[0]); - map.put("month", dateArray[1]); - map.put("day", dateArray[2]); //接收拆分的数字 for (FinancialReceivablesRecords financialReceivablesRecord : financialReceivablesRecordsList) { //对于财务分割的数据,需要合计。 @@ -357,7 +389,18 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer map.put("list",list); FinancialReceivablesRecords financialReceivablesRecord = new FinancialReceivablesRecords(); financialReceivablesRecord.setReceivablesPrice(amount); - map.put("amount",splitNumber(financialReceivablesRecord)); + ExportFinancialReceivablesVo receivablesVo = splitNumber(financialReceivablesRecord); + map.put("yi",receivablesVo.getYi()); + map.put("qianw",receivablesVo.getQianw()); + map.put("baiw",receivablesVo.getBaiw()); + map.put("shiw",receivablesVo.getShiw()); + map.put("wan",receivablesVo.getWan()); + map.put("qian",receivablesVo.getQian()); + map.put("bai",receivablesVo.getBai()); + map.put("shi",receivablesVo.getShi()); + map.put("yuan",receivablesVo.getYuan()); + map.put("jiao",receivablesVo.getJiao()); + map.put("fen",receivablesVo.getFen()); map.put("loginName",ShiroUtils.getLoginName()); return map; } @@ -410,4 +453,8 @@ public class FinancialReceivablesServiceImpl implements IFinancialReceivablesSer public Integer updateReceivableDebit(FinancialReceivables financialReceivables){ return financialReceivablesMapper.updateFinancialReceivables(financialReceivables); } + /*批量查询*/ + public List selectFinancialReceivablesByNos(String[] ids){ + return financialReceivablesMapper.selectFinancialReceivablesByNos(ids); + } } diff --git a/ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesMapper.xml b/ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesMapper.xml index 6e5f546d..51f83db2 100644 --- a/ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesMapper.xml @@ -35,6 +35,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -43,7 +44,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" open_account,customer_id, customer_name, contract_number, currency_type,price_excluding_tax, price_includes_tax, payment_condition,received_includes_tax, not_received_includes_tax, business_members,financial_deliver_status, receivables_date, receivables_price,receivables_abstract, - operating_time, receivables_remark,create_time, create_by, update_by, update_time + operating_time, receivables_remark,create_time, create_by, update_by, update_time, closed_reason from financial_receivables @@ -63,10 +64,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and contract_number = #{contractNumber} and currency_type = #{currencyType} and business_members = #{businessMembers} - and create_time between #{params.beginCreateTime} and #{params.endCreateTime} + and Date(create_time) between #{params.beginCreateTime} and #{params.endCreateTime} and update_by = #{updateBy} - and update_time between #{params.beginUpdateTime} and #{params.endUpdateTime} + and Date(update_time) between #{params.beginUpdateTime} and #{params.endUpdateTime} + order by create_time desc SELECT MAX(SUBSTRING(financial_receivables_code, 7)) FROM financial_receivables WHERE financial_receivables_code LIKE CONCAT(#{prefix}, '%') + + \ No newline at end of file diff --git a/ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesRecordsMapper.xml b/ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesRecordsMapper.xml index 95f1e96e..4e94c071 100644 --- a/ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesRecordsMapper.xml +++ b/ruoyi-admin/src/main/resources/mapper/financial/FinancialReceivablesRecordsMapper.xml @@ -37,7 +37,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + where receivables_records_id in + + #{receivablesRecordsId} + + \ No newline at end of file