Commit fd3c0b52daff100988817de4054ab2bd8e592e40
1 parent
9cbf19cf
feat:1.新增最终状态设置。
fix:1.修复自动发送邮件时,添加财务人员。
Showing
13 changed files
with
150 additions
and
25 deletions
src/main/java/com/order/erp/common/utils/EmailSendUtils.java
... | ... | @@ -9,11 +9,13 @@ import com.order.erp.domain.EmailTemplateEnum; |
9 | 9 | import com.order.erp.domain.FinanceOverEnum; |
10 | 10 | import com.order.erp.domain.dto.BaseDO; |
11 | 11 | import com.order.erp.domain.dto.admin.AdminUserDO; |
12 | +import com.order.erp.domain.dto.admin.AdminUserRoleDO; | |
12 | 13 | import com.order.erp.domain.dto.order.InvoiceBillOrderDO; |
13 | 14 | import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; |
14 | 15 | import com.order.erp.domain.vo.order.FinanceEventJobVO; |
15 | 16 | import com.order.erp.domain.vo.order.InvoiceAndCheckBillSendEmailVO; |
16 | 17 | import com.order.erp.domain.vo.order.OrderEventJobVO; |
18 | +import com.order.erp.service.admin.AdminUserRoleService; | |
17 | 19 | import com.order.erp.service.admin.AdminUserService; |
18 | 20 | import freemarker.template.Template; |
19 | 21 | import freemarker.template.TemplateException; |
... | ... | @@ -30,6 +32,7 @@ import java.io.File; |
30 | 32 | import java.io.IOException; |
31 | 33 | import java.io.StringWriter; |
32 | 34 | import java.util.*; |
35 | +import java.util.stream.Collectors; | |
33 | 36 | |
34 | 37 | /** |
35 | 38 | * @Author:ch |
... | ... | @@ -45,6 +48,8 @@ public class EmailSendUtils { |
45 | 48 | private FreeMarkerConfigurer freeMarkerConfigurer; |
46 | 49 | @Resource |
47 | 50 | private AdminUserService adminUserService; |
51 | + @Resource | |
52 | + private AdminUserRoleService adminUserRoleService; | |
48 | 53 | |
49 | 54 | /** |
50 | 55 | * @Description: 发送邮件 发送尾期验货报告,中期验货报告,邮件提醒事件。 |
... | ... | @@ -283,7 +288,7 @@ public class EmailSendUtils { |
283 | 288 | * @throws IOException |
284 | 289 | */ |
285 | 290 | @Async |
286 | - public void sendInvoiceAndCheckEmail(FinanceOverEnum emailTemplateEnum, InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO) { | |
291 | + public void sendInvoiceAndCheckEmail(FinanceOverEnum emailTemplateEnum, InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO,boolean isTrue) { | |
287 | 292 | if(emailTemplateEnum ==null && ObjectUtils.isNull(invoiceAndCheckBillSendEmailVO)){ |
288 | 293 | throw new BusinessException(ServerResultCode.PARAM_ERROR); |
289 | 294 | } |
... | ... | @@ -293,26 +298,38 @@ public class EmailSendUtils { |
293 | 298 | String invoiceNoOrCheckNo; |
294 | 299 | if(invoiceAndCheckBillSendEmailVO.getInvoiceBillOrderDO()!=null){ |
295 | 300 | InvoiceBillOrderDO invoiceBillOrderDO=invoiceAndCheckBillSendEmailVO.getInvoiceBillOrderDO(); |
296 | - //得到提交人 | |
297 | - AdminUserDO adminUserDO = adminUserService.getOne(new LambdaQueryWrapper<AdminUserDO>() | |
301 | + //得到财务提交人以及业务员和跟单员。 | |
302 | + List<AdminUserDO> adminUserDOList = adminUserService.list(new LambdaQueryWrapper<AdminUserDO>() | |
298 | 303 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
299 | - .eq(AdminUserDO::getUserName, invoiceBillOrderDO.getFinancePerson()) | |
300 | - .last("limit 1")); | |
301 | - | |
302 | - if(Objects.nonNull(adminUserDO)){ | |
303 | - String emails=adminUserDO.getEmail(); | |
304 | - if(StringUtils.isNotBlank(emails)){ | |
305 | - email = emails.split("[,,]+"); | |
306 | - } | |
304 | + .in(AdminUserDO::getUserName, Arrays.asList(invoiceBillOrderDO.getTrackerUser(),invoiceBillOrderDO.getBusinesPerson(),invoiceBillOrderDO.getFinancePerson()))); | |
305 | + if(CollectionUtils.isNotEmpty(adminUserDOList)){ | |
306 | + email = adminUserDOList.stream() | |
307 | + .map(AdminUserDO::getEmail) // 提取 email | |
308 | + .filter(Objects::nonNull) // 过滤掉 null 的 email | |
309 | + .flatMap(emails -> Arrays.stream(emails.split("[,,]+"))) // 按逗号或中文逗号分割 email | |
310 | + .map(String::trim) // 去除空格 | |
311 | + .filter(s -> !s.isEmpty()) // 过滤掉空字符串 | |
312 | + .toArray(String[]::new); // 转换为 String[] 数组 | |
307 | 313 | } |
308 | 314 | invoiceNoOrCheckNo = invoiceBillOrderDO.getInvoiceNo(); |
309 | 315 | }else{ |
310 | 316 | ProducePaymentCheckBillOrderDO checkBillOrderDO = invoiceAndCheckBillSendEmailVO.getCheckBillOrderDO(); |
311 | - //得到跟单员和业务员。 | |
312 | - List<AdminUserDO> adminUserDOList = adminUserService.list(new LambdaQueryWrapper<AdminUserDO>() | |
317 | + Set<Long> userIds = null; | |
318 | + //得到跟单员和业务员和财务。 | |
319 | + if(isTrue){ | |
320 | + List<AdminUserRoleDO> list = adminUserRoleService.list(new LambdaQueryWrapper<AdminUserRoleDO>() | |
321 | + .eq(AdminUserRoleDO::getRoleId, Constant.SEVEN)); | |
322 | + userIds= list.stream().map(AdminUserRoleDO::getUserId).collect(Collectors.toSet()); | |
323 | + } | |
324 | + LambdaQueryWrapper<AdminUserDO> queryWrapper = new LambdaQueryWrapper<AdminUserDO>() | |
313 | 325 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) |
314 | - .in(AdminUserDO::getUserName, Arrays.asList(checkBillOrderDO.getTrackerUser(), checkBillOrderDO.getBusinesPerson()))); | |
315 | - email = adminUserDOList.stream().filter(Objects::nonNull).map(AdminUserDO::getEmail).flatMap(emails -> Arrays.asList(emails.split("[,,]+")) | |
326 | + .and(wrapper -> wrapper | |
327 | + .in(AdminUserDO::getUserName, Arrays.asList(checkBillOrderDO.getTrackerUser(), checkBillOrderDO.getBusinesPerson()))); | |
328 | + if(CollectionUtils.isNotEmpty(userIds)){ | |
329 | + queryWrapper.or().in(AdminUserDO::getId,userIds); | |
330 | + } | |
331 | + List<AdminUserDO> adminUserDOList = adminUserService.list(queryWrapper); | |
332 | + email = adminUserDOList.stream().map(AdminUserDO::getEmail).filter(Objects::nonNull).flatMap(emails -> Arrays.asList(emails.split("[,,]+")) | |
316 | 333 | .stream()).map(String::trim).filter(s -> !s.isEmpty()).toArray(String[]::new); |
317 | 334 | invoiceNoOrCheckNo=checkBillOrderDO.getCheckNo(); |
318 | 335 | } | ... | ... |
src/main/java/com/order/erp/controller/InvoiceBillOrderController.java
... | ... | @@ -204,5 +204,15 @@ public class InvoiceBillOrderController { |
204 | 204 | public ServerResult deleteDeductUrlById(@RequestBody InvoiceBillDeductInfoVO deleteVo) { |
205 | 205 | return invoiceBillOrderService.deleteDeductUrlById(deleteVo); |
206 | 206 | } |
207 | + | |
208 | + /** | |
209 | + *最后一步,确认是否已经完成最终收款,即使审核通过之后,invoice的状态为已收款,这里的作用是在已收款状态的基础上,最后手动确认是否完成收款。人工校验。 | |
210 | + * @param invoiceBillDeductInfoVO id | |
211 | + * @return | |
212 | + */ | |
213 | + @PostMapping("/setFinishStatus") | |
214 | + public ServerResult isFinishStatus(@RequestBody InvoiceBillDeductInfoVO invoiceBillDeductInfoVO) { | |
215 | + return invoiceBillOrderService.isFinishStatus(invoiceBillDeductInfoVO); | |
216 | + } | |
207 | 217 | } |
208 | 218 | ... | ... |
src/main/java/com/order/erp/controller/ProducePaymentCheckBillOrderController.java
... | ... | @@ -216,6 +216,16 @@ public class ProducePaymentCheckBillOrderController { |
216 | 216 | public ServerResult deleteDeductUrlById( @RequestBody ProducePaymentCheckBillDeductInfoVO deleteVo){ |
217 | 217 | return producePaymentCheckBillOrderService.deleteDeductUrlById(deleteVo); |
218 | 218 | } |
219 | + | |
220 | + /** | |
221 | + *最后一步,确认是否已经完成最终收款,即使审核通过之后,invoice的状态为已收款,这里的作用是在已收款状态的基础上,最后手动确认是否完成收款。人工校验。 | |
222 | + * @param producePaymentCheckBillInvoiceInfoVO id | |
223 | + * @return | |
224 | + */ | |
225 | + @PostMapping("/setFinishStatus") | |
226 | + public ServerResult isFinishStatus(@RequestBody ProducePaymentCheckBillInvoiceInfoVO producePaymentCheckBillInvoiceInfoVO) { | |
227 | + return producePaymentCheckBillOrderService.isFinishStatus(producePaymentCheckBillInvoiceInfoVO); | |
228 | + } | |
219 | 229 | } |
220 | 230 | |
221 | 231 | ... | ... |
src/main/java/com/order/erp/domain/dto/order/InvoiceBillOrderDO.java
src/main/java/com/order/erp/domain/dto/order/ProducePaymentCheckBillOrderDO.java
src/main/java/com/order/erp/domain/vo/order/FinanceOrderResultVO.java
... | ... | @@ -114,6 +114,10 @@ public class FinanceOrderResultVO extends OrderBaseInfoVO { |
114 | 114 | * 备注信息 |
115 | 115 | * */ |
116 | 116 | private String invoiceNotes; |
117 | + /** | |
118 | + * 最终确认,0:未完成 10:已完成 | |
119 | + * */ | |
120 | + private Integer invoiceFinishStatus; | |
117 | 121 | |
118 | 122 | //应付款信息 |
119 | 123 | // private ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO; |
... | ... | @@ -166,7 +170,7 @@ public class FinanceOrderResultVO extends OrderBaseInfoVO { |
166 | 170 | */ |
167 | 171 | private BigDecimal checkActualPayedAmount3; |
168 | 172 | /** |
169 | - * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回 | |
173 | + * 总经理审核状态 -1:未创建、0:未收款,10:已付款 | |
170 | 174 | */ |
171 | 175 | private Integer checkPayStatus; |
172 | 176 | //需要在表中添加三个字段。 |
... | ... | @@ -178,6 +182,10 @@ public class FinanceOrderResultVO extends OrderBaseInfoVO { |
178 | 182 | * 备注。 |
179 | 183 | * */ |
180 | 184 | private String checkNotes; |
185 | + /** | |
186 | + * 最终确认状态。0:未完成 10:已完成 | |
187 | + * */ | |
188 | + private Integer checkFinishStatus; | |
181 | 189 | |
182 | 190 | |
183 | 191 | //利润信息 | ... | ... |
src/main/java/com/order/erp/domain/vo/order/InvoiceBillOrderQueryVO.java
... | ... | @@ -120,5 +120,15 @@ public class InvoiceBillOrderQueryVO extends BasePageVO implements Serializable |
120 | 120 | * 业务员 用来判断业务员只能看到业务员的数据 |
121 | 121 | */ |
122 | 122 | private String businessUserName; |
123 | + | |
124 | + /** | |
125 | + * 最终确认状态 0:未完成,10:已完成 | |
126 | + */ | |
127 | + private Integer invoiceFinishStatus; | |
128 | + /** | |
129 | + * 最终确认状态 0:未完成,10:已完成 | |
130 | + */ | |
131 | + private Integer checkFinishStatus; | |
132 | + | |
123 | 133 | } |
124 | 134 | ... | ... |
src/main/java/com/order/erp/service/order/InvoiceBillOrderService.java
... | ... | @@ -120,5 +120,6 @@ public interface InvoiceBillOrderService extends IService<InvoiceBillOrderDO> { |
120 | 120 | ServerResult byIdAddNotes(InvoiceBillCreateVO createVO); |
121 | 121 | |
122 | 122 | ServerResult deleteDeductUrlById(InvoiceBillDeductInfoVO deleteVo); |
123 | + ServerResult isFinishStatus(InvoiceBillDeductInfoVO invoiceBillDeductInfoVO); | |
123 | 124 | |
124 | 125 | } | ... | ... |
src/main/java/com/order/erp/service/order/ProducePaymentCheckBillOrderService.java
... | ... | @@ -111,4 +111,5 @@ public interface ProducePaymentCheckBillOrderService extends IService<ProducePay |
111 | 111 | ServerResult setPayedDate(ProducePaymentCheckBillCreateVO createVO); |
112 | 112 | ServerResult byIdAddNotes(ProducePaymentCheckBillCreateVO createVO); |
113 | 113 | ServerResult deleteDeductUrlById(ProducePaymentCheckBillDeductInfoVO deleteVo); |
114 | + ServerResult isFinishStatus(ProducePaymentCheckBillInvoiceInfoVO producePaymentCheckBillInvoiceInfoVO); | |
114 | 115 | } | ... | ... |
src/main/java/com/order/erp/service/order/impl/InvoiceBillOrderServiceImpl.java
... | ... | @@ -980,6 +980,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
980 | 980 | .bgUrl(createVO.getBgUrl()) |
981 | 981 | .backRefundDate(createVO.getBackRefundDate()) |
982 | 982 | .status(FinanceEnum.UNPAID_PAYMENTS.getStatus()) |
983 | + .finishStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()) | |
983 | 984 | .businesPerson(x.getBusinessPerson()) |
984 | 985 | .trackerUser(x.getCreateBy()) |
985 | 986 | .build(); |
... | ... | @@ -1207,7 +1208,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
1207 | 1208 | //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 |
1208 | 1209 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
1209 | 1210 | invoiceAndCheckBillSendEmailVO.setInvoiceBillOrderDO(invoiceBillOrderDO.get(0)); |
1210 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_PASS,invoiceAndCheckBillSendEmailVO); | |
1211 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_PASS,invoiceAndCheckBillSendEmailVO,true); | |
1211 | 1212 | }else{ |
1212 | 1213 | applyDO = initOrderFieldLockApplyDO(invoiceFieldVO, userId,false); |
1213 | 1214 | } |
... | ... | @@ -1542,6 +1543,27 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap |
1542 | 1543 | return ServerResult.success(); |
1543 | 1544 | } |
1544 | 1545 | |
1546 | + @Override | |
1547 | + public ServerResult isFinishStatus(InvoiceBillDeductInfoVO invoiceBillDeductInfoVO) { | |
1548 | + InvoiceBillOrderDO invoiceBillOrderDO = getById(invoiceBillDeductInfoVO.getId()); | |
1549 | + if(Objects.nonNull(invoiceBillOrderDO)){ | |
1550 | + if(!FinanceEnum.RECEIVED_PAYMENT.getStatus().equals(invoiceBillOrderDO.getStatus())){ | |
1551 | + throw new BusinessException("该订单还没有完成最终收款,你无法设置最终状态为已完成!"); | |
1552 | + } | |
1553 | + List<InvoiceBillOrderDO> invoiceBillOrderDOList = list(new LambdaQueryWrapper<InvoiceBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
1554 | + .eq(InvoiceBillOrderDO::getInvoiceNo, invoiceBillOrderDO.getInvoiceNo()) | |
1555 | + .eq(InvoiceBillOrderDO::getStatus, FinanceEnum.RECEIVED_PAYMENT.getStatus())); | |
1556 | + if(CollectionUtils.isNotEmpty(invoiceBillOrderDOList)){ | |
1557 | + List<InvoiceBillOrderDO> finishSatusList = invoiceBillOrderDOList.stream().map(x -> { | |
1558 | + x.setFinishStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); | |
1559 | + return x; | |
1560 | + }).collect(Collectors.toList()); | |
1561 | + updateBatchById(finishSatusList); | |
1562 | + } | |
1563 | + } | |
1564 | + return ServerResult.success(); | |
1565 | + } | |
1566 | + | |
1545 | 1567 | |
1546 | 1568 | public void createMergedCell(Sheet sheet, Workbook workbook, int rowIndex, int colIndex, int startRow, int endRow, int startCol, int endCol, String value) { |
1547 | 1569 | // 创建或获取当前行 | ... | ... |
src/main/java/com/order/erp/service/order/impl/OrderFieldLockApplyServiceImpl.java
... | ... | @@ -570,7 +570,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
570 | 570 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
571 | 571 | invoiceAndCheckBillSendEmailVO.setInvoiceBillOrderDO(invoiceBillOrderDOS.get(0)); |
572 | 572 | invoiceAndCheckBillSendEmailVO.setRefuseRemark(refuseRemark); |
573 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_FAIL,invoiceAndCheckBillSendEmailVO); | |
573 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_FAIL,invoiceAndCheckBillSendEmailVO,true); | |
574 | 574 | } |
575 | 575 | } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { |
576 | 576 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
... | ... | @@ -610,7 +610,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
610 | 610 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
611 | 611 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(producePaymentCheckBillOrderDOS.get(0)); |
612 | 612 | invoiceAndCheckBillSendEmailVO.setRefuseRemark(refuseRemark); |
613 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_FAIL,invoiceAndCheckBillSendEmailVO); | |
613 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_FAIL,invoiceAndCheckBillSendEmailVO,false); | |
614 | 614 | } |
615 | 615 | |
616 | 616 | } else if(ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())){ |
... | ... | @@ -641,7 +641,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
641 | 641 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
642 | 642 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(invoiceInfoDO); |
643 | 643 | invoiceAndCheckBillSendEmailVO.setRefuseRemark(refuseRemark); |
644 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_INVOICEURL_FAIL,invoiceAndCheckBillSendEmailVO); | |
644 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_INVOICEURL_FAIL,invoiceAndCheckBillSendEmailVO,false); | |
645 | 645 | } |
646 | 646 | |
647 | 647 | 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 |
793 | 793 | //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 |
794 | 794 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
795 | 795 | invoiceAndCheckBillSendEmailVO.setInvoiceBillOrderDO(invoiceeBillOrderDOs.get(0)); |
796 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_PASS,invoiceAndCheckBillSendEmailVO); | |
796 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_PASS,invoiceAndCheckBillSendEmailVO,true); | |
797 | 797 | } |
798 | 798 | } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { |
799 | 799 | applyDO.setAuditUserId(auditUserId); |
... | ... | @@ -834,7 +834,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
834 | 834 | //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 |
835 | 835 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
836 | 836 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(producePaymentCheckBillOrderDOS.get(0)); |
837 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_PASS,invoiceAndCheckBillSendEmailVO); | |
837 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_PASS,invoiceAndCheckBillSendEmailVO,true); | |
838 | 838 | |
839 | 839 | } |
840 | 840 | } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { |
... | ... | @@ -865,7 +865,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp |
865 | 865 | //发送邮件通知跟单员和业务员。 |
866 | 866 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
867 | 867 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(invoiceInfoDO); |
868 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_INVOICEURL_PASS,invoiceAndCheckBillSendEmailVO); | |
868 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_INVOICEURL_PASS,invoiceAndCheckBillSendEmailVO,true); | |
869 | 869 | } |
870 | 870 | |
871 | 871 | OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_PASS.getDesc()).build(); | ... | ... |
src/main/java/com/order/erp/service/order/impl/ProducePaymentCheckBillOrderServiceImpl.java
... | ... | @@ -818,6 +818,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
818 | 818 | .orderId(x.getId()) |
819 | 819 | .payedDate(createVO.getPayedDate()) |
820 | 820 | .status(FinanceEnum.UNPAID_PAYMENTS.getStatus()) |
821 | + .finishStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()) | |
821 | 822 | .productionName(x.getProductionDepartment()) |
822 | 823 | .businesPerson(x.getBusinessPerson()) |
823 | 824 | .trackerUser(x.getCreateBy()) |
... | ... | @@ -1094,7 +1095,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
1094 | 1095 | //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 |
1095 | 1096 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
1096 | 1097 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(producePaymentCheckBillOrderDOS.get(0)); |
1097 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_PASS,invoiceAndCheckBillSendEmailVO); | |
1098 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_PASS,invoiceAndCheckBillSendEmailVO,true); | |
1098 | 1099 | }else{ |
1099 | 1100 | applyDO = initOrderFieldLockApplyDO(producePaymentCheckBillFieldVO, userId,false); |
1100 | 1101 | } |
... | ... | @@ -1371,6 +1372,27 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce |
1371 | 1372 | } |
1372 | 1373 | |
1373 | 1374 | @Override |
1375 | + public ServerResult isFinishStatus(ProducePaymentCheckBillInvoiceInfoVO producePaymentCheckBillInvoiceInfoVO) { | |
1376 | + ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO = getById(producePaymentCheckBillInvoiceInfoVO.getId()); | |
1377 | + if(Objects.nonNull(producePaymentCheckBillOrderDO)){ | |
1378 | + if(!FinanceEnum.RECEIVED_PAYMENT.getStatus().equals(producePaymentCheckBillOrderDO.getStatus())){ | |
1379 | + throw new BusinessException("该订单还没有完成最终付款,无法设置最终状态为已完成!"); | |
1380 | + } | |
1381 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOList = list(new LambdaQueryWrapper<ProducePaymentCheckBillOrderDO>().eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | |
1382 | + .eq(ProducePaymentCheckBillOrderDO::getStatus, FinanceEnum.RECEIVED_PAYMENT.getStatus()) | |
1383 | + .eq(ProducePaymentCheckBillOrderDO::getCheckNo, producePaymentCheckBillOrderDO.getCheckNo())); | |
1384 | + if(CollectionUtils.isNotEmpty(producePaymentCheckBillOrderDOList)){ | |
1385 | + List<ProducePaymentCheckBillOrderDO> producePaymentCheckBillOrderDOS = producePaymentCheckBillOrderDOList.stream().map(x -> { | |
1386 | + x.setFinishStatus(FinanceEnum.RECEIVED_PAYMENT.getStatus()); | |
1387 | + return x; | |
1388 | + }).collect(Collectors.toList()); | |
1389 | + updateBatchById(producePaymentCheckBillOrderDOS); | |
1390 | + } | |
1391 | + } | |
1392 | + return ServerResult.success(); | |
1393 | + } | |
1394 | + | |
1395 | + @Override | |
1374 | 1396 | public ServerResult exportReceipt(HttpServletResponse response,CheckBillExportReceiptVO queryVO) throws IOException { |
1375 | 1397 | XSSFWorkbook workbook = new XSSFWorkbook(); |
1376 | 1398 | Sheet sheet = workbook.createSheet("付款单"); | ... | ... |
src/main/resources/mapper/InvoiceBillOrderMapper.xml
... | ... | @@ -98,6 +98,7 @@ |
98 | 98 | i.status AS invoiceStatus, -- invoice状态 |
99 | 99 | i.deduct_amount AS invoiceDeductAmount, -- 扣款金额 |
100 | 100 | i.notes AS invoiceNotes, -- invoice备注 |
101 | + i.finish_status AS invoiceFinishStatus, | |
101 | 102 | -- 生产科付款信息 |
102 | 103 | p.id AS checkId, |
103 | 104 | p.check_no AS checkNo, -- checkNo编号 |
... | ... | @@ -113,7 +114,8 @@ |
113 | 114 | p.payed_date AS checkPayedDate, -- 必须付款日期 |
114 | 115 | p.deduct_url AS checkDeductUrl, -- 扣款单 |
115 | 116 | p.notes AS checkNotes, -- checkNo备注 |
116 | - p.invoice_url AS checkInvoiceUrl -- 发票 | |
117 | + p.invoice_url AS checkInvoiceUrl, -- 发票 | |
118 | + p.finish_status AS checkFinishStatus | |
117 | 119 | FROM order_base_info o |
118 | 120 | LEFT JOIN invoice_bill_order AS i |
119 | 121 | ON o.id = i.order_id AND i.enable_flag = 10 |
... | ... | @@ -134,6 +136,12 @@ |
134 | 136 | <if test="queryVO.checkNoStatus != null"> |
135 | 137 | AND o.check_status = #{queryVO.checkNoStatus} |
136 | 138 | </if> |
139 | + <if test="queryVO.invoiceFinishStatus != null"> | |
140 | + AND i.finish_status = #{queryVO.invoiceFinishStatus} | |
141 | + </if> | |
142 | + <if test="queryVO.checkFinishStatus != null"> | |
143 | + AND p.finish_status = #{queryVO.checkFinishStatus} | |
144 | + </if> | |
137 | 145 | <if test="queryVO.customerCode != null and queryVO.customerCode.size > 0 "> |
138 | 146 | AND o.customer_code IN |
139 | 147 | <foreach collection="queryVO.customerCode" item="customerCode" open="(" separator="," close=")"> |
... | ... | @@ -227,6 +235,12 @@ |
227 | 235 | <if test="queryVO.checkNoStatus != null"> |
228 | 236 | AND o.check_status = #{queryVO.checkNoStatus} |
229 | 237 | </if> |
238 | + <if test="queryVO.invoiceFinishStatus != null"> | |
239 | + AND i.finish_status = #{queryVO.invoiceFinishStatus} | |
240 | + </if> | |
241 | + <if test="queryVO.checkFinishStatus != null"> | |
242 | + AND p.finish_status = #{queryVO.checkFinishStatus} | |
243 | + </if> | |
230 | 244 | <if test="queryVO.customerCode != null and queryVO.customerCode.size > 0 "> |
231 | 245 | AND o.customer_code IN |
232 | 246 | <foreach collection="queryVO.customerCode" item="customerCode" open="(" separator="," close=")"> | ... | ... |