Browse Source

Merge branch 'hotfix-20221013-settlefix' into temp-pre

lixuesong 2 years ago
parent
commit
e34ac10d34

+ 1 - 1
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/listener/OladingFinishTaskEventListener.java

@@ -46,7 +46,7 @@ public class OladingFinishTaskEventListener {
 	@EventListener(OladingFinishTaskEvent.class)
 	public void pushEvent(OladingFinishTaskEvent event) {
 
-		event.getNoteList().forEach(gigThirdApiService::finishTask);
+		gigThirdApiService.finishTask(event.getNoteList());
 	}
 
 }

+ 4 - 2
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/GigThirdApiService.java

@@ -4,6 +4,8 @@ import com.qunzhixinxi.hnqz.admin.api.dto.OladingCommonRequest;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
 
+import java.util.List;
+
 /**
  * 第三方零工接口处理
  *
@@ -56,8 +58,8 @@ public interface GigThirdApiService {
 	/**
 	 * 完单操作
 	 *
-	 * @param note
+	 * @param noteList
 	 */
-	void finishTask(WmScorePackageSettleNote note);
+	void finishTask(List<WmScorePackageSettleNote> noteList);
 
 }

+ 49 - 36
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/gig/impl/GigThirdApiServiceImpl.java

@@ -571,44 +571,57 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 	/**
 	 * 完单操作
 	 *
-	 * @param note
+	 * @param noteList
 	 */
