Explorar el Código

合同

master
zhao hace 1 año
padre
commit
31c45a4abe
Se han modificado 24 ficheros con 970 adiciones y 60 borrados
  1. +6
    -6
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/NSMain.java
  2. +3
    -2
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKClient.java
  3. +26
    -2
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKServer.java
  4. +2
    -0
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSConstants.java
  5. +7
    -0
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSReportObject.java
  6. +1
    -1
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSContractionEntity.java
  7. +7
    -6
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSEntity.java
  8. +1
    -0
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/err/NSErrGlobal.java
  9. +2
    -1
      agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/err/NSErrno.java
  10. +13
    -26
      ruoyi-admin/src/main/java/com/ruoyi/web/controller/agentcenter/AgentCenterController.java
  11. +83
    -0
      ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/domain/TAgentContraction.java
  12. +36
    -3
      ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/listener/ContractionListener.java
  13. +102
    -0
      ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/mapper/TAgentContractionMapper.java
  14. +0
    -11
      ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/ContractionMessage.java
  15. +11
    -0
      ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/ContractionSession.java
  16. +1
    -1
      ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Message.java
  17. +14
    -0
      ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Result.java
  18. +18
    -0
      ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Session.java
  19. +10
    -0
      ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/IAgentCenter.java
  20. +102
    -0
      ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/ITAgentContractionService.java
  21. +86
    -0
      ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/AgentCenterImpl.java
  22. +164
    -0
      ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/TAgentContractionServiceImpl.java
  23. +274
    -0
      ruoyi-agentcenter/src/main/resources/mapper/agentcenter/TAgentContractionMapper.xml
  24. +1
    -1
      ruoyi-common/src/main/java/com/ruoyi/common/utils/EventBusEngine.java

+ 6
- 6
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/NSMain.java Ver fichero

@@ -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);


+ 3
- 2
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKClient.java Ver fichero

@@ -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 <T extends NSEntityBase> NSApiResult Send(int protocol, T object)
public <T extends NSEntity> NSApiResult Send(int protocol, T object)
{
String url;
NSReportObject<T> 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();


+ 26
- 2
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/api/NSSDKServer.java Ver fichero

@@ -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 <T extends NSEntityBase> NSReportObject<T> Recv(HttpServletRequest request, Class<T> clazz)
public <T extends NSEntity> NSReportObject<T> Recv(HttpServletRequest request, Class<T> clazz)
{
NSReportObject<T> 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)
{


+ 2
- 0
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSConstants.java Ver fichero

@@ -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() {}
}

+ 7
- 0
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSReportObject.java Ver fichero

@@ -92,6 +92,13 @@ public class NSReportObject<T>
return src.equals(Sign());
}

public boolean CheckTime(long serverTime, long limit)
{
if(null == timestamp || timestamp <= 0L)
return false;
return serverTime - timestamp <= limit;
}

public NSReportObject<T> SetTimestampStr(String str)
{
timestamp = Long.parseLong(str);


+ 1
- 1
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSContractionEntity.java Ver fichero

@@ -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;



agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSEntityBase.java → agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/entity/NSEntity.java Ver fichero

@@ -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<String, Object> parms;

@@ -45,14 +46,14 @@ public class NSEntityBase implements Serializable
}

@SuppressWarnings("unchecked")
public <T extends NSEntityBase> T Parm(String name, Object val)
public <T extends NSEntity> T Parm(String name, Object val)
{
PARMS().put(name, val);
return (T)this;
}

@SuppressWarnings("unchecked")
public <T extends NSEntityBase> T DelParm(String...name)
public <T extends NSEntity> T DelParm(String...name)
{
if(null != parms && NSArr.IsNotEmpty(name))
{

+ 1
- 0
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/err/NSErrGlobal.java Ver fichero

@@ -44,6 +44,7 @@ public final class NSErrGlobal
{
if(err == NSErrno.ERRNO_OK)
return t;
Err(err);
throw new NSException(err);
}



+ 2
- 1
agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/err/NSErrno.java Ver fichero

@@ -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 "数据缺失";


+ 13
- 26
ruoyi-admin/src/main/java/com/ruoyi/web/controller/agentcenter/AgentCenterController.java Ver fichero

@@ -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<NSContractionEntity> 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());
}
}

