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,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 }