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 f7d216f..6fb4c04 100644 --- a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/NSMain.java +++ b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/NSMain.java @@ -44,7 +44,7 @@ public final class NSMain NSEntity entity; NSApiResult result; - NSSDK.InitClient("http://localhost", (short) 8081, "test", "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==", 0); + NSSDK.InitClient("http://localhost", (short) 8081, "371002100005", "MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==", 0); client = NSSDK.InstanceClient(); entity = new NSEntity(); @@ -52,12 +52,12 @@ public final class NSMain .setBookId(166L) .setOrgCode("371002100005") .setBookName("张村账套") - .setOrgCode("3710021000050001") + /*.setOrgCode("3710021000050001") .setBookName("张村1组账套") .setOrgCode("371002100") .setBookName("张村镇账套") .setOrgCode("371002") - .setBookName("环翠区账套") + .setBookName("环翠区账套")*/ ; entity.Parm("buildingTime", "2000-12-25"); entity.Parm("name", "测试合同"); diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/domain/TAgentTask.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/domain/TAgentTask.java index 716ca2e..06ac46b 100644 --- a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/domain/TAgentTask.java +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/domain/TAgentTask.java @@ -20,6 +20,10 @@ import com.ruoyi.common.core.domain.BaseEntity; @Accessors(chain = true) public class TAgentTask extends BaseEntity { + public static final String AGENT_STATUS_READY = "1"; + public static final String AGENT_STATUS_PROCESSING = "2"; + public static final String AGENT_STATUS_FINISHED = "3"; + private static final long serialVersionUID = 1L; /** id */ 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 9755e61..3f0b781 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 @@ -63,7 +63,7 @@ public class ContractionListener .setName(data.getName()) .setBuildingTime(data.getBuildingTime()) .setOrderAt(new Date()) - .setAgentStatus("1") + .setAgentStatus(TAgentTask.AGENT_STATUS_READY) .setOrderStatus("2") .normalized(); ; @@ -73,37 +73,14 @@ public class ContractionListener private TAgentTask syncTask(NSContractionEntity entity, TAgentContraction contraction) { String orgCode = contraction.getOrgCode(); - TAgentTask task = new TAgentTask(); - task.setOrgCode(orgCode) - .setOrderYear(contraction.getOrderYear()) - .setOrderMonth(contraction.getOrderMonth()) - ; - TAgentTask tAgentTask = itAgentTaskService.selectTAgentTask(task); - if(null == tAgentTask) - { - SysDept deptCond = new SysDept(); - deptCond.setOrgCode(orgCode); - SysDept dept = iSysDeptService.selectSysDept(deptCond); - Assert.notNull(dept, "部门不存在: {}", orgCode); - task.setBookId(contraction.getBookId()) - .setBookName(entity.getBookName()) - .setContracCount(0) - .setVoucherCount(0) - .setAssetCount(0) - .setAllCount(0) - .setFinishCount(0) - - .setAgentCenter(dept.getAgentCenter()) - .setAgentStatus("1") - ; - itAgentTaskService.fillTAgentTaskOrg(task); - task.setCreateBy("admin"); - itAgentTaskService.insertTAgentTask(task); - tAgentTask = task; - } + TAgentTask tAgentTask = itAgentTaskService.getTAgentTask(orgCode, contraction.getOrderYear(), contraction.getOrderMonth(), (x) -> { + x.setBookId(contraction.getBookId()) + .setBookName(entity.getBookName()) + ; + }); - task = new TAgentTask(); + TAgentTask task = new TAgentTask(); task.setContracCount(1); task.setId(tAgentTask.getId()); itAgentTaskService.updateTAgentTaskCount(task); diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/ITAgentTaskService.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/ITAgentTaskService.java index 7576055..e321478 100644 --- a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/ITAgentTaskService.java +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/ITAgentTaskService.java @@ -1,6 +1,8 @@ package com.ruoyi.agentcenter.service; import java.util.List; +import java.util.function.Consumer; + import com.ruoyi.agentcenter.domain.TAgentTask; /** @@ -103,4 +105,6 @@ public interface ITAgentTaskService public int updateTAgentTaskCount(TAgentTask tAgentTask); public void fillTAgentTaskOrg(TAgentTask tAgentTask); + + public TAgentTask getTAgentTask(String orgCode, String year, String month, Consumer ifNotExists); } 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 index 981cdcc..cd4e258 100644 --- 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 @@ -1,5 +1,7 @@ package com.ruoyi.agentcenter.service.impl; +import cn.hutool.core.lang.Assert; +import cn.hutool.core.util.URLUtil; import com.nsgk.agentcentersdk.api.NSSDK; import com.nsgk.agentcentersdk.api.NSSDKServer; import com.nsgk.agentcentersdk.core.NSProtocol; @@ -15,16 +17,22 @@ 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.domain.entity.SysDept; import com.ruoyi.common.utils.EventBusEngine; import com.ruoyi.common.utils.handler.HandlerEngine; +import com.ruoyi.system.mapper.SysDeptMapper; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import javax.servlet.http.HttpServletRequest; +import java.net.URL; import java.util.Date; @Service public class AgentCenterImpl implements IAgentCenter { + @Autowired + private SysDeptMapper sysDeptMapper; public int getProtocol(HttpServletRequest request) { @@ -77,10 +85,38 @@ public class AgentCenterImpl implements IAgentCenter return session; } + private void check(Message message, HttpServletRequest request) + { + Assert.notNull(message, "无效消息"); + String identifier = message.getIdentifier(); + Assert.notBlank(identifier, "无效客户端标识"); + SysDept dept = sysDeptMapper.selectSysDeptByOrgCode(identifier); + Assert.notNull(dept, "不支持的地区: {}", identifier); + String remoteUrl = dept.getRemoteUrl(); + Assert.notBlank(remoteUrl, "该地区无项目: {}", identifier); + /*try + { + URL url = new URL(remoteUrl); + String host = url.getHost(); + String clientHost = request.getRemoteAddr(); + Assert.isTrue(clientHost.equals(host), "该客户端部署在不支持的地址: {}", clientHost); + + int port = url.getPort(); + int clientPort = request.getRemotePort(); + Assert.isTrue(clientPort == port, "该客户端部署在不支持的地址: {}", clientPort); + } + catch(Exception e) + { + e.printStackTrace(); + throw new RuntimeException(e); + }*/ + } + @Override public Result postHandle(HttpServletRequest request) { Message message = getMessage(request); + check(message, request); Session session = createSession(message); HandlerEngine.Post(session); return session.result; diff --git a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/TAgentTaskServiceImpl.java b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/TAgentTaskServiceImpl.java index 2d4e39c..86733b3 100644 --- a/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/TAgentTaskServiceImpl.java +++ b/ruoyi-agentcenter/src/main/java/com/ruoyi/agentcenter/service/impl/TAgentTaskServiceImpl.java @@ -1,6 +1,7 @@ package com.ruoyi.agentcenter.service.impl; import java.util.List; +import java.util.function.Consumer; import cn.hutool.core.lang.Assert; import com.ruoyi.common.core.domain.entity.SysDept; @@ -209,4 +210,37 @@ public class TAgentTaskServiceImpl implements ITAgentTaskService .setOrgName(org.getDeptName()) ; } + + @Override + public TAgentTask getTAgentTask(String orgCode, String year, String month, Consumer ifNotExists) + { + TAgentTask task = new TAgentTask(); + task.setOrgCode(orgCode) + .setOrderYear(year) + .setOrderMonth(month) + ; + TAgentTask tAgentTask = tAgentTaskMapper.selectTAgentTask(task); + if(null == tAgentTask) + { + SysDept deptCond = new SysDept(); + deptCond.setOrgCode(orgCode); + SysDept dept = sysDeptMapper.selectSysDept(deptCond); + Assert.notNull(dept, "部门不存在: {}", orgCode); + task.setContracCount(0) + .setVoucherCount(0) + .setAssetCount(0) + .setAllCount(0) + .setFinishCount(0) + + .setAgentCenter(dept.getAgentCenter()) + .setAgentStatus(TAgentTask.AGENT_STATUS_READY) + ; + fillTAgentTaskOrg(task); + task.setCreateBy("admin"); + ifNotExists.accept(task); // 补充 + insertTAgentTask(task); + tAgentTask = task; + } + return tAgentTask; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java index c7c657d..e00d548 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysDeptMapper.java @@ -122,4 +122,5 @@ public interface SysDeptMapper * @return 部门条目 */ public SysDept selectSysDept(SysDept sysDept); + public SysDept selectSysDeptByOrgCode(String orgCode); } diff --git a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml index fbbbc4a..1f4263d 100644 --- a/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/system/SysDeptMapper.xml @@ -178,4 +178,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" limit 1 + + \ No newline at end of file