+ 83
- 0
ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/domain/TAgentContraction.java Ver fichero

@@ -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");
}
}

+ 36
- 3
ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/listener/ContractionListener.java Ver fichero

@@ -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<NSContractionEntity> 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;
}
}

+ 102
- 0
ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/mapper/TAgentContractionMapper.java Ver fichero

@@ -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<TAgentContraction> selectTAgentContractionList(TAgentContraction tAgentContraction);

/**
* 新增合同任务
*
* @param tAgentContraction 合同任务
* @return 结果
*/
public int insertTAgentContraction(TAgentContraction tAgentContraction);

/**
* 批量新增合同任务
*
* @param list 合同任务
* @return 结果
*/
public int insertTAgentContractionBatch(List<TAgentContraction> list);

/**
* 批量修改 合同任务
*
* @param list 合同任务
* @return 结果
*/
public int updateTAgentContractionBatch(List<TAgentContraction> 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);
}

+ 0
- 11
ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/ContractionMessage.java Ver fichero

@@ -1,11 +0,0 @@
package com.ruoyi.agentcenter.object;

import com.nsgk.agentcentersdk.entity.NSContractionEntity;

public class ContractionMessage extends Message<NSContractionEntity>
{
public ContractionMessage(int protocol, String identifier, Long timestamp, NSContractionEntity data)
{
super(protocol, identifier, timestamp, data);
}
}

+ 11
- 0
ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/ContractionSession.java Ver fichero

@@ -0,0 +1,11 @@
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
- 1
ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Message.java Ver fichero

@@ -6,7 +6,7 @@ import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
public abstract class Message<T>
public class Message<T>
{
private final int protocol; // 协议
private final String identifier; // 识别ID


+ 14
- 0
ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Result.java Ver fichero

@@ -0,0 +1,14 @@
package com.ruoyi.agentcenter.object;

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

+ 18
- 0
ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/object/Session.java Ver fichero

@@ -0,0 +1,18 @@
package com.ruoyi.agentcenter.object;

public class Session<T, R>
{
public final Message<T> message;
public final Result<R> result;

protected Session()
{
throw new RuntimeException("Session<T, R>不能默认实例化");
}

protected Session(Message<T> message, Result<R> result)
{
this.message = message;
this.result = result;
}
}

+ 10
- 0
ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/IAgentCenter.java Ver fichero

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

+ 102
- 0
ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/ITAgentContractionService.java Ver fichero

@@ -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<TAgentContraction> selectTAgentContractionList(TAgentContraction tAgentContraction);

/**
* 新增合同任务
*
* @param tAgentContraction 合同任务
* @return 结果
*/
public int insertTAgentContraction(TAgentContraction tAgentContraction);

/**
* 批量新增合同任务
*
* @param list 合同任务
* @return 结果
*/
public int insertTAgentContractionBatch(List<TAgentContraction> list);

/**
* 修改合同任务
*
* @param tAgentContraction 合同任务
* @return 结果
*/
public int updateTAgentContraction(TAgentContraction tAgentContraction);

/**
* 批量修改 合同任务
*
* @param list 合同任务
* @return 结果
*/
public int updateTAgentContractionBatch(List<TAgentContraction> 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);
}

+ 86
- 0
ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/AgentCenterImpl.java Ver fichero

@@ -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<? extends NSEntity> 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<NSContractionEntity>) 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;
}
}

+ 164
- 0
ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/TAgentContractionServiceImpl.java Ver fichero

