Commit 8e2b3476376986562a72099aa37f246f93113723

Authored by 谢茂盛
1 parent c0757c2b

feat: ERP升级

1、财务应收创建invoice单据/列表查询/删除/更新操作
src/main/java/com/order/erp/controller/InvoiceBillOrderController.java
@@ -2,8 +2,7 @@ package com.order.erp.controller; @@ -2,8 +2,7 @@ package com.order.erp.controller;
2 2
3 import com.order.erp.common.constant.ServerResult; 3 import com.order.erp.common.constant.ServerResult;
4 import com.order.erp.common.jsr303.OperateGroup; 4 import com.order.erp.common.jsr303.OperateGroup;
5 -import com.order.erp.domain.vo.order.InvoiceBillOrderQueryVO;  
6 -import com.order.erp.domain.vo.order.InvoiceBillOrderVO; 5 +import com.order.erp.domain.vo.order.*;
7 import com.order.erp.service.order.InvoiceBillOrderService; 6 import com.order.erp.service.order.InvoiceBillOrderService;
8 import org.springframework.validation.annotation.Validated; 7 import org.springframework.validation.annotation.Validated;
9 import org.springframework.web.bind.annotation.PostMapping; 8 import org.springframework.web.bind.annotation.PostMapping;
@@ -20,7 +19,7 @@ import javax.annotation.Resource; @@ -20,7 +19,7 @@ import javax.annotation.Resource;
20 * @since 2024-08-05 16:26:34 19 * @since 2024-08-05 16:26:34
21 */ 20 */
22 @RestController 21 @RestController
23 -@RequestMapping("/order/erp/invoice_bill/") 22 +@RequestMapping("/order/erp/invoice_bill")
24 public class InvoiceBillOrderController { 23 public class InvoiceBillOrderController {
25 /** 24 /**
26 * 服务对象 25 * 服务对象
@@ -34,42 +33,54 @@ public class InvoiceBillOrderController { @@ -34,42 +33,54 @@ public class InvoiceBillOrderController {
34 * @param invoiceBillOrderQueryVO 查询条件 33 * @param invoiceBillOrderQueryVO 查询条件
35 * @return 查询结果 34 * @return 查询结果
36 */ 35 */
37 - @PostMapping("/list")  
38 - public ServerResult list(@RequestBody @Validated({OperateGroup.List.class}) InvoiceBillOrderQueryVO invoiceBillOrderQueryVO) {  
39 - return invoiceBillOrderService.list(invoiceBillOrderQueryVO); 36 + @PostMapping("/list_by_page")
  37 + public ServerResult listByPage(@RequestBody @Validated({OperateGroup.List.class}) InvoiceBillOrderQueryVO invoiceBillOrderQueryVO) {
  38 + return invoiceBillOrderService.listByPage(invoiceBillOrderQueryVO);
40 } 39 }
41 40
42 /** 41 /**
43 - * 通过主键查询单条数据 42 + * 基础订单查询
44 * 43 *
45 - * @param invoiceBillOrderQueryVO 查询条件  
46 - * @return 单条数据 44 + * @param queryVO 查询条件
  45 + * @return 查询结果
47 */ 46 */
48 - @PostMapping("/query_by_id")  
49 - public ServerResult queryById(@RequestBody InvoiceBillOrderQueryVO invoiceBillOrderQueryVO) {  
50 - return invoiceBillOrderService.queryById(invoiceBillOrderQueryVO); 47 + @PostMapping("/list_base_order_info_by")
  48 + public ServerResult listBaseOrderInfoBy(@RequestBody @Validated({OperateGroup.List.class}) InvoiceBaseOrderQueryVO queryVO) {
  49 + return invoiceBillOrderService.listBaseOrderInfoBy(queryVO);
51 } 50 }
52 51
  52 +
53 /** 53 /**
54 - * 新增数 54 + * 创建invoice单
55 * 55 *
56 - * @param invoiceBillOrderVO 数据VO 56 + * @param createVO 数据VO
57 * @return 新增结果 57 * @return 新增结果
58 */ 58 */
59 - @PostMapping("/add")  
60 - public ServerResult add(@RequestBody InvoiceBillOrderVO invoiceBillOrderVO) {  
61 - return invoiceBillOrderService.add(invoiceBillOrderVO); 59 + @PostMapping("/create")
  60 + public ServerResult create(@RequestBody InvoiceBillCreateVO createVO) {
  61 + return invoiceBillOrderService.create(createVO);
  62 + }
  63 +
  64 + /**
  65 + * 更新扣款信息
  66 + *
  67 + * @param deductInfoVO 数据VO
  68 + * @return 编辑结果
  69 + */
  70 + @PostMapping("/update_deduct_info")
  71 + public ServerResult updateDeductInfo(@RequestBody InvoiceBillDeductInfoVO deductInfoVO) {
  72 + return invoiceBillOrderService.updateDeductInfo(deductInfoVO);
62 } 73 }
63 74
64 /** 75 /**
65 - * 编辑数据 76 + * 更新其他金额信息
66 * 77 *
67 - * @param invoiceBillOrderVO 数据VO 78 + * @param amountInfoVO 数据VO
68 * @return 编辑结果 79 * @return 编辑结果
69 */ 80 */
70 - @PostMapping("/edit")  
71 - public ServerResult edit(@RequestBody InvoiceBillOrderVO invoiceBillOrderVO) {  
72 - return invoiceBillOrderService.edit(invoiceBillOrderVO); 81 + @PostMapping("/update_amount_info")
  82 + public ServerResult updateAmountInfo(@RequestBody InvoiceBillAmountInfoVO amountInfoVO) {
  83 + return invoiceBillOrderService.updateAmountInfo(amountInfoVO);
73 } 84 }
74 85
75 /** 86 /**
src/main/java/com/order/erp/domain/vo/order/InvoiceBaseOrderQueryVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.order;
  2 +
  3 +import com.order.erp.domain.vo.BasePageVO;
  4 +import lombok.*;
  5 +import lombok.experimental.SuperBuilder;
  6 +
  7 +import javax.validation.constraints.NotBlank;
  8 +import java.io.Serializable;
  9 +
  10 +/**
  11 + * 应收款账单表(InvoiceBillOrder)实体类
  12 + *
  13 + * @author makejava
  14 + * @since 2024-08-05 16:26:34
  15 + */
  16 +@Data
  17 +@AllArgsConstructor
  18 +@ToString
  19 +@NoArgsConstructor
  20 +@EqualsAndHashCode(callSuper = false)
  21 +@SuperBuilder
  22 +public class InvoiceBaseOrderQueryVO extends BasePageVO implements Serializable {
  23 +
  24 + /**
  25 + * 发票单号
  26 + */
  27 + @NotBlank(message = "发票单号不能为空")
  28 + private String invoiceNo;
  29 +}
  30 +
src/main/java/com/order/erp/domain/vo/order/InvoiceBillAmountInfoVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.order;
  2 +
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
  5 +
  6 +import java.io.Serializable;
  7 +import java.math.BigDecimal;
  8 +
  9 +/**
  10 + * 应收款账单 -- 其他金额信息
  11 + *
  12 + * @author makejava
  13 + * @since 2024-08-05 16:26:33
  14 + */
  15 +@Data
  16 +@AllArgsConstructor
  17 +@ToString
  18 +@NoArgsConstructor
  19 +@EqualsAndHashCode(callSuper = false)
  20 +@SuperBuilder
  21 +public class InvoiceBillAmountInfoVO implements Serializable {
  22 +
  23 + private Long id;
  24 +
  25 + /**
  26 + * 报关单url地址
  27 + */
  28 + private String bgUrl;
  29 +
  30 + /**
  31 + * 实际应收金额
  32 + */
  33 + private BigDecimal actualReceivableAmount;
  34 + /**
  35 + * 实际应付金额1
  36 + */
  37 + private BigDecimal actualPayedAmount1;
  38 + /**
  39 + * 实际应付金额2
  40 + */
  41 + private BigDecimal actualPayedAmount2;
  42 + /**
  43 + * 实际应付金额3
  44 + */
  45 + private BigDecimal actualPayedAmount3;
  46 + /**
  47 + * 其他费用金额
  48 + */
  49 + private BigDecimal otherAmount;
  50 +
  51 +}
src/main/java/com/order/erp/domain/vo/order/InvoiceBillCreateVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.order;
  2 +
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
  5 +
  6 +import java.io.Serializable;
  7 +import java.util.List;
  8 +
  9 +/**
  10 + * 应收款账单表(InvoiceBillOrder)实体类
  11 + *
  12 + * @author makejava
  13 + * @since 2024-08-05 16:26:33
  14 + */
  15 +@Data
  16 +@AllArgsConstructor
  17 +@ToString
  18 +@NoArgsConstructor
  19 +@EqualsAndHashCode(callSuper = false)
  20 +@SuperBuilder
  21 +public class InvoiceBillCreateVO implements Serializable {
  22 + private static final long serialVersionUID = 543899167451834300L;
  23 +
  24 + private Long id;
  25 +
  26 + /**
  27 + * 发票单号
  28 + */
  29 + private String invoiceNo;
  30 +
  31 + /**
  32 + * 报关单url地址
  33 + */
  34 + private String bgUrl;
  35 +
  36 + /**
  37 + * 必须回款日期
  38 + */
  39 + private String backRefundDate;
  40 +
  41 + /**
  42 + * 订单id集合
  43 + */
  44 + private List<Long> orderIds;
  45 +
  46 +
  47 +}
src/main/java/com/order/erp/domain/vo/order/InvoiceBillDeductInfoVO.java 0 → 100644
  1 +package com.order.erp.domain.vo.order;
  2 +
  3 +import lombok.*;
  4 +import lombok.experimental.SuperBuilder;
  5 +
  6 +import java.io.Serializable;
  7 +import java.math.BigDecimal;
  8 +
  9 +/**
  10 + * 应收款账单 -- 扣款信息
  11 + *
  12 + * @author makejava
  13 + * @since 2024-08-05 16:26:33
  14 + */
  15 +@Data
  16 +@AllArgsConstructor
  17 +@ToString
  18 +@NoArgsConstructor
  19 +@EqualsAndHashCode(callSuper = false)
  20 +@SuperBuilder
  21 +public class InvoiceBillDeductInfoVO implements Serializable {
  22 +
  23 + private Long id;
  24 +
  25 + /**
  26 + * 发票单号
  27 + */
  28 + private String invoiceNo;
  29 +
  30 + /**
  31 + * 发生扣款金额
  32 + */
  33 + private BigDecimal deductAmount;
  34 +
  35 + /**
  36 + * 扣款单url地址
  37 + */
  38 + private String deductUrl;
  39 +
  40 +}
src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrderQueryVO.java
@@ -23,53 +23,39 @@ public class InvoiceBillOrderQueryVO extends BasePageVO implements Serializable @@ -23,53 +23,39 @@ public class InvoiceBillOrderQueryVO extends BasePageVO implements Serializable
23 23
24 private List<Long> ids; 24 private List<Long> ids;
25 25
26 -  
27 - private Long id;  
28 /** 26 /**
29 * 发票单号 27 * 发票单号
30 */ 28 */
31 private String invoiceNo; 29 private String invoiceNo;
  30 +
32 /** 31 /**
33 - * 报关单url地址  
34 - */  
35 - private String bgUrl;  
36 - /**  
37 - * 必须回款日期  
38 - */  
39 - private String backRefundDate;  
40 - /**  
41 - * 发生扣款金额  
42 - */  
43 - private Double deductAmount;  
44 - /**  
45 - * 扣款单url地址  
46 - */  
47 - private String deductUrl;  
48 - /**  
49 - * 实际应收金额 32 + * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回
50 */ 33 */
51 - private Double actualReceivableAmount; 34 + private Integer status;
  35 +
52 /** 36 /**
53 - * 实际应付金额1 37 + * 客户编码
54 */ 38 */
55 - private Double actualPayedAmount1; 39 + private String customerCode;
  40 +
56 /** 41 /**
57 - * 实际应付金额2 42 + * 项目号
58 */ 43 */
59 - private Double actualPayedAmount2; 44 + private String projectNo;
  45 +
60 /** 46 /**
61 - * 实际应付金额3 47 + * 生产科
62 */ 48 */
63 - private Double actualPayedAmount3; 49 + private String productionDepartment;
  50 +
64 /** 51 /**
65 - * 其他费用金额 52 + * 内部编号
66 */ 53 */
67 - private Double otherAmount; 54 + private String innerNo;
  55 +
68 /** 56 /**
69 - * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回 57 + * 客户po号
70 */ 58 */
71 - private Integer status;  
72 -  
73 - 59 + private String customerPo;
74 } 60 }
75 61
src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrderVO.java
@@ -4,6 +4,7 @@ import lombok.*; @@ -4,6 +4,7 @@ import lombok.*;
4 import lombok.experimental.SuperBuilder; 4 import lombok.experimental.SuperBuilder;
5 5
6 import java.io.Serializable; 6 import java.io.Serializable;
  7 +import java.math.BigDecimal;
