Commit 5f29093894d339aba74136b86d7ee2bb6a2931c1

Authored by 曾国涛
2 parents e878b011 b39798e6

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,4 +340,8 @@ public class Constant {
340 340
341 public static final String FINANCE_EVENT_TIME = "请自行去系统中查询!"; 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,10 +21,7 @@ import javax.mail.internet.MimeMessage;
21 import java.io.File; 21 import java.io.File;
22 import java.io.IOException; 22 import java.io.IOException;
23 import java.io.StringWriter; 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 * @Author:ch 27 * @Author:ch
@@ -55,7 +52,7 @@ public class EmailSendUtils { @@ -55,7 +52,7 @@ public class EmailSendUtils {
55 MimeMessage mimeMessage = javaMailSender.createMimeMessage(); 52 MimeMessage mimeMessage = javaMailSender.createMimeMessage();
56 MimeMessageHelper helper= null; 53 MimeMessageHelper helper= null;
57 Map<String, Object> map = new HashMap<>(); 54 Map<String, Object> map = new HashMap<>();
58 - map.put("context",emailTemplateEnum.getContent()); 55 + map.put("context",emailTemplateEnum.getContent()+orderEventJobVO.getBaseInfo().getProjectNo());
59 map.put("title",emailTemplateEnum.getTitle()); 56 map.put("title",emailTemplateEnum.getTitle());
60 map.put("data",orderEventJobVO); 57 map.put("data",orderEventJobVO);
61 Template template = null; 58 Template template = null;
@@ -136,11 +133,44 @@ public class EmailSendUtils { @@ -136,11 +133,44 @@ public class EmailSendUtils {
136 helper.setFrom(sendEmail); 133 helper.setFrom(sendEmail);
137 helper.setTo(receiveemailListArray); 134 helper.setTo(receiveemailListArray);
138 helper.setSentDate(new Date()); 135 helper.setSentDate(new Date());
  136 + // 构建邮件内容(HTML 格式)
  137 + StringBuilder emailContent = new StringBuilder();
  138 + emailContent.append("<html><body>");
  139 +
139 if(FinanceOverEnum.INVOICE_OVERTIME==emailTemplateEnum){ 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 }else if(FinanceOverEnum.PRODUCE_PAYMENT_CHECK_OVERTIME==emailTemplateEnum){ 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 } catch ( MessagingException e) { 174 } catch ( MessagingException e) {
145 throw new RuntimeException("邮件发送失败!", e); 175 throw new RuntimeException("邮件发送失败!", e);
146 } 176 }
src/main/java/com/order/erp/controller/IndexController.java
@@ -68,15 +68,15 @@ public class IndexController { @@ -68,15 +68,15 @@ public class IndexController {
68 long orderRecentYearCount = orderBaseInfoService.countRecentYear(); 68 long orderRecentYearCount = orderBaseInfoService.countRecentYear();
69 69
70 IndexDataVO indexDataVo = new IndexDataVO(); 70 IndexDataVO indexDataVo = new IndexDataVO();
71 - indexDataVo.setOrderFinishedCount(orderTotalFinished); 71 + indexDataVo.setOrderFinishedCount(orderTotalFinished); //订单完成。
72 indexDataVo.setOrderRecentMonthFinishedCount(orderRecentMonthFinished); 72 indexDataVo.setOrderRecentMonthFinishedCount(orderRecentMonthFinished);
73 - indexDataVo.setOrderInspectingCount(inspecting); 73 + indexDataVo.setOrderInspectingCount(inspecting); //跟单和质检中。
74 indexDataVo.setOrderRecentMonthInspectingCount(recentMonthInspecting); 74 indexDataVo.setOrderRecentMonthInspectingCount(recentMonthInspecting);
75 - indexDataVo.setOrderProfitWaitAuditCount(orderProfitWaitAudit); 75 + indexDataVo.setOrderProfitWaitAuditCount(orderProfitWaitAudit); //利润分析表待审核。
76 indexDataVo.setOrderRecentWeekProfitWaitAuditCount(orderRecentWeekProfitWaitAudit); 76 indexDataVo.setOrderRecentWeekProfitWaitAuditCount(orderRecentWeekProfitWaitAudit);
77 - indexDataVo.setOrderReportWaitAuditCount(orderReport); 77 + indexDataVo.setOrderReportWaitAuditCount(orderReport); //项目报告书待审核。
78 indexDataVo.setOrderReportRecentYearWaitAuditCount(orderYearReport); 78 indexDataVo.setOrderReportRecentYearWaitAuditCount(orderYearReport);
79 - indexDataVo.setOrderCount(orderCount); 79 + indexDataVo.setOrderCount(orderCount); //订单初始化。
80 indexDataVo.setOrderRecentYearCount(orderRecentYearCount); 80 indexDataVo.setOrderRecentYearCount(orderRecentYearCount);
81 81
82 return ServerResult.success(indexDataVo); 82 return ServerResult.success(indexDataVo);
src/main/java/com/order/erp/controller/InvoiceBillOrderController.java
@@ -62,7 +62,7 @@ public class InvoiceBillOrderController { @@ -62,7 +62,7 @@ public class InvoiceBillOrderController {
62 * @return 查询结果 62 * @return 查询结果
63 */ 63 */
64 @PostMapping("/list_analysis_by") 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 return invoiceBillOrderService.listAnalysisBy(queryVO); 66 return invoiceBillOrderService.listAnalysisBy(queryVO);
67 } 67 }
68 68
@@ -75,7 +75,7 @@ public class InvoiceBillOrderController { @@ -75,7 +75,7 @@ public class InvoiceBillOrderController {
75 @PostMapping(value = "/export") 75 @PostMapping(value = "/export")
76 @ApiOperation("导出分析列表") 76 @ApiOperation("导出分析列表")
77 @AnonymousAccess 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 invoiceBillOrderService.export(response, queryVO); 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,10 +39,10 @@ public class ProducePaymentCheckBillOrderController {
39 * @param queryVO 查询条件 39 * @param queryVO 查询条件
40 * @return 查询结果 40 * @return 查询结果
41 */ 41 */
42 - @PostMapping("/list_by_page") 42 + /*@PostMapping("/list_by_page")
43 public ServerResult listByPage(@RequestBody @Validated({OperateGroup.List.class}) ProducePaymentCheckBillOrderQueryVO queryVO) { 43 public ServerResult listByPage(@RequestBody @Validated({OperateGroup.List.class}) ProducePaymentCheckBillOrderQueryVO queryVO) {
44 return producePaymentCheckBillOrderService.listByPage(queryVO); 44 return producePaymentCheckBillOrderService.listByPage(queryVO);
45 - } 45 + }*/
46 46
47 /** 47 /**
48 * 基础订单查询 wanchen 48 * 基础订单查询 wanchen
@@ -62,7 +62,7 @@ public class ProducePaymentCheckBillOrderController { @@ -62,7 +62,7 @@ public class ProducePaymentCheckBillOrderController {
62 * @return 查询结果 62 * @return 查询结果
63 */ 63 */
64 @PostMapping("/list_analysis_by") 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 return producePaymentCheckBillOrderService.listAnalysisBy(queryVO); 66 return producePaymentCheckBillOrderService.listAnalysisBy(queryVO);
67 } 67 }
68 68
@@ -75,7 +75,7 @@ public class ProducePaymentCheckBillOrderController { @@ -75,7 +75,7 @@ public class ProducePaymentCheckBillOrderController {
75 @PostMapping(value = "/export") 75 @PostMapping(value = "/export")
76 @ApiOperation("导出分析列表") 76 @ApiOperation("导出分析列表")
77 @AnonymousAccess 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 producePaymentCheckBillOrderService.export(response, queryVO); 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,27 +13,27 @@ import lombok.Getter;
13 @AllArgsConstructor 13 @AllArgsConstructor
14 public enum EmailTemplateEnum { 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 PRODUCE_INDICATE_REPORT("生产指示书","你好,请查收附件生产订单",10L), 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,8 +6,8 @@ import lombok.Getter;
6 @Getter 6 @Getter
7 @AllArgsConstructor 7 @AllArgsConstructor
8 public enum FinanceOverEnum { 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 private String title; 13 private String title;
src/main/java/com/order/erp/domain/vo/order/FinanceEventJobVO.java
@@ -14,7 +14,7 @@ import lombok.experimental.SuperBuilder; @@ -14,7 +14,7 @@ import lombok.experimental.SuperBuilder;
14 public class FinanceEventJobVO { 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,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 private ProducePaymentCheckBillFieldVO producePaymentCheckBillFieldVO; 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 package com.order.erp.job; 1 package com.order.erp.job;
2 2
  3 +import cn.hutool.core.bean.BeanUtil;
3 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; 4 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
4 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; 5 import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
5 import com.order.erp.common.constant.Constant; 6 import com.order.erp.common.constant.Constant;
@@ -12,11 +13,15 @@ import com.order.erp.domain.dto.BaseDO; @@ -12,11 +13,15 @@ import com.order.erp.domain.dto.BaseDO;
12 import com.order.erp.domain.dto.admin.AdminUserDO; 13 import com.order.erp.domain.dto.admin.AdminUserDO;
13 import com.order.erp.domain.dto.admin.AdminUserRoleDO; 14 import com.order.erp.domain.dto.admin.AdminUserRoleDO;
14 import com.order.erp.domain.dto.order.InvoiceBillOrderDO; 15 import com.order.erp.domain.dto.order.InvoiceBillOrderDO;
  16 +import com.order.erp.domain.dto.order.OrderBaseInfoDO;
15 import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; 17 import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO;
16 import com.order.erp.domain.vo.order.FinanceEventJobVO; 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 import com.order.erp.service.admin.AdminUserRoleService; 21 import com.order.erp.service.admin.AdminUserRoleService;
18 import com.order.erp.service.admin.AdminUserService; 22 import com.order.erp.service.admin.AdminUserService;
19 import com.order.erp.service.order.InvoiceBillOrderService; 23 import com.order.erp.service.order.InvoiceBillOrderService;
  24 +import com.order.erp.service.order.OrderBaseInfoService;
20 import com.order.erp.service.order.ProducePaymentCheckBillOrderService; 25 import com.order.erp.service.order.ProducePaymentCheckBillOrderService;
21 import lombok.extern.slf4j.Slf4j; 26 import lombok.extern.slf4j.Slf4j;
22 import org.apache.logging.log4j.util.Strings; 27 import org.apache.logging.log4j.util.Strings;
@@ -28,6 +33,7 @@ import java.time.LocalDate; @@ -28,6 +33,7 @@ import java.time.LocalDate;
28 import java.util.*; 33 import java.util.*;
29 import java.util.concurrent.TimeUnit; 34 import java.util.concurrent.TimeUnit;
30 import java.util.stream.Collectors; 35 import java.util.stream.Collectors;
  36 +import java.util.stream.Stream;
31 37
32 @Slf4j 38 @Slf4j
33 @Component 39 @Component
@@ -44,8 +50,10 @@ public class FinanceJob { @@ -44,8 +50,10 @@ public class FinanceJob {
44 private AdminUserService adminUserService; 50 private AdminUserService adminUserService;
45 @Resource 51 @Resource
46 private RedisUtils redisService; 52 private RedisUtils redisService;
  53 + @Resource
  54 + private OrderBaseInfoService orderBaseInfoService;
47 //每天的7:15执行一次 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 // @Scheduled(cron = "0 * * * * ?", zone = "Asia/Shanghai") 59 // @Scheduled(cron = "0 * * * * ?", zone = "Asia/Shanghai")
@@ -55,6 +63,26 @@ public class FinanceJob { @@ -55,6 +63,26 @@ public class FinanceJob {
55 LocalDate today = LocalDate.now(); 63 LocalDate today = LocalDate.now();
56 List<InvoiceBillOrderDO> invoiceBillOrderDOList = eventInvoiceBillOrderDO.stream().filter(invoice -> invoice.getBackRefundDate() != null && Strings.isNotEmpty(invoice.getBackRefundDate())) 64 List<InvoiceBillOrderDO> invoiceBillOrderDOList = eventInvoiceBillOrderDO.stream().filter(invoice -> invoice.getBackRefundDate() != null && Strings.isNotEmpty(invoice.getBackRefundDate()))
57 .collect(Collectors.toList()); 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 Set<String> emailList= new HashSet<>(); 86 Set<String> emailList= new HashSet<>();
59 Set<String> twoEmail = new HashSet<>(); 87 Set<String> twoEmail = new HashSet<>();
60 //获取所有用户。 88 //获取所有用户。
@@ -98,7 +126,13 @@ public class FinanceJob { @@ -98,7 +126,13 @@ public class FinanceJob {
98 emailList.addAll(emails); 126 emailList.addAll(emails);
99 } 127 }
100 FinanceEventJobVO eventJobVO = new FinanceEventJobVO(); 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 emailSendUtils.sendEmail(FinanceOverEnum.INVOICE_OVERTIME, new ArrayList<>(emailList), eventJobVO); 136 emailSendUtils.sendEmail(FinanceOverEnum.INVOICE_OVERTIME, new ArrayList<>(emailList), eventJobVO);
103 boolean set = redisService.set(redisKey, invoiceBillOrderDO, Constant.HUNDREDANDFIVE, TimeUnit.DAYS);// 设置为105天后过期 137 boolean set = redisService.set(redisKey, invoiceBillOrderDO, Constant.HUNDREDANDFIVE, TimeUnit.DAYS);// 设置为105天后过期
104 if(set){ 138 if(set){
@@ -108,8 +142,6 @@ public class FinanceJob { @@ -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 if(CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOList)){ 145 if(CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOList)){
114 producePaymentCheckBillOrderDOList.forEach(producePaymentCheckBillOrderDO -> { 146 producePaymentCheckBillOrderDOList.forEach(producePaymentCheckBillOrderDO -> {
115 if(today.toString().equals(producePaymentCheckBillOrderDO.getPayedDate())){ 147 if(today.toString().equals(producePaymentCheckBillOrderDO.getPayedDate())){
@@ -135,7 +167,13 @@ public class FinanceJob { @@ -135,7 +167,13 @@ public class FinanceJob {
135 emailList.addAll(emails); 167 emailList.addAll(emails);
136 } 168 }
137 FinanceEventJobVO eventJobVO = new FinanceEventJobVO(); 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 emailSendUtils.sendEmail(FinanceOverEnum.PRODUCE_PAYMENT_CHECK_OVERTIME, new ArrayList<>(emailList), eventJobVO); 177 emailSendUtils.sendEmail(FinanceOverEnum.PRODUCE_PAYMENT_CHECK_OVERTIME, new ArrayList<>(emailList), eventJobVO);
140 boolean set = redisService.set(redisKey, producePaymentCheckBillOrderDO, Constant.HUNDREDANDFIVE, TimeUnit.DAYS);// 设置为21天后过期 178 boolean set = redisService.set(redisKey, producePaymentCheckBillOrderDO, Constant.HUNDREDANDFIVE, TimeUnit.DAYS);// 设置为21天后过期
141 if(set){ 179 if(set){
@@ -183,7 +221,13 @@ public class FinanceJob { @@ -183,7 +221,13 @@ public class FinanceJob {
183 twoEmail.addAll(emails); 221 twoEmail.addAll(emails);
184 } 222 }
185 FinanceEventJobVO eventJobVO = new FinanceEventJobVO(); 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 emailSendUtils.sendEmail(FinanceOverEnum.INVOICE_OVERTIME, new ArrayList<>(twoEmail), eventJobVO); 231 emailSendUtils.sendEmail(FinanceOverEnum.INVOICE_OVERTIME, new ArrayList<>(twoEmail), eventJobVO);
188 } 232 }
189 }); 233 });
@@ -218,7 +262,13 @@ public class FinanceJob { @@ -218,7 +262,13 @@ public class FinanceJob {
218 twoEmail.addAll(emails); 262 twoEmail.addAll(emails);
219 } 263 }
220 FinanceEventJobVO eventJobVO = new FinanceEventJobVO(); 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 emailSendUtils.sendEmail(FinanceOverEnum.PRODUCE_PAYMENT_CHECK_OVERTIME, new ArrayList<>(twoEmail), eventJobVO); 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,13 +160,15 @@ public class OrderOverTimeEventJob {
160 //得到订单的尾期验货日期的邮件配置中的邮箱。 160 //得到订单的尾期验货日期的邮件配置中的邮箱。
161 LambdaQueryWrapper<ReceiveEmailMappingDO> receiveEmailMappingDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); 161 LambdaQueryWrapper<ReceiveEmailMappingDO> receiveEmailMappingDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
162 receiveEmailMappingDOLambdaQueryWrapper.eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN); 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 ReceiveEmailMappingDO receiveEmailMappingDO = receiveEmailMappingService.getOne( receiveEmailMappingDOLambdaQueryWrapper); 172 ReceiveEmailMappingDO receiveEmailMappingDO = receiveEmailMappingService.getOne( receiveEmailMappingDOLambdaQueryWrapper);
171 List<String> emailList = new ArrayList<>(); 173 List<String> emailList = new ArrayList<>();
172 if (Objects.nonNull(receiveEmailMappingDO)) { 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 +6,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
6 import com.order.erp.domain.dto.order.InvoiceBillOrderDO; 6 import com.order.erp.domain.dto.order.InvoiceBillOrderDO;
7 import com.order.erp.domain.vo.order.FinanceOrderResultVO; 7 import com.order.erp.domain.vo.order.FinanceOrderResultVO;
8 import com.order.erp.domain.vo.order.InvoiceBillOrderQueryVO; 8 import com.order.erp.domain.vo.order.InvoiceBillOrderQueryVO;
  9 +import com.order.erp.domain.vo.order.InvoiceIdAndCheckIdResultVO;
9 import org.apache.ibatis.annotations.Param; 10 import org.apache.ibatis.annotations.Param;
10 import org.apache.ibatis.annotations.Select; 11 import org.apache.ibatis.annotations.Select;
11 12
@@ -23,5 +24,7 @@ List&lt;InvoiceBillOrderDO&gt; getOverEventList(); @@ -23,5 +24,7 @@ List&lt;InvoiceBillOrderDO&gt; getOverEventList();
23 24
24 IPage<FinanceOrderResultVO> byConditionGetOrder(@Param("page") Page<FinanceOrderResultVO> page, @Param("queryVO") InvoiceBillOrderQueryVO queryVO); 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&lt;InvoiceBillOrderDO&gt; { @@ -35,13 +35,13 @@ public interface InvoiceBillOrderService extends IService&lt;InvoiceBillOrderDO&gt; {
35 * @param queryVO 35 * @param queryVO
36 * @return 36 * @return
37 */ 37 */
38 - ServerResult listAnalysisBy(InvoiceBillAnalysisVO queryVO); 38 + ServerResult listAnalysisBy(InvoiceAndCheckAnalysisVO queryVO);
39 39
40 /** 40 /**
41 * @param queryVO 41 * @param queryVO
42 * @return 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&lt;ProducePay @@ -23,7 +23,7 @@ public interface ProducePaymentCheckBillOrderService extends IService&lt;ProducePay
23 * @param queryVO 筛选条件 23 * @param queryVO 筛选条件
24 * @return 查询结果 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&lt;ProducePay @@ -36,17 +36,17 @@ public interface ProducePaymentCheckBillOrderService extends IService&lt;ProducePay
36 /** 36 /**
37 * 分析列表 37 * 分析列表
38 * 38 *
39 - * @param analysisVO 39 + * @param queryVO
40 * @return 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 * @return 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&lt;InvoiceBillOrderMap @@ -95,7 +95,36 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
95 //分页查询既会筛选基本信息也会筛选invoice信息。只能是选通过一边,要么是基本信息这边,要么是invoice这边,然后根据对应invoice或者orderId去查询。 95 //分页查询既会筛选基本信息也会筛选invoice信息。只能是选通过一边,要么是基本信息这边,要么是invoice这边,然后根据对应invoice或者orderId去查询。
96 //例如:查询基本信息中项目号为A01-C2409,并且invoice状态为已通过,那么就先去基本信息中查找A01-C2409,然后找到对应的invoice,判断A01-C2409对应的订单集合是否有invoice,有的话,就查找已通过的invocie。 96 //例如:查询基本信息中项目号为A01-C2409,并且invoice状态为已通过,那么就先去基本信息中查找A01-C2409,然后找到对应的invoice,判断A01-C2409对应的订单集合是否有invoice,有的话,就查找已通过的invocie。
97 //要是查询invoice为67,并且订单HOD时间小于2024-12-25,那么就先去invoice中查找是否有checkNo为67的订单,然后查找对应orderId,使用orderId去查找对应订单基本信息,查看是否有HOD小于2024-12-25的单子。 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 RoleEnum role = dataScope.getRole(); 128 RoleEnum role = dataScope.getRole();
100 Page<FinanceOrderResultVO> page = new Page<>(queryVO.getPage(), queryVO.getPageSize()); 129 Page<FinanceOrderResultVO> page = new Page<>(queryVO.getPage(), queryVO.getPageSize());
101 if(Objects.nonNull(role) && role.getId().equals(RoleEnum.TRACKER_USER.getId())) { 130 if(Objects.nonNull(role) && role.getId().equals(RoleEnum.TRACKER_USER.getId())) {
@@ -116,7 +145,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap @@ -116,7 +145,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
116 * @param queryVO 145 * @param queryVO
117 * @return 146 * @return
118 */ 147 */
119 - private LambdaQueryWrapper<InvoiceBillOrderDO> getQueryWrapper(InvoiceBillOrderQueryVO queryVO) { 148 + private LambdaQueryWrapper<InvoiceBillOrderDO> getQueryWrapper(InvoiceAndCheckAnalysisVO queryVO) {
120 LambdaQueryWrapper<InvoiceBillOrderDO> queryWrapper = new LambdaQueryWrapper<InvoiceBillOrderDO>() 149 LambdaQueryWrapper<InvoiceBillOrderDO> queryWrapper = new LambdaQueryWrapper<InvoiceBillOrderDO>()
121 .eq(InvoiceBillOrderDO::getEnableFlag, Constant.ENABLE_TEN) 150 .eq(InvoiceBillOrderDO::getEnableFlag, Constant.ENABLE_TEN)
122 /* .eq(StringUtils.isNotBlank(queryVO.getInvoiceNo()), InvoiceBillOrderDO::getInvoiceNo, queryVO.getInvoiceNo()) 151 /* .eq(StringUtils.isNotBlank(queryVO.getInvoiceNo()), InvoiceBillOrderDO::getInvoiceNo, queryVO.getInvoiceNo())
@@ -127,7 +156,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap @@ -127,7 +156,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
127 if (CollectionUtils.isNotEmpty(queryVO.getIds())) { 156 if (CollectionUtils.isNotEmpty(queryVO.getIds())) {
128 queryWrapper.in(InvoiceBillOrderDO::getId, queryVO.getIds()); 157 queryWrapper.in(InvoiceBillOrderDO::getId, queryVO.getIds());
129 } else { 158 } else {
130 - Set<Long> billOrderIds = filterBillOrderIdsBy(queryVO); 159 + Set<Long> billOrderIds = filterBillOrderIdsBy(queryVO.getQueryVO());
131 queryWrapper.in(CollectionUtils.isNotEmpty(billOrderIds), InvoiceBillOrderDO::getId, billOrderIds); 160 queryWrapper.in(CollectionUtils.isNotEmpty(billOrderIds), InvoiceBillOrderDO::getId, billOrderIds);
132 } 161 }
133 return queryWrapper; 162 return queryWrapper;
@@ -175,12 +204,12 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap @@ -175,12 +204,12 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
175 } 204 }
176 205
177 @Override 206 @Override
178 - public ServerResult listAnalysisBy(InvoiceBillAnalysisVO queryVO) { 207 + public ServerResult listAnalysisBy(InvoiceAndCheckAnalysisVO queryVO) {
179 return ServerResult.success(getAnalysisResult(queryVO)); 208 return ServerResult.success(getAnalysisResult(queryVO));
180 } 209 }
181 210
182 @Override 211 @Override
183 - public ServerResult export(HttpServletResponse response, InvoiceBillAnalysisVO queryVO) throws IOException { 212 + public ServerResult export(HttpServletResponse response, InvoiceAndCheckAnalysisVO queryVO) throws IOException {
184 // InvoiceBillAnalysisResultVO resultVO = getAnalysisResult(queryVO); 213 // InvoiceBillAnalysisResultVO resultVO = getAnalysisResult(queryVO);
185 //第二版 214 //第二版
186 List<InvoiceBillAnalysisResultVO> resultVO = getAnalysisResult(queryVO); 215 List<InvoiceBillAnalysisResultVO> resultVO = getAnalysisResult(queryVO);
@@ -315,54 +344,87 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap @@ -315,54 +344,87 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
315 * @return 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 Map<Long, InvoiceBillOrderDO> invoiceBillOrderDOMap = invoiceBillOrderDOS.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getOrderId, Function.identity(), (x, y) -> x)); 424 Map<Long, InvoiceBillOrderDO> invoiceBillOrderDOMap = invoiceBillOrderDOS.stream().collect(Collectors.toMap(InvoiceBillOrderDO::getOrderId, Function.identity(), (x, y) -> x));
325 List<InvoiceOrderBaseItemVO> itemVOS = getInvoiceOrderBaseItems(invoiceBillOrderDOMap); 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 Map<String, BigDecimal> customerProfitMap=null; 428 Map<String, BigDecimal> customerProfitMap=null;
367 if(CollectionUtils.isNotEmpty(notExistOrderIds)) { 429 if(CollectionUtils.isNotEmpty(notExistOrderIds)) {
368 430
@@ -1265,6 +1327,8 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap @@ -1265,6 +1327,8 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
1265 List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().map(order -> { 1327 List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().map(order -> {
1266 //这里要删除对应invoiceNo号,但是为了删除后产生空指针异常,所以定义为"N/N"; 1328 //这里要删除对应invoiceNo号,但是为了删除后产生空指针异常,所以定义为"N/N";
1267 order.setInvoiceNo("N/N"); 1329 order.setInvoiceNo("N/N");
  1330 + //设置状态为-1,未创建。
  1331 + order.setInvoiceStatus(FinanceEnum.NOT_CREATED.getStatus());
1268 return order; 1332 return order;
1269 }).collect(Collectors.toList()); 1333 }).collect(Collectors.toList());
1270 transactionHelper.run(() -> { 1334 transactionHelper.run(() -> {
@@ -1354,13 +1418,17 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap @@ -1354,13 +1418,17 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;InvoiceBillOrderMap
1354 //第二行 1418 //第二行
1355 Row row2 = sheet.createRow(3); 1419 Row row2 = sheet.createRow(3);
1356 Cell cell2 = row2.createCell(0); 1420 Cell cell2 = row2.createCell(0);
1357 - cell2.setCellValue("提交人:"); 1421 + cell2.setCellValue("提交人:"+queryVO.getFinancePerson());
1358 sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 1)); 1422 sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 1));
1359 Cell cell3 = row2.createCell(2); 1423 Cell cell3 = row2.createCell(2);
1360 cell3.setCellValue(""); 1424 cell3.setCellValue("");
1361 sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 7)); 1425 sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 7));
1362 Cell cell4 = row2.createCell(8); 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 sheet.addMergedRegion(new CellRangeAddress(3, 4, 8, 9)); 1432 sheet.addMergedRegion(new CellRangeAddress(3, 4, 8, 9));
1365 //第三行 1433 //第三行
1366 createMergedCell(sheet, workbook, 5, 0, 5, 6, 0, 1, "INVOICE编号"); 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,7 +1503,16 @@ end
1503 // queryVO.setOrderIds(collect); 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 return new LambdaQueryWrapper<OrderBaseInfoDO>() 1516 return new LambdaQueryWrapper<OrderBaseInfoDO>()
1508 .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) 1517 .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN)
1509 .in(CollectionUtils.isNotEmpty(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode()) 1518 .in(CollectionUtils.isNotEmpty(queryVO.getCustomerCode()), OrderBaseInfoDO::getCustomerCode, queryVO.getCustomerCode())
@@ -1753,15 +1762,23 @@ end @@ -1753,15 +1762,23 @@ end
1753 orderOpinionLogDOList.add(orderOpinionLogDO); 1762 orderOpinionLogDOList.add(orderOpinionLogDO);
1754 } 1763 }
1755 String date = currentMonth + "/" + dayOfMonth; 1764 String date = currentMonth + "/" + dayOfMonth;
  1765 + //旧的
1756 String productionComment = orderBaseInfoDo.getProductionComment(); 1766 String productionComment = orderBaseInfoDo.getProductionComment();
1757 StringBuilder stringBuilder = new StringBuilder(productionComment); 1767 StringBuilder stringBuilder = new StringBuilder(productionComment);
1758 String[] newProductionComment = updateVO.getBaseInfo().getProductionComment().split("\n"); 1768 String[] newProductionComment = updateVO.getBaseInfo().getProductionComment().split("\n");
1759 //对于四个结果,并且当前输入产品意见文字小于上一次的产品意见后续填写不需要换行。 1769 //对于四个结果,并且当前输入产品意见文字小于上一次的产品意见后续填写不需要换行。
1760 if((!newProductionComment[newProductionComment.length - 1].trim().contains("确认通过") && 1770 if((!newProductionComment[newProductionComment.length - 1].trim().contains("确认通过") &&
1761 !newProductionComment[newProductionComment.length - 1].trim().contains("确认未通过")) && updateVO.getBaseInfo().getProductionComment().length() > orderBaseInfoDo.getProductionComment().length()){ 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 }else{ 1782 }else{
1766 sendProductionCommentEmail(orderBaseInfoDo,updateVO.getBaseInfo().getProductionComment()); 1783 sendProductionCommentEmail(orderBaseInfoDo,updateVO.getBaseInfo().getProductionComment());
1767 } 1784 }
@@ -2528,13 +2545,15 @@ end @@ -2528,13 +2545,15 @@ end
2528 orderEventJobVO.getBaseInfo().setProductionDepartmentConsignTime(ProductionDepartmentConsignTime); 2545 orderEventJobVO.getBaseInfo().setProductionDepartmentConsignTime(ProductionDepartmentConsignTime);
2529 LambdaQueryWrapper<ReceiveEmailMappingDO> receiveEmailMappingDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); 2546 LambdaQueryWrapper<ReceiveEmailMappingDO> receiveEmailMappingDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
2530 receiveEmailMappingDOLambdaQueryWrapper.eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN); 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 .last("limit 1"); 2556 .last("limit 1");
2534 - }else{  
2535 - receiveEmailMappingDOLambdaQueryWrapper.like(ReceiveEmailMappingDO::getTypeValue,orderBaseInfoDO.getCustomerCode().split("-")[0])  
2536 - .last("limit 1");  
2537 - }  
2538 ReceiveEmailMappingDO receiveEmailMappingDO = receiveEmailMappingService.getOne( receiveEmailMappingDOLambdaQueryWrapper); 2557 ReceiveEmailMappingDO receiveEmailMappingDO = receiveEmailMappingService.getOne( receiveEmailMappingDOLambdaQueryWrapper);
2539 //得到所有的质检员。由于删除了角色,但是用户角色表中的信息没有删除,所以不能直接通过用户角色表拿角色,然后发邮件,需校验。 2558 //得到所有的质检员。由于删除了角色,但是用户角色表中的信息没有删除,所以不能直接通过用户角色表拿角色,然后发邮件,需校验。
2540 List<AdminUserRoleDO> UserRoleList = adminUserRoleService.list(new LambdaQueryWrapper<AdminUserRoleDO>() 2559 List<AdminUserRoleDO> UserRoleList = adminUserRoleService.list(new LambdaQueryWrapper<AdminUserRoleDO>()
@@ -2582,13 +2601,16 @@ end @@ -2582,13 +2601,16 @@ end
2582 orderEventJobVO.getBaseInfo().setProductionDepartmentConsignTime(ProductionDepartmentConsignTime); 2601 orderEventJobVO.getBaseInfo().setProductionDepartmentConsignTime(ProductionDepartmentConsignTime);
2583 LambdaQueryWrapper<ReceiveEmailMappingDO> receiveEmailMappingDOLambdaQueryWrapper = new LambdaQueryWrapper<>(); 2602 LambdaQueryWrapper<ReceiveEmailMappingDO> receiveEmailMappingDOLambdaQueryWrapper = new LambdaQueryWrapper<>();
2584 receiveEmailMappingDOLambdaQueryWrapper.eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN); 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 receiveEmailMappingDOLambdaQueryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, orderBaseInfoDO.getCustomerCode()) 2606 receiveEmailMappingDOLambdaQueryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, orderBaseInfoDO.getCustomerCode())
2587 .last("limit 1"); 2607 .last("limit 1");
2588 }else{ 2608 }else{
2589 receiveEmailMappingDOLambdaQueryWrapper.like(ReceiveEmailMappingDO::getTypeValue,orderBaseInfoDO.getCustomerCode().split("-")[0]) 2609 receiveEmailMappingDOLambdaQueryWrapper.like(ReceiveEmailMappingDO::getTypeValue,orderBaseInfoDO.getCustomerCode().split("-")[0])
2590 .last("limit 1"); 2610 .last("limit 1");
2591 - } 2611 + }*/
  2612 + receiveEmailMappingDOLambdaQueryWrapper.eq(ReceiveEmailMappingDO::getTypeValue, orderBaseInfoDO.getCustomerCode())
  2613 + .last("limit 1");
2592 ReceiveEmailMappingDO receiveEmailMappingDO = receiveEmailMappingService.getOne( receiveEmailMappingDOLambdaQueryWrapper); 2614 ReceiveEmailMappingDO receiveEmailMappingDO = receiveEmailMappingService.getOne( receiveEmailMappingDOLambdaQueryWrapper);
2593 //得到所有的质检员。由于删除了角色,但是用户角色表中的信息没有删除,所以不能直接通过用户角色表拿角色,然后发邮件,需校验。 2615 //得到所有的质检员。由于删除了角色,但是用户角色表中的信息没有删除,所以不能直接通过用户角色表拿角色,然后发邮件,需校验。
2594 List<AdminUserRoleDO> UserRoleList = adminUserRoleService.list(new LambdaQueryWrapper<AdminUserRoleDO>() 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&lt;OrderFieldLockAp @@ -188,12 +188,12 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp
188 } 188 }
189 }//这里结束 上述为待审核列表中应收款要显示内部编码。 //这部分不需要了。 189 }//这里结束 上述为待审核列表中应收款要显示内部编码。 //这部分不需要了。
190 //这部分的目的是,对于跟单员和业务员他们也能查看到应收款和应付款中各自负责订单的审核情况。 而财务和admin则会执行else{},会看到所有的审核订单信息。 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 resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class)); 193 resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class));
194 } 194 }
195 } else if (RoleEnum.TRACKER_USER.getCode().equals(roleEnum.getCode())) { 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 resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class)); 197 resultVO.setFieldInfos(JSONObject.parseObject(fields, OrderLockFieldVO.class));
198 } 198 }
199 } else { 199 } else {
@@ -427,7 +427,10 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp @@ -427,7 +427,10 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp
427 if (CollectionUtils.isNotEmpty(queryVO.getInnerNo())) { 427 if (CollectionUtils.isNotEmpty(queryVO.getInnerNo())) {
428 String queryInnerNo = queryVO.getInnerNo().get(0).trim(); 428 String queryInnerNo = queryVO.getInnerNo().get(0).trim();
429 queryWrapper.apply( 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 queryInnerNo 434 queryInnerNo
432 ); 435 );
433 } 436 }
@@ -471,7 +474,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp @@ -471,7 +474,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp
471 // 使用括号分组确保逻辑优先级正确 474 // 使用括号分组确保逻辑优先级正确
472 queryWrapper.apply( 475 queryWrapper.apply(
473 "((JSON_UNQUOTE(JSON_EXTRACT(fields, '$.producePaymentCheckBillFieldVO.checkNo')) = {0}) " + 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 checkNos 478 checkNos
476 ); 479 );
477 } 480 }
@@ -617,9 +620,9 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp @@ -617,9 +620,9 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp
617 620
618 } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { 621 } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) {
619 OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); 622 OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class);
620 - ProducePaymentCheckBillOrderDO checkBillOrderDO = lockFieldVO.getCheckBillOrderDO();  
621 - 623 + ProducePaymentCheckBillVO checkBillOrderDO = lockFieldVO.getCheckBillVO();
622 624
  625 + //得到旧的。
623 ProducePaymentCheckBillOrderDO invoiceInfoDO = checkBillOrderService.getById(checkBillOrderDO.getId()); 626 ProducePaymentCheckBillOrderDO invoiceInfoDO = checkBillOrderService.getById(checkBillOrderDO.getId());
624 invoiceInfoDO.setDepartmentInvoiceStatus(ApplyStatusEnum.AUDIT_REFUSE.getStatus()); 627 invoiceInfoDO.setDepartmentInvoiceStatus(ApplyStatusEnum.AUDIT_REFUSE.getStatus());
625 //传递给审核一直都是最新的发票。 628 //传递给审核一直都是最新的发票。
@@ -816,7 +819,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp @@ -816,7 +819,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;OrderFieldLockAp
816 applyDO.setAuditUserId(auditUserId); 819 applyDO.setAuditUserId(auditUserId);
817 applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); 820 applyDO.setStatus(ApplyStatusEnum.AUDIT_PASS.getStatus());
818 OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); 821 OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class);
819 - ProducePaymentCheckBillOrderDO checkBillOrderDO = lockFieldVO.getCheckBillOrderDO(); 822 + ProducePaymentCheckBillVO checkBillOrderDO = lockFieldVO.getCheckBillVO();
820 //查询旧的。 823 //查询旧的。
821 ProducePaymentCheckBillOrderDO invoiceInfoDO = checkBillOrderService.getById(checkBillOrderDO.getId()); 824 ProducePaymentCheckBillOrderDO invoiceInfoDO = checkBillOrderService.getById(checkBillOrderDO.getId());
822 invoiceInfoDO.setDepartmentInvoiceStatus(ApplyStatusEnum.AUDIT_PASS.getStatus()); 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&lt;OrderProfitAnaly @@ -200,6 +200,26 @@ public class OrderProfitAnalysisServiceImpl extends ServiceImpl&lt;OrderProfitAnaly
200 200
201 @Override 201 @Override
202 public ServerResult<OrderProfitAnalysisVO> analysisByQueryVO(OrderProfitAnalysisVo profitAnalysisVo) { 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 LambdaQueryWrapper<OrderBaseInfoDO> queryWrapper = orderBaseInfoService.buildQueryByParam(profitAnalysisVo.getQueryVO()); 223 LambdaQueryWrapper<OrderBaseInfoDO> queryWrapper = orderBaseInfoService.buildQueryByParam(profitAnalysisVo.getQueryVO());
204 List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.list(queryWrapper); 224 List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.list(queryWrapper);
205 if (CollectionUtils.isEmpty(orderBaseInfoDOList)) { 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,6 +26,7 @@ import com.order.erp.domain.dto.BaseDO;
26 import com.order.erp.domain.dto.SystemSettingDO; 26 import com.order.erp.domain.dto.SystemSettingDO;
27 import com.order.erp.domain.dto.order.*; 27 import com.order.erp.domain.dto.order.*;
28 import com.order.erp.domain.vo.order.*; 28 import com.order.erp.domain.vo.order.*;
  29 +import com.order.erp.mapper.order.InvoiceBillOrderMapper;
29 import com.order.erp.mapper.order.ProducePaymentCheckBillOrderMapper; 30 import com.order.erp.mapper.order.ProducePaymentCheckBillOrderMapper;
30 import com.order.erp.service.SystemSettingService; 31 import com.order.erp.service.SystemSettingService;
31 import com.order.erp.service.order.*; 32 import com.order.erp.service.order.*;
@@ -78,6 +79,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce @@ -78,6 +79,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
78 79
79 @Resource 80 @Resource
80 private TransactionHelper transactionHelper; 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&lt;Produce @@ -86,8 +89,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
86 * @param queryVO 筛选条件 89 * @param queryVO 筛选条件
87 * @return 查询结果 90 * @return 查询结果
88 */ 91 */
89 - @Override  
90 - public ServerResult listByPage(ProducePaymentCheckBillOrderQueryVO queryVO) { 92 +
  93 + /* public ServerResult listByPage(ProducePaymentCheckBillOrderQueryVO queryVO) {
91 RoleEnum role = dataScope.getRole(); 94 RoleEnum role = dataScope.getRole();
92 LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> queryWrapper = getQueryWrapper(queryVO); 95 LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> queryWrapper = getQueryWrapper(queryVO);
93 //生产科,生产科只能看到属于自己的订单。 96 //生产科,生产科只能看到属于自己的订单。
@@ -104,7 +107,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce @@ -104,7 +107,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
104 Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize()); 107 Page page = new Page<>(queryVO.getPage(), queryVO.getPageSize());
105 IPage<ProducePaymentCheckBillOrderDO> iPage = page(page, queryWrapper); 108 IPage<ProducePaymentCheckBillOrderDO> iPage = page(page, queryWrapper);
106 return ServerResult.success(iPage); 109 return ServerResult.success(iPage);
107 - } 110 + }*/
108 111
109 @Override 112 @Override
110 public ServerResult listBaseOrderInfoBy(ProducePaymentBaseOrderQueryVO queryVO) { 113 public ServerResult listBaseOrderInfoBy(ProducePaymentBaseOrderQueryVO queryVO) {
@@ -145,7 +148,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce @@ -145,7 +148,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
145 } 148 }
146 149
147 @Override 150 @Override
148 - public ServerResult listAnalysisBy(ProducePaymentCheckBillOrderQueryVO queryVO) { 151 + public ServerResult listAnalysisBy(InvoiceAndCheckAnalysisVO queryVO) {
149 return ServerResult.success(getAnalysisResult(queryVO)); 152 return ServerResult.success(getAnalysisResult(queryVO));
150 } 153 }
151 154
@@ -156,25 +159,76 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce @@ -156,25 +159,76 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
156 159
157 // private CheckBillAnalysisResultVO getAnalysisResult(ProducePaymentCheckBillOrderQueryVO queryVO) { 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 Map<Long, ProducePaymentCheckBillOrderDO> orderBillMap = checkBillOrderDOS.stream().collect(Collectors.toMap(ProducePaymentCheckBillOrderDO::getOrderId, Function.identity(), (x, y) -> x)); 228 Map<Long, ProducePaymentCheckBillOrderDO> orderBillMap = checkBillOrderDOS.stream().collect(Collectors.toMap(ProducePaymentCheckBillOrderDO::getOrderId, Function.identity(), (x, y) -> x));
172 // Map<Long, CheckBillMappingDO> orderBillMap = checkBillMappingDOS.stream().collect(Collectors.toMap(CheckBillMappingDO::getOrderId, Function.identity(), (x, y) -> x)); 229 // Map<Long, CheckBillMappingDO> orderBillMap = checkBillMappingDOS.stream().collect(Collectors.toMap(CheckBillMappingDO::getOrderId, Function.identity(), (x, y) -> x));
173 -  
174 List<CheckOrderBaseItemVO> itemVOS = getCheckOrderBaseItems(orderBillMap); 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 Map<String, BigDecimal> productionDepartmentProfitMap=null; 232 Map<String, BigDecimal> productionDepartmentProfitMap=null;
179 if(CollectionUtils.isNotEmpty(notExistOrderIds)){ 233 if(CollectionUtils.isNotEmpty(notExistOrderIds)){
180 List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(notExistOrderIds); 234 List<OrderBaseInfoDO> orderBaseInfoDOList = orderBaseInfoService.listByIds(notExistOrderIds);
@@ -406,7 +460,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce @@ -406,7 +460,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
406 460
407 461
408 @Override 462 @Override
409 - public ServerResult export(HttpServletResponse response, ProducePaymentCheckBillOrderQueryVO queryVO) throws IOException { 463 + public ServerResult export(HttpServletResponse response, InvoiceAndCheckAnalysisVO queryVO) throws IOException {
410 // CheckBillAnalysisResultVO resultVO = getAnalysisResult(queryVO); 464 // CheckBillAnalysisResultVO resultVO = getAnalysisResult(queryVO);
411 //第二版开始 465 //第二版开始
412 List<CheckBillAnalysisResultVO> resultVO = getAnalysisResult(queryVO); 466 List<CheckBillAnalysisResultVO> resultVO = getAnalysisResult(queryVO);
@@ -524,7 +578,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce @@ -524,7 +578,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
524 * @param queryVO 578 * @param queryVO
525 * @return 579 * @return
526 */ 580 */
527 - private LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> getQueryWrapper(ProducePaymentCheckBillOrderQueryVO queryVO) { 581 + private LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> getQueryWrapper(InvoiceAndCheckAnalysisVO queryVO) {
528 LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> queryWrapper = new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>() 582 LambdaQueryWrapper<ProducePaymentCheckBillOrderDO> queryWrapper = new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>()
529 .eq(ProducePaymentCheckBillOrderDO::getEnableFlag, Constant.ENABLE_TEN) 583 .eq(ProducePaymentCheckBillOrderDO::getEnableFlag, Constant.ENABLE_TEN)
530 /*.eq(StringUtils.isNotBlank(queryVO.getCheckNo()), ProducePaymentCheckBillOrderDO::getCheckNo, queryVO.getCheckNo()) 584 /*.eq(StringUtils.isNotBlank(queryVO.getCheckNo()), ProducePaymentCheckBillOrderDO::getCheckNo, queryVO.getCheckNo())
@@ -535,8 +589,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce @@ -535,8 +589,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
535 if (CollectionUtils.isNotEmpty(queryVO.getIds())) { 589 if (CollectionUtils.isNotEmpty(queryVO.getIds())) {
536 queryWrapper.in(ProducePaymentCheckBillOrderDO::getId, queryVO.getIds()); 590 queryWrapper.in(ProducePaymentCheckBillOrderDO::getId, queryVO.getIds());
537 } else { 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 return queryWrapper; 595 return queryWrapper;
542 } 596 }
@@ -927,20 +981,25 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce @@ -927,20 +981,25 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
927 if(StringUtils.isBlank(invoiceInfoVO.getInvoiceUrl())){ 981 if(StringUtils.isBlank(invoiceInfoVO.getInvoiceUrl())){
928 return ServerResult.success(); 982 return ServerResult.success();
929 } 983 }
  984 + OrderBaseInfoDO orderBaseInfoDO = orderBaseInfoService.getById(checkBillOrderDO.getOrderId());
930 //校验是否有处于待审核的发票。 985 //校验是否有处于待审核的发票。
931 checkCommitApply(id); 986 checkCommitApply(id);
932 //校验是否有处于待审核的订单。 todo 987 //校验是否有处于待审核的订单。 todo
933 checkApply(new ArrayList<>(Arrays.asList(id))); 988 checkApply(new ArrayList<>(Arrays.asList(id)));
934 OrderLockFieldVO locakFieldVO = new OrderLockFieldVO(); 989 OrderLockFieldVO locakFieldVO = new OrderLockFieldVO();
935 - 990 + ProducePaymentCheckBillVO producePaymentCheckBillVO = new ProducePaymentCheckBillVO();
936 //事务:待审核,设置为admin和财务才有权限审批。 991 //事务:待审核,设置为admin和财务才有权限审批。
937 transactionHelper.run(() -> { 992 transactionHelper.run(() -> {
938 checkBillOrderDO.setDepartmentInvoiceStatus(ApplyStatusEnum.WAIT_AUDIT.getStatus()); 993 checkBillOrderDO.setDepartmentInvoiceStatus(ApplyStatusEnum.WAIT_AUDIT.getStatus());
939 updateById(checkBillOrderDO); 994 updateById(checkBillOrderDO);
940 //不保存,仅仅只是做一个审核,千万不要保存。目的是传递给审核的是最新的发票,审核通过才保存,不通过则不保存。 995 //不保存,仅仅只是做一个审核,千万不要保存。目的是传递给审核的是最新的发票,审核通过才保存,不通过则不保存。
941 checkBillOrderDO.setInvoiceUrl(invoiceInfoVO.getInvoiceUrl()); 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 OrderFieldLockApplyDO applyDO = OrderFieldLockApplyDO.builder() 1003 OrderFieldLockApplyDO applyDO = OrderFieldLockApplyDO.builder()
945 .applyUserId(loginUserId) 1004 .applyUserId(loginUserId)
946 .auditUserId(null) 1005 .auditUserId(null)
@@ -1153,6 +1212,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce @@ -1153,6 +1212,8 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
1153 List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().map(order -> { 1212 List<OrderBaseInfoDO> orderBaseInfoDOS = orderBaseInfoDOList.stream().map(order -> {
1154 //这里要删除对应invoiceNo号,但是为了删除后产生空指针异常,所以定义为"N/N"; 1213 //这里要删除对应invoiceNo号,但是为了删除后产生空指针异常,所以定义为"N/N";
1155 order.setCheckNo("N/N"); 1214 order.setCheckNo("N/N");
  1215 + //设置状态为-1,未创建。
  1216 + order.setCheckStatus(FinanceEnum.NOT_CREATED.getStatus());
1156 return order; 1217 return order;
1157 }).collect(Collectors.toList()); 1218 }).collect(Collectors.toList());
1158 transactionHelper.run(() -> { 1219 transactionHelper.run(() -> {
@@ -1287,13 +1348,17 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce @@ -1287,13 +1348,17 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;Produce
1287 //第二行 1348 //第二行
1288 Row row2 = sheet.createRow(3); 1349 Row row2 = sheet.createRow(3);
1289 Cell cell2 = row2.createCell(0); 1350 Cell cell2 = row2.createCell(0);
1290 - cell2.setCellValue("提交人:"); 1351 + cell2.setCellValue("提交人:"+queryVO.getFinancePerson());
1291 sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 1)); 1352 sheet.addMergedRegion(new CellRangeAddress(3, 4, 0, 1));
1292 Cell cell3 = row2.createCell(2); 1353 Cell cell3 = row2.createCell(2);
1293 cell3.setCellValue(""); 1354 cell3.setCellValue("");
1294 sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 7)); 1355 sheet.addMergedRegion(new CellRangeAddress(3, 4, 2, 7));
1295 Cell cell4 = row2.createCell(8); 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 sheet.addMergedRegion(new CellRangeAddress(3, 4, 8, 9)); 1362 sheet.addMergedRegion(new CellRangeAddress(3, 4, 8, 9));
1298 //第三行 1363 //第三行
1299 createMergedCell(sheet, workbook, 5, 0, 5, 6, 0, 1, "生产科对账单号"); 1364 createMergedCell(sheet, workbook, 5, 0, 5, 6, 0, 1, "生产科对账单号");
src/main/resources/mapper/InvoiceBillOrderMapper.xml
@@ -161,34 +161,34 @@ @@ -161,34 +161,34 @@
161 AND o.customer_po = #{queryVO.customerPo} 161 AND o.customer_po = #{queryVO.customerPo}
162 </if> 162 </if>
163 <if test="queryVO.invoiceStartTime != null"> 163 <if test="queryVO.invoiceStartTime != null">
164 - AND DATE(i.create_time) &gt;= LEFT(#{queryVO.invoiceStartTime}, 10) 164 + AND i.create_time &gt;= #{queryVO.invoiceStartTime}
165 </if> 165 </if>
166 <if test="queryVO.invoiceEndTime != null"> 166 <if test="queryVO.invoiceEndTime != null">
167 - AND DATE(i.create_time) &lt;= LEFT(#{queryVO.invoiceEndTime}, 10) 167 + AND i.create_time &lt;= #{queryVO.invoiceEndTime}
168 </if> 168 </if>
169 <if test="queryVO.checkStartTime != null "> 169 <if test="queryVO.checkStartTime != null ">
170 - AND DATE(p.create_time) &gt;= LEFT(#{queryVO.checkStartTime}, 10) 170 + AND p.create_time &gt;= #{queryVO.checkStartTime}
171 </if> 171 </if>
172 <if test="queryVO.checkEndTime != null"> 172 <if test="queryVO.checkEndTime != null">
173 - AND DATE(p.create_time) &lt;= LEFT(#{queryVO.checkEndTime}, 10) 173 + AND p.create_time &lt;= #{queryVO.checkEndTime}
174 </if> 174 </if>
175 <if test="queryVO.createStartTime !=null"> 175 <if test="queryVO.createStartTime !=null">
176 - AND DATE(o.create_time) &gt;= LEFT(#{queryVO.createStartTime}, 10) 176 + AND o.create_time &gt;= #{queryVO.createStartTime}
177 </if> 177 </if>
178 <if test="queryVO.createEndTime != null"> 178 <if test="queryVO.createEndTime != null">
179 - AND DATE(o.create_time) &lt;= LEFT(#{queryVO.createEndTime}, 10) 179 + AND o.create_time &lt;= #{queryVO.createEndTime}
180 </if> 180 </if>
181 <if test="queryVO.productionDepartmentConsignStartTime != null "> 181 <if test="queryVO.productionDepartmentConsignStartTime != null ">
182 - AND DATE(o.production_department_consign_time) &gt;= LEFT(#{queryVO.productionDepartmentConsignStartTime} , 10) 182 + AND o.production_department_consign_time &gt;= #{queryVO.productionDepartmentConsignStartTime}
183 </if> 183 </if>
184 <if test="queryVO.productionDepartmentConsignEndTime != null"> 184 <if test="queryVO.productionDepartmentConsignEndTime != null">
185 - AND DATE(o.production_department_consign_time) &lt;= LEFT(#{queryVO.productionDepartmentConsignEndTime} , 10) 185 + AND o.production_department_consign_time &lt;= #{queryVO.productionDepartmentConsignEndTime}
186 </if> 186 </if>
187 <if test="queryVO.orderHodStartTime != null "> 187 <if test="queryVO.orderHodStartTime != null ">
188 - AND DATE(o.order_hod_time) &gt;= LEFT(#{queryVO.orderHodStartTime} , 10) 188 + AND o.order_hod_time &gt;= #{queryVO.orderHodStartTime}
189 </if> 189 </if>
190 <if test="queryVO.orderHodEndTime != null"> 190 <if test="queryVO.orderHodEndTime != null">
191 - AND DATE(o.order_hod_time) &lt;= LEFT(#{queryVO.orderHodEndTime} , 10) 191 + AND o.order_hod_time &lt;= #{queryVO.orderHodEndTime}
192 </if> 192 </if>
193 <if test="queryVO.trackerUserName != null and queryVO.trackerUserName != ''"> 193 <if test="queryVO.trackerUserName != null and queryVO.trackerUserName != ''">
194 AND o.create_by = #{queryVO.trackerUserName} 194 AND o.create_by = #{queryVO.trackerUserName}
@@ -199,4 +199,97 @@ @@ -199,4 +199,97 @@
199 ORDER BY o.id DESC 199 ORDER BY o.id DESC
200 200
201 </select> 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 &gt;= #{queryVO.invoiceStartTime}
  258 + </if>
  259 + <if test="queryVO.invoiceEndTime != null">
  260 + AND i.create_time &lt;= #{queryVO.invoiceEndTime}
  261 + </if>
  262 + <if test="queryVO.checkStartTime != null ">
  263 + AND p.create_time &gt;= #{queryVO.checkStartTime}
  264 + </if>
  265 + <if test="queryVO.checkEndTime != null">
  266 + AND p.create_time &lt;= #{queryVO.checkEndTime}
  267 + </if>
  268 + <if test="queryVO.createStartTime !=null">
  269 + AND o.create_time &gt;= #{queryVO.createStartTime}
  270 + </if>
  271 + <if test="queryVO.createEndTime != null">
  272 + AND o.create_time &lt;= #{queryVO.createEndTime}
  273 + </if>
  274 + <if test="queryVO.productionDepartmentConsignStartTime != null ">
  275 + AND o.production_department_consign_time &gt;= #{queryVO.productionDepartmentConsignStartTime}
  276 + </if>
  277 + <if test="queryVO.productionDepartmentConsignEndTime != null">
  278 + AND o.production_department_consign_time &lt;= #{queryVO.productionDepartmentConsignEndTime}
  279 + </if>
  280 + <if test="queryVO.orderHodStartTime != null ">
  281 + AND o.order_hod_time &gt;= #{queryVO.orderHodStartTime}
  282 + </if>
  283 + <if test="queryVO.orderHodEndTime != null">
  284 + AND o.order_hod_time &lt;= #{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 </mapper> 295 </mapper>