From 77775b9f3d7179f251ce85421fb9a21d106f1446 Mon Sep 17 00:00:00 2001
From: yaowanxin <3588231647@qq.com>
Date: 星期二, 06 一月 2026 17:56:35 +0800
Subject: [PATCH] 协同办公-发货审批页面,开发接口。优化添加发货信息接口,勾连发货审批。优化销售产品查询接口,多表联查数据。添加发货车牌号、发货日期、审批状态、返回数据。
---
src/main/java/com/ruoyi/sales/service/ShipmentApprovalService.java | 13 +
src/main/resources/mapper/sales/SalesLedgerMapper.xml | 2
src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java | 31 ++
src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java | 25 ++
src/main/java/com/ruoyi/sales/service/impl/ShipmentApprovalServiceImpl.java | 32 ++
src/main/java/com/ruoyi/sales/pojo/SalesLedger.java | 4
src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java | 6
src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java | 77 +++++++
src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java | 8
src/main/resources/mapper/sales/SalesLedgerProductMapper.xml | 25 ++
src/main/java/com/ruoyi/sales/mapper/ShipmentApprovalMapper.java | 16 +
src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java | 4
src/main/java/com/ruoyi/sales/pojo/ShipmentApproval.java | 352 ++++++++++++++++++++++++++++++++
src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java | 35 +++
src/main/resources/mapper/sales/ShipmentApprovalMapper.xml | 24 ++
15 files changed, 641 insertions(+), 13 deletions(-)
diff --git a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
index 1fb353e..5ad4419 100644
--- a/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
+++ b/src/main/java/com/ruoyi/approve/vo/ApproveProcessVO.java
@@ -1,6 +1,8 @@
package com.ruoyi.approve.vo;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
import com.ruoyi.sales.pojo.CommonFile;
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
@@ -8,22 +10,37 @@
@Data
public class ApproveProcessVO {
-
+ /**
+ * 涓存椂鏂囦欢id鍒楄〃
+ */
private List<String> tempFileIds;
-
+ /**
+ * 瀹℃壒娴佺▼id
+ */
private Long id;
-
+ private String approveId;
+ /**
+ * 瀹℃壒閮ㄩ棬id
+ */
private Long approveDeptId;
-
+ /**
+ * 瀹℃壒鏃堕棿
+ */
private String approveTime;
-
+ /**
+ * 鐢宠浜篿d
+ */
// 鐢宠浜�
private Long approveUser;
-
+ /**
+ * 瀹℃壒浜篿d鍒楄〃
+ */
// 瀹℃壒浜�
private String approveUserIds;
-
+ /**
+ * 瀹℃壒鐞嗙敱
+ */
private String approveReason;
/**
diff --git a/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
new file mode 100644
index 0000000..047cb37
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/controller/ShipmentApprovalController.java
@@ -0,0 +1,77 @@
+package com.ruoyi.sales.controller;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.framework.web.controller.BaseController;
+import com.ruoyi.framework.web.domain.AjaxResult;
+import com.ruoyi.sales.mapper.ShipmentApprovalMapper;
+import com.ruoyi.sales.mapper.ShippingInfoMapper;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import com.ruoyi.sales.pojo.ShipmentApproval;
+import com.ruoyi.sales.pojo.ShippingInfo;
+import com.ruoyi.sales.service.ISalesLedgerProductService;
+import com.ruoyi.sales.service.ShipmentApprovalService;
+import com.ruoyi.sales.service.ShippingInfoService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+
+@RestController
+@RequestMapping("/shipmentApproval")
+@Api(tags = "鍙戣揣瀹℃壒绠$悊")
+public class ShipmentApprovalController extends BaseController {
+
+ @Autowired
+ private ShipmentApprovalService shipmentApprovalService;
+ @Autowired
+ private ShipmentApprovalMapper shipmentApprovalMapper;
+
+ @Autowired
+ private ISalesLedgerProductService salesLedgerProductService;
+
+ @GetMapping("/listPage")
+ @ApiOperation("鍙戣揣瀹℃壒鍒楄〃")
+ public AjaxResult listPage(Page page, ShipmentApproval req) {
+ IPage<ShipmentApproval> listPage = shipmentApprovalService.listPage(page,req);
+ return AjaxResult.success(listPage);
+ }
+
+ @PostMapping("/update")
+ @ApiOperation("鍙戣揣瀹℃壒,鏇存柊鍙戣揣瀹℃壒鐘舵��")
+ @Transactional(rollbackFor = Exception.class)
+ public AjaxResult update(@RequestBody ShipmentApproval req) {
+ ShipmentApproval shipmentApproval = shipmentApprovalMapper.selectById(req.getId());
+ if (shipmentApproval == null) {
+ return AjaxResult.error("鍙戣揣瀹℃壒涓嶅瓨鍦�");
+ }
+
+ shipmentApproval.setApproveStatus(req.getApproveStatus());
+ boolean update = shipmentApprovalService.updateById(shipmentApproval);
+ if(update){
+ SalesLedgerProduct salesLedgerProduct = salesLedgerProductService.getById(shipmentApproval.getSalesLedgerProductId());
+ salesLedgerProduct.setApproveStatus(req.getApproveStatus());
+ salesLedgerProductService.updateById(salesLedgerProduct);
+ }
+ return update ? AjaxResult.success() : AjaxResult.error();
+ }
+
+
+ /**
+ * 瀵煎嚭鍙戣揣淇℃伅绠$悊
+ */
+ @PostMapping("/export")
+ @ApiOperation("瀵煎嚭鍙戣揣瀹℃壒")
+ public void export(HttpServletResponse response) {
+ List<ShipmentApproval> list = shipmentApprovalService.list(null);
+ ExcelUtil<ShipmentApproval> util = new ExcelUtil<ShipmentApproval>(ShipmentApproval.class);
+ util.exportExcel(response, list, "鍙戣揣瀹℃壒");
+ }
+
+}
diff --git a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
index 56b3e15..077e80a 100644
--- a/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
+++ b/src/main/java/com/ruoyi/sales/controller/ShippingInfoController.java
@@ -1,5 +1,6 @@
package com.ruoyi.sales.controller;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.common.utils.poi.ExcelUtil;
@@ -7,13 +8,19 @@
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.sales.mapper.ShipmentApprovalMapper;
import com.ruoyi.sales.mapper.ShippingInfoMapper;
import com.ruoyi.sales.pojo.SalesLedger;
+import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import com.ruoyi.sales.pojo.ShipmentApproval;
import com.ruoyi.sales.pojo.ShippingInfo;
+import com.ruoyi.sales.service.ISalesLedgerProductService;
+import com.ruoyi.sales.service.ISalesLedgerService;
import com.ruoyi.sales.service.ShippingInfoService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
@@ -30,6 +37,10 @@
@Autowired
private ShippingInfoService shippingInfoService;
+ @Autowired
+ private ShipmentApprovalMapper shipmentApprovalMapper;
+ @Autowired
+ private ISalesLedgerProductService salesLedgerProductService;
@GetMapping("/listPage")
@@ -41,8 +52,32 @@
@PostMapping("/add")
@ApiOperation("娣诲姞鍙戣揣淇℃伅")
+ @Transactional(rollbackFor = Exception.class)
public AjaxResult add(@RequestBody ShippingInfo req) {
boolean save = shippingInfoService.save(req);
+ if(save){
+ LambdaQueryWrapper<ShippingInfo> wrapper = new LambdaQueryWrapper<>();
+ wrapper.eq(ShippingInfo::getSalesLedgerId, req.getSalesLedgerId());
+ wrapper.eq(ShippingInfo::getSalesLedgerProductId, req.getSalesLedgerProductId());
+ ShippingInfo shippingInfo = shippingInfoService.getOne(wrapper);
+ if(shippingInfo == null){
+ return AjaxResult.error("鍙戣揣淇℃伅涓嶅瓨鍦�");
+ }
+ ShipmentApproval shipmentApproval = new ShipmentApproval();
+ shipmentApproval.setSalesLedgerId(req.getSalesLedgerId());
+ shipmentApproval.setSalesLedgerProductId(req.getSalesLedgerProductId());
+ shipmentApproval.setApproveUserId(req.getApproverId());
+ shipmentApproval.setApproveStatus(2);
+ shipmentApproval.setShippingInfoId(shippingInfo.getId());
+ shipmentApprovalMapper.insert(shipmentApproval);
+
+ SalesLedgerProduct salesLedgerProduct = salesLedgerProductService.getById(req.getSalesLedgerProductId());
+ if(salesLedgerProduct != null){
+ salesLedgerProduct.setApproveStatus(2);
+ salesLedgerProductService.updateById(salesLedgerProduct);
+ }
+
+ }
return save ? AjaxResult.success() : AjaxResult.error();
}
diff --git a/src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java b/src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java
index 69b2b7b..0ccce79 100644
--- a/src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java
+++ b/src/main/java/com/ruoyi/sales/mapper/SalesLedgerProductMapper.java
@@ -2,6 +2,9 @@
import com.ruoyi.common.config.MyBaseMapper;
import com.ruoyi.sales.pojo.SalesLedgerProduct;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
* 浜у搧淇℃伅Mapper鎺ュ彛
@@ -10,4 +13,5 @@
* @date 2025-05-08
*/
public interface SalesLedgerProductMapper extends MyBaseMapper<SalesLedgerProduct> {
+ List<SalesLedgerProduct> selectSalesLedgerProductList(@Param("salesLedgerProduct") SalesLedgerProduct salesLedgerProduct);
}
diff --git a/src/main/java/com/ruoyi/sales/mapper/ShipmentApprovalMapper.java b/src/main/java/com/ruoyi/sales/mapper/ShipmentApprovalMapper.java
new file mode 100644
index 0000000..c3bf397
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/mapper/ShipmentApprovalMapper.java
@@ -0,0 +1,16 @@
+package com.ruoyi.sales.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.ruoyi.sales.pojo.ShipmentApproval;
+import com.ruoyi.sales.pojo.ShippingInfo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+public interface ShipmentApprovalMapper extends BaseMapper<ShipmentApproval> {
+ IPage<ShipmentApproval> listPage(Page page,@Param("req") ShipmentApproval req);
+
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
index 4ffdb03..f0b699d 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedger.java
@@ -125,5 +125,9 @@
@ApiModelProperty(value = "浠樻鏂瑰紡")
private String paymentMethod;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "鐢熶骇鐘舵��")
+ private String productionStatus = "鏈紑濮�";
}
diff --git a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
index a135fa3..d51e7c0 100644
--- a/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
+++ b/src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -11,6 +11,7 @@
import java.math.BigDecimal;
import java.time.LocalDateTime;
+import java.util.Date;
/**
* 浜у搧淇℃伅瀵硅薄 sales_ledger_product
@@ -177,4 +178,28 @@
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@Excel(name = "鐧昏鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime registerDate;
+ /**
+ * 鍙戣揣杞︾墝鍙�
+ */
+ @Excel(name = "鍙戣揣杞︾墝鍙�")
+ @TableField(exist = false)
+ private String shippingCarNumber;
+
+ /**
+ * 鍙戣揣鏃ユ湡
+ */
+ @Excel(name = "鍙戣揣鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ @TableField(exist = false)
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ private Date shippingDate;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "鐢熶骇鐘舵��")
+ private String productionStatus = "鏈紑濮�";
+ /**
+ * 鍙戣揣瀹℃壒鐘舵��
+ */
+// @TableField(exist = false)
+ @ApiModelProperty(value = "瀹℃壒鐘舵��")
+ private Integer approveStatus;
}
diff --git a/src/main/java/com/ruoyi/sales/pojo/ShipmentApproval.java b/src/main/java/com/ruoyi/sales/pojo/ShipmentApproval.java
new file mode 100644
index 0000000..41a0d34
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/pojo/ShipmentApproval.java
@@ -0,0 +1,352 @@
+package com.ruoyi.sales.pojo;
+
+import com.baomidou.mybatisplus.annotation.*;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.framework.aspectj.lang.annotation.Excel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.Date;
+import java.util.List;
+
+@Data
+@TableName("shipment_approval")
+public class ShipmentApproval {
+ @TableId(type = IdType.AUTO)
+ private Long id;
+ @ApiModelProperty(value = "鍙戣揣淇℃伅id")
+ private Long shippingInfoId;
+ @ApiModelProperty(value = "閿�鍞彴璐d")
+ private Long salesLedgerId;
+ @ApiModelProperty(value = "閿�鍞姤浠蜂骇鍝佽〃id")
+ private Long salesLedgerProductId;
+ @ApiModelProperty(value = "鐢宠閮ㄩ棬id")
+ private Long approveDeptId;
+
+ @ApiModelProperty(value = "鐢宠閮ㄩ棬鍚嶇О")
+ @Excel(name = "鐢宠閮ㄩ棬")
+ private String approveDeptName;
+ @ApiModelProperty(value = "瀹℃壒鐢ㄦ埛id")
+ private Integer approveUserId;
+ @ApiModelProperty(value = "瀹℃壒鐢ㄦ埛鍚嶇О")
+ @Excel(name = "瀹℃壒鐢ㄦ埛")
+ private String approveUserNames;
+
+ /**
+ * 瀹℃壒鐘舵��
+ */
+ @ApiModelProperty(value = "瀹℃壒鐘舵�侊細0鏈嚭搴�,1宸插嚭搴�,2寰呭鏍�,3瀹℃牳瀹屾垚,4瀹℃牳澶辫触")
+ @Excel(name = "瀹℃壒鐘舵��", readConverterExp = "0=鏈嚭搴�,1=宸插嚭搴�,2=寰呭鏍�,3=瀹℃牳瀹屾垚,4=瀹℃牳澶辫触")
+ private Integer approveStatus;
+
+ @ApiModelProperty(value = "鍒涘缓鏃堕棿")
+ @TableField(fill = FieldFill.INSERT)
+ private LocalDateTime createTime;
+
+ @ApiModelProperty(value = "淇敼鏃堕棿")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private LocalDateTime updateTime;
+
+ @ApiModelProperty(value = "鍒涘缓鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT)
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Integer createUser;
+
+ @ApiModelProperty(value = "淇敼鐢ㄦ埛")
+ @TableField(fill = FieldFill.INSERT_UPDATE)
+ private Integer updateUser;
+
+ @ApiModelProperty(value = "绉熸埛ID")
+ @TableField(fill = FieldFill.INSERT)
+ private Long tenantId;
+
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @Excel(name = "鍙戣揣鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd")
+ @TableField(exist = false)
+ private Date shippingDate;
+
+ @Excel(name = "鍙戣揣杞︾墝鍙�")
+ @TableField(exist = false)
+ private String shippingCarNumber;
+
+ /**
+ * 棰勮鏁伴噺
+ */
+
+ @TableField(exist = false)
+ private BigDecimal warnNum;
+
+ /**
+ * 浜у搧澶х被
+ */
+ @Excel(name = "浜у搧澶х被")
+ @TableField(exist = false)
+ private String productCategory;
+
+ /**
+ * 瑙勬牸鍨嬪彿
+ */
+ @Excel(name = "瑙勬牸鍨嬪彿")
+ @TableField(exist = false)
+ private String specificationModel;
+
+ /**
+ * 鍗曚綅
+ */
+ @Excel(name = "鍗曚綅")
+ @TableField(exist = false)
+ private String unit;
+
+ /**
+ * 鏁伴噺
+ */
+ @Excel(name = "鏁伴噺")
+ @TableField(exist = false)
+ private BigDecimal quantity;
+ @Excel(name = "鏈�浣庡簱瀛樻暟閲�")
+ @TableField(exist = false)
+ private BigDecimal minStock;
+ /**
+ * 绋庣巼
+ */
+ @Excel(name = "绋庣巼")
+ @TableField(exist = false)
+ private BigDecimal taxRate;
+
+ /**
+ * 鍚◣鍗曚环
+ */
+ @Excel(name = "鍚◣鍗曚环")
+ @TableField(exist = false)
+ private BigDecimal taxInclusiveUnitPrice;
+
+ /**
+ * 鍚◣鎬讳环
+ */
+ @Excel(name = "鍚◣鎬讳环")
+ @TableField(exist = false)
+ private BigDecimal taxInclusiveTotalPrice;
+
+ /**
+ * 涓嶅惈绋庢�讳环
+ */
+ @Excel(name = "涓嶅惈绋庢�讳环")
+ @TableField(exist = false)
+ private BigDecimal taxExclusiveTotalPrice;
+
+ /**
+ * 鍙戠エ绫诲瀷
+ */
+
+ @TableField(exist = false)
+ private String invoiceType;
+
+ /**
+ * 鍙拌处绫诲瀷 1.閿�鍞� 2锛岄噰璐�
+ */
+ @TableField(exist = false)
+ private Integer type;
+
+ /**
+ * 鏈鏉ョエ鏁�
+ */
+ @TableField(exist = false)
+ private BigDecimal ticketsNum;
+
+ /**
+ * 鏈鏉ョエ閲戦(鍏�)
+ */
+ @TableField(exist = false)
+ private BigDecimal ticketsAmount;
+
+ /**
+ * 鏈潵绁ㄦ暟
+ */
+ @TableField(exist = false)
+ private BigDecimal futureTickets;
+
+ /**
+ * 鏈潵绁ㄩ噾棰�(鍏�)
+ */
+ @TableField(exist = false)
+ private BigDecimal futureTicketsAmount;
+
+ @ApiModelProperty(value = "寮�绁ㄦ暟")
+ @TableField(exist = false)
+ private BigDecimal invoiceNum;
+
+ @ApiModelProperty(value = "鏈紑绁ㄦ暟")
+ @TableField(exist = false)
+ private BigDecimal noInvoiceNum;
+
+ @ApiModelProperty(value = "寮�绁ㄩ噾棰�")
+ @TableField(exist = false)
+ private BigDecimal invoiceAmount;
+
+ @ApiModelProperty(value = "鏈紑绁ㄩ噾棰�")
+ @TableField(exist = false)
+ private BigDecimal noInvoiceAmount;
+
+ @ApiModelProperty(value = "鏈寮�绁ㄦ暟")
+ @TableField(exist = false)
+ private BigDecimal currentInvoiceNum;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "鏈寮�绁ㄩ噾棰�")
+ private BigDecimal currentInvoiceAmount;
+
+ /**
+ * 浜у搧id
+ */
+ @TableField(exist = false)
+ private Long productId;
+
+ /**
+ * 浜у搧瑙勬牸id
+ */
+ @TableField(exist = false)
+ private Long productModelId;
+
+ @ApiModelProperty(value = "鍒濆鏈紑绁ㄦ暟")
+ @TableField(exist = false)
+ private BigDecimal originalNoInvoiceNum;
+
+ @ApiModelProperty(value = "涓存椂鏈紑绁ㄦ暟")
+ @TableField(exist = false)
+ private BigDecimal tempNoInvoiceNum;
+
+ @ApiModelProperty(value = "涓存椂鏈紑绁ㄩ噾棰�")
+ @TableField(exist = false)
+ private BigDecimal tempnoInvoiceAmount;
+
+ @ApiModelProperty(value = "涓存椂鏈潵绁ㄦ暟")
+ @TableField(exist = false)
+ private BigDecimal tempFutureTickets;
+
+ @ApiModelProperty(value = "涓存椂鏈潵绁ㄩ噾棰�")
+ @TableField(exist = false)
+ private BigDecimal tempFutureTicketsAmount;
+
+ @ApiModelProperty("鐧昏浜�")
+ @TableField(exist = false)
+ private String register;
+
+ @ApiModelProperty("鐧昏鏃ユ湡")
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ @Excel(name = "鐧昏鏃ユ湡", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
+ @TableField(exist = false)
+ private LocalDateTime registerDate;
+ /**
+ * 閿�鍞悎鍚屽彿
+ */
+ @Excel(name = "閿�鍞悎鍚屽彿")
+ @TableField(exist = false)
+ private String salesContractNo;
+
+ /**
+ * 瀹㈡埛鍚堝悓鍙�
+ */
+ @Excel(name = "瀹㈡埛鍚堝悓鍙�")
+ @TableField(exist = false)
+ private String customerContractNo;
+
+
+ /**
+ * 椤圭洰鍚嶇О
+ */
+ @Excel(name = "椤圭洰鍚嶇О")
+ @TableField(exist = false)
+ private String projectName;
+
+ /**
+ * 褰曞叆鏃ユ湡
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd")
+ @DateTimeFormat(pattern = "yyyy-MM-dd")
+ @TableField(exist = false)
+ private Date entryDate;
+
+ /**
+ * 涓氬姟鍛�
+ */
+ @Excel(name = "涓氬姟鍛�")
+ @TableField(exist = false)
+ private String salesman;
+
+ @TableField(exist = false)
+ private Long customerId;
+
+ /**
+ * 瀹㈡埛鍚嶇О
+ */
+ @Excel(name = "瀹㈡埛鍚嶇О")
+ @TableField(exist = false)
+ private String customerName;
+
+ /**
+ * 褰曞叆浜�
+ */
+ @TableField(exist = false)
+ private String entryPerson;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "褰曞叆浜�")
+ @Excel(name = "褰曞叆浜�")
+ private String entryPersonName;
+
+ /**
+ * 澶囨敞
+ */
+ @Excel(name = "澶囨敞")
+ @TableField(exist = false)
+ private String remarks;
+
+ /**
+ * 闄勪欢鏉愭枡锛屽瓨鍌ㄦ枃浠跺悕绛夌浉鍏充俊鎭�
+ */
+ @TableField(exist = false)
+ private String attachmentMaterials;
+
+
+ /**
+ * 鍚堝悓閲戦锛堜骇鍝佸惈绋庢�讳环锛�
+ */
+ @Excel(name = "鍚堝悓閲戦")
+ @TableField(exist = false)
+ private BigDecimal contractAmount;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "鏈紑绁ㄩ噾棰�(鍏�)")
+ @Excel(name = "鏈紑绁ㄩ噾棰�")
+ private BigDecimal noInvoiceAmountTotal = BigDecimal.ZERO;
+
+ @ApiModelProperty(value = "绛捐鏃ユ湡")
+ @TableField(exist = false)
+ private LocalDate executionDate;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "宸插紑绁ㄩ噾棰�(鍏�)")
+ @Excel(name = "宸插紑绁ㄩ噾棰�")
+ private BigDecimal invoiceTotal = BigDecimal.ZERO;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "鍥炴閲戦")
+ private BigDecimal receiptPaymentAmountTotal = BigDecimal.ZERO;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "寰呭洖娆鹃噾棰�")
+ private BigDecimal noReceiptAmount = BigDecimal.ZERO;
+
+ @ApiModelProperty(value = "浠樻鏂瑰紡")
+ @TableField(exist = false)
+ private String paymentMethod;
+
+ @TableField(exist = false)
+ @ApiModelProperty(value = "鐢熶骇鐘舵��")
+ private String productionStatus = "鏈紑濮�";
+}
diff --git a/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java b/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
index 3f80dc0..fce7148 100644
--- a/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
+++ b/src/main/java/com/ruoyi/sales/pojo/ShippingInfo.java
@@ -23,7 +23,8 @@
@ApiModelProperty(value = "閿�鍞彴璐d")
private Long salesLedgerId;
-
+ @ApiModelProperty(value = "閿�鍞姤浠蜂骇鍝佽〃id")
+ private Long salesLedgerProductId;
@TableField(exist = false)
@ApiModelProperty(value = "閿�鍞悎鍚屽彿")
@Excel(name = "閿�鍞悎鍚屽彿")
@@ -64,5 +65,8 @@
@ApiModelProperty(value = "绉熸埛ID")
@TableField(fill = FieldFill.INSERT)
private Long tenantId;
+ @ApiModelProperty(value = "瀹℃壒浜篿d")
+ @TableField(exist = false)
+ private Integer approverId;
}
diff --git a/src/main/java/com/ruoyi/sales/service/ShipmentApprovalService.java b/src/main/java/com/ruoyi/sales/service/ShipmentApprovalService.java
new file mode 100644
index 0000000..6af2c00
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/ShipmentApprovalService.java
@@ -0,0 +1,13 @@
+package com.ruoyi.sales.service;
+
+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.sales.pojo.ShipmentApproval;
+import com.ruoyi.sales.pojo.ShippingInfo;
+
+
+public interface ShipmentApprovalService extends IService<ShipmentApproval>{
+ IPage<ShipmentApproval> listPage(Page page, ShipmentApproval req);
+
+}
diff --git a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
index 2a288e4..ba02f28 100644
--- a/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
+++ b/src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -52,10 +52,10 @@
@Override
public List<SalesLedgerProduct> selectSalesLedgerProductList(SalesLedgerProduct salesLedgerProduct) {
- LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
- queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerProduct.getSalesLedgerId())
- .eq(SalesLedgerProduct::getType, salesLedgerProduct.getType());
- List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectList(queryWrapper);
+// LambdaQueryWrapper<SalesLedgerProduct> queryWrapper = new LambdaQueryWrapper<>();
+// queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerProduct.getSalesLedgerId())
+// .eq(SalesLedgerProduct::getType, salesLedgerProduct.getType());
+ List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectSalesLedgerProductList(salesLedgerProduct);
if(!CollectionUtils.isEmpty(salesLedgerProducts)){
InvoiceRegistrationProductDto invoiceRegistrationProductDto = new InvoiceRegistrationProductDto();
invoiceRegistrationProductDto.setSalesLedgerId(salesLedgerProduct.getSalesLedgerId().intValue());
diff --git a/src/main/java/com/ruoyi/sales/service/impl/ShipmentApprovalServiceImpl.java b/src/main/java/com/ruoyi/sales/service/impl/ShipmentApprovalServiceImpl.java
new file mode 100644
index 0000000..0df4c34
--- /dev/null
+++ b/src/main/java/com/ruoyi/sales/service/impl/ShipmentApprovalServiceImpl.java
@@ -0,0 +1,32 @@
+package com.ruoyi.sales.service.impl;
+
+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.sales.mapper.ShipmentApprovalMapper;
+import com.ruoyi.sales.mapper.ShippingInfoMapper;
+import com.ruoyi.sales.pojo.ShipmentApproval;
+import com.ruoyi.sales.pojo.ShippingInfo;
+import com.ruoyi.sales.service.ShipmentApprovalService;
+import com.ruoyi.sales.service.ShippingInfoService;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @author :yys
+ * @date : 2025/10/22 9:33
+ */
+@Service
+@Slf4j
+public class ShipmentApprovalServiceImpl extends ServiceImpl<ShipmentApprovalMapper, ShipmentApproval> implements ShipmentApprovalService {
+
+ @Autowired
+ private ShipmentApprovalMapper shipmentApprovalMapper;
+
+ @Override
+ public IPage<ShipmentApproval> listPage(Page page, ShipmentApproval req) {
+ IPage<ShipmentApproval> listPage = shipmentApprovalMapper.listPage(page, req);
+ return listPage;
+ }
+}
diff --git a/src/main/resources/mapper/sales/SalesLedgerMapper.xml b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
index a73b2ae..5d83bb1 100644
--- a/src/main/resources/mapper/sales/SalesLedgerMapper.xml
+++ b/src/main/resources/mapper/sales/SalesLedgerMapper.xml
@@ -82,6 +82,6 @@
AND T1.entry_date <= DATE_FORMAT(#{salesLedgerDto.entryDateEnd},'%Y-%m-%d')
</if>
</where>
- order by entry_date desc
+ order by T1.entry_date desc
</select>
</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
new file mode 100644
index 0000000..ec8d8d4
--- /dev/null
+++ b/src/main/resources/mapper/sales/SalesLedgerProductMapper.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sales.mapper.SalesLedgerProductMapper">
+
+ <select id="selectSalesLedgerProductList" resultType="com.ruoyi.sales.pojo.SalesLedgerProduct">
+ SELECT
+ T1.*,
+ t3.shipping_car_number,
+ t3.shipping_date
+ FROM
+ sales_ledger_product T1
+ left join shipping_info t3 on T1.id = t3.sales_ledger_id
+ <where>
+ 1=1
+ <if test="salesLedgerProduct.salesLedgerId != null and salesLedgerProduct.salesLedgerId != '' ">
+ AND T1.sales_ledger_id = #{salesLedgerProduct.salesLedgerId}
+ </if>
+ <if test="salesLedgerProduct.type != null and salesLedgerProduct.type != '' ">
+ AND T1.type = #{salesLedgerProduct.type}
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/sales/ShipmentApprovalMapper.xml b/src/main/resources/mapper/sales/ShipmentApprovalMapper.xml
new file mode 100644
index 0000000..8b9792e
--- /dev/null
+++ b/src/main/resources/mapper/sales/ShipmentApprovalMapper.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+ "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.sales.mapper.ShipmentApprovalMapper">
+
+ <select id="listPage" resultType="com.ruoyi.sales.pojo.ShipmentApproval">
+ SELECT *,
+ si.shipping_car_number,
+ T2.nick_name AS entry_person_name
+ FROM shipment_approval sa
+ LEFT JOIN shipping_info si ON sa.shipping_info_id = si.id
+ LEFT JOIN sales_ledger sl ON sa.sales_ledger_id = sl.id
+ LEFT JOIN sales_ledger_product slp ON sa.sales_ledger_product_id = slp.id
+ LEFT JOIN sys_user T2 ON sl.entry_person = T2.user_id
+ <where>
+ 1=1
+ <if test="req.approveStatus != null and req.approveStatus != '' ">
+ AND sa.approve_status = #{req.approveStatus}
+ </if>
+ <if test="req.salesContractNo != null and req.salesContractNo != '' ">
+ AND sl.sales_contract_no LIKE CONCAT('%',#{req.salesContractNo},'%')
+ </if>
+ </where>
+ </select>
+</mapper>
\ No newline at end of file
--
Gitblit v1.9.3