@@ -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<TAgentContraction> 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<TAgentContraction> list){
List<List<TAgentContraction>> 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<TAgentContraction> list) {
List<List<TAgentContraction>> 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;
}
}

+ 274
- 0
ruoyi-agentcenter/src/main/resources/mapper/agentcenter/TAgentContractionMapper.xml Ver fichero

@@ -0,0 +1,274 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.agentcenter.mapper.TAgentContractionMapper">
<resultMap type="TAgentContraction" id="TAgentContractionResult">
<result property="id" column="id" />
<result property="taskId" column="task_id" />
<result property="orgCode" column="org_code" />
<result property="outId" column="out_id" />
<result property="bookId" column="book_id" />
<result property="deptId" column="dept_id" />
<result property="name" column="name" />
<result property="buildingTime" column="building_time" />
<result property="remark" column="remark" />
<result property="orderAt" column="order_at" />
<result property="orderYear" column="order_year" />
<result property="orderMonth" column="order_month" />
<result property="agentStatus" column="agent_status" />
<result property="orderStatus" column="order_status" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>

<sql id="selectTAgentContractionVo">
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
</sql>

<!--条件查询-->
<select id="selectTAgentContractionList" parameterType="TAgentContraction" resultMap="TAgentContractionResult">
<include refid="selectTAgentContractionVo"/>
<where>
<if test="taskId != null "> and task_id = #{taskId}</if>
<if test="orgCode != null and orgCode != ''"> and org_code = #{orgCode}</if>
<if test="outId != null "> and out_id = #{outId}</if>
<if test="bookId != null "> and book_id = #{bookId}</if>
<if test="deptId != null "> and dept_id = #{deptId}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="buildingTime != null and buildingTime != ''"> and building_time = #{buildingTime}</if>
<if test="orderAt != null "> and order_at = #{orderAt}</if>
<if test="orderYear != null and orderYear != ''"> and order_year = #{orderYear}</if>
<if test="orderMonth != null and orderMonth != ''"> and order_month = #{orderMonth}</if>
<if test="agentStatus != null and agentStatus != ''"> and agent_status = #{agentStatus}</if>
<if test="orderStatus != null and orderStatus != ''"> and order_status = #{orderStatus}</if>
</where>
</select>
<!--主键查询-->
<select id="selectTAgentContractionById" parameterType="Long" resultMap="TAgentContractionResult">
<include refid="selectTAgentContractionVo"/>
where id = #{id}
</select>
<!--新增-->
<insert id="insertTAgentContraction" parameterType="TAgentContraction" useGeneratedKeys="true" keyProperty="id">
insert into t_agent_contraction
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="taskId != null">task_id,</if>
<if test="orgCode != null and orgCode != ''">org_code,</if>
<if test="outId != null">out_id,</if>
<if test="bookId != null">book_id,</if>
<if test="deptId != null">dept_id,</if>
<if test="name != null and name != ''">name,</if>
<if test="buildingTime != null and buildingTime != ''">building_time,</if>
<if test="remark != null">remark,</if>
<if test="orderAt != null">order_at,</if>
<if test="orderYear != null and orderYear != ''">order_year,</if>
<if test="orderMonth != null and orderMonth != ''">order_month,</if>
<if test="agentStatus != null and agentStatus != ''">agent_status,</if>
<if test="orderStatus != null and orderStatus != ''">order_status,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="taskId != null">#{taskId},</if>
<if test="orgCode != null and orgCode != ''">#{orgCode},</if>
<if test="outId != null">#{outId},</if>
<if test="bookId != null">#{bookId},</if>
<if test="deptId != null">#{deptId},</if>
<if test="name != null and name != ''">#{name},</if>
<if test="buildingTime != null and buildingTime != ''">#{buildingTime},</if>
<if test="remark != null">#{remark},</if>
<if test="orderAt != null">#{orderAt},</if>
<if test="orderYear != null and orderYear != ''">#{orderYear},</if>
<if test="orderMonth != null and orderMonth != ''">#{orderMonth},</if>
<if test="agentStatus != null and agentStatus != ''">#{agentStatus},</if>
<if test="orderStatus != null and orderStatus != ''">#{orderStatus},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
</trim>
</insert>

