将监听消息同步到多维表格handle

畅捷通同步方案更新
YXY 11 months ago
parent 819100a455
commit afd36bd966

@ -23,11 +23,16 @@ public class RedisConstants {
/**
* ticketkey
* CJT_TICKET_REFRESH_CACHE_KEY token
* CJT_TICKET_CACHE_KEY ticket
* CJT_TOKEN_CACHE_KEY token
* CJT_ASYNCHRONOUS
* CJT_CALLBACK_OPERATE
*/
public static final String CJT_TICKET_REFRESH_CACHE_KEY = "CJT_TICKET_REFRESH_CACHE_KEY";
public static final String CJT_TICKET_CACHE_KEY = "TICKET_KEY";
public static final String CJT_TOKEN_CACHE_KEY = "OPEN_TOKEN";
public static final String CJT_ASYNCHRONOUS = "CJT_ASYNCHRONOUS";
public static final String CJT_CALLBACK_OPERATE = "CJT_CALLBACK_OPERATE";
}

@ -16,6 +16,7 @@ import com.ruoyi.flyingbook.domain.edi.CJTEdiRequestVo;
import com.ruoyi.flyingbook.edi.EdiOperateService;
import com.ruoyi.flyingbook.mapper.ErpLarkTempRelationMapper;
import com.ruoyi.flyingbook.service.IEventLogService;
import com.ruoyi.flyingbook.strategy.cjt.CJTOperateCallBackFactory;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.lang3.StringUtils;
@ -48,6 +49,8 @@ public class EdiController extends BaseController {
private RedisCache redisCache;
@Autowired
private ErpLarkTempRelationMapper erpLarkTempRelationMapper;
@Autowired
private CJTOperateCallBackFactory cjtOperateCallBackFactory;
/**
*
@ -110,13 +113,15 @@ public class EdiController extends BaseController {
String appKey = jsonObject.getString("appKey");
redisCache.setCacheObject(buildUniqueKey(RedisConstants.CJT_TICKET_CACHE_KEY, appKey), appTicket, 24, TimeUnit.HOURS);
}
}else if ("SaleDispatchVoucher_Delete".equals(msgType)){
log.info("畅捷通删除接口回调");
String voucherCode = bizContent.getString("voucherCode");
CJTEdiCallbackRequestVo cjtEdiCallbackRequestVo = new CJTEdiCallbackRequestVo(msgType, voucherCode);
ediOperateService.cjtCallback(cjtEdiCallbackRequestVo);
}else{
cacheInfo(jsonObject);
}
// else if ("SaleDispatchVoucher_Delete".equals(msgType)){
// log.info("畅捷通删除接口回调");
// String voucherCode = bizContent.getString("voucherCode");
// CJTEdiCallbackRequestVo cjtEdiCallbackRequestVo = new CJTEdiCallbackRequestVo(msgType, voucherCode);
// ediOperateService.cjtCallback(cjtEdiCallbackRequestVo);
// }
else{
cjtOperateCallBackFactory.handle(jsonObject);
}
}

@ -86,12 +86,12 @@ public class CJTEdiCallbackRequestVo {
this.voucherCode = voucherCode;
}
public CJTEdiCallbackRequestVo(String appId,String msgType, JSONObject body) {
public CJTEdiCallbackRequestVo(String appId,String msgType, JSONObject body,CjtAccountEnum cjtAccountEnum,CjtCallBackOperateEnum callBackOperateEnum) {
this.msgType = msgType;
this.body = body;
this.appId = appId;
this.cjtAccountEnum = CjtAccountEnum.getByCode(appId);
this.msgTypeEnum = CjtCallBackOperateEnum.getByCode(msgType);
this.cjtAccountEnum = cjtAccountEnum;
this.msgTypeEnum = callBackOperateEnum;
}
public void addRetryCount(){

@ -31,6 +31,7 @@ import org.springframework.util.StringUtils;
import javax.annotation.Resource;
import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.stream.Collectors;
@ -57,9 +58,18 @@ public abstract class CJTOperateCallBackAbstract {
protected ErpLarkTempRelationMapper erpLarkTempRelationMapper;
@Value("${lark.robot.group}")
private String ROBOT_GROUP;
/**
*
*/
protected static final String REQUEST_ROOT_PATH = "https://openapi.chanjet.com";
public void execute(CJTEdiCallbackRequestVo req){
String operateCallBackFlag = buildCacheUniqueKey(RedisConstants.CJT_CALLBACK_OPERATE, req.getAppId() + req.getMsgType() + req.getVoucherId());
try {
Boolean operateFlag = redisCache.setCacheObjectIfAbsent(operateCallBackFlag, operateCallBackFlag, 10L, TimeUnit.MINUTES);
if (!operateFlag){
return;
}
preHandle(req);
initContext(req);
// resetTicket(req);
@ -74,6 +84,8 @@ public abstract class CJTOperateCallBackAbstract {
errorHandle(req,e);
larkRobotHelper.sendMessageByBot(ROBOT_GROUP, buildRobotErrorCountMessage(req,e));
}
}finally {
redisCache.deleteObject(operateCallBackFlag);
}
}
@ -107,10 +119,7 @@ public abstract class CJTOperateCallBackAbstract {
}
private void sync(CJTEdiCallbackRequestVo req){
JSONObject body = req.getBody();
CjtAccountEnum cjtAccountEnum = req.getCjtAccountEnum();
String voucherID = body.getString("voucherID");
req.setVoucherId(voucherID);
LarkCJTRequestBody cjtRequestBody = new LarkCJTRequestBody(req.getVoucherId());
LarkCJTRequest cjtRequest = new LarkCJTRequest(getRequestUrl(), cjtAccountEnum.getAppKey(), cjtAccountEnum.getAppSecret(), generateToken(req),cjtRequestBody);
LarkOkHttpHelper.post(cjtRequest);

@ -0,0 +1,62 @@
package com.ruoyi.flyingbook.strategy.cjt;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.enums.CjtAccountEnum;
import com.ruoyi.common.enums.CjtCallBackOperateEnum;
import com.ruoyi.flyingbook.domain.edi.CJTEdiCallbackRequestVo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
/**
* @author yuxiangyong
* @create 2023-10-14 10:44
*/
public class CJTOperateCallBackFactory {
@Autowired
private ManufactureOrderSyncCallOperate manufactureOrderSyncCallOperate;
@Autowired
private SaleDispatchSyncCallOperate saleDispatchSyncCallOperate;
@Autowired
private SaleOrderSyncCallBackOperate saleOrderSyncCallBackOperate;
public void handle(JSONObject jsonObject){
String appKey = jsonObject.getString("appKey");
String msgType = jsonObject.getString("msgType");
JSONObject bizContent = jsonObject.getJSONObject("bizContent");
CjtAccountEnum cjtAccountEnum = CjtAccountEnum.getByCode(appKey);
CjtCallBackOperateEnum callBackOperateEnum = CjtCallBackOperateEnum.getByCode(msgType);
if (cjtAccountEnum == null || callBackOperateEnum == null){
return;
}
if (bizContent == null){
return;
}
String voucherID = bizContent.getString("voucherID");
if (StringUtils.isBlank(voucherID)){
return;
}
CJTEdiCallbackRequestVo cjtEdiCallbackRequestVo = new CJTEdiCallbackRequestVo(appKey, msgType, bizContent,cjtAccountEnum,callBackOperateEnum);
cjtEdiCallbackRequestVo.setVoucherId(voucherID);
switch (callBackOperateEnum){
case SALE_DISPATCH_CREATE:
case SALE_DISPATCH_UPDATE:
case SALE_DISPATCH_DELETE:
saleDispatchSyncCallOperate.execute(cjtEdiCallbackRequestVo);
break;
case SALE_ORDER_CREATE:
case SALE_ORDER_UPDATE:
case SALE_ORDER_DELETE:
saleOrderSyncCallBackOperate.execute(cjtEdiCallbackRequestVo);
break;
case MANUFACTURE_ORDER_CREATE:
case MANUFACTURE_ORDER_UPDATE:
case MANUFACTURE_ORDER_DELETE:
manufactureOrderSyncCallOperate.execute(cjtEdiCallbackRequestVo);
break;
default:
break;
}
}
}

@ -1,12 +1,12 @@
package com.ruoyi.flyingbook.strategy.cjt;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.enums.*;
import com.ruoyi.common.enums.CjtAccountEnum;
import com.ruoyi.common.enums.CjtCallBackOperateEnum;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.flyingbook.domain.edi.CJTEdiCallbackRequestVo;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

@ -7,7 +7,8 @@ import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.flyingbook.domain.edi.CJTEdiCallbackRequestVo;
import org.springframework.stereotype.Component;
import java.util.*;
import java.util.HashMap;
import java.util.Map;
/**
*

@ -1,12 +1,12 @@
package com.ruoyi.flyingbook.strategy.cjt;
import com.alibaba.fastjson.JSONObject;
import com.ruoyi.common.enums.*;
import com.ruoyi.common.enums.CjtAccountEnum;
import com.ruoyi.common.enums.CjtCallBackOperateEnum;
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.flyingbook.domain.edi.CJTEdiCallbackRequestVo;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@ -15,8 +15,8 @@ import java.util.Map;
* @author yuxiangyong
* @create 2023-07-17 21:21
*/
@Component("saleOrderSyncCallBack")
public class SaleOrderSyncCallBack extends CJTOperateCallBackAbstract{
@Component("saleOrderSyncCallBackOperate")
public class SaleOrderSyncCallBackOperate extends CJTOperateCallBackAbstract{
@Override
protected void syncRecord(CJTEdiCallbackRequestVo req, JSONObject returnBody) {
Loading…
Cancel
Save