From 31c45a4abeb55643b68262a796e7fdb6cb8ba8c7 Mon Sep 17 00:00:00 2001 From: zhaochengke Date: Fri, 14 Jul 2023 16:59:21 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/nsgk/agentcentersdk/NSMain.java | 12 +- .../nsgk/agentcentersdk/api/NSSDKClient.java | 5 +- .../nsgk/agentcentersdk/api/NSSDKServer.java | 28 +- .../nsgk/agentcentersdk/core/NSConstants.java | 2 + .../agentcentersdk/core/NSReportObject.java | 7 + .../entity/NSContractionEntity.java | 2 +- .../{NSEntityBase.java => NSEntity.java} | 13 +- .../nsgk/agentcentersdk/err/NSErrGlobal.java | 1 + .../com/nsgk/agentcentersdk/err/NSErrno.java | 3 +- .../agentcenter/AgentCenterController.java | 39 +-- .../agentcenter/domain/TAgentContraction.java | 83 ++++++ .../listener/ContractionListener.java | 39 ++- .../mapper/TAgentContractionMapper.java | 102 +++++++ .../object/ContractionMessage.java | 11 - .../object/ContractionSession.java | 11 + .../com/ruoyi/agentcenter/object/Message.java | 2 +- .../com/ruoyi/agentcenter/object/Result.java | 14 + .../com/ruoyi/agentcenter/object/Session.java | 18 ++ .../agentcenter/service/IAgentCenter.java | 10 + .../service/ITAgentContractionService.java | 102 +++++++ .../service/impl/AgentCenterImpl.java | 86 ++++++ .../impl/TAgentContractionServiceImpl.java | 164 +++++++++++ .../agentcenter/TAgentContractionMapper.xml | 274 ++++++++++++++++++ .../ruoyi/common/utils/EventBusEngine.java | 2 +- 24 files changed, 970 insertions(+), 60 deletions(-) rename agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/{NSEntityBase.java => NSEntity.java} (94%) create mode 100644 ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/domain/TAgentContraction.java create mode 100644 ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/mapper/TAgentContractionMapper.java delete mode 100644 ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/ContractionMessage.java create mode 100644 ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/ContractionSession.java create mode 100644 ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Result.java create mode 100644 ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Session.java create mode 100644 ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/IAgentCenter.java create mode 100644 ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/ITAgentContractionService.java create mode 100644 ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/AgentCenterImpl.java create mode 100644 ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/TAgentContractionServiceImpl.java create mode 100644 ruoyi-agentcenter/src/main/resources/mapper/agentcenter/TAgentContractionMapper.xml diff --git a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/NSMain.java b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/NSMain.java index 948f61f..e02bef8 100644 --- a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/NSMain.java +++ b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/NSMain.java @@ -5,6 +5,7 @@ import com.nsgk.agentcentersdk.api.NSSDK; import com.nsgk.agentcentersdk.api.NSSDKClient; import com.nsgk.agentcentersdk.core.NSProtocol; import com.nsgk.agentcentersdk.entity.NSContractionEntity; +import com.nsgk.agentcentersdk.entity.NSEntity; import com.nsgk.agentcentersdk.utility.NSReflect; public final class NSMain @@ -40,20 +41,19 @@ public final class NSMain public static void Test() { NSSDKClient client; - NSContractionEntity entity; + NSEntity entity; NSApiResult result; NSSDK.InitClient("http://localhost", (short) 8081, "test", "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==", 0); client = NSSDK.InstanceClient(); - entity = new NSContractionEntity(); - entity.setBuildingTime("2000-12-23") - .setName("测试合同") - .setDeptId(187L) + entity = new NSEntity(); + entity.setDeptId(187L) .setBookId(166L) + .setOrgCode("371081") ; entity.Parm("buildingTime", "2000-12-25"); - entity.Parm("buildingTime222", "2000-12-11"); + entity.Parm("name", "测试合同"); entity.Parm("outId", "123"); result = client.Send(NSProtocol.NS_PROTOCOL_CONTRACTION, entity); System.err.println(result); diff --git a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKClient.java b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKClient.java index e28e99a..1461963 100644 --- a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKClient.java +++ b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKClient.java @@ -4,7 +4,7 @@ import cn.hutool.core.util.URLUtil; import com.nsgk.agentcentersdk.core.NSConstants; import com.nsgk.agentcentersdk.core.NSProtocol; import com.nsgk.agentcentersdk.core.NSReportObject; -import com.nsgk.agentcentersdk.entity.NSEntityBase; +import com.nsgk.agentcentersdk.entity.NSEntity; import com.nsgk.agentcentersdk.err.NSAssert; import com.nsgk.agentcentersdk.err.NSErrGlobal; import com.nsgk.agentcentersdk.err.NSErrno; @@ -48,7 +48,7 @@ public final class NSSDKClient } // 发送请求 - public NSApiResult Send(int protocol, T object) + public NSApiResult Send(int protocol, T object) { String url; NSReportObject reportObject; @@ -63,6 +63,7 @@ public final class NSSDKClient request.setUrl(BuildUrl(url)); request.setTimeout(timeout); WriteDataObject(request, reportObject); + request.AddHeader("Content-Type", "text/plain"); NSNetworkResponse response = NSNetworkManager.Post(request); NSErrGlobal.ASSERT(response.IsSuccess(), NSErrno.ERRNO_SYS_HTTP); String json = response.getData(); diff --git a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKServer.java b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKServer.java index 5f7dd33..2d2e600 100644 --- a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKServer.java +++ b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKServer.java @@ -1,8 +1,9 @@ package com.nsgk.agentcentersdk.api; import com.nsgk.agentcentersdk.core.NSConstants; +import com.nsgk.agentcentersdk.core.NSProtocol; import com.nsgk.agentcentersdk.core.NSReportObject; -import com.nsgk.agentcentersdk.entity.NSEntityBase; +import com.nsgk.agentcentersdk.entity.NSEntity; import com.nsgk.agentcentersdk.err.NSAssert; import com.nsgk.agentcentersdk.err.NSErrGlobal; import com.nsgk.agentcentersdk.err.NSErrno; @@ -10,6 +11,7 @@ import com.nsgk.agentcentersdk.utility.NSArr; import com.nsgk.agentcentersdk.utility.NSCrypto; import com.nsgk.agentcentersdk.utility.NSHttp; +import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; // SDK服务端 @@ -22,8 +24,21 @@ public final class NSSDKServer this.privateKey = privateKey; } + public static int GetProtocol(HttpServletRequest request) + { + try + { + return Integer.parseInt(request.getParameter(NSConstants.QUERY_PROTOCOL)); + } + catch(Exception e) + { + e.printStackTrace(); + return NSProtocol.NS_PROTOCOL_INVALID; + } + } + // 解析请求 - public NSReportObject Recv(HttpServletRequest request, Class clazz) + public NSReportObject Recv(HttpServletRequest request, Class clazz) { NSReportObject res; String sign; @@ -54,10 +69,19 @@ public final class NSSDKServer { return NSErrGlobal.ThrowAndReturn(NSErrno.ERRNO_SYS_INVALID_SIGN, null); } + if(!res.CheckTime(ServerTime(), NSConstants.MAX_TIME_DIFF * 1000)) + { + return NSErrGlobal.ThrowAndReturn(NSErrno.ERRNO_SYS_TIME_DIFF, null); + } res.setSign(sign); return res; } + private static long ServerTime() + { + return System.currentTimeMillis(); + } + // 响应客户端 public static NSApiResult Resp(int code, String msg, Object...data) { diff --git a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSConstants.java b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSConstants.java index 92bbe78..2822833 100644 --- a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSConstants.java +++ b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSConstants.java @@ -8,5 +8,7 @@ public final class NSConstants public static final String QUERY_IDENTIFIER = "identifier"; public static final String QUERY_PROTOCOL = "protocol"; + public static final int MAX_TIME_DIFF = 300; // 秒 + private NSConstants() {} } diff --git a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSReportObject.java b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSReportObject.java index 51b1989..1f20ade 100644 --- a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSReportObject.java +++ b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSReportObject.java @@ -92,6 +92,13 @@ public class NSReportObject return src.equals(Sign()); } + public boolean CheckTime(long serverTime, long limit) + { + if(null == timestamp || timestamp <= 0L) + return false; + return serverTime - timestamp <= limit; + } + public NSReportObject SetTimestampStr(String str) { timestamp = Long.parseLong(str); diff --git a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSContractionEntity.java b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSContractionEntity.java index 60c4244..a326346 100644 --- a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSContractionEntity.java +++ b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSContractionEntity.java @@ -6,7 +6,7 @@ import lombok.experimental.Accessors; // 合同实体 @Data @Accessors(chain = true) -public class NSContractionEntity extends NSEntityBase +public class NSContractionEntity extends NSEntity { private static final long serialVersionUID = 1L; diff --git a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSEntityBase.java b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSEntity.java similarity index 94% rename from agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSEntityBase.java rename to agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSEntity.java index 8d791b0..d99d0ea 100644 --- a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSEntityBase.java +++ b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSEntity.java @@ -3,8 +3,6 @@ package com.nsgk.agentcentersdk.entity; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson2.JSON; -import com.nsgk.agentcentersdk.err.NSErrGlobal; -import com.nsgk.agentcentersdk.err.NSErrno; import com.nsgk.agentcentersdk.utility.NSArr; import com.nsgk.agentcentersdk.utility.NSReflect; import com.nsgk.agentcentersdk.utility.NSStr; @@ -20,7 +18,7 @@ import java.util.Map; // 基本实体 @Data @Accessors(chain = true) -public class NSEntityBase implements Serializable +public class NSEntity implements Serializable { private static final long serialVersionUID = 1L; @@ -33,7 +31,10 @@ public class NSEntityBase implements Serializable /** 外部ID */ protected Long outId; - // 存储其他没有声明的属性, 用于当客户与服务端字段不一致时, 在不更新sdk的情况下, 保持兼容性 + /** 外部ID */ + protected String orgCode; + + // 存储其他没有声明的属性, 用于当客户端与服务端字段不一致时, 在不更新sdk的情况下, 保持兼容性 // 不会覆盖已设置的属性 protected Map parms; @@ -45,14 +46,14 @@ public class NSEntityBase implements Serializable } @SuppressWarnings("unchecked") - public T Parm(String name, Object val) + public T Parm(String name, Object val) { PARMS().put(name, val); return (T)this; } @SuppressWarnings("unchecked") - public T DelParm(String...name) + public T DelParm(String...name) { if(null != parms && NSArr.IsNotEmpty(name)) { diff --git a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/err/NSErrGlobal.java b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/err/NSErrGlobal.java index 9f2d485..4414b26 100644 --- a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/err/NSErrGlobal.java +++ b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/err/NSErrGlobal.java @@ -44,6 +44,7 @@ public final class NSErrGlobal { if(err == NSErrno.ERRNO_OK) return t; + Err(err); throw new NSException(err); } diff --git a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/err/NSErrno.java b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/err/NSErrno.java index 7ddabfd..dcc5880 100644 --- a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/err/NSErrno.java +++ b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/err/NSErrno.java @@ -14,6 +14,7 @@ public final class NSErrno public static final int ERRNO_SYS_SIGN_FAIL = 0x01005; public static final int ERRNO_SYS_HTTP = 0x01006; public static final int ERRNO_SYS_INVALID_FIELD = 0x01007; + public static final int ERRNO_SYS_TIME_DIFF = 0x01008; public static final int ERRNO_CLI_PARAMETER_MISSING = 0x03001; public static final int ERRNO_CLI_DATA_MISSING = 0x03002; @@ -33,7 +34,7 @@ public final class NSErrno case ERRNO_SYS_INVALID_PROTOCOL: return "无效协议"; case ERRNO_SYS_SIGN_FAIL: return "签名失败"; case ERRNO_SYS_HTTP: return "Http请求错误"; - case ERRNO_SYS_INVALID_FIELD: return "无效字段"; + case ERRNO_SYS_TIME_DIFF: return "数据过期"; case ERRNO_CLI_PARAMETER_MISSING: return "参数缺失"; case ERRNO_CLI_DATA_MISSING: return "数据缺失"; diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/agentcenter/AgentCenterController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/agentcenter/AgentCenterController.java index e5074c3..6d62cc1 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/agentcenter/AgentCenterController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/agentcenter/AgentCenterController.java @@ -9,15 +9,20 @@ import com.nsgk.agentcentersdk.entity.NSContractionEntity; import com.nsgk.agentcentersdk.err.NSErrGlobal; import com.nsgk.agentcentersdk.err.NSErrno; import com.nsgk.agentcentersdk.err.NSException; -import com.ruoyi.agentcenter.object.ContractionMessage; +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.IAgentCenter; import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.utils.EventBusEngine; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; /** @@ -29,6 +34,9 @@ import javax.servlet.http.HttpServletRequest; @RequestMapping("/agentcenter/api") public class AgentCenterController extends BaseController { + @Autowired + private IAgentCenter agentCenter; + @PostMapping("/test") public NSApiResult test(HttpServletRequest request) { @@ -45,18 +53,10 @@ public class AgentCenterController extends BaseController @PostMapping("/report") public NSApiResult report(HttpServletRequest request) { - NSSDKServer server; - NSReportObject recv; - - NSSDK.InitServer(RuoYiConfig.Secret.privateKey); try { - server = NSSDK.InstanceServer(); - recv = server.Recv(request, NSContractionEntity.class); - - EventBusEngine.Post(convMsg(recv)); - - return NSSDKServer.Success("上报成功"); + Result result = agentCenter.postHandle(request); + return response(result); } catch(NSException e) { @@ -64,21 +64,8 @@ public class AgentCenterController extends BaseController } } - private Message convMsg(NSReportObject reportObject) + private NSApiResult response(Result result) { - Message msg; - int protocol; - - protocol = reportObject.getProtocol(); - switch(reportObject.getProtocol()) - { - case NSProtocol.NS_PROTOCOL_CONTRACTION: - msg = new ContractionMessage(protocol, reportObject.getIdentifier(), reportObject.getTimestamp(), (NSContractionEntity)reportObject.getData()); - break; - default: - NSErrGlobal.Err(NSErrno.ERRNO_SYS_INVALID_PROTOCOL); - throw new RuntimeException(String.format("未知的协议类型: 0x%x", protocol)); - } - return msg; + return NSSDKServer.Resp(result.getCode(), result.getMessage(), result.getData()); } } diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/domain/TAgentContraction.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/domain/TAgentContraction.java new file mode 100644 index 0000000..dea0130 --- /dev/null +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/domain/TAgentContraction.java @@ -0,0 +1,83 @@ +package com.ruoyi.agentcenter.domain; + +import java.util.Date; + +import cn.hutool.core.date.DateUtil; +import com.fasterxml.jackson.annotation.JsonFormat; +import lombok.Data; +import lombok.experimental.Accessors; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import com.ruoyi.common.annotation.Excel; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 合同任务对象 t_agent_contraction + * + * @author zhao + * @date 2023-07-14 + */ +@Data +@Accessors(chain = true) +public class TAgentContraction extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** ID */ + private Long id; + + /** 任务id(关联任务表) */ + @Excel(name = "任务id(关联任务表)") + private Long taskId; + + /** 行政区划代码 */ + @Excel(name = "行政区划代码") + private String orgCode; + + /** 外部业务ID */ + @Excel(name = "外部业务ID") + private Long outId; + + /** 账套ID */ + @Excel(name = "账套ID") + private Long bookId; + + /** 部门id */ + @Excel(name = "部门id") + private Long deptId; + + /** 合同名称 */ + @Excel(name = "合同名称") + private String name; + + /** 签订日期 */ + @Excel(name = "签订日期") + private String buildingTime; + + /** 上报时间 */ + @JsonFormat(pattern = "yyyy-MM-dd") + @Excel(name = "上报时间", width = 30, dateFormat = "yyyy-MM-dd") + private Date orderAt; + + /** 上报年度(截) */ + @Excel(name = "上报年度(截)") + private String orderYear; + + /** 上报月份(截) */ + @Excel(name = "上报月份(截)") + private String orderMonth; + + /** 任务状态 字典 agent_status */ + @Excel(name = "任务状态 字典 agent_status") + private String agentStatus; + + /** 记账状态 字典 order_status */ + @Excel(name = "记账状态 字典 order_status") + private String orderStatus; + + public void normalized() + { + orderYear = DateUtil.format(orderAt, "yyyy"); + orderMonth = DateUtil.format(orderAt, "MM"); + } +} diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/listener/ContractionListener.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/listener/ContractionListener.java index 191bd16..b9dac8b 100644 --- a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/listener/ContractionListener.java +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/listener/ContractionListener.java @@ -2,15 +2,25 @@ package com.ruoyi.agentcenter.listener; import com.alibaba.fastjson2.JSONObject; import com.google.common.eventbus.Subscribe; -import com.ruoyi.agentcenter.object.ContractionMessage; +import com.nsgk.agentcentersdk.entity.NSContractionEntity; +import com.ruoyi.agentcenter.domain.TAgentContraction; +import com.ruoyi.agentcenter.object.ContractionSession; +import com.ruoyi.agentcenter.object.Message; +import com.ruoyi.agentcenter.object.Result; +import com.ruoyi.agentcenter.service.ITAgentContractionService; import com.ruoyi.common.utils.EventBusEngine; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import javax.annotation.PostConstruct; +import java.util.Date; @Component public class ContractionListener { + @Autowired + private ITAgentContractionService itAgentContractionService; + @PostConstruct public void init() { @@ -19,8 +29,31 @@ public class ContractionListener @Subscribe //@AllowConcurrentEvents - public void handle(ContractionMessage msg) + public void handle(ContractionSession session) + { + TAgentContraction contraction = conv(session.message); + Result result = session.result; + + itAgentContractionService.insertTAgentContraction(contraction); + + result.setData(contraction); + } + + private TAgentContraction conv(Message message) { - System.err.println(JSONObject.toJSONString(msg)); + TAgentContraction contraction = new TAgentContraction(); + NSContractionEntity data = message.getData(); + contraction.setBookId(data.getBookId()) + .setDeptId(data.getDeptId()) + .setOutId(data.getOutId()) + .setOrgCode(data.getOrgCode()) + .setName(data.getName()) + .setBuildingTime(data.getBuildingTime()) + .setOrderAt(new Date()) + .setAgentStatus("1") + .setOrderStatus("2") + .normalized(); + ; + return contraction; } } diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/mapper/TAgentContractionMapper.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/mapper/TAgentContractionMapper.java new file mode 100644 index 0000000..e4ac7e6 --- /dev/null +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/mapper/TAgentContractionMapper.java @@ -0,0 +1,102 @@ +package com.ruoyi.agentcenter.mapper; + +import java.util.List; +import com.ruoyi.agentcenter.domain.TAgentContraction; + +/** + * 合同任务Mapper接口 + * + * @author zhao + * @date 2023-07-14 + */ +public interface TAgentContractionMapper +{ + /** + * 查询合同任务 + * + * @param id 合同任务主键 + * @return 合同任务 + */ + public TAgentContraction selectTAgentContractionById(Long id); + + /** + * 查询合同任务列表 + * + * @param tAgentContraction 合同任务 + * @return 合同任务集合 + */ + public List selectTAgentContractionList(TAgentContraction tAgentContraction); + + /** + * 新增合同任务 + * + * @param tAgentContraction 合同任务 + * @return 结果 + */ + public int insertTAgentContraction(TAgentContraction tAgentContraction); + + /** + * 批量新增合同任务 + * + * @param list 合同任务 + * @return 结果 + */ + public int insertTAgentContractionBatch(List list); + + /** + * 批量修改 合同任务 + * + * @param list 合同任务 + * @return 结果 + */ + public int updateTAgentContractionBatch(List list); + + /** + * 修改合同任务 + * + * @param tAgentContraction 合同任务 + * @return 结果 + */ + public int updateTAgentContraction(TAgentContraction tAgentContraction); + + /** + * 删除合同任务 + * + * @param id 合同任务主键 + * @return 结果 + */ + public int deleteTAgentContractionById(Long id); + + /** + * 批量删除合同任务 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteTAgentContractionByIds(Long[] ids); + + // Harm + /** + * 条件单条查询合同任务 + * + * @param tAgentContraction 合同任务 + * @return 合同任务条目 + */ + public TAgentContraction selectTAgentContraction(TAgentContraction tAgentContraction); + + /** + * 条件查询合同任务数量 + * + * @param tAgentContraction 合同任务 + * @return 合同任务数量 + */ + public Long selectTAgentContractionCount(TAgentContraction tAgentContraction); + + /** + * 条件查询合同任务是否存在 + * + * @param tAgentContraction 合同任务 + * @return 合同任务是否存在 + */ + public int selectTAgentContractionExists(TAgentContraction tAgentContraction); +} diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/ContractionMessage.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/ContractionMessage.java deleted file mode 100644 index 557abaa..0000000 --- a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/ContractionMessage.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.ruoyi.agentcenter.object; - -import com.nsgk.agentcentersdk.entity.NSContractionEntity; - -public class ContractionMessage extends Message -{ - public ContractionMessage(int protocol, String identifier, Long timestamp, NSContractionEntity data) - { - super(protocol, identifier, timestamp, data); - } -} diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/ContractionSession.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/ContractionSession.java new file mode 100644 index 0000000..d21b4ca --- /dev/null +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/ContractionSession.java @@ -0,0 +1,11 @@ +package com.ruoyi.agentcenter.object; + +import com.nsgk.agentcentersdk.entity.NSContractionEntity; + +public class ContractionSession extends Session> +{ + public ContractionSession(Message message) + { + super(message, new Result<>()); + } +} diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Message.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Message.java index 16aaad7..cd8646d 100644 --- a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Message.java +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Message.java @@ -6,7 +6,7 @@ import lombok.experimental.Accessors; @Data @Accessors(chain = true) -public abstract class Message +public class Message { private final int protocol; // 协议 private final String identifier; // 识别ID diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Result.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Result.java new file mode 100644 index 0000000..9770c05 --- /dev/null +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Result.java @@ -0,0 +1,14 @@ +package com.ruoyi.agentcenter.object; + +import lombok.Data; +import lombok.experimental.Accessors; + +@Data +@Accessors(chain = true) +public class Result +{ + private boolean success; + private int code; + private String message; + private R data; +} diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Session.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Session.java new file mode 100644 index 0000000..f5db640 --- /dev/null +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Session.java @@ -0,0 +1,18 @@ +package com.ruoyi.agentcenter.object; + +public class Session +{ + public final Message message; + public final Result result; + + protected Session() + { + throw new RuntimeException("Session不能默认实例化"); + } + + protected Session(Message message, Result result) + { + this.message = message; + this.result = result; + } +} diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/IAgentCenter.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/IAgentCenter.java new file mode 100644 index 0000000..439d9dd --- /dev/null +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/IAgentCenter.java @@ -0,0 +1,10 @@ +package com.ruoyi.agentcenter.service; + +import com.ruoyi.agentcenter.object.Result; + +import javax.servlet.http.HttpServletRequest; + +public interface IAgentCenter +{ + public Result postHandle(HttpServletRequest request); +} diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/ITAgentContractionService.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/ITAgentContractionService.java new file mode 100644 index 0000000..c2fa361 --- /dev/null +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/ITAgentContractionService.java @@ -0,0 +1,102 @@ +package com.ruoyi.agentcenter.service; + +import java.util.List; +import com.ruoyi.agentcenter.domain.TAgentContraction; + +/** + * 合同任务Service接口 + * + * @author zhao + * @date 2023-07-14 + */ +public interface ITAgentContractionService +{ + /** + * 查询合同任务 + * + * @param id 合同任务主键 + * @return 合同任务 + */ + public TAgentContraction selectTAgentContractionById(Long id); + + /** + * 查询合同任务列表 + * + * @param tAgentContraction 合同任务 + * @return 合同任务集合 + */ + public List selectTAgentContractionList(TAgentContraction tAgentContraction); + + /** + * 新增合同任务 + * + * @param tAgentContraction 合同任务 + * @return 结果 + */ + public int insertTAgentContraction(TAgentContraction tAgentContraction); + + /** + * 批量新增合同任务 + * + * @param list 合同任务 + * @return 结果 + */ + public int insertTAgentContractionBatch(List list); + + /** + * 修改合同任务 + * + * @param tAgentContraction 合同任务 + * @return 结果 + */ + public int updateTAgentContraction(TAgentContraction tAgentContraction); + + /** + * 批量修改 合同任务 + * + * @param list 合同任务 + * @return 结果 + */ + public int updateTAgentContractionBatch(List list); + + /** + * 批量删除合同任务 + * + * @param ids 需要删除的合同任务主键集合 + * @return 结果 + */ + public int deleteTAgentContractionByIds(Long[] ids); + + /** + * 删除合同任务信息 + * + * @param id 合同任务主键 + * @return 结果 + */ + public int deleteTAgentContractionById(Long id); + + // Harm + /** + * 条件单条查询合同任务 + * + * @param tAgentContraction 合同任务 + * @return 合同任务条目 + */ + public TAgentContraction selectTAgentContraction(TAgentContraction tAgentContraction); + + /** + * 条件查询合同任务数量 + * + * @param tAgentContraction 合同任务 + * @return 合同任务数量 + */ + public Long selectTAgentContractionCount(TAgentContraction tAgentContraction); + + /** + * 条件查询合同任务是否存在 + * + * @param tAgentContraction 合同任务 + * @return 合同任务是否存在 + */ + public boolean selectTAgentContractionExists(TAgentContraction tAgentContraction); +} diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/AgentCenterImpl.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/AgentCenterImpl.java new file mode 100644 index 0000000..570974f --- /dev/null +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/AgentCenterImpl.java @@ -0,0 +1,86 @@ +package com.ruoyi.agentcenter.service.impl; + +import com.nsgk.agentcentersdk.api.NSSDK; +import com.nsgk.agentcentersdk.api.NSSDKServer; +import com.nsgk.agentcentersdk.core.NSProtocol; +import com.nsgk.agentcentersdk.core.NSReportObject; +import com.nsgk.agentcentersdk.entity.NSContractionEntity; +import com.nsgk.agentcentersdk.entity.NSEntity; +import com.nsgk.agentcentersdk.err.NSErrGlobal; +import com.nsgk.agentcentersdk.err.NSErrno; +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.service.IAgentCenter; +import com.ruoyi.common.config.RuoYiConfig; +import com.ruoyi.common.utils.EventBusEngine; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; + +@Service +public class AgentCenterImpl implements IAgentCenter +{ + + public int getProtocol(HttpServletRequest request) + { + int protocol = NSSDKServer.GetProtocol(request); + if(!NSProtocol.IsValid(protocol)) + { + NSErrGlobal.Err(NSErrno.ERRNO_SYS_INVALID_PROTOCOL); + throw new NSException(NSErrno.ERRNO_SYS_INVALID_PROTOCOL, String.format("未知的协议类型: 0x%x", protocol)); + } + return protocol; + } + + public Message getMessage(HttpServletRequest request) + { + NSSDKServer server; + NSReportObject reportObject; + Message message; + + NSSDK.InitServer(RuoYiConfig.Secret.privateKey); + server = NSSDK.InstanceServer(); + int protocol = getProtocol(request); + Class clazz; + switch(protocol) + { + case NSProtocol.NS_PROTOCOL_CONTRACTION: + clazz = NSContractionEntity.class; + break; + default: + return null; + } + 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; + + protocol = message.getProtocol(); + switch(protocol) + { + case NSProtocol.NS_PROTOCOL_CONTRACTION: + session = new ContractionSession((Message) message); + break; + default: + return null; + } + return session; + } + + @Override + public Result postHandle(HttpServletRequest request) + { + Message message = getMessage(request); + Session session = createSession(message); + EventBusEngine.Post(session); + return session.result; + } +} diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/TAgentContractionServiceImpl.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/TAgentContractionServiceImpl.java new file mode 100644 index 0000000..6cfa8b2 --- /dev/null +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/TAgentContractionServiceImpl.java @@ -0,0 +1,164 @@ +package com.ruoyi.agentcenter.service.impl; + +import java.util.List; +import com.ruoyi.common.utils.DateUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.apache.commons.collections4.ListUtils; +import com.ruoyi.agentcenter.mapper.TAgentContractionMapper; +import com.ruoyi.agentcenter.domain.TAgentContraction; +import com.ruoyi.agentcenter.service.ITAgentContractionService; + +/** + * 合同任务Service业务层处理 + * + * @author zhao + * @date 2023-07-14 + */ +@Service +public class TAgentContractionServiceImpl implements ITAgentContractionService +{ + @Autowired + private TAgentContractionMapper tAgentContractionMapper; + + /** + * 查询合同任务 + * + * @param id 合同任务主键 + * @return 合同任务 + */ + @Override + public TAgentContraction selectTAgentContractionById(Long id) + { + return tAgentContractionMapper.selectTAgentContractionById(id); + } + + /** + * 查询合同任务列表 + * + * @param tAgentContraction 合同任务 + * @return 合同任务 + */ + @Override + public List selectTAgentContractionList(TAgentContraction tAgentContraction) + { + return tAgentContractionMapper.selectTAgentContractionList(tAgentContraction); + } + + /** + * 新增合同任务 + * + * @param tAgentContraction 合同任务 + * @return 结果 + */ + @Override + public int insertTAgentContraction(TAgentContraction tAgentContraction) + { + tAgentContraction.setCreateTime(DateUtils.getNowDate()); + return tAgentContractionMapper.insertTAgentContraction(tAgentContraction); + } + + /** + * 批量新增合同任务 + * + * @param list 合同任务 + * @return 结果 + */ + @Override + @Transactional + public int insertTAgentContractionBatch(List list){ + List> splists = ListUtils.partition(list, 50); + splists.forEach(splist->{ + tAgentContractionMapper.insertTAgentContractionBatch(splist); + }); + return 1; + } + + /** + * 修改合同任务 + * + * @param tAgentContraction 合同任务 + * @return 结果 + */ + @Override + public int updateTAgentContraction(TAgentContraction tAgentContraction) + { + tAgentContraction.setUpdateTime(DateUtils.getNowDate()); + return tAgentContractionMapper.updateTAgentContraction(tAgentContraction); + } + + /** + * 批量修改 合同任务 + * + * @param list 合同任务 + * @return 结果 + */ + @Override + @Transactional + public int updateTAgentContractionBatch(List list) { + List> splists = ListUtils.partition(list, 50); + splists.forEach(splist->{ + tAgentContractionMapper.updateTAgentContractionBatch(splist); + }); + return 1; + } + + /** + * 批量删除合同任务 + * + * @param ids 需要删除的合同任务主键 + * @return 结果 + */ + @Override + public int deleteTAgentContractionByIds(Long[] ids) + { + return tAgentContractionMapper.deleteTAgentContractionByIds(ids); + } + + /** + * 删除合同任务信息 + * + * @param id 合同任务主键 + * @return 结果 + */ + @Override + public int deleteTAgentContractionById(Long id) + { + return tAgentContractionMapper.deleteTAgentContractionById(id); + } + + // Harm + /** + * 单条条件查询合同任务 + * + * @param tAgentContraction 合同任务 + * @return 合同任务条目 + */ + @Override + public TAgentContraction selectTAgentContraction(TAgentContraction tAgentContraction) { + return tAgentContractionMapper.selectTAgentContraction(tAgentContraction); + } + + /** + * 条件查询合同任务数量 + * + * @param tAgentContraction 合同任务 + * @return 合同任务数量 + */ + @Override + public Long selectTAgentContractionCount(TAgentContraction tAgentContraction) { + return tAgentContractionMapper.selectTAgentContractionCount(tAgentContraction); + } + + /** + * 条件查询合同任务是否存在 + * + * @param tAgentContraction 合同任务 + * @return 合同任务是否存在 + */ + @Override + public boolean selectTAgentContractionExists(TAgentContraction tAgentContraction) { + return tAgentContractionMapper.selectTAgentContractionExists(tAgentContraction) > 0; + } +} diff --git a/ruoyi-agentcenter/src/main/resources/mapper/agentcenter/TAgentContractionMapper.xml b/ruoyi-agentcenter/src/main/resources/mapper/agentcenter/TAgentContractionMapper.xml new file mode 100644 index 0000000..fa9a221 --- /dev/null +++ b/ruoyi-agentcenter/src/main/resources/mapper/agentcenter/TAgentContractionMapper.xml @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, task_id, org_code, out_id, book_id, dept_id, name, building_time, remark, order_at, order_year, order_month, agent_status, order_status, create_by, create_time, update_by, update_time from t_agent_contraction + + + + + + + + + + + insert into t_agent_contraction + + task_id, + org_code, + out_id, + book_id, + dept_id, + name, + building_time, + remark, + order_at, + order_year, + order_month, + agent_status, + order_status, + create_by, + create_time, + update_by, + update_time, + + + #{taskId}, + #{orgCode}, + #{outId}, + #{bookId}, + #{deptId}, + #{name}, + #{buildingTime}, + #{remark}, + #{orderAt}, + #{orderYear}, + #{orderMonth}, + #{agentStatus}, + #{orderStatus}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + + insert into t_agent_contraction + + task_id, + org_code, + out_id, + book_id, + dept_id, + name, + building_time, + remark, + order_at, + order_year, + order_month, + agent_status, + order_status, + create_by, + create_time, + update_by, + update_time, + + values + + + #{item.taskId}, + #{item.orgCode}, + #{item.outId}, + #{item.bookId}, + #{item.deptId}, + #{item.name}, + #{item.buildingTime}, + #{item.remark}, + #{item.orderAt}, + #{item.orderYear}, + #{item.orderMonth}, + #{item.agentStatus}, + #{item.orderStatus}, + #{item.createBy}, + #{item.createTime}, + #{item.updateBy}, + #{item.updateTime}, + + + + + + + update t_agent_contraction + + task_id = #{taskId}, + org_code = #{orgCode}, + out_id = #{outId}, + book_id = #{bookId}, + dept_id = #{deptId}, + name = #{name}, + building_time = #{buildingTime}, + remark = #{remark}, + order_at = #{orderAt}, + order_year = #{orderYear}, + order_month = #{orderMonth}, + agent_status = #{agentStatus}, + order_status = #{orderStatus}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + `${col}` = #{val}, + + where id = #{id} + + + + + + update t_agent_contraction + + task_id = #{item.taskId}, + org_code = #{item.orgCode}, + out_id = #{item.outId}, + book_id = #{item.bookId}, + dept_id = #{item.deptId}, + name = #{item.name}, + building_time = #{item.buildingTime}, + remark = #{item.remark}, + order_at = #{item.orderAt}, + order_year = #{item.orderYear}, + order_month = #{item.orderMonth}, + agent_status = #{item.agentStatus}, + order_status = #{item.orderStatus}, + create_by = #{item.createBy}, + create_time = #{item.createTime}, + update_by = #{item.updateBy}, + update_time = #{item.updateTime}, + `${col}` = #{val}, + + where id = #{item.id} + + + + + + delete from t_agent_contraction where id = #{id} + + + + + delete from t_agent_contraction where id in + + #{id} + + + + + + + + + + + + + \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/EventBusEngine.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/EventBusEngine.java index 77e33bb..c902e8f 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/EventBusEngine.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/EventBusEngine.java @@ -19,7 +19,7 @@ public final class EventBusEngine private static final List _listenerList = new ArrayList<>(); @Autowired - public void setAsyncEventBus(@Qualifier("asyncEventBus" ) EventBus eventBus) + public void setEventBus(@Qualifier( "syncEventBus" ) EventBus eventBus) { EventBusEngine._eventBus = eventBus; logger.info("EventBusEngine::initialization -> " + eventBus);