From 4b6ed9aec826d49abc239f8d768bfecb91eceabc Mon Sep 17 00:00:00 2001 From: chenrui <1187576398@qq.com> Date: 星期一, 26 五月 2025 10:36:01 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/product-inventory-management-after --- src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java | 9 src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java | 39 +++ src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java | 124 +++++++++++ src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java | 2 src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java | 5 src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java | 18 + src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java | 13 + src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java | 103 ++++++++- src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java | 14 + src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java | 35 ++ src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java | 6 src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java | 101 +++++--- src/main/java/com/ruoyi/purchase/service/IProductRecordService.java | 18 + src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java | 115 +++++++++- src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java | 2 src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java | 14 + src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml | 16 17 files changed, 545 insertions(+), 89 deletions(-) diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java index 33926e8..9d8f992 100644 --- a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java +++ b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java @@ -95,10 +95,18 @@ } /** + * 鏍规嵁id鏌ヨ閲囪喘鍚堝悓鍙� + */ + @GetMapping("/getPurchaseNoById") + public AjaxResult getPurchaseNoById(Long id) { + return AjaxResult.success(purchaseLedgerService.getPurchaseNoById(id)); + } + + /** * 鏍规嵁閲囪喘鍚堝悓鍙锋煡璇骇鍝� */ @GetMapping("/getProduct") - public List getProduct(PurchaseLedgerDto purchaseLedgerDto){ + public List getProduct(PurchaseLedgerDto purchaseLedgerDto) { return purchaseLedgerService.getProduct(purchaseLedgerDto); } @@ -106,7 +114,7 @@ * 鏍规嵁閲囪喘鍚堝悓鍙锋煡璇骇鍝� */ @GetMapping("/getInfo") - public PurchaseLedgerDto getInfo(PurchaseLedgerDto purchaseLedgerDto){ - return purchaseLedgerService.getInfo(purchaseLedgerDto); + public AjaxResult getInfo(PurchaseLedgerDto purchaseLedgerDto) { + return AjaxResult.success(purchaseLedgerService.getInfo(purchaseLedgerDto)); } } diff --git a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java index 0607f3b..afb3ee2 100644 --- a/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java +++ b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java @@ -7,7 +7,9 @@ import com.ruoyi.framework.web.domain.AjaxResult; import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.purchase.dto.TicketRegistrationDto; +import com.ruoyi.purchase.pojo.ProductRecord; import com.ruoyi.purchase.pojo.TicketRegistration; +import com.ruoyi.purchase.service.IProductRecordService; import com.ruoyi.purchase.service.ITicketRegistrationService; import com.ruoyi.sales.service.ICommonFileService; import lombok.AllArgsConstructor; @@ -20,7 +22,7 @@ /** * 鏉ョエ鐧昏Controller - * + * * @author ruoyi * @date 2025-05-13 */ @@ -33,12 +35,13 @@ private ICommonFileService commonFileService; + private IProductRecordService productRecordService; + /** * 鏌ヨ鏉ョエ鐧昏鍒楄〃 */ @GetMapping("/list") - public TableDataInfo list(TicketRegistration ticketRegistration) - { + public TableDataInfo list(TicketRegistration ticketRegistration) { startPage(); List<TicketRegistration> list = ticketRegistrationService.selectTicketRegistrationList(ticketRegistration); return getDataTable(list); @@ -49,8 +52,7 @@ */ @Log(title = "鏉ョエ鐧昏", businessType = BusinessType.EXPORT) @PostMapping("/export") - public void export(HttpServletResponse response, TicketRegistration ticketRegistration) - { + public void export(HttpServletResponse response, TicketRegistration ticketRegistration) { List<TicketRegistration> list = ticketRegistrationService.selectTicketRegistrationList(ticketRegistration); ExcelUtil<TicketRegistration> util = new ExcelUtil<TicketRegistration>(TicketRegistration.class); util.exportExcel(response, list, "鏉ョエ鐧昏鏁版嵁"); @@ -68,7 +70,7 @@ * 鏂板淇敼鏉ョエ鐧昏 */ @Log(title = "鏉ョエ鐧昏", businessType = BusinessType.INSERT) - @PostMapping ("/addOrUpdateRegistration") + @PostMapping("/addOrUpdateRegistration") public AjaxResult addOrUpdateRegistration(@RequestBody TicketRegistrationDto ticketRegistrationDto) throws IOException { return toAjax(ticketRegistrationService.addOrUpdateRegistration(ticketRegistrationDto)); } @@ -77,9 +79,8 @@ * 鍒犻櫎鏉ョエ鐧昏 */ @Log(title = "鏉ョエ鐧昏", businessType = BusinessType.DELETE) - @DeleteMapping("/delRegistration") - public AjaxResult delRegistration(@RequestBody Long[] ids) - { + @DeleteMapping("/delRegistration") + public AjaxResult delRegistration(@RequestBody Long[] ids) { return toAjax(ticketRegistrationService.delRegistration(ids)); } @@ -92,4 +93,20 @@ } } + /** + * 鏌ヨ浜у搧淇℃伅寮�绁ㄨ褰曞垪琛� + */ + @GetMapping("/productRecordList") + public List<ProductRecord> productRecordList(TicketRegistrationDto ticketRegistrationDto) { + List<ProductRecord> list = productRecordService.selectProductRecordList(ticketRegistrationDto); + return list; + } + + /** + * 鏌ヨ鍙戠エ鍙� + */ + @GetMapping("/getTicketNo") + public AjaxResult getTicketNo(TicketRegistrationDto ticketRegistrationDto) { + return AjaxResult.success(ticketRegistrationService.getTicketNo(ticketRegistrationDto)); + } } diff --git a/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java b/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java index b2db4f4..e7acb12 100644 --- a/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java +++ b/src/main/java/com/ruoyi/purchase/dto/PaymentRegistrationDto.java @@ -30,5 +30,8 @@ private BigDecimal unPaymentAmount; // 绋庣巼 - private BigDecimal taxRate; + private String taxRate; + + // 鐧昏浜� + private String registrant; } diff --git a/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java b/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java index dcc8b06..71c56e2 100644 --- a/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java +++ b/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java @@ -5,6 +5,7 @@ import com.ruoyi.sales.pojo.SalesLedgerProduct; import lombok.Data; +import java.math.BigDecimal; import java.util.Date; import java.util.List; @@ -116,4 +117,21 @@ * 浜у搧瑙勬牸id */ private Long productModelId; + + /** + * 鍙戠エ鍙� + */ + private String invoiceNumber; + + /** + * 鍙戠エ閲戦锛堝厓锛� + */ + private BigDecimal invoiceAmount; + + /** + * 鏉ョエ鐧昏id + */ + private Long ticketRegistrationId; + + } diff --git a/src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java b/src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java index 3676003..1f5bf55 100644 --- a/src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java +++ b/src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java @@ -1,13 +1,20 @@ package com.ruoyi.purchase.dto; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.purchase.pojo.TicketRegistration; import com.ruoyi.sales.pojo.CommonFile; import com.ruoyi.sales.pojo.SalesLedgerProduct; import lombok.Data; import java.util.List; +/** + * 鏉ョエ鐧昏琛� + */ + @Data -public class TicketRegistrationDto { +@TableName("ticket_registration") +public class TicketRegistrationDto extends TicketRegistration { /** * 涓婚敭ID diff --git a/src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java b/src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java new file mode 100644 index 0000000..d4570fb --- /dev/null +++ b/src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java @@ -0,0 +1,14 @@ +package com.ruoyi.purchase.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.ruoyi.purchase.pojo.ProductRecord; + +/** + * 閲囪喘鍙拌处浜у搧寮�绁ㄨ褰昅apper鎺ュ彛 + * + * @author ruoyi + * @date 2025-05-23 + */ +public interface ProductRecordMapper extends BaseMapper<ProductRecord> { + +} diff --git a/src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java b/src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java index 403c424..d117038 100644 --- a/src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java +++ b/src/main/java/com/ruoyi/purchase/pojo/PaymentRegistration.java @@ -43,7 +43,7 @@ /** * 鍙戠エid */ - private Long invoicePurchaseId; + private Long ticketRegistrationId; /** * 鏈浠樻閲戦 @@ -54,6 +54,11 @@ * 浠樻褰㈠紡 */ private String paymentMethod; + + /** + * 绋庣巼 + */ + private String taxRate; /** * 鐧昏浜� @@ -70,6 +75,12 @@ private Date paymentDate; /** + * 鐧昏鏃ユ湡 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date registrationtDate; + + /** * 鍒涘缓鏃ユ湡 */ @TableField(fill = FieldFill.INSERT) diff --git a/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java b/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java new file mode 100644 index 0000000..bc0a5e6 --- /dev/null +++ b/src/main/java/com/ruoyi/purchase/pojo/ProductRecord.java @@ -0,0 +1,124 @@ +package com.ruoyi.purchase.pojo; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; + +import java.math.BigDecimal; +import java.util.Date; + +/** + * 閲囪喘鍙拌处浜у搧寮�绁ㄨ褰曞璞� product_record + * + * @author ruoyi + * @date 2025-05-23 + */ +@Data +@TableName("product_record") +public class ProductRecord { + private static final long serialVersionUID = 1L; + + /** + * 涓婚敭id + */ + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 鏉ョエ鐧昏id + */ + private Long ticketRegistrationId; + + /** + * 閲囪喘鍙拌处id + */ + private Long purchaseLedgerId; + + /** + * 浜у搧澶х被 + */ + private String productCategory; + + /** + * 瑙勬牸鍨嬪彿 + */ + private String specificationModel; + + /** + * 鍗曚綅 + */ + private String unit; + + /** + * 鏁伴噺 + */ + private BigDecimal quantity; + + /** + * 绋庣巼 + */ + private BigDecimal taxRate; + + /** + * 鍚◣鍗曚环 + */ + private BigDecimal taxInclusiveUnitPrice; + + /** + * 鍚◣鎬讳环 + */ + private BigDecimal taxInclusiveTotalPrice; + + /** + * 涓嶅惈绋庢�讳环 + */ + private BigDecimal taxExclusiveTotalPrice; + + /** + * 鍙戠エ绫诲瀷 + */ + private String invoiceType; + + /** + * 1.閿�鍞彴璐︼紝2.閲囪喘鍙拌处 + */ + private String type; + + /** + * 鏈鏉ョエ鏁� + */ + private Long ticketsNum; + + /** + * 鏈鏉ョエ閲戦(鍏�) + */ + private BigDecimal ticketsAmount; + + /** + * 鏈潵绁ㄦ暟 + */ + private Long futureTickets; + + /** + * 鏈潵绁ㄩ噾棰�(鍏�) + */ + private BigDecimal futureTicketsAmount; + + /** + * 浜у搧id + */ + private Long productId; + + /** + * 鍨嬪彿id + */ + private Long productModelId; + + /** + * 鍒涘缓鏃堕棿 + */ + @JsonFormat(pattern = "yyyy-MM-dd") + private Date createdAt; +} diff --git a/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java b/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java index 41d6171..a297f3f 100644 --- a/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java +++ b/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java @@ -78,6 +78,12 @@ private BigDecimal invoiceAmount; /** + * 寮�绁ㄤ汉ID + */ + @Excel(name = "寮�绁ㄤ汉") + private String issUerId; + + /** * 寮�绁ㄤ汉 */ @Excel(name = "寮�绁ㄤ汉") diff --git a/src/main/java/com/ruoyi/purchase/service/IProductRecordService.java b/src/main/java/com/ruoyi/purchase/service/IProductRecordService.java new file mode 100644 index 0000000..0eee184 --- /dev/null +++ b/src/main/java/com/ruoyi/purchase/service/IProductRecordService.java @@ -0,0 +1,18 @@ +package com.ruoyi.purchase.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.ruoyi.purchase.dto.TicketRegistrationDto; +import com.ruoyi.purchase.pojo.ProductRecord; + +import java.util.List; + +/** + * 閲囪喘鍙拌处浜у搧寮�绁ㄨ褰昐ervice鎺ュ彛 + * + * @author ruoyi + * @date 2025-05-23 + */ +public interface IProductRecordService extends IService<ProductRecord> { + + List<ProductRecord> selectProductRecordList(TicketRegistrationDto ticketRegistrationDto); +} diff --git a/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java b/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java index 1607cb6..428ec82 100644 --- a/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java +++ b/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java @@ -29,4 +29,6 @@ PurchaseLedgerDto getInfo(PurchaseLedgerDto purchaseLedgerDto); List getPurchasesNo(); + + PurchaseLedgerDto getPurchaseNoById(Long id); } diff --git a/src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java b/src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java index ceb5b9b..502f659 100644 --- a/src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java +++ b/src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java @@ -22,4 +22,6 @@ int delRegistration(Long[] ids); TicketRegistrationDto getRegistrationById(TicketRegistrationDto ticketRegistrationDto); + + List getTicketNo(TicketRegistrationDto ticketRegistrationDto); } diff --git a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java index e858038..2d78a62 100644 --- a/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java +++ b/src/main/java/com/ruoyi/purchase/service/impl/PaymentRegistrationServiceImpl.java @@ -2,6 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.basic.mapper.SupplierManageMapper; import com.ruoyi.basic.pojo.SupplierManage; @@ -10,18 +11,17 @@ import com.ruoyi.framework.security.LoginUser; import com.ruoyi.purchase.dto.PaymentLedgerDto; import com.ruoyi.purchase.dto.PaymentRegistrationDto; -import com.ruoyi.purchase.mapper.InvoicePurchaseMapper; -import com.ruoyi.purchase.mapper.PaymentRegistrationMapper; -import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; -import com.ruoyi.purchase.pojo.InvoicePurchase; +import com.ruoyi.purchase.mapper.*; import com.ruoyi.purchase.pojo.PaymentRegistration; +import com.ruoyi.purchase.pojo.ProductRecord; import com.ruoyi.purchase.pojo.PurchaseLedger; +import com.ruoyi.purchase.pojo.TicketRegistration; import com.ruoyi.purchase.service.IPaymentRegistrationService; import com.ruoyi.sales.mapper.SalesLedgerMapper; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.pojo.SalesLedger; import com.ruoyi.sales.pojo.SalesLedgerProduct; -import org.springframework.beans.factory.annotation.Autowired; +import lombok.AllArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; @@ -37,24 +37,23 @@ * @date 2025-05-15 */ @Service +@AllArgsConstructor public class PaymentRegistrationServiceImpl extends ServiceImpl<PaymentRegistrationMapper, PaymentRegistration> implements IPaymentRegistrationService { - @Autowired private PaymentRegistrationMapper paymentRegistrationMapper; - @Autowired private PurchaseLedgerMapper purchaseLedgerMapper; - @Autowired private InvoicePurchaseMapper invoicePurchaseMapper; - @Autowired private SalesLedgerMapper salesLedgerMapper; - @Autowired private SupplierManageMapper supplierManageMapper; - @Autowired private SalesLedgerProductMapper salesLedgerProductMapper; + + private TicketRegistrationMapper ticketRegistrationMapper; + + private ProductRecordMapper productRecordMapper; /** * 鏌ヨ浠樻鐧昏 @@ -78,7 +77,7 @@ List<PaymentRegistrationDto> list = paymentRegistrationMapper.selectPaymentRegistrationList(paymentRegistrationDto); for (PaymentRegistrationDto registrationDto : list) { List<PaymentRegistration> paymentRegistrations = paymentRegistrationMapper.selectList(new QueryWrapper<PaymentRegistration>() - .eq("invoice_purchase_id", registrationDto.getInvoicePurchaseId())); + .eq("ticket_registration_id", registrationDto.getTicketRegistrationId())); BigDecimal total = paymentRegistrations.stream().map(PaymentRegistration::getCurrentPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add); registrationDto.setUnPaymentAmount(registrationDto.getInvoiceAmount().subtract(total)); } @@ -103,25 +102,24 @@ paymentRegistration.setSaleLedgerId(salesLedger.getId()); paymentRegistration.setSupplierId(purchaseLedger.getSupplierId()); - List<InvoicePurchase> invoicePurchases = invoicePurchaseMapper.selectList(new QueryWrapper<InvoicePurchase>(). - eq("purchase_contract_no", purchaseLedger.getPurchaseContractNumber())); - if (invoicePurchases == null || invoicePurchases.size() == 0) { + TicketRegistration tr = ticketRegistrationMapper.selectOne(new LambdaQueryWrapper<TicketRegistration>().eq(TicketRegistration::getId, paymentRegistration.getTicketRegistrationId())); + + if (tr == null) { throw new RuntimeException("鍏宠仈鍙戠エ涓嶅瓨鍦�"); } - paymentRegistration.setInvoicePurchaseId(invoicePurchases.get(0).getId()); List<PaymentRegistration> paymentRegistrations = paymentRegistrationMapper.selectList(new QueryWrapper<PaymentRegistration>() - .eq("invoice_purchase_id", invoicePurchases.get(0).getId())); + .eq("ticket_registration_id", tr.getId())); BigDecimal total = paymentRegistrations.stream().map(PaymentRegistration::getCurrentPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add); - if (total.add(paymentRegistration.getCurrentPaymentAmount()).compareTo(invoicePurchases.get(0).getInvoiceAmount()) > 0) { + if (total.add(paymentRegistration.getCurrentPaymentAmount()).compareTo(tr.getInvoiceAmount()) > 0) { throw new RuntimeException("浠樻閲戦瓒呭嚭鍙戠エ閲戦"); } - LoginUser loginUser = SecurityUtils.getLoginUser(); Integer tenantId = loginUser.getTenantId(); paymentRegistration.setTenantId(tenantId.longValue()); + paymentRegistration.setRegistrantId(loginUser.getUserId()); paymentRegistration.setCreateTime(DateUtils.getNowDate()); paymentRegistration.setUpdateTime(DateUtils.getNowDate()); return paymentRegistrationMapper.insert(paymentRegistration); @@ -135,13 +133,13 @@ */ @Override public int updatePaymentRegistration(PaymentRegistration paymentRegistration) { - InvoicePurchase invoicePurchase = invoicePurchaseMapper.selectById(paymentRegistration.getInvoicePurchaseId()); + TicketRegistration ticketRegistration = ticketRegistrationMapper.selectById(paymentRegistration.getTicketRegistrationId()); List<PaymentRegistration> paymentRegistrations = paymentRegistrationMapper.selectList(new QueryWrapper<PaymentRegistration>() - .eq("invoice_purchase_id", paymentRegistration.getInvoicePurchaseId()).ne("id", paymentRegistration.getId())); + .eq("ticket_registration_id", paymentRegistration.getTicketRegistrationId()).ne("id", paymentRegistration.getId())); BigDecimal total = paymentRegistrations.stream().map(PaymentRegistration::getCurrentPaymentAmount).reduce(BigDecimal.ZERO, BigDecimal::add); - if (total.add(paymentRegistration.getCurrentPaymentAmount()).compareTo(invoicePurchase.getInvoiceAmount()) > 0) { + if (total.add(paymentRegistration.getCurrentPaymentAmount()).compareTo(ticketRegistration.getInvoiceAmount()) > 0) { throw new RuntimeException("浠樻閲戦瓒呭嚭鍙戠エ閲戦"); } @@ -168,12 +166,11 @@ paymentRegistrationDto.setSupplierName(purchaseLedger.getSupplierName()); paymentRegistrationDto.setSupplierId(purchaseLedger.getSupplierId()); - List<InvoicePurchase> invoicePurchaseList = invoicePurchaseMapper.selectList(new QueryWrapper<InvoicePurchase>() - .eq("purchase_contract_no", purchaseLedger.getPurchaseContractNumber())); - if (invoicePurchaseList != null && invoicePurchaseList.size() > 0) { - paymentRegistrationDto.setInvoiceNumber(invoicePurchaseList.get(0).getInvoiceNumber()); - paymentRegistrationDto.setInvoiceAmount(invoicePurchaseList.get(0).getInvoiceAmount()); - paymentRegistrationDto.setTaxRate(invoicePurchaseList.get(0).getTaxRate()); + List<TicketRegistration> ticketRegistrations = ticketRegistrationMapper.selectList(new QueryWrapper<TicketRegistration>() + .eq("purchase_contract_number", purchaseLedger.getPurchaseContractNumber())); + if (ticketRegistrations != null && ticketRegistrations.size() > 0) { + paymentRegistrationDto.setInvoiceNumber(ticketRegistrations.get(0).getInvoiceNumber()); + paymentRegistrationDto.setInvoiceAmount(ticketRegistrations.get(0).getInvoiceAmount()); } return paymentRegistrationDto; } @@ -197,18 +194,36 @@ // 搴斾粯閲戦 BigDecimal payableAmount = BigDecimal.ZERO; - List<SalesLedger> salesLedgers = salesLedgerMapper.selectList(new QueryWrapper<SalesLedger>().eq("customer_id", supplierManage.getId())); - if (salesLedgers != null && salesLedgers.size() > 0) { + List<PurchaseLedger> purchaseLedgers = purchaseLedgerMapper.selectList(new QueryWrapper<PurchaseLedger>().eq("supplier_id", supplierManage.getId())); + if (purchaseLedgers != null && purchaseLedgers.size() > 0) { List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(new QueryWrapper<SalesLedgerProduct>() - .in("sales_ledger_id", salesLedgers.stream().map(SalesLedger::getId).collect(Collectors.toList()))); + .in("sales_ledger_id", purchaseLedgers.stream().map(PurchaseLedger::getId).collect(Collectors.toList()))); // 搴斾粯閲戦 payableAmount = salesLedgerProducts.stream().map(SalesLedgerProduct::getTaxInclusiveTotalPrice).reduce(BigDecimal.ZERO, BigDecimal::add); } - // 寮�绁ㄩ噾棰� - BigDecimal invoiceAmount = salesLedgers.stream().map(SalesLedger::getContractAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal invoiceAmount = BigDecimal.ZERO; + List<TicketRegistration> ticketRegistrations = Collections.emptyList(); + // 澧炲姞绌哄�兼鏌ワ紝閬垮厤NullPointerException + if (CollectionUtils.isNotEmpty(purchaseLedgers)) { + Long[] ids = purchaseLedgers.stream() + .map(PurchaseLedger::getId) + .toArray(Long[]::new); + + // 妫�鏌ユ暟缁勬槸鍚︽湁鍏冪礌 + if (ids.length > 0) { + ticketRegistrations = ticketRegistrationMapper.selectList( + new LambdaQueryWrapper<TicketRegistration>() + .in(TicketRegistration::getPurchaseLedgerId, ids) + ); + } + } + if (ticketRegistrations != null && ticketRegistrations.size() > 0) { + // 鏉ョエ閲戦 + invoiceAmount = ticketRegistrations.stream().map(TicketRegistration::getInvoiceAmount).reduce(BigDecimal.ZERO, BigDecimal::add); + } // 浠樻閲戦 List<PaymentRegistration> paymentRegistrations = paymentRegistrationMapper.selectList(new QueryWrapper<PaymentRegistration>() .eq("supplier_id", supplierManage.getId())); @@ -226,21 +241,25 @@ List<Map<String, Object>> details = new ArrayList<>(); for (PaymentRegistration paymentRegistration : paymentRegistrations) { Map<String, Object> detail = new HashMap<>(); - detail.put("voteCount", 1); // 绁ㄦ暟锛屾湭鐭ユ暟鎹簮锛屾殏鏃剁敤1 detail.put("paymentAmount", paymentRegistration.getCurrentPaymentAmount()); // 浠樻閲戦 - InvoicePurchase invoicePurchase = invoicePurchaseMapper.selectById(paymentRegistration.getInvoicePurchaseId()); - detail.put("payableAmount", invoicePurchase.getInvoiceAmount()); // 搴斾粯閲戦 + TicketRegistration ticketRegistration = ticketRegistrationMapper.selectById(paymentRegistration.getTicketRegistrationId()); + detail.put("payableAmount", ticketRegistration.getInvoiceAmount()); // 搴斾粯閲戦 + BigDecimal voteCount = productRecordMapper.selectList( + new LambdaQueryWrapper<ProductRecord>() + .eq(ProductRecord::getTicketRegistrationId, ticketRegistration.getId())) + .stream() + .map(ProductRecord::getTicketsNum) + .map(BigDecimal::new) + .reduce(BigDecimal.ZERO, BigDecimal::add); + detail.put("voteCount", voteCount); // 绁ㄦ暟 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String formattedDate = sdf.format(paymentRegistration.getPaymentDate()); - detail.put("createTime", formattedDate); // 鍙戠敓鏃堕棿 + detail.put("paymentDate", formattedDate); // 鍙戠敓鏃堕棿 details.add(detail); } - - res.put("details", paymentRegistrations); - + res.put("details", details); result.add(res); } - return result; } } diff --git a/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java new file mode 100644 index 0000000..96f2ff0 --- /dev/null +++ b/src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java @@ -0,0 +1,39 @@ +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.dto.TicketRegistrationDto; +import com.ruoyi.purchase.mapper.ProductRecordMapper; +import com.ruoyi.purchase.pojo.ProductRecord; +import com.ruoyi.purchase.service.IProductRecordService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 閲囪喘鍙拌处浜у搧寮�绁ㄨ褰昐ervice涓氬姟灞傚鐞� + * + * @author ruoyi + * @date 2025-05-23 + */ +@Service +@AllArgsConstructor +public class ProductRecordServiceImpl extends ServiceImpl<ProductRecordMapper, ProductRecord> implements IProductRecordService { + + private ProductRecordMapper productRecordMapper; + + + /** + * 鏌ヨ閲囪喘鍙拌处浜у搧寮�绁ㄨ褰� + * + * @param ticketRegistrationDto 閲囪喘鍙拌处浜у搧寮�绁ㄨ褰曚富閿� + * @return 閲囪喘鍙拌处浜у搧寮�绁ㄨ褰� + */ + @Override + public List<ProductRecord> selectProductRecordList(TicketRegistrationDto ticketRegistrationDto) { + return productRecordMapper.selectList(new LambdaQueryWrapper<ProductRecord>().eq(ProductRecord::getTicketRegistrationId, ticketRegistrationDto.getId()) + .eq(ProductRecord::getType, "2")); + } + +} 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 af2171e..3be1a26 100644 --- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java +++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java @@ -17,8 +17,12 @@ import com.ruoyi.project.system.domain.SysUser; import com.ruoyi.project.system.mapper.SysUserMapper; import com.ruoyi.purchase.dto.PurchaseLedgerDto; +import com.ruoyi.purchase.mapper.ProductRecordMapper; import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; +import com.ruoyi.purchase.mapper.TicketRegistrationMapper; +import com.ruoyi.purchase.pojo.ProductRecord; import com.ruoyi.purchase.pojo.PurchaseLedger; +import com.ruoyi.purchase.pojo.TicketRegistration; import com.ruoyi.purchase.service.IPurchaseLedgerService; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.mapper.SalesLedgerMapper; @@ -73,6 +77,10 @@ private final ProductModelMapper productModelMapper; + private final TicketRegistrationMapper ticketRegistrationMapper; + + private final ProductRecordMapper productRecordMapper; + @Value("${file.upload-dir}") private String uploadDir; @@ -118,7 +126,7 @@ // 4. 澶勭悊瀛愯〃鏁版嵁 List<SalesLedgerProduct> productList = purchaseLedgerDto.getProductData(); if (productList != null && !productList.isEmpty()) { - handleSalesLedgerProducts(purchaseLedger.getId(), purchaseLedgerDto.getProductId(), purchaseLedgerDto.getProductModelId(), productList, purchaseLedgerDto.getType()); + handleSalesLedgerProducts(purchaseLedger.getId(), productList, purchaseLedgerDto.getType()); } // 5. 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰� @@ -129,19 +137,52 @@ return 1; } - private void handleSalesLedgerProducts(Long salesLedgerId, Long productId, Long productModelId, List<SalesLedgerProduct> products, Integer type) { - Product pro = productMapper.selectById(productId); - ProductModel productModel = productModelMapper.selectById(productModelId); + private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) { + if (products == null || products.isEmpty()) { + throw new BaseException("浜у搧淇℃伅涓嶅瓨鍦�"); + } - // 鎸塈D鍒嗙粍锛屽尯鍒嗘柊澧炲拰鏇存柊鐨勮褰� + // 鎻愬墠鏀堕泦鎵�鏈夐渶瑕佹煡璇㈢殑ID + Set<Long> productIds = products.stream() + .map(SalesLedgerProduct::getProductId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + Set<Long> modelIds = products.stream() + .map(SalesLedgerProduct::getProductModelId) + .filter(Objects::nonNull) + .collect(Collectors.toSet()); + + // 涓�娆℃�ф煡璇骇鍝佸拰鍨嬪彿淇℃伅 + Map<Long, String> productMap = new HashMap<>(); + if (!productIds.isEmpty()) { + List<Product> productList = productMapper.selectBatchIds(productIds); + productList.forEach(p -> productMap.put(p.getId(), p.getProductName())); + } + + Map<Long, String> modelMap = new HashMap<>(); + if (!modelIds.isEmpty()) { + List<ProductModel> modelList = productModelMapper.selectBatchIds(modelIds); + modelList.forEach(m -> modelMap.put(m.getId(), m.getModel())); + } + + // 璁剧疆瀛楁 + for (SalesLedgerProduct product : products) { + product.setSalesLedgerId(salesLedgerId); + + Long productId = product.getProductId(); + if (productId != null && productMap.containsKey(productId)) { + product.setProductCategory(productMap.get(productId)); + } + + Long productModelId = product.getProductModelId(); + if (productModelId != null && modelMap.containsKey(productModelId)) { + product.setSpecificationModel(modelMap.get(productModelId)); + } + } + + // 鍒嗙粍澶勭悊 Map<Boolean, List<SalesLedgerProduct>> partitionedProducts = products.stream() - .peek(p -> { - p.setSalesLedgerId(salesLedgerId); - p.setProductId(productId); - p.setProductCategory(pro.getProductName()); - p.setProductModelId(productModelId); - p.setSpecificationModel(productModel.getModel()); - }) .collect(Collectors.partitioningBy(p -> p.getId() != null)); List<SalesLedgerProduct> updateList = partitionedProducts.get(true); @@ -248,6 +289,23 @@ @Override public int deletePurchaseLedgerByIds(Long[] ids) { + if (ids == null || ids.length == 0) { + throw new BaseException("璇烽�変腑鑷冲皯涓�鏉℃暟鎹�"); + } + // 鎵归噺鍒犻櫎鍏宠仈鐨勯噰璐彴璐︿骇鍝� + LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(SalesLedgerProduct::getSalesLedgerId, ids) + .eq(SalesLedgerProduct::getType, "2"); + salesLedgerProductMapper.delete(queryWrapper); + // 鎵归噺鍒犻櫎鍏宠仈鐨勯噰璐彴璐︾殑鏉ョエ鐧昏 + LambdaQueryWrapper<TicketRegistration> ticketRegistrationLambdaQueryWrapper = new LambdaQueryWrapper<>(); + ticketRegistrationLambdaQueryWrapper.in(TicketRegistration::getSalesLedgerId,ids); + ticketRegistrationMapper.delete(ticketRegistrationLambdaQueryWrapper); + // 鎵归噺鍒犻櫎鍏宠仈鐨勯噰璐彴璐︾殑鏉ョエ鐧昏璁板綍 + LambdaQueryWrapper<ProductRecord> productRecordLambdaQueryWrapper = new LambdaQueryWrapper<>(); + productRecordLambdaQueryWrapper.in(ProductRecord::getPurchaseLedgerId,ids); + productRecordMapper.delete(productRecordLambdaQueryWrapper); + // 鎵归噺鍒犻櫎閲囪喘鍙拌处 return purchaseLedgerMapper.deleteBatchIds(Arrays.asList(ids)); } @@ -315,8 +373,13 @@ queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId()) .eq(SalesLedgerProduct::getType, 2); List<SalesLedgerProduct> productList = salesLedgerProductMapper.selectList(queryWrapper); + productList.forEach(product -> { + product.setFutureTickets(product.getFutureTickets() != null ? product.getFutureTickets() : product.getQuantity().longValue()); + product.setFutureTicketsAmount(product.getFutureTicketsAmount() != null ? product.getFutureTicketsAmount() : product.getTaxInclusiveTotalPrice()); + product.setTicketsNum(null); + product.setTicketsAmount(null); + }); resultDto.setProductData(productList); - return resultDto; } @@ -336,6 +399,20 @@ ).collect(Collectors.toList()); } + @Override + public PurchaseLedgerDto getPurchaseNoById(Long id) { + PurchaseLedgerDto purchaseLedgerDto = new PurchaseLedgerDto(); + PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(id); + BeanUtils.copyProperties(purchaseLedger, purchaseLedgerDto); +// TicketRegistration ticketRegistration = ticketRegistrationMapper.selectOne(new LambdaQueryWrapper<TicketRegistration>().eq(TicketRegistration::getPurchaseLedgerId, id)); +// if (ticketRegistration != null) { +// purchaseLedgerDto.setInvoiceNumber(ticketRegistration.getInvoiceNumber()); +// purchaseLedgerDto.setInvoiceAmount(ticketRegistration.getInvoiceAmount()); +// purchaseLedgerDto.setTicketRegistrationId(ticketRegistration.getId()); +// } + return purchaseLedgerDto; + } + /** * 涓嬪垝绾垮懡鍚嶈浆椹煎嘲鍛藉悕 */ 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 ef4d278..c9d189f 100644 --- a/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java +++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java @@ -4,13 +4,16 @@ import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.exception.base.BaseException; +import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.other.mapper.TempFileMapper; import com.ruoyi.other.pojo.TempFile; import com.ruoyi.purchase.dto.TicketRegistrationDto; +import com.ruoyi.purchase.mapper.ProductRecordMapper; import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.mapper.TicketRegistrationMapper; +import com.ruoyi.purchase.pojo.ProductRecord; import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.purchase.pojo.TicketRegistration; import com.ruoyi.purchase.service.ITicketRegistrationService; @@ -23,6 +26,7 @@ import org.apache.commons.io.FilenameUtils; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import java.io.IOException; import java.math.BigDecimal; @@ -35,6 +39,7 @@ import java.time.format.DateTimeFormatter; import java.util.Arrays; import java.util.List; +import java.util.Map; import java.util.UUID; import java.util.stream.Collectors; @@ -59,6 +64,8 @@ private final TempFileMapper tempFileMapper; + private final ProductRecordMapper productRecordMapper; + @Value("${file.upload-dir}") private String uploadDir; @@ -67,38 +74,59 @@ public List<TicketRegistration> selectTicketRegistrationList(TicketRegistration ticketRegistration) { LambdaQueryWrapper<TicketRegistration> queryWrapper = new LambdaQueryWrapper<>(); if (StringUtils.isNotBlank(ticketRegistration.getPurchaseContractNumber())) { - queryWrapper.like(TicketRegistration::getPurchaseContractNumber, ticketRegistration.getPurchaseContractNumber()); + queryWrapper.like(TicketRegistration::getPurchaseContractNumber, ticketRegistration.getPurchaseContractNumber()) + .like(TicketRegistration::getSupplierName, ticketRegistration.getSupplierName()) + .eq(TicketRegistration::getIssueDate, ticketRegistration.getIssueDate()); } return ticketRegistrationMapper.selectList(queryWrapper); } @Override + @Transactional(rollbackFor = Exception.class) public int addOrUpdateRegistration(TicketRegistrationDto ticketRegistrationDto) throws IOException { + // 1. 鏌ヨ閲囪喘鍙拌处璁板綍 PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(ticketRegistrationDto.getPurchaseLedgerId()); + if (purchaseLedger == null) { + // 澶勭悊閲囪喘鍙拌处涓嶅瓨鍦ㄧ殑鎯呭喌锛屼緥濡傛姏鍑哄紓甯告垨杩斿洖閿欒 + throw new IllegalArgumentException("閲囪喘鍙拌处璁板綍涓嶅瓨鍦紝ID: " + ticketRegistrationDto.getPurchaseLedgerId()); + } + + // 3. 鍒涘缓鎴栨洿鏂扮エ鎹櫥璁板疄浣� TicketRegistration ticketRegistration = new TicketRegistration(); BeanUtils.copyProperties(ticketRegistrationDto, ticketRegistration); ticketRegistration.setPurchaseContractNumber(purchaseLedger.getPurchaseContractNumber()); ticketRegistration.setTenantId(purchaseLedger.getTenantId()); ticketRegistration.setContractAmount(purchaseLedger.getContractAmount()); - // 澶勭悊瀛愯〃鏁版嵁 + ticketRegistration.setSalesLedgerId(purchaseLedger.getSalesLedgerId()); + + // 4. 澶勭悊瀛愯〃鏁版嵁 List<SalesLedgerProduct> productData = ticketRegistrationDto.getProductData(); - if (productData != null && !productData.isEmpty()) { + if (CollectionUtils.isNotEmpty(productData)) { handleSalesLedgerProducts(purchaseLedger.getId(), productData, 2); } - // 鎵ц鎻掑叆鎴栨洿鏂版搷浣� - int i; - if (ticketRegistrationDto.getId() == null) { - i = ticketRegistrationMapper.insert(ticketRegistration); - } else { - i = ticketRegistrationMapper.updateById(ticketRegistration); - } + // 5. 鎵ц鎻掑叆鎴栨洿鏂版搷浣� + int rowsAffected = ticketRegistrationMapper.insert(ticketRegistration); + // 6. 澧炲姞閲囪喘鍙拌处浜у搧寮�绁ㄨ褰� + List<SalesLedgerProduct> salesLedgerProducts = ticketRegistrationDto.getProductData(); + if (CollectionUtils.isNotEmpty(salesLedgerProducts)){ + for (SalesLedgerProduct salesLedgerProduct : salesLedgerProducts) { + ProductRecord productRecord = new ProductRecord(); + productRecord.setTicketRegistrationId(ticketRegistration.getId()); + productRecord.setPurchaseLedgerId(ticketRegistrationDto.getPurchaseLedgerId()); + productRecord.setCreatedAt(DateUtils.getNowDate()); + BeanUtils.copyProperties(salesLedgerProduct,productRecord); + productRecord.setId(null); + productRecord.setType("2"); + productRecordMapper.insert(productRecord); + } + } // 杩佺Щ涓存椂鏂囦欢鍒版寮忕洰褰� if (ticketRegistrationDto.getTempFileIds() != null && !ticketRegistrationDto.getTempFileIds().isEmpty()) { migrateTempFilesToFormal(ticketRegistration.getId(), ticketRegistrationDto.getTempFileIds()); } - return i; + return rowsAffected; } @@ -195,8 +223,21 @@ .eq(SalesLedgerProduct::getType, 2); List<SalesLedgerProduct> productList = salesLedgerProductMapper.selectList(queryWrapper); resultDto.setProductData(productList); - return resultDto; + } + + @Override + public List getTicketNo(TicketRegistrationDto ticketRegistrationDto) { + LambdaQueryWrapper<TicketRegistration> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.select(TicketRegistration::getId,TicketRegistration::getInvoiceNumber,TicketRegistration::getInvoiceAmount) + .eq(TicketRegistration::getPurchaseLedgerId,ticketRegistrationDto.getId()); + List<Map<String, Object>> result = ticketRegistrationMapper.selectMaps(queryWrapper); + // 灏嗕笅鍒掔嚎鍛藉悕杞崲涓洪┘宄板懡鍚� + return result.stream().map(map -> map.entrySet().stream() + .collect(Collectors.toMap( + entry -> underlineToCamel(entry.getKey()), + Map.Entry::getValue)) + ).collect(Collectors.toList()); } private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) { @@ -216,11 +257,57 @@ // 鎵归噺鏇存柊锛堥渶瑕� MyBatis 鎻愪緵鎵归噺鏇存柊鏂规硶锛� if (!updateList.isEmpty()) { updateList.forEach(product -> { - product.setFutureTickets(product.getQuantity().subtract(new BigDecimal(product.getTicketsNum())).longValue()); - product.setFutureTicketsAmount(product.getTaxExclusiveTotalPrice().subtract(product.getTicketsAmount())); + // 闈炵┖鏍¢獙锛屼换涓�瀛楁涓虹┖鍒欐姏鍑哄紓甯� + if (product.getQuantity() == null) { + throw new BaseException("鏁伴噺涓嶈兘涓虹┖"); + } + if (product.getTicketsNum() == null) { + throw new BaseException("宸插紑绁ㄦ暟閲忎笉鑳戒负绌�"); + } + if (product.getTaxInclusiveTotalPrice() == null) { + throw new BaseException("鍚◣鎬讳环涓嶈兘涓虹┖"); + } + if (product.getTicketsAmount() == null) { + throw new BaseException("鏈鏉ョエ閲戦(鍏�)涓嶈兘涓虹┖"); + } + + // 璁$畻 futureTickets锛堢洿鎺ヤ娇鐢� BigDecimal 璁$畻锛岄伩鍏嶇簿搴︿涪澶憋級 + product.setFutureTickets( + product.getQuantity() + .subtract(BigDecimal.valueOf(product.getTicketsNum())) + .longValueExact() // 浣跨敤 exact 鏂规硶纭繚鏃犲皬鏁伴儴鍒� + ); + + // 璁$畻 futureTicketsAmount + product.setFutureTicketsAmount( + product.getTaxInclusiveTotalPrice() + .subtract(product.getTicketsAmount()) + ); product.setType(type); salesLedgerProductMapper.updateById(product); }); } } + + /** + * 涓嬪垝绾垮懡鍚嶈浆椹煎嘲鍛藉悕 + */ + private String underlineToCamel(String param) { + if (param == null || "".equals(param.trim())) { + return ""; + } + int len = param.length(); + StringBuilder sb = new StringBuilder(len); + for (int i = 0; i < len; i++) { + char c = param.charAt(i); + if (c == '_') { + if (++i < len) { + sb.append(Character.toUpperCase(param.charAt(i))); + } + } else { + sb.append(Character.toLowerCase(c)); + } + } + return sb.toString(); + } } diff --git a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml index 9f21eff..c4636e5 100644 --- a/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml +++ b/src/main/resources/mapper/purchase/PaymentRegistrationMapper.xml @@ -9,7 +9,7 @@ <result property="saleLedgerId" column="sale_ledger_id"/> <result property="purchaseLedgerId" column="purchase_ledger_id"/> <result property="supplierId" column="supplier_id"/> - <result property="invoicePurchaseId" column="invoice_purchase_id"/> + <result property="ticketRegistrationId" column="ticket_registration_id"/> <result property="currentPaymentAmount" column="current_payment_amount"/> <result property="paymentMethod" column="payment_method"/> <result property="registrantId" column="registrant_id"/> @@ -17,6 +17,7 @@ <result property="createTime" column="create_time"/> <result property="updateTime" column="update_time"/> <result property="tenantId" column="tenant_id"/> + <result property="registrationtDate" column="registrationt_date"/> </resultMap> <resultMap type="com.ruoyi.purchase.dto.PaymentRegistrationDto" id="PaymentRegistrationDtoResult"> @@ -24,7 +25,7 @@ <result property="saleLedgerId" column="sale_ledger_id"/> <result property="purchaseLedgerId" column="purchase_ledger_id"/> <result property="supplierId" column="supplier_id"/> - <result property="invoicePurchaseId" column="invoice_purchase_id"/> + <result property="ticketRegistrationId" column="ticket_registration_id"/> <result property="currentPaymentAmount" column="current_payment_amount"/> <result property="paymentMethod" column="payment_method"/> <result property="registrantId" column="registrant_id"/> @@ -38,6 +39,7 @@ <result property="taxRate" column="tax_rate"/> <result property="invoiceAmount" column="invoice_amount"/> <result property="tenantId" column="tenant_id"/> + <result property="registrationtDate" column="registrationt_date"/> </resultMap> <sql id="selectPaymentRegistrationVo"> @@ -45,7 +47,7 @@ pr.sale_ledger_id, pr.purchase_ledger_id, pr.supplier_id, - pr.invoice_purchase_id, + pr.ticket_registration_id, pr.current_payment_amount, pr.payment_method, pr.registrant_id, @@ -57,13 +59,15 @@ pl.purchase_contract_number as purchase_contract_number, sm.supplier_name as supplier_name, ip.invoice_number as invoice_number, - ip.tax_rate as tax_rate, - ip.invoice_amount as invoice_amount + ip.invoice_amount as invoice_amount, + pr.tax_rate, + pr.registrationt_date, + su.nick_name as registrant from payment_registration pr left join sales_ledger sl on pr.sale_ledger_id = sl.id left join purchase_ledger pl on pr.purchase_ledger_id = pl.id left join supplier_manage sm on pr.supplier_id = sm.id - left join invoice_purchase ip on pr.invoice_purchase_id = ip.id + left join ticket_registration ip on pr.ticket_registration_id = ip.id left join sys_user su on pr.registrant_id = su.user_id </sql> -- Gitblit v1.9.3