Commit 95d9735e5f42cdb6cac7ff5fc58e2f1982099a1e

Authored by 房远帅
2 parents aab223c5 23f5f6ac

Merge branch 'master_after0506' into master_after0506_tmp

... ... @@ -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 }
... ...