Commit e4dbce922c21191dbebea8cda39ec754853731e0

Authored by 杨鸣坤
1 parent a132185c

楚江ERP:合同规范补充提醒

... ... @@ -55,6 +55,7 @@ import org.apache.poi.hssf.usermodel.HSSFWorkbook;
55 55 import org.apache.poi.ss.usermodel.*;
56 56 import org.apache.poi.util.IOUtils;
57 57 import org.springframework.beans.factory.annotation.Autowired;
  58 +import org.springframework.scheduling.annotation.Scheduled;
58 59 import org.springframework.validation.annotation.Validated;
59 60 import org.springframework.web.bind.annotation.*;
60 61
... ... @@ -613,6 +614,14 @@ public class ContractDistributorStandardController extends DefaultBaseController
613 614 return InvokeResultBuilder.success();
614 615 }
615 616
  617 + @ApiModelProperty("合同规范补充提醒")
  618 + @GetMapping("/supplementContractSpecReminder")
  619 + @Scheduled(cron = "0 20 0 * * ?")
  620 + public InvokeResult<Void> supplementContractSpecReminder() {
  621 + contractDistributorStandardService.supplementContractSpecReminder();
  622 + return InvokeResultBuilder.success();
  623 + }
  624 +
616 625 /**
617 626 * 标准合同模版打印
618 627 */
... ...
... ... @@ -9,9 +9,14 @@ import com.lframework.starter.bpm.mappers.FlowTaskWrapperMapper;
9 9 import com.lframework.starter.bpm.service.FlowInstanceWrapperService;
10 10 import com.lframework.starter.bpm.vo.flow.task.QueryTodoTaskListVo;
11 11 import com.lframework.starter.common.utils.StringUtil;
  12 +import com.lframework.starter.mq.core.service.MqProducerService;
12 13 import com.lframework.starter.web.core.components.security.SecurityUtil;
  14 +import com.lframework.starter.web.inner.dto.message.SysSiteMessageDto;
13 15 import com.lframework.starter.web.inner.entity.SysDataDicItem;
14 16 import com.lframework.starter.web.inner.service.system.SysDataDicItemService;
  17 +import com.lframework.starter.web.inner.service.system.SysUserRoleService;
  18 +import com.lframework.xingyun.basedata.entity.Workshop;
  19 +import com.lframework.xingyun.basedata.service.workshop.WorkshopService;
15 20 import com.lframework.xingyun.sc.controller.contract.ContractDistributorStandardController;
16 21 import com.lframework.xingyun.sc.entity.*;
17 22 import com.lframework.starter.web.core.impl.BaseMpServiceImpl;
... ... @@ -81,6 +86,12 @@ public class ContractDistributorStandardServiceImpl extends
81 86 private ContractFrameworkService contractFrameworkService;
82 87 @Resource
83 88 private SysDataDicItemService sysDataDicItemService;
  89 + @Resource
  90 + private SysUserRoleService sysUserRoleService;
  91 + @Resource
  92 + private WorkshopService workshopService;
  93 + @Autowired
  94 + private MqProducerService mqProducerService;
