Commit 5f29093894d339aba74136b86d7ee2bb6a2931c1
Merge remote-tracking branch 'origin/fix-main-ch' into fix-main-ch
# Conflicts: # src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
Showing
25 changed files
with
763 additions
and
163 deletions
src/main/java/com/order/erp/common/constant/Constant.java
... | ... | @@ -340,4 +340,8 @@ public class Constant { |
340 | 340 | |
341 | 341 | public static final String FINANCE_EVENT_TIME = "请自行去系统中查询!"; |
342 | 342 | |
343 | + public static final String FINANCE_EVENT_TITLE_INNERNO = " , 对应内部编号为 : "; | |
344 | + | |
345 | + public static final String FINANCE_EVENT_TITLE_PROJECTNO = " , 对应项目号为 : "; | |
346 | + | |
343 | 347 | } | ... | ... |
src/main/java/com/order/erp/common/utils/EmailSendUtils.java
... | ... | @@ -21,10 +21,7 @@ import javax.mail.internet.MimeMessage; |
21 | 21 | import java.io.File; |
22 | 22 | import java.io.IOException; |
23 | 23 | import java.io.StringWriter; |
24 | -import java.util.Date; | |
25 | -import java.util.HashMap; | |
26 | -import java.util.List; | |
27 | -import java.util.Map; | |
24 | +import java.util.*; | |
28 | 25 | |
29 | 26 | /** |
30 | 27 | * @Author:ch |
... | ... | @@ -55,7 +52,7 @@ public class EmailSendUtils { |
55 | 52 | MimeMessage mimeMessage = javaMailSender.createMimeMessage(); |
56 | 53 | MimeMessageHelper helper= null; |
57 | 54 | Map<String, Object> map = new HashMap<>(); |
58 | - map.put("context",emailTemplateEnum.getContent()); | |
55 | + map.put("context",emailTemplateEnum.getContent()+orderEventJobVO.getBaseInfo().getProjectNo()); | |
59 | 56 | map.put("title",emailTemplateEnum.getTitle()); |
60 | 57 | map.put("data",orderEventJobVO); |
61 | 58 | Template template = null; |
... | ... | @@ -136,11 +133,44 @@ public class EmailSendUtils { |
136 | 133 | helper.setFrom(sendEmail); |
137 | 134 | helper.setTo(receiveemailListArray); |
138 | 135 | helper.setSentDate(new Date()); |
136 | + // 构建邮件内容(HTML 格式) | |
137 | + StringBuilder emailContent = new StringBuilder(); | |
138 | + emailContent.append("<html><body>"); | |
139 | + | |
139 | 140 | if(FinanceOverEnum.INVOICE_OVERTIME==emailTemplateEnum){ |
140 | - helper.setText(emailTemplateEnum.getDesc()+orderEventJobVO.getInvoiceBillOrderDO().getInvoiceNo()+" "+ Constant.FINANCE_EVENT_TIME); | |
141 | + emailContent.append("<p style='font-size:24px;'>") | |
142 | + .append(emailTemplateEnum.getDesc()) | |
143 | + .append("<span style='color:red; font-weight:bold; font-size:24px;'>") | |
144 | + .append(orderEventJobVO.getFinanceInvoiceBillOrderVO().getInvoiceNo()) | |
145 | + .append("</span>") | |
146 | + .append(Constant.FINANCE_EVENT_TITLE_INNERNO) | |
147 | + .append("<span style='color:red; font-weight:bold; font-size:24px;'>") | |
148 | + .append(Objects.toString(orderEventJobVO.getFinanceInvoiceBillOrderVO().getInnerNo(), " ")) | |
149 | + .append("</span>") | |
150 | + .append(Constant.FINANCE_EVENT_TITLE_PROJECTNO) | |
151 | + .append("<span style='color:red; font-weight:bold; font-size:24px;'>") | |
152 | + .append(Objects.toString(orderEventJobVO.getFinanceInvoiceBillOrderVO().getProjectNo(), " ")) | |
153 | + .append("</span>") | |
154 | + .append("</p>"); | |
141 | 155 | }else if(FinanceOverEnum.PRODUCE_PAYMENT_CHECK_OVERTIME==emailTemplateEnum){ |
142 | - helper.setText(emailTemplateEnum.getDesc()+orderEventJobVO.getProducePaymentCheckBillOrderDO().getCheckNo()+" "+Constant.FINANCE_EVENT_TIME); | |
156 | + emailContent.append("<p style='font-size:24px;'>") | |
157 | + .append(emailTemplateEnum.getDesc()) | |
158 | + .append("<span style='color:red; font-weight:bold; font-size:24px;'>") | |
159 | + .append(orderEventJobVO.getFinanceProducePayCheckBillOrderVO().getCheckNo()) | |
160 | + .append("</span>") | |
161 | + .append(Constant.FINANCE_EVENT_TITLE_INNERNO) | |
162 | + .append("<span style='color:red; font-weight:bold; font-size:24px;'>") | |
163 | + .append(Objects.toString(orderEventJobVO.getFinanceProducePayCheckBillOrderVO().getInnerNo(), " ")) | |
164 | + .append("</span>") | |
165 | + .append(Constant.FINANCE_EVENT_TITLE_PROJECTNO) | |
166 | + .append("<span style='color:red; font-weight:bold; font-size:24px;'>") | |
167 | + .append(Objects.toString(orderEventJobVO.getFinanceProducePayCheckBillOrderVO().getProjectNo(), " ")) | |
168 | + .append("</span>") | |
169 | + .append("</p>"); | |
143 | 170 | } |
171 | + emailContent.append("<p style='font-size:24px;'>").append(Constant.FINANCE_EVENT_TIME).append("</p>"); | |
172 | + emailContent.append("</body></html>"); | |
173 | + helper.setText(emailContent.toString(), true); | |
144 | 174 | } catch ( MessagingException e) { |
145 | 175 | throw new RuntimeException("邮件发送失败!", e); |
146 | 176 | } | ... | ... |
src/main/java/com/order/erp/controller/IndexController.java
... | ... | @@ -68,15 +68,15 @@ public class IndexController { |
68 | 68 | long orderRecentYearCount = orderBaseInfoService.countRecentYear(); |
69 | 69 | |
70 | 70 | IndexDataVO indexDataVo = new IndexDataVO(); |
71 | - indexDataVo.setOrderFinishedCount(orderTotalFinished); | |
71 | + indexDataVo.setOrderFinishedCount(orderTotalFinished); //订单完成。 | |
72 | 72 | indexDataVo.setOrderRecentMonthFinishedCount(orderRecentMonthFinished); |
73 | - indexDataVo.setOrderInspectingCount(inspecting); | |
73 | + indexDataVo.setOrderInspectingCount(inspecting); //跟单和质检中。 | |
74 | 74 | indexDataVo.setOrderRecentMonthInspectingCount(recentMonthInspecting); |
75 | - indexDataVo.setOrderProfitWaitAuditCount(orderProfitWaitAudit); | |
75 | + indexDataVo.setOrderProfitWaitAuditCount(orderProfitWaitAudit); //利润分析表待审核。 | |
76 | 76 | indexDataVo.setOrderRecentWeekProfitWaitAuditCount(orderRecentWeekProfitWaitAudit); |
77 | - indexDataVo.setOrderReportWaitAuditCount(orderReport); | |
77 | + indexDataVo.setOrderReportWaitAuditCount(orderReport); //项目报告书待审核。 | |
78 | 78 | indexDataVo.setOrderReportRecentYearWaitAuditCount(orderYearReport); |
79 | - indexDataVo.setOrderCount(orderCount); | |
79 | + indexDataVo.setOrderCount(orderCount); //订单初始化。 | |
80 | 80 | indexDataVo.setOrderRecentYearCount(orderRecentYearCount); |
81 | 81 | |
82 | 82 | return ServerResult.success(indexDataVo); | ... | ... |
src/main/java/com/order/erp/controller/InvoiceBillOrderController.java
... | ... | @@ -62,7 +62,7 @@ public class InvoiceBillOrderController { |
62 | 62 | * @return 查询结果 |
63 | 63 | */ |
64 | 64 | @PostMapping("/list_analysis_by") |
65 | - public ServerResult listAnalysisBy(@RequestBody @Validated({OperateGroup.List.class}) InvoiceBillAnalysisVO queryVO) { | |
65 | + public ServerResult listAnalysisBy(@RequestBody @Validated({OperateGroup.List.class}) InvoiceAndCheckAnalysisVO queryVO) { | |
66 | 66 | return invoiceBillOrderService.listAnalysisBy(queryVO); |
67 | 67 | } |
68 | 68 | |
... | ... | @@ -75,7 +75,7 @@ public class InvoiceBillOrderController { |
75 | 75 | @PostMapping(value = "/export") |
76 | 76 | @ApiOperation("导出分析列表") |
77 | 77 | @AnonymousAccess |
78 | - public void export(HttpServletResponse response, @RequestBody @Validated InvoiceBillAnalysisVO queryVO) throws IOException, Excel4JException { | |
78 | + public void export(HttpServletResponse response, @RequestBody @Validated InvoiceAndCheckAnalysisVO queryVO) throws IOException, Excel4JException { | |
79 | 79 | invoiceBillOrderService.export(response, queryVO); |
80 | 80 | } |
81 | 81 | ... | ... |
src/main/java/com/order/erp/controller/ProducePaymentCheckBillOrderController.java
... | ... | @@ -39,10 +39,10 @@ public class ProducePaymentCheckBillOrderController { |
39 | 39 | * @param queryVO 查询条件 |
40 | 40 | * @return 查询结果 |
41 | 41 | */ |
42 | - @PostMapping("/list_by_page") | |
42 | + /*@PostMapping("/list_by_page") | |
43 | 43 | public ServerResult listByPage(@RequestBody @Validated({OperateGroup.List.class}) ProducePaymentCheckBillOrderQueryVO queryVO) { |
44 | 44 | return producePaymentCheckBillOrderService.listByPage(queryVO); |
45 | - } | |
45 | + }*/ | |
46 | 46 | |
47 | 47 | /** |
48 | 48 | * 基础订单查询 wanchen |
... | ... | @@ -62,7 +62,7 @@ public class ProducePaymentCheckBillOrderController { |
62 | 62 | * @return 查询结果 |
63 | 63 | */ |
64 | 64 | @PostMapping("/list_analysis_by") |
65 | - public ServerResult listAnalysisBy(@RequestBody @Validated({OperateGroup.List.class}) ProducePaymentCheckBillOrderQueryVO queryVO) { | |
65 | + public ServerResult listAnalysisBy(@RequestBody @Validated({OperateGroup.List.class}) InvoiceAndCheckAnalysisVO queryVO) { | |
66 | 66 | return producePaymentCheckBillOrderService.listAnalysisBy(queryVO); |
67 | 67 | } |
68 | 68 | |
... | ... | @@ -75,7 +75,7 @@ public class ProducePaymentCheckBillOrderController { |
75 | 75 | @PostMapping(value = "/export") |
76 | 76 | @ApiOperation("导出分析列表") |
77 | 77 | @AnonymousAccess |
78 | - public void export(HttpServletResponse response, @RequestBody @Validated ProducePaymentCheckBillOrderQueryVO queryVO) throws IOException, Excel4JException { | |
78 | + public void export(HttpServletResponse response, @RequestBody @Validated InvoiceAndCheckAnalysisVO queryVO) throws IOException, Excel4JException { | |
79 | 79 | producePaymentCheckBillOrderService.export(response, queryVO); |
80 | 80 | } |
81 | 81 | ... | ... |
src/main/java/com/order/erp/domain/EmailTemplateEnum.java
... | ... | @@ -13,27 +13,27 @@ import lombok.Getter; |
13 | 13 | @AllArgsConstructor |
14 | 14 | public enum EmailTemplateEnum { |
15 | 15 | |
16 | - CONFIRM_SAMPLE_TEMPLATE("确认样确认状态", "您收到此邮件是因为您未能在规定的期限内完成以下货号的确认样确认,请尽快完成", 1L), | |
16 | + CONFIRM_SAMPLE_TEMPLATE("确认样确认状态", "您收到此邮件是因为您未能在规定的期限内完成以下货号的确认样确认,请尽快完成 项目号为: ", 1L), | |
17 | 17 | |
18 | - OTHER_SAMPLE_TEMPLATE("EXTRA,SHOWROOM,ONLINE sample发送日期", "您收到此邮件是因为您未能在规定的期限内完成以下货号的EXTRA,SHOWROOM,ONLINE sample的发送,请尽快完成", 2L), | |
18 | + OTHER_SAMPLE_TEMPLATE("EXTRA,SHOWROOM,ONLINE sample发送日期", "您收到此邮件是因为您未能在规定的期限内完成以下货号的EXTRA,SHOWROOM,ONLINE sample的发送,请尽快完成 项目号为: ", 2L), | |
19 | 19 | |
20 | - BIG_SAMPLE_TEMPLATE("大货样确认状态", "您收到此邮件是因为您未能在规定的期限内完成以下货号的大货样确认,请尽快完成", 3L), | |
20 | + BIG_SAMPLE_TEMPLATE("大货样确认状态", "您收到此邮件是因为您未能在规定的期限内完成以下货号的大货样确认,请尽快完成 项目号为: ", 3L), | |
21 | 21 | |
22 | - AITEX_SGS_TEST_TEMPLATE("AITEX/SGS测试状态", "您收到此邮件是因为您未能在规定的期限内完成以下货号的AITEX/SGS测试通过,请尽快完成", 4L), | |
22 | + AITEX_SGS_TEST_TEMPLATE("AITEX/SGS测试状态", "您收到此邮件是因为您未能在规定的期限内完成以下货号的AITEX/SGS测试通过,请尽快完成 项目号为: ", 4L), | |
23 | 23 | |
24 | - BARCODE_ARRIVAL_TEMPLATE("要求包材到货日期", "您收到此邮件是因为您未能在规定的期限内收到所有包材,请尽快确认", 5L), | |
24 | + BARCODE_ARRIVAL_TEMPLATE("要求包材到货日期", "您收到此邮件是因为您未能在规定的期限内收到所有包材,请尽快确认 项目号为: ", 5L), | |
25 | 25 | |
26 | - LATEST_DC_TEMPLATE("最晚订舱日期", "您收到此邮件是因为您未能在规定的期限内完成订舱,请尽快完成", 6L), | |
26 | + LATEST_DC_TEMPLATE("最晚订舱日期", "您收到此邮件是因为您未能在规定的期限内完成订舱,请尽快完成 项目号为: ", 6L), | |
27 | 27 | |
28 | - END_CHECK_DATE_TEMPLATE("尾期验货日期", "您收到此邮件是因为您未能在规定的期限内完成尾期验货,请尽快完成", 7L), | |
28 | + END_CHECK_DATE_TEMPLATE("尾期验货日期", "您收到此邮件是因为您未能在规定的期限内完成尾期验货,请尽快完成 项目号为: ", 7L), | |
29 | 29 | |
30 | - MID_CHECK_REPORT_TEMPLATE("中期验货报告", "您好,请查收中期验货报告", 8L), | |
30 | + MID_CHECK_REPORT_TEMPLATE("中期验货报告", "您好,请查收中期验货报告 项目号为: ", 8L), | |
31 | 31 | |
32 | - END_CHECK_REPORT_TEMPLATE("尾期验货报告", "您好,请查收尾期验货报告", 9L), | |
32 | + END_CHECK_REPORT_TEMPLATE("尾期验货报告", "您好,请查收尾期验货报告 项目号为: ", 9L), | |
33 | 33 | |
34 | 34 | PRODUCE_INDICATE_REPORT("生产指示书","你好,请查收附件生产订单",10L), |
35 | 35 | |
36 | - PRODUCE_IDEA("产品意见信息","你好,请查收产品意见信息",11L), | |
36 | + PRODUCE_IDEA("产品意见信息","你好,请查收产品意见信息 项目号为: ",11L), | |
37 | 37 | |
38 | 38 | ; |
39 | 39 | ... | ... |
src/main/java/com/order/erp/domain/FinanceOverEnum.java
... | ... | @@ -6,8 +6,8 @@ import lombok.Getter; |
6 | 6 | @Getter |
7 | 7 | @AllArgsConstructor |
8 | 8 | public enum FinanceOverEnum { |
9 | - INVOICE_OVERTIME("你有invoice应收款未提交,请查收","Hi All 你以下invoice已超过回款日期,仍未生成应收款对账单提交审核,麻烦财务查询是否已打款,如未打款请业务员及时跟进\n。Invoice号为:"), | |
10 | - PRODUCE_PAYMENT_CHECK_OVERTIME("你有生产科对账单未提交,请查收","Hi All 你以下生产科对账单已超过应付款日期,麻烦财务查询是否已打款,如未打款请说明原因,如未收到发票,请业务员及时跟进\n。生产科对账单号为:"), | |
9 | + INVOICE_OVERTIME("你有invoice应收款未提交,请查收","Hi All 你以下invoice已超过回款日期,仍未生成应收款对账单提交审核,麻烦财务查询是否已打款,如未打款请业务员及时跟进\n。Invoice号为: "), | |
10 | + PRODUCE_PAYMENT_CHECK_OVERTIME("你有生产科对账单未提交,请查收","Hi All 你以下生产科对账单已超过应付款日期,麻烦财务查询是否已打款,如未打款请说明原因,如未收到发票,请业务员及时跟进\n。生产科对账单号为: "), | |
11 | 11 | ; |
12 | 12 | |
13 | 13 | private String title; | ... | ... |
src/main/java/com/order/erp/domain/vo/order/FinanceEventJobVO.java
... | ... | @@ -14,7 +14,7 @@ import lombok.experimental.SuperBuilder; |
14 | 14 | public class FinanceEventJobVO { |
15 | 15 | |
16 | 16 | //应收款。 |
17 | - private InvoiceBillOrderDO invoiceBillOrderDO; | |
17 | + private FinanceInvoiceBillOrderVO financeInvoiceBillOrderVO; | |
18 | 18 | //未收款。 |
19 | - private ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO; | |
19 | + private FinanceProducePayCheckBillOrderVO financeProducePayCheckBillOrderVO; | |
20 | 20 | } | ... | ... |
src/main/java/com/order/erp/domain/vo/order/FinanceInvoiceBillOrderVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | |
2 | + | |
3 | +import lombok.*; | |
4 | +import lombok.experimental.SuperBuilder; | |
5 | + | |
6 | +@Data | |
7 | +@AllArgsConstructor | |
8 | +@ToString | |
9 | +@NoArgsConstructor | |
10 | +@EqualsAndHashCode(callSuper = false) | |
11 | +@SuperBuilder | |
12 | +public class FinanceInvoiceBillOrderVO { | |
13 | + | |
14 | + private Long id; | |
15 | + /** | |
16 | + * 发票单号 | |
17 | + */ | |
18 | + private String invoiceNo; | |
19 | + /** | |
20 | + * 订单id | |
21 | + */ | |
22 | + private Long orderId ; | |
23 | + /** | |
24 | + * 必须回款日期 | |
25 | + */ | |
26 | + private String backRefundDate; | |
27 | + /** | |
28 | + * 实际回款日期 | |
29 | + */ | |
30 | + private String actualRefundDate; | |
31 | + /** | |
32 | + * 内部编号 | |
33 | + * */ | |
34 | + private String innerNo; | |
35 | + /** | |
36 | + * 项目号 | |
37 | + * */ | |
38 | + private String projectNo; | |
39 | + | |
40 | + | |
41 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/FinanceProducePayCheckBillOrderVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | |
2 | + | |
3 | +import lombok.*; | |
4 | +import lombok.experimental.SuperBuilder; | |
5 | + | |
6 | +@Data | |
7 | +@AllArgsConstructor | |
8 | +@ToString | |
9 | +@NoArgsConstructor | |
10 | +@EqualsAndHashCode(callSuper = false) | |
11 | +@SuperBuilder | |
12 | +public class FinanceProducePayCheckBillOrderVO { | |
13 | + private Long id; | |
14 | + /** | |
15 | + * 生产科对账单 | |
16 | + */ | |
17 | + private String checkNo; | |
18 | + | |
19 | + /** | |
20 | + * orderId | |
21 | + */ | |
22 | + private Long orderId; | |
23 | + | |
24 | + /** | |
25 | + * 生产科应付款日期 | |
26 | + */ | |
27 | + private String payedDate; | |
28 | + | |
29 | + /** | |
30 | + * 生产科实际付款日期 | |
31 | + */ | |
32 | + private String actualPayedDate; | |
33 | + /** | |
34 | + * 内部编号 | |
35 | + */ | |
36 | + private String innerNo; | |
37 | + /** | |
38 | + * 项目号 | |
39 | + */ | |
40 | + private String projectNo; | |
41 | + | |
42 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceAndCheckAnalysisVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | |
2 | + | |
3 | +import lombok.AllArgsConstructor; | |
4 | +import lombok.Data; | |
5 | +import lombok.EqualsAndHashCode; | |
6 | +import lombok.ToString; | |
7 | +import lombok.experimental.SuperBuilder; | |
8 | + | |
9 | +import java.util.List; | |
10 | + | |
11 | +@Data | |
12 | +@AllArgsConstructor | |
13 | +@ToString | |
14 | +@EqualsAndHashCode(callSuper = false) | |
15 | +@SuperBuilder | |
16 | +public class InvoiceAndCheckAnalysisVO { | |
17 | + //invocieId或者checkId | |
18 | + private List<Long> ids; | |
19 | + //orderId | |
20 | + private List<Long> orderIds; | |
21 | + //查询条件 | |
22 | + private InvoiceBillOrderQueryVO queryVO; | |
23 | + | |
24 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceIdAndCheckIdResultVO.java
0 → 100644
1 | +package com.order.erp.domain.vo.order; | |
2 | + | |
3 | +import lombok.*; | |
4 | +import lombok.experimental.SuperBuilder; | |
5 | + | |
6 | + | |
7 | + | |
8 | +@Data | |
9 | +@AllArgsConstructor | |
10 | +@ToString | |
11 | +@NoArgsConstructor | |
12 | +@EqualsAndHashCode(callSuper = false) | |
13 | +@SuperBuilder | |
14 | +public class InvoiceIdAndCheckIdResultVO { | |
15 | + | |
16 | + private Long orderId; | |
17 | + private Long checkId; | |
18 | + private Long invoiceId; | |
19 | +} | ... | ... |
src/main/java/com/order/erp/domain/vo/order/OrderLockFieldVO.java
... | ... | @@ -61,7 +61,7 @@ public class OrderLockFieldVO implements Serializable { |
61 | 61 | * 应付款账单字段 |
62 | 62 | */ |
63 | 63 | //这个专门给发票审核用的。 |
64 | - private ProducePaymentCheckBillOrderDO checkBillOrderDO; | |
64 | + private ProducePaymentCheckBillVO checkBillVO; | |
65 | 65 | |
66 | 66 | private ProducePaymentCheckBillFieldVO producePaymentCheckBillFieldVO; |
67 | 67 | ... | ... |
src/main/java/com/order/erp/domain/vo/order/ProducePaymentCheckBillVO.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 ProducePaymentCheckBillVO { | |
16 | + private Long id; | |
17 | + /** | |
18 | + * 生产科对账单 | |
19 | + */ | |
20 | + private String checkNo; | |
21 | + | |
22 | + /** | |
23 | + * orderId | |
24 | + */ | |
25 | + private Long orderId; | |
26 | + /** | |
27 | + * 发票url地址 | |
28 | + */ | |
29 | + private String invoiceUrl; | |
30 | + /** | |
31 | + * 扣款单url地址 | |
32 | + */ | |
33 | + private String deductUrl; | |
34 | + /** | |
35 | + * 生产科应付款日期 | |
36 | + */ | |
37 | + private String payedDate; | |
38 | + | |
39 | + /** | |
40 | + * 生产科实际付款日期 | |
41 | + */ | |
42 | + private String actualPayedDate; | |
43 | + | |
44 | + /** | |
45 | + * 生产科扣款责任部门 | |
46 | + */ | |
47 | + private String deductDept; | |
48 | + /** | |
49 | + * 生产科扣款金额 | |
50 | + */ | |
51 | + private BigDecimal deductAmount; | |
52 | + /** | |
53 | + * 实际应付金额 | |
54 | + */ | |
55 | + private BigDecimal actualPayedAmount; | |
56 | + /** | |
57 | + * 实际应付金额1 | |
58 | + */ | |
59 | + private BigDecimal actualPayedAmount1; | |
60 | + /** | |
61 | + * 实际应付金额2 | |
62 | + */ | |
63 | + private BigDecimal actualPayedAmount2; | |
64 | + /** | |
65 | + * 实际应付金额3 | |
66 | + */ | |
67 | + private BigDecimal actualPayedAmount3; | |
68 | + /** | |
69 | + * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回 | |
70 | + */ | |
71 | + private Integer status; | |
72 | + //需要在表中添加三个字段。 | |
73 | + /** | |
74 | + * 生产科发票审核状态 0:待审核、1:审核通过,2:审核驳回 | |
75 | + */ | |
76 | + private Integer departmentInvoiceStatus; | |
77 | + | |
78 | + /** | |
79 | + * 生产科总金额汇总 | |
80 | + * */ | |
81 | + private BigDecimal totalProductionAmount; | |
82 | + /** | |
83 | + * 实际付款金额汇总 | |
84 | + * */ | |
85 | + private BigDecimal totalActualPayedAmount; | |
86 | + /** | |
87 | + * 创建生产科对账单号选择的生产科 | |
88 | + * */ | |
89 | + private String productionName; | |
90 | + /** | |
91 | + * 未付金额 | |
92 | + * */ | |
93 | + private BigDecimal unPayedAmount; | |
94 | + /** | |
95 | + * 业务员 | |
96 | + * */ | |
97 | + private String businesPerson; | |
98 | + /** | |
99 | + * 财务 --审核时使用。 | |
100 | + * */ | |
101 | + private String financePerson; | |
102 | + /** | |
103 | + * 跟单 --业务创建单子,跟单也能看到。 | |
104 | + * */ | |
105 | + private String trackerUser; | |
106 | + /** | |
107 | + * 备注。 | |
108 | + * */ | |
109 | + private String notes; | |
110 | + /** | |
111 | + * 内部编码。 | |
112 | + * */ | |
113 | + private String innerNo; | |
114 | +} | ... | ... |
src/main/java/com/order/erp/job/FinanceJob.java
1 | 1 | package com.order.erp.job; |
2 | 2 | |
3 | +import cn.hutool.core.bean.BeanUtil; | |
3 | 4 | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
4 | 5 | import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; |
5 | 6 | import com.order.erp.common.constant.Constant; |
... | ... | @@ -12,11 +13,15 @@ import com.order.erp.domain.dto.BaseDO; |
12 | 13 | import com.order.erp.domain.dto.admin.AdminUserDO; |
13 | 14 | import com.order.erp.domain.dto.admin.AdminUserRoleDO; |
14 | 15 | import com.order.erp.domain.dto.order.InvoiceBillOrderDO; |
16 | +import com.order.erp.domain.dto.order.OrderBaseInfoDO; | |
15 | 17 | import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; |
16 | 18 | import com.order.erp.domain.vo.order.FinanceEventJobVO; |
19 | +import com.order.erp.domain.vo.order.FinanceInvoiceBillOrderVO; | |
20 | +import com.order.erp.domain.vo.order.FinanceProducePayCheckBillOrderVO; | |
17 | 21 | import com.order.erp.service.admin.AdminUserRoleService; |
18 | 22 | import com.order.erp.service.admin.AdminUserService; |
19 | 23 | import com.order.erp.service.order.InvoiceBillOrderService; |
24 | +import com.order.erp.service.order.OrderBaseInfoService; | |
20 | 25 | import com.order.erp.service.order.ProducePaymentCheckBillOrderService; |
21 | 26 | import lombok.extern.slf4j.Slf4j; |
22 | 27 | import org.apache.logging.log4j.util.Strings; |
... | ... | @@ -28,6 +33,7 @@ import java.time.LocalDate; |
28 | 33 | import java.util.*; |
29 | 34 | import java.util.concurrent.TimeUnit; |
30 | 35 | import java.util.stream.Collectors; |
36 | +import java.util.stream.Stream; | |
31 | 37 | |
32 | 38 | @Slf4j |
33 | 39 | @Component |
... | ... | @@ -44,8 +50,10 @@ public class FinanceJob { |
44 | 50 | private AdminUserService adminUserService; |
45 | 51 | @Resource |
46 | 52 | private RedisUtils redisService; |
53 | + @Resource | |
54 | + private OrderBaseInfoService orderBaseInfoService; | |
47 | 55 | //每天的7:15执行一次 |
48 | -// @Scheduled(cron = "0 15 7 * * ?", zone = "Asia/Shanghai") | |
56 | + @Scheduled(cron = "0 15 7 * * ?", zone = "Asia/Shanghai") | |
49 | 57 | |
50 | 58 | //每分钟执行一次 |
51 | 59 | // @Scheduled(cron = "0 * * * * ?", zone = "Asia/Shanghai") |
... | ... | @@ -55,6 +63,26 @@ public class FinanceJob { |
55 | 63 | LocalDate today = LocalDate.now(); |
56 | 64 | List<InvoiceBillOrderDO> invoiceBillOrderDOList = eventInvoiceBillOrderDO.stream().filter(invoice -> invoice.getBackRefundDate() != null && Strings.isNotEmpty(invoice.getBackRefundDate())) |
57 | 65 | .collect(Collectors.toList()); |
66 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList= eventProducePaymentCheckBillOrderDO.stream().filter(producePaymentCheckBillOrderDO -> producePaymentCheckBillOrderDO.getPayedDate()!=null && Strings.isNotEmpty(producePaymentCheckBillOrderDO.getPayedDate())) | |
67 | + .collect(Collectors.toList()); | |
68 | + List<Long> orderIds = invoiceBillOrderDOList.stream() | |
69 | + .filter(invoice -> Objects.nonNull(invoice.getOrderId())) | |
70 | + .map(InvoiceBillOrderDO::getOrderId) | |
71 | + .collect(Collectors.toList()); | |
72 | + List<Long> orderIdList = producePaymentCheckBillOrderDOList.stream() | |
73 | + .filter(check -> Objects.nonNull(check.getOrderId())) | |
74 | + .map(ProducePaymentCheckBillOrderDO::getOrderId) | |
75 | + .collect(Collectors.toList()); | |
76 | + // 去重 | |
77 | + List<Long> combinedOrderIds = Stream.concat( | |
78 | + orderIds.stream(), | |
79 | + orderIdList.stream() | |
80 | + ) | |
81 | + .distinct() // 去重 | |
82 | + .collect(Collectors.toList()); // 转换为 List | |
83 | + | |
84 | + Map<Long, OrderBaseInfoDO> orderBaseInfoInnerMap = orderBaseInfoService.listByIds(combinedOrderIds).stream() | |
85 | + .collect(Collectors.toMap(OrderBaseInfoDO::getId, orderBaseInfo -> orderBaseInfo)); | |
58 | 86 | Set<String> emailList= new HashSet<>(); |
59 | 87 | Set<String> twoEmail = new HashSet<>(); |
60 | 88 | //获取所有用户。 |
... | ... | @@ -98,7 +126,13 @@ public class FinanceJob { |
98 | 126 | emailList.addAll(emails); |
99 | 127 | } |
100 | 128 | FinanceEventJobVO eventJobVO = new FinanceEventJobVO(); |
101 | - eventJobVO.setInvoiceBillOrderDO(invoiceBillOrderDO); | |
129 | + FinanceInvoiceBillOrderVO financeInvoiceBillOrderVO = new FinanceInvoiceBillOrderVO(); | |
130 | + BeanUtil.copyProperties(invoiceBillOrderDO,financeInvoiceBillOrderVO ); | |
131 | + if(CollectionUtils.isNotEmpty(orderBaseInfoInnerMap) && orderBaseInfoInnerMap.containsKey(invoiceBillOrderDO.getOrderId())){ | |
132 | + financeInvoiceBillOrderVO.setInnerNo(orderBaseInfoInnerMap.get(invoiceBillOrderDO.getOrderId()).getInnerNo()); | |
133 | + financeInvoiceBillOrderVO.setProjectNo(orderBaseInfoInnerMap.get(invoiceBillOrderDO.getOrderId()).getProjectNo()); | |
134 | + } | |
135 | + eventJobVO.setFinanceInvoiceBillOrderVO(financeInvoiceBillOrderVO); | |
102 | 136 | emailSendUtils.sendEmail(FinanceOverEnum.INVOICE_OVERTIME, new ArrayList<>(emailList), eventJobVO); |
103 | 137 | boolean set = redisService.set(redisKey, invoiceBillOrderDO, Constant.HUNDREDANDFIVE, TimeUnit.DAYS);// 设置为105天后过期 |
104 | 138 | if(set){ |
... | ... | @@ -108,8 +142,6 @@ public class FinanceJob { |
108 | 142 | } |
109 | 143 | }); |
110 | 144 | } |
111 | - List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList= eventProducePaymentCheckBillOrderDO.stream().filter(producePaymentCheckBillOrderDO -> producePaymentCheckBillOrderDO.getPayedDate()!=null && Strings.isNotEmpty(producePaymentCheckBillOrderDO.getPayedDate())) | |
112 | - .collect(Collectors.toList()); | |
113 | 145 | if(CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOList)){ |
114 | 146 | producePaymentCheckBillOrderDOList.forEach(producePaymentCheckBillOrderDO -> { |
115 | 147 | if(today.toString().equals(producePaymentCheckBillOrderDO.getPayedDate())){ |
... | ... | @@ -135,7 +167,13 @@ public class FinanceJob { |
135 | 167 | emailList.addAll(emails); |
136 | 168 | } |
137 | 169 | FinanceEventJobVO eventJobVO = new FinanceEventJobVO(); |
138 | - eventJobVO.setProducePaymentCheckBillOrderDO(producePaymentCheckBillOrderDO); | |
170 | + FinanceProducePayCheckBillOrderVO financeProducePayCheckBillOrderVO = new FinanceProducePayCheckBillOrderVO(); | |
171 | + BeanUtil.copyProperties(producePaymentCheckBillOrderDO,financeProducePayCheckBillOrderVO); | |
172 | + if(CollectionUtils.isNotEmpty(orderBaseInfoInnerMap) && orderBaseInfoInnerMap.containsKey(producePaymentCheckBillOrderDO.getOrderId())){ | |
173 | + financeProducePayCheckBillOrderVO.setInnerNo(orderBaseInfoInnerMap.get(producePaymentCheckBillOrderDO.getOrderId()).getInnerNo()); | |
174 | + financeProducePayCheckBillOrderVO.setProjectNo(orderBaseInfoInnerMap.get(producePaymentCheckBillOrderDO.getOrderId()).getProjectNo()); | |
175 | + } | |
176 | + eventJobVO.setFinanceProducePayCheckBillOrderVO(financeProducePayCheckBillOrderVO); | |
139 | 177 | emailSendUtils.sendEmail(FinanceOverEnum.PRODUCE_PAYMENT_CHECK_OVERTIME, new ArrayList<>(emailList), eventJobVO); |
140 | 178 | boolean set = redisService.set(redisKey, producePaymentCheckBillOrderDO, Constant.HUNDREDANDFIVE, TimeUnit.DAYS);// 设置为21天后过期 |
141 | 179 | if(set){ |
... | ... | @@ -183,7 +221,13 @@ public class FinanceJob { |
183 | 221 | twoEmail.addAll(emails); |
184 | 222 | } |
185 | 223 | FinanceEventJobVO eventJobVO = new FinanceEventJobVO(); |
186 | - eventJobVO.setInvoiceBillOrderDO(x); | |
224 | + FinanceInvoiceBillOrderVO financeInvoiceBillOrderVO = new FinanceInvoiceBillOrderVO(); | |
225 | + BeanUtil.copyProperties(x,financeInvoiceBillOrderVO ); | |
226 | + if(CollectionUtils.isNotEmpty(orderBaseInfoInnerMap) && orderBaseInfoInnerMap.containsKey(x.getOrderId())){ | |
227 | + financeInvoiceBillOrderVO.setInnerNo(orderBaseInfoInnerMap.get(x.getOrderId()).getInnerNo()); | |
228 | + financeInvoiceBillOrderVO.setProjectNo(orderBaseInfoInnerMap.get(x.getOrderId()).getProjectNo()); | |
229 | + } | |
230 | + eventJobVO.setFinanceInvoiceBillOrderVO(financeInvoiceBillOrderVO); | |
187 | 231 | emailSendUtils.sendEmail(FinanceOverEnum.INVOICE_OVERTIME, new ArrayList<>(twoEmail), eventJobVO); |
188 | 232 | } |
189 | 233 | }); |
... | ... | @@ -218,7 +262,13 @@ public class FinanceJob { |
218 | 262 | twoEmail.addAll(emails); |
219 | 263 | } |
220 | 264 | FinanceEventJobVO eventJobVO = new FinanceEventJobVO(); |
221 | - eventJobVO.setProducePaymentCheckBillOrderDO(x); | |
265 | + FinanceProducePayCheckBillOrderVO financeProducePayCheckBillOrderVO = new FinanceProducePayCheckBillOrderVO(); | |
266 | + BeanUtil.copyProperties(x,financeProducePayCheckBillOrderVO); | |
267 | + if(CollectionUtils.isNotEmpty(orderBaseInfoInnerMap) && orderBaseInfoInnerMap.containsKey(x.getOrderId())){ | |
268 | + financeProducePayCheckBillOrderVO.setInnerNo(orderBaseInfoInnerMap.get(x.getOrderId()).getInnerNo()); | |
269 | + financeProducePayCheckBillOrderVO.setProjectNo(orderBaseInfoInnerMap.get(x.getOrderId()).getProjectNo()); | |
270 | + } | |
271 | + eventJobVO.setFinanceProducePayCheckBillOrderVO(financeProducePayCheckBillOrderVO); | |
222 | 272 | emailSendUtils.sendEmail(FinanceOverEnum.PRODUCE_PAYMENT_CHECK_OVERTIME, new ArrayList<>(twoEmail), eventJobVO); |
223 | 273 | } |
224 | 274 | }); | ... | ... |
src/main/java/com/order/erp/job/OrderOverTimeEventJob.java
... | ... | @@ -160,13 +160,15 @@ public class OrderOverTimeEventJob { |
160 | 160 | //得到订单的尾期验货日期的邮件配置中的邮箱。 |
161 | 161 | LambdaQueryWrapper<ReceiveEmailMappingDO> receiveEmailMappingDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
162 | 162 | receiveEmailMappingDOLambdaQueryWrapper.eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN); |
163 | - if(!orderEventJob.getBaseInfo().getCustomerCode().contains("-") && !orderEventJob.getBaseInfo().getCustomerCode().contains("——")){ | |
164 | - receiveEmailMappingDOLambdaQueryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, orderEventJob.getBaseInfo().getCustomerCode()) | |
165 | - .last("limit 1"); | |
166 | - }else{ | |
167 | - receiveEmailMappingDOLambdaQueryWrapper.like(ReceiveEmailMappingDO::getTypeValue, orderEventJob.getBaseInfo().getCustomerCode().split("-")[0]) | |
168 | - .last("limit 1"); | |
169 | - } | |
163 | +// if(!orderEventJob.getBaseInfo().getCustomerCode().contains("-") && !orderEventJob.getBaseInfo().getCustomerCode().contains("——")){ | |
164 | +// receiveEmailMappingDOLambdaQueryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, orderEventJob.getBaseInfo().getCustomerCode()) | |
165 | +// .last("limit 1"); | |
166 | +// }else{ | |
167 | +// receiveEmailMappingDOLambdaQueryWrapper.like(ReceiveEmailMappingDO::getTypeValue, orderEventJob.getBaseInfo().getCustomerCode().split("-")[0]) | |
168 | +// .last("limit 1"); | |
169 | +// } | |
170 | + receiveEmailMappingDOLambdaQueryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, orderEventJob.getBaseInfo().getCustomerCode()) | |
171 | + .last("limit 1"); | |
170 | 172 | ReceiveEmailMappingDO receiveEmailMappingDO = receiveEmailMappingService.getOne( receiveEmailMappingDOLambdaQueryWrapper); |
171 | 173 | List<String> emailList = new ArrayList<>(); |
172 | 174 | if (Objects.nonNull(receiveEmailMappingDO)) { | ... | ... |
src/main/java/com/order/erp/mapper/order/InvoiceBillOrderMapper.java
... | ... | @@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
6 | 6 | import com.order.erp.domain.dto.order.InvoiceBillOrderDO; |
7 | 7 | import com.order.erp.domain.vo.order.FinanceOrderResultVO; |
8 | 8 | import com.order.erp.domain.vo.order.InvoiceBillOrderQueryVO; |
9 | +import com.order.erp.domain.vo.order.InvoiceIdAndCheckIdResultVO; | |
9 | 10 | import org.apache.ibatis.annotations.Param; |
10 | 11 | import org.apache.ibatis.annotations.Select; |
11 | 12 | |
... | ... | @@ -23,5 +24,7 @@ List<InvoiceBillOrderDO> getOverEventList(); |
23 | 24 | |
24 | 25 | IPage<FinanceOrderResultVO> byConditionGetOrder(@Param("page") Page<FinanceOrderResultVO> page, @Param("queryVO") InvoiceBillOrderQueryVO queryVO); |
25 | 26 | |
27 | + List<InvoiceIdAndCheckIdResultVO> byQuerygetInvoiceIdAndCheckId(@Param("queryVO") InvoiceBillOrderQueryVO queryVO); | |
28 | + | |
26 | 29 | } |
27 | 30 | ... | ... |
src/main/java/com/order/erp/service/order/InvoiceBillOrderService.java
... | ... | @@ -35,13 +35,13 @@ public interface InvoiceBillOrderService extends IService<InvoiceBillOrderDO> { |
35 | 35 | * @param queryVO |
36 | 36 | * @return |
37 | 37 | */ |
38 | - ServerResult listAnalysisBy(InvoiceBillAnalysisVO queryVO); | |
38 | + ServerResult listAnalysisBy(InvoiceAndCheckAnalysisVO queryVO); | |
39 | 39 | |
40 | 40 | /** |
41 | 41 | * @param queryVO |
42 | 42 | * @return |
43 | 43 | */ |
44 | - ServerResult export(HttpServletResponse response, InvoiceBillAnalysisVO queryVO) throws IOException; | |
44 | + ServerResult export(HttpServletResponse response, InvoiceAndCheckAnalysisVO queryVO) throws IOException; | |
45 | 45 | |
46 | 46 | /** |
47 | 47 | * 新增数据 | ... | ... |
src/main/java/com/order/erp/service/order/ProducePaymentCheckBillOrderService.java
... | ... | @@ -23,7 +23,7 @@ public interface ProducePaymentCheckBillOrderService extends IService<ProducePay |
23 | 23 | * @param queryVO 筛选条件 |
24 | 24 | * @return 查询结果 |
25 | 25 | */ |
26 | - ServerResult listByPage(ProducePaymentCheckBillOrderQueryVO queryVO); | |
26 | +// ServerResult listByPage(ProducePaymentCheckBillOrderQueryVO queryVO); | |
27 | 27 | |
28 | 28 | /** |
29 | 29 | * 基础订单查询 |
... | ... | @@ -36,17 +36,17 @@ public interface ProducePaymentCheckBillOrderService extends IService<ProducePay |
36 | 36 | /** |
37 | 37 | * 分析列表 |
38 | 38 | * |
39 | - * @param analysisVO | |
39 | + * @param queryVO | |
40 | 40 | * @return |
41 | 41 | */ |
42 | - ServerResult listAnalysisBy(ProducePaymentCheckBillOrderQueryVO analysisVO); | |
42 | + ServerResult listAnalysisBy(InvoiceAndCheckAnalysisVO queryVO); | |
43 | 43 | |
44 | 44 | /** |
45 | 45 | * |
46 | - * @param analysisVO | |
46 | + * @param queryVO | |
47 | 47 | * @return |
48 | 48 | */ |
49 | - ServerResult export(HttpServletResponse response, ProducePaymentCheckBillOrderQueryVO analysisVO) throws IOException; | |
49 | + ServerResult export(HttpServletResponse response, InvoiceAndCheckAnalysisVO queryVO) throws IOException; | |
50 | 50 | |
51 | 51 | /** |
52 | 52 | * 创建生产科应付单据 | ... | ... |
src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java
... | ... | @@ -95,7 +95,36 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
95 | 95 | //分页查询既会筛选基本信息也会筛选invoice信息。只能是选通过一边,要么是基本信息这边,要么是invoice这边,然后根据对应invoice或者orderId去查询。 |
96 | 96 | //例如:查询基本信息中项目号为A01-C2409,并且invoice状态为已通过,那么就先去基本信息中查找A01-C2409,然后找到对应的invoice,判断A01-C2409对应的订单集合是否有invoice,有的话,就查找已通过的invocie。 |
97 | 97 | //要是查询invoice为67,并且订单HOD时间小于2024-12-25,那么就先去invoice中查找是否有checkNo为67的订单,然后查找对应orderId,使用orderId去查找对应订单基本信息,查看是否有HOD小于2024-12-25的单子。 |
98 | - | |
98 | + if(StringUtils.isNotEmpty(queryVO.getCreateStartTime())){ | |
99 | + queryVO.setCreateStartTime(queryVO.getCreateStartTime().substring(0,10)+" 00:00:00"); | |
100 | + } | |
101 | + if(StringUtils.isNotEmpty(queryVO.getCreateEndTime())){ | |
102 | + queryVO.setCreateEndTime(queryVO.getCreateEndTime().substring(0,10)+" 23:59:59"); | |
103 | + } | |
104 | + if(StringUtils.isNotEmpty(queryVO.getCheckStartTime())){ | |
105 | + queryVO.setCheckStartTime(queryVO.getCheckStartTime().substring(0,10)+" 00:00:00"); | |
106 | + } | |
107 | + if(StringUtils.isNotEmpty(queryVO.getCheckEndTime())){ | |
108 | + queryVO.setCheckEndTime(queryVO.getCheckEndTime().substring(0,10)+" 23:59:59"); | |
109 | + } | |
110 | + if(StringUtils.isNotEmpty(queryVO.getInvoiceStartTime())){ | |
111 | + queryVO.setInvoiceStartTime(queryVO.getInvoiceStartTime().substring(0,10)+" 00:00:00"); | |
112 | + } | |
113 | + if(StringUtils.isNotEmpty(queryVO.getInvoiceEndTime())){ | |
114 | + queryVO.setInvoiceEndTime(queryVO.getInvoiceEndTime().substring(0,10)+" 23:59:59"); | |
115 | + } | |
116 | + if(StringUtils.isNotEmpty(queryVO.getOrderHodStartTime())){ | |
117 | + queryVO.setOrderHodStartTime(queryVO.getOrderHodStartTime().substring(0,10)+" 00:00:00"); | |
118 | + } | |
119 | + if(StringUtils.isNotEmpty(queryVO.getOrderHodEndTime())){ | |
120 | + queryVO.setOrderHodEndTime(queryVO.getOrderHodEndTime().substring(0,10)+" 23:59:59"); | |
121 | + } | |
122 | + if(StringUtils.isNotEmpty(queryVO.getProductionDepartmentConsignStartTime())){ | |
123 | + queryVO.setProductionDepartmentConsignStartTime(queryVO.getProductionDepartmentConsignStartTime().substring(0,10)+" 00:00:00"); | |
124 | + } | |
125 | + if(StringUtils.isNotEmpty(queryVO.getProductionDepartmentConsignEndTime())){ | |
126 | + queryVO.setProductionDepartmentConsignEndTime(queryVO.getProductionDepartmentConsignEndTime().substring(0,10)+" 23:59:59"); | |
127 | + } | |
99 | 128 | RoleEnum role = dataScope.getRole(); |
100 | 129 | Page<FinanceOrderResultVO> page = new Page<>(queryVO.getPage(), queryVO.getPageSize()); |
101 | 130 | if(Objects.nonNull(role) && role.getId().equals(RoleEnum.TRACKER_USER.getId())) { |
... | ... | @@ -116,7 +145,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
116 | 145 | * @param queryVO |
117 | 146 | * @return |
118 | 147 | */ |
119 | - private LambdaQueryWrapper<InvoiceBillOrderDO> getQueryWrapper(InvoiceBillOrderQueryVO queryVO) { | |
148 | + private LambdaQueryWrapper<InvoiceBillOrderDO> getQueryWrapper(InvoiceAndCheckAnalysisVO queryVO) { | |
120 | 149 | LambdaQueryWrapper<InvoiceBillOrderDO> queryWrapper = new LambdaQueryWrapper<InvoiceBillOrderDO>() |
121 | 150 | .eq(InvoiceBillOrderDO::getEnableFlag, Constant.ENABLE_TEN) |
122 | 151 | /* .eq(StringUtils.isNotBlank(queryVO.getInvoiceNo()), InvoiceBillOrderDO::getInvoiceNo, queryVO.getInvoiceNo()) |
... | ... | @@ -127,7 +156,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
127 | 156 | if (CollectionUtils.isNotEmpty(queryVO.getIds())) { |
128 | 157 | queryWrapper.in(InvoiceBillOrderDO::getId, queryVO.getIds()); |
129 | 158 | } else { |
130 | - Set<Long> billOrderIds = filterBillOrderIdsBy(queryVO); | |
159 | + Set<Long> billOrderIds = filterBillOrderIdsBy(queryVO.getQueryVO()); | |
131 | 160 | queryWrapper.in(CollectionUtils.isNotEmpty(billOrderIds), InvoiceBillOrderDO::getId, billOrderIds); |
132 | 161 | } |
133 | 162 | return queryWrapper; |
... | ... | @@ -175,12 +204,12 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
175 | 204 | } |
176 | 205 | |
177 | 206 | @Override |
178 | - public ServerResult listAnalysisBy(InvoiceBillAnalysisVO queryVO) { | |
207 | + public ServerResult listAnalysisBy(InvoiceAndCheckAnalysisVO queryVO) { | |
179 | 208 | return ServerResult.success(getAnalysisResult(queryVO)); |
180 | 209 | } |
181 | 210 | |
182 | 211 | @Override |
183 | - public ServerResult export(HttpServletResponse response, InvoiceBillAnalysisVO queryVO) throws IOException { | |
212 | + public ServerResult export(HttpServletResponse response, InvoiceAndCheckAnalysisVO queryVO) throws IOException { | |
184 | 213 | // InvoiceBillAnalysisResultVO resultVO = getAnalysisResult(queryVO); |
185 | 214 | //第二版 |
186 | 215 | List<InvoiceBillAnalysisResultVO> resultVO = getAnalysisResult(queryVO); |
... | ... | @@ -315,54 +344,87 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
315 | 344 | * @return |
316 | 345 | */ |
317 | 346 | //第二版 |
318 | - private List<InvoiceBillAnalysisResultVO> getAnalysisResult(InvoiceBillAnalysisVO queryVO) { | |
319 | - LambdaQueryWrapper<InvoiceBillOrderDO> queryWrapper = getQueryWrapper(queryVO); | |
320 | - List<InvoiceBillOrderDO> invoiceBillOrderDOS = list(queryWrapper); | |
321 | - if (CollectionUtils.isEmpty(invoiceBillOrderDOS)) { | |
322 | - return null; | |
347 | + private List<InvoiceBillAnalysisResultVO> getAnalysisResult(InvoiceAndCheckAnalysisVO queryVO) { | |
348 | + | |
349 | + | |
350 | + List<Long> notExistOrderIds = new ArrayList<>(); | |
351 | + List<InvoiceBillOrderDO> invoiceBillOrderDOS = new ArrayList<>(); | |
352 | + //不通过用户点击勾选来获取。 | |
353 | + if(CollectionUtils.isEmpty(queryVO.getOrderIds())){ | |
354 | + | |
355 | + RoleEnum role=dataScope.getRole(); | |
356 | + if(Objects.nonNull(role) && role.getId().equals(RoleEnum.TRACKER_USER.getId())){ | |
357 | + queryVO.getQueryVO().setTrackerUserName(dataScope.getLoginUserName()); | |
358 | + } | |
359 | + if(Objects.nonNull(role) && role.getId().equals(RoleEnum.BUSINESS_USER.getId())){ | |
360 | + queryVO.getQueryVO().setBusinessUserName(dataScope.getLoginUserName()); | |
361 | + } | |
362 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getCreateStartTime())){ | |
363 | + queryVO.getQueryVO().setCreateStartTime(queryVO.getQueryVO().getCreateStartTime().substring(0,10)+" 00:00:00"); | |
364 | + } | |
365 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getCreateEndTime())){ | |
366 | + queryVO.getQueryVO().setCreateEndTime(queryVO.getQueryVO().getCreateEndTime().substring(0,10)+" 23:59:59"); | |
367 | + } | |
368 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getCheckStartTime())){ | |
369 | + queryVO.getQueryVO().setCheckStartTime(queryVO.getQueryVO().getCheckStartTime().substring(0,10)+" 00:00:00"); | |
370 | + } | |
371 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getCheckEndTime())){ | |
372 | + queryVO.getQueryVO().setCheckEndTime(queryVO.getQueryVO().getCheckEndTime().substring(0,10)+" 23:59:59"); | |
373 | + } | |
374 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getInvoiceStartTime())){ | |
375 | + queryVO.getQueryVO().setInvoiceStartTime(queryVO.getQueryVO().getInvoiceStartTime().substring(0,10)+" 00:00:00"); | |
376 | + } | |
377 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getInvoiceEndTime())){ | |
378 | + queryVO.getQueryVO().setInvoiceEndTime(queryVO.getQueryVO().getInvoiceEndTime().substring(0,10)+" 23:59:59"); | |
379 | + } | |
380 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getOrderHodStartTime())){ | |
381 | + queryVO.getQueryVO().setOrderHodStartTime(queryVO.getQueryVO().getOrderHodStartTime().substring(0,10)+" 00:00:00"); | |
382 | + } | |
383 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getOrderHodEndTime())){ | |
384 | + queryVO.getQueryVO().setOrderHodEndTime(queryVO.getQueryVO().getOrderHodEndTime().substring(0,10)+" 23:59:59"); | |
385 | + } | |
386 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getProductionDepartmentConsignStartTime())){ | |
387 | + queryVO.getQueryVO().setProductionDepartmentConsignStartTime(queryVO.getQueryVO().getProductionDepartmentConsignStartTime().substring(0,10)+" 00:00:00"); | |
388 | + } | |
389 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getProductionDepartmentConsignEndTime())){ | |
390 | + queryVO.getQueryVO().setProductionDepartmentConsignEndTime(queryVO.getQueryVO().getProductionDepartmentConsignEndTime().substring(0,10)+" 23:59:59"); | |
391 | + } | |
392 | + Set<Long> existOrderIdSet=new HashSet<>(); | |
393 | + //查询数据 | |
394 | + List<InvoiceIdAndCheckIdResultVO> idResultVOS = baseMapper.byQuerygetInvoiceIdAndCheckId(queryVO.getQueryVO()); | |
395 | + List<Long> invoiceIds = idResultVOS.stream().map(x -> x.getInvoiceId()).filter(Objects::nonNull).collect(Collectors.toList()); | |
396 | + if(CollectionUtils.isEmpty(invoiceIds)){ | |
397 | + throw new BusinessException("未创建invoice单号!"); | |
398 | + } | |
399 | + //对应 | |
400 | + invoiceBillOrderDOS = listByIds(invoiceIds); | |
401 | + List<Long> existOrderIds = invoiceBillOrderDOS.stream().map(x -> x.getOrderId()).collect(Collectors.toList()); | |
402 | + existOrderIdSet.addAll(existOrderIds); | |
403 | + List<Long> orderIdList = idResultVOS.stream().map(x -> x.getOrderId()).collect(Collectors.toList()); | |
404 | + notExistOrderIds = orderIdList.stream() | |
405 | + .filter(orderId -> !existOrderIdSet.contains(orderId)) | |
406 | + .collect(Collectors.toList()); | |
407 | + | |
408 | + }else{ | |
409 | + LambdaQueryWrapper<InvoiceBillOrderDO> queryWrapper = getQueryWrapper(queryVO); | |
410 | + invoiceBillOrderDOS = list(queryWrapper); | |
411 | + if (CollectionUtils.isEmpty(invoiceBillOrderDOS)) { | |
412 | + return null; | |
413 | + } | |
414 | + List<Long> existOrderIds = invoiceBillOrderDOS.stream() | |
415 | + .map(InvoiceBillOrderDO::getOrderId) | |
416 | + .collect(Collectors.toList()); | |
417 | +//得到没有创建invoice订单的orderid。 | |
418 | + notExistOrderIds = queryVO.getOrderIds().stream() | |
419 | + .filter(orderId -> !existOrderIds.contains(orderId)) | |
420 | + .collect(Collectors.toList()); | |
421 | + | |
323 | 422 | } |
423 | + | |
324 | 424 | Map<Long, InvoiceBillOrderDO> invoiceBillOrderDOMap = invoiceBillOrderDOS.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getOrderId, Function.identity(), (x, y) -> x)); |
325 | 425 | List<InvoiceOrderBaseItemVO> itemVOS = getInvoiceOrderBaseItems(invoiceBillOrderDOMap); |
326 | - /* //得到里面的orderId,这个里面的orderId一定是有对应invocie,不然也不会查出来。然后得到前端传来的orderIds,筛选出没有invoice的orderId。 | |
327 | - List<Long> existOrderIds = invoiceBillOrderDOS.stream().map(InvoiceBillOrderDO::getOrderId).collect(Collectors.toList()); | |
328 | - List<Long> notExistOrderIds = queryVO.getOrderIds().stream().filter(x -> !existOrderIds.contains(x)).collect(Collectors.toList()); | |
329 | - //得到没有invoice的orderIds之后,订单信息,查询利润信息。 | |
330 | - List<OrderProfitAnalysisDO> profitAnalysisDOS = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>() | |
331 | - .eq(BaseDO::getEnableFlag,Constant.ENABLE_TEN) | |
332 | - .in(OrderProfitAnalysisDO::getOrderId,notExistOrderIds)); | |
333 | - List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(notExistOrderIds); | |
334 | - //根据客户编码进行分类,计算形同客户编码的利润信息,然后累加。 | |
335 | - Map<String, List<OrderBaseInfoDO>> groupedByCustomerCode = orderBaseInfoDOList.stream() | |
336 | - .collect(Collectors.groupingBy(OrderBaseInfoDO::getCustomerCode)); | |
337 | - //得到客户编码相同的利润信息。 计算客户编码相同的利润信息的总和。 需要遍历这个map集合,然后把每一次值中的id集合收集起来,每一次遍历代表不同的客户编码。然后得到对应利润信息。 | |
338 | - HashMap<String, BigDecimal> hashMap = new HashMap<>(); | |
339 | - for(Map.Entry<String, List<OrderBaseInfoDO>> entry: groupedByCustomerCode.entrySet()){ | |
340 | - List<OrderBaseInfoDO> entryValue = entry.getValue(); | |
341 | - List<Long> orderids = entryValue.stream().map(OrderBaseInfoDO::getId).collect(Collectors.toList()); | |
342 | - List<OrderProfitAnalysisDO> orderProfitAnalysisDOS = profitAnalysisService.list(new LambdaQueryWrapper<OrderProfitAnalysisDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
343 | - .in(OrderProfitAnalysisDO::getOrderId, orderids)); | |
344 | - BigDecimal totalCustomerPrice = orderProfitAnalysisDOS.stream() | |
345 | - .map(OrderProfitAnalysisDO::getCustomerTotalPrice) // 提取每个元素的 customerTotalPrice(double 类型) | |
346 | - .filter(Objects::nonNull) // 过滤掉 null 值 | |
347 | - .map(BigDecimal::valueOf) // 转换为 BigDecimal 类型 | |
348 | - .reduce(BigDecimal.ZERO, BigDecimal::add); | |
349 | - // 累加,其中key为客户编码。 | |
350 | - hashMap.put(entry.getKey(),totalCustomerPrice); | |
351 | - }*/ | |
352 | - | |
353 | - List<Long> existOrderIds = invoiceBillOrderDOS.stream() | |
354 | - .map(InvoiceBillOrderDO::getOrderId) | |
355 | - .collect(Collectors.toList()); | |
426 | + //获取invoice中对应的orderid。 | |
356 | 427 | |
357 | - List<Long> notExistOrderIds = queryVO.getOrderId().stream() | |
358 | - .filter(orderId -> !existOrderIds.contains(orderId)) | |
359 | - .collect(Collectors.toList()); | |
360 | - | |
361 | -// 查询没有 invoice 的订单信息和利润信息 | |
362 | - /* List<OrderProfitAnalysisDO> profitAnalysisDOS = profitAnalysisService.list( | |
363 | - new LambdaQueryWrapper<OrderProfitAnalysisDO>() | |
364 | - .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
365 | - .in(OrderProfitAnalysisDO::getOrderId, notExistOrderIds));*/ | |
366 | 428 | Map<String, BigDecimal> customerProfitMap=null; |
367 | 429 | if(CollectionUtils.isNotEmpty(notExistOrderIds)) { |
368 | 430 | |
... | ... | @@ -1265,6 +1327,8 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
1265 | 1327 | List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().map(order -> { |
1266 | 1328 | //这里要删除对应invoiceNo号,但是为了删除后产生空指针异常,所以定义为"N/N"; |
1267 | 1329 | order.setInvoiceNo("N/N"); |
1330 | + //设置状态为-1,未创建。 | |
1331 | + order.setInvoiceStatus(FinanceEnum.NOT_CREATED.getStatus()); | |
1268 | 1332 | return order; |
1269 | 1333 | }).collect(Collectors.toList()); |
1270 | 1334 | transactionHelper.run(() -> { |
... | ... | @@ -1354,13 +1418,17 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
1354 | 1418 | //第二行 |
1355 | 1419 | Row row2 = sheet.createRow(3); |
1356 | 1420 | Cell cell2 = row2.createCell(0); |
1357 | - cell2.setCellValue("提交人:"); | |
1421 | + cell2.setCellValue("提交人:"+queryVO.getFinancePerson()); | |
1358 | 1422 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 1)); |
1359 | 1423 | Cell cell3 = row2.createCell(2); |
1360 | 1424 | cell3.setCellValue(""); |
1361 | 1425 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 7)); |
1362 | 1426 | Cell cell4 = row2.createCell(8); |
1363 | - cell4.setCellValue("日期:"); | |
1427 | + if(StringUtils.isNotBlank(queryVO.getActualRefundDate())){ | |
1428 | + cell4.setCellValue("日期:"+queryVO.getActualRefundDate()); | |
1429 | + }else{ | |
1430 | + cell4.setCellValue("日期:"); | |
1431 | + } | |
1364 | 1432 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 8, 9)); |
1365 | 1433 | //第三行 |
1366 | 1434 | createMergedCell(sheet, workbook, 5, 0, 5, 6, 0, 1, "INVOICE编号"); | ... | ... |
src/main/java/com/order/erp/service/order/impl/OrderBaseInfoServiceImpl.java
... | ... | @@ -1503,7 +1503,16 @@ end |
1503 | 1503 | // queryVO.setOrderIds(collect); |
1504 | 1504 | // } |
1505 | 1505 | // } |
1506 | - | |
1506 | + if(StringUtils.isNotBlank(queryVO.getCreateEndTime())){ | |
1507 | + //要是传递为2024-01-31,不进行处理,他其实没有查询31号这天数据,会默认补00:00:00,就是三十一号的凌晨。 | |
1508 | + queryVO.setCreateEndTime(queryVO.getCreateEndTime().substring(0,10)+" 23:59:59"); | |
1509 | + } | |
1510 | + if(StringUtils.isNotBlank(queryVO.getOrderHodEndTime())){ | |
1511 | + queryVO.setOrderHodEndTime(queryVO.getOrderHodEndTime().substring(0,10)+" 23:59:59"); | |
1512 | + } | |
1513 | + if(StringUtils.isNotBlank(queryVO.getProductionDepartmentConsignEndTime())){ | |
1514 | + queryVO.setProductionDepartmentConsignEndTime(queryVO.getProductionDepartmentConsignEndTime().substring(0,10)+" 23:59:59"); | |
1515 | + } | |
1507 | 1516 | return new LambdaQueryWrapper<OrderBaseInfoDO>() |
1508 | 1517 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
1509 | 1518 | .in(CollectionUtils.isNotEmpty(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode()) |
... | ... | @@ -1753,15 +1762,23 @@ end |
1753 | 1762 | orderOpinionLogDOList.add(orderOpinionLogDO); |
1754 | 1763 | } |
1755 | 1764 | String date = currentMonth + "/" + dayOfMonth; |
1765 | + //旧的 | |
1756 | 1766 | String productionComment = orderBaseInfoDo.getProductionComment(); |
1757 | 1767 | StringBuilder stringBuilder = new StringBuilder(productionComment); |
1758 | 1768 | String[] newProductionComment = updateVO.getBaseInfo().getProductionComment().split("\n"); |
1759 | 1769 | //对于四个结果,并且当前输入产品意见文字小于上一次的产品意见后续填写不需要换行。 |
1760 | 1770 | if((!newProductionComment[newProductionComment.length - 1].trim().contains("确认通过") && |
1761 | 1771 | !newProductionComment[newProductionComment.length - 1].trim().contains("确认未通过")) && updateVO.getBaseInfo().getProductionComment().length() > orderBaseInfoDo.getProductionComment().length()){ |
1762 | - stringBuilder.append("\n").append(date + ": " + newProductionComment[newProductionComment.length - 1].trim()); | |
1763 | - updateVO.getBaseInfo().setProductionComment(stringBuilder.toString()); | |
1764 | - sendProductionCommentEmail(orderBaseInfoDo, stringBuilder.toString()); | |
1772 | + String extra=updateVO.getBaseInfo().getProductionComment().substring(productionComment.length()); | |
1773 | + //当新填写的产品意见是以句号开始,就不换行。 | |
1774 | + if(extra.substring(0,2).contains("。")){ | |
1775 | + sendProductionCommentEmail(orderBaseInfoDo,updateVO.getBaseInfo().getProductionComment()); | |
1776 | + }else{ | |
1777 | + //其他情况就需要换行 | |
1778 | + stringBuilder.append("\n").append(date + ": " + newProductionComment[newProductionComment.length - 1].trim()); | |
1779 | + updateVO.getBaseInfo().setProductionComment(stringBuilder.toString()); | |
1780 | + sendProductionCommentEmail(orderBaseInfoDo, stringBuilder.toString()); | |
1781 | + } | |
1765 | 1782 | }else{ |
1766 | 1783 | sendProductionCommentEmail(orderBaseInfoDo,updateVO.getBaseInfo().getProductionComment()); |
1767 | 1784 | } |
... | ... | @@ -2528,13 +2545,15 @@ end |
2528 | 2545 | orderEventJobVO.getBaseInfo().setProductionDepartmentConsignTime(ProductionDepartmentConsignTime); |
2529 | 2546 | LambdaQueryWrapper<ReceiveEmailMappingDO> receiveEmailMappingDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
2530 | 2547 | receiveEmailMappingDOLambdaQueryWrapper.eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN); |
2531 | - if(!orderBaseInfoDO.getCustomerCode().contains("-") && !orderBaseInfoDO.getCustomerCode().contains("——")){ | |
2532 | - receiveEmailMappingDOLambdaQueryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, orderBaseInfoDO.getCustomerCode()) | |
2548 | +// if(!orderBaseInfoDO.getCustomerCode().contains("-") && !orderBaseInfoDO.getCustomerCode().contains("——")){ | |
2549 | +// receiveEmailMappingDOLambdaQueryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, orderBaseInfoDO.getCustomerCode()) | |
2550 | +// .last("limit 1"); | |
2551 | +// }else{ | |
2552 | +// receiveEmailMappingDOLambdaQueryWrapper.like(ReceiveEmailMappingDO::getTypeValue,orderBaseInfoDO.getCustomerCode().split("-")[0]) | |
2553 | +// .last("limit 1"); | |
2554 | +// } | |
2555 | + receiveEmailMappingDOLambdaQueryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, orderBaseInfoDO.getCustomerCode()) | |
2533 | 2556 | .last("limit 1"); |
2534 | - }else{ | |
2535 | - receiveEmailMappingDOLambdaQueryWrapper.like(ReceiveEmailMappingDO::getTypeValue,orderBaseInfoDO.getCustomerCode().split("-")[0]) | |
2536 | - .last("limit 1"); | |
2537 | - } | |
2538 | 2557 | ReceiveEmailMappingDO receiveEmailMappingDO = receiveEmailMappingService.getOne( receiveEmailMappingDOLambdaQueryWrapper); |
2539 | 2558 | //得到所有的质检员。由于删除了角色,但是用户角色表中的信息没有删除,所以不能直接通过用户角色表拿角色,然后发邮件,需校验。 |
2540 | 2559 | List<AdminUserRoleDO> UserRoleList = adminUserRoleService.list(new LambdaQueryWrapper<AdminUserRoleDO>() |
... | ... | @@ -2582,13 +2601,16 @@ end |
2582 | 2601 | orderEventJobVO.getBaseInfo().setProductionDepartmentConsignTime(ProductionDepartmentConsignTime); |
2583 | 2602 | LambdaQueryWrapper<ReceiveEmailMappingDO> receiveEmailMappingDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
2584 | 2603 | receiveEmailMappingDOLambdaQueryWrapper.eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN); |
2585 | - if(!orderBaseInfoDO.getCustomerCode().contains("-") && !orderBaseInfoDO.getCustomerCode().contains("——")){ | |
2604 | + //不再采用匹配类似的客户编码对应的邮箱,而是直接全部精准匹配,所以需要要求在配置邮箱时需要全部都配置。不再采用A05-low会批匹配上A05。 | |
2605 | +/* if(!orderBaseInfoDO.getCustomerCode().contains("-") && !orderBaseInfoDO.getCustomerCode().contains("——")){ | |
2586 | 2606 | receiveEmailMappingDOLambdaQueryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, orderBaseInfoDO.getCustomerCode()) |
2587 | 2607 | .last("limit 1"); |
2588 | 2608 | }else{ |
2589 | 2609 | receiveEmailMappingDOLambdaQueryWrapper.like(ReceiveEmailMappingDO::getTypeValue,orderBaseInfoDO.getCustomerCode().split("-")[0]) |
2590 | 2610 | .last("limit 1"); |
2591 | - } | |
2611 | + }*/ | |
2612 | + receiveEmailMappingDOLambdaQueryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, orderBaseInfoDO.getCustomerCode()) | |
2613 | + .last("limit 1"); | |
2592 | 2614 | ReceiveEmailMappingDO receiveEmailMappingDO = receiveEmailMappingService.getOne( receiveEmailMappingDOLambdaQueryWrapper); |
2593 | 2615 | //得到所有的质检员。由于删除了角色,但是用户角色表中的信息没有删除,所以不能直接通过用户角色表拿角色,然后发邮件,需校验。 |
2594 | 2616 | List<AdminUserRoleDO> UserRoleList = adminUserRoleService.list(new LambdaQueryWrapper<AdminUserRoleDO>() | ... | ... |
src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
... | ... | @@ -188,12 +188,12 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
188 | 188 | } |
189 | 189 | }//这里结束 上述为待审核列表中应收款要显示内部编码。 //这部分不需要了。 |
190 | 190 | //这部分的目的是,对于跟单员和业务员他们也能查看到应收款和应付款中各自负责订单的审核情况。 而财务和admin则会执行else{},会看到所有的审核订单信息。 |
191 | - if (RoleEnum.BUSINESS_USER.getCode().equals(roleEnum.getCode())) { | |
192 | - if ((Objects.nonNull(orderLockFieldVO.getProducePaymentCheckBillFieldVO()) && orderLockFieldVO.getProducePaymentCheckBillFieldVO().getBusinesPerson().equals(loginUserName)) || (Objects.nonNull(orderLockFieldVO.getCheckBillOrderDO()) && orderLockFieldVO.getCheckBillOrderDO().getBusinesPerson().equals(loginUserName))) { | |
191 | + if(RoleEnum.BUSINESS_USER.getCode().equals(roleEnum.getCode())){ | |
192 | + if((Objects.nonNull(orderLockFieldVO.getProducePaymentCheckBillFieldVO()) && orderLockFieldVO.getProducePaymentCheckBillFieldVO().getBusinesPerson().equals(loginUserName))||(Objects.nonNull(orderLockFieldVO.getCheckBillVO()) && orderLockFieldVO.getCheckBillVO().getBusinesPerson().equals(loginUserName))){ | |
193 | 193 | resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class)); |
194 | 194 | } |
195 | 195 | } else if (RoleEnum.TRACKER_USER.getCode().equals(roleEnum.getCode())) { |
196 | - if ((Objects.nonNull(orderLockFieldVO.getProducePaymentCheckBillFieldVO()) && orderLockFieldVO.getProducePaymentCheckBillFieldVO().getTrackerUser().equals(loginUserName)) || (Objects.nonNull(orderLockFieldVO.getCheckBillOrderDO()) && orderLockFieldVO.getCheckBillOrderDO().getTrackerUser().equals(loginUserName))) { | |
196 | + if((Objects.nonNull(orderLockFieldVO.getProducePaymentCheckBillFieldVO()) && orderLockFieldVO.getProducePaymentCheckBillFieldVO().getTrackerUser().equals(loginUserName))||(Objects.nonNull(orderLockFieldVO.getCheckBillVO()) && orderLockFieldVO.getCheckBillVO().getTrackerUser().equals(loginUserName))){ | |
197 | 197 | resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class)); |
198 | 198 | } |
199 | 199 | } else { |
... | ... | @@ -427,7 +427,10 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
427 | 427 | if (CollectionUtils.isNotEmpty(queryVO.getInnerNo())) { |
428 | 428 | String queryInnerNo = queryVO.getInnerNo().get(0).trim(); |
429 | 429 | queryWrapper.apply( |
430 | - "JSON_CONTAINS(JSON_EXTRACT(fields, '$.producePaymentCheckBillFieldVO.innerNo'), JSON_QUOTE({0}))", | |
430 | + "(" + | |
431 | + "JSON_CONTAINS(JSON_EXTRACT(fields, '$.producePaymentCheckBillFieldVO.innerNo'), JSON_QUOTE({0})) " + | |
432 | + "OR JSON_UNQUOTE(JSON_EXTRACT(fields, '$.checkBillVO.innerNo')) = {0}" + | |
433 | + ")", | |
431 | 434 | queryInnerNo |
432 | 435 | ); |
433 | 436 | } |
... | ... | @@ -471,7 +474,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
471 | 474 | // 使用括号分组确保逻辑优先级正确 |
472 | 475 | queryWrapper.apply( |
473 | 476 | "((JSON_UNQUOTE(JSON_EXTRACT(fields, '$.producePaymentCheckBillFieldVO.checkNo')) = {0}) " + |
474 | - "OR (JSON_UNQUOTE(JSON_EXTRACT(fields, '$.checkBillOrderDO.checkNo')) = {0}))", | |
477 | + "OR (JSON_UNQUOTE(JSON_EXTRACT(fields, '$.checkBillVO.checkNo')) = {0}))", | |
475 | 478 | checkNos |
476 | 479 | ); |
477 | 480 | } |
... | ... | @@ -617,9 +620,9 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
617 | 620 | |
618 | 621 | } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { |
619 | 622 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
620 | - ProducePaymentCheckBillOrderDO checkBillOrderDO = lockFieldVO.getCheckBillOrderDO(); | |
621 | - | |
623 | + ProducePaymentCheckBillVO checkBillOrderDO = lockFieldVO.getCheckBillVO(); | |
622 | 624 | |
625 | + //得到旧的。 | |
623 | 626 | ProducePaymentCheckBillOrderDO invoiceInfoDO = checkBillOrderService.getById(checkBillOrderDO.getId()); |
624 | 627 | invoiceInfoDO.setDepartmentInvoiceStatus(ApplyStatusEnum.AUDIT_REFUSE.getStatus()); |
625 | 628 | //传递给审核一直都是最新的发票。 |
... | ... | @@ -816,7 +819,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
816 | 819 | applyDO.setAuditUserId(auditUserId); |
817 | 820 | applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); |
818 | 821 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
819 | - ProducePaymentCheckBillOrderDO checkBillOrderDO = lockFieldVO.getCheckBillOrderDO(); | |
822 | + ProducePaymentCheckBillVO checkBillOrderDO = lockFieldVO.getCheckBillVO(); | |
820 | 823 | //查询旧的。 |
821 | 824 | ProducePaymentCheckBillOrderDO invoiceInfoDO = checkBillOrderService.getById(checkBillOrderDO.getId()); |
822 | 825 | invoiceInfoDO.setDepartmentInvoiceStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); | ... | ... |
src/main/java/com/order/erp/service/order/impl/OrderProfitAnalysisServiceImpl.java
... | ... | @@ -200,6 +200,26 @@ public class OrderProfitAnalysisServiceImpl extends ServiceImpl<OrderProfitAnaly |
200 | 200 | |
201 | 201 | @Override |
202 | 202 | public ServerResult<OrderProfitAnalysisVO> analysisByQueryVO(OrderProfitAnalysisVo profitAnalysisVo) { |
203 | + //在分析利润时,这里传递的时间参数为年月日时分秒,会过滤掉当天部分参数。所以截取。 | |
204 | + if(StringUtils.isNotEmpty(profitAnalysisVo.getQueryVO().getCreateStartTime()) && profitAnalysisVo.getQueryVO().getCreateStartTime().length() > 10){ | |
205 | + profitAnalysisVo.getQueryVO().setCreateStartTime(profitAnalysisVo.getQueryVO().getCreateStartTime().substring(0,10)); | |
206 | + } | |
207 | + //对于结束时间,要是截取后,就位00:00:00,你就忽略了当天的最后一天数据,所以需要拼接上23:59:59来得到当天的参数。 | |
208 | + if(StringUtils.isNotEmpty(profitAnalysisVo.getQueryVO().getCreateEndTime()) && profitAnalysisVo.getQueryVO().getCreateEndTime().length() >= 10){ | |
209 | + profitAnalysisVo.getQueryVO().setCreateEndTime(profitAnalysisVo.getQueryVO().getCreateEndTime().substring(0,10)+" 23:59:59"); | |
210 | + } | |
211 | + if(StringUtils.isNotEmpty(profitAnalysisVo.getQueryVO().getOrderHodEndTime()) && profitAnalysisVo.getQueryVO().getOrderHodEndTime().length()>=10 ){ | |
212 | + profitAnalysisVo.getQueryVO().setOrderHodEndTime(profitAnalysisVo.getQueryVO().getOrderHodEndTime().substring(0,10)+" 23:59:59"); | |
213 | + } | |
214 | + if(StringUtils.isNotEmpty(profitAnalysisVo.getQueryVO().getOrderHodStartTime()) && profitAnalysisVo.getQueryVO().getOrderHodStartTime().length()>10){ | |
215 | + profitAnalysisVo.getQueryVO().setOrderHodStartTime(profitAnalysisVo.getQueryVO().getOrderHodStartTime().substring(0,10)); | |
216 | + } | |
217 | + if(StringUtils.isNotEmpty(profitAnalysisVo.getQueryVO().getProductionDepartmentConsignEndTime()) && profitAnalysisVo.getQueryVO().getProductionDepartmentConsignEndTime().length()>=10){ | |
218 | + profitAnalysisVo.getQueryVO().setProductionDepartmentConsignEndTime(profitAnalysisVo.getQueryVO().getProductionDepartmentConsignEndTime().substring(0,10)+" 23:59:59"); | |
219 | + } | |
220 | + if(StringUtils.isNotEmpty(profitAnalysisVo.getQueryVO().getProductionDepartmentConsignStartTime()) && profitAnalysisVo.getQueryVO().getProductionDepartmentConsignStartTime().length()>10){ | |
221 | + profitAnalysisVo.getQueryVO().setProductionDepartmentConsignStartTime(profitAnalysisVo.getQueryVO().getProductionDepartmentConsignStartTime().substring(0,10)); | |
222 | + } | |
203 | 223 | LambdaQueryWrapper<OrderBaseInfoDO> queryWrapper = orderBaseInfoService.buildQueryByParam(profitAnalysisVo.getQueryVO()); |
204 | 224 | List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.list(queryWrapper); |
205 | 225 | if (CollectionUtils.isEmpty(orderBaseInfoDOList)) { | ... | ... |
src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java
... | ... | @@ -26,6 +26,7 @@ import com.order.erp.domain.dto.BaseDO; |
26 | 26 | import com.order.erp.domain.dto.SystemSettingDO; |
27 | 27 | import com.order.erp.domain.dto.order.*; |
28 | 28 | import com.order.erp.domain.vo.order.*; |
29 | +import com.order.erp.mapper.order.InvoiceBillOrderMapper; | |
29 | 30 | import com.order.erp.mapper.order.ProducePaymentCheckBillOrderMapper; |
30 | 31 | import com.order.erp.service.SystemSettingService; |
31 | 32 | import com.order.erp.service.order.*; |
... | ... | @@ -78,6 +79,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
78 | 79 | |
79 | 80 | @Resource |
80 | 81 | private TransactionHelper transactionHelper; |
82 | + @Resource | |
83 | + private InvoiceBillOrderMapper invoiceBillOrderMapper; | |
81 | 84 | |
82 | 85 | |
83 | 86 | /** |
... | ... | @@ -86,8 +89,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
86 | 89 | * @param queryVO 筛选条件 |
87 | 90 | * @return 查询结果 |
88 | 91 | */ |
89 | - @Override | |
90 | - public ServerResult listByPage(ProducePaymentCheckBillOrderQueryVO queryVO) { | |
92 | + | |
93 | + /* public ServerResult listByPage(ProducePaymentCheckBillOrderQueryVO queryVO) { | |
91 | 94 | RoleEnum role = dataScope.getRole(); |
92 | 95 | LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> queryWrapper = getQueryWrapper(queryVO); |
93 | 96 | //生产科,生产科只能看到属于自己的订单。 |
... | ... | @@ -104,7 +107,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
104 | 107 | Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize()); |
105 | 108 | IPage<ProducePaymentCheckBillOrderDO> iPage = page(page, queryWrapper); |
106 | 109 | return ServerResult.success(iPage); |
107 | - } | |
110 | + }*/ | |
108 | 111 | |
109 | 112 | @Override |
110 | 113 | public ServerResult listBaseOrderInfoBy(ProducePaymentBaseOrderQueryVO queryVO) { |
... | ... | @@ -145,7 +148,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
145 | 148 | } |
146 | 149 | |
147 | 150 | @Override |
148 | - public ServerResult listAnalysisBy(ProducePaymentCheckBillOrderQueryVO queryVO) { | |
151 | + public ServerResult listAnalysisBy(InvoiceAndCheckAnalysisVO queryVO) { | |
149 | 152 | return ServerResult.success(getAnalysisResult(queryVO)); |
150 | 153 | } |
151 | 154 | |
... | ... | @@ -156,25 +159,76 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
156 | 159 | |
157 | 160 | // private CheckBillAnalysisResultVO getAnalysisResult(ProducePaymentCheckBillOrderQueryVO queryVO) { |
158 | 161 | //第二版开始。 |
159 | - private List<CheckBillAnalysisResultVO> getAnalysisResult(ProducePaymentCheckBillOrderQueryVO queryVO) { | |
160 | - //第二版截止。 | |
161 | - LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> queryWrapper = getQueryWrapper(queryVO); | |
162 | - List<ProducePaymentCheckBillOrderDO> checkBillOrderDOS = list(queryWrapper); | |
163 | - if (CollectionUtils.isEmpty(checkBillOrderDOS)) { | |
164 | - return null; | |
165 | - } | |
166 | - /* Set<Long> ids = checkBillOrderDOS.stream().map(ProducePaymentCheckBillOrderDO::getId).collect(Collectors.toSet()); | |
167 | - List<CheckBillMappingDO> checkBillMappingDOS = checkBillMappingService.list(new LambdaQueryWrapper<CheckBillMappingDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN).in(CheckBillMappingDO::getCheckBillId, ids)); | |
168 | - if (CollectionUtils.isEmpty(checkBillMappingDOS)) { | |
169 | - return null; | |
170 | - }*/ | |
162 | + private List<CheckBillAnalysisResultVO> getAnalysisResult(InvoiceAndCheckAnalysisVO queryVO) { | |
163 | + List<ProducePaymentCheckBillOrderDO> checkBillOrderDOS = new ArrayList<>(); | |
164 | + List<Long> notExistOrderIds = new ArrayList<>(); | |
165 | + if(CollectionUtils.isEmpty(queryVO.getOrderIds())){ | |
166 | + RoleEnum role=dataScope.getRole(); | |
167 | + if(Objects.nonNull(role) && role.getId().equals(RoleEnum.TRACKER_USER.getId())){ | |
168 | + queryVO.getQueryVO().setTrackerUserName(dataScope.getLoginUserName()); | |
169 | + } | |
170 | + if(Objects.nonNull(role) && role.getId().equals(RoleEnum.BUSINESS_USER.getId())){ | |
171 | + queryVO.getQueryVO().setBusinessUserName(dataScope.getLoginUserName()); | |
172 | + } | |
173 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getCreateStartTime())){ | |
174 | + queryVO.getQueryVO().setCreateStartTime(queryVO.getQueryVO().getCreateStartTime().substring(0,10)+" 00:00:00"); | |
175 | + } | |
176 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getCreateEndTime())){ | |
177 | + queryVO.getQueryVO().setCreateEndTime(queryVO.getQueryVO().getCreateEndTime().substring(0,10)+" 23:59:59"); | |
178 | + } | |
179 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getCheckStartTime())){ | |
180 | + queryVO.getQueryVO().setCheckStartTime(queryVO.getQueryVO().getCheckStartTime().substring(0,10)+" 00:00:00"); | |
181 | + } | |
182 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getCheckEndTime())){ | |
183 | + queryVO.getQueryVO().setCheckEndTime(queryVO.getQueryVO().getCheckEndTime().substring(0,10)+" 23:59:59"); | |
184 | + } | |
185 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getInvoiceStartTime())){ | |
186 | + queryVO.getQueryVO().setInvoiceStartTime(queryVO.getQueryVO().getInvoiceStartTime().substring(0,10)+" 00:00:00"); | |
187 | + } | |
188 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getInvoiceEndTime())){ | |
189 | + queryVO.getQueryVO().setInvoiceEndTime(queryVO.getQueryVO().getInvoiceEndTime().substring(0,10)+" 23:59:59"); | |
190 | + } | |
191 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getOrderHodStartTime())){ | |
192 | + queryVO.getQueryVO().setOrderHodStartTime(queryVO.getQueryVO().getOrderHodStartTime().substring(0,10)+" 00:00:00"); | |
193 | + } | |
194 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getOrderHodEndTime())){ | |
195 | + queryVO.getQueryVO().setOrderHodEndTime(queryVO.getQueryVO().getOrderHodEndTime().substring(0,10)+" 23:59:59"); | |
196 | + } | |
197 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getProductionDepartmentConsignStartTime())){ | |
198 | + queryVO.getQueryVO().setProductionDepartmentConsignStartTime(queryVO.getQueryVO().getProductionDepartmentConsignStartTime().substring(0,10)+" 00:00:00"); | |
199 | + } | |
200 | + if(StringUtils.isNotEmpty(queryVO.getQueryVO().getProductionDepartmentConsignEndTime())){ | |
201 | + queryVO.getQueryVO().setProductionDepartmentConsignEndTime(queryVO.getQueryVO().getProductionDepartmentConsignEndTime().substring(0,10)+" 23:59:59"); | |
202 | + } | |
203 | + Set<Long> existOrderIdSet=new HashSet<>(); | |
204 | + //查询数据 | |
205 | + List<InvoiceIdAndCheckIdResultVO> idResultVOS = invoiceBillOrderMapper.byQuerygetInvoiceIdAndCheckId(queryVO.getQueryVO()); | |
206 | + List<Long> checkIds = idResultVOS.stream().map(x -> x.getCheckId()).filter(Objects::nonNull).collect(Collectors.toList()); | |
207 | + if(CollectionUtils.isEmpty(checkIds)){ | |
208 | + throw new BusinessException("未创建生产科对账单!"); | |
209 | + } | |
210 | + checkBillOrderDOS = listByIds(checkIds); | |
211 | + List<Long> existOrderIds = checkBillOrderDOS.stream().map(x -> x.getOrderId()).collect(Collectors.toList()); | |
212 | + existOrderIdSet.addAll(existOrderIds); | |
213 | + List<Long> orderIdList = idResultVOS.stream().map(x -> x.getOrderId()).collect(Collectors.toList()); | |
214 | + notExistOrderIds = orderIdList.stream() | |
215 | + .filter(orderId -> !existOrderIdSet.contains(orderId)) | |
216 | + .collect(Collectors.toList()); | |
217 | + }else{ | |
218 | + LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> queryWrapper = getQueryWrapper(queryVO); | |
219 | + checkBillOrderDOS = list(queryWrapper); | |
220 | + if (CollectionUtils.isEmpty(checkBillOrderDOS)) { | |
221 | + return null; | |
222 | + } | |
223 | + List<Long> existOrderIds = checkBillOrderDOS.stream().map(ProducePaymentCheckBillOrderDO::getOrderId).collect(Collectors.toList()); | |
224 | + notExistOrderIds = queryVO.getOrderIds().stream().filter(orderId -> !existOrderIds.contains(orderId)) | |
225 | + .collect(Collectors.toList()); | |
226 | + | |
227 | + } | |
171 | 228 | Map<Long, ProducePaymentCheckBillOrderDO> orderBillMap = checkBillOrderDOS.stream().collect(Collectors.toMap(ProducePaymentCheckBillOrderDO::getOrderId, Function.identity(), (x, y) -> x)); |
172 | 229 | // Map<Long, CheckBillMappingDO> orderBillMap = checkBillMappingDOS.stream().collect(Collectors.toMap(CheckBillMappingDO::getOrderId, Function.identity(), (x, y) -> x)); |
173 | - | |
174 | 230 | List<CheckOrderBaseItemVO> itemVOS = getCheckOrderBaseItems(orderBillMap); |
175 | - List<Long> existOrderIds = checkBillOrderDOS.stream().map(ProducePaymentCheckBillOrderDO::getOrderId).collect(Collectors.toList()); | |
176 | - List<Long> notExistOrderIds = queryVO.getOrderIds().stream().filter(orderId -> !existOrderIds.contains(orderId)) | |
177 | - .collect(Collectors.toList()); | |
231 | + | |
178 | 232 | Map<String, BigDecimal> productionDepartmentProfitMap=null; |
179 | 233 | if(CollectionUtils.isNotEmpty(notExistOrderIds)){ |
180 | 234 | List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(notExistOrderIds); |
... | ... | @@ -406,7 +460,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
406 | 460 | |
407 | 461 | |
408 | 462 | @Override |
409 | - public ServerResult export(HttpServletResponse response, ProducePaymentCheckBillOrderQueryVO queryVO) throws IOException { | |
463 | + public ServerResult export(HttpServletResponse response, InvoiceAndCheckAnalysisVO queryVO) throws IOException { | |
410 | 464 | // CheckBillAnalysisResultVO resultVO = getAnalysisResult(queryVO); |
411 | 465 | //第二版开始 |
412 | 466 | List<CheckBillAnalysisResultVO> resultVO = getAnalysisResult(queryVO); |
... | ... | @@ -524,7 +578,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
524 | 578 | * @param queryVO |
525 | 579 | * @return |
526 | 580 | */ |
527 | - private LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> getQueryWrapper(ProducePaymentCheckBillOrderQueryVO queryVO) { | |
581 | + private LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> getQueryWrapper(InvoiceAndCheckAnalysisVO queryVO) { | |
528 | 582 | LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> queryWrapper = new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>() |
529 | 583 | .eq(ProducePaymentCheckBillOrderDO::getEnableFlag, Constant.ENABLE_TEN) |
530 | 584 | /*.eq(StringUtils.isNotBlank(queryVO.getCheckNo()), ProducePaymentCheckBillOrderDO::getCheckNo, queryVO.getCheckNo()) |
... | ... | @@ -535,8 +589,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
535 | 589 | if (CollectionUtils.isNotEmpty(queryVO.getIds())) { |
536 | 590 | queryWrapper.in(ProducePaymentCheckBillOrderDO::getId, queryVO.getIds()); |
537 | 591 | } else { |
538 | - Set<Long> billOrderIds = filterBillOrderIdsBy(queryVO); | |
539 | - queryWrapper.in(CollectionUtils.isNotEmpty(billOrderIds), ProducePaymentCheckBillOrderDO::getId, billOrderIds); | |
592 | + /* Set<Long> billOrderIds = filterBillOrderIdsBy(queryVO.getQueryVO()); | |
593 | + queryWrapper.in(CollectionUtils.isNotEmpty(billOrderIds), ProducePaymentCheckBillOrderDO::getId, billOrderIds);*/ | |
540 | 594 | } |
541 | 595 | return queryWrapper; |
542 | 596 | } |
... | ... | @@ -927,20 +981,25 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
927 | 981 | if(StringUtils.isBlank(invoiceInfoVO.getInvoiceUrl())){ |
928 | 982 | return ServerResult.success(); |
929 | 983 | } |
984 | + OrderBaseInfoDO orderBaseInfoDO = orderBaseInfoService.getById(checkBillOrderDO.getOrderId()); | |
930 | 985 | //校验是否有处于待审核的发票。 |
931 | 986 | checkCommitApply(id); |
932 | 987 | //校验是否有处于待审核的订单。 todo |
933 | 988 | checkApply(new ArrayList<>(Arrays.asList(id))); |
934 | 989 | OrderLockFieldVO locakFieldVO = new OrderLockFieldVO(); |
935 | - | |
990 | + ProducePaymentCheckBillVO producePaymentCheckBillVO = new ProducePaymentCheckBillVO(); | |
936 | 991 | //事务:待审核,设置为admin和财务才有权限审批。 |
937 | 992 | transactionHelper.run(() -> { |
938 | 993 | checkBillOrderDO.setDepartmentInvoiceStatus(ApplyStatusEnum.WAIT_AUDIT.getStatus()); |
939 | 994 | updateById(checkBillOrderDO); |
940 | 995 | //不保存,仅仅只是做一个审核,千万不要保存。目的是传递给审核的是最新的发票,审核通过才保存,不通过则不保存。 |
941 | 996 | checkBillOrderDO.setInvoiceUrl(invoiceInfoVO.getInvoiceUrl()); |
997 | + //复制到producePaymentCheckBillVO。 | |
998 | + BeanUtils.copyProperties(checkBillOrderDO,producePaymentCheckBillVO); | |
999 | + producePaymentCheckBillVO.setInnerNo(orderBaseInfoDO.getInnerNo()); | |
942 | 1000 | //上述不保存,上述仅仅只是让审批时获取最新的一个审批发票记录。 |
943 | - locakFieldVO.setCheckBillOrderDO(checkBillOrderDO); | |
1001 | +// locakFieldVO.setCheckBillOrderDO(checkBillOrderDO); | |
1002 | + locakFieldVO.setCheckBillVO(producePaymentCheckBillVO); | |
944 | 1003 | OrderFieldLockApplyDO applyDO = OrderFieldLockApplyDO.builder() |
945 | 1004 | .applyUserId(loginUserId) |
946 | 1005 | .auditUserId(null) |
... | ... | @@ -1153,6 +1212,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
1153 | 1212 | List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().map(order -> { |
1154 | 1213 | //这里要删除对应invoiceNo号,但是为了删除后产生空指针异常,所以定义为"N/N"; |
1155 | 1214 | order.setCheckNo("N/N"); |
1215 | + //设置状态为-1,未创建。 | |
1216 | + order.setCheckStatus(FinanceEnum.NOT_CREATED.getStatus()); | |
1156 | 1217 | return order; |
1157 | 1218 | }).collect(Collectors.toList()); |
1158 | 1219 | transactionHelper.run(() -> { |
... | ... | @@ -1287,13 +1348,17 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
1287 | 1348 | //第二行 |
1288 | 1349 | Row row2 = sheet.createRow(3); |
1289 | 1350 | Cell cell2 = row2.createCell(0); |
1290 | - cell2.setCellValue("提交人:"); | |
1351 | + cell2.setCellValue("提交人:"+queryVO.getFinancePerson()); | |
1291 | 1352 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 1)); |
1292 | 1353 | Cell cell3 = row2.createCell(2); |
1293 | 1354 | cell3.setCellValue(""); |
1294 | 1355 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 7)); |
1295 | 1356 | Cell cell4 = row2.createCell(8); |
1296 | - cell4.setCellValue("日期:"); | |
1357 | + if(StringUtils.isNotBlank(queryVO.getActualPayedDate())){ | |
1358 | + cell4.setCellValue("日期:"+queryVO.getActualPayedDate()); | |
1359 | + }else{ | |
1360 | + cell4.setCellValue("日期:"); | |
1361 | + } | |
1297 | 1362 | sheet.addMergedRegion(new CellRangeAddress(3, 4, 8, 9)); |
1298 | 1363 | //第三行 |
1299 | 1364 | createMergedCell(sheet, workbook, 5, 0, 5, 6, 0, 1, "生产科对账单号"); | ... | ... |
src/main/resources/mapper/InvoiceBillOrderMapper.xml
... | ... | @@ -161,34 +161,34 @@ |
161 | 161 | AND o.customer_po = #{queryVO.customerPo} |
162 | 162 | </if> |
163 | 163 | <if test="queryVO.invoiceStartTime != null"> |
164 | - AND DATE(i.create_time) >= LEFT(#{queryVO.invoiceStartTime}, 10) | |
164 | + AND i.create_time >= #{queryVO.invoiceStartTime} | |
165 | 165 | </if> |
166 | 166 | <if test="queryVO.invoiceEndTime != null"> |
167 | - AND DATE(i.create_time) <= LEFT(#{queryVO.invoiceEndTime}, 10) | |
167 | + AND i.create_time <= #{queryVO.invoiceEndTime} | |
168 | 168 | </if> |
169 | 169 | <if test="queryVO.checkStartTime != null "> |
170 | - AND DATE(p.create_time) >= LEFT(#{queryVO.checkStartTime}, 10) | |
170 | + AND p.create_time >= #{queryVO.checkStartTime} | |
171 | 171 | </if> |
172 | 172 | <if test="queryVO.checkEndTime != null"> |
173 | - AND DATE(p.create_time) <= LEFT(#{queryVO.checkEndTime}, 10) | |
173 | + AND p.create_time <= #{queryVO.checkEndTime} | |
174 | 174 | </if> |
175 | 175 | <if test="queryVO.createStartTime !=null"> |
176 | - AND DATE(o.create_time) >= LEFT(#{queryVO.createStartTime}, 10) | |
176 | + AND o.create_time >= #{queryVO.createStartTime} | |
177 | 177 | </if> |
178 | 178 | <if test="queryVO.createEndTime != null"> |
179 | - AND DATE(o.create_time) <= LEFT(#{queryVO.createEndTime}, 10) | |
179 | + AND o.create_time <= #{queryVO.createEndTime} | |
180 | 180 | </if> |
181 | 181 | <if test="queryVO.productionDepartmentConsignStartTime != null "> |
182 | - AND DATE(o.production_department_consign_time) >= LEFT(#{queryVO.productionDepartmentConsignStartTime} , 10) | |
182 | + AND o.production_department_consign_time >= #{queryVO.productionDepartmentConsignStartTime} | |
183 | 183 | </if> |
184 | 184 | <if test="queryVO.productionDepartmentConsignEndTime != null"> |
185 | - AND DATE(o.production_department_consign_time) <= LEFT(#{queryVO.productionDepartmentConsignEndTime} , 10) | |
185 | + AND o.production_department_consign_time <= #{queryVO.productionDepartmentConsignEndTime} | |
186 | 186 | </if> |
187 | 187 | <if test="queryVO.orderHodStartTime != null "> |
188 | - AND DATE(o.order_hod_time) >= LEFT(#{queryVO.orderHodStartTime} , 10) | |
188 | + AND o.order_hod_time >= #{queryVO.orderHodStartTime} | |
189 | 189 | </if> |
190 | 190 | <if test="queryVO.orderHodEndTime != null"> |
191 | - AND DATE(o.order_hod_time) <= LEFT(#{queryVO.orderHodEndTime} , 10) | |
191 | + AND o.order_hod_time <= #{queryVO.orderHodEndTime} | |
192 | 192 | </if> |
193 | 193 | <if test="queryVO.trackerUserName != null and queryVO.trackerUserName != ''"> |
194 | 194 | AND o.create_by = #{queryVO.trackerUserName} |
... | ... | @@ -199,4 +199,97 @@ |
199 | 199 | ORDER BY o.id DESC |
200 | 200 | |
201 | 201 | </select> |
202 | + | |
203 | + | |
204 | + <select id="byQuerygetInvoiceIdAndCheckId" parameterType="com.order.erp.domain.vo.order.InvoiceBillOrderQueryVO" resultType="com.order.erp.domain.vo.order.InvoiceIdAndCheckIdResultVO"> | |
205 | + SELECT | |
206 | + o.id AS orderId, | |
207 | + p.id AS checkId, | |
208 | + i.id AS invoiceId | |
209 | + FROM order_base_info o | |
210 | + LEFT JOIN invoice_bill_order AS i | |
211 | + ON o.id = i.order_id AND i.enable_flag = 10 | |
212 | + LEFT JOIN produce_payment_check_bill_order AS p | |
213 | + ON o.id = p.order_id AND p.enable_flag = 10 | |
214 | + LEFT JOIN order_profit_analysis AS a | |
215 | + ON o.id = a.order_id AND a.enable_flag = 10 | |
216 | + WHERE o.enable_flag = 10 | |
217 | + <if test="queryVO.invoiceNo != null and queryVO.invoiceNo != ''"> | |
218 | + AND i.invoice_no = #{queryVO.invoiceNo} | |
219 | + </if> | |
220 | + <if test="queryVO.checkNo != null and queryVO.checkNo != ''"> | |
221 | + AND p.check_no = #{queryVO.checkNo} | |
222 | + </if> | |
223 | + <if test="queryVO.invoiceStatus != null"> | |
224 | + AND o.invoice_status = #{queryVO.invoiceStatus} | |
225 | + </if> | |
226 | + <if test="queryVO.checkNoStatus != null"> | |
227 | + AND o.check_status = #{queryVO.checkNoStatus} | |
228 | + </if> | |
229 | + <if test="queryVO.customerCode != null and queryVO.customerCode.size > 0 "> | |
230 | + AND o.customer_code IN | |
231 | + <foreach collection="queryVO.customerCode" item="customerCode" open="(" separator="," close=")"> | |
232 | + #{customerCode} | |
233 | + </foreach> | |
234 | + </if> | |
235 | + <if test="queryVO.projectNo != null and queryVO.projectNo.size > 0 "> | |
236 | + AND o.project_no IN | |
237 | + <foreach collection="queryVO.projectNo" item="projectNo" open="(" separator="," close=")"> | |
238 | + #{projectNo} | |
239 | + </foreach> | |
240 | + </if> | |
241 | + <if test="queryVO.productionDepartment != null and queryVO.productionDepartment.size > 0 "> | |
242 | + AND o.production_department IN | |
243 | + <foreach collection="queryVO.productionDepartment" item="productionDepartment" open="(" separator="," close=")"> | |
244 | + #{productionDepartment} | |
245 | + </foreach> | |
246 | + </if> | |
247 | + <if test="queryVO.innerNo != null and queryVO.innerNo.size > 0 "> | |
248 | + AND o.inner_no IN | |
249 | + <foreach collection="queryVO.innerNo" item="innerNo" open="(" separator="," close=")"> | |
250 | + #{innerNo} | |
251 | + </foreach> | |
252 | + </if> | |
253 | + <if test="queryVO.customerPo != null and queryVO.customerPo != ''"> | |
254 | + AND o.customer_po = #{queryVO.customerPo} | |
255 | + </if> | |
256 | + <if test="queryVO.invoiceStartTime != null"> | |
257 | + AND i.create_time >= #{queryVO.invoiceStartTime} | |
258 | + </if> | |
259 | + <if test="queryVO.invoiceEndTime != null"> | |
260 | + AND i.create_time <= #{queryVO.invoiceEndTime} | |
261 | + </if> | |
262 | + <if test="queryVO.checkStartTime != null "> | |
263 | + AND p.create_time >= #{queryVO.checkStartTime} | |
264 | + </if> | |
265 | + <if test="queryVO.checkEndTime != null"> | |
266 | + AND p.create_time <= #{queryVO.checkEndTime} | |
267 | + </if> | |
268 | + <if test="queryVO.createStartTime !=null"> | |
269 | + AND o.create_time >= #{queryVO.createStartTime} | |
270 | + </if> | |
271 | + <if test="queryVO.createEndTime != null"> | |
272 | + AND o.create_time <= #{queryVO.createEndTime} | |
273 | + </if> | |
274 | + <if test="queryVO.productionDepartmentConsignStartTime != null "> | |
275 | + AND o.production_department_consign_time >= #{queryVO.productionDepartmentConsignStartTime} | |
276 | + </if> | |
277 | + <if test="queryVO.productionDepartmentConsignEndTime != null"> | |
278 | + AND o.production_department_consign_time <= #{queryVO.productionDepartmentConsignEndTime} | |
279 | + </if> | |
280 | + <if test="queryVO.orderHodStartTime != null "> | |
281 | + AND o.order_hod_time >= #{queryVO.orderHodStartTime} | |
282 | + </if> | |
283 | + <if test="queryVO.orderHodEndTime != null"> | |
284 | + AND o.order_hod_time <= #{queryVO.orderHodEndTime} | |
285 | + </if> | |
286 | + <if test="queryVO.trackerUserName != null and queryVO.trackerUserName != ''"> | |
287 | + AND o.create_by = #{queryVO.trackerUserName} | |
288 | + </if> | |
289 | + <if test="queryVO.businessUserName != null and queryVO.businessUserName != ''"> | |
290 | + AND o.business_person = #{queryVO.businessUserName} | |
291 | + </if> | |
292 | + | |
293 | + </select> | |
294 | + | |
202 | 295 | </mapper> | ... | ... |