<!--批量新增-->
<insert id="insertTAgentContractionBatch" parameterType="list" useGeneratedKeys="true" keyProperty="id">
insert into t_agent_contraction
<trim prefix="(" suffix=")" suffixOverrides=",">
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,
</trim>
values
<foreach item="item" collection="list" separator="," >
<trim prefix="(" suffix=")" suffixOverrides=",">
#{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},
</trim>
</foreach>
</insert>

<!--更新-->
<update id="updateTAgentContraction" parameterType="TAgentContraction">
update t_agent_contraction
<trim prefix="SET" suffixOverrides=",">
<if test="taskId != null">task_id = #{taskId},</if>
<if test="orgCode != null and orgCode != ''">org_code = #{orgCode},</if>
<if test="outId != null">out_id = #{outId},</if>
<if test="bookId != null">book_id = #{bookId},</if>
<if test="deptId != null">dept_id = #{deptId},</if>
<if test="name != null and name != ''">name = #{name},</if>
<if test="buildingTime != null and buildingTime != ''">building_time = #{buildingTime},</if>
<if test="remark != null">remark = #{remark},</if>
<if test="orderAt != null">order_at = #{orderAt},</if>
<if test="orderYear != null and orderYear != ''">order_year = #{orderYear},</if>
<if test="orderMonth != null and orderMonth != ''">order_month = #{orderMonth},</if>
<if test="agentStatus != null and agentStatus != ''">agent_status = #{agentStatus},</if>
<if test="orderStatus != null and orderStatus != ''">order_status = #{orderStatus},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="params != null and params.__UPDATE != null"><foreach collection="params.__UPDATE" item="val" index="col">`${col}` = #{val},</foreach></if>
</trim>
where id = #{id}
</update>

<!--批量更新-->
<update id="updateTAgentContractionBatch" parameterType="list" >
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update t_agent_contraction
<set>
<if test="item.taskId != null">task_id = #{item.taskId},</if>
<if test="item.orgCode != null and item.orgCode != ''">org_code = #{item.orgCode},</if>
<if test="item.outId != null">out_id = #{item.outId},</if>
<if test="item.bookId != null">book_id = #{item.bookId},</if>
<if test="item.deptId != null">dept_id = #{item.deptId},</if>
<if test="item.name != null and item.name != ''">name = #{item.name},</if>
<if test="item.buildingTime != null and item.buildingTime != ''">building_time = #{item.buildingTime},</if>
<if test="item.remark != null">remark = #{item.remark},</if>
<if test="item.orderAt != null">order_at = #{item.orderAt},</if>
<if test="item.orderYear != null and item.orderYear != ''">order_year = #{item.orderYear},</if>
<if test="item.orderMonth != null and item.orderMonth != ''">order_month = #{item.orderMonth},</if>
<if test="item.agentStatus != null and item.agentStatus != ''">agent_status = #{item.agentStatus},</if>
<if test="item.orderStatus != null and item.orderStatus != ''">order_status = #{item.orderStatus},</if>
<if test="item.createBy != null">create_by = #{item.createBy},</if>
<if test="item.createTime != null">create_time = #{item.createTime},</if>
<if test="item.updateBy != null">update_by = #{item.updateBy},</if>
<if test="item.updateTime != null">update_time = #{item.updateTime},</if>
<if test="item.params != null and item.params.__UPDATE != null"><foreach collection="item.params.__UPDATE" item="val" index="col">`${col}` = #{val},</foreach></if>
</set>
where id = #{item.id}
</foreach>
</update>

<!--主键删除-->
<delete id="deleteTAgentContractionById" parameterType="Long">
delete from t_agent_contraction where id = #{id}
</delete>