7 8
8 /** 9 /**
9 * 应收款账单表(InvoiceBillOrder)实体类 10 * 应收款账单表(InvoiceBillOrder)实体类
@@ -21,46 +22,57 @@ public class InvoiceBillOrderVO implements Serializable { @@ -21,46 +22,57 @@ public class InvoiceBillOrderVO implements Serializable {
21 private static final long serialVersionUID = 543899167451834300L; 22 private static final long serialVersionUID = 543899167451834300L;
22 23
23 private Long id; 24 private Long id;
  25 +
24 /** 26 /**
25 * 发票单号 27 * 发票单号
26 */ 28 */
27 private String invoiceNo; 29 private String invoiceNo;
  30 +
28 /** 31 /**
29 * 报关单url地址 32 * 报关单url地址
30 */ 33 */
31 private String bgUrl; 34 private String bgUrl;
  35 +
32 /** 36 /**
33 * 必须回款日期 37 * 必须回款日期
34 */ 38 */
35 private String backRefundDate; 39 private String backRefundDate;
  40 +
36 /** 41 /**
37 * 发生扣款金额 42 * 发生扣款金额
38 */ 43 */
39 - private Double deductAmount; 44 + private BigDecimal deductAmount;
  45 +
40 /** 46 /**
41 * 扣款单url地址 47 * 扣款单url地址
42 */ 48 */
43 private String deductUrl; 49 private String deductUrl;
  50 +
