Commit 9d5da66f451bf80cff5edc83c542d8a6868ff9c3

Authored by chenhang4442024
1 parent 37042639

fix:增加应收款不勾选订单,进行条件筛选自动选择订单分析

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