-	public void finishTask(WmScorePackageSettleNote note) {
-		WmScorePackage wmScorePackage = scorePackageService.getById(note.getPackageId());
-		SysDept dept = sysDeptService.getById(wmScorePackage.getDeptId());
-
-		String gigFinishTaskUrl = upmsConfig.getGigServiceUrl() + "/gig/operation/settlement/finish-task";
-		// 封装结算参数
-		Map<String, Object> params = new HashMap<>();
-		params.put("requestId", RandomStringUtils.randomAlphabetic(12));
-		params.put("endType", "CSO");
-		params.put("enterpriseCode", dept.getTaxCode());
-		params.put("subjectType", "OLADING");
-		params.put("channel", "DEFAULT");
-		params.put("subjectLocation", note.getSubjectLocation());
-		params.put("taskId", note.getThirdTaskId());
-		params.put("credentialLink", taxNotifyConfig.getTaskUrl() + "/#/h5/indexTask?id=" + note.getPackageId() + "&userId=" + note.getUserId());
-
-		// 发起完单操作
-		HttpHeaders headers = new HttpHeaders();
-		headers.setContentType(MediaType.APPLICATION_JSON);
-		log.info("阿拉丁完单操作req: {}", params);
-		HttpEntity<String> result = new RestTemplate().exchange(gigFinishTaskUrl, HttpMethod.POST, new HttpEntity<>(params, headers), String.class);
-		log.warn("阿拉丁完单操作resp: {}", result.getBody());
-		if (!JSONUtil.isJson(result.getBody())) {
-			log.warn("完单操作失败:taskId={}", note.getThirdTaskId());
+	public void finishTask(List<WmScorePackageSettleNote> noteList) {
+		// 使用thirdTaskId分组
+		Map<String, List<WmScorePackageSettleNote>> noteTaskIdMap = noteList.stream()
+				.filter(note -> StrUtil.isNotBlank(note.getThirdTaskId()))
+				.collect(Collectors.groupingBy(WmScorePackageSettleNote::getThirdTaskId));
+		if (CollUtil.isEmpty(noteTaskIdMap)) {
+			log.info("任务id为空,不发起阿拉丁完单操作");
+			return;
 		}
-		JSONObject resultObj = JSONUtil.parseObj(result.getBody());
-		// {"code":0,"msg":"SUCCESS","data":{"success":true,"message":"成功","result":"4154"}}
-		if (Objects.equals(resultObj.getInt("code"), CommonConstants.SUCCESS)) {
-			JSONObject dataJsonObj = resultObj.getJSONObject("data");
-			if (dataJsonObj != null && dataJsonObj.getBool("success", false)) {
-				// 完单操作成功,更新状态
-				WmScorePackageSettleNote updateNote = new WmScorePackageSettleNote();
-				updateNote.setId(note.getId());
-				updateNote.setFinishTaskFlag(1);
-				scorePackageSettleNoteService.updateById(updateNote);
+
+		noteTaskIdMap.forEach((thirdTaskId, notes) -> {
+			WmScorePackageSettleNote note = notes.get(0);
+			WmScorePackage wmScorePackage = scorePackageService.getById(note.getPackageId());
+			SysDept dept = sysDeptService.getById(wmScorePackage.getDeptId());
+
+			String gigFinishTaskUrl = upmsConfig.getGigServiceUrl() + "/gig/operation/settlement/finish-task";
+			// 封装结算参数
+			Map<String, Object> params = new HashMap<>();
+			params.put("requestId", RandomStringUtils.randomAlphabetic(12));
+			params.put("endType", "HCP");
+			params.put("enterpriseCode", dept.getTaxCode());
+			params.put("subjectType", "OLADING");
+			params.put("channel", "DEFAULT");
+			params.put("subjectLocation", note.getSubjectLocation());
+			params.put("taskId", note.getThirdTaskId());
+			String packageIds = notes.stream().map(WmScorePackageSettleNote::getPackageId).collect(Collectors.joining(StrUtil.COMMA));
+			params.put("credentialLink", taxNotifyConfig.getTaskUrl() + "/#/h5/indexTask?id=" + packageIds + "&userId=" + note.getUserId());
+
+			// 发起完单操作
+			HttpHeaders headers = new HttpHeaders();
+			headers.setContentType(MediaType.APPLICATION_JSON);
+			log.info("阿拉丁完单操作req: {}", params);
+			HttpEntity<String> result = new RestTemplate().exchange(gigFinishTaskUrl, HttpMethod.POST, new HttpEntity<>(params, headers), String.class);
+			log.warn("阿拉丁完单操作resp: {}", result.getBody());
+			if (!JSONUtil.isJson(result.getBody())) {
+				log.warn("完单操作失败:taskId={}", note.getThirdTaskId());
 			}
-		}
+			JSONObject resultObj = JSONUtil.parseObj(result.getBody());
+			// {"code":0,"msg":"SUCCESS","data":{"success":true,"message":"成功","result":"4154"}}
+			if (Objects.equals(resultObj.getInt("code"), CommonConstants.SUCCESS)) {
+				JSONObject dataJsonObj = resultObj.getJSONObject("data");
+				if (dataJsonObj != null && dataJsonObj.getBool("success", false)) {
+					// 完单操作成功,更新状态
+					WmScorePackageSettleNote updateNote = new WmScorePackageSettleNote();
+					updateNote.setId(note.getId());
+					updateNote.setFinishTaskFlag(1);
+					scorePackageSettleNoteService.updateById(updateNote);
+				}
+			}
+		});
 	}
 }

+ 6 - 14
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/service/impl/WmScorePackageSettleNoteServiceImpl.java

@@ -787,26 +787,12 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 		List<Map<String, Object>> settleParamsMapper = new ArrayList<>();
 		Map<String, Map<String, Object>> detailMap = new HashMap<>();
 		noteList.forEach(note -> {
-			WmScorePackage wmScorePackage = wmScorePackageMapper.selectById(note.getPackageId());
 			// 封装结算参数
 			Map<String, Object> params;
 			if (detailMap.containsKey(note.getIdCardNumber())) {
 				params = detailMap.get(note.getIdCardNumber());
 				params.put("amount", String.valueOf(new BigDecimal((String) params.get("amount")).add(note.getSettleAmount()).doubleValue()));
 
-
-				LocalDate startTime = (LocalDate) params.get("taskStartTime");
-				LocalDate endTime = (LocalDate) params.get("taskEndTime");
-				LocalDate noteCreateTime = wmScorePackage.getCreateTime().toLocalDate();
-				LocalDate noteUpdateTime = wmScorePackage.getUpdateTime().toLocalDate();
-
-				if (noteCreateTime.isBefore(startTime)) {
-					params.put("taskStartTime", wmScorePackage.getCreateTime().toLocalDate());
-				}
-				if (noteUpdateTime.isAfter(endTime)) {
-					params.put("taskEndTime", wmScorePackage.getUpdateTime().toLocalDate());
-				}
-
 				Set<Integer> ids = (Set<Integer>) params.get("noteIds");
 				ids.add(note.getId());
 				params.put("noteIds", ids);
@@ -895,8 +881,10 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 							return;
 						}
 						WmScorePackageSettleNote note = new WmScorePackageSettleNote();
+						LocalDateTime now = LocalDateTime.now();
 						note.setId(id);
 						note.setUpdateTime(LocalDateTime.now());
+						note.setSubToGigTime(now);
 						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_SUBMIT.getType());
 						// 新增字段streamId
 						note.setStreamId(dataJsonObj.getStr("requestId"));
@@ -908,7 +896,9 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 						WmScorePackageSettleNote note = new WmScorePackageSettleNote();
 						note.setId(id);
 						log.info("政企之星结算提交失败: {}", note.getSettleNo());
+						LocalDateTime now = LocalDateTime.now();
 						note.setUpdateTime(LocalDateTime.now());
+						note.setSubToGigTime(now);
 						note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 						this.baseMapper.updateById(note);
 						log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());
@@ -924,7 +914,9 @@ public class WmScorePackageSettleNoteServiceImpl extends ServiceImpl<WmScorePack
 					WmScorePackageSettleNote note = new WmScorePackageSettleNote();
 					note.setId(id);
 					log.info("政企之星结算提交失败: {}", note.getSettleNo());
+					LocalDateTime now = LocalDateTime.now();
 					note.setUpdateTime(LocalDateTime.now());
+					note.setSubToGigTime(now);
 					note.setSettleNoteStatus(DingEnum.NOTE_STATUS_FAIL.getType());
 					this.baseMapper.updateById(note);
 					log.info("认证状态异常,结算解锁settleNoteId:{}", note.getId());