From fd3c0b52daff100988817de4054ab2bd8e592e40 Mon Sep 17 00:00:00 2001 From: chenhang <3165269033@qq.com> Date: Wed, 5 Mar 2025 11:54:13 +0800 Subject: [PATCH] feat:1.新增最终状态设置。 fix:1.修复自动发送邮件时,添加财务人员。 --- src/main/java/com/order/erp/common/utils/EmailSendUtils.java | 47 ++++++++++++++++++++++++++++++++--------------- src/main/java/com/order/erp/controller/InvoiceBillOrderController.java | 10 ++++++++++ src/main/java/com/order/erp/controller/ProducePaymentCheckBillOrderController.java | 10 ++++++++++ src/main/java/com/order/erp/domain/dto/order/InvoiceBillOrderDO.java | 5 +++++ src/main/java/com/order/erp/domain/dto/order/ProducePaymentCheckBillOrderDO.java | 5 +++++ src/main/java/com/order/erp/domain/vo/order/FinanceOrderResultVO.java | 10 +++++++++- src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrderQueryVO.java | 10 ++++++++++ src/main/java/com/order/erp/service/order/InvoiceBillOrderService.java | 1 + src/main/java/com/order/erp/service/order/ProducePaymentCheckBillOrderService.java | 1 + src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java | 24 +++++++++++++++++++++++- src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java | 12 ++++++------ src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java | 24 +++++++++++++++++++++++- src/main/resources/mapper/InvoiceBillOrderMapper.xml | 16 +++++++++++++++- 13 files changed, 150 insertions(+), 25 deletions(-) diff --git a/src/main/java/com/order/erp/common/utils/EmailSendUtils.java b/src/main/java/com/order/erp/common/utils/EmailSendUtils.java index 142d3c7..00b0d6c 100644 --- a/src/main/java/com/order/erp/common/utils/EmailSendUtils.java +++ b/src/main/java/com/order/erp/common/utils/EmailSendUtils.java @@ -9,11 +9,13 @@ import com.order.erp.domain.EmailTemplateEnum; import com.order.erp.domain.FinanceOverEnum; import com.order.erp.domain.dto.BaseDO; import com.order.erp.domain.dto.admin.AdminUserDO; +import com.order.erp.domain.dto.admin.AdminUserRoleDO; import com.order.erp.domain.dto.order.InvoiceBillOrderDO; import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; import com.order.erp.domain.vo.order.FinanceEventJobVO; import com.order.erp.domain.vo.order.InvoiceAndCheckBillSendEmailVO; import com.order.erp.domain.vo.order.OrderEventJobVO; +import com.order.erp.service.admin.AdminUserRoleService; import com.order.erp.service.admin.AdminUserService; import freemarker.template.Template; import freemarker.template.TemplateException; @@ -30,6 +32,7 @@ import java.io.File; import java.io.IOException; import java.io.StringWriter; import java.util.*; +import java.util.stream.Collectors; /** * @Author:ch @@ -45,6 +48,8 @@ public class EmailSendUtils { private FreeMarkerConfigurer freeMarkerConfigurer; @Resource private AdminUserService adminUserService; + @Resource + private AdminUserRoleService adminUserRoleService; /** * @Description: 发送邮件 发送尾期验货报告,中期验货报告,邮件提醒事件。 @@ -283,7 +288,7 @@ public class EmailSendUtils { * @throws IOException */ @Async - public void sendInvoiceAndCheckEmail(FinanceOverEnum emailTemplateEnum, InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO) { + public void sendInvoiceAndCheckEmail(FinanceOverEnum emailTemplateEnum, InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO,boolean isTrue) { if(emailTemplateEnum ==null && ObjectUtils.isNull(invoiceAndCheckBillSendEmailVO)){ throw new BusinessException(ServerResultCode.PARAM_ERROR); } @@ -293,26 +298,38 @@ public class EmailSendUtils { String invoiceNoOrCheckNo; if(invoiceAndCheckBillSendEmailVO.getInvoiceBillOrderDO()!=null){ InvoiceBillOrderDO invoiceBillOrderDO=invoiceAndCheckBillSendEmailVO.getInvoiceBillOrderDO(); - //得到提交人 - AdminUserDO adminUserDO = adminUserService.getOne(new LambdaQueryWrapper<AdminUserDO>() + //得到财务提交人以及业务员和跟单员。 + List<AdminUserDO> adminUserDOList = adminUserService.list(new LambdaQueryWrapper<AdminUserDO>() .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) - .eq(AdminUserDO::getUserName, invoiceBillOrderDO.getFinancePerson()) - .last("limit 1")); - - if(Objects.nonNull(adminUserDO)){ - String emails=adminUserDO.getEmail(); - if(StringUtils.isNotBlank(emails)){ - email = emails.split("[,,]+"); - } + .in(AdminUserDO::getUserName, Arrays.asList(invoiceBillOrderDO.getTrackerUser(),invoiceBillOrderDO.getBusinesPerson(),invoiceBillOrderDO.getFinancePerson()))); + if(CollectionUtils.isNotEmpty(adminUserDOList)){ + email = adminUserDOList.stream() + .map(AdminUserDO::getEmail) // 提取 email + .filter(Objects::nonNull) // 过滤掉 null 的 email + .flatMap(emails -> Arrays.stream(emails.split("[,,]+"))) // 按逗号或中文逗号分割 email + .map(String::trim) // 去除空格 + .filter(s -> !s.isEmpty()) // 过滤掉空字符串 + .toArray(String[]::new); // 转换为 String[] 数组 } invoiceNoOrCheckNo = invoiceBillOrderDO.getInvoiceNo(); }else{ ProducePaymentCheckBillOrderDO checkBillOrderDO = invoiceAndCheckBillSendEmailVO.getCheckBillOrderDO(); - //得到跟单员和业务员。 - List<AdminUserDO> adminUserDOList = adminUserService.list(new LambdaQueryWrapper<AdminUserDO>() + Set<Long> userIds = null; + //得到跟单员和业务员和财务。 + if(isTrue){ + List<AdminUserRoleDO> list = adminUserRoleService.list(new LambdaQueryWrapper<AdminUserRoleDO>() + .eq(AdminUserRoleDO::getRoleId, Constant.SEVEN)); + userIds= list.stream().map(AdminUserRoleDO::getUserId).collect(Collectors.toSet()); + } + LambdaQueryWrapper<AdminUserDO> queryWrapper = new LambdaQueryWrapper<AdminUserDO>() .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) - .in(AdminUserDO::getUserName, Arrays.asList(checkBillOrderDO.getTrackerUser(), checkBillOrderDO.getBusinesPerson()))); - email = adminUserDOList.stream().filter(Objects::nonNull).map(AdminUserDO::getEmail).flatMap(emails -> Arrays.asList(emails.split("[,,]+")) + .and(wrapper -> wrapper + .in(AdminUserDO::getUserName, Arrays.asList(checkBillOrderDO.getTrackerUser(), checkBillOrderDO.getBusinesPerson()))); + if(CollectionUtils.isNotEmpty(userIds)){ + queryWrapper.or().in(AdminUserDO::getId,userIds); + } + List<AdminUserDO> adminUserDOList = adminUserService.list(queryWrapper); + email = adminUserDOList.stream().map(AdminUserDO::getEmail).filter(Objects::nonNull).flatMap(emails -> Arrays.asList(emails.split("[,,]+")) .stream()).map(String::trim).filter(s -> !s.isEmpty()).toArray(String[]::new); invoiceNoOrCheckNo=checkBillOrderDO.getCheckNo(); } diff --git a/src/main/java/com/order/erp/controller/InvoiceBillOrderController.java b/src/main/java/com/order/erp/controller/InvoiceBillOrderController.java index 944615e..81f9177 100644 --- a/src/main/java/com/order/erp/controller/InvoiceBillOrderController.java +++ b/src/main/java/com/order/erp/controller/InvoiceBillOrderController.java @@ -204,5 +204,15 @@ public class InvoiceBillOrderController { public ServerResult deleteDeductUrlById(@RequestBody InvoiceBillDeductInfoVO deleteVo) { return invoiceBillOrderService.deleteDeductUrlById(deleteVo); } + + /** + *最后一步,确认是否已经完成最终收款,即使审核通过之后,invoice的状态为已收款,这里的作用是在已收款状态的基础上,最后手动确认是否完成收款。人工校验。 + * @param invoiceBillDeductInfoVO id + * @return + */ + @PostMapping("/setFinishStatus") + public ServerResult isFinishStatus(@RequestBody InvoiceBillDeductInfoVO invoiceBillDeductInfoVO) { + return invoiceBillOrderService.isFinishStatus(invoiceBillDeductInfoVO); + } } diff --git a/src/main/java/com/order/erp/controller/ProducePaymentCheckBillOrderController.java b/src/main/java/com/order/erp/controller/ProducePaymentCheckBillOrderController.java index d258cf5..efdcb06 100644 --- a/src/main/java/com/order/erp/controller/ProducePaymentCheckBillOrderController.java +++ b/src/main/java/com/order/erp/controller/ProducePaymentCheckBillOrderController.java @@ -216,6 +216,16 @@ public class ProducePaymentCheckBillOrderController { public ServerResult deleteDeductUrlById( @RequestBody ProducePaymentCheckBillDeductInfoVO deleteVo){ return producePaymentCheckBillOrderService.deleteDeductUrlById(deleteVo); } + + /** + *最后一步,确认是否已经完成最终收款,即使审核通过之后,invoice的状态为已收款,这里的作用是在已收款状态的基础上,最后手动确认是否完成收款。人工校验。 + * @param producePaymentCheckBillInvoiceInfoVO id + * @return + */ + @PostMapping("/setFinishStatus") + public ServerResult isFinishStatus(@RequestBody ProducePaymentCheckBillInvoiceInfoVO producePaymentCheckBillInvoiceInfoVO) { + return producePaymentCheckBillOrderService.isFinishStatus(producePaymentCheckBillInvoiceInfoVO); + } } diff --git a/src/main/java/com/order/erp/domain/dto/order/InvoiceBillOrderDO.java b/src/main/java/com/order/erp/domain/dto/order/InvoiceBillOrderDO.java index 2543472..165a16c 100644 --- a/src/main/java/com/order/erp/domain/dto/order/InvoiceBillOrderDO.java +++ b/src/main/java/com/order/erp/domain/dto/order/InvoiceBillOrderDO.java @@ -108,4 +108,9 @@ public class InvoiceBillOrderDO extends BaseDO implements Serializable { * 备注信息 * */ private String notes; + + /** + * 最终完成状态,需要手动确认 状态 0:未完成,10:已完成 + * */ + private Integer finishStatus; } diff --git a/src/main/java/com/order/erp/domain/dto/order/ProducePaymentCheckBillOrderDO.java b/src/main/java/com/order/erp/domain/dto/order/ProducePaymentCheckBillOrderDO.java index b31931f..8819379 100644 --- a/src/main/java/com/order/erp/domain/dto/order/ProducePaymentCheckBillOrderDO.java +++ b/src/main/java/com/order/erp/domain/dto/order/ProducePaymentCheckBillOrderDO.java @@ -117,5 +117,10 @@ public class ProducePaymentCheckBillOrderDO extends BaseDO implements Serializab * 备注。 * */ private String notes; + /** + * 最终完成状态,需要手动确认 状态 0:未完成,10:已完成 + * */ + private Integer finishStatus; + } diff --git a/src/main/java/com/order/erp/domain/vo/order/FinanceOrderResultVO.java b/src/main/java/com/order/erp/domain/vo/order/FinanceOrderResultVO.java index 39e5d63..555bb1a 100644 --- a/src/main/java/com/order/erp/domain/vo/order/FinanceOrderResultVO.java +++ b/src/main/java/com/order/erp/domain/vo/order/FinanceOrderResultVO.java @@ -114,6 +114,10 @@ public class FinanceOrderResultVO extends OrderBaseInfoVO { * 备注信息 * */ private String invoiceNotes; + /** + * 最终确认,0:未完成 10:已完成 + * */ + private Integer invoiceFinishStatus; //应付款信息 // private ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO; @@ -166,7 +170,7 @@ public class FinanceOrderResultVO extends OrderBaseInfoVO { */ private BigDecimal checkActualPayedAmount3; /** - * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回 + * 总经理审核状态 -1:未创建、0:未收款,10:已付款 */ private Integer checkPayStatus; //需要在表中添加三个字段。 @@ -178,6 +182,10 @@ public class FinanceOrderResultVO extends OrderBaseInfoVO { * 备注。 * */ private String checkNotes; + /** + * 最终确认状态。0:未完成 10:已完成 + * */ + private Integer checkFinishStatus; //利润信息 diff --git a/src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrderQueryVO.java b/src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrderQueryVO.java index 9dec3f0..2af2f8a 100644 --- a/src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrderQueryVO.java +++ b/src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrderQueryVO.java @@ -120,5 +120,15 @@ public class InvoiceBillOrderQueryVO extends BasePageVO implements Serializable * 业务员 用来判断业务员只能看到业务员的数据 */ private String businessUserName; + + /** + * 最终确认状态 0:未完成,10:已完成 + */ + private Integer invoiceFinishStatus; + /** + * 最终确认状态 0:未完成,10:已完成 + */ + private Integer checkFinishStatus; + } diff --git a/src/main/java/com/order/erp/service/order/InvoiceBillOrderService.java b/src/main/java/com/order/erp/service/order/InvoiceBillOrderService.java index 46a0964..b8d076a 100644 --- a/src/main/java/com/order/erp/service/order/InvoiceBillOrderService.java +++ b/src/main/java/com/order/erp/service/order/InvoiceBillOrderService.java @@ -120,5 +120,6 @@ public interface InvoiceBillOrderService extends IService<InvoiceBillOrderDO> { ServerResult byIdAddNotes(InvoiceBillCreateVO createVO); ServerResult deleteDeductUrlById(InvoiceBillDeductInfoVO deleteVo); + ServerResult isFinishStatus(InvoiceBillDeductInfoVO invoiceBillDeductInfoVO); } diff --git a/src/main/java/com/order/erp/service/order/ProducePaymentCheckBillOrderService.java b/src/main/java/com/order/erp/service/order/ProducePaymentCheckBillOrderService.java index f443b1d..dc4ead6 100644 --- a/src/main/java/com/order/erp/service/order/ProducePaymentCheckBillOrderService.java +++ b/src/main/java/com/order/erp/service/order/ProducePaymentCheckBillOrderService.java @@ -111,4 +111,5 @@ public interface ProducePaymentCheckBillOrderService extends IService<ProducePay ServerResult setPayedDate(ProducePaymentCheckBillCreateVO createVO); ServerResult byIdAddNotes(ProducePaymentCheckBillCreateVO createVO); ServerResult deleteDeductUrlById(ProducePaymentCheckBillDeductInfoVO deleteVo); + ServerResult isFinishStatus(ProducePaymentCheckBillInvoiceInfoVO producePaymentCheckBillInvoiceInfoVO); } diff --git a/src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java index ed8c808..52e7111 100644 --- a/src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java +++ b/src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java @@ -980,6 +980,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap .bgUrl(createVO.getBgUrl()) .backRefundDate(createVO.getBackRefundDate()) .status(FinanceEnum.UNPAID_PAYMENTS.getStatus()) + .finishStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()) .businesPerson(x.getBusinessPerson()) .trackerUser(x.getCreateBy()) .build(); @@ -1207,7 +1208,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); invoiceAndCheckBillSendEmailVO.setInvoiceBillOrderDO(invoiceBillOrderDO.get(0)); - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_PASS,invoiceAndCheckBillSendEmailVO); + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_PASS,invoiceAndCheckBillSendEmailVO,true); }else{ applyDO = initOrderFieldLockApplyDO(invoiceFieldVO, userId,false); } @@ -1542,6 +1543,27 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap return ServerResult.success(); } + @Override + public ServerResult isFinishStatus(InvoiceBillDeductInfoVO invoiceBillDeductInfoVO) { + InvoiceBillOrderDO invoiceBillOrderDO = getById(invoiceBillDeductInfoVO.getId()); + if(Objects.nonNull(invoiceBillOrderDO)){ + if(!FinanceEnum.RECEIVED_PAYMENT.getStatus().equals(invoiceBillOrderDO.getStatus())){ + throw new BusinessException("该订单还没有完成最终收款,你无法设置最终状态为已完成!"); + } + List<InvoiceBillOrderDO> invoiceBillOrderDOList = list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) + .eq(InvoiceBillOrderDO::getInvoiceNo, invoiceBillOrderDO.getInvoiceNo()) + .eq(InvoiceBillOrderDO::getStatus, FinanceEnum.RECEIVED_PAYMENT.getStatus())); + if(CollectionUtils.isNotEmpty(invoiceBillOrderDOList)){ + List<InvoiceBillOrderDO> finishSatusList = invoiceBillOrderDOList.stream().map(x -> { + x.setFinishStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); + return x; + }).collect(Collectors.toList()); + updateBatchById(finishSatusList); + } + } + return ServerResult.success(); + } + public void createMergedCell(Sheet sheet, Workbook workbook, int rowIndex, int colIndex, int startRow, int endRow, int startCol, int endCol, String value) { // 创建或获取当前行 diff --git a/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java index a2bb395..fa7a503 100644 --- a/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java +++ b/src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java @@ -570,7 +570,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); invoiceAndCheckBillSendEmailVO.setInvoiceBillOrderDO(invoiceBillOrderDOS.get(0)); invoiceAndCheckBillSendEmailVO.setRefuseRemark(refuseRemark); - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_FAIL,invoiceAndCheckBillSendEmailVO); + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_FAIL,invoiceAndCheckBillSendEmailVO,true); } } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); @@ -610,7 +610,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(producePaymentCheckBillOrderDOS.get(0)); invoiceAndCheckBillSendEmailVO.setRefuseRemark(refuseRemark); - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_FAIL,invoiceAndCheckBillSendEmailVO); + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_FAIL,invoiceAndCheckBillSendEmailVO,false); } } else if(ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())){ @@ -641,7 +641,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(invoiceInfoDO); invoiceAndCheckBillSendEmailVO.setRefuseRemark(refuseRemark); - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_INVOICEURL_FAIL,invoiceAndCheckBillSendEmailVO); + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_INVOICEURL_FAIL,invoiceAndCheckBillSendEmailVO,false); } OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_REFUSE.getDesc()).build(); @@ -793,7 +793,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); invoiceAndCheckBillSendEmailVO.setInvoiceBillOrderDO(invoiceeBillOrderDOs.get(0)); - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_PASS,invoiceAndCheckBillSendEmailVO); + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_PASS,invoiceAndCheckBillSendEmailVO,true); } } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { applyDO.setAuditUserId(auditUserId); @@ -834,7 +834,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(producePaymentCheckBillOrderDOS.get(0)); - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_PASS,invoiceAndCheckBillSendEmailVO); + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_PASS,invoiceAndCheckBillSendEmailVO,true); } } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { @@ -865,7 +865,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp //发送邮件通知跟单员和业务员。 InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(invoiceInfoDO); - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_INVOICEURL_PASS,invoiceAndCheckBillSendEmailVO); + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_INVOICEURL_PASS,invoiceAndCheckBillSendEmailVO,true); } OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_PASS.getDesc()).build(); diff --git a/src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java b/src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java index c727f9b..cc6f91d 100644 --- a/src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java +++ b/src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java @@ -818,6 +818,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce .orderId(x.getId()) .payedDate(createVO.getPayedDate()) .status(FinanceEnum.UNPAID_PAYMENTS.getStatus()) + .finishStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()) .productionName(x.getProductionDepartment()) .businesPerson(x.getBusinessPerson()) .trackerUser(x.getCreateBy()) @@ -1094,7 +1095,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(producePaymentCheckBillOrderDOS.get(0)); - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_PASS,invoiceAndCheckBillSendEmailVO); + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_PASS,invoiceAndCheckBillSendEmailVO,true); }else{ applyDO = initOrderFieldLockApplyDO(producePaymentCheckBillFieldVO, userId,false); } @@ -1371,6 +1372,27 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce } @Override + public ServerResult isFinishStatus(ProducePaymentCheckBillInvoiceInfoVO producePaymentCheckBillInvoiceInfoVO) { + ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO = getById(producePaymentCheckBillInvoiceInfoVO.getId()); + if(Objects.nonNull(producePaymentCheckBillOrderDO)){ + if(!FinanceEnum.RECEIVED_PAYMENT.getStatus().equals(producePaymentCheckBillOrderDO.getStatus())){ + throw new BusinessException("该订单还没有完成最终付款,无法设置最终状态为已完成!"); + } + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList = list(new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) + .eq(ProducePaymentCheckBillOrderDO::getStatus, FinanceEnum.RECEIVED_PAYMENT.getStatus()) + .eq(ProducePaymentCheckBillOrderDO::getCheckNo, producePaymentCheckBillOrderDO.getCheckNo())); + if(CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOList)){ + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS = producePaymentCheckBillOrderDOList.stream().map(x -> { + x.setFinishStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); + return x; + }).collect(Collectors.toList()); + updateBatchById(producePaymentCheckBillOrderDOS); + } + } + return ServerResult.success(); + } + + @Override public ServerResult exportReceipt(HttpServletResponse response,CheckBillExportReceiptVO queryVO) throws IOException { XSSFWorkbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("付款单"); diff --git a/src/main/resources/mapper/InvoiceBillOrderMapper.xml b/src/main/resources/mapper/InvoiceBillOrderMapper.xml index 5c622f2..2e5e103 100644 --- a/src/main/resources/mapper/InvoiceBillOrderMapper.xml +++ b/src/main/resources/mapper/InvoiceBillOrderMapper.xml @@ -98,6 +98,7 @@ i.status AS invoiceStatus, -- invoice状态 i.deduct_amount AS invoiceDeductAmount, -- 扣款金额 i.notes AS invoiceNotes, -- invoice备注 + i.finish_status AS invoiceFinishStatus, -- 生产科付款信息 p.id AS checkId, p.check_no AS checkNo, -- checkNo编号 @@ -113,7 +114,8 @@ p.payed_date AS checkPayedDate, -- 必须付款日期 p.deduct_url AS checkDeductUrl, -- 扣款单 p.notes AS checkNotes, -- checkNo备注 - p.invoice_url AS checkInvoiceUrl -- 发票 + p.invoice_url AS checkInvoiceUrl, -- 发票 + p.finish_status AS checkFinishStatus FROM order_base_info o LEFT JOIN invoice_bill_order AS i ON o.id = i.order_id AND i.enable_flag = 10 @@ -134,6 +136,12 @@ <if test="queryVO.checkNoStatus != null"> AND o.check_status = #{queryVO.checkNoStatus} </if> + <if test="queryVO.invoiceFinishStatus != null"> + AND i.finish_status = #{queryVO.invoiceFinishStatus} + </if> + <if test="queryVO.checkFinishStatus != null"> + AND p.finish_status = #{queryVO.checkFinishStatus} + </if> <if test="queryVO.customerCode != null and queryVO.customerCode.size > 0 "> AND o.customer_code IN <foreach collection="queryVO.customerCode" item="customerCode" open="(" separator="," close=")"> @@ -227,6 +235,12 @@ <if test="queryVO.checkNoStatus != null"> AND o.check_status = #{queryVO.checkNoStatus} </if> + <if test="queryVO.invoiceFinishStatus != null"> + AND i.finish_status = #{queryVO.invoiceFinishStatus} + </if> + <if test="queryVO.checkFinishStatus != null"> + AND p.finish_status = #{queryVO.checkFinishStatus} + </if> <if test="queryVO.customerCode != null and queryVO.customerCode.size > 0 "> AND o.customer_code IN <foreach collection="queryVO.customerCode" item="customerCode" open="(" separator="," close=")"> -- libgit2 0.23.3