44 /** 51 /**
45 * 实际应收金额 52 * 实际应收金额
46 */ 53 */
47 - private Double actualReceivableAmount; 54 + private BigDecimal actualReceivableAmount;
  55 +
48 /** 56 /**
49 * 实际应付金额1 57 * 实际应付金额1
50 */ 58 */
51 - private Double actualPayedAmount1; 59 + private BigDecimal actualPayedAmount1;
  60 +
52 /** 61 /**
53 * 实际应付金额2 62 * 实际应付金额2
54 */ 63 */
55 - private Double actualPayedAmount2; 64 + private BigDecimal actualPayedAmount2;
  65 +
56 /** 66 /**
57 * 实际应付金额3 67 * 实际应付金额3
58 */ 68 */
59 - private Double actualPayedAmount3; 69 + private BigDecimal actualPayedAmount3;
  70 +
60 /** 71 /**
61 * 其他费用金额 72 * 其他费用金额
62 */ 73 */
63 - private Double otherAmount; 74 + private BigDecimal otherAmount;
  75 +
64 /** 76 /**
65 * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回 77 * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回
66 */ 78 */
src/main/java/com/order/erp/service/order/InvoiceBillOrderService.java
@@ -3,8 +3,7 @@ package com.order.erp.service.order; @@ -3,8 +3,7 @@ package com.order.erp.service.order;
3 import com.baomidou.mybatisplus.extension.service.IService; 3 import com.baomidou.mybatisplus.extension.service.IService;
4 import com.order.erp.common.constant.ServerResult; 4 import com.order.erp.common.constant.ServerResult;
5 import com.order.erp.domain.dto.order.InvoiceBillOrderDO; 5 import com.order.erp.domain.dto.order.InvoiceBillOrderDO;
6 -import com.order.erp.domain.vo.order.InvoiceBillOrderQueryVO;  
7 -import com.order.erp.domain.vo.order.InvoiceBillOrderVO; 6 +import com.order.erp.domain.vo.order.*;
8 7
9 /** 8 /**
10 * 应收款账单表(InvoiceBillOrder)表服务接口 9 * 应收款账单表(InvoiceBillOrder)表服务接口
@@ -15,36 +14,42 @@ import com.order.erp.domain.vo.order.InvoiceBillOrderVO; @@ -15,36 +14,42 @@ import com.order.erp.domain.vo.order.InvoiceBillOrderVO;
15 public interface InvoiceBillOrderService extends IService<InvoiceBillOrderDO> { 14 public interface InvoiceBillOrderService extends IService<InvoiceBillOrderDO> {
16 15
17 /** 16 /**
18 - * 通过ID查询单条数据  
19 - *  
20 - * @param invoiceBillOrderQueryVO 主键  
21 - * @return 实例对象  
22 - */  
23 - ServerResult queryById(InvoiceBillOrderQueryVO invoiceBillOrderQueryVO);  
24 -  
25 - /**  
26 * 分页查询 17 * 分页查询
27 * 18 *
28 * @param invoiceBillOrderQueryVO 筛选条件 19 * @param invoiceBillOrderQueryVO 筛选条件
29 * @return 查询结果 20 * @return 查询结果
30 */ 21 */
31 - ServerResult list(InvoiceBillOrderQueryVO invoiceBillOrderQueryVO); 22 + ServerResult listByPage(InvoiceBillOrderQueryVO invoiceBillOrderQueryVO);
  23 +
  24 + /**
  25 + * @param queryVO
  26 + * @return
  27 + */
  28 + ServerResult listBaseOrderInfoBy(InvoiceBaseOrderQueryVO queryVO);
