Commit fd3c0b52daff100988817de4054ab2bd8e592e40

Authored by chenhang4442024
1 parent 9cbf19cf

feat:1.新增最终状态设置。

fix:1.修复自动发送邮件时,添加财务人员。
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&lt;InvoiceBillOrderDO&gt; { @@ -120,5 +120,6 @@ public interface InvoiceBillOrderService extends IService&lt;InvoiceBillOrderDO&gt; {
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&lt;ProducePay @@ -111,4 +111,5 @@ public interface ProducePaymentCheckBillOrderService extends IService&lt;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&lt;InvoiceBillOrderMap @@ -980,6 +980,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;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&lt;InvoiceBillOrderMap @@ -1207,7 +1208,7 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;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&lt;InvoiceBillOrderMap @@ -1542,6 +1543,27 @@ public class InvoiceBillOrderServiceImpl extends ServiceImpl&lt;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&lt;OrderFieldLockAp @@ -570,7 +570,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;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&lt;OrderFieldLockAp @@ -610,7 +610,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;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&lt;OrderFieldLockAp @@ -641,7 +641,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;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&lt;OrderFieldLockAp @@ -793,7 +793,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;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&lt;OrderFieldLockAp @@ -834,7 +834,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;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&lt;OrderFieldLockAp @@ -865,7 +865,7 @@ public class OrderFieldLockApplyServiceImpl extends ServiceImpl&lt;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&lt;Produce @@ -818,6 +818,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;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&lt;Produce @@ -1094,7 +1095,7 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;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&lt;Produce @@ -1371,6 +1372,27 @@ public class ProducePaymentCheckBillOrderServiceImpl extends ServiceImpl&lt;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=")">