Explorar el Código

feat: 阿拉钉结算完单

lixuesong hace 2 años
padre
commit
c7b790a1f2

+ 4 - 1
db/v2.0/221009.sql

@@ -1,3 +1,6 @@
 -- 结算表 加第三方任务id
 alter table wm_score_package_settle_note
-    add third_task_id varchar(20) null comment '第三方任务id';
+    add third_task_id varchar(20) null comment '第三方任务id';
+-- 结算表 加是否完成完单操作标记
+alter table wm_score_package_settle_note
+    add finish_task_flag int default 0 null comment '是否完成完单操作';

+ 5 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/entity/WmScorePackageSettleNote.java

@@ -176,6 +176,11 @@ public class WmScorePackageSettleNote extends Model<WmScorePackageSettleNote> {
 	 */
 	private String thirdTaskId;
 
+	/**
+	 * 是否完成完单操作(1:已完单,0:未完单)
+	 */
+	private Integer finishTaskFlag;
+
 	/**
 	 * 真实名称
 	 */

+ 20 - 0
hnqz-upms/hnqz-upms-biz/src/main/java/com/qunzhixinxi/hnqz/admin/event/OladingFinishTaskEvent.java

@@ -0,0 +1,20 @@
+package com.qunzhixinxi.hnqz.admin.event;
+
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+/**
+ * @author: lixuesong
+ * @createTime: 2022/10/10 11:08
+ * @description: 阿拉钉完单操作事件
+ */
+@Getter
+@AllArgsConstructor
+public class OladingFinishTaskEvent {
+
+	private final WmScorePackage scorePackage;
+
+	private final WmScorePackageSettleNote note;
+}

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

@@ -0,0 +1,29 @@
+package com.qunzhixinxi.hnqz.admin.listener;
+
+import com.qunzhixinxi.hnqz.admin.event.OladingFinishTaskEvent;
+import com.qunzhixinxi.hnqz.admin.service.gig.GigThirdApiService;
+import lombok.AllArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.event.EventListener;
+import org.springframework.core.annotation.Order;
+import org.springframework.scheduling.annotation.Async;
+
+/**
+ * @author: lixuesong
+ * @createTime: 2022/10/10 11:06
+ * @description: 阿拉钉完单操作事件监听器
+ */
+@Slf4j
+@AllArgsConstructor
+public class OladingFinishTaskEventListener {
+
+	private final GigThirdApiService gigThirdApiService;
+
+	@Async
+	@Order
+	@EventListener(OladingFinishTaskEvent.class)
+	public void pushEvent(OladingFinishTaskEvent event) {
+
+		gigThirdApiService.finishTask(event.getScorePackage(), event.getNote());
+	}
+}

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

@@ -1,6 +1,8 @@
 package com.qunzhixinxi.hnqz.admin.service.gig;
 
 import com.qunzhixinxi.hnqz.admin.api.dto.OladingCommonRequest;
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
+import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
 
 /**
  * 第三方零工接口处理
@@ -51,4 +53,12 @@ public interface GigThirdApiService {
 	 */
 	void oladingUploadTaxpayerAgreement(String requestId, OladingCommonRequest.UploadTaxpayerAgreementStatus agreementStatus, OladingCommonRequest.Req req);
 
+	/**
+	 * 完单操作
+	 *
+	 * @param wmScorePackage
+	 * @param note
+	 */
+	void finishTask(WmScorePackage wmScorePackage, WmScorePackageSettleNote note);
+
 }

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

@@ -4,11 +4,15 @@ import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.map.MapUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.json.JSONArray;
+import cn.hutool.json.JSONObject;
 import cn.hutool.json.JSONUtil;
 import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.qunzhixinxi.hnqz.admin.api.constant.CacheConstants;
 import com.qunzhixinxi.hnqz.admin.api.dto.OladingCommonRequest;
+import com.qunzhixinxi.hnqz.admin.api.entity.SysDept;
+import com.qunzhixinxi.hnqz.admin.config.TaxNotifyConfig;
+import com.qunzhixinxi.hnqz.admin.config.UpmsConfig;
 import com.qunzhixinxi.hnqz.admin.entity.SysUserSub;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackage;
 import com.qunzhixinxi.hnqz.admin.entity.WmScorePackageSettleNote;
@@ -17,24 +21,34 @@ import com.qunzhixinxi.hnqz.admin.enums.GigCallBackStatus;
 import com.qunzhixinxi.hnqz.admin.enums.GigTypeEnum;
 import com.qunzhixinxi.hnqz.admin.enums.OladingCertStatus;
 import com.qunzhixinxi.hnqz.admin.enums.SubjectLocation;
+import com.qunzhixinxi.hnqz.admin.service.SysDeptService;
 import com.qunzhixinxi.hnqz.admin.service.SysUserSubService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageService;
 import com.qunzhixinxi.hnqz.admin.service.WmScorePackageSettleNoteService;
 import com.qunzhixinxi.hnqz.admin.service.gig.GigThirdApiService;
 import com.qunzhixinxi.hnqz.admin.service.gig.SysUserSignCertService;
+import com.qunzhixinxi.hnqz.common.core.constant.CommonConstants;
 import com.qunzhixinxi.hnqz.common.core.exception.ValidateCodeException;
+import com.qunzhixinxi.hnqz.common.core.util.R;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang.RandomStringUtils;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.http.HttpEntity;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.client.RestTemplate;
 
 import java.time.LocalDateTime;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
@@ -53,6 +67,9 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 	private final SysUserSignCertService sysUserSignCertService;
 	private final WmScorePackageSettleNoteService scorePackageSettleNoteService;
 	private final WmScorePackageService scorePackageService;
+	private final SysDeptService sysDeptService;
+	private final UpmsConfig upmsConfig;
+	private final TaxNotifyConfig taxNotifyConfig;
 
 	/**
 	 * 正启之星回调业务处理
@@ -536,4 +553,48 @@ public class GigThirdApiServiceImpl implements GigThirdApiService {
 			sysUserSignCertService.batchChannelCert(userSignCertDTO);
 		}
 	}
+
+	/**
+	 * 完单操作
+	 *
+	 * @param wmScorePackage
+	 * @param note
+	 */
+	public void finishTask(WmScorePackage wmScorePackage, WmScorePackageSettleNote note) {
+		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());
+		}
+		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);
+			}
+		}
+	}
 }