|
...
|
...
|
@@ -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) {
|
...
|
...
|
|