<!--主键批量删除-->
<delete id="deleteTAgentContractionByIds" parameterType="String">
delete from t_agent_contraction where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>

<!-- Harm -->
<!--单条条件查询-->
<select id="selectTAgentContraction" parameterType="TAgentContraction" resultMap="TAgentContractionResult">
<include refid="selectTAgentContractionVo"/>
<where>
<if test="taskId != null "> and task_id = #{taskId}</if>
<if test="orgCode != null and orgCode != ''"> and org_code = #{orgCode}</if>
<if test="outId != null "> and out_id = #{outId}</if>
<if test="bookId != null "> and book_id = #{bookId}</if>
<if test="deptId != null "> and dept_id = #{deptId}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="buildingTime != null and buildingTime != ''"> and building_time = #{buildingTime}</if>
<if test="orderAt != null "> and order_at = #{orderAt}</if>
<if test="orderYear != null and orderYear != ''"> and order_year = #{orderYear}</if>
<if test="orderMonth != null and orderMonth != ''"> and order_month = #{orderMonth}</if>
<if test="agentStatus != null and agentStatus != ''"> and agent_status = #{agentStatus}</if>
<if test="orderStatus != null and orderStatus != ''"> and order_status = #{orderStatus}</if>
</where>
limit 1
</select>

<!--条件查询数量-->
<select id="selectTAgentContractionCount" parameterType="TAgentContraction" resultType="Long">
select count(*) from t_agent_contraction
<where>
<if test="taskId != null "> and task_id = #{taskId}</if>
<if test="orgCode != null and orgCode != ''"> and org_code = #{orgCode}</if>
<if test="outId != null "> and out_id = #{outId}</if>
<if test="bookId != null "> and book_id = #{bookId}</if>
<if test="deptId != null "> and dept_id = #{deptId}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="buildingTime != null and buildingTime != ''"> and building_time = #{buildingTime}</if>
<if test="orderAt != null "> and order_at = #{orderAt}</if>
<if test="orderYear != null and orderYear != ''"> and order_year = #{orderYear}</if>
<if test="orderMonth != null and orderMonth != ''"> and order_month = #{orderMonth}</if>
<if test="agentStatus != null and agentStatus != ''"> and agent_status = #{agentStatus}</if>
<if test="orderStatus != null and orderStatus != ''"> and order_status = #{orderStatus}</if>
</where>
</select>

<!--条件查询是否存在-->
<select id="selectTAgentContractionExists" parameterType="TAgentContraction" resultType="int">
select exists (
select 1 from t_agent_contraction
<where>
<if test="taskId != null "> and task_id = #{taskId}</if>
<if test="orgCode != null and orgCode != ''"> and org_code = #{orgCode}</if>
<if test="outId != null "> and out_id = #{outId}</if>
<if test="bookId != null "> and book_id = #{bookId}</if>
<if test="deptId != null "> and dept_id = #{deptId}</if>
<if test="name != null and name != ''"> and name like concat('%', #{name}, '%')</if>
<if test="buildingTime != null and buildingTime != ''"> and building_time = #{buildingTime}</if>
<if test="orderAt != null "> and order_at = #{orderAt}</if>
<if test="orderYear != null and orderYear != ''"> and order_year = #{orderYear}</if>
<if test="orderMonth != null and orderMonth != ''"> and order_month = #{orderMonth}</if>
<if test="agentStatus != null and agentStatus != ''"> and agent_status = #{agentStatus}</if>
<if test="orderStatus != null and orderStatus != ''"> and order_status = #{orderStatus}</if>
</where>
limit 1
)
</select>
</mapper>

+ 1
- 1
ruoyi-common/src/main/java/com/ruoyi/common/utils/EventBusEngine.java Ver fichero

@@ -19,7 +19,7 @@ public final class EventBusEngine
private static final List<Object> _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);


Cargando…
Cancelar
Guardar