Commit 95d9735e5f42cdb6cac7ff5fc58e2f1982099a1e
Merge branch 'master_after0506' into master_after0506_tmp
Showing
2 changed files
with
81 additions
and
15 deletions
| ... | ... | @@ -34,6 +34,7 @@ import com.lframework.starter.web.core.components.resp.PageResult; |
| 34 | 34 | import com.lframework.starter.common.utils.ObjectUtil; |
| 35 | 35 | import com.lframework.starter.common.utils.Assert; |
| 36 | 36 | import com.lframework.xingyun.sc.enums.CustomerDevelopStatus; |
| 37 | +import com.lframework.xingyun.sc.handlers.TransactorHandler; | |
| 37 | 38 | import com.lframework.xingyun.sc.mappers.ContractDistributorStandardMapper; |
| 38 | 39 | import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService; |
| 39 | 40 | import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService; |
| ... | ... | @@ -107,6 +108,8 @@ public class ContractDistributorStandardServiceImpl extends |
| 107 | 108 | private SysUserDeptService sysUserDeptService; |
| 108 | 109 | @Resource |
| 109 | 110 | private PurchaseOrderLineService purchaseOrderLineService; |
| 111 | + @Resource | |
| 112 | + private TransactorHandler transactorHandler; | |
| 110 | 113 | |
| 111 | 114 | @Override |
| 112 | 115 | public PageResult<ContractDistributorStandard> query(Integer pageIndex, Integer pageSize, QueryContractDistributorStandardVo vo) { |
| ... | ... | @@ -1626,9 +1629,10 @@ public class ContractDistributorStandardServiceImpl extends |
| 1626 | 1629 | @Override |
| 1627 | 1630 | public void supplementContractSpecReminder() { |
| 1628 | 1631 | Wrapper<ContractDistributorStandard> wrapper = Wrappers.lambdaQuery(ContractDistributorStandard.class) |
| 1629 | - .in(ContractDistributorStandard::getFormalApproved, Arrays.asList("REFUSE", "CANCEL")) | |
| 1630 | - .or() | |
| 1631 | - .in(ContractDistributorStandard::getStandardApproved, Arrays.asList("REFUSE", "CANCEL")); | |
| 1632 | + .and(w -> w.eq(ContractDistributorStandard::getStatus, "FORMAL") | |
| 1633 | + .in(ContractDistributorStandard::getFormalApproved, Arrays.asList("REFUSE", "CANCEL"))) | |
| 1634 | + .or(w -> w.eq(ContractDistributorStandard::getStatus, "STANDARD") | |
| 1635 | + .in(ContractDistributorStandard::getStandardApproved, Arrays.asList("REFUSE", "CANCEL"))); | |
| 1632 | 1636 | List<ContractDistributorStandard> contractDistributorStandardList = list(wrapper); |
| 1633 | 1637 | if (CollectionUtils.isEmpty(contractDistributorStandardList)) { |
| 1634 | 1638 | return; |
| ... | ... | @@ -1637,6 +1641,7 @@ public class ContractDistributorStandardServiceImpl extends |
| 1637 | 1641 | Set<String> workshopIds = contractDistributorStandardList |
| 1638 | 1642 | .stream() |
| 1639 | 1643 | .map(ContractDistributorStandard::getWorkshopId) |
| 1644 | + .filter(StringUtils::isNotBlank) | |
| 1640 | 1645 | .collect(Collectors.toSet()); |
| 1641 | 1646 | List<Workshop> workshopList = workshopService.listByIds(workshopIds); |
| 1642 | 1647 | Map<String, String> workshopIdAndCodeMap = CollectionUtils.emptyIfNull(workshopList) |
| ... | ... | @@ -1652,8 +1657,6 @@ public class ContractDistributorStandardServiceImpl extends |
| 1652 | 1657 | jybzgCodeAndUserIdMap.put("efcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("efcjybzg"))); |
| 1653 | 1658 | jybzgCodeAndUserIdMap.put("sfcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("sfcjybzg"))); |
| 1654 | 1659 | jybzgCodeAndUserIdMap.put("ztcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("ztcjybzg"))); |
| 1655 | - | |
| 1656 | - List<String> bsczgUserIdList = sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("bsczg")); | |
| 1657 | 1660 | contractDistributorStandardList.forEach(contractDistributorStandard -> { |
| 1658 | 1661 | try { |
| 1659 | 1662 | StringBuilder stringBuilder = new StringBuilder("您的"); |
| ... | ... | @@ -1676,8 +1679,8 @@ public class ContractDistributorStandardServiceImpl extends |
| 1676 | 1679 | stringBuilder.append("("); |
| 1677 | 1680 | LocalDate lastApprovedTime = LocalDate.now(); |
| 1678 | 1681 | if ("FORMAL".equals(contractDistributorStandard.getStatus())) { |
| 1679 | - if (!"REFUSE".equals(contractDistributorStandard.getFormalApproved()) | |
| 1680 | - && !"CANCEL".equals(contractDistributorStandard.getFormalApproved())) { | |
| 1682 | + if (!Arrays.asList("REFUSE", "CANCEL").contains(contractDistributorStandard.getFormalApproved()) | |
| 1683 | + || contractDistributorStandard.getFormalTime() == null) { | |
| 1681 | 1684 | return; |
| 1682 | 1685 | } |
| 1683 | 1686 | |
| ... | ... | @@ -1686,8 +1689,8 @@ public class ContractDistributorStandardServiceImpl extends |
| 1686 | 1689 | } |
| 1687 | 1690 | |
| 1688 | 1691 | if ("STANDARD".equals(contractDistributorStandard.getStatus())) { |
| 1689 | - if (!"REFUSE".equals(contractDistributorStandard.getStandardApproved()) | |
| 1690 | - && !"CANCEL".equals(contractDistributorStandard.getStandardApproved())) { | |
| 1692 | + if (!Arrays.asList("REFUSE", "CANCEL").contains(contractDistributorStandard.getStandardApproved()) | |
| 1693 | + || contractDistributorStandard.getStandardTime() == null) { | |
| 1691 | 1694 | return; |
| 1692 | 1695 | } |
| 1693 | 1696 | |
| ... | ... | @@ -1697,22 +1700,32 @@ public class ContractDistributorStandardServiceImpl extends |
| 1697 | 1700 | |
| 1698 | 1701 | stringBuilder.append(",合同号:").append(contractDistributorStandard.getCode()); |
| 1699 | 1702 | stringBuilder.append(",请尽快补充规范合同。"); |
| 1700 | - List<String> userIdList = new ArrayList<>(); | |
| 1701 | - userIdList.add(contractDistributorStandard.getCreateById()); | |
| 1703 | + Set<String> userIdSet = new LinkedHashSet<>(); | |
| 1704 | + if (StringUtils.isNotBlank(contractDistributorStandard.getCreateById())) { | |
| 1705 | + userIdSet.add(contractDistributorStandard.getCreateById()); | |
| 1706 | + } | |
| 1702 | 1707 | |
| 1703 | 1708 | LocalDate currentDate = LocalDate.now(); |
| 1704 | 1709 | // 如果最后批准时间加3天还在当前时间之前,说明超过3天 |
| 1705 | 1710 | if (lastApprovedTime.plusDays(3).isBefore(currentDate)) { |
| 1711 | + List<String> officeManagerIds = transactorHandler.listTransactorsByRoleCode("bsczg", | |
| 1712 | + contractDistributorStandard.getCreateById()); | |
| 1713 | + if (CollectionUtils.isNotEmpty(officeManagerIds)) { | |
| 1714 | + userIdSet.addAll(officeManagerIds); | |
| 1715 | + } | |
| 1706 | 1716 | Optional.ofNullable(contractDistributorStandard.getWorkshopId()) |
| 1707 | 1717 | .map(workshopIdAndCodeMap::get) |
| 1708 | 1718 | .filter(StringUtils::isNotBlank) |
| 1709 | 1719 | .map(workshopCodeAndJybzgCodeMap::get) |
| 1710 | 1720 | .filter(StringUtils::isNotBlank) |
| 1711 | 1721 | .map(jybzgCodeAndUserIdMap::get) |
| 1712 | - .ifPresent(userIdList::addAll); | |
| 1722 | + .ifPresent(userIdSet::addAll); | |
| 1723 | + } | |
| 1713 | 1724 | |
| 1714 | - userIdList.addAll(bsczgUserIdList); | |
| 1725 | + if (CollectionUtils.isEmpty(userIdSet)) { | |
| 1726 | + return; | |
| 1715 | 1727 | } |
| 1728 | + List<String> userIdList = new ArrayList<>(userIdSet); | |
| 1716 | 1729 | |
| 1717 | 1730 | // 发送消息 |
| 1718 | 1731 | SysSiteMessageDto messageDto = new SysSiteMessageDto(); | ... | ... |
| ... | ... | @@ -30,6 +30,7 @@ import com.lframework.xingyun.basedata.service.workshop.WorkshopService; |
| 30 | 30 | import com.lframework.xingyun.sc.entity.ContractDistributorStandard; |
| 31 | 31 | import com.lframework.xingyun.sc.entity.SpecLockDelayApplication; |
| 32 | 32 | import com.lframework.xingyun.sc.enums.CustomerDevelopStatus; |
| 33 | +import com.lframework.xingyun.sc.handlers.TransactorHandler; | |
| 33 | 34 | import com.lframework.xingyun.sc.mappers.SpecLockDelayApplicationMapper; |
| 34 | 35 | import com.lframework.xingyun.sc.service.HolidaysService; |
| 35 | 36 | import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService; |
| ... | ... | @@ -76,6 +77,8 @@ public class SpecLockDelayApplicationServiceImpl extends BaseMpServiceImpl<SpecL |
| 76 | 77 | private WorkshopService workshopService; |
| 77 | 78 | @Resource |
| 78 | 79 | private SysDeptService sysDeptService; |
| 80 | + @Resource | |
| 81 | + private TransactorHandler transactorHandler; | |
| 79 | 82 | |
| 80 | 83 | @Override |
| 81 | 84 | public PageResult<SpecLockDelayApplication> query(Integer pageIndex, Integer pageSize, QuerySpecLockDelayApplicationVo vo) { |
| ... | ... | @@ -376,9 +379,27 @@ public class SpecLockDelayApplicationServiceImpl extends BaseMpServiceImpl<SpecL |
| 376 | 379 | |
| 377 | 380 | // 获取用户列表 |
| 378 | 381 | log.info("开始获取需要通知的用户列表"); |
| 379 | - List<String> userIdList = sysUserRoleService.listUserIdByRoleCodes(Arrays.asList("bsczg", "jybzg")); | |
| 380 | - userIdList.add(contractDistributorStandard.getCreateById()); | |
| 382 | + Set<String> userIdSet = new LinkedHashSet<>(); | |
| 383 | + List<String> officeManagerIds = transactorHandler.listTransactorsByRoleCode("bsczg", | |
| 384 | + contractDistributorStandard.getCreateById()); | |
| 385 | + if (CollectionUtils.isNotEmpty(officeManagerIds)) { | |
| 386 | + userIdSet.addAll(officeManagerIds); | |
| 387 | + } | |
| 388 | + | |
| 389 | + String workshopManagerRoleCode = getWorkshopManagerRoleCode(contractDistributorStandard.getWorkshopId()); | |
| 390 | + if (StringUtils.isNotBlank(workshopManagerRoleCode)) { | |
| 391 | + List<String> workshopManagerIds = sysUserRoleService.listUserIdByRoleCodes( | |
| 392 | + Collections.singletonList(workshopManagerRoleCode)); | |
| 393 | + if (CollectionUtils.isNotEmpty(workshopManagerIds)) { | |
| 394 | + userIdSet.addAll(workshopManagerIds); | |
| 395 | + } | |
| 396 | + } | |
| 397 | + List<String> userIdList = new ArrayList<>(userIdSet); | |
| 381 | 398 | log.info("合同{}需要通知的用户数量:{}", contractCode, userIdList.size()); |
| 399 | + if (CollectionUtils.isEmpty(userIdList)) { | |
| 400 | + log.info("合同{}未匹配到任何通知人员,跳过发送", contractCode); | |
| 401 | + continue; | |
| 402 | + } | |
| 382 | 403 | |
| 383 | 404 | // 构建消息内容 |
| 384 | 405 | StringBuilder sb = new StringBuilder(); |
| ... | ... | @@ -419,4 +440,36 @@ public class SpecLockDelayApplicationServiceImpl extends BaseMpServiceImpl<SpecL |
| 419 | 440 | log.info("延迟锁规消息发送任务执行完成:总共处理{}个合同,成功发送{}条消息,失败{}个", |
| 420 | 441 | totalCount, sentCount, errorCount); |
| 421 | 442 | } |
| 443 | + | |
| 444 | + /** | |
| 445 | + * 获取分厂经营办主管角色编码 | |
| 446 | + * | |
| 447 | + * @param workshopId 分厂ID | |
| 448 | + * @return 角色编码 | |
| 449 | + */ | |
| 450 | + private String getWorkshopManagerRoleCode(String workshopId) { | |
| 451 | + if (StringUtils.isBlank(workshopId)) { | |
| 452 | + return null; | |
| 453 | + } | |
| 454 | + | |
| 455 | + Workshop workshop = workshopService.findById(workshopId); | |
| 456 | + if (workshop == null || StringUtils.isBlank(workshop.getCode())) { | |
| 457 | + return null; | |
| 458 | + } | |
| 459 | + | |
| 460 | + String workshopCode = workshop.getCode(); | |
| 461 | + if ("yfc".equals(workshopCode)) { | |
| 462 | + return "yfcjybzg"; | |
| 463 | + } | |
| 464 | + if ("efc".equals(workshopCode)) { | |
| 465 | + return "efcjybzg"; | |
| 466 | + } | |
| 467 | + if ("sfc".equals(workshopCode)) { | |
| 468 | + return "sfcjybzg"; | |
| 469 | + } | |
| 470 | + if ("ztfc".equals(workshopCode)) { | |
| 471 | + return "ztcjybzg"; | |
| 472 | + } | |
| 473 | + return null; | |
| 474 | + } | |
| 422 | 475 | } | ... | ... |