From ca29295ad071862ffef46bbcced489a4b960233f Mon Sep 17 00:00:00 2001
From: liyong <18434998025@163.com>
Date: 星期五, 06 三月 2026 15:01:34 +0800
Subject: [PATCH] 销售退货模块接口开发
---
src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java | 1
src/main/java/com/ruoyi/procurementrecord/controller/ReturnSaleProductController.java | 18 +
src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java | 14 +
src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml | 50 ++++
src/main/java/com/ruoyi/procurementrecord/dto/ReturnManagementDto.java | 48 ++++
src/main/java/com/ruoyi/procurementrecord/mapper/ReturnSaleProductMapper.java | 23 ++
src/main/java/com/ruoyi/sales/service/ShippingInfoService.java | 6
src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java | 5
src/main/resources/mapper/sales/ShippingInfoMapper.xml | 25 ++
src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java | 19 +
src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java | 44 ++++
src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java | 8
src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java | 93 +++++++++
src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java | 13 +
src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java | 57 ++---
src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java | 8
src/main/java/com/ruoyi/procurementrecord/service/ReturnSaleProductService.java | 20 ++
src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java | 61 ++++-
src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnSaleProductServiceImpl.java | 32 +++
src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java | 6
src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml | 23 ++
21 files changed, 517 insertions(+), 57 deletions(-)
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java
index 3cb1e59..ebafe40 100644
--- a/src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ReturnManagementController.java
@@ -1,14 +1,20 @@
package com.ruoyi.procurementrecord.controller;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.OrderUtils;
import com.ruoyi.framework.web.controller.BaseController;
import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.procurementrecord.dto.ReturnManagementDto;
import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
import com.ruoyi.procurementrecord.service.ReturnManagementService;
+import com.ruoyi.procurementrecord.service.ReturnSaleProductService;
+import com.ruoyi.procurementrecord.service.impl.ReturnSaleProductServiceImpl;
+import com.ruoyi.sales.dto.SalesLedgerDto;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
@@ -22,48 +28,69 @@
* @date : 2025/9/17 10:34
*/
@RestController
-@Api(tags = "鍒拌揣绠$悊")
+@Api(tags = "閿�鍞��璐�")
@RequestMapping("/returnManagement")
public class ReturnManagementController extends BaseController {
@Autowired
private ReturnManagementService returnManagementService;
-
@Autowired
- private ReturnManagementMapper returnManagementMapper;
+ private ReturnSaleProductService returnSaleProductService;
@GetMapping("/listPage")
- @ApiOperation("鍒拌揣绠$悊-鏌ヨ")
- public AjaxResult listPage(Page page, ReturnManagement returnManagement) {
- IPage<ReturnManagement> result = returnManagementService.listPage(page, returnManagement);
+ @ApiOperation("閿�鍞��璐�-鏌ヨ")
+ public AjaxResult listPage(Page page, ReturnManagementDto returnManagement) {
+ IPage<ReturnManagementDto> result = returnManagementService.listPage(page, returnManagement);
return AjaxResult.success(result);
}
@PostMapping("/add")
- @ApiOperation("鍒拌揣绠$悊-娣诲姞")
+ @ApiOperation("閿�鍞��璐�-娣诲姞")
@Transactional(rollbackFor = Exception.class)
- public AjaxResult add(@RequestBody ReturnManagement returnManagement) {
- String rt = OrderUtils.countTodayByCreateTime(returnManagementMapper, "RT");
- returnManagement.setReturnNo(rt);
- boolean result = returnManagementService.save(returnManagement);
- return result ? success() : error();
+ public AjaxResult add(@RequestBody ReturnManagementDto returnManagementDto) {
+ return returnManagementService.addReturnManagementDto(returnManagementDto) ? success() : error();
}
@PostMapping("/update")
- @ApiOperation("鍒拌揣绠$悊-淇敼")
+ @ApiOperation("閿�鍞��璐�-淇敼")
@Transactional(rollbackFor = Exception.class)
- public AjaxResult update(@RequestBody ReturnManagement returnManagement) {
- boolean result = returnManagementService.updateById(returnManagement);
- return result ? success() : error();
+ public AjaxResult update(@RequestBody ReturnManagementDto returnManagementDto) {
+ return returnManagementService.updateReturnManagementDto(returnManagementDto) ? success() : error();
}
+
+ @ApiOperation("閿�鍞��璐�-澶勭悊閫�璐у崟")
+ @GetMapping("/handle")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult handle(Long returnManagementId) {
+ return returnManagementService.handle(returnManagementId) ? success() : error();
+ }
+
+
@DeleteMapping("/del")
- @ApiOperation("鍒拌揣绠$悊-鍒犻櫎")
+ @ApiOperation("閿�鍞��璐�-鍒犻櫎")
@Transactional(rollbackFor = Exception.class)
public AjaxResult del(@RequestBody List<Long> ids) {
if (CollectionUtils.isEmpty(ids)) return error("璇烽�夋嫨鑷冲皯涓�鏉℃暟鎹�");
+ returnSaleProductService.remove(new QueryWrapper<ReturnSaleProduct>()
+ .lambda()
+ .in(ReturnSaleProduct::getReturnManagementId, ids));
boolean result = returnManagementService.removeByIds(ids);
return result ? success() : error();
}
+ @GetMapping("/getById")
+ @ApiOperation("閿�鍞��璐�-鏍规嵁id鏌ヨ")
+ public AjaxResult getById(Long returnManagementId) {
+ ReturnManagementDto returnManagementDto = returnManagementService.getReturnManagementDtoById(returnManagementId);
+ return success(returnManagementDto);
+ }
+
+ @GetMapping("/getByShippingId")
+ @ApiOperation("閿�鍞��璐�-鏍规嵁鍑哄簱鍗曟煡璇㈤攢鍞鍗曚互鍙婁骇鍝佷俊鎭�")
+ public AjaxResult getByShippingId(Long shippingId) {
+ SalesLedgerDto salesLedgerDto = returnManagementService.getReturnManagementDtoByShippingIdId(shippingId);
+ return success(salesLedgerDto);
+ }
+
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/controller/ReturnSaleProductController.java b/src/main/java/com/ruoyi/procurementrecord/controller/ReturnSaleProductController.java
new file mode 100644
index 0000000..e7826aa
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/controller/ReturnSaleProductController.java
@@ -0,0 +1,18 @@
+package com.ruoyi.procurementrecord.controller;
+
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 閫�璐т骇鍝佽〃 鍓嶇鎺у埗鍣�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 03:57:42
+ */
+@RestController
+@RequestMapping("/returnSaleProduct")
+public class ReturnSaleProductController {
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ReturnManagementDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ReturnManagementDto.java
new file mode 100644
index 0000000..74b90c9
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ReturnManagementDto.java
@@ -0,0 +1,48 @@
+package com.ruoyi.procurementrecord.dto;
+
+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 com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * @author :yys
+ * @date : 2025/9/17 10:28
+ */
+@Data
+public class ReturnManagementDto extends ReturnManagement {
+
+
+ @ApiModelProperty(value = "瀹㈡埛鍚嶇О")
+ private String customerName;
+
+ @ApiModelProperty(value = "閿�鍞崟鍙�")
+ private String salesContractNo;
+
+ @ApiModelProperty(value = "涓氬姟鍛�")
+ private String salesman;
+
+
+ @ApiModelProperty("鍏宠仈鍑哄簱鍗曞彿")
+ private String shippingNo;
+
+ @ApiModelProperty(value = "椤圭洰鍚嶇О")
+ private String projectName;
+
+ @ApiModelProperty(value = "閿�鍞彴璐d")
+ private Long salesLedgerId;
+
+ @ApiModelProperty(value = "閿�鍞骇鍝佸璞℃暟缁�")
+ private List<ReturnSaleProductDto> returnSaleProducts;
+
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java b/src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java
new file mode 100644
index 0000000..3cdb7dc
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/dto/ReturnSaleProductDto.java
@@ -0,0 +1,19 @@
+package com.ruoyi.procurementrecord.dto;
+
+import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+@Data
+public class ReturnSaleProductDto extends ReturnSaleProduct {
+
+ private String productName;
+
+ private String model;
+
+ private String unit;
+
+ //鏈��璐ф暟閲�
+ private BigDecimal unReturn;
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java
index 14953ad..4392109 100644
--- a/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnManagementMapper.java
@@ -3,6 +3,7 @@
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.procurementrecord.dto.ReturnManagementDto;
import com.ruoyi.procurementrecord.pojo.ReturnManagement;
import org.apache.ibatis.annotations.Param;
@@ -18,5 +19,7 @@
* @param page
* @return
*/
- IPage<ReturnManagement> listPage(Page page,@Param("req") ReturnManagement returnManagement);
+ IPage<ReturnManagementDto> listPage(Page page, @Param("req") ReturnManagementDto returnManagement);
+
+ ReturnManagementDto getReturnManagementDtoById(Long id);
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnSaleProductMapper.java b/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnSaleProductMapper.java
new file mode 100644
index 0000000..776a3b2
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/mapper/ReturnSaleProductMapper.java
@@ -0,0 +1,23 @@
+package com.ruoyi.procurementrecord.mapper;
+
+import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto;
+import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import org.apache.ibatis.annotations.Mapper;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 閫�璐т骇鍝佽〃 Mapper 鎺ュ彛
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 03:57:42
+ */
+@Mapper
+public interface ReturnSaleProductMapper extends BaseMapper<ReturnSaleProduct> {
+
+ List<ReturnSaleProductDto> listReturnSaleProductDto(@Param("returnManagementId") Long returnManagementId);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
index 54091ab..f061625 100644
--- a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnManagement.java
@@ -29,44 +29,39 @@
@ApiModelProperty(value = "閫�璐у崟鍙�")
private String returnNo;
- @ApiModelProperty(value = "鍏宠仈鍗曞彿")
- private String relatedNo;
+ @ApiModelProperty("瀹㈡埛id")
+ private Long customerId;
- @ApiModelProperty(value = "閫�璐х被鍨�")
- private String returnType;
+ @ApiModelProperty("鍏宠仈鍑哄簱鍗曞彿Id")
+ private Long shippingId;
- @ApiModelProperty(value = "渚涘簲鍟嗗悕绉�")
- private String supplierName;
+ @ApiModelProperty("椤圭洰id")
+ private Long projectId;
- @ApiModelProperty(value = "閫�璐у師鍥�")
- private String returnReason;
+ @ApiModelProperty("椤圭洰闃舵")
+ private String projectStage;
- @ApiModelProperty(value = "閫�璐х姸鎬�")
- private String status;
+ @ApiModelProperty("鍒跺崟浜�")
+ private String maker;
- @ApiModelProperty(value = "澶囨敞")
- private String remark;
-
- @ApiModelProperty(value = "鍒涘缓鏃堕棿")
- @TableField(fill = FieldFill.INSERT)
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @ApiModelProperty("鍒跺崟鏃堕棿")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+ private LocalDateTime makeTime;
+
+ @ApiModelProperty("缁撶畻浜�")
+ private String settler;
+
+ @ApiModelProperty("鐘舵��")
+ private Integer status;
+
+ @ApiModelProperty("鍒涘缓鏃堕棿")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
-
- @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
- @TableField(fill = FieldFill.INSERT)
- private Integer createUser;
-
- @ApiModelProperty(value = "淇敼鏃堕棿")
- @TableField(fill = FieldFill.INSERT_UPDATE)
+ @ApiModelProperty("鏇存柊鏃堕棿")
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime updateTime;
-
- @ApiModelProperty(value = "淇敼鐢ㄦ埛")
- @TableField(fill = FieldFill.INSERT_UPDATE)
- private Integer updateUser;
-
- @ApiModelProperty(value = "绉熸埛ID")
- @TableField(fill = FieldFill.INSERT)
- private Long tenantId;
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java
new file mode 100644
index 0000000..41ab99c
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/pojo/ReturnSaleProduct.java
@@ -0,0 +1,44 @@
+package com.ruoyi.procurementrecord.pojo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * <p>
+ * 閫�璐т骇鍝佽〃
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 03:57:42
+ */
+@Getter
+@Setter
+@TableName("return_sale_product")
+@ApiModel(value = "ReturnSaleProduct瀵硅薄", description = "閫�璐т骇鍝佽〃")
+public class ReturnSaleProduct implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty("涓婚敭id")
+ @TableId(value = "id", type = IdType.AUTO)
+ private Long id;
+
+ @ApiModelProperty("閫�璐у崟id")
+ private Long returnManagementId;
+
+ @ApiModelProperty("閫�璐т骇鍝乮d")
+ private Long returnSaleLedgerProductId;
+
+ @ApiModelProperty("閫�璐т骇鍝佹暟閲�")
+ private BigDecimal num;
+
+ @ApiModelProperty("閫�璐х姸鎬� 0 鏈��鍥� 1宸查��璐�")
+ private Integer status;
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java b/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java
index b35be31..1a2de96 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ReturnManagementService.java
@@ -3,7 +3,9 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.procurementrecord.dto.ReturnManagementDto;
import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.sales.dto.SalesLedgerDto;
/**
* @author :yys
@@ -18,5 +20,15 @@
* @param returnManagement
* @return
*/
- IPage<ReturnManagement> listPage(Page page, ReturnManagement returnManagement);
+ IPage<ReturnManagementDto> listPage(Page page, ReturnManagementDto returnManagement);
+
+ boolean addReturnManagementDto(ReturnManagementDto returnManagementDto);
+
+ boolean updateReturnManagementDto(ReturnManagementDto returnManagementDto);
+
+ SalesLedgerDto getReturnManagementDtoByShippingIdId(Long shippingId);
+
+ boolean handle(Long returnManagementId);
+
+ ReturnManagementDto getReturnManagementDtoById(Long returnManagementId);
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/ReturnSaleProductService.java b/src/main/java/com/ruoyi/procurementrecord/service/ReturnSaleProductService.java
new file mode 100644
index 0000000..64e6e16
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/ReturnSaleProductService.java
@@ -0,0 +1,20 @@
+package com.ruoyi.procurementrecord.service;
+
+import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto;
+import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 閫�璐т骇鍝佽〃 鏈嶅姟绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 03:57:42
+ */
+public interface ReturnSaleProductService extends IService<ReturnSaleProduct> {
+
+ List<ReturnSaleProductDto> listReturnSaleProductDto(Long returnManagementId);
+}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
index ef3f242..080150b 100644
--- a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnManagementServiceImpl.java
@@ -1,14 +1,38 @@
package com.ruoyi.procurementrecord.service.impl;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
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.common.utils.OrderUtils;
+import com.ruoyi.procurementrecord.dto.ReturnManagementDto;
+import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto;
import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper;
+import com.ruoyi.procurementrecord.mapper.ReturnSaleProductMapper;
import com.ruoyi.procurementrecord.pojo.ReturnManagement;
+import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
import com.ruoyi.procurementrecord.service.ReturnManagementService;
+import com.ruoyi.procurementrecord.service.ReturnSaleProductService;
+import com.ruoyi.sales.dto.SalesLedgerDto;
+import com.ruoyi.sales.dto.SalesLedgerProductDto;
+import com.ruoyi.sales.mapper.SalesLedgerMapper;
+import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import com.ruoyi.sales.pojo.ShippingInfo;
+import com.ruoyi.sales.service.ISalesLedgerProductService;
+import com.ruoyi.sales.service.ShippingInfoService;
+import com.ruoyi.sales.service.impl.ShippingInfoServiceImpl;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
/**
* @author :yys
@@ -21,9 +45,74 @@
@Autowired
private ReturnManagementMapper returnManagementMapper;
+ @Autowired
+ private ReturnSaleProductService returnSaleProductService;
+ @Autowired
+ private ShippingInfoService shippingInfoService;
+ @Autowired
+ private SalesLedgerMapper salesLedgerMapper;
+
@Override
- public IPage<ReturnManagement> listPage(Page page, ReturnManagement returnManagement) {
- IPage<ReturnManagement> returnManagementIPage = returnManagementMapper.listPage(page, returnManagement);
+ public IPage<ReturnManagementDto> listPage(Page page, ReturnManagementDto returnManagement) {
+ IPage<ReturnManagementDto> returnManagementIPage = returnManagementMapper.listPage(page, returnManagement);
+ for (ReturnManagementDto returnManagementDto : returnManagementIPage.getRecords()) {
+ List<ReturnSaleProductDto> returnSaleProducts = returnSaleProductService.listReturnSaleProductDto(returnManagementDto.getId());
+ returnManagementDto.setReturnSaleProducts(returnSaleProducts);
+ }
return returnManagementIPage;
}
+
+ @Override
+ public boolean addReturnManagementDto(ReturnManagementDto returnManagementDto) {
+ String rt = OrderUtils.countTodayByCreateTime(returnManagementMapper, "RT");
+ returnManagementDto.setReturnNo(rt);
+ save(returnManagementDto);
+ for (ReturnSaleProduct returnSaleProduct : returnManagementDto.getReturnSaleProducts()) {
+ returnSaleProduct.setReturnManagementId(returnManagementDto.getId());
+ returnSaleProduct.setStatus(0);
+ returnSaleProductService.save(returnSaleProduct);
+ }
+ return true;
+ }
+
+ @Override
+ public boolean updateReturnManagementDto(ReturnManagementDto returnManagementDto) {
+ List<ReturnSaleProduct> returnSaleProducts = new ArrayList<>();
+ if (!CollectionUtils.isEmpty(returnManagementDto.getReturnSaleProducts())) {
+ returnManagementDto.getReturnSaleProducts().stream().forEach(returnSaleProductDto -> {
+ ReturnSaleProduct returnSaleProduct = new ReturnSaleProduct();
+ BeanUtils.copyProperties(returnSaleProductDto, returnSaleProduct);
+ returnSaleProducts.add(returnSaleProduct);
+ });
+ }
+ returnSaleProductService.updateBatchById(returnSaleProducts);
+ return updateById(returnManagementDto);
+ }
+
+ @Override
+ public SalesLedgerDto getReturnManagementDtoByShippingIdId(Long shippingId) {
+ ShippingInfo byId = shippingInfoService.getById(shippingId);
+ SalesLedger salesLedger = salesLedgerMapper.selectById(byId.getSalesLedgerId());
+ SalesLedgerDto salesLedgerDto = new SalesLedgerDto();
+ BeanUtils.copyProperties(salesLedger, salesLedgerDto);
+
+ List<SalesLedgerProductDto> salesLedgerProductDtos = shippingInfoService.getReturnManagementDtoById(shippingId);
+ salesLedgerDto.setProductDtoData(salesLedgerProductDtos);
+ return salesLedgerDto;
+ }
+
+ @Override
+ public boolean handle(Long returnManagementId) {
+ ReturnManagement byId = this.getById(returnManagementId);
+ byId.setStatus(1);
+ return false;
+ }
+
+ @Override
+ public ReturnManagementDto getReturnManagementDtoById(Long returnManagementId) {
+ ReturnManagementDto returnManagementDtoById = returnManagementMapper.getReturnManagementDtoById(returnManagementId);
+ returnManagementDtoById.setReturnSaleProducts(returnSaleProductService.listReturnSaleProductDto(returnManagementId));
+ return returnManagementDtoById;
+ }
+
}
diff --git a/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnSaleProductServiceImpl.java b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnSaleProductServiceImpl.java
new file mode 100644
index 0000000..2e43729
--- /dev/null
+++ b/src/main/java/com/ruoyi/procurementrecord/service/impl/ReturnSaleProductServiceImpl.java
@@ -0,0 +1,32 @@
+package com.ruoyi.procurementrecord.service.impl;
+
+import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto;
+import com.ruoyi.procurementrecord.pojo.ReturnSaleProduct;
+import com.ruoyi.procurementrecord.mapper.ReturnSaleProductMapper;
+import com.ruoyi.procurementrecord.service.ReturnSaleProductService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Collections;
+import java.util.List;
+
+/**
+ * <p>
+ * 閫�璐т骇鍝佽〃 鏈嶅姟瀹炵幇绫�
+ * </p>
+ *
+ * @author 鑺杞欢锛堟睙鑻忥級鏈夐檺鍏徃
+ * @since 2026-03-05 03:57:42
+ */
+@Service
+public class ReturnSaleProductServiceImpl extends ServiceImpl<ReturnSaleProductMapper, ReturnSaleProduct> implements ReturnSaleProductService {
+
+ @Autowired
+ private ReturnSaleProductMapper returnSaleProductMapper;
+ @Override
+ public List<ReturnSaleProductDto> listReturnSaleProductDto(Long returnManagementId) {
+
+ return returnSaleProductMapper.listReturnSaleProductDto(returnManagementId);
+ }
+}
diff --git a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
index 0cf0797..db3c5b9 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -135,4 +135,10 @@
util.exportExcel(response, list, "鍙戣揣淇℃伅");
}
+
+ @GetMapping("/getByCustomerName")
+ @ApiOperation("閫氳繃瀹㈡埛鍚嶇О鏌ヨ")
+ public AjaxResult getByCustomerName(String customerName) {
+ return AjaxResult.success(shippingInfoService.getShippingInfoByCustomerName(customerName));
+ }
}
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
index 78169a0..05bd888 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerDto.java
@@ -43,6 +43,7 @@
private Boolean hasChildren = false;
private List<SalesLedgerProduct> productData;
+ private List<SalesLedgerProductDto> productDtoData;
private List<String> tempFileIds;
private List<CommonFile> SalesLedgerFiles;
diff --git a/src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java b/src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java
index 41b380a..666ccf4 100644
--- a/src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java
+++ b/src/main/java/com/ruoyi/sales/dto/SalesLedgerProductDto.java
@@ -3,6 +3,7 @@
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@@ -57,4 +58,11 @@
private Integer approvalStatus;
+
+ @ApiModelProperty(value = "鏈��璐ф暟")
+ private BigDecimal unQuantity;
+
+ @ApiModelProperty(value = "閫�璐ф�绘暟")
+ private BigDecimal totalReturnNum;
+
}
diff --git a/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java b/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
index 9ab16d5..8cc8b29 100644
--- a/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/ShippingInfoMapper.java
@@ -3,7 +3,10 @@
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.procurementrecord.dto.ReturnSaleProductDto;
+import com.ruoyi.sales.dto.SalesLedgerProductDto;
import com.ruoyi.sales.dto.ShippingInfoDto;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
import com.ruoyi.sales.pojo.ShippingInfo;
import org.apache.ibatis.annotations.Param;
@@ -17,4 +20,9 @@
IPage<ShippingInfoDto> listPage(Page page, @Param("req") ShippingInfo req);
List<ShippingInfo> listAll();
+
+ List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId);
+
+ List<ShippingInfo> getShippingInfoByCustomerName(String customerName);
+
}
diff --git a/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java b/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
index d9a3a8c..3f2f1d3 100644
--- a/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
+++ b/src/main/java/com/ruoyi/sales/service/ShippingInfoService.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto;
+import com.ruoyi.sales.dto.SalesLedgerProductDto;
import com.ruoyi.sales.dto.ShippingInfoDto;
import com.ruoyi.sales.pojo.ShippingInfo;
@@ -19,4 +21,8 @@
boolean deductStock(ShippingInfoDto req) throws IOException;
boolean delete(List<Long> ids);
+
+ List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId);
+
+ List<ShippingInfo> getShippingInfoByCustomerName(String customerName);
}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
index df94a16..1cdbebb 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/ShippingInfoServiceImpl.java
@@ -9,7 +9,9 @@
import com.ruoyi.common.enums.FileNameType;
import com.ruoyi.common.enums.StockOutQualifiedRecordTypeEnum;
import com.ruoyi.other.service.impl.TempFileServiceImpl;
+import com.ruoyi.procurementrecord.dto.ReturnSaleProductDto;
import com.ruoyi.procurementrecord.utils.StockUtils;
+import com.ruoyi.sales.dto.SalesLedgerProductDto;
import com.ruoyi.sales.dto.ShippingInfoDto;
import com.ruoyi.sales.mapper.SalesLedgerProductMapper;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
@@ -107,4 +109,15 @@
return this.removeBatchByIds(ids);
}
+
+ @Override
+ public List<SalesLedgerProductDto> getReturnManagementDtoById(Long shippingId) {
+ return shippingInfoMapper.getReturnManagementDtoById(shippingId);
+
+ }
+
+ @Override
+ public List<ShippingInfo> getShippingInfoByCustomerName(String customerName) {
+ return shippingInfoMapper.getShippingInfoByCustomerName(customerName);
+ }
}
diff --git a/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml b/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml
index ce8eb39..2e2d112 100644
--- a/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml
+++ b/src/main/resources/mapper/procurementrecord/ReturnManagementMapper.xml
@@ -2,15 +2,55 @@
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.procurementrecord.mapper.ReturnManagementMapper">
- <select id="listPage" resultType="com.ruoyi.procurementrecord.pojo.ReturnManagement">
- select * from return_management
+ <select id="listPage" resultType="com.ruoyi.procurementrecord.dto.ReturnManagementDto">
+ select rm.*,
+ c.customer_name,
+ si.shipping_no,
+ sl.project_name,
+ sl.sales_contract_no,
+ sl.salesman
+ from return_management rm
+ left join shipping_info si on rm.shipping_id = si.id
+ left join customer c on rm.customer_id = c.id
+ left join sales_ledger sl on si.sales_ledger_id = sl.id
<where>
<if test="req.returnNo != null and req.returnNo != ''">
- and return_no like concat('%',#{req.returnNo},'%')
+ and rm.return_no like concat('%',#{req.returnNo},'%')
</if>
- <if test="req.returnType != null and req.returnType != ''">
- and return_type = #{req.returnType}
+ <if test="req.customerName != null and req.customerName != ''">
+ and c.customer_name like concat('%',#{req.customerName},'%')
+ </if>
+ <if test="req.projectName != null and req.projectName != ''">
+ and sl.project_name like concat('%',#{req.projectName},'%')
+ </if>
+ <if test="req.salesman != null and req.salesman != ''">
+ and sl.salesman like concat('%',#{req.salesman},'%')
+ </if>
+ <if test="req.shippingNo != null and req.shippingNo != ''">
+ and rm.shipping_no like concat('%',#{req.shippingNo},'%')
+ </if>
+ <if test="req.projectStage != null and req.projectStage != ''">
+ and rm.project_stage like concat('%',#{req.projectStage},'%')
+ </if>
+ <if test="req.maker != null and req.maker != ''">
+ and rm.maker like concat('%',#{req.maker},'%')
+ </if>
+ <if test="req.salesContractNo != null and req.salesContractNo != ''">
+ and sl.sales_contract_no like concat('%',#{req.salesContractNo},'%')
</if>
</where>
</select>
+ <select id="getReturnManagementDtoById" resultType="com.ruoyi.procurementrecord.dto.ReturnManagementDto">
+ select rm.*,
+ c.customer_name,
+ si.shipping_no,
+ sl.project_name,
+ sl.sales_contract_no,
+ sl.salesman
+ from return_management rm
+ left join shipping_info si on rm.shipping_id = si.id
+ left join customer c on rm.customer_id = c.id
+ left join sales_ledger sl on si.sales_ledger_id = sl.id
+ where rm.id = #{id}
+ </select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml b/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
new file mode 100644
index 0000000..39fd27f
--- /dev/null
+++ b/src/main/resources/mapper/procurementrecord/ReturnSaleProductMapper.xml
@@ -0,0 +1,23 @@
+<?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.procurementrecord.mapper.ReturnSaleProductMapper">
+
+ <!-- 閫氱敤鏌ヨ鏄犲皠缁撴灉 -->
+ <resultMap id="BaseResultMap" type="com.ruoyi.procurementrecord.pojo.ReturnSaleProduct">
+ <id column="id" property="id" />
+ <result column="return_management_id" property="returnManagementId" />
+ <result column="return_sale_ledger_product_id" property="returnSaleLedgerProductId" />
+ <result column="num" property="num" />
+ <result column="status" property="status" />
+ </resultMap>
+ <select id="listReturnSaleProductDto" resultType="com.ruoyi.procurementrecord.dto.ReturnSaleProductDto">
+ select rsp.*,
+ slp.product_category as product_name,
+ slp.specification_model as model
+ from return_sale_product rsp
+ left join sales_ledger_product slp on rsp.return_sale_ledger_product_id = slp.id
+ where rsp.return_management_id = #{returnManagementId}
+
+ </select>
+
+</mapper>
diff --git a/src/main/resources/mapper/sales/ShippingInfoMapper.xml b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
index 89134d5..c5b3ae7 100644
--- a/src/main/resources/mapper/sales/ShippingInfoMapper.xml
+++ b/src/main/resources/mapper/sales/ShippingInfoMapper.xml
@@ -58,4 +58,29 @@
FROM shipping_info s
LEFT JOIN sales_ledger sl ON s.sales_ledger_id = sl.id
</select>
+ <select id="getReturnManagementDtoById" resultType="com.ruoyi.sales.dto.SalesLedgerProductDto">
+ SELECT
+ slp.*,
+ slp.quantity - COALESCE(rs.total_return_num, 0) AS un_quantity,
+ COALESCE(rs.total_return_num, 0) AS total_return_num
+ FROM shipping_info si
+ LEFT JOIN sales_ledger_product slp ON si.sales_ledger_product_id = slp.id
+ LEFT JOIN (
+ SELECT
+ return_sale_ledger_product_id,
+ SUM(num) AS total_return_num
+ FROM return_sale_product
+ <where>
+ <if test="productId != null">
+ AND return_sale_ledger_product_id = #{productId}
+ </if>
+ </where>
+ GROUP BY return_sale_ledger_product_id
+ ) rs ON rs.return_sale_ledger_product_id = slp.id
+ </select>
+ <select id="getShippingInfoByCustomerName" resultType="com.ruoyi.sales.pojo.ShippingInfo">
+ select * from shipping_info si
+ left join sales_ledger sl on si.sales_ledger_id = sl.id
+ where sl.customer_name = #{customerName}
+ </select>
</mapper>
\ No newline at end of file
--
Gitblit v1.9.3