Selaa lähdekoodia

fix: 阿拉钉结算回调发起完单操作-批量情况修正

lixuesong 2 vuotta sitten
vanhempi
commit
ac2ae27efe

+ 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);
+				}
+			}
+		});
 	}
 }