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,11 +9,13 @@ import com.order.erp.domain.EmailTemplateEnum; | ||
9 | import com.order.erp.domain.FinanceOverEnum; | 9 | import com.order.erp.domain.FinanceOverEnum; |
10 | import com.order.erp.domain.dto.BaseDO; | 10 | import com.order.erp.domain.dto.BaseDO; |
11 | import com.order.erp.domain.dto.admin.AdminUserDO; | 11 | import com.order.erp.domain.dto.admin.AdminUserDO; |
12 | +import com.order.erp.domain.dto.admin.AdminUserRoleDO; | ||
12 | import com.order.erp.domain.dto.order.InvoiceBillOrderDO; | 13 | import com.order.erp.domain.dto.order.InvoiceBillOrderDO; |
13 | import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; | 14 | import com.order.erp.domain.dto.order.ProducePaymentCheckBillOrderDO; |
14 | import com.order.erp.domain.vo.order.FinanceEventJobVO; | 15 | import com.order.erp.domain.vo.order.FinanceEventJobVO; |
15 | import com.order.erp.domain.vo.order.InvoiceAndCheckBillSendEmailVO; | 16 | import com.order.erp.domain.vo.order.InvoiceAndCheckBillSendEmailVO; |
16 | import com.order.erp.domain.vo.order.OrderEventJobVO; | 17 | import com.order.erp.domain.vo.order.OrderEventJobVO; |
18 | +import com.order.erp.service.admin.AdminUserRoleService; | ||
17 | import com.order.erp.service.admin.AdminUserService; | 19 | import com.order.erp.service.admin.AdminUserService; |
18 | import freemarker.template.Template; | 20 | import freemarker.template.Template; |
19 | import freemarker.template.TemplateException; | 21 | import freemarker.template.TemplateException; |
@@ -30,6 +32,7 @@ import java.io.File; | @@ -30,6 +32,7 @@ import java.io.File; | ||
30 | import java.io.IOException; | 32 | import java.io.IOException; |
31 | import java.io.StringWriter; | 33 | import java.io.StringWriter; |
32 | import java.util.*; | 34 | import java.util.*; |
35 | +import java.util.stream.Collectors; | ||
33 | 36 | ||
34 | /** | 37 | /** |
35 | * @Author:ch | 38 | * @Author:ch |
@@ -45,6 +48,8 @@ public class EmailSendUtils { | @@ -45,6 +48,8 @@ public class EmailSendUtils { | ||
45 | private FreeMarkerConfigurer freeMarkerConfigurer; | 48 | private FreeMarkerConfigurer freeMarkerConfigurer; |
46 | @Resource | 49 | @Resource |
47 | private AdminUserService adminUserService; | 50 | private AdminUserService adminUserService; |
51 | + @Resource | ||
52 | + private AdminUserRoleService adminUserRoleService; | ||
48 | 53 | ||
49 | /** | 54 | /** |
50 | * @Description: 发送邮件 发送尾期验货报告,中期验货报告,邮件提醒事件。 | 55 | * @Description: 发送邮件 发送尾期验货报告,中期验货报告,邮件提醒事件。 |
@@ -283,7 +288,7 @@ public class EmailSendUtils { | @@ -283,7 +288,7 @@ public class EmailSendUtils { | ||
283 | * @throws IOException | 288 | * @throws IOException |
284 | */ | 289 | */ |
285 | @Async | 290 | @Async |
286 | - public void sendInvoiceAndCheckEmail(FinanceOverEnum emailTemplateEnum, InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO) { | 291 | + public void sendInvoiceAndCheckEmail(FinanceOverEnum emailTemplateEnum, InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO,boolean isTrue) { |
287 | if(emailTemplateEnum ==null && ObjectUtils.isNull(invoiceAndCheckBillSendEmailVO)){ | 292 | if(emailTemplateEnum ==null && ObjectUtils.isNull(invoiceAndCheckBillSendEmailVO)){ |
288 | throw new BusinessException(ServerResultCode.PARAM_ERROR); | 293 | throw new BusinessException(ServerResultCode.PARAM_ERROR); |
289 | } | 294 | } |
@@ -293,26 +298,38 @@ public class EmailSendUtils { | @@ -293,26 +298,38 @@ public class EmailSendUtils { | ||
293 | String invoiceNoOrCheckNo; | 298 | String invoiceNoOrCheckNo; |
294 | if(invoiceAndCheckBillSendEmailVO.getInvoiceBillOrderDO()!=null){ | 299 | if(invoiceAndCheckBillSendEmailVO.getInvoiceBillOrderDO()!=null){ |
295 | InvoiceBillOrderDO invoiceBillOrderDO=invoiceAndCheckBillSendEmailVO.getInvoiceBillOrderDO(); | 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 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | 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 | invoiceNoOrCheckNo = invoiceBillOrderDO.getInvoiceNo(); | 314 | invoiceNoOrCheckNo = invoiceBillOrderDO.getInvoiceNo(); |
309 | }else{ | 315 | }else{ |
310 | ProducePaymentCheckBillOrderDO checkBillOrderDO = invoiceAndCheckBillSendEmailVO.getCheckBillOrderDO(); | 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 | .eq(BaseDO::getEnableFlag, Constant.ENABLE_TEN) | 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 | .stream()).map(String::trim).filter(s -> !s.isEmpty()).toArray(String[]::new); | 333 | .stream()).map(String::trim).filter(s -> !s.isEmpty()).toArray(String[]::new); |
317 | invoiceNoOrCheckNo=checkBillOrderDO.getCheckNo(); | 334 | invoiceNoOrCheckNo=checkBillOrderDO.getCheckNo(); |
318 | } | 335 | } |
src/main/java/com/order/erp/controller/InvoiceBillOrderController.java
@@ -204,5 +204,15 @@ public class InvoiceBillOrderController { | @@ -204,5 +204,15 @@ public class InvoiceBillOrderController { | ||
204 | public ServerResult deleteDeductUrlById(@RequestBody InvoiceBillDeductInfoVO deleteVo) { | 204 | public ServerResult deleteDeductUrlById(@RequestBody InvoiceBillDeductInfoVO deleteVo) { |
205 | return invoiceBillOrderService.deleteDeductUrlById(deleteVo); | 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,6 +216,16 @@ public class ProducePaymentCheckBillOrderController { | ||
216 | public ServerResult deleteDeductUrlById( @RequestBody ProducePaymentCheckBillDeductInfoVO deleteVo){ | 216 | public ServerResult deleteDeductUrlById( @RequestBody ProducePaymentCheckBillDeductInfoVO deleteVo){ |
217 | return producePaymentCheckBillOrderService.deleteDeductUrlById(deleteVo); | 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
@@ -108,4 +108,9 @@ public class InvoiceBillOrderDO extends BaseDO implements Serializable { | @@ -108,4 +108,9 @@ public class InvoiceBillOrderDO extends BaseDO implements Serializable { | ||
108 | * 备注信息 | 108 | * 备注信息 |
109 | * */ | 109 | * */ |
110 | private String notes; | 110 | private String notes; |
111 | + | ||
112 | + /** | ||
113 | + * 最终完成状态,需要手动确认 状态 0:未完成,10:已完成 | ||
114 | + * */ | ||
115 | + private Integer finishStatus; | ||
111 | } | 116 | } |
src/main/java/com/order/erp/domain/dto/order/ProducePaymentCheckBillOrderDO.java
@@ -117,5 +117,10 @@ public class ProducePaymentCheckBillOrderDO extends BaseDO implements Serializab | @@ -117,5 +117,10 @@ public class ProducePaymentCheckBillOrderDO extends BaseDO implements Serializab | ||
117 | * 备注。 | 117 | * 备注。 |
118 | * */ | 118 | * */ |
119 | private String notes; | 119 | private String notes; |
120 | + /** | ||
121 | + * 最终完成状态,需要手动确认 状态 0:未完成,10:已完成 | ||
122 | + * */ | ||
123 | + private Integer finishStatus; | ||
124 | + | ||
120 | 125 | ||
121 | } | 126 | } |
src/main/java/com/order/erp/domain/vo/order/FinanceOrderResultVO.java
@@ -114,6 +114,10 @@ public class FinanceOrderResultVO extends OrderBaseInfoVO { | @@ -114,6 +114,10 @@ public class FinanceOrderResultVO extends OrderBaseInfoVO { | ||
114 | * 备注信息 | 114 | * 备注信息 |
115 | * */ | 115 | * */ |
116 | private String invoiceNotes; | 116 | private String invoiceNotes; |
117 | + /** | ||
118 | + * 最终确认,0:未完成 10:已完成 | ||
119 | + * */ | ||
120 | + private Integer invoiceFinishStatus; | ||
117 | 121 | ||
118 | //应付款信息 | 122 | //应付款信息 |
119 | // private ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO; | 123 | // private ProducePaymentCheckBillOrderDO producePaymentCheckBillOrderDO; |
@@ -166,7 +170,7 @@ public class FinanceOrderResultVO extends OrderBaseInfoVO { | @@ -166,7 +170,7 @@ public class FinanceOrderResultVO extends OrderBaseInfoVO { | ||
166 | */ | 170 | */ |
167 | private BigDecimal checkActualPayedAmount3; | 171 | private BigDecimal checkActualPayedAmount3; |
168 | /** | 172 | /** |
169 | - * 总经理审核状态 0:待审核、1:审核通过,2:审核驳回 | 173 | + * 总经理审核状态 -1:未创建、0:未收款,10:已付款 |
170 | */ | 174 | */ |
171 | private Integer checkPayStatus; | 175 | private Integer checkPayStatus; |
172 | //需要在表中添加三个字段。 | 176 | //需要在表中添加三个字段。 |
@@ -178,6 +182,10 @@ public class FinanceOrderResultVO extends OrderBaseInfoVO { | @@ -178,6 +182,10 @@ public class FinanceOrderResultVO extends OrderBaseInfoVO { | ||
178 | * 备注。 | 182 | * 备注。 |
179 | * */ | 183 | * */ |
180 | private String checkNotes; | 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,5 +120,15 @@ public class InvoiceBillOrderQueryVO extends BasePageVO implements Serializable | ||
120 | * 业务员 用来判断业务员只能看到业务员的数据 | 120 | * 业务员 用来判断业务员只能看到业务员的数据 |
121 | */ | 121 | */ |
122 | private String businessUserName; | 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,5 +120,6 @@ public interface InvoiceBillOrderService extends IService<InvoiceBillOrderDO> { | ||
120 | ServerResult byIdAddNotes(InvoiceBillCreateVO createVO); | 120 | ServerResult byIdAddNotes(InvoiceBillCreateVO createVO); |
121 | 121 | ||
122 | ServerResult deleteDeductUrlById(InvoiceBillDeductInfoVO deleteVo); | 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,4 +111,5 @@ public interface ProducePaymentCheckBillOrderService extends IService<ProducePay | ||
111 | ServerResult setPayedDate(ProducePaymentCheckBillCreateVO createVO); | 111 | ServerResult setPayedDate(ProducePaymentCheckBillCreateVO createVO); |
112 | ServerResult byIdAddNotes(ProducePaymentCheckBillCreateVO createVO); | 112 | ServerResult byIdAddNotes(ProducePaymentCheckBillCreateVO createVO); |
113 | ServerResult deleteDeductUrlById(ProducePaymentCheckBillDeductInfoVO deleteVo); | 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,6 +980,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | ||
980 | .bgUrl(createVO.getBgUrl()) | 980 | .bgUrl(createVO.getBgUrl()) |
981 | .backRefundDate(createVO.getBackRefundDate()) | 981 | .backRefundDate(createVO.getBackRefundDate()) |
982 | .status(FinanceEnum.UNPAID_PAYMENTS.getStatus()) | 982 | .status(FinanceEnum.UNPAID_PAYMENTS.getStatus()) |
983 | + .finishStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()) | ||
983 | .businesPerson(x.getBusinessPerson()) | 984 | .businesPerson(x.getBusinessPerson()) |
984 | .trackerUser(x.getCreateBy()) | 985 | .trackerUser(x.getCreateBy()) |
985 | .build(); | 986 | .build(); |
@@ -1207,7 +1208,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | @@ -1207,7 +1208,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | ||
1207 | //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 | 1208 | //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 |
1208 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); | 1209 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
1209 | invoiceAndCheckBillSendEmailVO.setInvoiceBillOrderDO(invoiceBillOrderDO.get(0)); | 1210 | invoiceAndCheckBillSendEmailVO.setInvoiceBillOrderDO(invoiceBillOrderDO.get(0)); |
1210 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_PASS,invoiceAndCheckBillSendEmailVO); | 1211 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_PASS,invoiceAndCheckBillSendEmailVO,true); |
1211 | }else{ | 1212 | }else{ |
1212 | applyDO = initOrderFieldLockApplyDO(invoiceFieldVO, userId,false); | 1213 | applyDO = initOrderFieldLockApplyDO(invoiceFieldVO, userId,false); |
1213 | } | 1214 | } |
@@ -1542,6 +1543,27 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | @@ -1542,6 +1543,27 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl<InvoiceBillOrderMap | ||
1542 | return ServerResult.success(); | 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 | public void createMergedCell(Sheet sheet, Workbook workbook, int rowIndex, int colIndex, int startRow, int endRow, int startCol, int endCol, String value) { | 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,7 +570,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
570 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); | 570 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
571 | invoiceAndCheckBillSendEmailVO.setInvoiceBillOrderDO(invoiceBillOrderDOS.get(0)); | 571 | invoiceAndCheckBillSendEmailVO.setInvoiceBillOrderDO(invoiceBillOrderDOS.get(0)); |
572 | invoiceAndCheckBillSendEmailVO.setRefuseRemark(refuseRemark); | 572 | invoiceAndCheckBillSendEmailVO.setRefuseRemark(refuseRemark); |
573 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_FAIL,invoiceAndCheckBillSendEmailVO); | 573 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_FAIL,invoiceAndCheckBillSendEmailVO,true); |
574 | } | 574 | } |
575 | } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { | 575 | } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { |
576 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); | 576 | OrderLockFieldVO lockFieldVO = JSONObject.parseObject(applyDO.getFields(), OrderLockFieldVO.class); |
@@ -610,7 +610,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -610,7 +610,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
610 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); | 610 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
611 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(producePaymentCheckBillOrderDOS.get(0)); | 611 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(producePaymentCheckBillOrderDOS.get(0)); |
612 | invoiceAndCheckBillSendEmailVO.setRefuseRemark(refuseRemark); | 612 | invoiceAndCheckBillSendEmailVO.setRefuseRemark(refuseRemark); |
613 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_FAIL,invoiceAndCheckBillSendEmailVO); | 613 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_FAIL,invoiceAndCheckBillSendEmailVO,false); |
614 | } | 614 | } |
615 | 615 | ||
616 | } else if(ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())){ | 616 | } else if(ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())){ |
@@ -641,7 +641,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -641,7 +641,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
641 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); | 641 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
642 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(invoiceInfoDO); | 642 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(invoiceInfoDO); |
643 | invoiceAndCheckBillSendEmailVO.setRefuseRemark(refuseRemark); | 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 | OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_REFUSE.getDesc()).build(); | 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,7 +793,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
793 | //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 | 793 | //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 |
794 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); | 794 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
795 | invoiceAndCheckBillSendEmailVO.setInvoiceBillOrderDO(invoiceeBillOrderDOs.get(0)); | 795 | invoiceAndCheckBillSendEmailVO.setInvoiceBillOrderDO(invoiceeBillOrderDOs.get(0)); |
796 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_PASS,invoiceAndCheckBillSendEmailVO); | 796 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.INVOICE_PASS,invoiceAndCheckBillSendEmailVO,true); |
797 | } | 797 | } |
798 | } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { | 798 | } else if (ApplyTypeEnum.CHECK_BILL_APPLY.getType().equals(applyDO.getType())) { |
799 | applyDO.setAuditUserId(auditUserId); | 799 | applyDO.setAuditUserId(auditUserId); |
@@ -834,7 +834,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -834,7 +834,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
834 | //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 | 834 | //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 |
835 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); | 835 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
836 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(producePaymentCheckBillOrderDOS.get(0)); | 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 | } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { | 840 | } else if (ApplyTypeEnum.DEPARTMENT_INVOICE_APPLY.getType().equals(applyDO.getType())) { |
@@ -865,7 +865,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | @@ -865,7 +865,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl<OrderFieldLockAp | ||
865 | //发送邮件通知跟单员和业务员。 | 865 | //发送邮件通知跟单员和业务员。 |
866 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); | 866 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
867 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(invoiceInfoDO); | 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 | OrderAuditLogDO auditLogDO = OrderAuditLogDO.builder().applyId(applyDO.getId()).orderId(applyDO.getOrderId()).optType(ApplyStatusEnum.AUDIT_PASS.getDesc()).build(); | 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,6 +818,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
818 | .orderId(x.getId()) | 818 | .orderId(x.getId()) |
819 | .payedDate(createVO.getPayedDate()) | 819 | .payedDate(createVO.getPayedDate()) |
820 | .status(FinanceEnum.UNPAID_PAYMENTS.getStatus()) | 820 | .status(FinanceEnum.UNPAID_PAYMENTS.getStatus()) |
821 | + .finishStatus(FinanceEnum.UNPAID_PAYMENTS.getStatus()) | ||
821 | .productionName(x.getProductionDepartment()) | 822 | .productionName(x.getProductionDepartment()) |
822 | .businesPerson(x.getBusinessPerson()) | 823 | .businesPerson(x.getBusinessPerson()) |
823 | .trackerUser(x.getCreateBy()) | 824 | .trackerUser(x.getCreateBy()) |
@@ -1094,7 +1095,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -1094,7 +1095,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
1094 | //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 | 1095 | //发送邮箱通知财务。 这里这个邮箱通知财务,只能提示invoice号,因为一个invoice申请对应多个invoice号,所以会有多个内部编号和项目号等。 |
1095 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); | 1096 | InvoiceAndCheckBillSendEmailVO invoiceAndCheckBillSendEmailVO = new InvoiceAndCheckBillSendEmailVO(); |
1096 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(producePaymentCheckBillOrderDOS.get(0)); | 1097 | invoiceAndCheckBillSendEmailVO.setCheckBillOrderDO(producePaymentCheckBillOrderDOS.get(0)); |
1097 | - emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_PASS,invoiceAndCheckBillSendEmailVO); | 1098 | + emailSendUtils.sendInvoiceAndCheckEmail(FinanceOverEnum.CHECK_PASS,invoiceAndCheckBillSendEmailVO,true); |
1098 | }else{ | 1099 | }else{ |
1099 | applyDO = initOrderFieldLockApplyDO(producePaymentCheckBillFieldVO, userId,false); | 1100 | applyDO = initOrderFieldLockApplyDO(producePaymentCheckBillFieldVO, userId,false); |
1100 | } | 1101 | } |
@@ -1371,6 +1372,27 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | @@ -1371,6 +1372,27 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl<Produce | ||
1371 | } | 1372 | } |
1372 | 1373 | ||
1373 | @Override | 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 | public ServerResult exportReceipt(HttpServletResponse response,CheckBillExportReceiptVO queryVO) throws IOException { | 1396 | public ServerResult exportReceipt(HttpServletResponse response,CheckBillExportReceiptVO queryVO) throws IOException { |
1375 | XSSFWorkbook workbook = new XSSFWorkbook(); | 1397 | XSSFWorkbook workbook = new XSSFWorkbook(); |
1376 | Sheet sheet = workbook.createSheet("付款单"); | 1398 | Sheet sheet = workbook.createSheet("付款单"); |
src/main/resources/mapper/InvoiceBillOrderMapper.xml
@@ -98,6 +98,7 @@ | @@ -98,6 +98,7 @@ | ||
98 | i.status AS invoiceStatus, -- invoice状态 | 98 | i.status AS invoiceStatus, -- invoice状态 |
99 | i.deduct_amount AS invoiceDeductAmount, -- 扣款金额 | 99 | i.deduct_amount AS invoiceDeductAmount, -- 扣款金额 |
100 | i.notes AS invoiceNotes, -- invoice备注 | 100 | i.notes AS invoiceNotes, -- invoice备注 |
101 | + i.finish_status AS invoiceFinishStatus, | ||
101 | -- 生产科付款信息 | 102 | -- 生产科付款信息 |
102 | p.id AS checkId, | 103 | p.id AS checkId, |
103 | p.check_no AS checkNo, -- checkNo编号 | 104 | p.check_no AS checkNo, -- checkNo编号 |
@@ -113,7 +114,8 @@ | @@ -113,7 +114,8 @@ | ||
113 | p.payed_date AS checkPayedDate, -- 必须付款日期 | 114 | p.payed_date AS checkPayedDate, -- 必须付款日期 |
114 | p.deduct_url AS checkDeductUrl, -- 扣款单 | 115 | p.deduct_url AS checkDeductUrl, -- 扣款单 |
115 | p.notes AS checkNotes, -- checkNo备注 | 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 | FROM order_base_info o | 119 | FROM order_base_info o |
118 | LEFT JOIN invoice_bill_order AS i | 120 | LEFT JOIN invoice_bill_order AS i |
119 | ON o.id = i.order_id AND i.enable_flag = 10 | 121 | ON o.id = i.order_id AND i.enable_flag = 10 |
@@ -134,6 +136,12 @@ | @@ -134,6 +136,12 @@ | ||
134 | <if test="queryVO.checkNoStatus != null"> | 136 | <if test="queryVO.checkNoStatus != null"> |
135 | AND o.check_status = #{queryVO.checkNoStatus} | 137 | AND o.check_status = #{queryVO.checkNoStatus} |
136 | </if> | 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 | <if test="queryVO.customerCode != null and queryVO.customerCode.size > 0 "> | 145 | <if test="queryVO.customerCode != null and queryVO.customerCode.size > 0 "> |
138 | AND o.customer_code IN | 146 | AND o.customer_code IN |
139 | <foreach collection="queryVO.customerCode" item="customerCode" open="(" separator="," close=")"> | 147 | <foreach collection="queryVO.customerCode" item="customerCode" open="(" separator="," close=")"> |
@@ -227,6 +235,12 @@ | @@ -227,6 +235,12 @@ | ||
227 | <if test="queryVO.checkNoStatus != null"> | 235 | <if test="queryVO.checkNoStatus != null"> |
228 | AND o.check_status = #{queryVO.checkNoStatus} | 236 | AND o.check_status = #{queryVO.checkNoStatus} |
229 | </if> | 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 | <if test="queryVO.customerCode != null and queryVO.customerCode.size > 0 "> | 244 | <if test="queryVO.customerCode != null and queryVO.customerCode.size > 0 "> |
231 | AND o.customer_code IN | 245 | AND o.customer_code IN |
232 | <foreach collection="queryVO.customerCode" item="customerCode" open="(" separator="," close=")"> | 246 | <foreach collection="queryVO.customerCode" item="customerCode" open="(" separator="," close=")"> |