84 95
85 96 @Override
86 97 public PageResult<ContractDistributorStandard> query(Integer pageIndex, Integer pageSize, QueryContractDistributorStandardVo vo) {
... ... @@ -1037,6 +1048,112 @@ public class ContractDistributorStandardServiceImpl extends
1037 1048 return getBaseMapper().getContractSigned(buyerList);
1038 1049 }
1039 1050
  1051 + @Override
  1052 + public void supplementContractSpecReminder() {
  1053 + Wrapper<ContractDistributorStandard> wrapper = Wrappers.lambdaQuery(ContractDistributorStandard.class)
  1054 + .in(ContractDistributorStandard::getFormalApproved, Arrays.asList("REFUSE", "CANCEL"))
  1055 + .or()
  1056 + .in(ContractDistributorStandard::getStandardApproved, Arrays.asList("REFUSE", "CANCEL"));
  1057 + List<ContractDistributorStandard> contractDistributorStandardList = list(wrapper);
  1058 + if (CollectionUtils.isEmpty(contractDistributorStandardList)) {
  1059 + return;
  1060 + }
  1061 +
  1062 + Set<String> workshopIds = contractDistributorStandardList
  1063 + .stream()
  1064 + .map(ContractDistributorStandard::getWorkshopId)
  1065 + .collect(Collectors.toSet());
  1066 + List<Workshop> workshopList = workshopService.listByIds(workshopIds);
  1067 + Map<String, String> workshopIdAndCodeMap = CollectionUtils.emptyIfNull(workshopList)
  1068 + .stream()
  1069 + .collect(Collectors.toMap(Workshop::getId, Workshop::getCode));
  1070 + Map<String, String> workshopCodeAndJybzgCodeMap = new HashMap<>(4);
  1071 + workshopCodeAndJybzgCodeMap.put("yfc", "yfcjybzg"); // 一分厂
  1072 + workshopCodeAndJybzgCodeMap.put("efc", "efcjybzg"); // 二分厂
  1073 + workshopCodeAndJybzgCodeMap.put("sfc", "sfcjybzg"); // 三分厂
  1074 + workshopCodeAndJybzgCodeMap.put("ztfc", "ztcjybzg"); // 四分厂
  1075 + Map<String, List<String>> jybzgCodeAndUserIdMap = new HashMap<>(4);
  1076 + jybzgCodeAndUserIdMap.put("yfcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("yfcjybzg")));
  1077 + jybzgCodeAndUserIdMap.put("efcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("efcjybzg")));
  1078 + jybzgCodeAndUserIdMap.put("sfcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("sfcjybzg")));
  1079 + jybzgCodeAndUserIdMap.put("ztcjybzg", sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("ztcjybzg")));
  1080 +
  1081 + List<String> bsczgUserIdList = sysUserRoleService.listUserIdByRoleCodes(Collections.singletonList("bsczg"));
  1082 + contractDistributorStandardList.forEach(contractDistributorStandard -> {
  1083 + try {
  1084 + StringBuilder stringBuilder = new StringBuilder("您的");
  1085 + if ("DISTRIB_STD".equals(contractDistributorStandard.getType())) {
  1086 + stringBuilder.append("经销标准合同");
  1087 + } else if ("DIST_STOCK_CONTRACT".equals(contractDistributorStandard.getType())) {
  1088 + stringBuilder.append("经销库存合同");
  1089 + } else if ("DRAFT_DIST_AGMT".equals(contractDistributorStandard.getType())) {
  1090 + stringBuilder.append("经销未锁规合同");
  1091 + } else if ("INTL_STD_CONTRACT".equals(contractDistributorStandard.getType())) {
  1092 + stringBuilder.append("外贸标准合同");
  1093 + } else if ("INTL_INVENTORY_AGMT".equals(contractDistributorStandard.getType())) {
  1094 + stringBuilder.append("外贸库存合同");
  1095 + } else if ("INTL_OPEN_SPEC_AGMT".equals(contractDistributorStandard.getType())) {
  1096 + stringBuilder.append("外贸未锁规格合同");
  1097 + } else if ("PROCESS_STD_AGMT".equals(contractDistributorStandard.getType())) {
  1098 + stringBuilder.append("加工标准合同");
  1099 + }
  1100 +
  1101 + stringBuilder.append("(");
  1102 + LocalDate lastApprovedTime = LocalDate.now();
  1103 + if ("FORMAL".equals(contractDistributorStandard.getStatus())) {
  1104 + if (!"REFUSE".equals(contractDistributorStandard.getFormalApproved())
  1105 + && !"CANCEL".equals(contractDistributorStandard.getFormalApproved())) {
  1106 + return;
  1107 + }
  1108 +
  1109 + stringBuilder.append("正式合同)");
  1110 + lastApprovedTime = contractDistributorStandard.getFormalTime().toLocalDate();
  1111 + }
  1112 +
  1113 + if ("STANDARD".equals(contractDistributorStandard.getStatus())) {
  1114 + if (!"REFUSE".equals(contractDistributorStandard.getStandardApproved())
  1115 + && !"CANCEL".equals(contractDistributorStandard.getStandardApproved())) {
  1116 + return;
  1117 + }
  1118 +
  1119 + stringBuilder.append("标准合同)");
  1120 + lastApprovedTime = contractDistributorStandard.getStandardTime().toLocalDate();
  1121 + }
  1122 +
  1123 + stringBuilder.append(",合同号:").append(contractDistributorStandard.getCode());
  1124 + stringBuilder.append(",请尽快补充规范合同。");
  1125 + List<String> userIdList = new ArrayList<>();
  1126 + userIdList.add(contractDistributorStandard.getCreateById());
  1127 +
  1128 + LocalDate currentDate = LocalDate.now();
  1129 + // 如果最后批准时间加3天还在当前时间之前,说明超过3天
  1130 + if (lastApprovedTime.plusDays(3).isBefore(currentDate)) {
  1131 + Optional.ofNullable(contractDistributorStandard.getWorkshopId())
  1132 + .map(workshopIdAndCodeMap::get)
  1133 + .filter(StringUtils::isNotBlank)
  1134 + .map(workshopCodeAndJybzgCodeMap::get)
  1135 + .filter(StringUtils::isNotBlank)
  1136 + .map(jybzgCodeAndUserIdMap::get)
  1137 + .ifPresent(userIdList::addAll);
  1138 +
  1139 + userIdList.addAll(bsczgUserIdList);
  1140 + }
  1141 +
  1142 + // 发送消息
  1143 + SysSiteMessageDto messageDto = new SysSiteMessageDto();
  1144 + messageDto.setUserIdList(userIdList);
  1145 + messageDto.setTitle("补充规范合同通知");
  1146 + messageDto.setContent(stringBuilder.toString());
  1147 + messageDto.setBizKey(IdUtil.getId());
  1148 + messageDto.setCreateUserId(null);
  1149 +
  1150 + mqProducerService.createSysSiteMessage(messageDto);
  1151 + } catch (Exception e) {
  1152 + log.error("发送消息报错", e);
  1153 + }
  1154 + });
  1155 + }
  1156 +
1040 1157 @CacheEvict(value = ContractDistributorStandard.CACHE_NAME, key = "@cacheVariables.tenantId() + #key")
1041 1158 @Override
1042 1159 public void cleanCacheByKey(Serializable key) {
... ...
... ... @@ -120,4 +120,9 @@ public interface ContractDistributorStandardService extends BaseMpService<Contra
120 120 * @return 一年内未签订合同的企业
121 121 */
122 122 List<String> getContractSigned(List<String> buyerList);
  123 +
  124 + /**
  125 + * 合同规范补充提醒
  126 + */
  127 + void supplementContractSpecReminder();
123 128 }
... ...