@@ -4,8 +4,7 @@ import com.nsgk.agentcentersdk.api.NSApiResult; | |||||
import com.nsgk.agentcentersdk.api.NSSDK; | import com.nsgk.agentcentersdk.api.NSSDK; | ||||
import com.nsgk.agentcentersdk.api.NSSDKClient; | import com.nsgk.agentcentersdk.api.NSSDKClient; | ||||
import com.nsgk.agentcentersdk.core.NSProtocol; | import com.nsgk.agentcentersdk.core.NSProtocol; | ||||
import com.nsgk.agentcentersdk.entity.NSContractionEntity; | |||||
import com.nsgk.agentcentersdk.entity.NSEntity; | |||||
import com.nsgk.agentcentersdk.message.NSMessage; | |||||
import com.nsgk.agentcentersdk.utility.NSReflect; | import com.nsgk.agentcentersdk.utility.NSReflect; | ||||
public final class NSMain | public final class NSMain | ||||
@@ -41,13 +40,13 @@ public final class NSMain | |||||
public static void Test() | public static void Test() | ||||
{ | { | ||||
NSSDKClient client; | NSSDKClient client; | ||||
NSEntity entity; | |||||
NSMessage entity; | |||||
NSApiResult result; | NSApiResult result; | ||||
NSSDK.InitClient("http://localhost", (short) 8081, "371002100005", "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==", 0); | NSSDK.InitClient("http://localhost", (short) 8081, "371002100005", "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==", 0); | ||||
client = NSSDK.InstanceClient(); | client = NSSDK.InstanceClient(); | ||||
entity = new NSEntity(); | |||||
entity = new NSMessage(); | |||||
entity.setDeptId(187L) | entity.setDeptId(187L) | ||||
.setBookId(166L) | .setBookId(166L) | ||||
.setOrgCode("371002100005") | .setOrgCode("371002100005") | ||||
@@ -3,8 +3,8 @@ package com.nsgk.agentcentersdk.api; | |||||
// 接口 | // 接口 | ||||
public final class NSApi | public final class NSApi | ||||
{ | { | ||||
public static final String NS_API_TEST = "/agentcenter/api/test"; | |||||
public static final String NS_API_REPORT = "/agentcenter/api/report"; | |||||
public static final String NS_API_TEST = "/agentcenter/api/test"; | |||||
public static final String NS_API_INTERFACE = "/agentcenter/api/interface"; | |||||
private NSApi() {} | private NSApi() {} | ||||
} | } |
@@ -6,7 +6,7 @@ import com.alibaba.fastjson.JSONObject; | |||||
import com.nsgk.agentcentersdk.core.NSConstants; | import com.nsgk.agentcentersdk.core.NSConstants; | ||||
import com.nsgk.agentcentersdk.core.NSProtocol; | import com.nsgk.agentcentersdk.core.NSProtocol; | ||||
import com.nsgk.agentcentersdk.core.NSReportObject; | import com.nsgk.agentcentersdk.core.NSReportObject; | ||||
import com.nsgk.agentcentersdk.entity.NSEntity; | |||||
import com.nsgk.agentcentersdk.message.NSMessage; | |||||
import com.nsgk.agentcentersdk.err.NSAssert; | import com.nsgk.agentcentersdk.err.NSAssert; | ||||
import com.nsgk.agentcentersdk.err.NSErrGlobal; | import com.nsgk.agentcentersdk.err.NSErrGlobal; | ||||
import com.nsgk.agentcentersdk.err.NSErrno; | import com.nsgk.agentcentersdk.err.NSErrno; | ||||
@@ -50,7 +50,7 @@ public final class NSSDKClient | |||||
} | } | ||||
// 发送请求 | // 发送请求 | ||||
public <T extends NSEntity> NSApiResult Send(int protocol, T object) | |||||
public <T extends NSMessage> NSApiResult Send(int protocol, T object) | |||||
{ | { | ||||
String url; | String url; | ||||
NSReportObject<T> reportObject; | NSReportObject<T> reportObject; | ||||
@@ -59,7 +59,7 @@ public final class NSSDKClient | |||||
NSAssert.NotNull(object, NSErrno.ERRNO_CLI_DATA_MISSING); | NSAssert.NotNull(object, NSErrno.ERRNO_CLI_DATA_MISSING); | ||||
NSAssert.NotEmpty(identifier, NSErrno.ERRNO_CLI_PARAMETER_MISSING); | NSAssert.NotEmpty(identifier, NSErrno.ERRNO_CLI_PARAMETER_MISSING); | ||||
NSErrGlobal.ASSERT(NSProtocol.IsValid(protocol), NSErrno.ERRNO_SYS_INVALID_PROTOCOL); | NSErrGlobal.ASSERT(NSProtocol.IsValid(protocol), NSErrno.ERRNO_SYS_INVALID_PROTOCOL); | ||||
url = NSApi.NS_API_REPORT; | |||||
url = NSApi.NS_API_INTERFACE; | |||||
reportObject = new NSReportObject<>(identifier, protocol, object); | reportObject = new NSReportObject<>(identifier, protocol, object); | ||||
request = new NSNetworkRequest(); | request = new NSNetworkRequest(); | ||||
request.setUrl(BuildUrl(url)); | request.setUrl(BuildUrl(url)); | ||||
@@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSON; | |||||
import com.nsgk.agentcentersdk.core.NSConstants; | import com.nsgk.agentcentersdk.core.NSConstants; | ||||
import com.nsgk.agentcentersdk.core.NSProtocol; | import com.nsgk.agentcentersdk.core.NSProtocol; | ||||
import com.nsgk.agentcentersdk.core.NSReportObject; | import com.nsgk.agentcentersdk.core.NSReportObject; | ||||
import com.nsgk.agentcentersdk.entity.NSEntity; | |||||
import com.nsgk.agentcentersdk.message.NSMessage; | |||||
import com.nsgk.agentcentersdk.err.NSAssert; | import com.nsgk.agentcentersdk.err.NSAssert; | ||||
import com.nsgk.agentcentersdk.err.NSErrGlobal; | import com.nsgk.agentcentersdk.err.NSErrGlobal; | ||||
import com.nsgk.agentcentersdk.err.NSErrno; | import com.nsgk.agentcentersdk.err.NSErrno; | ||||
@@ -38,7 +38,7 @@ public final class NSSDKServer | |||||
} | } | ||||
// 解析请求 | // 解析请求 | ||||
public <T extends NSEntity> NSReportObject<T> Recv(HttpServletRequest request, Class<T> clazz) | |||||
public <T extends NSMessage> NSReportObject<T> Recv(HttpServletRequest request, Class<T> clazz) | |||||
{ | { | ||||
NSReportObject<T> res; | NSReportObject<T> res; | ||||
String sign; | String sign; | ||||
@@ -1,4 +1,4 @@ | |||||
package com.nsgk.agentcentersdk.entity; | |||||
package com.nsgk.agentcentersdk.message; | |||||
import lombok.Data; | import lombok.Data; | ||||
import lombok.experimental.Accessors; | import lombok.experimental.Accessors; | ||||
@@ -6,7 +6,7 @@ import lombok.experimental.Accessors; | |||||
// 合同实体 | // 合同实体 | ||||
@Data | @Data | ||||
@Accessors(chain = true) | @Accessors(chain = true) | ||||
public class NSContractionEntity extends NSEntity | |||||
public class NSContractionMessage extends NSMessage | |||||
{ | { | ||||
private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; | ||||
@@ -1,4 +1,4 @@ | |||||
package com.nsgk.agentcentersdk.entity; | |||||
package com.nsgk.agentcentersdk.message; | |||||
import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||
import cn.hutool.core.collection.CollectionUtil; | import cn.hutool.core.collection.CollectionUtil; | ||||
@@ -18,7 +18,7 @@ import java.util.Map; | |||||
// 基本实体 | // 基本实体 | ||||
@Data | @Data | ||||
@Accessors(chain = true) | @Accessors(chain = true) | ||||
public class NSEntity implements Serializable | |||||
public class NSMessage implements Serializable | |||||
{ | { | ||||
private static final long serialVersionUID = 1L; | private static final long serialVersionUID = 1L; | ||||
@@ -49,14 +49,14 @@ public class NSEntity implements Serializable | |||||
} | } | ||||
@SuppressWarnings("unchecked") | @SuppressWarnings("unchecked") | ||||
public <T extends NSEntity> T Parm(String name, Object val) | |||||
public <T extends NSMessage> T Parm(String name, Object val) | |||||
{ | { | ||||
PARMS().put(name, val); | PARMS().put(name, val); | ||||
return (T)this; | return (T)this; | ||||
} | } | ||||
@SuppressWarnings("unchecked") | @SuppressWarnings("unchecked") | ||||
public <T extends NSEntity> T DelParm(String...name) | |||||
public <T extends NSMessage> T DelParm(String...name) | |||||
{ | { | ||||
if(null != parms && NSArr.IsNotEmpty(name)) | if(null != parms && NSArr.IsNotEmpty(name)) | ||||
{ | { | ||||
@@ -132,14 +132,14 @@ public class NSEntity implements Serializable | |||||
} | } | ||||
@SuppressWarnings("unchecked") | @SuppressWarnings("unchecked") | ||||
public <T extends NSEntity> T Add(String name, Object val) | |||||
public <T extends NSMessage> T Add(String name, Object val) | |||||
{ | { | ||||
Set(name, val); | Set(name, val); | ||||
return (T)this; | return (T)this; | ||||
} | } | ||||
@SuppressWarnings("unchecked") | @SuppressWarnings("unchecked") | ||||
public <T extends NSEntity> T Add_s(String name, Object val) | |||||
public <T extends NSMessage> T Add_s(String name, Object val) | |||||
{ | { | ||||
Set_s(name, val); | Set_s(name, val); | ||||
return (T)this; | return (T)this; |
@@ -3,26 +3,19 @@ package com.ruoyi.web.controller.agentcenter; | |||||
import com.nsgk.agentcentersdk.api.NSApiResult; | import com.nsgk.agentcentersdk.api.NSApiResult; | ||||
import com.nsgk.agentcentersdk.api.NSSDK; | import com.nsgk.agentcentersdk.api.NSSDK; | ||||
import com.nsgk.agentcentersdk.api.NSSDKServer; | import com.nsgk.agentcentersdk.api.NSSDKServer; | ||||
import com.nsgk.agentcentersdk.core.NSProtocol; | |||||
import com.nsgk.agentcentersdk.core.NSReportObject; | import com.nsgk.agentcentersdk.core.NSReportObject; | ||||
import com.nsgk.agentcentersdk.entity.NSContractionEntity; | |||||
import com.nsgk.agentcentersdk.err.NSErrGlobal; | |||||
import com.nsgk.agentcentersdk.message.NSContractionMessage; | |||||
import com.nsgk.agentcentersdk.err.NSErrno; | import com.nsgk.agentcentersdk.err.NSErrno; | ||||
import com.nsgk.agentcentersdk.err.NSException; | import com.nsgk.agentcentersdk.err.NSException; | ||||
import com.ruoyi.agentcenter.object.ContractionSession; | |||||
import com.ruoyi.agentcenter.object.Message; | |||||
import com.ruoyi.agentcenter.object.Result; | |||||
import com.ruoyi.agentcenter.object.Session; | import com.ruoyi.agentcenter.object.Session; | ||||
import com.ruoyi.agentcenter.service.IAgentCenter; | import com.ruoyi.agentcenter.service.IAgentCenter; | ||||
import com.ruoyi.common.config.RuoYiConfig; | import com.ruoyi.common.config.RuoYiConfig; | ||||
import com.ruoyi.common.core.controller.BaseController; | import com.ruoyi.common.core.controller.BaseController; | ||||
import com.ruoyi.common.utils.EventBusEngine; | |||||
import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
import org.springframework.web.bind.annotation.PostMapping; | import org.springframework.web.bind.annotation.PostMapping; | ||||
import org.springframework.web.bind.annotation.RequestMapping; | import org.springframework.web.bind.annotation.RequestMapping; | ||||
import org.springframework.web.bind.annotation.RestController; | import org.springframework.web.bind.annotation.RestController; | ||||
import javax.servlet.ServletInputStream; | |||||
import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||
/** | /** | ||||
@@ -41,26 +34,27 @@ public class AgentCenterController extends BaseController | |||||
public NSApiResult test(HttpServletRequest request) | public NSApiResult test(HttpServletRequest request) | ||||
{ | { | ||||
NSSDKServer server; | NSSDKServer server; | ||||
NSReportObject<NSContractionEntity> recv; | |||||
NSReportObject<NSContractionMessage> recv; | |||||
NSSDK.InitServer(RuoYiConfig.Secret.privateKey); | NSSDK.InitServer(RuoYiConfig.Secret.privateKey); | ||||
server = NSSDK.InstanceServer(); | server = NSSDK.InstanceServer(); | ||||
recv = server.Recv(request, NSContractionEntity.class); | |||||
recv = server.Recv(request, NSContractionMessage.class); | |||||
return server.Resp(0, "测试成功", recv.getDataStr()); | return server.Resp(0, "测试成功", recv.getDataStr()); | ||||
} | } | ||||
@PostMapping("/report") | |||||
@PostMapping("/interface") | |||||
public NSApiResult report(HttpServletRequest request) | public NSApiResult report(HttpServletRequest request) | ||||
{ | { | ||||
NSSDKServer server; | NSSDKServer server; | ||||
Session<?> session; | |||||
NSSDK.InitServer(RuoYiConfig.Secret.privateKey); | NSSDK.InitServer(RuoYiConfig.Secret.privateKey); | ||||
server = NSSDK.InstanceServer(); | server = NSSDK.InstanceServer(); | ||||
try | try | ||||
{ | { | ||||
Result<?> result = agentCenter.postHandle(server, request); | |||||
return server.Resp(result.getCode(), result.getMessage(), result.getData()); | |||||
session = agentCenter.postHandle(server, request); | |||||
return server.Resp(session.result.getCode(), session.result.getMessage(), session.result.getData()); | |||||
} | } | ||||
catch(NSException e) | catch(NSException e) | ||||
{ | { | ||||
@@ -2,15 +2,12 @@ package com.ruoyi.agentcenter.listener; | |||||
import cn.hutool.core.lang.Assert; | import cn.hutool.core.lang.Assert; | ||||
import com.nsgk.agentcentersdk.core.NSProtocol; | import com.nsgk.agentcentersdk.core.NSProtocol; | ||||
import com.nsgk.agentcentersdk.entity.NSContractionEntity; | |||||
import com.nsgk.agentcentersdk.message.NSContractionMessage; | |||||
import com.ruoyi.agentcenter.domain.TAgentContraction; | import com.ruoyi.agentcenter.domain.TAgentContraction; | ||||
import com.ruoyi.agentcenter.domain.TAgentTask; | import com.ruoyi.agentcenter.domain.TAgentTask; | ||||
import com.ruoyi.agentcenter.object.ContractionSession; | |||||
import com.ruoyi.agentcenter.object.Message; | |||||
import com.ruoyi.agentcenter.object.Result; | |||||
import com.ruoyi.agentcenter.object.Session; | |||||
import com.ruoyi.agentcenter.service.ITAgentContractionService; | import com.ruoyi.agentcenter.service.ITAgentContractionService; | ||||
import com.ruoyi.agentcenter.service.ITAgentTaskService; | import com.ruoyi.agentcenter.service.ITAgentTaskService; | ||||
import com.ruoyi.common.core.domain.entity.SysDept; | |||||
import com.ruoyi.common.utils.handler.CallbackHandler; | import com.ruoyi.common.utils.handler.CallbackHandler; | ||||
import com.ruoyi.common.utils.handler.HandlerEngine; | import com.ruoyi.common.utils.handler.HandlerEngine; | ||||
import com.ruoyi.common.utils.sql.SqlUtil; | import com.ruoyi.common.utils.sql.SqlUtil; | ||||
@@ -38,34 +35,32 @@ public class ContractionListener | |||||
} | } | ||||
@CallbackHandler(protocol = "" + NSProtocol.NS_PROTOCOL_CONTRACTION) | @CallbackHandler(protocol = "" + NSProtocol.NS_PROTOCOL_CONTRACTION) | ||||
public void reportContraction(ContractionSession session) | |||||
public void reportContraction(Session<NSContractionMessage> session) | |||||
{ | { | ||||
TAgentContraction contraction = conv(session.message); | |||||
Result result = session.result; | |||||
TAgentContraction contraction = conv(session.data); | |||||
SqlUtil.transaction(() -> { | SqlUtil.transaction(() -> { | ||||
TAgentTask task = syncTask(session.message.getData(), contraction); | |||||
TAgentTask task = syncTask(session.data, contraction); | |||||
contraction.setTaskId(task.getId()); | contraction.setTaskId(task.getId()); | ||||
if(null == contraction.getId()) | if(null == contraction.getId()) | ||||
{ | { | ||||
itAgentContractionService.insertTAgentContraction(contraction); | itAgentContractionService.insertTAgentContraction(contraction); | ||||
result.setMessage("新增合同报账成功"); | |||||
session.result.setMessage("新增合同报账成功"); | |||||
} | } | ||||
else | else | ||||
{ | { | ||||
itAgentContractionService.updateTAgentContraction(contraction); | itAgentContractionService.updateTAgentContraction(contraction); | ||||
result.setMessage("更新合同报账成功"); | |||||
session.result.setMessage("更新合同报账成功"); | |||||
} | } | ||||
}); | }); | ||||
result.setData(contraction); | |||||
session.result.setData(contraction); | |||||
} | } | ||||
@CallbackHandler(protocol = "" + NSProtocol.NS_PROTOCOL_UPDATE_CONTRACTION) | @CallbackHandler(protocol = "" + NSProtocol.NS_PROTOCOL_UPDATE_CONTRACTION) | ||||
public void updateContraction(ContractionSession session) | |||||
public void updateContraction(Session<NSContractionMessage> session) | |||||
{ | { | ||||
NSContractionEntity inContraction = session.message.getData(); | |||||
Result result = session.result; | |||||
NSContractionMessage inContraction = session.data; | |||||
TAgentContraction contraction = itAgentContractionService.selectTAgentContraction(new TAgentContraction().setOrgCode(inContraction.getOrgCode()).setOutId(inContraction.getOutId())); | TAgentContraction contraction = itAgentContractionService.selectTAgentContraction(new TAgentContraction().setOrgCode(inContraction.getOrgCode()).setOutId(inContraction.getOutId())); | ||||
Assert.notNull(contraction, "报账合同不存在"); | Assert.notNull(contraction, "报账合同不存在"); | ||||
Assert.isTrue(TAgentTask.AGENT_STATUS_PROCESSING.equals(contraction.getAgentStatus()), "报账合同任务未分配"); | Assert.isTrue(TAgentTask.AGENT_STATUS_PROCESSING.equals(contraction.getAgentStatus()), "报账合同任务未分配"); | ||||
@@ -77,13 +72,11 @@ public class ContractionListener | |||||
syncFinishTask(contraction); | syncFinishTask(contraction); | ||||
}); | }); | ||||
result.setData(contraction); | |||||
session.result.setData(contraction); | |||||
} | } | ||||
private TAgentContraction conv(Message<NSContractionEntity> message) | |||||
private TAgentContraction conv(NSContractionMessage data) | |||||
{ | { | ||||
NSContractionEntity data = message.getData(); | |||||
TAgentContraction contractionCond = new TAgentContraction(); | TAgentContraction contractionCond = new TAgentContraction(); | ||||
contractionCond.setOrgCode(data.getOrgCode()) | contractionCond.setOrgCode(data.getOrgCode()) | ||||
.setOutId(data.getOutId()); | .setOutId(data.getOutId()); | ||||
@@ -118,7 +111,7 @@ public class ContractionListener | |||||
return contraction; | return contraction; | ||||
} | } | ||||
private TAgentTask syncTask(NSContractionEntity entity, TAgentContraction contraction) | |||||
private TAgentTask syncTask(NSContractionMessage entity, TAgentContraction contraction) | |||||
{ | { | ||||
String orgCode = contraction.getOrgCode(); | String orgCode = contraction.getOrgCode(); | ||||
@@ -140,12 +133,12 @@ public class ContractionListener | |||||
{ | { | ||||
String orgCode = contraction.getOrgCode(); | String orgCode = contraction.getOrgCode(); | ||||
TAgentTask tAgentTask = itAgentTaskService.getTAgentTask(orgCode, contraction.getOrderYear(), contraction.getOrderMonth()); | |||||
Assert.notNull(tAgentTask, "{}下{}年{}月无任务", orgCode, contraction.getOrderYear(), contraction.getOrderMonth()); | |||||
TAgentTask task = new TAgentTask(); | TAgentTask task = new TAgentTask(); | ||||
task.setOrgCode(orgCode) | |||||
.setOrderYear(contraction.getOrderYear()) | |||||
.setOrderMonth(contraction.getOrderMonth()) | |||||
; | |||||
task.setFinishCount(1); | task.setFinishCount(1); | ||||
task.setId(tAgentTask.getId()); | |||||
itAgentTaskService.updateTAgentTaskCount(task); | |||||
itAgentTaskService.syncTAgentTaskCount(task); | |||||
} | } | ||||
} | } |
@@ -1,8 +1,7 @@ | |||||
package com.ruoyi.agentcenter.listener; | package com.ruoyi.agentcenter.listener; | ||||
import com.google.common.eventbus.Subscribe; | import com.google.common.eventbus.Subscribe; | ||||
import com.ruoyi.agentcenter.object.Message; | |||||
import com.ruoyi.common.utils.EventBusEngine; | |||||
import com.ruoyi.agentcenter.object.Session; | |||||
import org.springframework.stereotype.Component; | import org.springframework.stereotype.Component; | ||||
import javax.annotation.PostConstruct; | import javax.annotation.PostConstruct; | ||||
@@ -18,8 +17,8 @@ public class TestListener | |||||
@Subscribe | @Subscribe | ||||
//@AllowConcurrentEvents | //@AllowConcurrentEvents | ||||
public void handle(Message msg) | |||||
public void handle(Session session) | |||||
{ | { | ||||
System.err.println("LLL " + msg.getData() + " " + Thread.currentThread().getId()); | |||||
System.err.println("LLL " + session + " " + Thread.currentThread().getId()); | |||||
} | } | ||||
} | } |
@@ -1,11 +0,0 @@ | |||||
package com.ruoyi.agentcenter.object; | |||||
import com.nsgk.agentcentersdk.entity.NSContractionEntity; | |||||
public class ContractionSession extends Session<NSContractionEntity, Result<?>> | |||||
{ | |||||
public ContractionSession(Message<NSContractionEntity> message) | |||||
{ | |||||
super(message, new Result<>()); | |||||
} | |||||
} |
@@ -1,31 +0,0 @@ | |||||
package com.ruoyi.agentcenter.object; | |||||
import com.nsgk.agentcentersdk.core.NSProtocol; | |||||
import lombok.Data; | |||||
import lombok.experimental.Accessors; | |||||
@Data | |||||
@Accessors(chain = true) | |||||
public class Message<T> | |||||
{ | |||||
private final int protocol; // 协议 | |||||
private final String identifier; // 识别ID | |||||
private final Long timestamp; // 客户端时间戳 | |||||
private final T data; | |||||
public Message() | |||||
{ | |||||
this.protocol = NSProtocol.NS_PROTOCOL_INVALID; | |||||
this.identifier = ""; | |||||
this.timestamp = 0L; | |||||
this.data = null; | |||||
} | |||||
public Message(int protocol, String identifier, Long timestamp, T data) | |||||
{ | |||||
this.protocol = protocol; | |||||
this.identifier = identifier; | |||||
this.timestamp = timestamp; | |||||
this.data = data; | |||||
} | |||||
} |
@@ -1,20 +0,0 @@ | |||||
package com.ruoyi.agentcenter.object; | |||||
import com.nsgk.agentcentersdk.err.NSErrno; | |||||
import lombok.Data; | |||||
import lombok.experimental.Accessors; | |||||
@Data | |||||
@Accessors(chain = true) | |||||
public class Result<R> | |||||
{ | |||||
private boolean success; | |||||
private int code; | |||||
private String message; | |||||
private R data; | |||||
public boolean IsSuccess() | |||||
{ | |||||
return code == NSErrno.ERRNO_OK; | |||||
} | |||||
} |
@@ -1,18 +1,48 @@ | |||||
package com.ruoyi.agentcenter.object; | package com.ruoyi.agentcenter.object; | ||||
public class Session<T, R> | |||||
import com.nsgk.agentcentersdk.err.NSErrno; | |||||
import lombok.Data; | |||||
import lombok.experimental.Accessors; | |||||
public class Session<T> | |||||
{ | { | ||||
public final Message<T> message; | |||||
public final Result<R> result; | |||||
public final int protocol; // 协议 | |||||
public final String identifier; // 识别ID | |||||
public final long timestamp; // 客户端时间戳 | |||||
public final T data; // 客户端数据 | |||||
public final Result result; // 处理结果(服务端响应) | |||||
protected Session() | protected Session() | ||||
{ | { | ||||
throw new RuntimeException("Session<T, R>不能默认实例化"); | throw new RuntimeException("Session<T, R>不能默认实例化"); | ||||
} | } | ||||
protected Session(Message<T> message, Result<R> result) | |||||
public Session(int protocol, String identifier, long timestamp, T data, Result result) | |||||
{ | { | ||||
this.message = message; | |||||
this.protocol = protocol; | |||||
this.identifier = identifier; | |||||
this.timestamp = timestamp; | |||||
this.data = data; | |||||
this.result = result; | this.result = result; | ||||
} | } | ||||
public Session(int protocol, String identifier, long timestamp, T data) | |||||
{ | |||||
this(protocol, identifier, timestamp, data, new Result()); | |||||
} | |||||
@Data | |||||
@Accessors(chain = true) | |||||
public static class Result | |||||
{ | |||||
private int code; | |||||
private String message; | |||||
private Object data; | |||||
public boolean IsSuccess() | |||||
{ | |||||
return code == NSErrno.ERRNO_OK; | |||||
} | |||||
} | |||||
} | } |
@@ -1,11 +1,11 @@ | |||||
package com.ruoyi.agentcenter.service; | package com.ruoyi.agentcenter.service; | ||||
import com.nsgk.agentcentersdk.api.NSSDKServer; | import com.nsgk.agentcentersdk.api.NSSDKServer; | ||||
import com.ruoyi.agentcenter.object.Result; | |||||
import com.ruoyi.agentcenter.object.Session; | |||||
import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||
public interface IAgentCenter | public interface IAgentCenter | ||||
{ | { | ||||
public Result<?> postHandle(NSSDKServer server, HttpServletRequest request); | |||||
public Session<?> postHandle(NSSDKServer server, HttpServletRequest request); | |||||
} | } |
@@ -109,4 +109,6 @@ public interface ITAgentTaskService | |||||
public TAgentTask getTAgentTask(String orgCode, String year, String month, Consumer<TAgentTask> ifNotExists); | public TAgentTask getTAgentTask(String orgCode, String year, String month, Consumer<TAgentTask> ifNotExists); | ||||
public TAgentTask getTAgentTask(String orgCode, String year, String month); | public TAgentTask getTAgentTask(String orgCode, String year, String month); | ||||
public int syncTAgentTaskCount(TAgentTask tAgentTask); | |||||
} | } |
@@ -4,14 +4,11 @@ import cn.hutool.core.lang.Assert; | |||||
import com.nsgk.agentcentersdk.api.NSSDKServer; | import com.nsgk.agentcentersdk.api.NSSDKServer; | ||||
import com.nsgk.agentcentersdk.core.NSProtocol; | import com.nsgk.agentcentersdk.core.NSProtocol; | ||||
import com.nsgk.agentcentersdk.core.NSReportObject; | import com.nsgk.agentcentersdk.core.NSReportObject; | ||||
import com.nsgk.agentcentersdk.entity.NSContractionEntity; | |||||
import com.nsgk.agentcentersdk.entity.NSEntity; | |||||
import com.nsgk.agentcentersdk.message.NSContractionMessage; | |||||
import com.nsgk.agentcentersdk.message.NSMessage; | |||||
import com.nsgk.agentcentersdk.err.NSErrGlobal; | import com.nsgk.agentcentersdk.err.NSErrGlobal; | ||||
import com.nsgk.agentcentersdk.err.NSErrno; | import com.nsgk.agentcentersdk.err.NSErrno; | ||||
import com.nsgk.agentcentersdk.err.NSException; | import com.nsgk.agentcentersdk.err.NSException; | ||||
import com.ruoyi.agentcenter.object.ContractionSession; | |||||
import com.ruoyi.agentcenter.object.Message; | |||||
import com.ruoyi.agentcenter.object.Result; | |||||
import com.ruoyi.agentcenter.object.Session; | import com.ruoyi.agentcenter.object.Session; | ||||
import com.ruoyi.agentcenter.service.IAgentCenter; | import com.ruoyi.agentcenter.service.IAgentCenter; | ||||
import com.ruoyi.common.core.domain.entity.SysDept; | import com.ruoyi.common.core.domain.entity.SysDept; | ||||
@@ -39,49 +36,34 @@ public class AgentCenterImpl implements IAgentCenter | |||||
return protocol; | return protocol; | ||||
} | } | ||||
public Message<?> getMessage(NSSDKServer server, HttpServletRequest request) | |||||
public Session<?> createSession(NSSDKServer server, HttpServletRequest request) | |||||
{ | { | ||||
NSReportObject<?> reportObject; | NSReportObject<?> reportObject; | ||||
Message<?> message; | |||||
Session<?> session; | |||||
Class<? extends NSMessage> clazz; | |||||
int protocol; | |||||
int protocol = getProtocol(request); | |||||
Class<? extends NSEntity> clazz; | |||||
protocol = getProtocol(request); | |||||
switch(protocol) | switch(protocol) | ||||
{ | { | ||||
case NSProtocol.NS_PROTOCOL_CONTRACTION: | case NSProtocol.NS_PROTOCOL_CONTRACTION: | ||||
case NSProtocol.NS_PROTOCOL_UPDATE_CONTRACTION: | case NSProtocol.NS_PROTOCOL_UPDATE_CONTRACTION: | ||||
clazz = NSContractionEntity.class; | |||||
clazz = NSContractionMessage.class; | |||||
break; | break; | ||||
default: | default: | ||||
return null; | return null; | ||||
} | } | ||||
reportObject = server.Recv(request, clazz); | reportObject = server.Recv(request, clazz); | ||||
message = new Message<>(protocol, reportObject.getIdentifier(), reportObject.getTimestamp(), reportObject.getData()); | |||||
return message; | |||||
} | |||||
public Session<?, ?> createSession(Message<?> message) | |||||
{ | |||||
Session<?, ?> session; | |||||
int protocol; | |||||
session = new Session<>(protocol, reportObject.getIdentifier(), reportObject.getTimestamp(), reportObject.getData()); | |||||
protocol = message.getProtocol(); | |||||
switch(protocol) | |||||
{ | |||||
case NSProtocol.NS_PROTOCOL_CONTRACTION: | |||||
case NSProtocol.NS_PROTOCOL_UPDATE_CONTRACTION: | |||||
session = new ContractionSession((Message<NSContractionEntity>) message); | |||||
break; | |||||
default: | |||||
return null; | |||||
} | |||||
return session; | return session; | ||||
} | } | ||||
private void check(Message<?> message, HttpServletRequest request) | |||||
private void check(Session<?> session, HttpServletRequest request) | |||||
{ | { | ||||
Assert.notNull(message, "无效消息"); | |||||
String identifier = message.getIdentifier(); | |||||
Assert.notNull(session, "无效消息"); | |||||
String identifier = session.identifier; | |||||
Assert.notBlank(identifier, "无效客户端标识"); | Assert.notBlank(identifier, "无效客户端标识"); | ||||
SysDept dept = sysDeptMapper.selectSysDeptByOrgCode(identifier); | SysDept dept = sysDeptMapper.selectSysDeptByOrgCode(identifier); | ||||
Assert.notNull(dept, "不支持的地区: {}", identifier); | Assert.notNull(dept, "不支持的地区: {}", identifier); | ||||
@@ -106,12 +88,13 @@ public class AgentCenterImpl implements IAgentCenter | |||||
} | } | ||||
@Override | @Override | ||||
public Result<?> postHandle(NSSDKServer server, HttpServletRequest request) | |||||
public Session<?> postHandle(NSSDKServer server, HttpServletRequest request) | |||||
{ | { | ||||
Message<?> message = getMessage(server, request); | |||||
check(message, request); | |||||
Session<?, ?> session = createSession(message); | |||||
HandlerEngine.Call("" + message.getProtocol(), session); | |||||
return session.result; | |||||
Session<?> session; | |||||
session = createSession(server, request); | |||||
check(session, request); | |||||
HandlerEngine.Call("" + session.protocol, session); | |||||
return session; | |||||
} | } | ||||
} | } |
@@ -258,4 +258,19 @@ public class TAgentTaskServiceImpl implements ITAgentTaskService | |||||
return tAgentTaskMapper.selectTAgentTask(task); | return tAgentTaskMapper.selectTAgentTask(task); | ||||
} | } | ||||
@Override | |||||
public int syncTAgentTaskCount(TAgentTask queryTask) | |||||
{ | |||||
TAgentTask dbTask = getTAgentTask(queryTask.getOrgCode(), queryTask.getOrderYear(), queryTask.getOrderMonth()); | |||||
Assert.notNull(dbTask, "{}下{}年{}月无任务", queryTask.getOrgCode(), queryTask.getOrderYear(), queryTask.getOrderMonth()); | |||||
TAgentTask updateTask = new TAgentTask(); | |||||
updateTask.setId(dbTask.getId()); | |||||
updateTask.setFinishCount(queryTask.getFinishCount()) | |||||
.setContracCount(queryTask.getContracCount()) | |||||
.setAssetCount(queryTask.getAssetCount()) | |||||
.setVoucherCount(queryTask.getVoucherCount()) | |||||
; | |||||
return updateTAgentTaskCount(updateTask); | |||||
} | |||||
} | } |