Commit e5d3ac96eb22c781c769bc5d1b807d9bcf6b14a8
1 parent
f21c137d
fix:第二版财务,全部更新
Showing
27 changed files
with
1649 additions
and
344 deletions
src/main/java/com/order/erp/common/utils/EasyPdfUtils.java
... | ... | @@ -357,7 +357,12 @@ public class EasyPdfUtils { |
357 | 357 | cellList.add(createCell("客户订单号", 110F, 60F, 16F, XEasyPdfDefaultFontStyle.BOLD)); |
358 | 358 | cellList.add(createCell("客户款号", 110F, 60F, 16F, XEasyPdfDefaultFontStyle.BOLD)); |
359 | 359 | cellList.add(createCell("REFERENCE", 100F, 60F, 16F, XEasyPdfDefaultFontStyle.BOLD)); |
360 | - cellList.add(createCell("订单颜色", 120F, 60F, 16F, XEasyPdfDefaultFontStyle.BOLD)); | |
360 | + //针对于A01订单单独设置,A01不需要订单颜色。 | |
361 | + if(pdfVOList.get(0).getProjectNo().contains("A01")){ | |
362 | + cellList.add(createCell("COLLECTION", 120F, 60F, 16F, XEasyPdfDefaultFontStyle.BOLD)); | |
363 | + }else{ | |
364 | + cellList.add(createCell("订单颜色", 120F, 60F, 16F, XEasyPdfDefaultFontStyle.BOLD)); | |
365 | + } | |
361 | 366 | cellList.add(createCell("颜色中文", 100F, 60F, 16F, XEasyPdfDefaultFontStyle.BOLD)); |
362 | 367 | cellList.add(createCell("订单图片", 110F, 60F, 16F, XEasyPdfDefaultFontStyle.BOLD)); |
363 | 368 | cellList.add(createCell("产品意见", 150F, 60F, 16F, XEasyPdfDefaultFontStyle.BOLD)); |
... | ... | @@ -381,7 +386,11 @@ public class EasyPdfUtils { |
381 | 386 | dataCellList.add(createCell(StringUtils.isNotEmpty(producePdfVO.getCustomerPo()) ? producePdfVO.getCustomerPo() : "", 110F)); |
382 | 387 | dataCellList.add(createCell(StringUtils.isNotEmpty(producePdfVO.getCustomerStyle()) ? producePdfVO.getCustomerStyle() : "", 110F)); |
383 | 388 | dataCellList.add(createCell(StringUtils.isNotEmpty(producePdfVO.getModeleLo()) ? producePdfVO.getModeleLo() : "", 100F)); |
384 | - dataCellList.add(createCell(StringUtils.isNotEmpty(producePdfVO.getPoColor()) ? producePdfVO.getPoColor() : "", 120F)); | |
389 | + if(producePdfVO.getProjectNo().contains("A01")){ | |
390 | + dataCellList.add(createCell(StringUtils.isNotEmpty(producePdfVO.getCollection()) ? producePdfVO.getCollection() : "", 120F)); | |
391 | + }else{ | |
392 | + dataCellList.add(createCell(StringUtils.isNotEmpty(producePdfVO.getPoColor()) ? producePdfVO.getPoColor() : "", 120F)); | |
393 | + } | |
385 | 394 | dataCellList.add(createCell(StringUtils.isNotEmpty(producePdfVO.getCnColor()) ? producePdfVO.getCnColor() : "", 100F)); |
386 | 395 | if (StringUtils.isNotBlank(producePdfVO.getPicUrl())) { |
387 | 396 | URL url = new URL(producePdfVO.getPicUrl()); | ... | ... |
src/main/java/com/order/erp/controller/InvoiceBillOrderController.java
... | ... | @@ -45,7 +45,7 @@ public class InvoiceBillOrderController { |
45 | 45 | } |
46 | 46 | |
47 | 47 | /** |
48 | - * 基础订单查询 | |
48 | + * 基础订单查询 完成 | |
49 | 49 | * |
50 | 50 | * @param queryVO 查询条件 |
51 | 51 | * @return 查询结果 |
... | ... | @@ -56,7 +56,7 @@ public class InvoiceBillOrderController { |
56 | 56 | } |
57 | 57 | |
58 | 58 | /** |
59 | - * 分析列表 | |
59 | + * 分析列表 完成 | |
60 | 60 | * |
61 | 61 | * @param queryVO 查询条件 |
62 | 62 | * @return 查询结果 |
... | ... | @@ -67,7 +67,7 @@ public class InvoiceBillOrderController { |
67 | 67 | } |
68 | 68 | |
69 | 69 | /** |
70 | - * 导出分析列表 | |
70 | + * 导出分析列表 完成 | |
71 | 71 | * |
72 | 72 | * @param queryVO 查询条件 |
73 | 73 | * @return 查询结果 |
... | ... | @@ -80,7 +80,7 @@ public class InvoiceBillOrderController { |
80 | 80 | } |
81 | 81 | |
82 | 82 | /** |
83 | - * 创建invoice单据 | |
83 | + * 创建invoice单据 完成 1 | |
84 | 84 | * |
85 | 85 | * @param createVO 数据VO |
86 | 86 | * @return 新增结果 |
... | ... | @@ -91,7 +91,7 @@ public class InvoiceBillOrderController { |
91 | 91 | } |
92 | 92 | |
93 | 93 | /** |
94 | - * 获取必须回款日期 | |
94 | + * 获取必须回款日期 完成 1 | |
95 | 95 | * |
96 | 96 | * @param createVO 数据VO |
97 | 97 | * @return 新增结果 |
... | ... | @@ -102,7 +102,7 @@ public class InvoiceBillOrderController { |
102 | 102 | } |
103 | 103 | |
104 | 104 | /** |
105 | - * 更新扣款信息 | |
105 | + * 更新扣款信息 完成 1 | |
106 | 106 | * |
107 | 107 | * @param deductInfoVO 数据VO |
108 | 108 | * @return 编辑结果 |
... | ... | @@ -113,7 +113,7 @@ public class InvoiceBillOrderController { |
113 | 113 | } |
114 | 114 | |
115 | 115 | /** |
116 | - * 更新其他金额信息 | |
116 | + * 更新其他金额信息 完成 1 | |
117 | 117 | * |
118 | 118 | * @param amountInfoVO 数据VO |
119 | 119 | * @return 编辑结果 |
... | ... | @@ -124,7 +124,7 @@ public class InvoiceBillOrderController { |
124 | 124 | } |
125 | 125 | |
126 | 126 | /** |
127 | - * 提交审核 | |
127 | + * 提交审核 完成 1 | |
128 | 128 | * |
129 | 129 | * @param commitApplyVO 数据VO |
130 | 130 | * @return 编辑结果 |
... | ... | @@ -135,7 +135,7 @@ public class InvoiceBillOrderController { |
135 | 135 | } |
136 | 136 | |
137 | 137 | /** |
138 | - * 删除数据 | |
138 | + * 删除数据 完成 1 | |
139 | 139 | * |
140 | 140 | * @param invoiceBillOrderQueryVO 查询条件 |
141 | 141 | * @return 删除是否成功 |
... | ... | @@ -145,7 +145,7 @@ public class InvoiceBillOrderController { |
145 | 145 | return invoiceBillOrderService.deleteById(invoiceBillOrderQueryVO); |
146 | 146 | } |
147 | 147 | /** |
148 | - * 获取扣款单 | |
148 | + * 获取扣款单 完成 1 | |
149 | 149 | * |
150 | 150 | * @param invoiceBillOrderQueryVO 查询条件 |
151 | 151 | * @return 扣款单 |
... | ... | @@ -155,7 +155,7 @@ public class InvoiceBillOrderController { |
155 | 155 | return invoiceBillOrderService.getDeductUrlById(invoiceBillOrderQueryVO); |
156 | 156 | } |
157 | 157 | /** |
158 | - * 重新上传报关单 | |
158 | + * 重新上传报关单 完成 1 | |
159 | 159 | * |
160 | 160 | * @param bgUrl 报关单 |
161 | 161 | * @return |
... | ... | @@ -176,7 +176,7 @@ public class InvoiceBillOrderController { |
176 | 176 | invoiceBillOrderService.exportReceipt(response,queryVO); |
177 | 177 | } |
178 | 178 | /** |
179 | - * 设置必须回款日期 | |
179 | + * 设置必须回款日期 完成 1 | |
180 | 180 | * @param createVO 必须回款日期 |
181 | 181 | * @return |
182 | 182 | */ |
... | ... | @@ -184,5 +184,15 @@ public class InvoiceBillOrderController { |
184 | 184 | public void setBackRefundDate(@RequestBody InvoiceBillCreateVO createVO) { |
185 | 185 | invoiceBillOrderService.setBackRefundDate(createVO); |
186 | 186 | } |
187 | + | |
188 | + /** | |
189 | + *设置备注信息 完成 1 | |
190 | + * @param createVO 备注信息 | |
191 | + * @return | |
192 | + */ | |
193 | + @PostMapping("/notes") | |
194 | + public void byIdAddNotes(@RequestBody InvoiceBillCreateVO createVO) { | |
195 | + invoiceBillOrderService.byIdAddNotes(createVO); | |
196 | + } | |
187 | 197 | } |
188 | 198 | ... | ... |
src/main/java/com/order/erp/controller/ProducePaymentCheckBillOrderController.java
... | ... | @@ -45,7 +45,7 @@ public class ProducePaymentCheckBillOrderController { |
45 | 45 | } |
46 | 46 | |
47 | 47 | /** |
48 | - * 基础订单查询 | |
48 | + * 基础订单查询 wanchen | |
49 | 49 | * |
50 | 50 | * @param queryVO 查询条件 |
51 | 51 | * @return 查询结果 |
... | ... | @@ -56,7 +56,7 @@ public class ProducePaymentCheckBillOrderController { |
56 | 56 | } |
57 | 57 | |
58 | 58 | /** |
59 | - * 分析列表 | |
59 | + * 分析列表 wanchen | |
60 | 60 | * |
61 | 61 | * @param queryVO 查询条件 |
62 | 62 | * @return 查询结果 |
... | ... | @@ -67,7 +67,7 @@ public class ProducePaymentCheckBillOrderController { |
67 | 67 | } |
68 | 68 | |
69 | 69 | /** |
70 | - * 导出分析列表 | |
70 | + * 导出分析列表 wanchen | |
71 | 71 | * |
72 | 72 | * @param queryVO 查询条件 |
73 | 73 | * @return 查询结果 |
... | ... | @@ -80,7 +80,7 @@ public class ProducePaymentCheckBillOrderController { |
80 | 80 | } |
81 | 81 | |
82 | 82 | /** |
83 | - * 创建生产科应付单据 | |
83 | + * 创建生产科应付单据 wanchen 2 | |
84 | 84 | * |
85 | 85 | * @param createVO 数据VO |
86 | 86 | * @return 新增结果 |
... | ... | @@ -91,7 +91,7 @@ public class ProducePaymentCheckBillOrderController { |
91 | 91 | } |
92 | 92 | |
93 | 93 | /** |
94 | - * 获取生产科应回款日期 | |
94 | + * 获取生产科应回款日期 wanchen 2 | |
95 | 95 | * |
96 | 96 | * @param createVO 数据VO |
97 | 97 | * @return 新增结果 |
... | ... | @@ -102,7 +102,7 @@ public class ProducePaymentCheckBillOrderController { |
102 | 102 | } |
103 | 103 | |
104 | 104 | /** |
105 | - * 更新扣款信息 | |
105 | + * 更新扣款信息 wanchen | |
106 | 106 | * |
107 | 107 | * @param deductInfoVO 数据VO |
108 | 108 | * @return 编辑结果 |
... | ... | @@ -113,7 +113,7 @@ public class ProducePaymentCheckBillOrderController { |
113 | 113 | } |
114 | 114 | |
115 | 115 | /** |
116 | - * 更新其他金额信息 | |
116 | + * 更新其他金额信息 wanchen | |
117 | 117 | * |
118 | 118 | * @param amountInfoVO 数据VO |
119 | 119 | * @return 编辑结果 |
... | ... | @@ -124,7 +124,7 @@ public class ProducePaymentCheckBillOrderController { |
124 | 124 | } |
125 | 125 | |
126 | 126 | /** |
127 | - * 更新发票信息 | |
127 | + * 更新发票信息 wanchen | |
128 | 128 | * |
129 | 129 | * @param invoiceInfoVO 数据VO |
130 | 130 | * @return 编辑结果 |
... | ... | @@ -146,7 +146,7 @@ public class ProducePaymentCheckBillOrderController { |
146 | 146 | } |
147 | 147 | |
148 | 148 | /** |
149 | - * 删除数据 | |
149 | + * 删除数据 wanchen | |
150 | 150 | * |
151 | 151 | * @param producePaymentCheckBillOrderQueryVO 查询条件 |
152 | 152 | * @return 删除是否成功 |
... | ... | @@ -156,7 +156,7 @@ public class ProducePaymentCheckBillOrderController { |
156 | 156 | return producePaymentCheckBillOrderService.deleteById(producePaymentCheckBillOrderQueryVO); |
157 | 157 | } |
158 | 158 | /** |
159 | - * 获取扣款单 | |
159 | + * 获取扣款单 wanchen 2 | |
160 | 160 | * |
161 | 161 | * @param producePaymentCheckBillOrderQueryVO 查询条件 |
162 | 162 | * @return 扣款单 |
... | ... | @@ -167,7 +167,7 @@ public class ProducePaymentCheckBillOrderController { |
167 | 167 | return producePaymentCheckBillOrderService.getDeductUrlById(producePaymentCheckBillOrderQueryVO); |
168 | 168 | } |
169 | 169 | /** |
170 | - * 获取生产科发票 | |
170 | + * 获取生产科发票 wanchen 2 | |
171 | 171 | * |
172 | 172 | * @param producePaymentCheckBillOrderQueryVO 查询条件 |
173 | 173 | * @return 扣款单 |
... | ... | @@ -187,10 +187,25 @@ public class ProducePaymentCheckBillOrderController { |
187 | 187 | public void exportReceipt(HttpServletResponse response, @RequestBody ProducePaymentCheckBillOrderDO queryVO) throws IOException { |
188 | 188 | producePaymentCheckBillOrderService.exportReceipt(response,queryVO); |
189 | 189 | } |
190 | - | |
190 | + /** | |
191 | + * 设置应付款日期 wanchen | |
192 | + * | |
193 | + * @param producePaymentCheckBillCreatevo 查询条件 | |
194 | + * @return 日期 | |
195 | + */ | |
191 | 196 | @PostMapping("/setPayedDate") |
192 | 197 | public void setPayedDate(@RequestBody ProducePaymentCheckBillCreateVO producePaymentCheckBillCreatevo) { |
193 | 198 | producePaymentCheckBillOrderService.setPayedDate(producePaymentCheckBillCreatevo); |
194 | 199 | } |
200 | + | |
201 | + /** | |
202 | + *设置备注信息 wanchen 2 | |
203 | + * @param producePaymentCheckBillCreatevo 备注信息 | |
204 | + * @return | |
205 | + */ | |
206 | + @PostMapping("/notes") | |
207 | + public void byIdAddNotes(@RequestBody ProducePaymentCheckBillCreateVO producePaymentCheckBillCreatevo) { | |
208 | + producePaymentCheckBillOrderService.byIdAddNotes(producePaymentCheckBillCreatevo); | |
209 | + } | |
195 | 210 | } |
196 | 211 | ... | ... |
src/main/java/com/order/erp/domain/FinanceEnum.java
0 → 100644
1 | +package com.order.erp.domain; | |
2 | + | |
3 | +import lombok.AllArgsConstructor; | |
4 | +import lombok.Getter; | |
5 | + | |
6 | +/** | |
7 | + * @author: xms | |
8 | + * @description: TODO | |
9 | + * @date: 2023/9/13 18:05 | |
10 | + * @version: 1.0 | |
11 | + */ | |
12 | +@Getter | |
13 | +@AllArgsConstructor | |
14 | +public enum FinanceEnum { | |
15 | +//没有创建invocie号。 | |
16 | + NOT_CREATED(-1,"未创建"), | |
17 | + //创建了invoice号没有提交审核,或者审核被驳回了。 | |
18 | + UNPAID_PAYMENTS(0,"未收款"), | |
19 | + //审核通过了。 | |
20 | + RECEIVED_PAYMENT(10,"已收款"), | |
21 | + ; | |
22 | + private Integer status; | |
23 | + | |
24 | + private String desc; | |
25 | + | |
26 | +} | ... | ... |
src/main/java/com/order/erp/domain/dto/order/InvoiceBillOrderDO.java
... | ... | @@ -29,6 +29,10 @@ public class InvoiceBillOrderDO extends BaseDO implements Serializable { |
29 | 29 | */ |
30 | 30 | private String invoiceNo; |
31 | 31 | /** |
32 | + * 订单id | |
33 | + */ | |
34 | + private Long orderId ; | |
35 | + /** | |
32 | 36 | * 报关单url地址 |
33 | 37 | */ |
34 | 38 | private String bgUrl; |
... | ... | @@ -70,7 +74,7 @@ public class InvoiceBillOrderDO extends BaseDO implements Serializable { |
70 | 74 | */ |
71 | 75 | private BigDecimal otherAmount; |
72 | 76 | /** |
73 | - * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回 | |
77 | + * 状态 -1:未创建、0:未收款,10:已收款 | |
74 | 78 | */ |
75 | 79 | private Integer status; |
76 | 80 | //需要在表中添加字段。 |
... | ... | @@ -100,4 +104,8 @@ public class InvoiceBillOrderDO extends BaseDO implements Serializable { |
100 | 104 | * */ |
101 | 105 | private String trackerUser; |
102 | 106 | |
107 | + /** | |
108 | + * 备注信息 | |
109 | + * */ | |
110 | + private String notes; | |
103 | 111 | } | ... | ... |
src/main/java/com/order/erp/domain/dto/order/OrderBaseInfoDO.java
src/main/java/com/order/erp/domain/dto/order/OrderFieldLockApplyDO.java
... | ... | @@ -6,6 +6,7 @@ import lombok.*; |
6 | 6 | import lombok.experimental.SuperBuilder; |
7 | 7 | |
8 | 8 | import java.io.Serializable; |
9 | +import java.util.List; | |
9 | 10 | |
10 | 11 | /** |
11 | 12 | * 用户订单-字段锁定申请表(OrderFeildLockApply)实体类 |
... | ... | @@ -67,4 +68,9 @@ public class OrderFieldLockApplyDO extends BaseDO implements Serializable { |
67 | 68 | */ |
68 | 69 | private String applyRemark; |
69 | 70 | |
71 | + /** | |
72 | + * 这个字段完全是为财务板块创建的,因为提交审核是可以一起提交,所以你把选中的多个订单id都放到一起提交审核,在设置orderid时只能设置一个,所以你其他的几个你必须要找地方存储。所以才用这个,把其他几个都放在里面存储进去。 | |
73 | + */ | |
74 | + private String financeId; | |
75 | + | |
70 | 76 | } | ... | ... |
src/main/java/com/order/erp/domain/dto/order/ProducePaymentCheckBillOrderDO.java
... | ... | @@ -28,6 +28,11 @@ public class ProducePaymentCheckBillOrderDO extends BaseDO implements Serializab |
28 | 28 | * 生产科对账单 |
29 | 29 | */ |
30 | 30 | private String checkNo; |
31 | + | |
32 | + /** | |
33 | + * orderId | |
34 | + */ | |
35 | + private Long orderId; | |
31 | 36 | /** |
32 | 37 | * 发票url地址 |
33 | 38 | */ |
... | ... | @@ -108,6 +113,9 @@ public class ProducePaymentCheckBillOrderDO extends BaseDO implements Serializab |
108 | 113 | * 跟单 --业务创建单子,跟单也能看到。 |
109 | 114 | * */ |
110 | 115 | private String trackerUser; |
111 | - | |
116 | + /** | |
117 | + * 备注。 | |
118 | + * */ | |
119 | + private String notes; | |
112 | 120 | |
113 | 121 | } | ... | ... |
src/main/java/com/order/erp/domain/pdf/OrderProducePdfVO.java
src/main/java/com/order/erp/domain/vo/order/FinanceOrderResultVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | |
2 | + | |
3 | +import com.order.erp.domain.dto.order.InvoiceBillOrderDO; | |
4 | +import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; | |
5 | +import lombok.*; | |
6 | +import lombok.experimental.SuperBuilder; | |
7 | + | |
8 | +import java.math.BigDecimal; | |
9 | + | |
10 | +@Data | |
11 | +@AllArgsConstructor | |
12 | +@ToString | |
13 | +@NoArgsConstructor | |
14 | +@EqualsAndHashCode(callSuper = false) | |
15 | +@SuperBuilder | |
16 | + | |
17 | +public class FinanceOrderResultVO extends OrderBaseInfoVO { | |
18 | + | |
19 | + //基本信息 | |
20 | + /** | |
21 | + * orderId | |
22 | + */ | |
23 | + private Long id; | |
24 | + /** | |
25 | + * 客户编码 | |
26 | + */ | |
27 | + private String customerCode; | |
28 | + /** | |
29 | + * 项目号 | |
30 | + */ | |
31 | + private String projectNo; | |
32 | + /** | |
33 | + * 生产科 | |
34 | + */ | |
35 | + private String productionDepartment; | |
36 | + /** | |
37 | + * 内部编号 | |
38 | + */ | |
39 | + private String innerNo; | |
40 | + /** | |
41 | + * 缩略图片地址 | |
42 | + */ | |
43 | + private String smallPicUrl; | |
44 | + /** | |
45 | + * 数量 | |
46 | + */ | |
47 | + private Integer orderCount; | |
48 | + /** | |
49 | + * 生成科拖货时间 | |
50 | + */ | |
51 | + private String productionDepartmentConsignTime; | |
52 | + /** | |
53 | + * 订单上HOD时间 | |
54 | + */ | |
55 | + private String orderHodTime; | |
56 | + | |
57 | + | |
58 | + //invoice信息 | |
59 | + //应收款信息 | |
60 | +// private InvoiceBillOrderDO invoiceBillOrderDO; | |
61 | + private Long invoiceId; | |
62 | + /** | |
63 | + * 发票单号 | |
64 | + */ | |
65 | + private String invoiceNo; | |
66 | + /** | |
67 | + * 报关单url地址 | |
68 | + */ | |
69 | + private String invoiceBgUrl; | |
70 | + /** | |
71 | + * 必须回款日期 | |
72 | + */ | |
73 | + private String invoiceBackRefundDate; | |
74 | + /** | |
75 | + * 实际回款日期 | |
76 | + */ | |
77 | + private String invoiceActualRefundDate; | |
78 | + | |
79 | + /** | |
80 | + * 发生扣款金额 | |
81 | + */ | |
82 | + private BigDecimal invoiceDeductAmount; | |
83 | + /** | |
84 | + * 扣款单url地址 | |
85 | + */ | |
86 | + private String invoiceDeductUrl; | |
87 | + /** | |
88 | + * 实际应收金额 | |
89 | + */ | |
90 | + private BigDecimal invoiceActualReceivableAmount; | |
91 | + /** | |
92 | + * 实际应付金额1 | |
93 | + */ | |
94 | + private BigDecimal invoiceActualPayedAmount1; | |
95 | + /** | |
96 | + * 实际应付金额2 | |
97 | + */ | |
98 | + private BigDecimal invoiceActualPayedAmount2; | |
99 | + /** | |
100 | + * 实际应付金额3 | |
101 | + */ | |
102 | + private BigDecimal invoiceActualPayedAmount3; | |
103 | + /** | |
104 | + * 其他费用金额 | |
105 | + */ | |
106 | + private BigDecimal invoiceOtherAmount; | |
107 | + /** | |
108 | + * 状态 -1:未创建、0:未收款,10:已收款 | |
109 | + */ | |
110 | + private Integer invoiceStatus; | |
111 | + | |
112 | + /** | |
113 | + * 备注信息 | |
114 | + * */ | |
115 | + private String invoiceNotes; | |
116 | + | |
117 | + //应付款信息 | |
118 | +// private ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO; | |
119 | + | |
120 | + private Long checkId; | |
121 | + /** | |
122 | + * 生产科对账单 | |
123 | + */ | |
124 | + private String checkNo; | |
125 | + /** | |
126 | + * 发票url地址 | |
127 | + */ | |
128 | + private String checkInvoiceUrl; | |
129 | + /** | |
130 | + * 扣款单url地址 | |
131 | + */ | |
132 | + private String checkDeductUrl; | |
133 | + /** | |
134 | + * 生产科应付款日期 | |
135 | + */ | |
136 | + private String checkPayedDate; | |
137 | + | |
138 | + /** | |
139 | + * 生产科实际付款日期 | |
140 | + */ | |
141 | + private String checkActualPayedDate; | |
142 | + | |
143 | + /** | |
144 | + * 生产科扣款责任部门 | |
145 | + */ | |
146 | + private String checkDeductDept; | |
147 | + /** | |
148 | + * 生产科扣款金额 | |
149 | + */ | |
150 | + private BigDecimal checkDeductAmount; | |
151 | + /** | |
152 | + * 实际应付金额 | |
153 | + */ | |
154 | + private BigDecimal checkActualPayedAmount; | |
155 | + /** | |
156 | + * 实际应付金额1 | |
157 | + */ | |
158 | + private BigDecimal checkActualPayedAmount1; | |
159 | + /** | |
160 | + * 实际应付金额2 | |
161 | + */ | |
162 | + private BigDecimal checkActualPayedAmount2; | |
163 | + /** | |
164 | + * 实际应付金额3 | |
165 | + */ | |
166 | + private BigDecimal checkActualPayedAmount3; | |
167 | + /** | |
168 | + * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回 | |
169 | + */ | |
170 | + private Integer checkPayStatus; | |
171 | + //需要在表中添加三个字段。 | |
172 | + /** | |
173 | + * 生产科发票审核状态 0:待审核、1:审核通过,2:审核驳回 | |
174 | + */ | |
175 | + private Integer checkDepartmentInvoiceStatus; | |
176 | + /** | |
177 | + * 备注。 | |
178 | + * */ | |
179 | + private String checkNotes; | |
180 | + | |
181 | + | |
182 | + //利润信息 | |
183 | +// private OrderProfitAnalysisVO profitAnalysisInfo; | |
184 | + /** | |
185 | + * 利润id。 | |
186 | + * */ | |
187 | + private Long profitId; | |
188 | + /** | |
189 | + * 客户单价$ | |
190 | + */ | |
191 | + private Double customerPrice; | |
192 | + /** | |
193 | + * 客户总价$ | |
194 | + */ | |
195 | + private Double customerTotalPrice; | |
196 | + | |
197 | + /** | |
198 | + * 生成科单价¥ | |
199 | + */ | |
200 | + private Double productionDepartmentPrice; | |
201 | + /** | |
202 | + * 生成科总价¥ | |
203 | + */ | |
204 | + private Double productionDepartmentTotalPrice; | |
205 | + | |
206 | + | |
207 | + | |
208 | + | |
209 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillAnalysisResultVO.java
... | ... | @@ -42,7 +42,7 @@ public class InvoiceBillAnalysisResultVO implements Serializable { |
42 | 42 | private BigDecimal deductAmount; |
43 | 43 | |
44 | 44 | /** |
45 | - * 实际应收金额总计 实际应收1+2+3 | |
45 | + * 实际收款金额汇总 实际收款1+2+3 | |
46 | 46 | */ |
47 | 47 | private BigDecimal actualReceivableAmount; |
48 | 48 | |
... | ... | @@ -61,9 +61,29 @@ public class InvoiceBillAnalysisResultVO implements Serializable { |
61 | 61 | * 未付金额合计 |
62 | 62 | */ |
63 | 63 | private BigDecimal otherTotalAmount; |
64 | - | |
65 | - /** | |
66 | - * 合计数据 | |
67 | - */ | |
68 | - | |
64 | + //可以省略! | |
65 | +// /** | |
66 | +// * 多个不同客户编码的订单合计数据 客户总金额汇总 | |
67 | +// */ | |
68 | +// private BigDecimal sumOrderCustomerTotalPrice; | |
69 | +// /** | |
70 | +// * 多个不同客户编码的订单合计数据 客户扣款金额汇总 | |
71 | +// */ | |
72 | +// private BigDecimal sumOrderDeductAmount; | |
73 | +// /** | |
74 | +// * 多个不同客户编码的订单合计数据 实际收款金额汇总 | |
75 | +// */ | |
76 | +// private BigDecimal sumOrderActualReceivableAmount; | |
77 | +// /** | |
78 | +// * 多个不同客户编码的订单合计数据 未收金额汇总 | |
79 | +// */ | |
80 | +// private BigDecimal sumOrderActualPayedAmount; | |
81 | +// /** | |
82 | +// * 多个不同客户编码的订单合计数据 实际应收金额汇总 | |
83 | +// */ | |
84 | +// private BigDecimal sumOrderOtherAmount; | |
85 | +// /** | |
86 | +// * 多个不同客户编码的订单合计数据 未付金额汇总 | |
87 | +// */ | |
88 | +// private BigDecimal sumOrderOtherTotalAmount; | |
69 | 89 | } | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillCommitApplyVO.java
... | ... | @@ -4,6 +4,7 @@ import lombok.*; |
4 | 4 | import lombok.experimental.SuperBuilder; |
5 | 5 | |
6 | 6 | import java.io.Serializable; |
7 | +import java.util.List; | |
7 | 8 | |
8 | 9 | /** |
9 | 10 | * 应收款账单 -- 提交审核 |
... | ... | @@ -19,7 +20,8 @@ import java.io.Serializable; |
19 | 20 | @SuperBuilder |
20 | 21 | public class InvoiceBillCommitApplyVO implements Serializable { |
21 | 22 | |
22 | - private Long id; | |
23 | + private List<Long> id; | |
24 | + //日期 | |
23 | 25 | private String actualRefundDate; |
24 | 26 | private String payee; |
25 | 27 | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillCreateVO.java
src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrderQueryVO.java
... | ... | @@ -30,43 +30,94 @@ public class InvoiceBillOrderQueryVO extends BasePageVO implements Serializable |
30 | 30 | private String invoiceNo; |
31 | 31 | |
32 | 32 | /** |
33 | - * 总经理审核状态 -1,未提交审核,0:待审核、1:审核通过,2:审核驳回 | |
33 | + * 生产科对账单号 | |
34 | 34 | */ |
35 | - private Integer status; | |
35 | + private String checkNo; | |
36 | 36 | |
37 | 37 | /** |
38 | - * 客户编码 | |
38 | + * 发票状态 总经理审核状态 -1,未创建,0:未收款、10:已收款 | |
39 | + */ | |
40 | + private Integer invoiceStatus; | |
41 | + | |
42 | + /** | |
43 | + * 对账单号状态 总经理审核状态 -1,未创建,0:未收款、10:已收款 | |
44 | + */ | |
45 | + private Integer checkNoStatus; | |
46 | + | |
47 | + /** | |
48 | + * order订单的客户编码 | |
39 | 49 | */ |
40 | 50 | private String customerCode; |
41 | 51 | |
42 | 52 | /** |
43 | - * 项目号 | |
53 | + * order订单的项目号 | |
44 | 54 | */ |
45 | 55 | private String projectNo; |
46 | 56 | |
47 | 57 | /** |
48 | - * 生产科 | |
58 | + * order订单的生产科 | |
49 | 59 | */ |
50 | 60 | private String productionDepartment; |
51 | 61 | |
52 | 62 | /** |
53 | - * 内部编号 | |
63 | + * order订单的内部编号 | |
54 | 64 | */ |
55 | 65 | private String innerNo; |
56 | 66 | |
57 | 67 | /** |
58 | - * 客户po号 | |
68 | + * order订单的客户po号 | |
59 | 69 | */ |
60 | 70 | private String customerPo; |
61 | 71 | |
62 | 72 | /** |
63 | - * 开始时间 | |
73 | + * invoice的开始时间 | |
74 | + */ | |
75 | + private String invoiceStartTime; | |
76 | + | |
77 | + /** | |
78 | + * invoice的结束时间 | |
79 | + */ | |
80 | + private String invoiceEndTime; | |
81 | + /** | |
82 | + * check的开始时间 | |
64 | 83 | */ |
65 | - private String startTime; | |
84 | + private String checkStartTime; | |
66 | 85 | |
67 | 86 | /** |
68 | - * 结束时间 | |
87 | + * check的结束时间 | |
88 | + */ | |
89 | + private String checkEndTime; | |
90 | + /** | |
91 | + * order订单的开始时间 | |
92 | + */ | |
93 | + private String createStartTime; | |
94 | + /** | |
95 | + * order订单的结束时间 | |
96 | + */ | |
97 | + private String createEndTime; | |
98 | + /** | |
99 | + * order订单的生产科拖货开始时间 | |
100 | + */ | |
101 | + private String productionDepartmentConsignStartTime; | |
102 | + /** | |
103 | + * order订单的生产科拖货结束时间 | |
104 | + */ | |
105 | + private String productionDepartmentConsignEndTime; | |
106 | + /** | |
107 | + * order订单的HOD开始时间 | |
108 | + */ | |
109 | + private String orderHodStartTime; | |
110 | + /** | |
111 | + * order订单的HOD结束时间 | |
112 | + */ | |
113 | + private String orderHodEndTime; | |
114 | + /** | |
115 | + * 跟单员 用来判断跟单员只能看到跟单员的数据 | |
116 | + */ | |
117 | + private String trackerUserName; | |
118 | + /** | |
119 | + * 业务员 用来判断业务员只能看到业务员的数据 | |
69 | 120 | */ |
70 | - private String endTime; | |
121 | + private String businessUserName; | |
71 | 122 | } |
72 | 123 | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceFieldVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | |
2 | + | |
3 | +import lombok.*; | |
4 | +import lombok.experimental.SuperBuilder; | |
5 | + | |
6 | +import java.math.BigDecimal; | |
7 | +import java.util.List; | |
8 | + | |
9 | +@Data | |
10 | +@AllArgsConstructor | |
11 | +@ToString | |
12 | +@NoArgsConstructor | |
13 | +@EqualsAndHashCode(callSuper = false) | |
14 | +@SuperBuilder | |
15 | +public class InvoiceFieldVO { | |
16 | + | |
17 | + | |
18 | + /** | |
19 | + * 订单id,这里取选中多个集合中的第第一个id作为申请id。 | |
20 | + */ | |
21 | + private List<Long> invoiceId; | |
22 | + /** | |
23 | + * 订单id,这里取选中多个集合中的第第一个id作为申请id。 | |
24 | + */ | |
25 | + private List<String> innerNo; | |
26 | + /** | |
27 | + * 发票单号 | |
28 | + */ | |
29 | + private String invoiceNo; | |
30 | + /** | |
31 | + * 必须回款日期 | |
32 | + */ | |
33 | + private String backRefundDate; | |
34 | + /** | |
35 | + * 实际回款日期 | |
36 | + */ | |
37 | + private String actualRefundDate; | |
38 | + /** | |
39 | + * 发生扣款金额 | |
40 | + */ | |
41 | + private BigDecimal deductAmount; | |
42 | + /** | |
43 | + * 其他费用金额 | |
44 | + */ | |
45 | + private BigDecimal otherAmount; | |
46 | + /** | |
47 | + * payee 收款单位 | |
48 | + */ | |
49 | + private String payee; | |
50 | + /** | |
51 | + * 实际收款金额汇总 | |
52 | + * */ | |
53 | + private BigDecimal totalPayAmount; | |
54 | + /** | |
55 | + * 客户总价金额汇总 | |
56 | + * */ | |
57 | + private BigDecimal totalCustomerAmount; | |
58 | + /** | |
59 | + * 跟单员 | |
60 | + * */ | |
61 | + private String trackerUser; | |
62 | + /** | |
63 | + * 业务员 | |
64 | + * */ | |
65 | + private String businesPerson; | |
66 | + /** | |
67 | + * 财务人员 | |
68 | + * */ | |
69 | + private String financePerson; | |
70 | + | |
71 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/OrderLockFieldVO.java
... | ... | @@ -48,13 +48,18 @@ public class OrderLockFieldVO implements Serializable { |
48 | 48 | /** |
49 | 49 | * 应收款账单字段 |
50 | 50 | */ |
51 | - private InvoiceBillOrderDO invoiceBillOrderDO; | |
51 | +// private List<InvoiceBillOrderDO> invoiceBillOrderDOList; | |
52 | + | |
53 | + private InvoiceFieldVO invoiceFieldVO; | |
52 | 54 | |
53 | 55 | /** |
54 | 56 | * 应付款账单字段 |
55 | 57 | */ |
58 | + //这个专门给发票审核用的。 | |
56 | 59 | private ProducePaymentCheckBillOrderDO checkBillOrderDO; |
57 | 60 | |
61 | + private ProducePaymentCheckBillFieldVO producePaymentCheckBillFieldVO; | |
62 | + | |
58 | 63 | /** |
59 | 64 | * 导出指定订单id集合 |
60 | 65 | */ | ... | ... |
src/main/java/com/order/erp/domain/vo/order/ProducePaymentCheckBillCommitApplyVO.java
... | ... | @@ -4,6 +4,7 @@ import lombok.*; |
4 | 4 | import lombok.experimental.SuperBuilder; |
5 | 5 | |
6 | 6 | import java.io.Serializable; |
7 | +import java.util.List; | |
7 | 8 | |
8 | 9 | /** |
9 | 10 | * 生产科对账单应收账单(ProducePaymentCheckBillOrder)实体类 |
... | ... | @@ -19,7 +20,7 @@ import java.io.Serializable; |
19 | 20 | @SuperBuilder |
20 | 21 | public class ProducePaymentCheckBillCommitApplyVO implements Serializable { |
21 | 22 | |
22 | - private Long id; | |
23 | + private List<Long> id; | |
23 | 24 | |
24 | 25 | private String actualPayedDate; |
25 | 26 | } | ... | ... |
src/main/java/com/order/erp/domain/vo/order/ProducePaymentCheckBillCreateVO.java
src/main/java/com/order/erp/domain/vo/order/ProducePaymentCheckBillFieldVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | |
2 | + | |
3 | +import lombok.*; | |
4 | +import lombok.experimental.SuperBuilder; | |
5 | + | |
6 | +import java.math.BigDecimal; | |
7 | +import java.util.List; | |
8 | + | |
9 | +@Data | |
10 | +@AllArgsConstructor | |
11 | +@ToString | |
12 | +@NoArgsConstructor | |
13 | +@EqualsAndHashCode(callSuper = false) | |
14 | +@SuperBuilder | |
15 | +public class ProducePaymentCheckBillFieldVO { | |
16 | + | |
17 | + | |
18 | + /** | |
19 | + * 订单id,这里选取多个集合中的第第一个id作为申请id。 | |
20 | + */ | |
21 | + private List<Long> producePaymentCheckBillId; | |
22 | + /** | |
23 | + * 内部编号。 | |
24 | + */ | |
25 | + private List<String> innerNo; | |
26 | + | |
27 | + /** | |
28 | + * 生产科对账单 | |
29 | + */ | |
30 | + private String checkNo; | |
31 | + | |
32 | + /** | |
33 | + * 发票url地址 | |
34 | + */ | |
35 | + private String invoiceUrl; | |
36 | + /** | |
37 | + * 生产科应付款日期 | |
38 | + */ | |
39 | + private String payedDate; | |
40 | + | |
41 | + /** | |
42 | + * 生产科实际付款日期 | |
43 | + */ | |
44 | + private String actualPayedDate; | |
45 | + | |
46 | + /** | |
47 | + * 生产科扣款金额 | |
48 | + */ | |
49 | + private BigDecimal deductAmount; | |
50 | + /** | |
51 | + * 实际应付金额 | |
52 | + */ | |
53 | + private BigDecimal actualPayedAmount; | |
54 | + /** | |
55 | + * 实际付款金额汇总 | |
56 | + * */ | |
57 | + private BigDecimal totalActualPayedAmount; | |
58 | + | |
59 | + /** | |
60 | + * 未付金额 | |
61 | + * */ | |
62 | + private BigDecimal unPayedAmount; | |
63 | + /** | |
64 | + * 跟单员 | |
65 | + * */ | |
66 | + private String trackerUser; | |
67 | + /** | |
68 | + * 业务员 | |
69 | + * */ | |
70 | + private String businesPerson; | |
71 | + /** | |
72 | + * 财务人员 | |
73 | + * */ | |
74 | + private String financePerson; | |
75 | + /** | |
76 | + * 生产科 | |
77 | + * */ | |
78 | + private String productionName; | |
79 | + | |
80 | +} | ... | ... |
src/main/java/com/order/erp/mapper/order/InvoiceBillOrderMapper.java
1 | 1 | package com.order.erp.mapper.order; |
2 | 2 | |
3 | 3 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
4 | +import com.baomidou.mybatisplus.core.metadata.IPage; | |
5 | +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |
4 | 6 | import com.order.erp.domain.dto.order.InvoiceBillOrderDO; |
7 | +import com.order.erp.domain.vo.order.FinanceOrderResultVO; | |
8 | +import com.order.erp.domain.vo.order.InvoiceBillOrderQueryVO; | |
9 | +import org.apache.ibatis.annotations.Param; | |
5 | 10 | import org.apache.ibatis.annotations.Select; |
6 | 11 | |
7 | 12 | import java.util.List; |
... | ... | @@ -16,5 +21,7 @@ public interface InvoiceBillOrderMapper extends BaseMapper<InvoiceBillOrderDO> { |
16 | 21 | @Select("SELECT * FROM invoice_bill_order WHERE status in('-1','20') and enable_flag=10 and DATE_SUB(CURDATE(), INTERVAL 1 YEAR) <= date(create_time);") |
17 | 22 | List<InvoiceBillOrderDO> getOverEventList(); |
18 | 23 | |
24 | + IPage<FinanceOrderResultVO> byConditionGetOrder(@Param("page") Page<FinanceOrderResultVO> page, @Param("queryVO") InvoiceBillOrderQueryVO queryVO); | |
25 | + | |
19 | 26 | } |
20 | 27 | ... | ... |
src/main/java/com/order/erp/service/order/InvoiceBillOrderService.java
src/main/java/com/order/erp/service/order/ProducePaymentCheckBillOrderService.java
... | ... | @@ -109,4 +109,5 @@ public interface ProducePaymentCheckBillOrderService extends IService<ProducePay |
109 | 109 | |
110 | 110 | List<ProducePaymentCheckBillOrderDO> getOverEventList(); |
111 | 111 | ServerResult setPayedDate(ProducePaymentCheckBillCreateVO createVO); |
112 | + ServerResult byIdAddNotes(ProducePaymentCheckBillCreateVO createVO); | |
112 | 113 | } | ... | ... |
src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java
... | ... | @@ -20,6 +20,7 @@ import com.order.erp.common.utils.TransactionHelper; |
20 | 20 | import com.order.erp.config.DataScope; |
21 | 21 | import com.order.erp.domain.ApplyStatusEnum; |
22 | 22 | import com.order.erp.domain.ApplyTypeEnum; |
23 | +import com.order.erp.domain.FinanceEnum; | |
23 | 24 | import com.order.erp.domain.RoleEnum; |
24 | 25 | import com.order.erp.domain.dto.BaseDO; |
25 | 26 | import com.order.erp.domain.dto.SystemSettingDO; |
... | ... | @@ -46,6 +47,7 @@ import java.time.LocalDateTime; |
46 | 47 | import java.util.*; |
47 | 48 | import java.util.function.Function; |
48 | 49 | import java.util.stream.Collectors; |
50 | +import java.util.stream.Stream; | |
49 | 51 | |
50 | 52 | /** |
51 | 53 | * 应收款账单表(InvoiceBillOrder)表服务实现类 |
... | ... | @@ -79,6 +81,9 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
79 | 81 | @Resource |
80 | 82 | private TransactionHelper transactionHelper; |
81 | 83 | |
84 | + @Resource | |
85 | + private ProducePaymentCheckBillOrderService producePaymentCheckBillOrderService; | |
86 | + | |
82 | 87 | |
83 | 88 | /** |
84 | 89 | * 分页查询 |
... | ... | @@ -88,7 +93,12 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
88 | 93 | */ |
89 | 94 | @Override |
90 | 95 | public ServerResult listByPage(InvoiceBillOrderQueryVO queryVO) { |
91 | - RoleEnum role = dataScope.getRole(); | |
96 | + //分页查询既会筛选基本信息也会筛选invoice信息。只能是选通过一边,要么是基本信息这边,要么是invoice这边,然后根据对应invoice或者orderId去查询。 | |
97 | + //例如:查询基本信息中项目号为A01-C2409,并且invoice状态为已通过,那么就先去基本信息中查找A01-C2409,然后找到对应的invoice,判断A01-C2409对应的订单集合是否有invoice,有的话,就查找已通过的invocie。 | |
98 | + //要是查询invoice为67,并且订单HOD时间小于2024-12-25,那么就先去invoice中查找是否有checkNo为67的订单,然后查找对应orderId,使用orderId去查找对应订单基本信息,查看是否有HOD小于2024-12-25的单子。 | |
99 | + | |
100 | + | |
101 | + /* RoleEnum role = dataScope.getRole(); | |
92 | 102 | LambdaQueryWrapper<InvoiceBillOrderDO> queryWrapper = getQueryWrapper(queryVO); |
93 | 103 | //跟单也只能看到自己创建的 业务只能看到自己的 |
94 | 104 | if(Objects.nonNull(role) && role.getId().equals(RoleEnum.TRACKER_USER.getId())){ |
... | ... | @@ -99,9 +109,192 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
99 | 109 | } |
100 | 110 | Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize()); |
101 | 111 | IPage<InvoiceBillOrderDO> iPage = page(page, queryWrapper); |
102 | - return ServerResult.success(iPage); | |
103 | - } | |
112 | + //创建另一个page,包含订单基本信息与invoice,然后一起返回。 | |
113 | + return ServerResult.success(iPage);*/ | |
114 | + | |
115 | + //一个条件也没有。 | |
116 | +// if(true) { | |
117 | +// Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize()); | |
118 | +// IPage<OrderBaseInfoDO> iPage = orderBaseInfoService.page(page, new LambdaQueryWrapper<OrderBaseInfoDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).orderByDesc(OrderBaseInfoDO::getId)); | |
119 | +// List<OrderBaseInfoDO> orderList = iPage.getRecords(); | |
120 | +// //获取关联的信息。 | |
121 | +// List<FinanceOrderResultVO> financeOrderResultVOList = null; | |
122 | +// if (CollectionUtils.isNotEmpty(orderList)) { | |
123 | +// List<Long> orderIds = orderList.stream().filter(Objects::nonNull).map(item -> item.getId()).collect(Collectors.toList()); | |
124 | +// List<InvoiceBillOrderDO> invoiceBillOrderDOList = list(new LambdaQueryWrapper<InvoiceBillOrderDO>() | |
125 | +// .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(InvoiceBillOrderDO::getOrderId, orderIds)); | |
126 | +// List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList = producePaymentCheckBillOrderService.list(new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>() | |
127 | +// .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(ProducePaymentCheckBillOrderDO::getOrderId, orderIds)); | |
128 | +// Map<Long, InvoiceBillOrderDO> invoiceBillOrderDOMap = invoiceBillOrderDOList.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getOrderId, Function.identity(), (x, y) -> x)); | |
129 | +// Map<Long, ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOMap = producePaymentCheckBillOrderDOList.stream().collect(Collectors.toMap(ProducePaymentCheckBillOrderDO::getOrderId, Function.identity(), (x, y) -> x)); | |
130 | +// financeOrderResultVOList = orderList.stream().filter(Objects::nonNull).map(x -> { | |
131 | +// FinanceOrderResultVO financeOrderResultVO = new FinanceOrderResultVO(); | |
132 | +// BeanUtils.copyProperties(x, financeOrderResultVO); | |
133 | +// if (invoiceBillOrderDOMap.containsKey(x.getId())) { | |
134 | +// InvoiceBillOrderDO invoiceBillOrderDO = invoiceBillOrderDOMap.get(x.getId()); | |
135 | +// financeOrderResultVO.setInvoiceBillOrderDO(invoiceBillOrderDO); | |
136 | +// } | |
137 | +// if (producePaymentCheckBillOrderDOMap.containsKey(x.getId())) { | |
138 | +// ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO = producePaymentCheckBillOrderDOMap.get(x.getId()); | |
139 | +// financeOrderResultVO.setProducePaymentCheckBillOrderDO(producePaymentCheckBillOrderDO); | |
140 | +// } | |
141 | +// return financeOrderResultVO; | |
142 | +// }).collect(Collectors.toList()); | |
143 | +// } | |
144 | +// IPage<FinanceOrderResultVO> financeOrderResultVOIPage = new Page<>(); | |
145 | +// financeOrderResultVOIPage.setRecords(financeOrderResultVOList); | |
146 | +// BeanUtils.copyProperties(iPage, financeOrderResultVOIPage, "records"); | |
147 | +// return ServerResult.success(financeOrderResultVOIPage); | |
148 | +// } | |
149 | +// else{ | |
150 | + /* //上面单独再写一个if判断,要是一个条件都没有,就直接进行分页查询(只做一下权限)。 唯一问题:这里一下子需要查询多条数据。 | |
151 | + RoleEnum role = dataScope.getRole(); | |
152 | + List<OrderBaseInfoDO> orderBaseInfoDOList = ByOrderGetOrderId(queryVO, role); | |
153 | + if (CollectionUtils.isEmpty(orderBaseInfoDOList)) { | |
154 | + return ServerResult.success(); | |
155 | + } | |
156 | + List<InvoiceBillOrderDO> invoiceBillOrderDOS = ByInvoiceGetOrderId(queryVO, orderBaseInfoDOList); | |
157 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS = ByCheckGetOrderId(queryVO, orderBaseInfoDOList); | |
158 | + | |
159 | + //取交集 | |
160 | + | |
161 | + //取交集。 | |
162 | + // 获取每个集合的 id 列表,如果集合为空则返回空集合 | |
163 | + Set<Long> orderIds1 = orderBaseInfoDOList != null | |
164 | + ? orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toSet()) | |
165 | + : Collections.emptySet(); | |
166 | + | |
167 | + Set<Long> orderIds2 = invoiceBillOrderDOS != null | |
168 | + ? invoiceBillOrderDOS.stream().map(InvoiceBillOrderDO::getOrderId).collect(Collectors.toSet()) | |
169 | + : Collections.emptySet(); | |
170 | + | |
171 | + Set<Long> orderIds3 = producePaymentCheckBillOrderDOS != null | |
172 | + ? producePaymentCheckBillOrderDOS.stream().map(ProducePaymentCheckBillOrderDO::getOrderId).collect(Collectors.toSet()) | |
173 | + : Collections.emptySet(); | |
174 | + | |
175 | + Set<Long> intersection = Stream.of(orderIds1, orderIds2, orderIds3) | |
176 | + .filter(CollectionUtils::isNotEmpty) // 过滤掉空集合 | |
177 | + .reduce((set1, set2) -> { | |
178 | + set1.retainAll(set2); // 取交集 | |
179 | + return set1; | |
180 | + }) | |
181 | + .orElse(Collections.emptySet()); // 如果结果为空则返回空集合 | |
182 | + if (CollectionUtils.isEmpty(intersection)) { | |
183 | + return ServerResult.success(); | |
184 | + } | |
185 | + | |
186 | + //返回交集的订单数据。 todo | |
187 | + Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize()); | |
188 | + IPage<OrderBaseInfoDO> iPage = orderBaseInfoService.page(page, new LambdaQueryWrapper<OrderBaseInfoDO>().in(OrderBaseInfoDO::getId, intersection)); | |
189 | + List<OrderBaseInfoDO> orderList = iPage.getRecords(); | |
190 | + | |
191 | + | |
192 | + //去对应的invoice中查找。 | |
193 | + List<InvoiceBillOrderDO> invoiceBillOrderDOList = list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(InvoiceBillOrderDO::getOrderId, intersection)); | |
194 | + //去对应的check中查找。 | |
195 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList = producePaymentCheckBillOrderService.list(new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(ProducePaymentCheckBillOrderDO::getOrderId, intersection)); | |
196 | + | |
197 | + List<FinanceOrderResultVO> financeOrderResultVOS = null; | |
198 | + if (CollectionUtils.isNotEmpty(orderList)) { | |
199 | + // 将 Map 提升到方法范围内 | |
200 | + Map<Long, InvoiceBillOrderDO> invoiceBillOrderDOMap = CollectionUtils.isNotEmpty(invoiceBillOrderDOList) | |
201 | + ? invoiceBillOrderDOList.stream().collect(Collectors.toMap( | |
202 | + InvoiceBillOrderDO::getOrderId, | |
203 | + Function.identity(), | |
204 | + (existing, replacement) -> existing)) | |
205 | + : Collections.emptyMap(); | |
206 | + Map<Long, ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOMap = CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOList) | |
207 | + ? producePaymentCheckBillOrderDOList.stream().collect(Collectors.toMap( | |
208 | + ProducePaymentCheckBillOrderDO::getOrderId, | |
209 | + Function.identity(), | |
210 | + (existing, replacement) -> existing)) | |
211 | + : Collections.emptyMap(); | |
212 | + financeOrderResultVOS = orderList.stream().map(result -> { | |
213 | + //到这复制订单基本信息。 一个整体包含订单基本信息,invoice信息,生产科对账单号信息。 | |
214 | + FinanceOrderResultVO financeOrderResultVO = new FinanceOrderResultVO(); | |
215 | + BeanUtils.copyProperties(result, financeOrderResultVO); | |
216 | + // 访问 invoiceBillOrderDOMap | |
217 | + if (invoiceBillOrderDOMap.containsKey(result.getId())) { | |
218 | + // 对 invoice 进行处理,填充到整体中,需要orderId一致。 | |
219 | + financeOrderResultVO.setInvoiceBillOrderDO(invoiceBillOrderDOMap.get(result.getId())); | |
220 | + } | |
221 | + if (producePaymentCheckBillOrderDOMap.containsKey(result.getId())) { | |
222 | + // 对 check 进行处理,填充到整体中,需要orderId一致。 | |
223 | + financeOrderResultVO.setProducePaymentCheckBillOrderDO(producePaymentCheckBillOrderDOMap.get(result.getId())); | |
224 | + } | |
225 | + return financeOrderResultVO; | |
226 | + }).collect(Collectors.toList()); | |
227 | + } | |
228 | + IPage<FinanceOrderResultVO> finVoPage = new Page<>(); | |
229 | + finVoPage.setRecords(financeOrderResultVOS); | |
230 | + BeanUtils.copyProperties(iPage, finVoPage, "records"); | |
231 | + System.out.println("交集 ID 集合:" + intersection); | |
232 | + //返回所有的订单数据。 todo 没有筛选的情况。 | |
233 | + return ServerResult.success(finVoPage);*/ | |
234 | + RoleEnum role = dataScope.getRole(); | |
235 | + Page<FinanceOrderResultVO> page = new Page<>(queryVO.getPage(), queryVO.getPageSize()); | |
236 | + if(Objects.nonNull(role) && role.getId().equals(RoleEnum.TRACKER_USER.getId())) { | |
237 | + queryVO.setTrackerUserName(dataScope.getLoginUserName()); | |
238 | + IPage<FinanceOrderResultVO> financeOrderResultVOIPage = baseMapper.byConditionGetOrder(page, queryVO); | |
239 | + return ServerResult.success(financeOrderResultVOIPage); | |
240 | + } | |
241 | + if (Objects.nonNull(role) && role.getId().equals(RoleEnum.BUSINESS_USER.getId())) { | |
242 | + queryVO.setBusinessUserName(dataScope.getLoginUserName()); | |
243 | + IPage<FinanceOrderResultVO> financeOrderResultVOIPage = baseMapper.byConditionGetOrder(page,queryVO); | |
244 | + return ServerResult.success(financeOrderResultVOIPage); | |
245 | + } | |
246 | + IPage<FinanceOrderResultVO> financeOrderResultVOIPage = baseMapper.byConditionGetOrder(page,queryVO); | |
247 | + return ServerResult.success(financeOrderResultVOIPage); | |
248 | + } | |
249 | +// } | |
250 | + | |
104 | 251 | |
252 | + | |
253 | + | |
254 | + private List<OrderBaseInfoDO> ByOrderGetOrderId(InvoiceBillOrderQueryVO queryVO,RoleEnum role){ | |
255 | + LambdaQueryWrapper<OrderBaseInfoDO> lambdawrapper = new LambdaQueryWrapper<OrderBaseInfoDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
256 | + .eq(StringUtils.isNotBlank(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode()) | |
257 | + .eq(StringUtils.isNotBlank(queryVO.getProductionDepartment()), OrderBaseInfoDO::getProductionDepartment, queryVO.getProductionDepartment()) | |
258 | + .eq(StringUtils.isNotBlank(queryVO.getCustomerPo()), OrderBaseInfoDO::getCustomerPo, queryVO.getCustomerPo()) | |
259 | + .eq(StringUtils.isNotBlank(queryVO.getInnerNo()), OrderBaseInfoDO::getInnerNo, queryVO.getInnerNo()) | |
260 | + .eq(StringUtils.isNotBlank(queryVO.getProjectNo()), OrderBaseInfoDO::getProjectNo, queryVO.getProjectNo()) | |
261 | + .ge(StringUtils.isNotBlank(queryVO.getCreateStartTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateStartTime()) | |
262 | + .le(StringUtils.isNotBlank(queryVO.getCreateEndTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateEndTime()) | |
263 | + .ge(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignStartTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignStartTime()) | |
264 | + .le(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignEndTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignEndTime()) | |
265 | + .ge(StringUtils.isNotBlank(queryVO.getOrderHodStartTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodStartTime()) | |
266 | + .le(StringUtils.isNotBlank(queryVO.getOrderHodEndTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodEndTime()); | |
267 | + if(Objects.nonNull(role) && role.getId().equals(RoleEnum.TRACKER_USER.getId())) { | |
268 | + lambdawrapper.eq(OrderBaseInfoDO::getCreateBy, dataScope.getLoginUserName()); | |
269 | + } | |
270 | + if (Objects.nonNull(role) && role.getId().equals(RoleEnum.BUSINESS_USER.getId())) { | |
271 | + lambdawrapper.eq(OrderBaseInfoDO::getBusinessPerson, dataScope.getLoginUserName()); | |
272 | + } | |
273 | + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.list(lambdawrapper); | |
274 | + return orderBaseInfoDOList; | |
275 | + } | |
276 | + private List<InvoiceBillOrderDO> ByInvoiceGetOrderId(InvoiceBillOrderQueryVO queryVO,List<OrderBaseInfoDO> orderBaseInfoDOList){ | |
277 | + LambdaQueryWrapper<InvoiceBillOrderDO> LambdaQueryWrapper = new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
278 | + .eq(StringUtils.isNotBlank(queryVO.getInvoiceNo()), InvoiceBillOrderDO::getInvoiceNo, queryVO.getInvoiceNo()) | |
279 | + .eq(Objects.nonNull(queryVO.getInvoiceStatus()), InvoiceBillOrderDO::getStatus, queryVO.getInvoiceStatus()) | |
280 | + .ge(StringUtils.isNotBlank(queryVO.getInvoiceStartTime()), InvoiceBillOrderDO::getCreateTime, queryVO.getInvoiceStartTime()) | |
281 | + .le(StringUtils.isNotBlank(queryVO.getInvoiceEndTime()), InvoiceBillOrderDO::getCreateTime, queryVO.getInvoiceEndTime()); | |
282 | + if(CollectionUtils.isNotEmpty(orderBaseInfoDOList)){ | |
283 | + LambdaQueryWrapper.in(InvoiceBillOrderDO::getOrderId, orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toList())); | |
284 | + } | |
285 | + return list(LambdaQueryWrapper); | |
286 | + } | |
287 | + private List<ProducePaymentCheckBillOrderDO> ByCheckGetOrderId(InvoiceBillOrderQueryVO queryVO,List<OrderBaseInfoDO> orderBaseInfoDOList){ | |
288 | + LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> wrapper = new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
289 | + .eq(StringUtils.isNotBlank(queryVO.getInvoiceNo()), ProducePaymentCheckBillOrderDO::getCheckNo, queryVO.getCheckNo()) | |
290 | + .eq(Objects.nonNull(queryVO.getInvoiceStatus()), ProducePaymentCheckBillOrderDO::getStatus, queryVO.getCheckNoStatus()) | |
291 | + .ge(StringUtils.isNotBlank(queryVO.getCheckStartTime()), ProducePaymentCheckBillOrderDO::getCreateTime, queryVO.getCheckStartTime()) | |
292 | + .le(StringUtils.isNotBlank(queryVO.getCheckEndTime()), ProducePaymentCheckBillOrderDO::getCreateTime, queryVO.getCheckEndTime()); | |
293 | + if(CollectionUtils.isNotEmpty(orderBaseInfoDOList)){ | |
294 | + wrapper.in(ProducePaymentCheckBillOrderDO::getOrderId, orderBaseInfoDOList.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toList())); | |
295 | + } | |
296 | + return producePaymentCheckBillOrderService.list(wrapper); | |
297 | + } | |
105 | 298 | /** |
106 | 299 | * @param queryVO |
107 | 300 | * @return |
... | ... | @@ -109,10 +302,10 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
109 | 302 | private LambdaQueryWrapper<InvoiceBillOrderDO> getQueryWrapper(InvoiceBillOrderQueryVO queryVO) { |
110 | 303 | LambdaQueryWrapper<InvoiceBillOrderDO> queryWrapper = new LambdaQueryWrapper<InvoiceBillOrderDO>() |
111 | 304 | .eq(InvoiceBillOrderDO::getEnableFlag, Constant.ENABLE_TEN) |
112 | - .eq(StringUtils.isNotBlank(queryVO.getInvoiceNo()), InvoiceBillOrderDO::getInvoiceNo, queryVO.getInvoiceNo()) | |
113 | - .eq(Objects.nonNull(queryVO.getStatus()), InvoiceBillOrderDO::getStatus, queryVO.getStatus()) | |
114 | - .ge(StringUtils.isNotBlank(queryVO.getStartTime()), InvoiceBillOrderDO::getCreateTime, queryVO.getStartTime()) | |
115 | - .le(StringUtils.isNotBlank(queryVO.getEndTime()), InvoiceBillOrderDO::getCreateTime, queryVO.getEndTime()) | |
305 | + /* .eq(StringUtils.isNotBlank(queryVO.getInvoiceNo()), InvoiceBillOrderDO::getInvoiceNo, queryVO.getInvoiceNo()) | |
306 | + .eq(Objects.nonNull(queryVO.getInvoiceStatus()), InvoiceBillOrderDO::getStatus, queryVO.getInvoiceStatus()) | |
307 | + .ge(StringUtils.isNotBlank(queryVO.getInvoiceStartTime()), InvoiceBillOrderDO::getCreateTime, queryVO.getInvoiceStartTime()) | |
308 | + .le(StringUtils.isNotBlank(queryVO.getInvoiceEndTime()), InvoiceBillOrderDO::getCreateTime, queryVO.getInvoiceEndTime())*/ | |
116 | 309 | .orderByDesc(InvoiceBillOrderDO::getId); |
117 | 310 | if (CollectionUtils.isNotEmpty(queryVO.getIds())) { |
118 | 311 | queryWrapper.in(InvoiceBillOrderDO::getId, queryVO.getIds()); |
... | ... | @@ -125,13 +318,16 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
125 | 318 | |
126 | 319 | @Override |
127 | 320 | public ServerResult listBaseOrderInfoBy(InvoiceBaseOrderQueryVO queryVO) { |
128 | - List<InvoiceBillMappingDO> mappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>() | |
129 | - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
130 | - .eq(InvoiceBillMappingDO::getInvoiceNo, queryVO.getInvoiceNo())); | |
321 | +// List<InvoiceBillMappingDO> mappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>() | |
322 | +// .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
323 | +// .eq(InvoiceBillMappingDO::getInvoiceNo, queryVO.getInvoiceNo())); | |
324 | + | |
325 | + List<InvoiceBillOrderDO> mappingDOS = list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
326 | + .eq(InvoiceBillOrderDO::getInvoiceNo, queryVO.getInvoiceNo())); | |
131 | 327 | if (CollectionUtils.isEmpty(mappingDOS)) { |
132 | 328 | return ServerResult.success(); |
133 | 329 | } |
134 | - Set<Long> orderIds = mappingDOS.stream().map(InvoiceBillMappingDO::getOrderId).collect(Collectors.toSet()); | |
330 | + Set<Long> orderIds = mappingDOS.stream().map(InvoiceBillOrderDO::getOrderId).collect(Collectors.toSet()); | |
135 | 331 | //返回数据包含利润信息。 |
136 | 332 | //创建返回的数据,里面包含订单信息和利润信息,然后放到list集合中。 |
137 | 333 | List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIds); |
... | ... | @@ -308,16 +504,17 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
308 | 504 | if (CollectionUtils.isEmpty(invoiceBillOrderDOS)) { |
309 | 505 | return null; |
310 | 506 | } |
311 | - Set<Long> ids = invoiceBillOrderDOS.stream().map(InvoiceBillOrderDO::getId).collect(Collectors.toSet()); | |
312 | - List<InvoiceBillMappingDO> invoiceBillMappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(InvoiceBillMappingDO::getInvoiceBillId, ids)); | |
313 | - if (CollectionUtils.isEmpty(invoiceBillMappingDOS)) { | |
314 | - return null; | |
315 | - } | |
316 | - Map<Long, InvoiceBillMappingDO> orderBillMap = invoiceBillMappingDOS.stream().collect(Collectors.toMap(InvoiceBillMappingDO::getOrderId, Function.identity(), (x, y) -> x)); | |
317 | - List<InvoiceOrderBaseItemVO> itemVOS = getInvoiceOrderBaseItems(orderBillMap); | |
318 | - Map<String, InvoiceBillOrderDO> invoiceBillOrderDOMap = invoiceBillOrderDOS.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getInvoiceNo, Function.identity(), (x, y) -> x)); | |
507 | +// List<InvoiceBillMappingDO> invoiceBillMappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(InvoiceBillMappingDO::getInvoiceBillId, ids)); | |
508 | +// if (CollectionUtils.isEmpty(invoiceBillMappingDOS)) { | |
509 | +// return null; | |
510 | +// } | |
511 | + Map<Long, InvoiceBillOrderDO> invoiceBillOrderDOMap = invoiceBillOrderDOS.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getOrderId, Function.identity(), (x, y) -> x)); | |
512 | + //第一版,上面为第二版 Map<Long, InvoiceBillMappingDO> orderBillMap = invoiceBillMappingDOS.stream().collect(Collectors.toMap(InvoiceBillMappingDO::getOrderId, Function.identity(), (x, y) -> x)); | |
513 | + List<InvoiceOrderBaseItemVO> itemVOS = getInvoiceOrderBaseItems(invoiceBillOrderDOMap); | |
514 | +//第一版,上面为第二版 List<InvoiceOrderBaseItemVO> itemVOS = getInvoiceOrderBaseItems(orderBillMap); | |
515 | + Map<String, InvoiceBillOrderDO> invoiceBillMap = invoiceBillOrderDOS.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getInvoiceNo, Function.identity(), (x, y) -> x)); | |
319 | 516 | Map<String, List<InvoiceOrderBaseItemVO>> baseItemMap = itemVOS.stream().collect(Collectors.groupingBy(InvoiceOrderBaseItemVO::getInvoiceCode)); |
320 | - List<InvoiceBillAnalysisExportVO> exportVOS = wrapperAnalysisExport(invoiceBillOrderDOMap, baseItemMap); | |
517 | + List<InvoiceBillAnalysisExportVO> exportVOS = wrapperAnalysisExport(invoiceBillMap, baseItemMap); | |
321 | 518 | return wrapperAnalysisResultVO(exportVOS); |
322 | 519 | } |
323 | 520 | |
... | ... | @@ -472,7 +669,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
472 | 669 | * @param mappingDOMap |
473 | 670 | * @return |
474 | 671 | */ |
475 | - private List<InvoiceOrderBaseItemVO> getInvoiceOrderBaseItems(Map<Long, InvoiceBillMappingDO> mappingDOMap) { | |
672 | + private List<InvoiceOrderBaseItemVO> getInvoiceOrderBaseItems(Map<Long, InvoiceBillOrderDO> mappingDOMap) { | |
476 | 673 | Set<Long> orderIds = mappingDOMap.keySet(); |
477 | 674 | List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIds); |
478 | 675 | List<OrderProfitAnalysisDO> profitAnalysisDOS = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(OrderProfitAnalysisDO::getOrderId, orderIds)); |
... | ... | @@ -494,7 +691,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
494 | 691 | } |
495 | 692 | |
496 | 693 | if (mappingDOMap.containsKey(orderId)) { |
497 | - InvoiceBillMappingDO mappingDO = mappingDOMap.get(orderId); | |
694 | + InvoiceBillOrderDO mappingDO = mappingDOMap.get(orderId); | |
498 | 695 | itemVO.setInvoiceCode(mappingDO.getInvoiceNo()); |
499 | 696 | } |
500 | 697 | baseItemVOS.add(itemVO); |
... | ... | @@ -507,18 +704,23 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
507 | 704 | * @return |
508 | 705 | */ |
509 | 706 | private Set<Long> filterBillOrderIdsBy(InvoiceBillOrderQueryVO queryVO) { |
707 | + //根据基本信息得到对应的订单id。 | |
510 | 708 | List<Long> orderIds = filterOrderIdsBy(queryVO); |
511 | 709 | if (CollectionUtils.isEmpty(orderIds)) { |
512 | 710 | return null; |
513 | 711 | } |
514 | - List<InvoiceBillMappingDO> mappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
515 | - .in(CollectionUtils.isNotEmpty(orderIds), InvoiceBillMappingDO::getOrderId, orderIds)); | |
712 | +// List<InvoiceBillMappingDO> mappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
713 | +// .in(CollectionUtils.isNotEmpty(orderIds), InvoiceBillMappingDO::getOrderId, orderIds)); | |
714 | + //不再从invoiceBillMappingDO里面查询关联的数据,而是应该从invoice中查询。 | |
715 | + List<InvoiceBillOrderDO> mappingDOS = list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
716 | + .in(CollectionUtils.isNotEmpty(orderIds), InvoiceBillOrderDO::getOrderId, orderIds)); | |
516 | 717 | if (CollectionUtils.isEmpty(mappingDOS)) { |
517 | 718 | Set<Long> ids = new HashSet<>(); |
518 | 719 | ids.add(-1L); |
519 | 720 | return ids; |
520 | 721 | } |
521 | - return mappingDOS.stream().map(InvoiceBillMappingDO::getInvoiceBillId).collect(Collectors.toSet()); | |
722 | +// return mappingDOS.stream().map(InvoiceBillMappingDO::getInvoiceBillId).collect(Collectors.toSet()); | |
723 | + return mappingDOS.stream().map(InvoiceBillOrderDO::getId).collect(Collectors.toSet()); | |
522 | 724 | } |
523 | 725 | |
524 | 726 | /** |
... | ... | @@ -542,6 +744,24 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
542 | 744 | if (StringUtils.isNotBlank(queryVO.getProjectNo())) { |
543 | 745 | flag = flag | true; |
544 | 746 | } |
747 | + if(StringUtils.isNotBlank(queryVO.getCreateStartTime())){ | |
748 | + flag = flag | true; | |
749 | + } | |
750 | + if(StringUtils.isNotBlank(queryVO.getCreateEndTime())){ | |
751 | + flag = flag | true; | |
752 | + } | |
753 | + if(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignStartTime())){ | |
754 | + flag = flag | true; | |
755 | + } | |
756 | + if(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignEndTime())){ | |
757 | + flag = flag | true; | |
758 | + } | |
759 | + if(StringUtils.isNotBlank(queryVO.getOrderHodStartTime())){ | |
760 | + flag = flag | true; | |
761 | + } | |
762 | + if(StringUtils.isNotBlank(queryVO.getOrderHodEndTime())){ | |
763 | + flag = flag | true; | |
764 | + } | |
545 | 765 | if (!flag) { |
546 | 766 | return null; |
547 | 767 | } |
... | ... | @@ -551,7 +771,13 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
551 | 771 | .eq(StringUtils.isNotBlank(queryVO.getProductionDepartment()), OrderBaseInfoDO::getProductionDepartment, queryVO.getProductionDepartment()) |
552 | 772 | .eq(StringUtils.isNotBlank(queryVO.getCustomerPo()), OrderBaseInfoDO::getCustomerPo, queryVO.getCustomerPo()) |
553 | 773 | .eq(StringUtils.isNotBlank(queryVO.getInnerNo()), OrderBaseInfoDO::getInnerNo, queryVO.getInnerNo()) |
554 | - .eq(StringUtils.isNotBlank(queryVO.getProjectNo()), OrderBaseInfoDO::getProjectNo, queryVO.getProjectNo()); | |
774 | + .eq(StringUtils.isNotBlank(queryVO.getProjectNo()), OrderBaseInfoDO::getProjectNo, queryVO.getProjectNo()) | |
775 | + .ge(StringUtils.isNotBlank(queryVO.getCreateStartTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateStartTime()) | |
776 | + .le(StringUtils.isNotBlank(queryVO.getCreateEndTime()), OrderBaseInfoDO::getCreateTime, queryVO.getCreateEndTime()) | |
777 | + .ge(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignStartTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignStartTime()) | |
778 | + .le(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignEndTime()), OrderBaseInfoDO::getProductionDepartmentConsignTime, queryVO.getProductionDepartmentConsignEndTime()) | |
779 | + .ge(StringUtils.isNotBlank(queryVO.getOrderHodStartTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodStartTime()) | |
780 | + .le(StringUtils.isNotBlank(queryVO.getOrderHodEndTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodEndTime()); | |
555 | 781 | List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.list(queryWrapper); |
556 | 782 | if (CollectionUtils.isEmpty(orderBaseInfoDOList)) { |
557 | 783 | List<Long> orderIds = new ArrayList<>(); |
... | ... | @@ -575,7 +801,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
575 | 801 | |
576 | 802 | List<OrderBaseInfoDO> orderBaseInfoDOList = validaBillOrder(createVO); |
577 | 803 | |
578 | - InvoiceBillOrderDO invoiceBillOrderDO = buildInvoiceBillOrderDO(createVO); | |
804 | + List<InvoiceBillOrderDO> invoiceBillOrderDOList = buildInvoiceBillOrderDO(createVO,orderBaseInfoDOList); | |
579 | 805 | |
580 | 806 | List<OrderBaseInfoDO> containInvoiceOrderBaseInfoList=orderBaseInfoDOList.stream().map(x->{ |
581 | 807 | x.setInvoiceNo(createVO.getInvoiceNo()); |
... | ... | @@ -583,49 +809,48 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
583 | 809 | }).collect(Collectors.toList()); |
584 | 810 | |
585 | 811 | boolean success= transactionHelper.run(() -> { |
586 | - save(invoiceBillOrderDO); | |
812 | + saveBatch(invoiceBillOrderDOList); | |
587 | 813 | orderBaseInfoService.updateBatchById(containInvoiceOrderBaseInfoList); |
588 | - invoiceBillMappingService.saveBatch(buildInvoiceBillMappingDOS(createVO, invoiceBillOrderDO)); | |
589 | 814 | return true; |
590 | 815 | }); |
591 | - if(success) { | |
592 | - //在创建时获取到客户总金额。 | |
593 | - List<InvoiceBillMappingDO> invoiceBillMappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>() | |
594 | - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
595 | - .eq(InvoiceBillMappingDO::getInvoiceNo, invoiceBillOrderDO.getInvoiceNo())); | |
596 | - if (CollectionUtils.isNotEmpty(invoiceBillMappingDOS)) { | |
597 | - List<Long> orderIds = invoiceBillMappingDOS.stream().map(InvoiceBillMappingDO::getOrderId).collect(Collectors.toList()); | |
598 | - List<OrderProfitAnalysisDO> orderProfitAnalysisList = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>() | |
599 | - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
600 | - .in(OrderProfitAnalysisDO::getOrderId, orderIds)); | |
601 | - List<OrderProfitAnalysisDO> orderProfitAnalysisDOS = orderProfitAnalysisList.stream() | |
602 | - .collect(Collectors.toMap(OrderProfitAnalysisDO::getOrderId, Function.identity(), (existing, replacement) -> existing)) | |
603 | - .values() | |
604 | - .stream() | |
605 | - .collect(Collectors.toList()); | |
606 | - if (CollectionUtils.isNotEmpty(orderProfitAnalysisDOS)) { | |
607 | - BigDecimal totalPrice = orderProfitAnalysisDOS.stream().map(order->BigDecimal.valueOf(order.getCustomerTotalPrice())) | |
608 | - .reduce(BigDecimal.ZERO,BigDecimal::add); | |
609 | - if(Objects.nonNull(totalPrice)){ | |
610 | - //客户总价金额汇总。 美元 | |
611 | - invoiceBillOrderDO.setTotalCustomerAmount(totalPrice.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
612 | - //设置实际应收金额汇总,要是没有发生扣款,也会被设置。 | |
613 | - invoiceBillOrderDO.setActualReceivableAmount(invoiceBillOrderDO.getTotalCustomerAmount()); | |
614 | - }else{ | |
615 | - invoiceBillOrderDO.setTotalCustomerAmount(BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
616 | - invoiceBillOrderDO.setActualReceivableAmount(invoiceBillOrderDO.getTotalCustomerAmount()); | |
617 | - } | |
618 | - | |
619 | - } | |
620 | - } | |
621 | - //设置发生扣款金额汇总,避免没有发生扣款金额,也能在审核界面有对应的值。 | |
622 | - invoiceBillOrderDO.setDeductAmount(BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
623 | - //设置其他费用汇总,避免没有发生扣款金额,也能在审核界面有对应的值。 | |
624 | - invoiceBillOrderDO.setOtherAmount(BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
625 | - //设置实际付款金额。 | |
626 | - invoiceBillOrderDO.setTotalPayAmount(BigDecimal.ZERO.setScale(2,BigDecimal.ROUND_HALF_UP)); | |
627 | - updateById(invoiceBillOrderDO); | |
628 | - } | |
816 | + Map<Long, OrderProfitAnalysisDO> orderProfitAnalysisMap; | |
817 | + //提前获取金额数据,避免后续多次查询。 | |
818 | + List<OrderProfitAnalysisDO> orderProfitAnalysisList = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>() | |
819 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
820 | + .in(OrderProfitAnalysisDO::getOrderId, createVO.getOrderIds())); | |
821 | + if(CollectionUtils.isNotEmpty(orderProfitAnalysisList)){ | |
822 | + orderProfitAnalysisMap = orderProfitAnalysisList.stream().collect(Collectors.toMap( | |
823 | + OrderProfitAnalysisDO::getOrderId, // key:使用 orderId 作为键 | |
824 | + Function.identity(), // value:使用对象本身作为值 | |
825 | + (existing, replacement) -> existing // 冲突时保留已有的值 | |
826 | + )); | |
827 | + } else { | |
828 | + orderProfitAnalysisMap = null; | |
829 | + } | |
830 | + if(success) { | |
831 | + List<InvoiceBillOrderDO> invoiceBillOrderDOS = invoiceBillOrderDOList.stream().filter(Objects::nonNull).map(invoiceNo -> { | |
832 | + if (orderProfitAnalysisMap != null) { | |
833 | + if (orderProfitAnalysisMap.containsKey(invoiceNo.getOrderId())) { | |
834 | + OrderProfitAnalysisDO orderProfitAnalysisDO = orderProfitAnalysisMap.get(invoiceNo.getOrderId()); | |
835 | + invoiceNo.setTotalCustomerAmount( | |
836 | + //如果CustomerTotalPrice为空,则设置为0.0 | |
837 | + //设置实际应收金额汇总,要是没有发生扣款,也会被设置。 | |
838 | + BigDecimal.valueOf(Optional.ofNullable(orderProfitAnalysisDO.getCustomerTotalPrice()).orElse(0.0)) | |
839 | + .setScale(2, RoundingMode.HALF_UP) | |
840 | + ); | |
841 | + invoiceNo.setActualReceivableAmount(invoiceNo.getTotalCustomerAmount()); | |
842 | + } | |
843 | + } | |
844 | + //设置发生扣款金额汇总,避免没有发生扣款金额,也能在审核界面有对应的值。 | |
845 | + invoiceNo.setDeductAmount(BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
846 | + //设置其他费用汇总,避免没有发生扣款金额,也能在审核界面有对应的值。 | |
847 | + invoiceNo.setOtherAmount(BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
848 | + //设置实际付款金额。 | |
849 | + invoiceNo.setTotalPayAmount(BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
850 | + return invoiceNo; | |
851 | + }).collect(Collectors.toList()); | |
852 | + updateBatchById(invoiceBillOrderDOS); | |
853 | + } | |
629 | 854 | return ServerResult.success(); |
630 | 855 | } |
631 | 856 | |
... | ... | @@ -704,16 +929,18 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
704 | 929 | * @param createVO |
705 | 930 | * @return |
706 | 931 | */ |
707 | - private InvoiceBillOrderDO buildInvoiceBillOrderDO(InvoiceBillCreateVO createVO) { | |
708 | - List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(createVO.getOrderIds()); | |
709 | - return InvoiceBillOrderDO.builder() | |
710 | - .invoiceNo(createVO.getInvoiceNo()) | |
711 | - .bgUrl(createVO.getBgUrl()) | |
712 | - .backRefundDate(createVO.getBackRefundDate()) | |
713 | - .status(ApplyStatusEnum.NO_COMMIT.getStatus()) | |
714 | - .businesPerson(orderBaseInfoDOList.get(0).getBusinessPerson()) | |
715 | - .trackerUser(orderBaseInfoDOList.get(0).getCreateBy()) | |
716 | - .build(); | |
932 | + private List<InvoiceBillOrderDO> buildInvoiceBillOrderDO(InvoiceBillCreateVO createVO,List<OrderBaseInfoDO> orderBaseInfoDOList) { | |
933 | + return orderBaseInfoDOList.stream().map(x->{ | |
934 | + return InvoiceBillOrderDO.builder() | |
935 | + .invoiceNo(createVO.getInvoiceNo()) | |
936 | + .orderId(x.getId()) | |
937 | + .bgUrl(createVO.getBgUrl()) | |
938 | + .backRefundDate(createVO.getBackRefundDate()) | |
939 | + .status(FinanceEnum.UNPAID_PAYMENTS.getStatus()) | |
940 | + .businesPerson(x.getBusinessPerson()) | |
941 | + .trackerUser(x.getCreateBy()) | |
942 | + .build(); | |
943 | + }).collect(Collectors.toList()); | |
717 | 944 | } |
718 | 945 | |
719 | 946 | /** |
... | ... | @@ -773,17 +1000,15 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
773 | 1000 | throw new BusinessException("订单中包含利润未审批的订单,无法创建!"); |
774 | 1001 | } |
775 | 1002 | |
776 | - String invoiceNo = createVO.getInvoiceNo(); | |
777 | - | |
778 | 1003 | List<InvoiceBillOrderDO> invoiceBillOrderDOS = list(new LambdaQueryWrapper<InvoiceBillOrderDO>() |
779 | 1004 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
780 | - .eq(InvoiceBillOrderDO::getInvoiceNo, invoiceNo)); | |
1005 | + .eq(InvoiceBillOrderDO::getInvoiceNo, createVO.getInvoiceNo())); | |
781 | 1006 | if (CollectionUtils.isNotEmpty(invoiceBillOrderDOS)) { |
782 | 1007 | throw new BusinessException("存在相同的invoice订单!"); |
783 | 1008 | } |
784 | - | |
785 | - List<InvoiceBillMappingDO> invoiceBillMappingDOList = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(InvoiceBillMappingDO::getOrderId, createVO.getOrderIds())); | |
786 | - if (CollectionUtils.isNotEmpty(invoiceBillMappingDOList)) { | |
1009 | + //该订单已绑定其他订单。 | |
1010 | + List<InvoiceBillOrderDO> invoiceBillOrderDOList = list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(InvoiceBillOrderDO::getOrderId,createVO.getOrderIds())); | |
1011 | + if(CollectionUtils.isNotEmpty(invoiceBillOrderDOList)){ | |
787 | 1012 | throw new BusinessException("该勾选的订单已经绑定其他账单了!"); |
788 | 1013 | } |
789 | 1014 | return orderBaseInfoDOList; |
... | ... | @@ -804,11 +1029,13 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
804 | 1029 | if (Objects.isNull(invoiceBillOrderDo)) { |
805 | 1030 | throw new BusinessException("应收款单据不存在"); |
806 | 1031 | } |
807 | - if(Objects.nonNull(invoiceBillOrderDo.getStatus()) && Constant.ENABLE_TEN==invoiceBillOrderDo.getStatus()){ | |
808 | - throw new BusinessException("应收款单据已审核通过,无法编辑"); | |
1032 | + if(Objects.nonNull(invoiceBillOrderDo.getStatus()) && FinanceEnum.RECEIVED_PAYMENT.getStatus()==invoiceBillOrderDo.getStatus()){ | |
1033 | + throw new BusinessException("应收款单据已收款,无法编辑"); | |
809 | 1034 | } |
1035 | + //todo 审核有问题 完成1 | |
1036 | +// checkCommitApply(invoiceBillOrderDo.getId()); | |
1037 | + checkApply(new ArrayList<>(Arrays.asList(deductInfoVO.getId()))); | |
810 | 1038 | |
811 | - checkCommitApply(invoiceBillOrderDo.getId()); | |
812 | 1039 | if(StringUtils.isNotBlank(invoiceBillOrderDo.getDeductUrl())){ |
813 | 1040 | //记住:需要修改数据表对应的字段deduct_url的varchar数据范围,修改为1000左右。 |
814 | 1041 | if(StringUtils.isNotBlank(deductInfoVO.getDeductUrl())){ |
... | ... | @@ -842,9 +1069,12 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
842 | 1069 | if (Objects.isNull(invoiceBillOrderDo)) { |
843 | 1070 | throw new BusinessException("应收款单据不存在"); |
844 | 1071 | } |
845 | - | |
846 | - checkCommitApply(invoiceBillOrderDo.getId()); | |
847 | - | |
1072 | + //todo 审核有问题 完成2 | |
1073 | +// checkCommitApply(invoiceBillOrderDo.getId()); | |
1074 | + if(Objects.nonNull(invoiceBillOrderDo.getStatus()) && FinanceEnum.RECEIVED_PAYMENT.getStatus()==invoiceBillOrderDo.getStatus()){ | |
1075 | + throw new BusinessException("已完成收款,无法更新!"); | |
1076 | + } | |
1077 | + checkApply(new ArrayList<>(Arrays.asList(amountInfoVO.getId()))); | |
848 | 1078 | |
849 | 1079 | invoiceBillOrderDo.setActualPayedAmount1(amountInfoVO.getActualPayedAmount1() !=null ? amountInfoVO.getActualPayedAmount1() : BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)); |
850 | 1080 | invoiceBillOrderDo.setActualPayedAmount2(amountInfoVO.getActualPayedAmount2() !=null ? amountInfoVO.getActualPayedAmount2() : BigDecimal.ZERO.setScale(2, RoundingMode.HALF_UP)); |
... | ... | @@ -871,46 +1101,104 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
871 | 1101 | } |
872 | 1102 | } |
873 | 1103 | |
1104 | + //选中提交。 | |
1105 | + | |
874 | 1106 | @Override |
875 | 1107 | public ServerResult commitApply(InvoiceBillCommitApplyVO commitApplyVO) { |
876 | - InvoiceBillOrderDO invoiceBillOrderDO = getById(commitApplyVO.getId()); | |
877 | - if (Objects.isNull(invoiceBillOrderDO)) { | |
1108 | + if(CollectionUtils.isEmpty(commitApplyVO.getId())){ | |
1109 | + throw new BusinessException("id参数不能为空!"); | |
1110 | + } | |
1111 | + List<InvoiceBillOrderDO> invoiceBillOrderDOS = list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(InvoiceBillOrderDO::getEnableFlag,Constant.ENABLE_TEN) | |
1112 | + .in(InvoiceBillOrderDO::getId,commitApplyVO.getId())); | |
1113 | + if (CollectionUtils.isEmpty(invoiceBillOrderDOS)) { | |
878 | 1114 | throw new BusinessException("账单不存在!"); |
879 | 1115 | } |
880 | - if(Constant.ENABLE_TEN==invoiceBillOrderDO.getStatus()){ | |
881 | - throw new BusinessException("该订单已通过审核!"); | |
1116 | + boolean isTure = invoiceBillOrderDOS.stream().filter(Objects::nonNull).allMatch(invoiceBillOrderDO -> invoiceBillOrderDO.getInvoiceNo().equals(invoiceBillOrderDOS.get(0).getInvoiceNo())); | |
1117 | + if(!isTure){ | |
1118 | + throw new BusinessException("勾选订单的invoice需一致"); | |
882 | 1119 | } |
1120 | + //判断选择订单中是否包含已审核通过的订单。 todo:这里需要在审核处理之后,给orderid设置状态,给外带的finacneId集合也设置状态,这里才能生效。 | |
1121 | + boolean isTrue = invoiceBillOrderDOS.stream().filter(Objects::nonNull).anyMatch(invoiceBillOrder -> FinanceEnum.RECEIVED_PAYMENT.getStatus().equals(invoiceBillOrder.getStatus())); | |
1122 | + if(isTrue){ | |
1123 | + throw new BusinessException("订单中包含已收款的数据,无法提交!"); | |
1124 | + } | |
1125 | + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(invoiceBillOrderDOS.stream().filter(Objects::nonNull).map(invoice -> invoice.getOrderId()).collect(Collectors.toSet())); | |
1126 | + //实际收款金额汇总 | |
1127 | + BigDecimal totalPayAmount = BigDecimal.ZERO; | |
1128 | + //客户总价金额汇总 | |
1129 | + BigDecimal totalCustomerAmount = BigDecimal.ZERO; | |
1130 | + //发生扣款金额汇总 | |
1131 | + BigDecimal deductAmount = BigDecimal.ZERO; | |
1132 | + //其他费用汇总 | |
1133 | + BigDecimal otherAmount = BigDecimal.ZERO; | |
1134 | + //todo 还需要判断一下,是否提交的订单中包含正在处于审核中的订单,要是有正在审核的订单,那就不允许提交。 已完成,应该就是这样审核的。 | |
1135 | + checkApply(commitApplyVO.getId()); | |
883 | 1136 | Long userId = dataScope.getLoginUserId(); |
884 | 1137 | String loginUserName = dataScope.getLoginUserName(); |
885 | - checkApply(commitApplyVO.getId(), userId); | |
886 | 1138 | |
887 | - invoiceBillOrderDO.setActualRefundDate(commitApplyVO.getActualRefundDate()); | |
888 | - invoiceBillOrderDO.setPayee(commitApplyVO.getPayee()); | |
889 | - //这里设置财务人员,是因为他们最后是点击提交审核的人员,所以当时候申请人就是获取FinancePerson这个变量。 | |
890 | - invoiceBillOrderDO.setFinancePerson(loginUserName); | |
891 | - OrderFieldLockApplyDO applyDO = initOrderFieldLockApplyDO(invoiceBillOrderDO, userId); | |
1139 | + List<InvoiceBillOrderDO> invoiceBillOrderDO = invoiceBillOrderDOS.stream().filter(Objects::nonNull).map(invoiceBillOrderDo -> { | |
1140 | + invoiceBillOrderDo.setActualRefundDate(commitApplyVO.getActualRefundDate()); | |
1141 | + invoiceBillOrderDo.setPayee(commitApplyVO.getPayee()); | |
1142 | + //这里设置财务人员,是因为他们最后是点击提交审核的人员,所以当时候申请人就是获取FinancePerson这个变量。 | |
1143 | + invoiceBillOrderDo.setFinancePerson(loginUserName); | |
1144 | + invoiceBillOrderDo.setStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); | |
1145 | + return invoiceBillOrderDo; | |
1146 | + }).collect(Collectors.toList()); | |
1147 | + for( InvoiceBillOrderDO invoiceBillOrderDo : invoiceBillOrderDOS){ | |
1148 | + totalPayAmount=totalPayAmount.add(invoiceBillOrderDo.getTotalPayAmount()).setScale(2, RoundingMode.HALF_UP); | |
1149 | + totalCustomerAmount=totalCustomerAmount.add(invoiceBillOrderDo.getTotalCustomerAmount()).setScale(2, RoundingMode.HALF_UP); | |
1150 | + deductAmount=deductAmount.add(invoiceBillOrderDo.getDeductAmount()).setScale(2, RoundingMode.HALF_UP); | |
1151 | + otherAmount=otherAmount.add(invoiceBillOrderDo.getOtherAmount()).setScale(2, RoundingMode.HALF_UP); | |
1152 | + } | |
1153 | + InvoiceFieldVO invoiceFieldVO = InvoiceFieldVO.builder().invoiceNo(invoiceBillOrderDOS.get(0).getInvoiceNo()) | |
1154 | + .invoiceId(invoiceBillOrderDOS.stream().filter(Objects::nonNull).map(InvoiceBillOrderDO::getId).collect(Collectors.toList())) | |
1155 | + .payee(commitApplyVO.getPayee()) | |
1156 | + .innerNo(orderBaseInfoDOList.stream().filter(Objects::nonNull).map(orderBaseInfoDO-> orderBaseInfoDO.getInnerNo()).distinct().collect(Collectors.toList())) | |
1157 | + .backRefundDate(invoiceBillOrderDOS.get(0).getBackRefundDate()) | |
1158 | + .actualRefundDate(commitApplyVO.getActualRefundDate()) | |
1159 | + .businesPerson(invoiceBillOrderDOS.get(0).getBusinesPerson()) | |
1160 | + .trackerUser(invoiceBillOrderDOS.get(0).getTrackerUser()) | |
1161 | + .financePerson(loginUserName) | |
1162 | + .totalCustomerAmount(totalCustomerAmount) | |
1163 | + .deductAmount(deductAmount) | |
1164 | + .otherAmount(otherAmount) | |
1165 | + .totalPayAmount(totalPayAmount).build(); | |
1166 | + OrderFieldLockApplyDO applyDO = initOrderFieldLockApplyDO(invoiceFieldVO, userId); | |
892 | 1167 | transactionHelper.run(() -> { |
893 | 1168 | orderFieldLockApplyService.save(applyDO); |
894 | - invoiceBillOrderDO.setStatus(ApplyStatusEnum.WAIT_AUDIT.getStatus()); | |
895 | - updateById(invoiceBillOrderDO); | |
1169 | + updateBatchById(invoiceBillOrderDO); | |
896 | 1170 | }); |
897 | 1171 | return ServerResult.success(); |
898 | 1172 | } |
899 | 1173 | |
900 | 1174 | /** |
901 | 1175 | * @param id |
902 | - * @param userId | |
1176 | + * | |
903 | 1177 | */ |
904 | - private void checkApply(Long id, Long userId) { | |
905 | - List<OrderFieldLockApplyDO> applyDOS = orderFieldLockApplyService.list(new LambdaQueryWrapper<OrderFieldLockApplyDO>() | |
906 | - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
907 | - .eq(OrderFieldLockApplyDO::getOrderId, id) | |
908 | - .eq(OrderFieldLockApplyDO::getApplyUserId, userId) | |
909 | - .eq(OrderFieldLockApplyDO::getType, ApplyTypeEnum.INVOICE_BILL_APPLY.getType()) | |
910 | - .eq(OrderFieldLockApplyDO::getStatus, ApplyStatusEnum.WAIT_AUDIT.getStatus())); | |
911 | - if (CollectionUtils.isNotEmpty(applyDOS)) { | |
912 | - throw new BusinessException(ServerResultCode.APPLY_UNLOCK_FIELD_EXIST); | |
913 | - } | |
1178 | + private void checkApply(List<Long> id) { | |
1179 | + //如果提交审核的个数大于1,就代表一起提交,就需要逐个判断。 不,应该是不管是否大于1都需要判断。因为即使是一个提交审核,你目前提交的这个id说不定是别人的finance里面附带的。 | |
1180 | + //获取全部待审核的数据 | |
1181 | + List<OrderFieldLockApplyDO> applyDOS = orderFieldLockApplyService.list(new LambdaQueryWrapper<OrderFieldLockApplyDO>() | |
1182 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
1183 | + .eq(OrderFieldLockApplyDO::getType, ApplyTypeEnum.INVOICE_BILL_APPLY.getType()) | |
1184 | + .eq(OrderFieldLockApplyDO::getStatus, ApplyStatusEnum.WAIT_AUDIT.getStatus()));; | |
1185 | + if(CollectionUtils.isNotEmpty(applyDOS)){ | |
1186 | + Set<Long> setApplyIds = applyDOS.stream() | |
1187 | + .filter(Objects::nonNull) | |
1188 | + .flatMap(applyDO -> { | |
1189 | + // 将 orderId 和 finacneId 合并为一个流 | |
1190 | + Stream<Long> orderIdStream = Stream.of(applyDO.getOrderId()); | |
1191 | + Stream<Long> financeIdStream = (applyDO.getFinanceId() != null && !applyDO.getFinanceId().isEmpty()) | |
1192 | + ? Arrays.stream(applyDO.getFinanceId().split(",")) | |
1193 | + .map(Long::valueOf) | |
1194 | + : Stream.empty(); | |
1195 | + return Stream.concat(orderIdStream, financeIdStream); | |
1196 | + }) | |
1197 | + .collect(Collectors.toSet()); | |
1198 | + if(id.stream().anyMatch(ids -> setApplyIds.contains(ids))){ | |
1199 | + throw new BusinessException("申请单中包含处于审核的订单,请等审核完成后再申请!"); | |
1200 | + } | |
1201 | + } | |
914 | 1202 | } |
915 | 1203 | |
916 | 1204 | /** |
... | ... | @@ -930,25 +1218,43 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
930 | 1218 | } |
931 | 1219 | |
932 | 1220 | /** |
933 | - * @param invoiceBillOrderDO | |
1221 | + * @param invoiceFieldvo | |
934 | 1222 | * @param userId |
935 | 1223 | * @return |
936 | 1224 | */ |
937 | - private OrderFieldLockApplyDO initOrderFieldLockApplyDO(InvoiceBillOrderDO invoiceBillOrderDO, Long userId) { | |
1225 | + private OrderFieldLockApplyDO initOrderFieldLockApplyDO(InvoiceFieldVO invoiceFieldvo, Long userId) { | |
938 | 1226 | OrderLockFieldVO lockFieldVO = new OrderLockFieldVO(); |
939 | - lockFieldVO.setInvoiceBillOrderDO(invoiceBillOrderDO); | |
940 | - return OrderFieldLockApplyDO.builder() | |
941 | - .applyUserId(userId) | |
942 | - .auditUserId(null) | |
943 | - .fields(JSONObject.toJSONString(lockFieldVO)) | |
944 | - .orderId(invoiceBillOrderDO.getId()) | |
945 | - .type(ApplyTypeEnum.INVOICE_BILL_APPLY.getType()) | |
946 | - .remark(ApplyTypeEnum.INVOICE_BILL_APPLY.getDesc()) | |
947 | - .status(ApplyStatusEnum.WAIT_AUDIT.getStatus()) | |
948 | - .auditRoleCodes(RoleEnum.ADMIN.getCode() + Constant.COMMA_CHARACTER + RoleEnum.FINANCE_USER.getCode()) | |
949 | - .build(); | |
1227 | + lockFieldVO.setInvoiceFieldVO(invoiceFieldvo); | |
1228 | + List<Long> financeIds = invoiceFieldvo.getInvoiceId().subList(1, invoiceFieldvo.getInvoiceId().size()); | |
1229 | + if (invoiceFieldvo.getInvoiceId().size() > 1) { | |
1230 | + //单独针对财务多个订单提交审核来创建的。 | |
1231 | + return OrderFieldLockApplyDO.builder() | |
1232 | + .applyUserId(userId) | |
1233 | + .auditUserId(null) | |
1234 | + .fields(JSONObject.toJSONString(lockFieldVO)) | |
1235 | + .orderId(invoiceFieldvo.getInvoiceId().get(0)) | |
1236 | + .financeId(null==financeIds || financeIds.isEmpty() ? "" :financeIds.stream().map(String::valueOf).collect(Collectors.joining(","))) | |
1237 | + .type(ApplyTypeEnum.INVOICE_BILL_APPLY.getType()) | |
1238 | + .remark(ApplyTypeEnum.INVOICE_BILL_APPLY.getDesc()) | |
1239 | + .status(ApplyStatusEnum.WAIT_AUDIT.getStatus()) | |
1240 | + //这里设置审核角色有财务并不是让财务审核,会对财务屏蔽审核按钮,只是让它能够看到审核的单子 | |
1241 | + .auditRoleCodes(RoleEnum.ADMIN.getCode() + Constant.COMMA_CHARACTER + RoleEnum.FINANCE_USER.getCode()) | |
1242 | + .build(); | |
1243 | + } else { | |
1244 | + return OrderFieldLockApplyDO.builder() | |
1245 | + .applyUserId(userId) | |
1246 | + .auditUserId(null) | |
1247 | + .fields(JSONObject.toJSONString(lockFieldVO)) | |
1248 | + //这个orderId设置应该怎么设置呢? 先这样写吧。取集合中的第一个作为orderId。 目前没有相当好的办法! 后续是创建一个集合finance附加属性,用来存储其他的所有的id。到时候取出来,与orderid放在一起设置状态,这样就能保证每一状态都被设置。 | |
1249 | + .orderId(invoiceFieldvo.getInvoiceId().get(0)) | |
1250 | + .type(ApplyTypeEnum.INVOICE_BILL_APPLY.getType()) | |
1251 | + .remark(ApplyTypeEnum.INVOICE_BILL_APPLY.getDesc()) | |
1252 | + .status(ApplyStatusEnum.WAIT_AUDIT.getStatus()) | |
1253 | + //这里设置审核角色有财务并不是让财务审核,会对财务屏蔽审核按钮,只是让它能够看到审核的单子 | |
1254 | + .auditRoleCodes(RoleEnum.ADMIN.getCode() + Constant.COMMA_CHARACTER + RoleEnum.FINANCE_USER.getCode()) | |
1255 | + .build(); | |
1256 | + } | |
950 | 1257 | } |
951 | - | |
952 | 1258 | /** |
953 | 1259 | * 通过主键删除数据 |
954 | 1260 | * |
... | ... | @@ -957,7 +1263,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
957 | 1263 | */ |
958 | 1264 | @Override |
959 | 1265 | public ServerResult deleteById(InvoiceBillOrderQueryVO invoiceBillOrderQueryVO) { |
960 | - //其实是不能批量删除的,前端是一个一个删除按钮点击的,但是这里还是使用数组接受的。这里是传的一个id。 | |
1266 | + //删除前端要判断一下,要是勾选多条,这个invoice是否一致。一致才能删除。 | |
961 | 1267 | List<Long> ids = invoiceBillOrderQueryVO.getIds(); |
962 | 1268 | if (CollUtil.isEmpty(ids)) { |
963 | 1269 | return ServerResult.fail("ids 参数不能为空"); |
... | ... | @@ -966,17 +1272,33 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
966 | 1272 | if (CollUtil.isEmpty(invoiceBillOrderList)) { |
967 | 1273 | return ServerResult.success(); |
968 | 1274 | } |
969 | - checkApplyByIds(ids, dataScope.getLoginUserId()); | |
970 | - invoiceBillOrderList.stream().forEach(invoiceBillOrderDO -> { | |
971 | - if(Constant.ENABLE_TEN==invoiceBillOrderDO.getStatus()){ | |
972 | - throw new BusinessException("该订单已通过审核,无法删除!"); | |
973 | - } | |
974 | - }); | |
1275 | + boolean isTure = invoiceBillOrderList.stream().allMatch(invoiceBillOrderDO -> invoiceBillOrderDO.getInvoiceNo().equals(invoiceBillOrderList.get(0).getInvoiceNo())); | |
1276 | + if(!isTure){ | |
1277 | + throw new BusinessException("勾选订单的invoice需一致"); | |
1278 | + } | |
1279 | + | |
1280 | + //有一个审核通过不能删除。之所以这样做,是因为避免忘记其他订单创建invoice,然后遗落了,所以需要删掉重新创建,避免每一个都提交审核并且审核后通过了了。 | |
1281 | + boolean anyPaid = invoiceBillOrderList.stream().filter(Objects::nonNull) | |
1282 | + .anyMatch(invoiceBillOrderDO -> FinanceEnum.RECEIVED_PAYMENT.getStatus()== invoiceBillOrderDO.getStatus()); | |
1283 | + if (anyPaid) { | |
1284 | + throw new BusinessException("包含已收款的订单,无法删除!"); | |
1285 | + } | |
1286 | + //todo 还需要检查一下是否处于审核状态,处于审核状态就无法删除! 完成3 | |
1287 | + checkApply(ids); | |
1288 | + List<Long> orderIds = invoiceBillOrderList.stream() | |
1289 | + .map(InvoiceBillOrderDO::getOrderId) | |
1290 | + .collect(Collectors.toList()); | |
1291 | + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIds); | |
1292 | + List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().map(order -> { | |
1293 | + //这里要删除对应invoiceNo号,但是为了删除后产生空指针异常,所以定义为"N/N"; | |
1294 | + order.setInvoiceNo("N/N"); | |
1295 | + return order; | |
1296 | + }).collect(Collectors.toList()); | |
975 | 1297 | transactionHelper.run(() -> { |
976 | 1298 | removeByIds(ids); |
977 | - invoiceBillMappingService.remove(new LambdaQueryWrapper<InvoiceBillMappingDO>().in(InvoiceBillMappingDO::getInvoiceBillId, ids)); | |
1299 | + //删除关联的order。 | |
1300 | + orderBaseInfoService.updateBatchById(orderBaseInfoDOS); | |
978 | 1301 | }); |
979 | - | |
980 | 1302 | return ServerResult.success(); |
981 | 1303 | } |
982 | 1304 | |
... | ... | @@ -1021,9 +1343,15 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
1021 | 1343 | if(StringUtils.isBlank(bgUrl.getBgUrl())){ |
1022 | 1344 | return ServerResult.fail("上传报关单不能为空"); |
1023 | 1345 | } |
1024 | - //重新上传报关单 | |
1025 | - invoiceBillOrderDO.setBgUrl(bgUrl.getBgUrl()); | |
1026 | - updateById(invoiceBillOrderDO); | |
1346 | + //对于invoice来说,相同的invoiceNo,设置其中一个,那么其他几个也要被改变。 | |
1347 | + List<InvoiceBillOrderDO> invoiceBillOrderDOS = list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(InvoiceBillOrderDO::getEnableFlag, Constant.ENABLE_TEN) | |
1348 | + .eq(InvoiceBillOrderDO::getInvoiceNo, invoiceBillOrderDO.getInvoiceNo())); | |
1349 | + List<InvoiceBillOrderDO> invoiceBillOrderDOList= invoiceBillOrderDOS.stream().map(invoiceBillOrder -> { | |
1350 | + //重新上传报关单 | |
1351 | + invoiceBillOrder.setBgUrl(bgUrl.getBgUrl()); | |
1352 | + return invoiceBillOrder; | |
1353 | + }).collect(Collectors.toList()); | |
1354 | + updateBatchById(invoiceBillOrderDOList); | |
1027 | 1355 | return ServerResult.success(); |
1028 | 1356 | } |
1029 | 1357 | |
... | ... | @@ -1102,7 +1430,33 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
1102 | 1430 | if(Objects.isNull(invoiceBillOrderDO)){ |
1103 | 1431 | throw new BusinessException("应收款单不存在!"); |
1104 | 1432 | } |
1105 | - invoiceBillOrderDO.setBackRefundDate(createVO.getBackRefundDate()); | |
1433 | + List<InvoiceBillOrderDO> invoiceBillOrderDOList = list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(InvoiceBillOrderDO::getEnableFlag, Constant.ENABLE_TEN) | |
1434 | + .eq(InvoiceBillOrderDO::getInvoiceNo, invoiceBillOrderDO.getInvoiceNo())); | |
1435 | + boolean anyPaid= invoiceBillOrderDOList.stream().filter(Objects::nonNull).anyMatch(invoiceBillOrder -> FinanceEnum.RECEIVED_PAYMENT.getStatus() == invoiceBillOrder.getStatus()); | |
1436 | + if(anyPaid){ | |
1437 | + throw new BusinessException("相同invoiceNo的订单已收款完成,无法设置!"); | |
1438 | + } | |
1439 | + //todo 要审核判断一下,是否处于审核状态。 完成4 | |
1440 | + checkApply(invoiceBillOrderDOList.stream().filter(Objects::nonNull).map(invoiceDO -> invoiceDO.getId()).collect(Collectors.toList())); | |
1441 | + List<InvoiceBillOrderDO> invoiceBillOrderDOS = invoiceBillOrderDOList.stream().filter(Objects::nonNull).map(invoiceBillOrder -> { | |
1442 | + invoiceBillOrder.setBackRefundDate(createVO.getBackRefundDate()); | |
1443 | + return invoiceBillOrder; | |
1444 | + }).collect(Collectors.toList()); | |
1445 | + updateBatchById(invoiceBillOrderDOS); | |
1446 | + return ServerResult.success(); | |
1447 | + } | |
1448 | + | |
1449 | + @Override | |
1450 | + public ServerResult byIdAddNotes(InvoiceBillCreateVO createVO) { | |
1451 | + if(Objects.isNull(createVO.getId())){ | |
1452 | + return ServerResult.fail(); | |
1453 | + } | |
1454 | + InvoiceBillOrderDO invoiceBillOrderDO = getById(createVO.getId()); | |
1455 | + if(Objects.isNull(invoiceBillOrderDO)){ | |
1456 | + throw new BusinessException("应收款单不存在!"); | |
1457 | + } | |
1458 | + //备注信息,审核完应该也能修改。 | |
1459 | + invoiceBillOrderDO.setNotes(createVO.getNotes()); | |
1106 | 1460 | updateById(invoiceBillOrderDO); |
1107 | 1461 | return ServerResult.success(); |
1108 | 1462 | } | ... | ... |
src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
... | ... | @@ -142,10 +142,11 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O |
142 | 142 | @Resource |
143 | 143 | private AdminUserRoleService adminUserRoleService; |
144 | 144 | @Resource |
145 | - private InvoiceBillMappingService invoiceBillMappingService; | |
145 | + private InvoiceBillOrderService invoiceBillOrderService; | |
146 | 146 | |
147 | 147 | @Resource |
148 | - private CheckBillMappingService checkBillMappingService; | |
148 | + private ProducePaymentCheckBillOrderService producePaymentCheckBillOrderService; | |
149 | + | |
149 | 150 | |
150 | 151 | |
151 | 152 | /** |
... | ... | @@ -231,7 +232,11 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O |
231 | 232 | |
232 | 233 | // 填充发票信息 |
233 | 234 | fillInvoiceNo(resultVOList); |
234 | - | |
235 | + //第四版 start | |
236 | +/* //需要填充生产科对账单号信息 | |
237 | + fillCheckNo(resultVOList); | |
238 | + end | |
239 | + */ | |
235 | 240 | |
236 | 241 | if (locked) { |
237 | 242 | // 填充字段锁定信息 |
... | ... | @@ -881,20 +886,48 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O |
881 | 886 | } |
882 | 887 | |
883 | 888 | Set<Long> orderIds = orderInfoResultVOList.stream().map(OrderInfoResultVO::getId).collect(Collectors.toSet()); |
884 | - List<InvoiceBillMappingDO> invoiceBillMappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>() | |
889 | + /* List<InvoiceBillMappingDO> invoiceBillMappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>() | |
885 | 890 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
886 | - .in(InvoiceBillMappingDO::getOrderId, orderIds)); | |
887 | - if (CollectionUtils.isEmpty(invoiceBillMappingDOS)) { | |
891 | + .in(InvoiceBillMappingDO::getOrderId, orderIds));*/ | |
892 | + List<InvoiceBillOrderDO> invoiceBillOrderDOList = invoiceBillOrderService.list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
893 | + .in(InvoiceBillOrderDO::getOrderId, orderIds)); | |
894 | + | |
895 | + if (CollectionUtils.isEmpty(invoiceBillOrderDOList)) { | |
888 | 896 | return; |
889 | 897 | } |
890 | - Map<Long, InvoiceBillMappingDO> invoiceBillMappingDOMap = invoiceBillMappingDOS.stream().collect(Collectors.toMap(InvoiceBillMappingDO::getOrderId, Function.identity(), (v1, v2) -> v1)); | |
898 | + Map<Long, InvoiceBillOrderDO> invoiceBillMappingDOMap = invoiceBillOrderDOList.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getOrderId, Function.identity(), (v1, v2) -> v1)); | |
891 | 899 | orderInfoResultVOList.forEach(result -> { |
892 | 900 | if (invoiceBillMappingDOMap.containsKey(result.getId())) { |
893 | - InvoiceBillMappingDO invoiceBillMappingDO = invoiceBillMappingDOMap.get(result.getId()); | |
901 | + InvoiceBillOrderDO invoiceBillMappingDO = invoiceBillMappingDOMap.get(result.getId()); | |
894 | 902 | result.setInvoiceNo(invoiceBillMappingDO.getInvoiceNo()); |
895 | 903 | } |
896 | 904 | }); |
897 | 905 | } |
906 | +//第四版 start | |
907 | +/* | |
908 | + private void fillCheckNo(List<OrderInfoResultVO> orderInfoResultVOList) { | |
909 | + if (CollectionUtils.isEmpty(orderInfoResultVOList)) { | |
910 | + return; | |
911 | + } | |
912 | + | |
913 | + Set<Long> orderIds = orderInfoResultVOList.stream().map(OrderInfoResultVO::getId).collect(Collectors.toSet()); | |
914 | + List<CheckBillMappingDO> checkBillMappingDOSDOS = checkBillMappingService.list(new LambdaQueryWrapper<CheckBillMappingDO>() | |
915 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
916 | + .in(CheckBillMappingDO::getOrderId, orderIds)); | |
917 | + if (CollectionUtils.isEmpty(checkBillMappingDOSDOS)) { | |
918 | + return; | |
919 | + } | |
920 | + Map<Long, CheckBillMappingDO> checkBillMappingDOMap = checkBillMappingDOSDOS.stream().collect(Collectors.toMap(CheckBillMappingDO::getOrderId, Function.identity(), (v1, v2) -> v1)); | |
921 | + orderInfoResultVOList.forEach(result -> { | |
922 | + if (checkBillMappingDOMap.containsKey(result.getId())) { | |
923 | + CheckBillMappingDO checkBillMappingDO = checkBillMappingDOMap.get(result.getId()); | |
924 | + result.setCheckNo(checkBillMappingDO.getCheckNo()); | |
925 | + } | |
926 | + }); | |
927 | + } | |
928 | +end | |
929 | +*/ | |
930 | + | |
898 | 931 | |
899 | 932 | /** |
900 | 933 | * @param orderInfoResultVOList |
... | ... | @@ -1167,9 +1200,6 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O |
1167 | 1200 | if (StringUtils.isBlank(resultVO.getCnColor())) { |
1168 | 1201 | return false; |
1169 | 1202 | } |
1170 | - if (StringUtils.isBlank(resultVO.getPicUrl())) { | |
1171 | - return false; | |
1172 | - } | |
1173 | 1203 | if (StringUtils.isBlank(resultVO.getProductionComment())) { |
1174 | 1204 | return false; |
1175 | 1205 | } |
... | ... | @@ -1468,6 +1498,8 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O |
1468 | 1498 | .ge(StringUtils.isNotBlank(queryVO.getOrderHodStartTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodStartTime()) |
1469 | 1499 | .le(StringUtils.isNotBlank(queryVO.getOrderHodEndTime()), OrderBaseInfoDO::getOrderHodTime, queryVO.getOrderHodEndTime()) |
1470 | 1500 | .in(CollectionUtils.isNotEmpty(queryVO.getOrderIds()), OrderBaseInfoDO::getId, queryVO.getOrderIds()) |
1501 | + .in(CollectionUtils.isNotEmpty(queryVO.getInvoiceNo()),OrderBaseInfoDO::getInvoiceNo,queryVO.getInvoiceNo()) | |
1502 | + .in(CollectionUtils.isNotEmpty(queryVO.getCheckNo()),OrderBaseInfoDO::getCheckNo,queryVO.getCheckNo()) | |
1471 | 1503 | .orderByDesc(OrderBaseInfoDO::getId) |
1472 | 1504 | ; |
1473 | 1505 | } |
... | ... | @@ -1972,7 +2004,17 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O |
1972 | 2004 | inspectionStageDO.setBoxPacket(inspectionStageInfo.getBoxPacket()); |
1973 | 2005 | } |
1974 | 2006 | inspectionStageDO.setOrderId(updateVO.getOrderId()); |
2007 | + /* //第四版首页展示,这里判断这个订单的跟单信息是否处于跟单中的状态。如果是的话就那就不给这个订单设置质检中,避免首页计算数据时重复计算。随便设置一个状态。 | |
2008 | + OrderTrackStageDO orderTrackStageDO = trackStageService.getById(updateVO.getOrderId()); | |
2009 | + if(Objects.nonNull(orderTrackStageDO) && Objects.nonNull(orderTrackStageDO.getOrderStatus()) | |
2010 | + && OrderStatusEnum.TRACK_ING.equals(orderTrackStageDO.getOrderStatus()) ){ | |
2011 | + inspectionStageDO.setOrderStatus(OrderStatusEnum.TRACK_PASS.getStatus()); | |
2012 | + }else{ | |
2013 | + inspectionStageDO.setOrderStatus(OrderStatusEnum.INSPECT_ING.getStatus()); | |
2014 | + }*/ | |
2015 | + //第四版时下面这句需要删掉。 | |
1975 | 2016 | inspectionStageDO.setOrderStatus(OrderStatusEnum.INSPECT_ING.getStatus()); |
2017 | + | |
1976 | 2018 | inspectionStageService.updateById(inspectionStageDO); |
1977 | 2019 | OrderBaseInfoDO orderBaseInfoDO = baseInfoService.getById(updateVO.getOrderId()); |
1978 | 2020 | AdminUserDO ProductionDepartmentUserDO = userService.getOne(new LambdaQueryWrapper<AdminUserDO>() |
... | ... | @@ -1985,7 +2027,17 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O |
1985 | 2027 | inspectionStageDO = new OrderInspectionStageDO(); |
1986 | 2028 | BeanUtils.copyProperties(updateVO.getInspectionStageInfo(), inspectionStageDO); |
1987 | 2029 | inspectionStageDO.setOrderId(updateVO.getOrderId()); |
2030 | + /* //第四版首页展示,这里判断这个订单的跟单信息是否处于跟单中的状态。如果是的话就那就不给这个订单设置质检中,避免首页计算数据时重复计算。随便设置一个状态。 start | |
2031 | + OrderTrackStageDO orderTrackStageDO = trackStageService.getById(updateVO.getOrderId()); | |
2032 | + if(Objects.nonNull(orderTrackStageDO) && Objects.nonNull(orderTrackStageDO.getOrderStatus()) | |
2033 | + && OrderStatusEnum.TRACK_ING.equals(orderTrackStageDO.getOrderStatus()) ){ | |
2034 | + inspectionStageDO.setOrderStatus(OrderStatusEnum.TRACK_PASS.getStatus()); | |
2035 | + }else{ | |
2036 | + inspectionStageDO.setOrderStatus(OrderStatusEnum.INSPECT_ING.getStatus()); | |
2037 | + }*/ | |
2038 | + //第四版时下面这句需要删掉。 | |
1988 | 2039 | inspectionStageDO.setOrderStatus(OrderStatusEnum.INSPECT_ING.getStatus()); |
2040 | +//end | |
1989 | 2041 | inspectionStageService.save(inspectionStageDO); |
1990 | 2042 | OrderBaseInfoDO orderBaseInfoDO = baseInfoService.getById(updateVO.getOrderId()); |
1991 | 2043 | AdminUserDO ProductionDepartmentUserDO = userService.getOne(new LambdaQueryWrapper<AdminUserDO>() |
... | ... | @@ -2143,15 +2195,18 @@ public class OrderBaseInfoServiceImpl extends ServiceImpl<OrderBaseInfoMapper, O |
2143 | 2195 | return ServerResult.success(); |
2144 | 2196 | } |
2145 | 2197 | //判断是否存在invoice和订单应付款。 |
2146 | - List<InvoiceBillMappingDO> InvoiceBillMappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>() | |
2198 | + /* List<InvoiceBillMappingDO> InvoiceBillMappingDOS = invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>() | |
2199 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
2200 | + .in(InvoiceBillMappingDO::getOrderId, ids));*/ | |
2201 | + List<InvoiceBillOrderDO> InvoiceBillMappingDOS = invoiceBillOrderService.list(new LambdaQueryWrapper<InvoiceBillOrderDO>() | |
2147 | 2202 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
2148 | - .in(InvoiceBillMappingDO::getOrderId, ids)); | |
2203 | + .in(InvoiceBillOrderDO::getOrderId, ids)); | |
2149 | 2204 | if(CollectionUtils.isNotEmpty(InvoiceBillMappingDOS)){ |
2150 | 2205 | throw new BusinessException("该订单已绑定Invoice账单,请先删除对应的Invoice账单!"); |
2151 | 2206 | } |
2152 | - List<CheckBillMappingDO> checkBillMappingDOList = checkBillMappingService.list(new LambdaQueryWrapper<CheckBillMappingDO>() | |
2207 | + List<ProducePaymentCheckBillOrderDO> checkBillMappingDOList = producePaymentCheckBillOrderService.list(new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>() | |
2153 | 2208 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
2154 | - .in(CheckBillMappingDO::getOrderId, ids)); | |
2209 | + .in(ProducePaymentCheckBillOrderDO::getOrderId, ids)); | |
2155 | 2210 | if(CollectionUtils.isNotEmpty(checkBillMappingDOList)){ |
2156 | 2211 | throw new BusinessException("该订单已绑定生产科对账单号,请先删除对应的生产科对账单!"); |
2157 | 2212 | } | ... | ... |
src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
... | ... | @@ -16,10 +16,7 @@ import com.order.erp.common.constant.ServerResultCode; |
16 | 16 | import com.order.erp.common.exception.BusinessException; |
17 | 17 | import com.order.erp.common.utils.OrderFieldUtils; |
18 | 18 | import com.order.erp.config.DataScope; |
19 | -import com.order.erp.domain.ApplyStatusEnum; | |
20 | -import com.order.erp.domain.ApplyTypeEnum; | |
21 | -import com.order.erp.domain.OrderStatusEnum; | |
22 | -import com.order.erp.domain.RoleEnum; | |
19 | +import com.order.erp.domain.*; | |
23 | 20 | import com.order.erp.domain.dto.BaseDO; |
24 | 21 | import com.order.erp.domain.dto.order.*; |
25 | 22 | import com.order.erp.domain.vo.order.*; |
... | ... | @@ -143,12 +140,14 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
143 | 140 | if (ApplyTypeEnum.INVOICE_BILL_APPLY.getType().equals(x.getType())) { |
144 | 141 | // 解决待审批列表中的应收款要显示内部编码。 这里开始 |
145 | 142 | OrderLockFieldVO orderLockFieldVO = JSONObject.parseObject(fields, OrderLockFieldVO.class); |
146 | - if(Objects.nonNull(orderLockFieldVO.getInvoiceBillOrderDO()) && StringUtils.isNotBlank(orderLockFieldVO.getInvoiceBillOrderDO().getInvoiceNo())){ | |
147 | - List<InvoiceBillMappingDO> invoiceBillMappingDOList= invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>() | |
143 | + /* if(Objects.nonNull(orderLockFieldVO.getInvoiceFieldVO()) && StringUtils.isNotBlank(orderLockFieldVO.getInvoiceFieldVO().getInvoiceNo())){ | |
144 | + *//* List<InvoiceBillMappingDO> invoiceBillMappingDOList= invoiceBillMappingService.list(new LambdaQueryWrapper<InvoiceBillMappingDO>() | |
148 | 145 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
149 | - .eq(InvoiceBillMappingDO::getInvoiceNo, orderLockFieldVO.getInvoiceBillOrderDO().getInvoiceNo())); | |
146 | + .eq(InvoiceBillMappingDO::getInvoiceNo, orderLockFieldVO.getInvoiceBillOrderDO().getInvoiceNo()));*//* | |
147 | + List<InvoiceBillOrderDO> invoiceBillMappingDOList = invoiceBillOrderService.list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
148 | + .eq(InvoiceBillOrderDO::getInvoiceNo, orderLockFieldVO.getInvoiceFieldVO().getInvoiceNo())); | |
150 | 149 | if(CollectionUtils.isNotEmpty(invoiceBillMappingDOList)){ |
151 | - Set<Long> orderIds = invoiceBillMappingDOList.stream().map(InvoiceBillMappingDO::getOrderId).filter(Objects::nonNull).collect(Collectors.toSet()); | |
150 | + Set<Long> orderIds = invoiceBillMappingDOList.stream().map(InvoiceBillOrderDO::getOrderId).filter(Objects::nonNull).collect(Collectors.toSet()); | |
152 | 151 | if(CollectionUtils.isNotEmpty(orderIds)){ |
153 | 152 | List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIds); |
154 | 153 | if(CollectionUtils.isNotEmpty(orderBaseInfoDOList)){ |
... | ... | @@ -161,14 +160,14 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
161 | 160 | } |
162 | 161 | } |
163 | 162 | } |
164 | - } //这里结束 上述为待审核列表中应收款要显示内部编码。 | |
163 | + }*/ //这里结束 上述为待审核列表中应收款要显示内部编码。 这部分不需要了,内部编码放在里面了。 | |
165 | 164 | //这部分的目的是,对于跟单员和业务员他们也能查看到应收款和应付款中各自负责订单的审核情况。 而财务和admin则会执行else{},会看到所有的审核订单信息。 |
166 | 165 | if(RoleEnum.BUSINESS_USER.getCode().equals(roleEnum.getCode())){ |
167 | - if(Objects.nonNull(orderLockFieldVO.getInvoiceBillOrderDO()) && orderLockFieldVO.getInvoiceBillOrderDO().getBusinesPerson().equals(loginUserName)){ | |
166 | + if(Objects.nonNull(orderLockFieldVO.getInvoiceFieldVO()) && orderLockFieldVO.getInvoiceFieldVO().getBusinesPerson().equals(loginUserName)){ | |
168 | 167 | resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class)); |
169 | 168 | } |
170 | 169 | } else if (RoleEnum.TRACKER_USER.getCode().equals(roleEnum.getCode())) { |
171 | - if(Objects.nonNull(orderLockFieldVO.getInvoiceBillOrderDO()) && orderLockFieldVO.getInvoiceBillOrderDO().getTrackerUser().equals(loginUserName)){ | |
170 | + if(Objects.nonNull(orderLockFieldVO.getInvoiceFieldVO()) && orderLockFieldVO.getInvoiceFieldVO().getTrackerUser().equals(loginUserName)){ | |
172 | 171 | resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class)); |
173 | 172 | } |
174 | 173 | } else{ |
... | ... | @@ -181,7 +180,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
181 | 180 | if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(x.getType()) || ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(x.getType())) { |
182 | 181 | OrderLockFieldVO orderLockFieldVO = JSONObject.parseObject(fields, OrderLockFieldVO.class); |
183 | 182 | // 解决待审批列表中的应付款要显示内部编码。 这里开始 |
184 | - if(Objects.nonNull(orderLockFieldVO.getCheckBillOrderDO()) && StringUtils.isNotBlank(orderLockFieldVO.getCheckBillOrderDO().getCheckNo())){ | |
183 | + /* if(Objects.nonNull(orderLockFieldVO.getCheckBillOrderDO()) && StringUtils.isNotBlank(orderLockFieldVO.getCheckBillOrderDO().getCheckNo())){ | |
185 | 184 | List<CheckBillMappingDO> checkBillMappingDOList= checkBillMappingService.list(new LambdaQueryWrapper<CheckBillMappingDO>() |
186 | 185 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
187 | 186 | .eq(CheckBillMappingDO::getCheckNo, orderLockFieldVO.getCheckBillOrderDO().getCheckNo())); |
... | ... | @@ -199,7 +198,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
199 | 198 | } |
200 | 199 | } |
201 | 200 | } |
202 | - }//这里结束 上述为待审核列表中应收款要显示内部编码。 | |
201 | + }//这里结束 上述为待审核列表中应收款要显示内部编码。*/ //这部分不需要了。 | |
203 | 202 | //这部分的目的是,对于跟单员和业务员他们也能查看到应收款和应付款中各自负责订单的审核情况。 而财务和admin则会执行else{},会看到所有的审核订单信息。 |
204 | 203 | if(RoleEnum.BUSINESS_USER.getCode().equals(roleEnum.getCode())){ |
205 | 204 | if(Objects.nonNull(orderLockFieldVO.getCheckBillOrderDO()) && orderLockFieldVO.getCheckBillOrderDO().getBusinesPerson().equals(loginUserName)){ |
... | ... | @@ -437,19 +436,40 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
437 | 436 | int firstTwoDigits = queryVO.getType() / 100; |
438 | 437 | int lastTwoDigits = queryVO.getType() % 100; |
439 | 438 | queryWrapper.in(OrderFieldLockApplyDO::getType,firstTwoDigits,lastTwoDigits); |
439 | + if(CollectionUtils.isNotEmpty(queryVO.getInnerNo())){ | |
440 | + String innerNoList = queryVO.getInnerNo().stream() | |
441 | + .map(innerNo -> "'" + innerNo + "'") // 包装为单引号 | |
442 | + .collect(Collectors.joining(",")); | |
443 | + queryWrapper.apply( | |
444 | + "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.invoiceFieldVO.innerNo')) in (" + innerNoList + ")" | |
445 | + ); | |
446 | + } | |
440 | 447 | }else{ |
448 | + if(Objects.nonNull(queryVO.getType()) && queryVO.getType().equals(ApplyTypeEnum.CHECK_BILL_APPLY.getType())){ | |
449 | + queryWrapper.eq(Objects.nonNull(queryVO.getType()), OrderFieldLockApplyDO::getType, queryVO.getType()); | |
450 | + //这个内部编号单独针对于应付款申请设置的。 | |
451 | + if(CollectionUtils.isNotEmpty(queryVO.getInnerNo())){ | |
452 | + String innerNoList = queryVO.getInnerNo().stream() | |
453 | + .map(innerNo -> "'" + innerNo + "'") // 包装为单引号 | |
454 | + .collect(Collectors.joining(",")); | |
455 | + queryWrapper.apply( | |
456 | + "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.producePaymentCheckBillFieldVO.innerNo')) in (" + innerNoList + ")" | |
457 | + ); | |
458 | + } | |
459 | + } | |
441 | 460 | queryWrapper.eq(Objects.nonNull(queryVO.getType()), OrderFieldLockApplyDO::getType, queryVO.getType()); |
442 | 461 | } |
443 | 462 | } |
444 | 463 | // 已测试,没问题。用途:在应收款和应付款中,通过输入invoiceNo和checkNo进行筛选查询。 变量名为invoice和checkNo。 |
445 | - /* if (StringUtils.isNotBlank(queryVO.getInvoiceNo())) { | |
464 | + if (StringUtils.isNotBlank(queryVO.getInvoiceNo())) { | |
446 | 465 | // 获取并修整 invoiceNo 字符串 |
447 | 466 | String invoiceNos = queryVO.getInvoiceNo().trim(); |
448 | 467 | // 检查处理后的字符串是否仍然有效 |
449 | 468 | if (!invoiceNos.isEmpty()) { |
450 | 469 | // 使用参数化查询避免 SQL 拼接问题 |
451 | 470 | queryWrapper.apply( |
452 | - "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.invoiceBillOrderDO.invoiceNo')) = {0}", | |
471 | +// "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.invoiceBillOrderDO.invoiceNo')) = {0}", | |
472 | + "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.invoiceFieldVO.invoiceNo')) = {0}", | |
453 | 473 | invoiceNos |
454 | 474 | ); |
455 | 475 | } |
... | ... | @@ -463,11 +483,12 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
463 | 483 | if (!checkNos.isEmpty()) { |
464 | 484 | // 使用参数化查询避免 SQL 拼接问题 |
465 | 485 | queryWrapper.apply( |
466 | - "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.checkBillOrderDO.checkNo')) = {0}", | |
486 | +// "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.checkBillOrderDO.checkNo')) = {0}", | |
487 | + "JSON_UNQUOTE(JSON_EXTRACT(fields, '$.producePaymentCheckBillFieldVO.checkNo')) = {0}", | |
467 | 488 | checkNos |
468 | 489 | ); |
469 | 490 | } |
470 | - }*/ | |
491 | + } | |
471 | 492 | //由于不懂下面的代码,所以我只对我需要的需求进行判断,我只针对我需要的这种情况,其他情况下就不走这种情况。 |
472 | 493 | if(RoleEnum.TRACKER_USER.getCode().equals(roleEnum.getCode()) && (queryVO.getType()==Constant.THIRTY || queryVO.getType()==4050)){ |
473 | 494 | |
... | ... | @@ -553,14 +574,28 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
553 | 574 | orderBaseInfoService.updateById(orderBaseInfoDO); |
554 | 575 | } else if (ApplyTypeEnum.INVOICE_BILL_APPLY.getType().equals(applyDO.getType())) { |
555 | 576 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
556 | - InvoiceBillOrderDO invoiceBillOrderDO = lockFieldVO.getInvoiceBillOrderDO(); | |
557 | - invoiceBillOrderDO.setStatus(ApplyStatusEnum.AUDIT_REFUSE.getStatus()); | |
558 | - invoiceBillOrderService.updateById(invoiceBillOrderDO); | |
577 | + InvoiceFieldVO invoiceBillOrderDO = lockFieldVO.getInvoiceFieldVO(); | |
578 | + List<InvoiceBillOrderDO> invoiceBillOrderDOList = invoiceBillOrderService.listByIds(invoiceBillOrderDO.getInvoiceId()); | |
579 | + if(CollectionUtils.isNotEmpty(invoiceBillOrderDOList)){ | |
580 | + List<InvoiceBillOrderDO> invoiceBillOrderDOS = invoiceBillOrderDOList.stream().filter(Objects::nonNull).map(x -> { | |
581 | + x.setStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); | |
582 | + return x; | |
583 | + }).collect(Collectors.toList()); | |
584 | + invoiceBillOrderService.updateBatchById(invoiceBillOrderDOS); | |
585 | + } | |
559 | 586 | } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { |
560 | 587 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
561 | - ProducePaymentCheckBillOrderDO checkBillOrderDO = lockFieldVO.getCheckBillOrderDO(); | |
562 | - checkBillOrderDO.setStatus(ApplyStatusEnum.AUDIT_REFUSE.getStatus()); | |
563 | - checkBillOrderService.updateById(checkBillOrderDO); | |
588 | + ProducePaymentCheckBillFieldVO checkBillOrderDO = lockFieldVO.getProducePaymentCheckBillFieldVO(); | |
589 | + List<Long> producePaymentCheckBillId = checkBillOrderDO.getProducePaymentCheckBillId(); | |
590 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList = checkBillOrderService.listByIds(producePaymentCheckBillId); | |
591 | + if(CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOList)){ | |
592 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS= producePaymentCheckBillOrderDOList.stream().filter(Objects::nonNull).map(x -> { | |
593 | + x.setStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); | |
594 | + return x; | |
595 | + }).collect(Collectors.toList()); | |
596 | + checkBillOrderService.updateBatchById(producePaymentCheckBillOrderDOS); | |
597 | + } | |
598 | + | |
564 | 599 | } else if(ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())){ |
565 | 600 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
566 | 601 | ProducePaymentCheckBillOrderDO checkBillOrderDO = lockFieldVO.getCheckBillOrderDO(); |
... | ... | @@ -709,16 +744,30 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
709 | 744 | applyDO.setAuditUserId(auditUserId); |
710 | 745 | applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); |
711 | 746 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
712 | - InvoiceBillOrderDO invoiceBillOrderDO = lockFieldVO.getInvoiceBillOrderDO(); | |
713 | - invoiceBillOrderDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | |
714 | - invoiceBillOrderService.updateById(invoiceBillOrderDO); | |
747 | + InvoiceFieldVO invoiceBillOrderDO = lockFieldVO.getInvoiceFieldVO(); | |
748 | + List<Long> invoiceId = invoiceBillOrderDO.getInvoiceId(); | |
749 | + List<InvoiceBillOrderDO> invoiceBillOrderDOS = invoiceBillOrderService.listByIds(invoiceId); | |
750 | + if(CollectionUtils.isNotEmpty(invoiceBillOrderDOS)){ | |
751 | + List<InvoiceBillOrderDO> invoiceeBillOrderDOs = invoiceBillOrderDOS.stream().filter(Objects::nonNull).map(x -> { | |
752 | + x.setStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); | |
753 | + return x; | |
754 | + }).collect(Collectors.toList()); | |
755 | + invoiceBillOrderService.updateBatchById(invoiceeBillOrderDOs); | |
756 | + } | |
715 | 757 | } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { |
716 | 758 | applyDO.setAuditUserId(auditUserId); |
717 | 759 | applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); |
718 | 760 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
719 | - ProducePaymentCheckBillOrderDO checkBillOrderDO = lockFieldVO.getCheckBillOrderDO(); | |
720 | - checkBillOrderDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | |
721 | - checkBillOrderService.updateById(checkBillOrderDO); | |
761 | + ProducePaymentCheckBillFieldVO checkBillOrderDO = lockFieldVO.getProducePaymentCheckBillFieldVO(); | |
762 | + List<Long> producePaymentCheckBillId = checkBillOrderDO.getProducePaymentCheckBillId(); | |
763 | + List<ProducePaymentCheckBillOrderDO> checkBillOrderDOS = checkBillOrderService.listByIds(producePaymentCheckBillId); | |
764 | + if(CollectionUtils.isNotEmpty(checkBillOrderDOS)){ | |
765 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS = checkBillOrderDOS.stream().filter(Objects::nonNull).map(x -> { | |
766 | + x.setStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); | |
767 | + return x; | |
768 | + }).collect(Collectors.toList()); | |
769 | + checkBillOrderService.updateBatchById(producePaymentCheckBillOrderDOS); | |
770 | + } | |
722 | 771 | } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { |
723 | 772 | applyDO.setAuditUserId(auditUserId); |
724 | 773 | applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | ... | ... |
src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java
... | ... | @@ -20,6 +20,7 @@ import com.order.erp.common.utils.TransactionHelper; |
20 | 20 | import com.order.erp.config.DataScope; |
21 | 21 | import com.order.erp.domain.ApplyStatusEnum; |
22 | 22 | import com.order.erp.domain.ApplyTypeEnum; |
23 | +import com.order.erp.domain.FinanceEnum; | |
23 | 24 | import com.order.erp.domain.RoleEnum; |
24 | 25 | import com.order.erp.domain.dto.BaseDO; |
25 | 26 | import com.order.erp.domain.dto.SystemSettingDO; |
... | ... | @@ -46,6 +47,7 @@ import java.time.LocalDateTime; |
46 | 47 | import java.util.*; |
47 | 48 | import java.util.function.Function; |
48 | 49 | import java.util.stream.Collectors; |
50 | +import java.util.stream.Stream; | |
49 | 51 | |
50 | 52 | /** |
51 | 53 | * 生产科对账单应收账单(ProducePaymentCheckBillOrder)表服务实现类 |
... | ... | @@ -107,13 +109,15 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
107 | 109 | |
108 | 110 | @Override |
109 | 111 | public ServerResult listBaseOrderInfoBy(ProducePaymentBaseOrderQueryVO queryVO) { |
110 | - List<CheckBillMappingDO> mappingDOS = checkBillMappingService.list(new LambdaQueryWrapper<CheckBillMappingDO>() | |
111 | - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
112 | - .eq(CheckBillMappingDO::getCheckNo, queryVO.getCheckNo())); | |
112 | +// List<CheckBillMappingDO> mappingDOS = checkBillMappingService.list(new LambdaQueryWrapper<CheckBillMappingDO>() | |
113 | +// .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
114 | +// .eq(CheckBillMappingDO::getCheckNo, queryVO.getCheckNo())); | |
115 | + List<ProducePaymentCheckBillOrderDO> mappingDOS =list(new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
116 | + .eq(ProducePaymentCheckBillOrderDO::getCheckNo, queryVO.getCheckNo())); | |
113 | 117 | if (CollectionUtils.isEmpty(mappingDOS)) { |
114 | 118 | return ServerResult.success(); |
115 | 119 | } |
116 | - Set<Long> orderIds = mappingDOS.stream().map(CheckBillMappingDO::getOrderId).collect(Collectors.toSet()); | |
120 | + Set<Long> orderIds = mappingDOS.stream().map(ProducePaymentCheckBillOrderDO::getOrderId).collect(Collectors.toSet()); | |
117 | 121 | List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIds); |
118 | 122 | List<OrderProfitAnalysisDO> profitAnalysisDOList = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>() |
119 | 123 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
... | ... | @@ -160,12 +164,13 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
160 | 164 | if (CollectionUtils.isEmpty(checkBillOrderDOS)) { |
161 | 165 | return null; |
162 | 166 | } |
163 | - Set<Long> ids = checkBillOrderDOS.stream().map(ProducePaymentCheckBillOrderDO::getId).collect(Collectors.toSet()); | |
167 | + /* Set<Long> ids = checkBillOrderDOS.stream().map(ProducePaymentCheckBillOrderDO::getId).collect(Collectors.toSet()); | |
164 | 168 | List<CheckBillMappingDO> checkBillMappingDOS = checkBillMappingService.list(new LambdaQueryWrapper<CheckBillMappingDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(CheckBillMappingDO::getCheckBillId, ids)); |
165 | 169 | if (CollectionUtils.isEmpty(checkBillMappingDOS)) { |
166 | 170 | return null; |
167 | - } | |
168 | - Map<Long, CheckBillMappingDO> orderBillMap = checkBillMappingDOS.stream().collect(Collectors.toMap(CheckBillMappingDO::getOrderId, Function.identity(), (x, y) -> x)); | |
171 | + }*/ | |
172 | + Map<Long, ProducePaymentCheckBillOrderDO> orderBillMap = checkBillOrderDOS.stream().collect(Collectors.toMap(ProducePaymentCheckBillOrderDO::getOrderId, Function.identity(), (x, y) -> x)); | |
173 | +// Map<Long, CheckBillMappingDO> orderBillMap = checkBillMappingDOS.stream().collect(Collectors.toMap(CheckBillMappingDO::getOrderId, Function.identity(), (x, y) -> x)); | |
169 | 174 | List<CheckOrderBaseItemVO> itemVOS = getCheckOrderBaseItems(orderBillMap); |
170 | 175 | Map<String, ProducePaymentCheckBillOrderDO> checkBillOrderDOMap = checkBillOrderDOS.stream().collect(Collectors.toMap(ProducePaymentCheckBillOrderDO::getCheckNo, Function.identity(), (x, y) -> x)); |
171 | 176 | Map<String, List<CheckOrderBaseItemVO>> baseItemMap = itemVOS.stream().collect(Collectors.groupingBy(CheckOrderBaseItemVO::getCheckNo)); |
... | ... | @@ -296,7 +301,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
296 | 301 | * @param mappingDOMap |
297 | 302 | * @return |
298 | 303 | */ |
299 | - private List<CheckOrderBaseItemVO> getCheckOrderBaseItems(Map<Long, CheckBillMappingDO> mappingDOMap) { | |
304 | + private List<CheckOrderBaseItemVO> getCheckOrderBaseItems(Map<Long, ProducePaymentCheckBillOrderDO> mappingDOMap) { | |
300 | 305 | Set<Long> orderIds = mappingDOMap.keySet(); |
301 | 306 | List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIds); |
302 | 307 | List<OrderProfitAnalysisDO> profitAnalysisDOS = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(OrderProfitAnalysisDO::getOrderId, orderIds)); |
... | ... | @@ -318,7 +323,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
318 | 323 | } |
319 | 324 | |
320 | 325 | if (mappingDOMap.containsKey(orderId)) { |
321 | - CheckBillMappingDO mappingDO = mappingDOMap.get(orderId); | |
326 | + ProducePaymentCheckBillOrderDO mappingDO = mappingDOMap.get(orderId); | |
322 | 327 | itemVO.setCheckNo(mappingDO.getCheckNo()); |
323 | 328 | } |
324 | 329 | baseItemVOS.add(itemVO); |
... | ... | @@ -449,10 +454,10 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
449 | 454 | private LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> getQueryWrapper(ProducePaymentCheckBillOrderQueryVO queryVO) { |
450 | 455 | LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> queryWrapper = new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>() |
451 | 456 | .eq(ProducePaymentCheckBillOrderDO::getEnableFlag, Constant.ENABLE_TEN) |
452 | - .eq(StringUtils.isNotBlank(queryVO.getCheckNo()), ProducePaymentCheckBillOrderDO::getCheckNo, queryVO.getCheckNo()) | |
457 | + /*.eq(StringUtils.isNotBlank(queryVO.getCheckNo()), ProducePaymentCheckBillOrderDO::getCheckNo, queryVO.getCheckNo()) | |
453 | 458 | .eq(Objects.nonNull(queryVO.getStatus()), ProducePaymentCheckBillOrderDO::getStatus, queryVO.getStatus()) |
454 | 459 | .ge(StringUtils.isNotBlank(queryVO.getStartTime()), ProducePaymentCheckBillOrderDO::getCreateTime, queryVO.getStartTime()) |
455 | - .le(StringUtils.isNotBlank(queryVO.getEndTime()), ProducePaymentCheckBillOrderDO::getCreateTime, queryVO.getEndTime()) | |
460 | + .le(StringUtils.isNotBlank(queryVO.getEndTime()), ProducePaymentCheckBillOrderDO::getCreateTime, queryVO.getEndTime())*/ | |
456 | 461 | .orderByDesc(ProducePaymentCheckBillOrderDO::getId); |
457 | 462 | if (CollectionUtils.isNotEmpty(queryVO.getIds())) { |
458 | 463 | queryWrapper.in(ProducePaymentCheckBillOrderDO::getId, queryVO.getIds()); |
... | ... | @@ -472,14 +477,16 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
472 | 477 | if (CollectionUtils.isEmpty(orderIds)) { |
473 | 478 | return null; |
474 | 479 | } |
475 | - List<CheckBillMappingDO> mappingDOS = checkBillMappingService.list(new LambdaQueryWrapper<CheckBillMappingDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
476 | - .in(CollectionUtils.isNotEmpty(orderIds), CheckBillMappingDO::getOrderId, orderIds)); | |
480 | +// List<CheckBillMappingDO> mappingDOS = checkBillMappingService.list(new LambdaQueryWrapper<CheckBillMappingDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
481 | +// .in(CollectionUtils.isNotEmpty(orderIds), CheckBillMappingDO::getOrderId, orderIds)); | |
482 | + List<ProducePaymentCheckBillOrderDO> mappingDOS = list(new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
483 | + .in(CollectionUtils.isNotEmpty(orderIds), ProducePaymentCheckBillOrderDO::getOrderId, orderIds)); | |
477 | 484 | if (CollectionUtils.isEmpty(mappingDOS)) { |
478 | 485 | Set<Long> ids = new HashSet<>(); |
479 | 486 | ids.add(-1L); |
480 | 487 | return ids; |
481 | 488 | } |
482 | - return mappingDOS.stream().map(CheckBillMappingDO::getCheckBillId).collect(Collectors.toSet()); | |
489 | + return mappingDOS.stream().map(ProducePaymentCheckBillOrderDO::getId).collect(Collectors.toSet()); | |
483 | 490 | } |
484 | 491 | |
485 | 492 | /** |
... | ... | @@ -535,54 +542,52 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
535 | 542 | } |
536 | 543 | List<OrderBaseInfoDO> orderBaseInfoDOList = validaBillOrder(createVO); |
537 | 544 | |
538 | - ProducePaymentCheckBillOrderDO checkBillOrderDO = buildCheckBillOrderDO(createVO); | |
545 | + List<ProducePaymentCheckBillOrderDO> checkBillOrderDOList = buildCheckBillOrderDO(createVO,orderBaseInfoDOList); | |
539 | 546 | List<OrderBaseInfoDO> containCheckOrderBaseInfoList = orderBaseInfoDOList.stream().map(x -> { |
540 | 547 | x.setCheckNo(createVO.getCheckNo()); |
541 | 548 | return x; |
542 | 549 | }).collect(Collectors.toList()); |
543 | 550 | |
544 | 551 | Boolean success = transactionHelper.run(() -> { |
545 | - save(checkBillOrderDO); | |
552 | + saveBatch(checkBillOrderDOList); | |
546 | 553 | orderBaseInfoService.updateBatchById(containCheckOrderBaseInfoList); |
547 | - checkBillMappingService.saveBatch(buildCheckBillMappingDOS(createVO, checkBillOrderDO)); | |
548 | 554 | return true; |
549 | 555 | }); |
550 | - if(success){ | |
551 | - List<CheckBillMappingDO> checkBillMappingDOS = checkBillMappingService.list(new LambdaQueryWrapper<CheckBillMappingDO>() | |
552 | - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
553 | - .eq(CheckBillMappingDO::getCheckNo, checkBillOrderDO.getCheckNo())); | |
554 | - if(CollectionUtils.isNotEmpty(checkBillMappingDOS)){ | |
555 | - List<Long> orderIds = checkBillMappingDOS.stream().map(CheckBillMappingDO::getOrderId).collect(Collectors.toList()); | |
556 | - List<OrderProfitAnalysisDO> orderProfitAnalysisList = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>() | |
557 | - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
558 | - .in(OrderProfitAnalysisDO::getOrderId, orderIds)); | |
559 | - List<OrderProfitAnalysisDO> orderProfitAnalysisDOS = orderProfitAnalysisList.stream() | |
560 | - .collect(Collectors.toMap(OrderProfitAnalysisDO::getOrderId, Function.identity(), (existing, replacement) -> existing)) | |
561 | - .values() | |
562 | - .stream() | |
563 | - .collect(Collectors.toList()); | |
564 | - if(CollectionUtils.isNotEmpty(orderProfitAnalysisDOS)){ | |
565 | - BigDecimal totalConvertedAmount = orderProfitAnalysisDOS.stream().map(order -> BigDecimal.valueOf(order.getProductionDepartmentTotalPrice())) | |
566 | - .reduce(BigDecimal.ZERO, BigDecimal::add); | |
567 | - BigDecimal formattedSum = totalConvertedAmount.setScale(2, BigDecimal.ROUND_HALF_UP); | |
568 | - if(Objects.nonNull(formattedSum)){ | |
569 | - //客户总价金额汇总。 | |
570 | - checkBillOrderDO.setTotalProductionAmount(formattedSum); | |
571 | - //设置实际应付金额汇总。 | |
572 | - checkBillOrderDO.setActualPayedAmount(checkBillOrderDO.getTotalProductionAmount()); | |
573 | - }else { | |
574 | - checkBillOrderDO.setTotalProductionAmount( BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
575 | - checkBillOrderDO.setActualPayedAmount(checkBillOrderDO.getTotalProductionAmount()); | |
556 | + Map<Long, OrderProfitAnalysisDO> orderProfitAnalysisMap; | |
557 | + //提前获取金额数据,避免后续多次查询。 | |
558 | + List<OrderProfitAnalysisDO> orderProfitAnalysisList = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>() | |
559 | + .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
560 | + .in(OrderProfitAnalysisDO::getOrderId, createVO.getOrderIds())); | |
561 | + if(CollectionUtils.isNotEmpty(orderProfitAnalysisList)){ | |
562 | + orderProfitAnalysisMap = orderProfitAnalysisList.stream().collect(Collectors.toMap( | |
563 | + OrderProfitAnalysisDO::getOrderId, // key:使用 orderId 作为键 | |
564 | + Function.identity(), // value:使用对象本身作为值 | |
565 | + (existing, replacement) -> existing // 冲突时保留已有的值 | |
566 | + )); | |
567 | + } else { | |
568 | + orderProfitAnalysisMap = null; | |
569 | + } | |
570 | + if(success) { | |
571 | + List<ProducePaymentCheckBillOrderDO> checkBillOrderDOS = checkBillOrderDOList.stream().filter(Objects::nonNull).map(checkNo -> { | |
572 | + if (orderProfitAnalysisMap != null) { | |
573 | + if (orderProfitAnalysisMap.containsKey(checkNo.getOrderId())) { | |
574 | + OrderProfitAnalysisDO orderProfitAnalysisDO = orderProfitAnalysisMap.get(checkNo.getOrderId()); | |
575 | + checkNo.setTotalProductionAmount( | |
576 | + BigDecimal.valueOf(Optional.ofNullable(orderProfitAnalysisDO.getProductionDepartmentTotalPrice()).orElse(0.0)) | |
577 | + .setScale(2, RoundingMode.HALF_UP) | |
578 | + ); | |
579 | + checkNo.setActualPayedAmount(checkNo.getTotalProductionAmount()); | |
576 | 580 | } |
577 | 581 | } |
578 | - } | |
579 | - //设置实际付款金额汇总,避免没有填写直接审核时没有数据。 | |
580 | - checkBillOrderDO.setTotalActualPayedAmount(BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
581 | - //设置生产科扣款金额汇总,避免没有填写扣款金额时,到时候审核没有数据。 | |
582 | - checkBillOrderDO.setDeductAmount(BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
583 | - //设置未付金额 | |
584 | - checkBillOrderDO.setUnPayedAmount(checkBillOrderDO.getTotalProductionAmount().subtract(checkBillOrderDO.getTotalActualPayedAmount()).subtract(checkBillOrderDO.getDeductAmount()).setScale(2, BigDecimal.ROUND_HALF_UP)); | |
585 | - updateById(checkBillOrderDO); | |
582 | + //设置实际付款金额汇总,避免没有填写直接审核时没有数据。 | |
583 | + checkNo.setTotalActualPayedAmount(BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
584 | + //设置生产科扣款金额汇总,避免没有填写扣款金额时,到时候审核没有数据。 | |
585 | + checkNo.setDeductAmount(BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); | |
586 | + //设置未付金额 | |
587 | + checkNo.setUnPayedAmount(checkNo.getTotalProductionAmount().subtract(checkNo.getTotalActualPayedAmount()).subtract(checkNo.getDeductAmount()).setScale(2, BigDecimal.ROUND_HALF_UP)); | |
588 | + return checkNo; | |
589 | + }).collect(Collectors.toList()); | |
590 | + updateBatchById(checkBillOrderDOS); | |
586 | 591 | } |
587 | 592 | return ServerResult.success(); |
588 | 593 | } |
... | ... | @@ -682,16 +687,18 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
682 | 687 | * @param createVO |
683 | 688 | * @return |
684 | 689 | */ |
685 | - private ProducePaymentCheckBillOrderDO buildCheckBillOrderDO(ProducePaymentCheckBillCreateVO createVO) { | |
686 | - List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(createVO.getOrderIds()); | |
687 | - return ProducePaymentCheckBillOrderDO.builder() | |
688 | - .checkNo(createVO.getCheckNo()) | |
689 | - .payedDate(createVO.getPayedDate()) | |
690 | - .status(ApplyStatusEnum.NO_COMMIT.getStatus()) | |
691 | - .productionName(orderBaseInfoDOList.get(0).getProductionDepartment()) | |
692 | - .businesPerson(orderBaseInfoDOList.get(0).getBusinessPerson()) | |
693 | - .trackerUser(orderBaseInfoDOList.get(0).getCreateBy()) | |
694 | - .build(); | |
690 | + private List<ProducePaymentCheckBillOrderDO> buildCheckBillOrderDO(ProducePaymentCheckBillCreateVO createVO,List<OrderBaseInfoDO> orderBaseInfoDOList) { | |
691 | + return orderBaseInfoDOList.stream().map(x->{ | |
692 | + return ProducePaymentCheckBillOrderDO.builder() | |
693 | + .checkNo(createVO.getCheckNo()) | |
694 | + .orderId(x.getId()) | |
695 | + .payedDate(createVO.getPayedDate()) | |
696 | + .status(FinanceEnum.UNPAID_PAYMENTS.getStatus()) | |
697 | + .productionName(x.getProductionDepartment()) | |
698 | + .businesPerson(x.getBusinessPerson()) | |
699 | + .trackerUser(x.getCreateBy()) | |
700 | + .build(); | |
701 | + }).collect(Collectors.toList()); | |
695 | 702 | } |
696 | 703 | |
697 | 704 | /** |
... | ... | @@ -736,16 +743,14 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
736 | 743 | throw new BusinessException("订单中包含利润未审批的订单,无法创建!"); |
737 | 744 | } |
738 | 745 | |
739 | - String checkNo = createVO.getCheckNo(); | |
740 | - | |
741 | 746 | List<ProducePaymentCheckBillOrderDO> checkBillOrderDOS = list(new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>() |
742 | 747 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
743 | - .eq(ProducePaymentCheckBillOrderDO::getCheckNo, checkNo)); | |
748 | + .eq(ProducePaymentCheckBillOrderDO::getCheckNo, createVO.getCheckNo())); | |
744 | 749 | if (CollectionUtils.isNotEmpty(checkBillOrderDOS)) { |
745 | 750 | throw new BusinessException("存在相同的生产科对账单号!"); |
746 | 751 | } |
747 | 752 | |
748 | - List<CheckBillMappingDO> checkBillMappingDOS = checkBillMappingService.list(new LambdaQueryWrapper<CheckBillMappingDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(CheckBillMappingDO::getOrderId, createVO.getOrderIds())); | |
753 | + List<ProducePaymentCheckBillOrderDO> checkBillMappingDOS = list(new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(ProducePaymentCheckBillOrderDO::getOrderId, createVO.getOrderIds())); | |
749 | 754 | if (CollectionUtils.isNotEmpty(checkBillMappingDOS)) { |
750 | 755 | throw new BusinessException("该勾选的订单已经绑定其他账单了!"); |
751 | 756 | } |
... | ... | @@ -775,11 +780,11 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
775 | 780 | if (Objects.isNull(checkBillOrderDO)) { |
776 | 781 | throw new BusinessException("应付款单据不存在"); |
777 | 782 | } |
778 | - if(Objects.nonNull(checkBillOrderDO.getStatus()) && Constant.ENABLE_TEN==checkBillOrderDO.getStatus()){ | |
783 | + if(Objects.nonNull(checkBillOrderDO.getStatus()) && FinanceEnum.RECEIVED_PAYMENT.getStatus()==checkBillOrderDO.getStatus()){ | |
779 | 784 | throw new BusinessException("应付款单据已审核通过,无法编辑"); |
780 | 785 | } |
781 | - | |
782 | - checkCommitApply(checkBillOrderDO.getId()); | |
786 | + //todo 已完成。 | |
787 | + checkApply(new ArrayList<>(Arrays.asList(deductInfoVO.getId()))); | |
783 | 788 | //需要判断一下是否为空?不然知己以逗号分隔会报错。 |
784 | 789 | if(StringUtils.isNotBlank(checkBillOrderDO.getDeductUrl())){ |
785 | 790 | //记住:需要修改数据表对应的字段deduct_url的varchar数据范围,修改为1000左右。 |
... | ... | @@ -821,8 +826,11 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
821 | 826 | if (Objects.isNull(checkBillOrderDO)) { |
822 | 827 | throw new BusinessException("应付款单据不存在"); |
823 | 828 | } |
824 | - | |
825 | - checkCommitApply(checkBillOrderDO.getId()); | |
829 | + if(Objects.nonNull(checkBillOrderDO.getStatus()) && FinanceEnum.RECEIVED_PAYMENT.getStatus()==checkBillOrderDO.getStatus()){ | |
830 | + throw new BusinessException("已完成收款,无法更新!"); | |
831 | + } | |
832 | + //todo 已完成。 | |
833 | + checkApply(new ArrayList<>(Arrays.asList(amountInfoVO.getId()))); | |
826 | 834 | |
827 | 835 | checkBillOrderDO.setActualPayedAmount1(amountInfoVO.getActualPayedAmount1() != null ? amountInfoVO.getActualPayedAmount1().setScale(2, BigDecimal.ROUND_HALF_UP) : BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); |
828 | 836 | checkBillOrderDO.setActualPayedAmount2(amountInfoVO.getActualPayedAmount2() != null ? amountInfoVO.getActualPayedAmount2().setScale(2, BigDecimal.ROUND_HALF_UP) : BigDecimal.ZERO.setScale(2, BigDecimal.ROUND_HALF_UP)); |
... | ... | @@ -845,16 +853,16 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
845 | 853 | if(Objects.isNull(checkBillOrderDO)){ |
846 | 854 | return ServerResult.fail("生产科对账单号不存在!"); |
847 | 855 | } |
848 | - if(Constant.ENABLE_TEN==checkBillOrderDO.getStatus()){ | |
856 | + if(FinanceEnum.RECEIVED_PAYMENT.getStatus()==checkBillOrderDO.getStatus()){ | |
849 | 857 | throw new BusinessException("该订单已通过审核无法继续上传发票!"); |
850 | 858 | } |
851 | 859 | if(StringUtils.isBlank(invoiceInfoVO.getInvoiceUrl())){ |
852 | 860 | return ServerResult.success(); |
853 | 861 | } |
854 | 862 | //校验是否有处于待审核的发票。 |
855 | - checkApply(id,loginUserId,ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType()); | |
856 | - //校验是否有处于待审核的订单。 | |
857 | - checkCommitApply(checkBillOrderDO.getId()); | |
863 | + checkCommitApply(id); | |
864 | + //校验是否有处于待审核的订单。 todo | |
865 | + checkApply(new ArrayList<>(Arrays.asList(id))); | |
858 | 866 | OrderLockFieldVO locakFieldVO = new OrderLockFieldVO(); |
859 | 867 | |
860 | 868 | //事务:待审核,设置为admin和财务才有权限审批。 |
... | ... | @@ -882,62 +890,135 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
882 | 890 | |
883 | 891 | @Override |
884 | 892 | public ServerResult commitApply(ProducePaymentCheckBillCommitApplyVO commitApplyVO) { |
885 | - ProducePaymentCheckBillOrderDO checkBillOrderDO = getById(commitApplyVO.getId()); | |
886 | - if (Objects.isNull(checkBillOrderDO)) { | |
887 | - throw new BusinessException("账单不存在!"); | |
893 | + if(CollectionUtils.isEmpty(commitApplyVO.getId())){ | |
894 | + throw new BusinessException("id参数不能为空!"); | |
888 | 895 | } |
889 | - if(checkBillOrderDO.getStatus()==Constant.ENABLE_TEN){ | |
890 | - throw new BusinessException("该订单已通过审核!"); | |
896 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList = list(new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>().eq(ProducePaymentCheckBillOrderDO::getEnableFlag, Constant.ENABLE_TEN) | |
897 | + .in(ProducePaymentCheckBillOrderDO::getId, commitApplyVO.getId())); | |
898 | + if (CollectionUtils.isEmpty(producePaymentCheckBillOrderDOList)) { | |
899 | + throw new BusinessException("账单不存在!"); | |
891 | 900 | } |
901 | + boolean isTure = producePaymentCheckBillOrderDOList.stream().filter(Objects::nonNull).allMatch(producePaymentCheckBillOrderDO -> producePaymentCheckBillOrderDO.getProductionName().equals(producePaymentCheckBillOrderDOList.get(0).getProductionName())); | |
902 | + if(!isTure){ | |
903 | + throw new BusinessException("勾选订单生产科需一致"); | |
904 | + } | |
905 | + boolean anyMatch = producePaymentCheckBillOrderDOList.stream().filter(Objects::nonNull).anyMatch(producePaymentCheckBillOrderDO -> FinanceEnum.RECEIVED_PAYMENT.getStatus().equals(producePaymentCheckBillOrderDO.getStatus())); | |
906 | + if(anyMatch){ | |
907 | + throw new BusinessException("订单中包含已收款的数据,无法提交!"); | |
908 | + } | |
909 | + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(producePaymentCheckBillOrderDOList.stream().filter(Objects::nonNull).map(producePaymentCheckBillOrderDO -> producePaymentCheckBillOrderDO.getOrderId()).collect(Collectors.toSet())); | |
910 | + //实际应付金额 | |
911 | + BigDecimal actualPayedAmount=BigDecimal.ZERO; | |
912 | + //扣款金额 | |
913 | + BigDecimal deductAmount=BigDecimal.ZERO; | |
914 | + //实际付款金额 | |
915 | + BigDecimal totalActualPayedAmount=BigDecimal.ZERO; | |
916 | + //未付金额 | |
917 | + BigDecimal unPayedAmount=BigDecimal.ZERO; | |
892 | 918 | Long userId = dataScope.getLoginUserId(); |
893 | 919 | String loginUserName = dataScope.getLoginUserName(); |
894 | - checkApply(commitApplyVO.getId(), userId,ApplyTypeEnum.CHECK_BILL_APPLY.getType()); | |
895 | - | |
896 | - checkBillOrderDO.setActualPayedDate(commitApplyVO.getActualPayedDate()); | |
897 | - checkBillOrderDO.setFinancePerson(loginUserName); | |
898 | - OrderFieldLockApplyDO applyDO = initOrderFieldLockApplyDO(checkBillOrderDO, userId); | |
920 | + //todo 审核判断 | |
921 | + checkApply(commitApplyVO.getId()); | |
922 | + | |
923 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS = producePaymentCheckBillOrderDOList.stream().filter(Objects::nonNull).map(producePaymentCheckBillOrderDO -> { | |
924 | + producePaymentCheckBillOrderDO.setActualPayedDate(commitApplyVO.getActualPayedDate()); | |
925 | + producePaymentCheckBillOrderDO.setFinancePerson(loginUserName); | |
926 | + producePaymentCheckBillOrderDO.setStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()); | |
927 | + return producePaymentCheckBillOrderDO; | |
928 | + }).collect(Collectors.toList()); | |
929 | + for(ProducePaymentCheckBillOrderDO paymentCheckBillOrderDO : producePaymentCheckBillOrderDOS){ | |
930 | + actualPayedAmount=actualPayedAmount.add(paymentCheckBillOrderDO.getActualPayedAmount()).setScale(2, BigDecimal.ROUND_HALF_UP); | |
931 | + deductAmount=deductAmount.add(paymentCheckBillOrderDO.getDeductAmount()).setScale(2, BigDecimal.ROUND_HALF_UP); | |
932 | + totalActualPayedAmount=totalActualPayedAmount.add(paymentCheckBillOrderDO.getTotalActualPayedAmount()).setScale(2, BigDecimal.ROUND_HALF_UP); | |
933 | + unPayedAmount=unPayedAmount.add(paymentCheckBillOrderDO.getUnPayedAmount()).setScale(2, BigDecimal.ROUND_HALF_UP); | |
934 | + | |
935 | + } | |
936 | + ProducePaymentCheckBillFieldVO producePaymentCheckBillFieldVO = ProducePaymentCheckBillFieldVO.builder().checkNo(producePaymentCheckBillOrderDOS.get(0).getCheckNo()) | |
937 | + .producePaymentCheckBillId(producePaymentCheckBillOrderDOS.stream().filter(Objects::nonNull).map(ProducePaymentCheckBillOrderDO::getId).collect(Collectors.toList())) | |
938 | + .innerNo(orderBaseInfoDOList.stream().filter(Objects::nonNull).map(orderBaseInfoDO -> orderBaseInfoDO.getInnerNo()).distinct().collect(Collectors.toList())) | |
939 | + //这里取的是集合中第一个的时间,作为必须付款日期。 目前还没定,先这样取。 | |
940 | + .payedDate(producePaymentCheckBillOrderDOS.get(0).getPayedDate()) | |
941 | + .businesPerson(producePaymentCheckBillOrderDOS.get(0).getBusinesPerson()) | |
942 | + .trackerUser(producePaymentCheckBillOrderDOS.get(0).getTrackerUser()) | |
943 | + .financePerson(loginUserName) | |
944 | + .productionName(producePaymentCheckBillOrderDOS.get(0).getProductionName()) | |
945 | + .actualPayedDate(commitApplyVO.getActualPayedDate()) | |
946 | + .deductAmount(deductAmount) | |
947 | + .actualPayedAmount(actualPayedAmount) | |
948 | + .totalActualPayedAmount(totalActualPayedAmount) | |
949 | + .unPayedAmount(unPayedAmount).build(); | |
950 | + OrderFieldLockApplyDO applyDO = initOrderFieldLockApplyDO(producePaymentCheckBillFieldVO, userId); | |
899 | 951 | transactionHelper.run(() -> { |
900 | 952 | orderFieldLockApplyService.save(applyDO); |
901 | - checkBillOrderDO.setStatus(ApplyStatusEnum.WAIT_AUDIT.getStatus()); | |
902 | 953 | // checkBillOrderDO.setActualPayedDate(DateUtils.format(LocalDateTime.now(), DateUtils.DATE)); |
903 | - updateById(checkBillOrderDO); | |
954 | + updateBatchById(producePaymentCheckBillOrderDOS); | |
904 | 955 | }); |
905 | 956 | return ServerResult.success(); |
906 | 957 | } |
907 | 958 | |
908 | 959 | /** |
909 | - * @param checkBillOrderDO | |
960 | + * @param producePaymentCheckBillFieldVO | |
910 | 961 | * @param userId |
911 | 962 | * @return |
912 | 963 | */ |
913 | - private OrderFieldLockApplyDO initOrderFieldLockApplyDO(ProducePaymentCheckBillOrderDO checkBillOrderDO, Long userId) { | |
964 | + private OrderFieldLockApplyDO initOrderFieldLockApplyDO(ProducePaymentCheckBillFieldVO producePaymentCheckBillFieldVO, Long userId) { | |
914 | 965 | OrderLockFieldVO lockFieldVO = new OrderLockFieldVO(); |
915 | - lockFieldVO.setCheckBillOrderDO(checkBillOrderDO); | |
966 | + lockFieldVO.setProducePaymentCheckBillFieldVO(producePaymentCheckBillFieldVO); | |
967 | + List<Long> financeIds= producePaymentCheckBillFieldVO.getProducePaymentCheckBillId().subList(1, producePaymentCheckBillFieldVO.getProducePaymentCheckBillId().size()); | |
968 | + if(producePaymentCheckBillFieldVO.getProducePaymentCheckBillId().size()>1){ | |
969 | + //针对于财务多个订单提交审核来创建的。 | |
916 | 970 | return OrderFieldLockApplyDO.builder() |
917 | 971 | .applyUserId(userId) |
918 | 972 | .auditUserId(null) |
919 | 973 | .fields(JSONObject.toJSONString(lockFieldVO)) |
920 | - .orderId(checkBillOrderDO.getId()) | |
974 | + .orderId(producePaymentCheckBillFieldVO.getProducePaymentCheckBillId().get(0)) | |
975 | + .financeId(null == financeIds || financeIds.isEmpty() ? "" : financeIds.stream().map(String::valueOf).collect(Collectors.joining(","))) //英文逗号 | |
921 | 976 | .type(ApplyTypeEnum.CHECK_BILL_APPLY.getType()) |
922 | 977 | .remark(ApplyTypeEnum.CHECK_BILL_APPLY.getDesc()) |
923 | 978 | .status(ApplyStatusEnum.WAIT_AUDIT.getStatus()) |
979 | + //这里设置审核角色有财务并不是让财务审核,会对财务屏蔽审核按钮,只是让它能够看到审核的单子 | |
924 | 980 | .auditRoleCodes(RoleEnum.ADMIN.getCode() + Constant.COMMA_CHARACTER + RoleEnum.FINANCE_USER.getCode()) |
925 | 981 | .build(); |
982 | + }else{ | |
983 | + return OrderFieldLockApplyDO.builder() | |
984 | + .applyUserId(userId) | |
985 | + .auditUserId(null) | |
986 | + .fields(JSONObject.toJSONString(lockFieldVO)) | |
987 | + .orderId(producePaymentCheckBillFieldVO.getProducePaymentCheckBillId().get(0)) | |
988 | + .type(ApplyTypeEnum.CHECK_BILL_APPLY.getType()) | |
989 | + .remark(ApplyTypeEnum.CHECK_BILL_APPLY.getDesc()) | |
990 | + .status(ApplyStatusEnum.WAIT_AUDIT.getStatus()) | |
991 | + //这里设置审核角色有财务并不是让财务审核,会对财务屏蔽审核按钮,只是让它能够看到审核的单子 | |
992 | + .auditRoleCodes(RoleEnum.ADMIN.getCode() + Constant.COMMA_CHARACTER + RoleEnum.FINANCE_USER.getCode()) | |
993 | + .build(); | |
994 | + } | |
926 | 995 | } |
927 | 996 | |
928 | 997 | /** |
929 | 998 | * @param id |
930 | - * @param userId | |
999 | + * | |
931 | 1000 | */ |
932 | - private void checkApply(Long id, Long userId,Integer applyType) { | |
1001 | + private void checkApply(List<Long> id) { | |
1002 | + //如果提交审核的个数大于1,就需要这个判断。 不,应该是不管是否大于1都需要判断。因为即使是一个提交审核,你目前提交的这个id说不定是别人的financeId。 | |
933 | 1003 | List<OrderFieldLockApplyDO> applyDOS = orderFieldLockApplyService.list(new LambdaQueryWrapper<OrderFieldLockApplyDO>() |
934 | 1004 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
935 | - .eq(OrderFieldLockApplyDO::getOrderId, id) | |
936 | - .eq(OrderFieldLockApplyDO::getApplyUserId, userId) | |
937 | - .eq(OrderFieldLockApplyDO::getType, applyType) | |
1005 | + .eq(OrderFieldLockApplyDO::getType, ApplyTypeEnum.CHECK_BILL_APPLY.getType()) | |
938 | 1006 | .eq(OrderFieldLockApplyDO::getStatus, ApplyStatusEnum.WAIT_AUDIT.getStatus())); |
939 | 1007 | if (CollectionUtils.isNotEmpty(applyDOS)) { |
940 | - throw new BusinessException(ServerResultCode.APPLY_UNLOCK_FIELD_EXIST); | |
1008 | + Set<Long> setApplyIds = applyDOS.stream(). | |
1009 | + filter(Objects::nonNull). | |
1010 | + flatMap(applyDO -> { | |
1011 | + Stream<Long> orderIdStream = Stream.of(applyDO.getOrderId()); | |
1012 | + Stream<Long> financeIdStream = (applyDO.getFinanceId() != null && !applyDO.getFinanceId().isEmpty()) | |
1013 | + ? Arrays.stream(applyDO.getFinanceId().split(",")) | |
1014 | + .map(Long::valueOf) // 转换为 Long | |
1015 | + : Stream.empty(); | |
1016 | + return Stream.concat(orderIdStream, financeIdStream); | |
1017 | + }) | |
1018 | + .collect(Collectors.toSet()); | |
1019 | + if(id.stream().anyMatch(ids -> setApplyIds.contains(ids))){ | |
1020 | + throw new BusinessException("申请单中包含处于审核的订单,请等审核完成后再申请!"); | |
1021 | + } | |
941 | 1022 | } |
942 | 1023 | } |
943 | 1024 | |
... | ... | @@ -947,24 +1028,23 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
947 | 1028 | private void checkCommitApply(Long id) { |
948 | 1029 | OrderFieldLockApplyDO applyDO = orderFieldLockApplyService.getOne(new LambdaQueryWrapper<OrderFieldLockApplyDO>() |
949 | 1030 | .eq(OrderFieldLockApplyDO::getEnableFlag, Constant.ENABLE_TEN) |
950 | - .eq(OrderFieldLockApplyDO::getType, ApplyTypeEnum.CHECK_BILL_APPLY.getType()) | |
1031 | + .eq(OrderFieldLockApplyDO::getType, ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType()) | |
951 | 1032 | .eq(OrderFieldLockApplyDO::getStatus, ApplyStatusEnum.WAIT_AUDIT.getStatus()) |
952 | - .eq(OrderFieldLockApplyDO::getOrderId, id).last("limit 1")); | |
1033 | + .eq(OrderFieldLockApplyDO::getOrderId, id)); | |
953 | 1034 | if (Objects.nonNull(applyDO)) { |
954 | - throw new BusinessException("该账单还在审批中,请联系总经理审批后操作!"); | |
1035 | + throw new BusinessException("该账单发票还在审批中,请联系总经理审批后操作!"); | |
955 | 1036 | } |
956 | 1037 | } |
957 | 1038 | |
958 | 1039 | /** |
959 | - * @param ids | |
960 | - * @param userId | |
1040 | + * @param id | |
1041 | + * | |
961 | 1042 | */ |
962 | - private void checkApplyByIds(List<Long> ids, Long userId) { | |
1043 | + private void checkApplyByIds(Long id) { | |
963 | 1044 | List<OrderFieldLockApplyDO> applyDOS = orderFieldLockApplyService.list(new LambdaQueryWrapper<OrderFieldLockApplyDO>() |
964 | 1045 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
965 | - .in(OrderFieldLockApplyDO::getOrderId, ids) | |
966 | - .eq(OrderFieldLockApplyDO::getApplyUserId, userId) | |
967 | - .eq(OrderFieldLockApplyDO::getType, ApplyTypeEnum.CHECK_BILL_APPLY.getType()) | |
1046 | + .eq(OrderFieldLockApplyDO::getOrderId, id) | |
1047 | + .eq(OrderFieldLockApplyDO::getType, ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType()) | |
968 | 1048 | .eq(OrderFieldLockApplyDO::getStatus, ApplyStatusEnum.WAIT_AUDIT.getStatus())); |
969 | 1049 | if (CollectionUtils.isNotEmpty(applyDOS)) { |
970 | 1050 | throw new BusinessException(ServerResultCode.APPLY_UNLOCK_FIELD_EXIST); |
... | ... | @@ -979,6 +1059,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
979 | 1059 | */ |
980 | 1060 | @Override |
981 | 1061 | public ServerResult deleteById(ProducePaymentCheckBillOrderQueryVO producePaymentCheckBillOrderQueryVO) { |
1062 | + //删除前端要判断一下,要是勾选多条,这个check是否一致。一致才能删除。 | |
982 | 1063 | List<Long> ids = producePaymentCheckBillOrderQueryVO.getIds(); |
983 | 1064 | if (CollUtil.isEmpty(ids)) { |
984 | 1065 | return ServerResult.fail("ids 参数不能为空"); |
... | ... | @@ -987,17 +1068,29 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
987 | 1068 | if (CollUtil.isEmpty(checkBillOrderDOS)) { |
988 | 1069 | return ServerResult.success(); |
989 | 1070 | } |
990 | - checkBillOrderDOS.stream().forEach(checkBillOrderDO ->{ | |
991 | - if(Constant.ENABLE_TEN==checkBillOrderDO.getStatus()){ | |
992 | - throw new BusinessException("该订单已通过审核,无法删除!"); | |
1071 | + boolean isTrue = checkBillOrderDOS.stream().allMatch(checkBillOrderDO -> checkBillOrderDO.getCheckNo().equals(checkBillOrderDOS.get(0).getCheckNo())); | |
1072 | + if(!isTrue){ | |
1073 | + throw new BusinessException("勾选订单的checkNo需一致"); | |
1074 | + } | |
1075 | + boolean anyPaid = checkBillOrderDOS.stream().anyMatch(checkBillOrderDO -> FinanceEnum.RECEIVED_PAYMENT.getStatus() == checkBillOrderDO.getStatus()); | |
1076 | + if(anyPaid) { | |
1077 | + throw new BusinessException("包含已收款的订单,无法删除!"); | |
993 | 1078 | } |
994 | - }); | |
995 | - checkApplyByIds(ids, dataScope.getLoginUserId()); | |
1079 | + //todo 审核有点问题。审核时是是哪个orderid共用一个orderid作为id,查询的时候是只能查询到第一个。 已完成。 | |
1080 | + checkApply(ids); | |
1081 | + List<Long> orderIds = checkBillOrderDOS.stream() | |
1082 | + .map(ProducePaymentCheckBillOrderDO::getOrderId) | |
1083 | + .collect(Collectors.toList()); | |
1084 | + List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(orderIds); | |
1085 | + List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().map(order -> { | |
1086 | + //这里要删除对应invoiceNo号,但是为了删除后产生空指针异常,所以定义为"N/N"; | |
1087 | + order.setCheckNo("N/N"); | |
1088 | + return order; | |
1089 | + }).collect(Collectors.toList()); | |
996 | 1090 | transactionHelper.run(() -> { |
997 | 1091 | removeByIds(ids); |
998 | - checkBillMappingService.remove(new LambdaQueryWrapper<CheckBillMappingDO>().in(CheckBillMappingDO::getCheckBillId, ids)); | |
1092 | + orderBaseInfoService.updateBatchById(orderBaseInfoDOS); | |
999 | 1093 | }); |
1000 | - | |
1001 | 1094 | return ServerResult.success(); |
1002 | 1095 | } |
1003 | 1096 | |
... | ... | @@ -1076,12 +1169,32 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
1076 | 1169 | if(Objects.isNull(checkBillOrderDO)){ |
1077 | 1170 | throw new BusinessException("生产科对账单不存在!"); |
1078 | 1171 | } |
1172 | + if(FinanceEnum.RECEIVED_PAYMENT.getStatus()==checkBillOrderDO.getStatus()){ | |
1173 | + throw new BusinessException("已完成收款,无法修改!"); | |
1174 | + } | |
1175 | + //todo 要审核判断一下,判断是否处于审核状态。 已完成。 | |
1176 | + checkApply(new ArrayList<>(Arrays.asList(createVO.getId()))); | |
1079 | 1177 | checkBillOrderDO.setPayedDate(createVO.getPayedDate()); |
1080 | 1178 | updateById(checkBillOrderDO); |
1081 | 1179 | return ServerResult.success(); |
1082 | 1180 | } |
1083 | 1181 | |
1084 | 1182 | @Override |
1183 | + public ServerResult byIdAddNotes(ProducePaymentCheckBillCreateVO createVO) { | |
1184 | + if(Objects.isNull(createVO.getId())){ | |
1185 | + return ServerResult.fail(); | |
1186 | + } | |
1187 | + ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO = getById(createVO.getId()); | |
1188 | + if(Objects.isNull(producePaymentCheckBillOrderDO)){ | |
1189 | + throw new BusinessException("应收款单不存在!"); | |
1190 | + } | |
1191 | + //备注信息,审核完应该也能修改。 | |
1192 | + producePaymentCheckBillOrderDO.setNotes(createVO.getNotes()); | |
1193 | + updateById(producePaymentCheckBillOrderDO); | |
1194 | + return ServerResult.success(); | |
1195 | + } | |
1196 | + | |
1197 | + @Override | |
1085 | 1198 | public ServerResult exportReceipt(HttpServletResponse response,ProducePaymentCheckBillOrderDO queryVO) throws IOException { |
1086 | 1199 | XSSFWorkbook workbook = new XSSFWorkbook(); |
1087 | 1200 | Sheet sheet = workbook.createSheet("付款单"); | ... | ... |
src/main/resources/mapper/InvoiceBillOrderMapper.xml
0 → 100644
1 | +<?xml version="1.0" encoding="UTF-8"?> | |
2 | +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | |
3 | +<mapper namespace="com.order.erp.mapper.order.InvoiceBillOrderMapper"> | |
4 | + <!-- <resultMap id="financeOrderResultMap" type="com.order.erp.domain.vo.order.FinanceOrderResultVO"> | |
5 | + <!– 映射 OrderBaseInfoVO 的属性 –> | |
6 | + <result property="id" column="id"/> | |
7 | + <!– <result property="invoiceNo" column="invoice_no"/> | |
8 | + <result property="checkNo" column="check_no"/>–> | |
9 | + <result property="customerCode" column="customer_code"/> | |
10 | + <result property="projectNo" column="project_no"/> | |
11 | + <result property="productionDepartment" column="production_department"/> | |
12 | + <result property="innerNo" column="inner_no"/> | |
13 | + <result property="smallPicUrl" column="small_pic_url"/> | |
14 | + <result property="orderCount" column="order_count"/> | |
15 | + <result property="productionDepartmentConsignTime" column="production_department_consign_time"/> | |
16 | + <result property="orderHodTime" column="order_hod_time"/> | |
17 | + | |
18 | + <!–发票invoice–> | |
19 | + <!– <association property="invoiceBillOrderDO" javaType="com.order.erp.domain.dto.order.InvoiceBillOrderDO">–> | |
20 | + <result property="id" column="id"/> | |
21 | + <result property="invoiceNo" column="invoice_no"/> | |
22 | + <result property="bgUrl" column="bg_url"/> | |
23 | + <result property="backRefundDate" column="back_refund_date"/> | |
24 | + <result property="deductAmount" column="deduct_amount"/> | |
25 | + <result property="deductUrl" column="deduct_url"/> | |
26 | + <result property="actualReceivableAmount" column="actual_receivable_amount"/> | |
27 | + <result property="actualPayedAmount1" column="actual_payed_amount_1"/> | |
28 | + <result property="actualPayedAmount2" column="actual_payed_amount_2"/> | |
29 | + <result property="actualPayedAmount3" column="actual_payed_amount_3"/> | |
30 | + <result property="otherAmount" column="other_amount"/> | |
31 | + <!–缺少备注字段–> | |
32 | + <result property="status" column="status"/> | |
33 | + <!– </association>–> | |
34 | + | |
35 | + | |
36 | + <!–生产科对账单–> | |
37 | + <!– <association property="producePaymentCheckBillOrderDO" javaType="com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO">–> | |
38 | + <result property="id" column="checkId"/> | |
39 | + <result property="checkNo" column="check_no"/> | |
40 | + <result property="status" column="status"/> | |
41 | + <result property="deductAmount" column="deduct_amount"/> | |
42 | + <result property="deductDept" column="deduct_dept"/> | |
43 | + <result property="departmentInvoiceStatus" column="department_invoice_status"/> | |
44 | + <result property="actualPayedAmount3" column="actual_payed_amount3"/> | |
45 | + <result property="actualPayedAmount2" column="actual_payed_amount2"/> | |
46 | + <result property="actualPayedAmount1" column="actual_payed_amount1"/> | |
47 | + <result property="actualPayedAmount" column="actual_payed_amount"/> | |
48 | + <result property="payedDate" column="payed_date"/> | |
49 | + <!–缺少备注字段–> | |
50 | + <result property="deductUrl" column="deduct_url"/> | |
51 | + <!– </association>–> | |
52 | + | |
53 | + <!–利润–> | |
54 | + <!– <association property="profitAnalysisInfo" javaType="com.order.erp.domain.vo.order.OrderProfitAnalysisVO"> –> | |
55 | + <result property="id" column="profitAnalysisId"/> | |
56 | + <result property="customerPrice" column="customer_price"/> | |
57 | + <result property="customerTotalPrice" column="customer_total_price"/> | |
58 | + <result property="productionDepartmentPrice" column="production_department_price"/> | |
59 | + <result property="productionDepartmentTotalPrice" column="production_department_total_price"/> | |
60 | + <!– </association>–> | |
61 | + </resultMap>--> | |
62 | + | |
63 | + | |
64 | + | |
65 | + | |
66 | + <select id="byConditionGetOrder" parameterType="com.order.erp.domain.vo.order.InvoiceBillOrderQueryVO" resultType="com.order.erp.domain.vo.order.FinanceOrderResultVO"> | |
67 | + SELECT | |
68 | + o.id AS id, | |
69 | + -- o.invoice_no AS invoiceNo, -- 注释字段没有问题 | |
70 | + -- o.check_no AS checkNo, -- 注释字段没有问题 | |
71 | + o.customer_code AS customerCode, -- 客户编码 | |
72 | + o.project_no AS projectNo, -- 项目号 | |
73 | + o.production_department AS productionDepartment, -- 生产科 | |
74 | + o.inner_no AS innerNo, -- 内部编号 | |
75 | + o.small_pic_url AS smallPicUrl, -- 订单图片 | |
76 | + o.order_count AS orderCount, -- 数量 | |
77 | + o.production_department_consign_time AS productionDepartmentConsignTime, -- 生产科拖货时间 | |
78 | + o.order_hod_time AS orderHodTime, -- hod时间 | |
79 | + -- 利润信息 | |
80 | + a.id AS profitId, -- 确保表别名 a 是正确的 | |
81 | + a.customer_price AS customerPrice, -- 客户单价 | |
82 | + a.customer_total_price AS customerTotalPrice, -- 客户总价 | |
83 | + a.production_department_price AS productionDepartmentPrice, -- 生产科单价 | |
84 | + a.production_department_total_price AS productionDepartmentTotalPrice, -- 生产科总价 | |
85 | + -- 发票信息 | |
86 | + i.id AS invoiceId, | |
87 | + i.invoice_no AS invoiceNo, -- invoice编号 | |
88 | + i.bg_url AS invoiceBgUrl, -- 报关单 | |
89 | + i.back_refund_date AS invoiceBackRefundDate, -- 必须回款日期 | |
90 | + i.actual_refund_date AS invoiceActualRefundDate, -- 实际回款日期,前端不用获取 | |
91 | + i.deduct_url AS invoiceDeductUrl, -- 扣款单 | |
92 | + i.actual_receivable_amount AS invoiceActualReceivableAmount, -- 实际应收金额 | |
93 | + i.actual_payed_amount1 AS invoiceActualPayedAmount1, -- 实际收款金额1 | |
94 | + i.actual_payed_amount2 AS invoiceActualPayedAmount2, -- 实际收款金额2 | |
95 | + i.actual_payed_amount3 AS invoiceActualPayedAmount3, -- 实际收款金额3 | |
96 | + i.other_amount AS invoiceOtherAmount, -- 其他费用 | |
97 | + i.status AS invoiceStatus, -- invoice状态 | |
98 | + i.deduct_amount AS invoiceDeductAmount, -- 扣款金额 | |
99 | + i.notes AS invoiceNotes, -- invoice备注 | |
100 | + -- 生产科付款信息 | |
101 | + p.id AS checkId, | |
102 | + p.check_no AS checkNo, -- checkNo编号 | |
103 | + p.status AS checkPaystatus, -- checkNo状态 | |
104 | + p.deduct_amount AS checkDeductAmount, -- 扣款金额 | |
105 | + p.actual_payed_date AS checkActualPayedDate, -- 实际收款时间,前段不用获取 | |
106 | + p.deduct_dept AS checkDeductDept, -- 扣款部门 | |
107 | + p.department_invoice_status AS checkDepartmentInvoiceStatus, -- 发票状态 | |
108 | + p.actual_payed_amount3 AS checkActualPayedAmount3, -- 实际付款金额3 | |
109 | + p.actual_payed_amount2 AS checkActualPayedAmount2, -- 实际付款金额2 | |
110 | + p.actual_payed_amount1 AS checkActualPayedAmount1, -- 实际付款金额1 | |
111 | + p.actual_payed_amount AS checkActualPayedAmount, -- 实际应付金额 | |
112 | + p.payed_date AS checkPayedDate, -- 必须付款日期 | |
113 | + p.deduct_url AS checkDeductUrl, -- 扣款单 | |
114 | + p.notes AS checkNotes, -- checkNo备注 | |
115 | + p.invoice_url AS checkInvoiceUrl -- 发票 | |
116 | + FROM order_base_info o | |
117 | + LEFT JOIN invoice_bill_order AS i | |
118 | + ON o.id = i.order_id AND i.enable_flag = 10 | |
119 | + LEFT JOIN produce_payment_check_bill_order AS p | |
120 | + ON o.id = p.order_id AND p.enable_flag = 10 | |
121 | + LEFT JOIN order_profit_analysis AS a | |
122 | + ON o.id = a.order_id AND a.enable_flag = 10 | |
123 | + WHERE o.enable_flag = 10 | |
124 | + <if test="queryVO.invoiceNo != null and queryVO.invoiceNo != ''"> | |
125 | + AND i.invoice_no = #{queryVO.invoiceNo} | |
126 | + </if> | |
127 | + <if test="queryVO.checkNo != null and queryVO.checkNo != ''"> | |
128 | + AND p.check_no = #{queryVO.checkNo} | |
129 | + </if> | |
130 | + <if test="queryVO.invoiceStatus != null"> | |
131 | + AND i.status = #{queryVO.invoiceStatus} | |
132 | + </if> | |
133 | + <if test="queryVO.checkNoStatus != null"> | |
134 | + AND p.status = #{queryVO.checkNoStatus} | |
135 | + </if> | |
136 | + <if test="queryVO.customerCode != null and queryVO.customerCode != ''"> | |
137 | + AND o.customer_code = #{queryVO.customerCode} | |
138 | + </if> | |
139 | + <if test="queryVO.projectNo != null and queryVO.projectNo != ''"> | |
140 | + AND o.project_no = #{queryVO.projectNo} | |
141 | + </if> | |
142 | + <if test="queryVO.productionDepartment != null and queryVO.productionDepartment != ''"> | |
143 | + AND o.production_department = #{queryVO.productionDepartment} | |
144 | + </if> | |
145 | + <if test="queryVO.innerNo != null and queryVO.innerNo != ''"> | |
146 | + AND o.inner_no = #{queryVO.innerNo} | |
147 | + </if> | |
148 | + <if test="queryVO.customerPo != null and queryVO.customerPo != ''"> | |
149 | + AND o.customer_po = #{queryVO.customerPo} | |
150 | + </if> | |
151 | + <if test="queryVO.invoiceStartTime != null"> | |
152 | + AND DATE(i.create_time) >= LEFT(#{queryVO.invoiceStartTime}, 10) | |
153 | + </if> | |
154 | + <if test="queryVO.invoiceEndTime != null"> | |
155 | + AND DATE(i.create_time) <= LEFT(#{queryVO.invoiceEndTime}, 10) | |
156 | + </if> | |
157 | + <if test="queryVO.checkStartTime != null "> | |
158 | + AND DATE(p.create_time) >= LEFT(#{queryVO.checkStartTime}, 10) | |
159 | + </if> | |
160 | + <if test="queryVO.checkEndTime != null"> | |
161 | + AND DATE(p.create_time) <= LEFT(#{queryVO.checkEndTime}, 10) | |
162 | + </if> | |
163 | + <if test="queryVO.createStartTime !=null"> | |
164 | + AND DATE(o.create_time) >= LEFT(#{queryVO.createStartTime}, 10) | |
165 | + </if> | |
166 | + <if test="queryVO.createEndTime != null"> | |
167 | + AND DATE(o.create_time) <= LEFT(#{queryVO.createEndTime}, 10) | |
168 | + </if> | |
169 | + <if test="queryVO.productionDepartmentConsignStartTime != null "> | |
170 | + AND DATE(o.production_department_consign_time) >= LEFT(#{queryVO.productionDepartmentConsignStartTime} , 10) | |
171 | + </if> | |
172 | + <if test="queryVO.productionDepartmentConsignEndTime != null"> | |
173 | + AND DATE(o.production_department_consign_time) <= LEFT(#{queryVO.productionDepartmentConsignEndTime} , 10) | |
174 | + </if> | |
175 | + <if test="queryVO.orderHodStartTime != null "> | |
176 | + AND DATE(o.order_hod_time) >= LEFT(#{queryVO.orderHodStartTime} , 10) | |
177 | + </if> | |
178 | + <if test="queryVO.orderHodEndTime != null"> | |
179 | + AND DATE(o.order_hod_time) <= LEFT(#{queryVO.orderHodEndTime} , 10) | |
180 | + </if> | |
181 | + <if test="queryVO.trackerUserName != null and queryVO.trackerUserName != ''"> | |
182 | + AND o.create_by = #{queryVO.trackerUserName} | |
183 | + </if> | |
184 | + <if test="queryVO.businessUserName != null and queryVO.businessUserName != ''"> | |
185 | + AND o.business_person = #{queryVO.businessUserName} | |
186 | + </if> | |
187 | + ORDER BY o.id DESC | |
188 | + | |
189 | + </select> | |
190 | +</mapper> | ... | ... |