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,6 +34,7 @@ import com.lframework.starter.web.core.components.resp.PageResult; | ||
| 34 | import com.lframework.starter.common.utils.ObjectUtil; | 34 | import com.lframework.starter.common.utils.ObjectUtil; |
| 35 | import com.lframework.starter.common.utils.Assert; | 35 | import com.lframework.starter.common.utils.Assert; |
| 36 | import com.lframework.xingyun.sc.enums.CustomerDevelopStatus; | 36 | import com.lframework.xingyun.sc.enums.CustomerDevelopStatus; |
| 37 | +import com.lframework.xingyun.sc.handlers.TransactorHandler; | ||
| 37 | import com.lframework.xingyun.sc.mappers.ContractDistributorStandardMapper; | 38 | import com.lframework.xingyun.sc.mappers.ContractDistributorStandardMapper; |
| 38 | import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService; | 39 | import com.lframework.xingyun.sc.service.contract.ContractDistributorLineService; |
| 39 | import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService; | 40 | import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService; |
| @@ -107,6 +108,8 @@ public class ContractDistributorStandardServiceImpl extends | @@ -107,6 +108,8 @@ public class ContractDistributorStandardServiceImpl extends | ||
| 107 | private SysUserDeptService sysUserDeptService; | 108 | private SysUserDeptService sysUserDeptService; |
| 108 | @Resource | 109 | @Resource |
| 109 | private PurchaseOrderLineService purchaseOrderLineService; | 110 | private PurchaseOrderLineService purchaseOrderLineService; |
| 111 | + @Resource | ||
| 112 | + private TransactorHandler transactorHandler; | ||
| 110 | 113 | ||
| 111 | @Override | 114 | @Override |
| 112 | public PageResult<ContractDistributorStandard> query(Integer pageIndex, Integer pageSize, QueryContractDistributorStandardVo vo) { | 115 | public PageResult<ContractDistributorStandard> query(Integer pageIndex, Integer pageSize, QueryContractDistributorStandardVo vo) { |
| @@ -1626,9 +1629,10 @@ public class ContractDistributorStandardServiceImpl extends | @@ -1626,9 +1629,10 @@ public class ContractDistributorStandardServiceImpl extends | ||
| 1626 | @Override | 1629 | @Override |
| 1627 | public void supplementContractSpecReminder() { | 1630 | public void supplementContractSpecReminder() { |
| 1628 | Wrapper<ContractDistributorStandard> wrapper = Wrappers.lambdaQuery(ContractDistributorStandard.class) | 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 | List<ContractDistributorStandard> contractDistributorStandardList = list(wrapper); | 1636 | List<ContractDistributorStandard> contractDistributorStandardList = list(wrapper); |
| 1633 | if (CollectionUtils.isEmpty(contractDistributorStandardList)) { | 1637 | if (CollectionUtils.isEmpty(contractDistributorStandardList)) { |
| 1634 | return; | 1638 | return; |
| @@ -1637,6 +1641,7 @@ public class ContractDistributorStandardServiceImpl extends | @@ -1637,6 +1641,7 @@ public class ContractDistributorStandardServiceImpl extends | ||
| 1637 | Set<String> workshopIds = contractDistributorStandardList | 1641 | Set<String> workshopIds = contractDistributorStandardList |
| 1638 | .stream() | 1642 | .stream() |
| 1639 | .map(ContractDistributorStandard::getWorkshopId) | 1643 | .map(ContractDistributorStandard::getWorkshopId) |
| 1644 | + .filter(StringUtils::isNotBlank) | ||
| 1640 | .collect(Collectors.toSet()); | 1645 | .collect(Collectors.toSet()); |
| 1641 | List<Workshop> workshopList = workshopService.listByIds(workshopIds); | 1646 | List<Workshop> workshopList = workshopService.listByIds(workshopIds); |
| 1642 | Map<String, String> workshopIdAndCodeMap = CollectionUtils.emptyIfNull(workshopList) | 1647 | Map<String, String> workshopIdAndCodeMap = CollectionUtils.emptyIfNull(workshopList) |
| @@ -1652,8 +1657,6 @@ public class ContractDistributorStandardServiceImpl extends | @@ -1652,8 +1657,6 @@ public class ContractDistributorStandardServiceImpl extends | ||
| 1652 | jybzgCodeAndUserIdMap.put("efcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("efcjybzg"))); | 1657 | jybzgCodeAndUserIdMap.put("efcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("efcjybzg"))); |
| 1653 | jybzgCodeAndUserIdMap.put("sfcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("sfcjybzg"))); | 1658 | jybzgCodeAndUserIdMap.put("sfcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("sfcjybzg"))); |
| 1654 | jybzgCodeAndUserIdMap.put("ztcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("ztcjybzg"))); | 1659 | jybzgCodeAndUserIdMap.put("ztcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("ztcjybzg"))); |
| 1655 | - | ||
| 1656 | - List<String> bsczgUserIdList = sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("bsczg")); | ||
| 1657 | contractDistributorStandardList.forEach(contractDistributorStandard -> { | 1660 | contractDistributorStandardList.forEach(contractDistributorStandard -> { |
| 1658 | try { | 1661 | try { |
| 1659 | StringBuilder stringBuilder = new StringBuilder("您的"); | 1662 | StringBuilder stringBuilder = new StringBuilder("您的"); |
| @@ -1676,8 +1679,8 @@ public class ContractDistributorStandardServiceImpl extends | @@ -1676,8 +1679,8 @@ public class ContractDistributorStandardServiceImpl extends | ||
| 1676 | stringBuilder.append("("); | 1679 | stringBuilder.append("("); |
| 1677 | LocalDate lastApprovedTime = LocalDate.now(); | 1680 | LocalDate lastApprovedTime = LocalDate.now(); |
| 1678 | if ("FORMAL".equals(contractDistributorStandard.getStatus())) { | 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 | return; | 1684 | return; |
| 1682 | } | 1685 | } |
| 1683 | 1686 | ||
| @@ -1686,8 +1689,8 @@ public class ContractDistributorStandardServiceImpl extends | @@ -1686,8 +1689,8 @@ public class ContractDistributorStandardServiceImpl extends | ||
| 1686 | } | 1689 | } |
| 1687 | 1690 | ||
| 1688 | if ("STANDARD".equals(contractDistributorStandard.getStatus())) { | 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 | return; | 1694 | return; |
| 1692 | } | 1695 | } |
| 1693 | 1696 | ||
| @@ -1697,22 +1700,32 @@ public class ContractDistributorStandardServiceImpl extends | @@ -1697,22 +1700,32 @@ public class ContractDistributorStandardServiceImpl extends | ||
| 1697 | 1700 | ||
| 1698 | stringBuilder.append(",合同号:").append(contractDistributorStandard.getCode()); | 1701 | stringBuilder.append(",合同号:").append(contractDistributorStandard.getCode()); |
| 1699 | stringBuilder.append(",请尽快补充规范合同。"); | 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 | LocalDate currentDate = LocalDate.now(); | 1708 | LocalDate currentDate = LocalDate.now(); |
| 1704 | // 如果最后批准时间加3天还在当前时间之前,说明超过3天 | 1709 | // 如果最后批准时间加3天还在当前时间之前,说明超过3天 |
| 1705 | if (lastApprovedTime.plusDays(3).isBefore(currentDate)) { | 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 | Optional.ofNullable(contractDistributorStandard.getWorkshopId()) | 1716 | Optional.ofNullable(contractDistributorStandard.getWorkshopId()) |
| 1707 | .map(workshopIdAndCodeMap::get) | 1717 | .map(workshopIdAndCodeMap::get) |
| 1708 | .filter(StringUtils::isNotBlank) | 1718 | .filter(StringUtils::isNotBlank) |
| 1709 | .map(workshopCodeAndJybzgCodeMap::get) | 1719 | .map(workshopCodeAndJybzgCodeMap::get) |
| 1710 | .filter(StringUtils::isNotBlank) | 1720 | .filter(StringUtils::isNotBlank) |
| 1711 | .map(jybzgCodeAndUserIdMap::get) | 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 | SysSiteMessageDto messageDto = new SysSiteMessageDto(); | 1731 | SysSiteMessageDto messageDto = new SysSiteMessageDto(); |
| @@ -30,6 +30,7 @@ import com.lframework.xingyun.basedata.service.workshop.WorkshopService; | @@ -30,6 +30,7 @@ import com.lframework.xingyun.basedata.service.workshop.WorkshopService; | ||
| 30 | import com.lframework.xingyun.sc.entity.ContractDistributorStandard; | 30 | import com.lframework.xingyun.sc.entity.ContractDistributorStandard; |
| 31 | import com.lframework.xingyun.sc.entity.SpecLockDelayApplication; | 31 | import com.lframework.xingyun.sc.entity.SpecLockDelayApplication; |
| 32 | import com.lframework.xingyun.sc.enums.CustomerDevelopStatus; | 32 | import com.lframework.xingyun.sc.enums.CustomerDevelopStatus; |
| 33 | +import com.lframework.xingyun.sc.handlers.TransactorHandler; | ||
| 33 | import com.lframework.xingyun.sc.mappers.SpecLockDelayApplicationMapper; | 34 | import com.lframework.xingyun.sc.mappers.SpecLockDelayApplicationMapper; |
| 34 | import com.lframework.xingyun.sc.service.HolidaysService; | 35 | import com.lframework.xingyun.sc.service.HolidaysService; |
| 35 | import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService; | 36 | import com.lframework.xingyun.sc.service.contract.ContractDistributorStandardService; |
| @@ -76,6 +77,8 @@ public class SpecLockDelayApplicationServiceImpl extends BaseMpServiceImpl<SpecL | @@ -76,6 +77,8 @@ public class SpecLockDelayApplicationServiceImpl extends BaseMpServiceImpl<SpecL | ||
| 76 | private WorkshopService workshopService; | 77 | private WorkshopService workshopService; |
| 77 | @Resource | 78 | @Resource |
| 78 | private SysDeptService sysDeptService; | 79 | private SysDeptService sysDeptService; |
| 80 | + @Resource | ||
| 81 | + private TransactorHandler transactorHandler; | ||
| 79 | 82 | ||
| 80 | @Override | 83 | @Override |
| 81 | public PageResult<SpecLockDelayApplication> query(Integer pageIndex, Integer pageSize, QuerySpecLockDelayApplicationVo vo) { | 84 | public PageResult<SpecLockDelayApplication> query(Integer pageIndex, Integer pageSize, QuerySpecLockDelayApplicationVo vo) { |
| @@ -376,9 +379,27 @@ public class SpecLockDelayApplicationServiceImpl extends BaseMpServiceImpl<SpecL | @@ -376,9 +379,27 @@ public class SpecLockDelayApplicationServiceImpl extends BaseMpServiceImpl<SpecL | ||
| 376 | 379 | ||
| 377 | // 获取用户列表 | 380 | // 获取用户列表 |
| 378 | log.info("开始获取需要通知的用户列表"); | 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 | log.info("合同{}需要通知的用户数量:{}", contractCode, userIdList.size()); | 398 | log.info("合同{}需要通知的用户数量:{}", contractCode, userIdList.size()); |
| 399 | + if (CollectionUtils.isEmpty(userIdList)) { | ||
| 400 | + log.info("合同{}未匹配到任何通知人员,跳过发送", contractCode); | ||
| 401 | + continue; | ||
| 402 | + } | ||
| 382 | 403 | ||
| 383 | // 构建消息内容 | 404 | // 构建消息内容 |
| 384 | StringBuilder sb = new StringBuilder(); | 405 | StringBuilder sb = new StringBuilder(); |
| @@ -419,4 +440,36 @@ public class SpecLockDelayApplicationServiceImpl extends BaseMpServiceImpl<SpecL | @@ -419,4 +440,36 @@ public class SpecLockDelayApplicationServiceImpl extends BaseMpServiceImpl<SpecL | ||
| 419 | log.info("延迟锁规消息发送任务执行完成:总共处理{}个合同,成功发送{}条消息,失败{}个", | 440 | log.info("延迟锁规消息发送任务执行完成:总共处理{}个合同,成功发送{}条消息,失败{}个", |
| 420 | totalCount, sentCount, errorCount); | 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 | } |