From b10d9b8fcbe9eddeb881690bbeddafc7f786077f Mon Sep 17 00:00:00 2001
From: liding <756868258@qq.com>
Date: 星期三, 14 五月 2025 16:12:13 +0800
Subject: [PATCH] 来票登记优化
---
src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java | 55 +++++
src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java | 4
src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java | 10 +
src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java | 84 +++++++
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java | 20 ++
src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java | 88 ++++++++
src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java | 97 +++++++++
src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java | 2
src/main/java/com/ruoyi/purchase/mapper/TicketRegistrationMapper.java | 13 +
src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java | 127 ++++++++++++
src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java | 24 ++
src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java | 16 +
src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java | 18 +
13 files changed, 552 insertions(+), 6 deletions(-)
diff --git a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
index 3c12a6f..b0b1e56 100644
--- a/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
+++ b/src/main/java/com/ruoyi/basic/service/impl/CustomerServiceImpl.java
@@ -55,7 +55,7 @@
LambdaQueryWrapper<Customer> queryWrapper = new LambdaQueryWrapper<>();
if (StringUtils.isNotBlank(customer.getCustomerName())) {
- queryWrapper.eq(Customer::getCustomerName, customer.getCustomerName());
+ queryWrapper.like(Customer::getCustomerName, customer.getCustomerName());
}
List<Customer> customerList = customerMapper.selectList(queryWrapper);
diff --git a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
index 3b902c2..1e210f0 100644
--- a/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
+++ b/src/main/java/com/ruoyi/purchase/controller/PurchaseLedgerController.java
@@ -92,4 +92,20 @@
public List getSalesNo() {
return salesLedgerService.getSalesNo();
}
+
+ /**
+ * 鏍规嵁閲囪喘鍚堝悓鍙锋煡璇骇鍝�
+ */
+ @GetMapping("/getProduct")
+ public List getProduct(PurchaseLedgerDto purchaseLedgerDto){
+ return purchaseLedgerService.getProduct(purchaseLedgerDto);
+ }
+
+ /**
+ * 鏍规嵁閲囪喘鍚堝悓鍙锋煡璇骇鍝�
+ */
+ @GetMapping("/getInfo")
+ public PurchaseLedgerDto getInfo(PurchaseLedgerDto purchaseLedgerDto){
+ return 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
new file mode 100644
index 0000000..73dcd51
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/controller/TicketRegistrationController.java
@@ -0,0 +1,88 @@
+package com.ruoyi.purchase.controller;
+
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.purchase.dto.TicketRegistrationDto;
+import com.ruoyi.purchase.pojo.TicketRegistration;
+import com.ruoyi.purchase.service.ITicketRegistrationService;
+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;
+
+import java.util.List;
+
+/**
+ * 鏉ョエ鐧昏Controller
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+@RestController
+@RequestMapping("/purchase/registration")
+@AllArgsConstructor
+public class TicketRegistrationController extends BaseController {
+
+ private ITicketRegistrationService ticketRegistrationService;
+
+ /**
+ * 鏌ヨ鏉ョエ鐧昏鍒楄〃
+ */
+ @GetMapping("/list")
+ public TableDataInfo list(TicketRegistration ticketRegistration)
+ {
+ startPage();
+ List<TicketRegistration> list = ticketRegistrationService.selectTicketRegistrationList(ticketRegistration);
+ return getDataTable(list);
+ }
+
+ /**
+ * 瀵煎嚭鏉ョエ鐧昏鍒楄〃
+ */
+ @Log(title = "鏉ョエ鐧昏", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ 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, "鏉ョエ鐧昏鏁版嵁");
+ }
+
+ /**
+ * 鏌ヨ鏉ョエ鐧昏鍜屼骇鍝佺埗瀛愬垪琛�
+ */
+ @GetMapping("/getRegistrationById")
+ public TicketRegistrationDto getRegistrationById(TicketRegistrationDto ticketRegistrationDto) {
+ return ticketRegistrationService.getRegistrationById(ticketRegistrationDto);
+ }
+
+ /**
+ * 鏂板淇敼鏉ョエ鐧昏
+ */
+ @Log(title = "鏉ョエ鐧昏", businessType = BusinessType.INSERT)
+ @PostMapping ("/addOrUpdateRegistration")
+ public AjaxResult addOrUpdateRegistration(@RequestBody TicketRegistrationDto ticketRegistrationDto)
+ {
+ return toAjax(ticketRegistrationService.addOrUpdateRegistration(ticketRegistrationDto));
+ }
+
+ /**
+ * 鍒犻櫎鏉ョエ鐧昏
+ */
+ @Log(title = "鏉ョエ鐧昏", businessType = BusinessType.DELETE)
+ @DeleteMapping("/delRegistration")
+ public AjaxResult delRegistration(@RequestBody Long[] ids)
+ {
+ return toAjax(ticketRegistrationService.delRegistration(ids));
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java b/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
index def3993..6a9b1e8 100644
--- a/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
+++ b/src/main/java/com/ruoyi/purchase/dto/PurchaseLedgerDto.java
@@ -40,6 +40,11 @@
private String salesContractNo;
/**
+ * 閿�鍞悎鍚屽彿id
+ */
+ private Long salesContractNoId;
+
+ /**
* 椤圭洰鍚嶇О
*/
private String projectName;
@@ -87,4 +92,9 @@
private List<SalesLedgerFile> SalesLedgerFiles;
+ /**
+ * 涓氬姟鍛榠d
+ */
+ private Long businessPersonId;
+
}
diff --git a/src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java b/src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java
new file mode 100644
index 0000000..1bdd771
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/dto/TicketRegistrationDto.java
@@ -0,0 +1,55 @@
+package com.ruoyi.purchase.dto;
+
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import lombok.Data;
+
+import java.util.List;
+
+@Data
+public class TicketRegistrationDto {
+
+ /**
+ * 涓婚敭ID
+ */
+ private Long id;
+
+ /**
+ * 閲囪喘鍙拌处id
+ */
+ private Long purchaseLedgerId;
+
+ /**
+ * 閲囪喘鍚堝悓鍙�
+ */
+ private String purchaseContractNumber;
+
+ /**
+ * 閿�鍞悎鍚屽彿
+ */
+ private String salesContractNo;
+
+ /**
+ * 瀹㈡埛鍚嶇О
+ */
+ private String customerName;
+
+ /**
+ * 涓氬姟鍛�
+ */
+ private String businessPerson;
+
+ /**
+ * 涓氬姟鍛榠d
+ */
+ private Long businessPersonId;
+
+ /**
+ * 椤圭洰鍚嶇О
+ */
+ private String projectName;
+
+ private List<SalesLedgerProduct> productData;
+
+ private Long salesContractNoId;
+ private String supplierName;
+}
diff --git a/src/main/java/com/ruoyi/purchase/mapper/TicketRegistrationMapper.java b/src/main/java/com/ruoyi/purchase/mapper/TicketRegistrationMapper.java
new file mode 100644
index 0000000..39633c1
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/mapper/TicketRegistrationMapper.java
@@ -0,0 +1,13 @@
+package com.ruoyi.purchase.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.ruoyi.purchase.pojo.TicketRegistration;
+
+/**
+ * 鏉ョエ鐧昏Mapper鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+public interface TicketRegistrationMapper extends BaseMapper<TicketRegistration> {
+}
diff --git a/src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java b/src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java
index 2e3f454..a2843c8 100644
--- a/src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java
+++ b/src/main/java/com/ruoyi/purchase/pojo/PurchaseLedger.java
@@ -106,4 +106,22 @@
*/
private BigDecimal contractAmount;
+ /**
+ * 涓氬姟鍛�
+ */
+ @Excel(name = "涓氬姟鍛�")
+ private String businessPerson;
+
+ /**
+ * 涓氬姟鍛榠d
+ */
+ private Long businessPersonId;
+
+ /**
+ * 涓氬姟鍛樻墜鏈哄彿
+ */
+ private String phoneNumber;
+
+
+
}
diff --git a/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java b/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java
new file mode 100644
index 0000000..b74d863
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/pojo/TicketRegistration.java
@@ -0,0 +1,97 @@
+package com.ruoyi.purchase.pojo;
+
+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;
+
+/**
+ * 鏉ョエ鐧昏瀵硅薄 ticket_registration
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+@Data
+@TableName("ticket_registration")
+public class TicketRegistration{
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 涓婚敭ID
+ */
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ /**
+ * 閲囪喘鍙拌处id
+ */
+ private Long purchaseLedgerId;
+
+ /**
+ * 閲囪喘鍚堝悓鍙�
+ */
+ @Excel(name = "閲囪喘鍚堝悓鍙�")
+ private String purchaseContractNumber;
+
+ /**
+ * 閿�鍞悎鍚屽彿
+ */
+ @Excel(name = "閿�鍞悎鍚屽彿")
+ private String salesContractNo;
+
+ /**
+ * 渚涘簲鍟嗗悕绉�
+ */
+ @Excel(name = "渚涘簲鍟嗗悕绉�")
+ private String supplierName;
+
+ /**
+ * 瀹㈡埛鍚嶇О
+ */
+ private String customerName;
+
+ /**
+ * 涓氬姟鍛�
+ */
+ @Excel(name = "涓氬姟鍛�")
+ private String businessPerson;
+
+ /**
+ * 涓氬姟鍛榠d
+ */
+ private Long businessPersonId;
+
+ /**
+ * 椤圭洰鍚嶇О
+ */
+ @Excel(name = "椤圭洰鍚嶇О")
+ private String projectName;
+
+ /**
+ * 浜у搧淇℃伅
+ */
+ private Long productId;
+
+ /**
+ * 鍒涘缓鏃堕棿
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date createdAt;
+
+ /**
+ * 鏇存柊鏃堕棿
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date updatedAt;
+
+ /**
+ * 鍏宠仈閿�鍞彴璐︿富琛ㄤ富閿�
+ */
+ private Long salesLedgerId;
+
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+}
diff --git a/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java b/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
index 7f8f10d..ac40957 100644
--- a/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
+++ b/src/main/java/com/ruoyi/purchase/service/IPurchaseLedgerService.java
@@ -23,4 +23,8 @@
int deletePurchaseLedgerByIds(Long[] ids);
PurchaseLedgerDto getPurchaseById(PurchaseLedgerDto purchaseLedgerDto);
+
+ List getProduct(PurchaseLedgerDto purchaseLedgerDto);
+
+ PurchaseLedgerDto getInfo(PurchaseLedgerDto purchaseLedgerDto);
}
diff --git a/src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java b/src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java
new file mode 100644
index 0000000..03a5202
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/service/ITicketRegistrationService.java
@@ -0,0 +1,24 @@
+package com.ruoyi.purchase.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.purchase.dto.TicketRegistrationDto;
+import com.ruoyi.purchase.pojo.TicketRegistration;
+
+import java.util.List;
+
+/**
+ * 鏉ョエ鐧昏Service鎺ュ彛
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+public interface ITicketRegistrationService extends IService<TicketRegistration> {
+
+ List<TicketRegistration> selectTicketRegistrationList(TicketRegistration ticketRegistration);
+
+ int addOrUpdateRegistration(TicketRegistrationDto ticketRegistrationDto);
+
+ int delRegistration(Long[] ids);
+
+ TicketRegistrationDto getRegistrationById(TicketRegistrationDto ticketRegistrationDto);
+}
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 c8ef0fc..1074d31 100644
--- a/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
+++ b/src/main/java/com/ruoyi/purchase/service/impl/PurchaseLedgerServiceImpl.java
@@ -2,6 +2,7 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.ruoyi.common.exception.base.BaseException;
import com.ruoyi.common.utils.StringUtils;
@@ -34,10 +35,7 @@
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
import java.util.stream.Collectors;
/**
@@ -67,7 +65,11 @@
@Override
public List<PurchaseLedger> selectPurchaseLedgerList(PurchaseLedger purchaseLedger) {
- return purchaseLedgerMapper.selectList(new LambdaQueryWrapper<>());
+ LambdaQueryWrapper<PurchaseLedger> queryWrapper = new LambdaQueryWrapper<>();
+ if (StringUtils.isNotBlank(purchaseLedger.getPurchaseContractNumber())) {
+ queryWrapper.like(PurchaseLedger::getPurchaseContractNumber,purchaseLedger.getPurchaseContractNumber());
+ }
+ return purchaseLedgerMapper.selectList(queryWrapper);
}
@Override
@@ -75,9 +77,13 @@
SalesLedger salesLedger = salesLedgerMapper.selectById(purchaseLedgerDto.getSalesLedgerId());
+ //涓氬姟鍛�
+ SysUser businessPerson = userMapper.selectUserById(purchaseLedgerDto.getBusinessPersonId());
+
if (salesLedger == null) {
throw new BaseException("閿�鍞彴璐︿笉瀛樺湪");
}
+ //褰曞叆浜�
SysUser sysUser = userMapper.selectUserById(purchaseLedgerDto.getRecorderId());
// DTO杞珽ntity
@@ -87,6 +93,9 @@
purchaseLedger.setSalesContractNo(salesLedger.getSalesContractNo());
purchaseLedger.setRecorderId(purchaseLedgerDto.getRecorderId());
purchaseLedger.setRecorderName(sysUser.getNickName());
+ purchaseLedger.setBusinessPersonId(purchaseLedgerDto.getBusinessPersonId());
+ purchaseLedger.setBusinessPerson(businessPerson.getNickName());
+ purchaseLedger.setPhoneNumber(sysUser.getPhonenumber());
// 3. 鏂板鎴栨洿鏂颁富琛�
if (purchaseLedger.getId() == null) {
@@ -239,4 +248,69 @@
}
return resultDto;
}
+
+ @Override
+ public List getProduct(PurchaseLedgerDto purchaseLedgerDto) {
+ LambdaQueryWrapper<PurchaseLedger> queryWrapper = Wrappers.lambdaQuery();
+ queryWrapper.select(PurchaseLedger::getId, PurchaseLedger::getPurchaseContractNumber);
+
+ // 鑾峰彇鍘熷鏌ヨ缁撴灉
+ List<Map<String, Object>> result = purchaseLedgerMapper.selectMaps(queryWrapper);
+
+ //鏌ヨ閿�鍞悎鍚屽彿
+
+
+ // 灏嗕笅鍒掔嚎鍛藉悕杞崲涓洪┘宄板懡鍚�
+ return result.stream().map(map -> map.entrySet().stream()
+ .collect(Collectors.toMap(
+ entry -> underlineToCamel(entry.getKey()),
+ Map.Entry::getValue))
+ ).collect(Collectors.toList());
+ }
+
+ @Override
+ public PurchaseLedgerDto getInfo(PurchaseLedgerDto purchaseLedgerDto) {
+ PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(purchaseLedgerDto.getId());
+ if (purchaseLedger == null) {
+ throw new BaseException("閲囪喘鍙拌处涓嶅瓨鍦�");
+ }
+ // 鍒涘缓骞跺~鍏匘TO
+ PurchaseLedgerDto resultDto = new PurchaseLedgerDto();
+ resultDto.setSalesContractNoId(purchaseLedger.getSalesLedgerId());
+ resultDto.setSalesContractNo(purchaseLedger.getSalesContractNo());
+ resultDto.setSupplierName(purchaseLedger.getSupplierName());
+ resultDto.setProjectName(purchaseLedger.getProjectName());
+ resultDto.setBusinessPersonId(purchaseLedger.getBusinessPersonId());
+
+ // 鏌ヨ骞惰缃叧鑱斾骇鍝�
+ LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId())
+ .eq(SalesLedgerProduct::getType, 2);
+ List<SalesLedgerProduct> productList = salesLedgerProductMapper.selectList(queryWrapper);
+ resultDto.setProductData(productList);
+
+ return resultDto;
+ }
+
+ /**
+ * 涓嬪垝绾垮懡鍚嶈浆椹煎嘲鍛藉悕
+ */
+ 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/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
new file mode 100644
index 0000000..ef3bc4d
--- /dev/null
+++ b/src/main/java/com/ruoyi/purchase/service/impl/TicketRegistrationServiceImpl.java
@@ -0,0 +1,127 @@
+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.common.exception.base.BaseException;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.project.system.domain.SysUser;
+import com.ruoyi.project.system.mapper.SysUserMapper;
+import com.ruoyi.purchase.dto.TicketRegistrationDto;
+import com.ruoyi.purchase.mapper.PurchaseLedgerMapper;
+import com.ruoyi.purchase.mapper.TicketRegistrationMapper;
+import com.ruoyi.purchase.pojo.PurchaseLedger;
+import com.ruoyi.purchase.pojo.TicketRegistration;
+import com.ruoyi.purchase.service.ITicketRegistrationService;
+import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import lombok.AllArgsConstructor;
+import org.springframework.stereotype.Service;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ * 鏉ョエ鐧昏Service涓氬姟灞傚鐞�
+ *
+ * @author ruoyi
+ * @date 2025-05-13
+ */
+@Service
+@AllArgsConstructor
+public class TicketRegistrationServiceImpl extends ServiceImpl<TicketRegistrationMapper, TicketRegistration> implements ITicketRegistrationService {
+
+ private TicketRegistrationMapper ticketRegistrationMapper;
+
+ private PurchaseLedgerMapper purchaseLedgerMapper;
+
+ private SalesLedgerProductMapper salesLedgerProductMapper;
+
+ private final SysUserMapper userMapper;
+
+
+ @Override
+ public List<TicketRegistration> selectTicketRegistrationList(TicketRegistration ticketRegistration) {
+ LambdaQueryWrapper<TicketRegistration> queryWrapper = new LambdaQueryWrapper<>();
+ if (StringUtils.isNotBlank(ticketRegistration.getPurchaseContractNumber())) {
+ queryWrapper.like(TicketRegistration::getPurchaseContractNumber,ticketRegistration.getPurchaseContractNumber());
+ }
+ return ticketRegistrationMapper.selectList(queryWrapper);
+ }
+
+ @Override
+ public int addOrUpdateRegistration(TicketRegistrationDto ticketRegistrationDto) {
+ PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectById(ticketRegistrationDto.getPurchaseLedgerId());
+ SysUser sysUser = userMapper.selectUserById(ticketRegistrationDto.getBusinessPersonId());
+ TicketRegistration ticketRegistration = new TicketRegistration();
+ BeanUtils.copyProperties(ticketRegistrationDto, ticketRegistration);
+ ticketRegistration.setPurchaseContractNumber(purchaseLedger.getPurchaseContractNumber());
+ ticketRegistration.setBusinessPerson(sysUser.getNickName());
+ ticketRegistration.setTenantId(purchaseLedger.getTenantId());
+
+ // 澶勭悊瀛愯〃鏁版嵁
+ List<SalesLedgerProduct> productData = ticketRegistrationDto.getProductData();
+ if (productData != null && !productData.isEmpty()) {
+ handleSalesLedgerProducts(purchaseLedger.getId(), productData, 2);
+ }
+
+ // 鎵ц鎻掑叆鎴栨洿鏂版搷浣�
+ if (ticketRegistrationDto.getId() == null) {
+ return ticketRegistrationMapper.insert(ticketRegistration);
+ } else {
+ return ticketRegistrationMapper.updateById(ticketRegistration);
+ }
+ }
+
+ @Override
+ public int delRegistration(Long[] ids) {
+ return ticketRegistrationMapper.deleteBatchIds(Arrays.asList(ids));
+ }
+
+ @Override
+ public TicketRegistrationDto getRegistrationById(TicketRegistrationDto ticketRegistrationDto) {
+ TicketRegistration ticketRegistration = ticketRegistrationMapper.selectById(ticketRegistrationDto.getId());
+ LambdaQueryWrapper<PurchaseLedger> purchaseQueryWrapper = new LambdaQueryWrapper<>();
+ purchaseQueryWrapper.eq(PurchaseLedger::getId,ticketRegistration.getPurchaseLedgerId());
+ PurchaseLedger purchaseLedger = purchaseLedgerMapper.selectOne(purchaseQueryWrapper);
+ if (ticketRegistration == null) {
+ throw new BaseException("閲囪喘鍙拌处涓嶅瓨鍦�");
+ }
+ // 鍒涘缓骞跺~鍏匘TO
+ TicketRegistrationDto resultDto = new TicketRegistrationDto();
+ BeanUtils.copyProperties(ticketRegistration,resultDto);
+
+ // 鏌ヨ骞惰缃叧鑱斾骇鍝�
+ LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
+ queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, purchaseLedger.getId())
+ .eq(SalesLedgerProduct::getType, 2);
+ List<SalesLedgerProduct> productList = salesLedgerProductMapper.selectList(queryWrapper);
+ resultDto.setProductData(productList);
+
+ return resultDto;
+ }
+
+ private void handleSalesLedgerProducts(Long salesLedgerId, List<SalesLedgerProduct> products, Integer type) {
+ if (products == null || products.isEmpty()) {
+ return;
+ }
+
+ // 杩囨护鍑烘湁 ID 鐨勮褰曪紙鍗抽渶瑕佹洿鏂扮殑璁板綍锛�
+ List<SalesLedgerProduct> updateList = products.stream()
+ .filter(p -> p.getId() != null)
+ .peek(p -> {
+ p.setSalesLedgerId(salesLedgerId);
+ p.setType(type);
+ })
+ .collect(Collectors.toList()); // Java 8 鍏煎鍐欐硶
+
+ // 鎵归噺鏇存柊锛堥渶瑕� MyBatis 鎻愪緵鎵归噺鏇存柊鏂规硶锛�
+ if (!updateList.isEmpty()) {
+ updateList.forEach(product -> {
+ product.setType(type);
+ salesLedgerProductMapper.updateById(product);
+ });
+ }
+ }
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index c620152..dde60d3 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -89,4 +89,24 @@
* 鍙拌处绫诲瀷 1.閿�鍞� 2锛岄噰璐�
*/
private Integer type;
+
+ /**
+ * 鏈鏉ョエ鏁�
+ */
+ private Long ticketsNum;
+
+ /**
+ * 鏈鏉ョエ閲戦(鍏�)
+ */
+ private BigDecimal ticketsAmount;
+
+ /**
+ * 鏈潵绁ㄦ暟
+ */
+ private Long futureTickets;
+
+ /**
+ * 鏈潵绁ㄩ噾棰�(鍏�)
+ */
+ private BigDecimal futureTicketsAmount;
}
--
Gitblit v1.9.3