From e68fadaa82ef71050c4cfff1af2aa2c4b8a3ed36 Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期五, 09 五月 2025 14:29:11 +0800 Subject: [PATCH] 开票台账功能开发 --- src/main/java/com/ruoyi/sales/excel/InvoiceLedgerExcelDto.java | 42 +++ src/main/java/com/ruoyi/sales/pojo/InvoiceLedger.java | 72 ++++++ src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java | 19 + src/main/resources/mapper/sales/InvoiceLedgerMapper.xml | 69 ++++++ src/main/java/com/ruoyi/common/vo/FileVo.java | 31 ++ src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java | 171 +++++++++++++++ src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerFileMapper.java | 8 src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java | 100 +++++++++ src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java | 29 ++ src/main/java/com/ruoyi/sales/pojo/InvoiceLedgerFile.java | 44 ++++ src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java | 3 src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java | 66 ++++++ 12 files changed, 653 insertions(+), 1 deletions(-) diff --git a/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java b/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java index ba84c9e..da4c324 100644 --- a/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java +++ b/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java @@ -144,7 +144,8 @@ { int dirLastIndex = RuoYiConfig.getProfile().length() + 1; String currentDir = StringUtils.substring(uploadDir, dirLastIndex); - return Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName; +// return Constants.RESOURCE_PREFIX + "/" + currentDir + "/" + fileName; + return currentDir + "/" + fileName; } /** diff --git a/src/main/java/com/ruoyi/common/vo/FileVo.java b/src/main/java/com/ruoyi/common/vo/FileVo.java new file mode 100644 index 0000000..3e9eb72 --- /dev/null +++ b/src/main/java/com/ruoyi/common/vo/FileVo.java @@ -0,0 +1,31 @@ +package com.ruoyi.common.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class FileVo { + + @ApiModelProperty(value = "鏂囦欢鍚嶇О") + private String fileName; + + @ApiModelProperty(value = "鏂囦欢璺緞") + private String filePath; + + @ApiModelProperty(value = "鏂囦欢澶у皬") + private int fileSize; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + private LocalDateTime createTime; + + @ApiModelProperty(value = "淇敼鏃堕棿") + private LocalDateTime updateTime; + + @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛") + private Integer createUser; + + @ApiModelProperty(value = "淇敼鐢ㄦ埛") + private Integer updateUser; +} diff --git a/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java b/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java new file mode 100644 index 0000000..6fd4449 --- /dev/null +++ b/src/main/java/com/ruoyi/sales/controller/InvoiceLedgerController.java @@ -0,0 +1,100 @@ +package com.ruoyi.sales.controller; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.framework.web.domain.AjaxResult; +import com.ruoyi.sales.dto.InvoiceLedgerDto; +import com.ruoyi.sales.service.InvoiceLedgerService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +@RestController +@RequestMapping("/invoiceLedger") +public class InvoiceLedgerController { + + @Autowired + private InvoiceLedgerService invoiceLedgerService; + + /** + * 寮�绁ㄥ彴璐︽柊澧� + * @param invoiceLedgerDto + * @return + */ + @PostMapping("/add") + public AjaxResult invoiceLedgerAdd(@RequestBody InvoiceLedgerDto invoiceLedgerDto) { + invoiceLedgerService.invoiceLedgerAdd(invoiceLedgerDto); + return AjaxResult.success(); + } + + /** + * 寮�绁ㄥ彴璐﹀垹闄� + * @param ids + * @return + */ + @DeleteMapping("/del") + public AjaxResult invoiceLedgerDel(@RequestParam List<Integer> ids) { + invoiceLedgerService.invoiceLedgerDel(ids); + return AjaxResult.success(); + } + + /** + * 寮�绁ㄥ彴璐︿慨鏀� + * @param invoiceLedgerDto + * @return + */ + @PostMapping("/update") + public AjaxResult invoiceLedgerUpdate(@RequestBody InvoiceLedgerDto invoiceLedgerDto) { + invoiceLedgerService.invoiceLedgerUpdate(invoiceLedgerDto); + return AjaxResult.success(); + } + + /** + * 寮�绁ㄥ彴璐﹀垎椤垫煡璇� + * @param page + * @param invoiceLedgerDto + * @return + */ + @GetMapping("/page") + public AjaxResult invoiceLedgerPage(Page page, InvoiceLedgerDto invoiceLedgerDto) { + return AjaxResult.success(invoiceLedgerService.invoiceLedgerPage(page, invoiceLedgerDto)); + } + + /** + * 寮�绁ㄥ彴璐︽枃浠舵煡璇� + * @param invoiceLedgerId + * @return + */ + @GetMapping("/fileList") + public AjaxResult invoiceLedgerFileList(Integer invoiceLedgerId) { + return AjaxResult.success(invoiceLedgerService.invoiceLedgerFileList(invoiceLedgerId)); + } + + /** + * 寮�绁ㄥ彴璐︽枃浠朵笂浼� + * @param file + * @return + */ + @PostMapping("/uploadFile") + public AjaxResult invoiceLedgerUploadFile(MultipartFile file) { + try { + return AjaxResult.success(invoiceLedgerService.invoiceLedgerUploadFile(file)); + }catch (Exception e) { + return AjaxResult.error(e.getMessage()); + } + } + + /** + * 闄勪欢涓嬭浇 + * @param response + * @param invoiceLedgerDto + * @return + */ + @GetMapping("/downloadFile") + public void invoiceLedgerDownloadFile(HttpServletResponse response, InvoiceLedgerDto invoiceLedgerDto) { + invoiceLedgerService.invoiceLedgerDownload(response, invoiceLedgerDto); + } + +} diff --git a/src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java new file mode 100644 index 0000000..0eb8b50 --- /dev/null +++ b/src/main/java/com/ruoyi/sales/dto/InvoiceLedgerDto.java @@ -0,0 +1,19 @@ +package com.ruoyi.sales.dto; + +import com.ruoyi.common.vo.FileVo; +import com.ruoyi.sales.pojo.InvoiceLedger; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.List; + +@Data +public class InvoiceLedgerDto extends InvoiceLedger { + + private List<FileVo> fileList; + + @ApiModelProperty(value = "鏌ヨ鏂囨湰") + private String searchText; + + @ApiModelProperty(value = "瀹㈡埛鍚嶇О") + private String customerName; +} diff --git a/src/main/java/com/ruoyi/sales/excel/InvoiceLedgerExcelDto.java b/src/main/java/com/ruoyi/sales/excel/InvoiceLedgerExcelDto.java new file mode 100644 index 0000000..a960b28 --- /dev/null +++ b/src/main/java/com/ruoyi/sales/excel/InvoiceLedgerExcelDto.java @@ -0,0 +1,42 @@ +package com.ruoyi.sales.excel; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.common.vo.FileVo; +import com.ruoyi.framework.aspectj.lang.annotation.Excel; +import com.ruoyi.sales.pojo.InvoiceLedger; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDateTime; +import java.util.List; + +@Data +public class InvoiceLedgerExcelDto { + + @Excel(name = "閿�鍞悎鍚屽彿") + private String salesContractNo; + + @Excel(name = "瀹㈡埛鍚嶇О") + private String customerName; + + @Excel(name = "鍙戠エ鍙�") + private String invoiceNo; + + @Excel(name = "鍙戠エ閲戦") + private BigDecimal invoiceAmount; + + @Excel(name = "绋庣巼") + private BigDecimal taxRate; + + @Excel(name = "寮�绁ㄤ汉") + private String invoicePerson; + + @Excel(name = "寮�绁ㄦ椂闂�") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime invoiceDate; +} diff --git a/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerFileMapper.java b/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerFileMapper.java new file mode 100644 index 0000000..b8c0b4c --- /dev/null +++ b/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerFileMapper.java @@ -0,0 +1,8 @@ +package com.ruoyi.sales.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.sales.pojo.InvoiceLedger; +import com.ruoyi.sales.pojo.InvoiceLedgerFile; + +public interface InvoiceLedgerFileMapper extends BaseMapper<InvoiceLedgerFile> { +} diff --git a/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java b/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java new file mode 100644 index 0000000..5226dad --- /dev/null +++ b/src/main/java/com/ruoyi/sales/mapper/InvoiceLedgerMapper.java @@ -0,0 +1,29 @@ +package com.ruoyi.sales.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.sales.dto.InvoiceLedgerDto; +import com.ruoyi.sales.pojo.InvoiceLedger; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface InvoiceLedgerMapper extends BaseMapper<InvoiceLedger> { + + /** + * 寮�绁ㄥ彴璐﹀垎椤垫煡璇� + * @param page + * @param invoiceLedgerDto + * @return + */ + IPage<InvoiceLedgerDto> invoiceLedgerPage(Page page, @Param("invoiceLedgerDto") InvoiceLedgerDto invoiceLedgerDto); + + /** + * 寮�绁ㄥ彴璐︽煡璇� + * @param invoiceLedgerDto + * @return + */ + List<InvoiceLedgerDto> invoiceLedgerList(@Param("invoiceLedgerDto") InvoiceLedgerDto invoiceLedgerDto); + +} diff --git a/src/main/java/com/ruoyi/sales/pojo/InvoiceLedger.java b/src/main/java/com/ruoyi/sales/pojo/InvoiceLedger.java new file mode 100644 index 0000000..737f41f --- /dev/null +++ b/src/main/java/com/ruoyi/sales/pojo/InvoiceLedger.java @@ -0,0 +1,72 @@ +package com.ruoyi.sales.pojo; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.text.Format; +import java.time.LocalDate; +import java.time.LocalDateTime; + +@Data +public class InvoiceLedger { + + /** + * 搴忓彿 + */ + @TableId(type = IdType.AUTO) + private Integer id; + + @ApiModelProperty(value = "閿�鍞彴璐ales_ledger") + private Integer salesLedgerId; + + @ApiModelProperty(value = "閿�鍞悎鍚屽彿") + private String salesContractNo; + + @ApiModelProperty(value = "瀹㈡埛鍚嶇ОID") + private Integer customerId; + + @ApiModelProperty(value = "鍙戠エ鍙�") + private String invoiceNo; + + @ApiModelProperty(value = "鍙戠エ閲戦") + private BigDecimal invoiceAmount; + + @ApiModelProperty(value = "绋庣巼") + private BigDecimal taxRate; + + @ApiModelProperty(value = "寮�绁ㄤ汉") + private String invoicePerson; + + @ApiModelProperty(value = "寮�绁ㄦ椂闂�") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime invoiceDate; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛") + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty(value = "淇敼鏃堕棿") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty(value = "淇敼鐢ㄦ埛") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; + + @ApiModelProperty(value = "绉熸埛ID") + @TableField(fill = FieldFill.INSERT) + private Integer tenantId; + +} diff --git a/src/main/java/com/ruoyi/sales/pojo/InvoiceLedgerFile.java b/src/main/java/com/ruoyi/sales/pojo/InvoiceLedgerFile.java new file mode 100644 index 0000000..9dba7ab --- /dev/null +++ b/src/main/java/com/ruoyi/sales/pojo/InvoiceLedgerFile.java @@ -0,0 +1,44 @@ +package com.ruoyi.sales.pojo; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +@Data +public class InvoiceLedgerFile { + + @ApiModelProperty(value = "鏂囦欢鍚嶇О") + private String fileName; + + @ApiModelProperty(value = "鏂囦欢璺緞") + private String filePath; + + @ApiModelProperty(value = "鏂囦欢澶у皬") + private int fileSize; + + @ApiModelProperty(value = "寮�绁ㄥ彴璐D") + private Integer invoiceLedgerId; + + @ApiModelProperty(value = "鍒涘缓鏃堕棿") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + @ApiModelProperty(value = "淇敼鏃堕棿") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛") + @TableField(fill = FieldFill.INSERT) + private Integer createUser; + + @ApiModelProperty(value = "淇敼鐢ㄦ埛") + @TableField(fill = FieldFill.INSERT_UPDATE) + private Integer updateUser; + + @ApiModelProperty(value = "绉熸埛ID") + @TableField(fill = FieldFill.INSERT) + private Integer tenantId; +} diff --git a/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java b/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java new file mode 100644 index 0000000..71dd825 --- /dev/null +++ b/src/main/java/com/ruoyi/sales/service/InvoiceLedgerService.java @@ -0,0 +1,66 @@ +package com.ruoyi.sales.service; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.vo.FileVo; +import com.ruoyi.sales.dto.InvoiceLedgerDto; +import com.ruoyi.sales.pojo.InvoiceLedger; +import com.ruoyi.sales.pojo.InvoiceLedgerFile; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.util.List; + +public interface InvoiceLedgerService { + + /** + * 寮�绁ㄥ彴璐︽柊澧� + * @param invoiceLedgerDto + * @return + */ + int invoiceLedgerAdd( InvoiceLedgerDto invoiceLedgerDto); + + /** + * 寮�绁ㄥ彴璐﹀垹闄� + * @param ids + * @return + */ + int invoiceLedgerDel(List<Integer> ids); + + /** + * 寮�绁ㄥ彴璐︿慨鏀� + * @param invoiceLedgerDto + * @return + */ + int invoiceLedgerUpdate(InvoiceLedgerDto invoiceLedgerDto); + + /** + * 寮�绁ㄥ彴璐﹀垎椤垫煡璇� + * @param page + * @param invoiceLedgerDto + * @return + */ + IPage<InvoiceLedgerDto> invoiceLedgerPage(Page page, InvoiceLedgerDto invoiceLedgerDto); + + /** + * 寮�绁ㄥ彴璐︽枃浠舵煡璇� + * @param invoiceLedgerId + * @return + */ + List<InvoiceLedgerFile> invoiceLedgerFileList(Integer invoiceLedgerId); + + /** + * 寮�绁ㄥ彴璐︽枃浠朵笂浼� + * @param file + * @return + */ + FileVo invoiceLedgerUploadFile(MultipartFile file); + + /** + * 闄勪欢涓嬭浇 + * @param response + * @param invoiceLedgerDto + * @return + */ + void invoiceLedgerDownload(HttpServletResponse response ,InvoiceLedgerDto invoiceLedgerDto); +} diff --git a/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java new file mode 100644 index 0000000..46e18ea --- /dev/null +++ b/src/main/java/com/ruoyi/sales/service/impl/InvoiceLedgerServiceImpl.java @@ -0,0 +1,171 @@ +package com.ruoyi.sales.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.basic.dto.SupplierManageDto; +import com.ruoyi.basic.excel.SupplierManageExcelDto; +import com.ruoyi.common.constant.Constants; +import com.ruoyi.common.utils.file.FileUploadUtils; +import com.ruoyi.common.utils.file.FileUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.vo.FileVo; +import com.ruoyi.sales.dto.InvoiceLedgerDto; +import com.ruoyi.sales.excel.InvoiceLedgerExcelDto; +import com.ruoyi.sales.mapper.InvoiceLedgerFileMapper; +import com.ruoyi.sales.mapper.InvoiceLedgerMapper; +import com.ruoyi.sales.pojo.InvoiceLedger; +import com.ruoyi.sales.pojo.InvoiceLedgerFile; +import com.ruoyi.sales.service.InvoiceLedgerService; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.File; +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class InvoiceLedgerServiceImpl extends ServiceImpl<InvoiceLedgerMapper, InvoiceLedger> implements InvoiceLedgerService { + + @Value("${ruoyi.profile}") + private String uploadFile; + + @Autowired + private InvoiceLedgerMapper invoiceLedgerMapper; + + @Autowired + private InvoiceLedgerFileMapper invoiceLedgerFileMapper; + + /** + * 寮�绁ㄥ彴璐︽柊澧� + * @param invoiceLedgerDto + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int invoiceLedgerAdd(InvoiceLedgerDto invoiceLedgerDto) { + InvoiceLedger invoiceLedger = new InvoiceLedger(); + BeanUtils.copyProperties(invoiceLedgerDto, invoiceLedger); + int result = invoiceLedgerMapper.insert(invoiceLedger); + List<FileVo> fileList = invoiceLedgerDto.getFileList(); + if(CollectionUtils.isNotEmpty(fileList)){ + fileList.forEach(fileVo -> { + InvoiceLedgerFile invoiceLedgerFile = new InvoiceLedgerFile(); + BeanUtils.copyProperties(fileVo, invoiceLedgerFile); + invoiceLedgerFile.setInvoiceLedgerId(invoiceLedger.getId()); + invoiceLedgerFileMapper.insert(invoiceLedgerFile); + }); + } + return result; + } + + /** + * 寮�绁ㄥ彴璐﹀垹闄� + * @param ids + * @return + */ + @Override + public int invoiceLedgerDel(List<Integer> ids) { + LambdaQueryWrapper<InvoiceLedger> delWrapper = new LambdaQueryWrapper<>(); + delWrapper.in(InvoiceLedger::getId, ids); + return invoiceLedgerMapper.delete(delWrapper); + } + + /** + * 寮�绁ㄥ彴璐︿慨鏀� + * @param invoiceLedgerDto + * @return + */ + @Override + @Transactional(rollbackFor = Exception.class) + public int invoiceLedgerUpdate(InvoiceLedgerDto invoiceLedgerDto) { + InvoiceLedger invoiceLedger = new InvoiceLedger(); + BeanUtils.copyProperties(invoiceLedgerDto, invoiceLedger); + int result = invoiceLedgerMapper.updateById(invoiceLedger); + // 鍒犻櫎鍏宠仈闄勪欢 + LambdaQueryWrapper<InvoiceLedgerFile> delWrapper = new LambdaQueryWrapper<>(); + delWrapper.eq(InvoiceLedgerFile::getInvoiceLedgerId, invoiceLedger.getId()); + invoiceLedgerFileMapper.delete(delWrapper); + // 閲嶆柊鎻掑叆闄勪欢鍏宠仈琛� + List<FileVo> fileList = invoiceLedgerDto.getFileList(); + if(CollectionUtils.isNotEmpty(fileList)){ + fileList.forEach(fileVo -> { + InvoiceLedgerFile invoiceLedgerFile = new InvoiceLedgerFile(); + BeanUtils.copyProperties(fileVo, invoiceLedgerFile); + invoiceLedgerFile.setInvoiceLedgerId(invoiceLedger.getId()); + invoiceLedgerFileMapper.insert(invoiceLedgerFile); + }); + } + return result; + } + + /** + * 寮�绁ㄥ彴璐﹀垎椤垫煡璇� + * @param page + * @param invoiceLedgerDto + * @return + */ + @Override + public IPage<InvoiceLedgerDto> invoiceLedgerPage(Page page, InvoiceLedgerDto invoiceLedgerDto) { + return invoiceLedgerMapper.invoiceLedgerPage(page, invoiceLedgerDto); + } + + /** + * 寮�绁ㄥ彴璐︽枃浠舵煡璇� + * @param invoiceLedgerId + * @return + */ + @Override + public List<InvoiceLedgerFile> invoiceLedgerFileList(Integer invoiceLedgerId) { + LambdaQueryWrapper<InvoiceLedgerFile> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(InvoiceLedgerFile::getInvoiceLedgerId, invoiceLedgerId); + return invoiceLedgerFileMapper.selectList(queryWrapper); + } + + /** + * 寮�绁ㄥ彴璐︽枃浠朵笂浼� + * @param file + * @return + */ + @Override + public FileVo invoiceLedgerUploadFile(MultipartFile file) { + FileVo fileVo = new FileVo(); + try { + String baseDir = uploadFile + File.separatorChar + "invoiceLedger"; + String filePath = FileUploadUtils.upload(baseDir, file); + fileVo.setFileName(file.getOriginalFilename()); + fileVo.setFilePath(filePath); + fileVo.setFileSize((int)file.getSize()); + }catch (Exception e){ + e.printStackTrace(); + throw new RuntimeException("鏂囦欢涓婁紶澶辫触"); + } + return fileVo; + } + + /** + * 闄勪欢涓嬭浇 + * @param response + * @param invoiceLedgerDto + * @return + */ + @Override + public void invoiceLedgerDownload(HttpServletResponse response, InvoiceLedgerDto invoiceLedgerDto) { + List<InvoiceLedgerDto> invoiceLedgerDtoList = invoiceLedgerMapper.invoiceLedgerList(invoiceLedgerDto); + List<InvoiceLedgerExcelDto> invoiceLedgerExcelDtoList = invoiceLedgerDtoList.stream().map(item -> { + InvoiceLedgerExcelDto invoiceLedgerExcelDto = new InvoiceLedgerExcelDto(); + BeanUtils.copyProperties(item, invoiceLedgerExcelDto); + return invoiceLedgerExcelDto; + }).collect(Collectors.toList()); + ExcelUtil<InvoiceLedgerExcelDto> util = new ExcelUtil<InvoiceLedgerExcelDto>(InvoiceLedgerExcelDto.class); + util.exportExcel(response, invoiceLedgerExcelDtoList, "渚涘簲鍟嗗鍑�"); + } + +} diff --git a/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml b/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml new file mode 100644 index 0000000..d29b8bf --- /dev/null +++ b/src/main/resources/mapper/sales/InvoiceLedgerMapper.xml @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!DOCTYPE mapper + PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="com.ruoyi.sales.mapper.InvoiceLedgerMapper"> + <select id="invoiceLedgerPage" resultType="com.ruoyi.sales.dto.InvoiceLedgerDto"> + SELECT + T1.id , + T1.sales_ledger_id , + T1.sales_contract_no , + T1.customer_id , + T1.invoice_no , + T1.invoice_amount , + T1.tax_rate , + T1.invoice_person , + T1.invoice_date , + T1.create_time , + T1.create_user , + T1.update_time , + T1.update_user , + T1.tenant_id , + T2.customer_name + FROM invoice_ledger T1 + LEFT JOIN customer T2 ON T1.customer_id = T2.id + <where> + <if test="invoiceLedgerDto.searchText != null and invoiceLedgerDto.searchText != ''"> + AND ( + T2.customer_name LIKE CONCAT('%',#{invoiceLedgerDto.searchText},'%') + OR T1.sales_contract_no LIKE CONCAT('%',#{invoiceLedgerDto.searchText},'%') + ) + </if> + <if test="invoiceLedgerDto.invoiceDate != null"> + AND DATE_FORMAT(T1.invoice_date,'%Y-%m-%d') = DATE_FORMAT(#{invoiceLedgerDto.invoiceDate},'%Y-%m-%d') + </if> + </where> + </select> + + <select id="invoiceLedgerList" resultType="com.ruoyi.sales.dto.InvoiceLedgerDto"> + SELECT + T1.id , + T1.sales_ledger_id , + T1.sales_contract_no , + T1.customer_id , + T1.invoice_no , + T1.invoice_amount , + T1.tax_rate , + T1.invoice_person , + T1.invoice_date , + T1.create_time , + T1.create_user , + T1.update_time , + T1.update_user , + T1.tenant_id , + T2.customer_name + FROM invoice_ledger T1 + LEFT JOIN customer T2 ON T1.customer_id = T2.id + <where> + <if test="invoiceLedgerDto.searchText != null and invoiceLedgerDto.searchText != ''"> + AND ( + T2.customer_name LIKE CONCAT('%',#{invoiceLedgerDto.searchText},'%') + OR T1.sales_contract_no LIKE CONCAT('%',#{invoiceLedgerDto.searchText},'%') + ) + </if> + <if test="invoiceLedgerDto.invoiceDate != null"> + AND DATE_FORMAT(T1.invoice_date,'%Y-%m-%d') = DATE_FORMAT(#{invoiceLedgerDto.invoiceDate},'%Y-%m-%d') + </if> + </where> + </select> +</mapper> \ No newline at end of file -- Gitblit v1.9.3