32 29
33 /** 30 /**
34 * 新增数据 31 * 新增数据
35 * 32 *
36 - * @param invoiceBillOrderVO 数据VO 33 + * @param createVO 数据VO
37 * @return 新增结果 34 * @return 新增结果
38 */ 35 */
39 - ServerResult add(InvoiceBillOrderVO invoiceBillOrderVO); 36 + ServerResult create(InvoiceBillCreateVO createVO);
40 37
41 /** 38 /**
42 - * 修改数据 39 + * 更新扣款信息
43 * 40 *
44 - * @param invoiceBillOrderVO 数据VO 41 + * @param deductInfoVO 数据VO
45 * @return 编辑结果 42 * @return 编辑结果
46 */ 43 */
47 - ServerResult edit(InvoiceBillOrderVO invoiceBillOrderVO); 44 + ServerResult updateDeductInfo(InvoiceBillDeductInfoVO deductInfoVO);
  45 +
  46 + /**
  47 + * 更新其他金额信息
  48 + *
  49 + * @param amountInfoVO
  50 + * @return
  51 + */
  52 + ServerResult updateAmountInfo(InvoiceBillAmountInfoVO amountInfoVO);
48 53
49 /** 54 /**
50 * 通过主键删除数据 55 * 通过主键删除数据
src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java
1 package com.order.erp.service.order.impl; 1 package com.order.erp.service.order.impl;
2 2
3 -import cn.hutool.core.bean.BeanUtil;  
4 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
5 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
6 -import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;  
7 import com.baomidou.mybatisplus.core.metadata.IPage; 5 import com.baomidou.mybatisplus.core.metadata.IPage;
  6 +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
8 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; 7 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
9 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; 8 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
10 import com.order.erp.common.constant.Constant; 9 import com.order.erp.common.constant.Constant;
11 import com.order.erp.common.constant.ServerResult; 10 import com.order.erp.common.constant.ServerResult;
12 -import com.order.erp.common.utils.PageUtils; 11 +import com.order.erp.common.exception.BusinessException;
  12 +import com.order.erp.common.utils.StringUtils;
  13 +import com.order.erp.common.utils.TransactionHelper;
  14 +import com.order.erp.domain.dto.BaseDO;
  15 +import com.order.erp.domain.dto.order.InvoiceBillMappingDO;
13 import com.order.erp.domain.dto.order.InvoiceBillOrderDO; 16 import com.order.erp.domain.dto.order.InvoiceBillOrderDO;
14 -import com.order.erp.domain.vo.order.InvoiceBillOrderQueryVO;  
15 -import com.order.erp.domain.vo.order.InvoiceBillOrderVO; 17 +import com.order.erp.domain.dto.order.OrderBaseInfoDO;
  18 +import com.order.erp.domain.vo.order.*;
16 import com.order.erp.mapper.order.InvoiceBillOrderMapper; 19 import com.order.erp.mapper.order.InvoiceBillOrderMapper;
  20 +import com.order.erp.service.order.InvoiceBillMappingService;
17 import com.order.erp.service.order.InvoiceBillOrderService; 21 import com.order.erp.service.order.InvoiceBillOrderService;
  22 +import com.order.erp.service.order.OrderBaseInfoService;
18 import lombok.extern.slf4j.Slf4j; 23 import lombok.extern.slf4j.Slf4j;
19 import org.springframework.stereotype.Service; 24 import org.springframework.stereotype.Service;
20 25
21 -import java.util.List;  
22 -import java.util.Objects; 26 +import javax.annotation.Resource;
  27 +import java.util.*;
  28 +import java.util.stream.Collectors;
23 29
24 /** 30 /**
25 * 应收款账单表(InvoiceBillOrder)表服务实现类 31 * 应收款账单表(InvoiceBillOrder)表服务实现类
@@ -32,78 +38,225 @@ import java.util.Objects; @@ -32,78 +38,225 @@ import java.util.Objects;
32 public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMapper, InvoiceBillOrderDO> implements InvoiceBillOrderService { 38 public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMapper, InvoiceBillOrderDO> implements InvoiceBillOrderService {
33 39
34 40
35 - /**  
36 - * 通过ID查询单条数据  
37 - * <p>  
38 - * invoiceBillOrderQueryVO 主键  
39 - *  
40 - * @return 实例对象  
41 - */  
42 - @Override  
43 - public ServerResult queryById(InvoiceBillOrderQueryVO invoiceBillOrderQueryVO) {  
44 - if (Objects.isNull(invoiceBillOrderQueryVO.getId())) {  
45 - return ServerResult.fail("id 不能为空");  
46 - }  
47 - InvoiceBillOrderDO InvoiceBillOrderDo = getById(invoiceBillOrderQueryVO.getId());  
48 - if (Objects.isNull(InvoiceBillOrderDo)) {  
49 - return ServerResult.success(null);  
50 - }  
51 - return ServerResult.success(BeanUtil.copyProperties(InvoiceBillOrderDo, InvoiceBillOrderVO.class));  
52 - } 41 + @Resource
  42 + private OrderBaseInfoService orderBaseInfoService;
  43 +
  44 + @Resource
  45 + private InvoiceBillMappingService invoiceBillMappingService;
  46 +
  47 + @Resource
  48 + private TransactionHelper transactionHelper;
  49 +
