From 390b4243dff25a50f1d3302228e7dd16e9c2f18a Mon Sep 17 00:00:00 2001 From: liding <756868258@qq.com> Date: 星期三, 14 五月 2025 17:56:24 +0800 Subject: [PATCH] 1.合同金额优化 2.来票台账 --- src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java | 4 src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java | 21 +++ src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java | 45 +++++++ src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java | 4 src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java | 17 ++ src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml | 12 ++ src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java | 6 + src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java | 1 src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java | 73 ++++++++++++ src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseDto.java | 7 + src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java | 2 src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java | 14 ++ src/main/java/com/ruoyi/purchase/pojo/InvoicePurchase.java | 98 ++++++++++++++++ 13 files changed, 299 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java b/src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java new file mode 100644 index 0000000..256f9c5 --- /dev/null +++ b/src/main/java/com/ruoyi/purchase/controller/InvoicePurchaseController.java @@ -0,0 +1,73 @@ +package com.ruoyi.purchase.controller; + +import java.util.List; +import javax.servlet.http.HttpServletResponse; + +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.purchase.pojo.InvoicePurchase; +import com.ruoyi.purchase.service.IInvoicePurchaseService; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.DeleteMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import com.ruoyi.framework.aspectj.lang.annotation.Log; +import com.ruoyi.framework.aspectj.lang.enums.BusinessType; +import com.ruoyi.framework.web.controller.BaseController; +import com.ruoyi.framework.web.domain.AjaxResult; +import com.ruoyi.framework.web.page.TableDataInfo; + +/** + * 鍙戠エ淇℃伅Controller + * + * @author ruoyi + * @date 2025-05-14 + */ +@RestController +@AllArgsConstructor +@RequestMapping("/purchase/invoice") +public class InvoicePurchaseController extends BaseController { + + private IInvoicePurchaseService invoicePurchaseService; + + /** + * 鏌ヨ鍙戠エ淇℃伅鍒楄〃 + */ + @GetMapping("/list") + public TableDataInfo list(InvoicePurchase invoicePurchase) { + startPage(); + List<InvoicePurchase> list = invoicePurchaseService.selectInvoicePurchaseList(invoicePurchase); + return getDataTable(list); + } + + /** + * 瀵煎嚭鍙戠エ淇℃伅鍒楄〃 + */ + @Log(title = "鍙戠エ淇℃伅", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(HttpServletResponse response, InvoicePurchase invoicePurchase) { + List<InvoicePurchase> list = invoicePurchaseService.selectInvoicePurchaseList(invoicePurchase); + ExcelUtil<InvoicePurchase> util = new ExcelUtil<InvoicePurchase>(InvoicePurchase.class); + util.exportExcel(response, list, "鍙戠エ淇℃伅鏁版嵁"); + } + + /** + * 鏂板淇敼鍙戠エ淇℃伅 + */ + @Log(title = "鍙戠エ淇℃伅", businessType = BusinessType.INSERT) + @PostMapping ("/addOrUpdateInvoice") + public AjaxResult addOrUpdateInvoice(@RequestBody InvoicePurchase invoicePurchase) { + return toAjax(invoicePurchaseService.addOrUpdateInvoice(invoicePurchase)); + } + + /** + * 鍒犻櫎鍙戠エ淇℃伅 + */ + @Log(title = "鍙戠エ淇℃伅", businessType = BusinessType.DELETE) + @DeleteMapping("/delInvoice") + public AjaxResult remove(@RequestBody Long[] ids) { + return toAjax(invoicePurchaseService.delInvoice(ids)); + } +} diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java index 1e210f0..3eddb4c 100644 --- a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java +++ b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java @@ -69,7 +69,7 @@ } /** - * 鏌ヨ閿�鍞彴璐﹀拰浜у搧鐖跺瓙鍒楄〃 + * 鏌ヨ閲囪喘鍙拌处鍜屼骇鍝佺埗瀛愬垪琛� */ @GetMapping("/getPurchaseById") public PurchaseLedgerDto getPurchaseById(PurchaseLedgerDto purchaseLedgerDto) { diff --git a/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseDto.java b/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseDto.java new file mode 100644 index 0000000..8a51b96 --- /dev/null +++ b/src/main/java/com/ruoyi/purchase/dto/InvoicePurchaseDto.java @@ -0,0 +1,7 @@ +package com.ruoyi.purchase.dto; + +import lombok.Data; + +@Data +public class InvoicePurchaseDto { +} diff --git a/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java b/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java index 6a9b1e8..cddb7b8 100644 --- a/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java +++ b/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java @@ -91,6 +91,10 @@ private List<String> tempFileIds; private List<SalesLedgerFile> SalesLedgerFiles; + /** + * 涓氬姟鍛樻墜鏈哄彿 + */ + private String phoneNumber; /** * 涓氬姟鍛榠d diff --git a/src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java b/src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java new file mode 100644 index 0000000..39f245a --- /dev/null +++ b/src/main/java/com/ruoyi/purchase/mapper/InvoicePurchaseMapper.java @@ -0,0 +1,14 @@ +package com.ruoyi.purchase.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.purchase.pojo.InvoicePurchase; + +/** + * 鍙戠エ淇℃伅Mapper鎺ュ彛 + * + * @author ruoyi + * @date 2025-05-14 + */ +public interface InvoicePurchaseMapper extends BaseMapper<InvoicePurchase> { +} diff --git a/src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java b/src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java index 1328588..dc2b362 100644 --- a/src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java +++ b/src/main/java/com/ruoyi/purchase/mapper/PurchaseLedgerMapper.java @@ -3,6 +3,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.ruoyi.purchase.pojo.PurchaseLedger; +import org.apache.ibatis.annotations.Param; + +import java.math.BigDecimal; /** * 閲囪喘鍙拌处Mapper鎺ュ彛 @@ -12,4 +15,5 @@ */ public interface PurchaseLedgerMapper extends BaseMapper<PurchaseLedger> { + int updateContractAmountById(@Param("id") Long id, @Param("totalTaxInclusiveAmount") BigDecimal totalTaxInclusiveAmount); } diff --git a/src/main/java/com/ruoyi/purchase/pojo/InvoicePurchase.java b/src/main/java/com/ruoyi/purchase/pojo/InvoicePurchase.java new file mode 100644 index 0000000..5097798 --- /dev/null +++ b/src/main/java/com/ruoyi/purchase/pojo/InvoicePurchase.java @@ -0,0 +1,98 @@ +package com.ruoyi.purchase.pojo; + +import java.math.BigDecimal; +import java.util.Date; + +import com.baomidou.mybatisplus.annotation.*; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.ruoyi.framework.aspectj.lang.annotation.Excel; +import lombok.Data; + +/** + * 鍙戠エ淇℃伅瀵硅薄 invoice_purchase + * + * @author ruoyi + * @date 2025-05-14 + */ +@TableName("invoice_purchase") +@Data +public class InvoicePurchase { + private static final long serialVersionUID = 1L; + + /** + * 涓婚敭ID + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 閲囪喘鍚堝悓鍙� + */ + @Excel(name = "閲囪喘鍚堝悓鍙�") + private String purchaseContractNo; + + /** + * 閿�鍞悎鍚屽彿 + */ + @Excel(name = "閿�鍞悎鍚屽彿") + private String salesContractNo; + + /** + * 渚涘簲鍟嗗悕绉� + */ + @Excel(name = "渚涘簲鍟嗗悕绉�") + private String supplierName; + + /** + * 鍙戠エ鍙� + */ + @Excel(name = "鍙戠エ鍙�") + private String invoiceNumber; + + /** + * 鍙戠エ閲戦锛堝厓锛� + */ + @Excel(name = "鍙戠エ閲戦", readConverterExp = "鍏�=") + private BigDecimal invoiceAmount; + + /** + * 绋庣巼 + */ + @Excel(name = "绋庣巼") + private BigDecimal taxRate; + + /** + * 寮�绁ㄤ汉 + */ + @Excel(name = "寮�绁ㄤ汉") + private String issuer; + + /** + * 寮�绁ㄦ棩鏈� + */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "寮�绁ㄦ棩鏈�", width = 30, dateFormat = "yyyy-MM-dd") + private Date issueDate; + + /** + * 鍙戠エ鏂囦欢锛圥DF鏍煎紡锛� + */ + @Excel(name = "鍙戠エ鏂囦欢", readConverterExp = "P=DF鏍煎紡") + private String invoiceFile; + + /** + * 鍒涘缓鏃堕棿 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date createdAt; + + /** + * 鏇存柊鏃堕棿 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date updatedAt; + + @TableField(fill = FieldFill.INSERT) + private Long tenantId; + +} diff --git a/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java b/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java index b74d863..1452949 100644 --- a/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java +++ b/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java @@ -1,5 +1,6 @@ package com.ruoyi.purchase.pojo; +import java.math.BigDecimal; import java.util.Date; import com.baomidou.mybatisplus.annotation.*; @@ -91,6 +92,11 @@ */ private Long salesLedgerId; + /** + * 鍚堝悓閲戦锛堜骇鍝佸惈绋庢�讳环锛� + */ + private BigDecimal contractAmount; + @TableField(fill = FieldFill.INSERT) private Long tenantId; diff --git a/src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java b/src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java new file mode 100644 index 0000000..ae99e9d --- /dev/null +++ b/src/main/java/com/ruoyi/purchase/service/IInvoicePurchaseService.java @@ -0,0 +1,21 @@ +package com.ruoyi.purchase.service; + + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.purchase.pojo.InvoicePurchase; + +import java.util.List; + +/** + * 鍙戠エ淇℃伅Service鎺ュ彛 + * + * @author ruoyi + * @date 2025-05-14 + */ +public interface IInvoicePurchaseService extends IService<InvoicePurchase> { + List<InvoicePurchase> selectInvoicePurchaseList(InvoicePurchase invoicePurchase); + + int delInvoice(Long[] ids); + + int addOrUpdateInvoice(InvoicePurchase invoicePurchase); +} diff --git a/src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java new file mode 100644 index 0000000..f9a2487 --- /dev/null +++ b/src/main/java/com/ruoyi/purchase/service/impl/InvoicePurchaseServiceImpl.java @@ -0,0 +1,45 @@ +package com.ruoyi.purchase.service.impl; + + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.ruoyi.purchase.mapper.InvoicePurchaseMapper; +import com.ruoyi.purchase.pojo.InvoicePurchase; +import com.ruoyi.purchase.service.IInvoicePurchaseService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; + +/** + * 鍙戠エ淇℃伅Service涓氬姟灞傚鐞� + * + * @author ruoyi + * @date 2025-05-14 + */ +@Service +@AllArgsConstructor +public class InvoicePurchaseServiceImpl extends ServiceImpl<InvoicePurchaseMapper, InvoicePurchase> implements IInvoicePurchaseService { + + private InvoicePurchaseMapper invoicePurchaseMapper; + + @Override + public List<InvoicePurchase> selectInvoicePurchaseList(InvoicePurchase invoicePurchase) { + return invoicePurchaseMapper.selectList(new LambdaQueryWrapper<>()); + } + + @Override + public int delInvoice(Long[] ids) { + return invoicePurchaseMapper.deleteBatchIds(Arrays.asList(ids)); + } + + @Override + public int addOrUpdateInvoice(InvoicePurchase invoicePurchase) { + if (invoicePurchase.getId() == null) { + return invoicePurchaseMapper.insert(invoicePurchase); + } else { + return invoicePurchaseMapper.updateById(invoicePurchase); + } + } +} diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java index 1074d31..f49faf8 100644 --- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java +++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java @@ -28,6 +28,7 @@ import org.springframework.stereotype.Service; import java.io.IOException; +import java.math.BigDecimal; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -108,7 +109,6 @@ List<SalesLedgerProduct> productList = purchaseLedgerDto.getProductData(); if (productList != null && !productList.isEmpty()) { handleSalesLedgerProducts(purchaseLedger.getId(), productList, purchaseLedgerDto.getType()); - } // 5. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰� @@ -141,6 +141,18 @@ salesLedgerProduct.setType(type); salesLedgerProductMapper.insert(salesLedgerProduct); } + } + + // 璁$畻鎬诲惈绋庨噾棰� + BigDecimal totalTaxInclusiveAmount = products.stream() + .map(SalesLedgerProduct::getTaxInclusiveTotalPrice) + .filter(Objects::nonNull) + .reduce(BigDecimal.ZERO, BigDecimal::add); + + // 鏇存柊涓昏〃鐨勬�婚噾棰濆瓧娈� + if (salesLedgerId != null) { + // 鐩存帴鏇存柊鎸囧畾ID鐨勮褰曠殑contractAmount瀛楁涓簍otalTaxInclusiveAmount + purchaseLedgerMapper.updateContractAmountById(salesLedgerId, totalTaxInclusiveAmount); } } @@ -256,9 +268,6 @@ // 鑾峰彇鍘熷鏌ヨ缁撴灉 List<Map<String, Object>> result = purchaseLedgerMapper.selectMaps(queryWrapper); - - //鏌ヨ閿�鍞悎鍚屽彿 - // 灏嗕笅鍒掔嚎鍛藉悕杞崲涓洪┘宄板懡鍚� return result.stream().map(map -> map.entrySet().stream() diff --git a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java index ef3bc4d..4e39558 100644 --- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java +++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java @@ -59,6 +59,7 @@ ticketRegistration.setPurchaseContractNumber(purchaseLedger.getPurchaseContractNumber()); ticketRegistration.setBusinessPerson(sysUser.getNickName()); ticketRegistration.setTenantId(purchaseLedger.getTenantId()); + ticketRegistration.setContractAmount(purchaseLedger.getContractAmount()); // 澶勭悊瀛愯〃鏁版嵁 List<SalesLedgerProduct> productData = ticketRegistrationDto.getProductData(); diff --git a/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml new file mode 100644 index 0000000..f007228 --- /dev/null +++ b/src/main/resources/mapper/purchase/PurchaseLedgerMapper.xml @@ -0,0 +1,12 @@ +<?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.purchase.mapper.PurchaseLedgerMapper"> + + <update id="updateContractAmountById"> + UPDATE purchase_ledger + SET contract_amount = #{totalTaxInclusiveAmount} + WHERE id = #{id} + </update> +</mapper> \ No newline at end of file -- Gitblit v1.9.3