53 50
54 /** 51 /**
55 * 分页查询 52 * 分页查询
56 * 53 *
57 - * @param invoiceBillOrderQueryVO 筛选条件 54 + * @param queryVO 筛选条件
58 * @return 查询结果 55 * @return 查询结果
59 */ 56 */
60 @Override 57 @Override
61 - public ServerResult list(InvoiceBillOrderQueryVO invoiceBillOrderQueryVO) { 58 + public ServerResult listByPage(InvoiceBillOrderQueryVO queryVO) {
  59 + Set<Long> billOrderIds = filterBillOrderIdsBy(queryVO);
62 60
63 - LambdaQueryWrapper<InvoiceBillOrderDO> queryWapper = new LambdaQueryWrapper<InvoiceBillOrderDO>() 61 + LambdaQueryWrapper<InvoiceBillOrderDO> queryWrapper = new LambdaQueryWrapper<InvoiceBillOrderDO>()
64 .eq(InvoiceBillOrderDO::getEnableFlag, Constant.ENABLE_TEN) 62 .eq(InvoiceBillOrderDO::getEnableFlag, Constant.ENABLE_TEN)
  63 + .in(CollectionUtils.isNotEmpty(billOrderIds), InvoiceBillOrderDO::getId, billOrderIds)
  64 + .eq(StringUtils.isNotBlank(queryVO.getInvoiceNo()), InvoiceBillOrderDO::getInvoiceNo, queryVO.getInvoiceNo())
  65 + .eq(Objects.nonNull(queryVO.getStatus()), InvoiceBillOrderDO::getStatus, queryVO.getStatus())
65 .orderByDesc(InvoiceBillOrderDO::getId); 66 .orderByDesc(InvoiceBillOrderDO::getId);
66 - Page page = new Page<>(invoiceBillOrderQueryVO.getPage(), invoiceBillOrderQueryVO.getPageSize());  
67 - IPage<InvoiceBillOrderDO> iPage = page(page, queryWapper);  
68 - invoiceBillOrderQueryVO.setTotal(Long.valueOf(iPage.getTotal()).intValue());  
69 - return ServerResult.success(PageUtils.getPageReturn(null, invoiceBillOrderQueryVO)); 67 + Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize());
  68 + IPage<InvoiceBillOrderDO> iPage = page(page, queryWrapper);
  69 + return ServerResult.success(iPage);
  70 + }
  71 +
  72 + @Override
  73 + public ServerResult listBaseOrderInfoBy(InvoiceBaseOrderQueryVO queryVO) {
  74 + List<InvoiceBillMappingDO> mappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>()
  75 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  76 + .eq(InvoiceBillMappingDO::getInvoiceNo, queryVO.getInvoiceNo()));
  77 + if (CollectionUtils.isEmpty(mappingDOS)) {
  78 + return ServerResult.success();
  79 + }
  80 + Set<Long> orderIds = mappingDOS.stream().map(InvoiceBillMappingDO::getOrderId).collect(Collectors.toSet());
  81 + return ServerResult.success(orderBaseInfoService.listByIds(orderIds));
  82 + }
  83 +
  84 + /**
  85 + * @param queryVO
  86 + * @return
  87 + */
  88 + private Set<Long> filterBillOrderIdsBy(InvoiceBillOrderQueryVO queryVO) {
  89 + List<Long> orderIds = filterOrderIdsBy(queryVO);
  90 + if (CollectionUtils.isEmpty(orderIds)) {
  91 + return null;
  92 + }
  93 + List<InvoiceBillMappingDO> mappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  94 + .in(CollectionUtils.isNotEmpty(orderIds), InvoiceBillMappingDO::getOrderId, orderIds));
  95 + if (CollectionUtils.isEmpty(mappingDOS)) {
  96 + Set<Long> ids = new HashSet<>();
  97 + ids.add(-1L);
  98 + return ids;
  99 + }
  100 + return mappingDOS.stream().map(InvoiceBillMappingDO::getInvoiceBillId).collect(Collectors.toSet());
  101 + }
  102 +
  103 + /**
  104 + * @param queryVO
  105 + * @return
  106 + */
  107 + private List<Long> filterOrderIdsBy(InvoiceBillOrderQueryVO queryVO) {
  108 + Boolean flag = false;
  109 + if (StringUtils.isNotBlank(queryVO.getCustomerCode())) {
  110 + flag = flag | true;
  111 + }
  112 + if (StringUtils.isNotBlank(queryVO.getProductionDepartment())) {
  113 + flag = flag | true;
  114 + }
  115 + if (StringUtils.isNotBlank(queryVO.getCustomerPo())) {
  116 + flag = flag | true;
  117 + }
  118 + if (StringUtils.isNotBlank(queryVO.getInnerNo())) {
  119 + flag = flag | true;
  120 + }
  121 + if (StringUtils.isNotBlank(queryVO.getProjectNo())) {
  122 + flag = flag | true;
  123 + }
  124 + if (!flag) {
  125 + return null;
  126 + }
  127 + LambdaQueryWrapper<OrderBaseInfoDO> queryWrapper = new LambdaQueryWrapper<OrderBaseInfoDO>()
  128 + .eq(OrderBaseInfoDO::getEnableFlag, Constant.ENABLE_TEN)
  129 + .eq(StringUtils.isNotBlank(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode())
  130 + .eq(StringUtils.isNotBlank(queryVO.getProductionDepartment()), OrderBaseInfoDO::getProductionDepartment, queryVO.getProductionDepartment())
  131 + .eq(StringUtils.isNotBlank(queryVO.getCustomerPo()), OrderBaseInfoDO::getCustomerPo, queryVO.getCustomerPo())
  132 + .eq(StringUtils.isNotBlank(queryVO.getInnerNo()), OrderBaseInfoDO::getInnerNo, queryVO.getInnerNo())
  133 + .eq(StringUtils.isNotBlank(queryVO.getProjectNo()), OrderBaseInfoDO::getProjectNo, queryVO.getProjectNo());
  134 + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.list(queryWrapper);
  135 + if (CollectionUtils.isEmpty(orderBaseInfoDOList)) {
  136 + List<Long> orderIds = new ArrayList<>();
  137 + orderIds.add(-1L);
  138 + return orderIds;
  139 + }
  140 + return orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toList());
70 } 141 }
71 142
72 /** 143 /**
73 - * 新增数 144 + * 创建invoice单
74 * 145 *
75 - * @param invoiceBillOrderVO 实例对象 146 + * @param createVO 实例对象
76 * @return 实例对象 147 * @return 实例对象
77 */ 148 */
78 @Override 149 @Override
79 - public ServerResult add(InvoiceBillOrderVO invoiceBillOrderVO) {  
80 - //todo 校验  
81 - if (Objects.nonNull(invoiceBillOrderVO.getId())) {  
82 - invoiceBillOrderVO.setId(null); 150 + public ServerResult create(InvoiceBillCreateVO createVO) {
  151 + if (Objects.nonNull(createVO.getId())) {
  152 + createVO.setId(null);
83 } 153 }
84 - InvoiceBillOrderDO invoiceBillOrderDo = BeanUtil.copyProperties(invoiceBillOrderVO, InvoiceBillOrderDO.class);  
85 154
86 - save(invoiceBillOrderDo); 155 + validaBillOrder(createVO);
  156 +
  157 + InvoiceBillOrderDO invoiceBillOrderDO = buildInvoiceBillOrderDO(createVO);
  158 +
  159 + transactionHelper.run(() -> {
  160 + save(invoiceBillOrderDO);
  161 +
  162 + invoiceBillMappingService.saveBatch(buildInvoiceBillMappingDOS(createVO, invoiceBillOrderDO));
  163 + });
87 164
88 return ServerResult.success(); 165 return ServerResult.success();
89 } 166 }
90 167
91 /** 168 /**
  169 + * @param createVO
  170 + * @return
  171 + */
  172 + private InvoiceBillOrderDO buildInvoiceBillOrderDO(InvoiceBillCreateVO createVO) {
  173 + return InvoiceBillOrderDO.builder()
  174 + .invoiceNo(createVO.getInvoiceNo())
  175 + .bgUrl(createVO.getBgUrl())
  176 + .backRefundDate(createVO.getBackRefundDate())
  177 + .build();
  178 + }
  179 +
  180 + /**
  181 + * @param createVO
  182 + * @param invoiceBillOrderDO
  183 + * @return
  184 + */
  185 + private List<InvoiceBillMappingDO> buildInvoiceBillMappingDOS(InvoiceBillCreateVO createVO, InvoiceBillOrderDO invoiceBillOrderDO) {
  186 + return createVO.getOrderIds().stream().map(x -> {
  187 + return InvoiceBillMappingDO.builder()
  188 + .orderId(x)
  189 + .invoiceBillId(invoiceBillOrderDO.getId())
  190 + .invoiceNo(invoiceBillOrderDO.getInvoiceNo())
  191 + .build();
  192 + }).collect(Collectors.toList());
  193 + }
  194 +
  195 + /**
  196 + * @param createVO
  197 + */
  198 + private void validaBillOrder(InvoiceBillCreateVO createVO) {
  199 + if (CollectionUtils.isEmpty(createVO.getOrderIds())) {
  200 + throw new BusinessException("请勾选订单!");
  201 + }
  202 +
  203 + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(createVO.getOrderIds());
  204 + if (CollectionUtils.isEmpty(orderBaseInfoDOList)) {
  205 + throw new BusinessException("勾选的订单信息不存在!");
  206 + }
  207 +
  208 + if (orderBaseInfoDOList.size() != createVO.getOrderIds().size()) {
  209 + throw new BusinessException("勾选的订单信息有误!");
  210 + }
  211 +
  212 + String invoiceNo = createVO.getInvoiceNo();
  213 +
  214 + List<InvoiceBillOrderDO> invoiceBillOrderDOS = list(new LambdaQueryWrapper<InvoiceBillOrderDO>()
  215 + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
  216 + .eq(InvoiceBillOrderDO::getInvoiceNo, invoiceNo));
  217 + if (CollectionUtils.isNotEmpty(invoiceBillOrderDOS)) {
  218 + throw new BusinessException("存在相同的invoice订单!");
  219 + }
  220 +
  221 + }
  222 +
  223 + /**
92 * 修改数据 224 * 修改数据
93 * 225 *
94 - * @param invoiceBillOrderVO 实例对象 226 + * @param deductInfoVO 实例对象
95 * @return 实例对象 227 * @return 实例对象
96 */ 228 */
97 @Override 229 @Override
98 - public ServerResult edit(InvoiceBillOrderVO invoiceBillOrderVO) {  
99 - //todo 校验  
100 - if (Objects.isNull(invoiceBillOrderVO.getId())) {  
101 - return ServerResult.fail("id 不能为空"); 230 + public ServerResult updateDeductInfo(InvoiceBillDeductInfoVO deductInfoVO) {
  231 + if (Objects.isNull(deductInfoVO.getId())) {
  232 + throw new BusinessException("id 不能为空");
102 } 233 }
103 - InvoiceBillOrderDO invoiceBillOrderDo = BeanUtil.copyProperties(invoiceBillOrderVO, InvoiceBillOrderDO.class);  
104 - 234 + InvoiceBillOrderDO invoiceBillOrderDo = getById(deductInfoVO.getId());
  235 + if (Objects.isNull(invoiceBillOrderDo)) {
  236 + throw new BusinessException("应收款单据不存在");
  237 + }
  238 + invoiceBillOrderDo.setDeductUrl(deductInfoVO.getDeductUrl());
  239 + invoiceBillOrderDo.setDeductAmount(deductInfoVO.getDeductAmount());
105 updateById(invoiceBillOrderDo); 240 updateById(invoiceBillOrderDo);
  241 + return ServerResult.success();
  242 + }
106 243
  244 + @Override
  245 + public ServerResult updateAmountInfo(InvoiceBillAmountInfoVO amountInfoVO) {
  246 + if (Objects.isNull(amountInfoVO.getId())) {
  247 + throw new BusinessException("id 不能为空");
  248 + }
  249 + InvoiceBillOrderDO invoiceBillOrderDo = getById(amountInfoVO.getId());
  250 + if (Objects.isNull(invoiceBillOrderDo)) {
  251 + throw new BusinessException("应收款单据不存在");
  252 + }
  253 + invoiceBillOrderDo.setBgUrl(amountInfoVO.getBgUrl());
  254 + invoiceBillOrderDo.setActualReceivableAmount(amountInfoVO.getActualReceivableAmount());
  255 + invoiceBillOrderDo.setActualPayedAmount1(amountInfoVO.getActualPayedAmount1());
  256 + invoiceBillOrderDo.setActualPayedAmount2(amountInfoVO.getActualPayedAmount2());
  257 + invoiceBillOrderDo.setActualPayedAmount3(amountInfoVO.getActualPayedAmount3());
  258 + invoiceBillOrderDo.setOtherAmount(amountInfoVO.getOtherAmount());
  259 + updateById(invoiceBillOrderDo);
107 return ServerResult.success(); 260 return ServerResult.success();
108 } 261 }
109 262
@@ -123,11 +276,11 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap @@ -123,11 +276,11 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
123 if (CollUtil.isEmpty(invoiceBillOrderList)) { 276 if (CollUtil.isEmpty(invoiceBillOrderList)) {
124 return ServerResult.success(); 277 return ServerResult.success();
125 } 278 }
126 - //todo 校验是否可以逻辑删除  
127 - LambdaUpdateWrapper<InvoiceBillOrderDO> updateWrapper = new LambdaUpdateWrapper<InvoiceBillOrderDO>()  
128 - .in(InvoiceBillOrderDO::getId, ids)  
129 - .set(InvoiceBillOrderDO::getEnableFlag, Constant.UNABLE_TWENTY);  
130 - update(updateWrapper); 279 + transactionHelper.run(() -> {
  280 + removeByIds(ids);
  281 + invoiceBillMappingService.remove(new LambdaQueryWrapper<InvoiceBillMappingDO>().in(InvoiceBillMappingDO::getInvoiceBillId, ids));
  282 + });
  283 +
131 return ServerResult.success(); 284 return ServerResult.success();
132 } 285 }
133 } 286 }