diff --git a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSProtocol.java b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSProtocol.java index 76da420..d667070 100644 --- a/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSProtocol.java +++ b/agentcenter-sdk/src/main/java/com/nsgk/agentcentersdk/core/NSProtocol.java @@ -6,6 +6,7 @@ public final class NSProtocol public static final int NS_PROTOCOL_INVALID = 0; public static final int NS_PROTOCOL_TEST = 0x00001; public static final int NS_PROTOCOL_CONTRACTION = 0x10001; + public static final int NS_PROTOCOL_UPDATE_CONTRACTION = 0x10002; public static int FromString(String 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 a326346..86513a6 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 @@ -15,4 +15,7 @@ public class NSContractionEntity extends NSEntity /** 签订日期 */ private String buildingTime; + + /** 状态 */ + private String orderStatus; } 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 b6e4642..6e0690e 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 @@ -38,7 +38,7 @@ public class ContractionListener } @CallbackHandler(protocol = "" + NSProtocol.NS_PROTOCOL_CONTRACTION) - public void handle(ContractionSession session) + public void reportContraction(ContractionSession session) { TAgentContraction contraction = conv(session.message); Result result = session.result; @@ -46,7 +46,35 @@ public class ContractionListener SqlUtil.transaction(() -> { TAgentTask task = syncTask(session.message.getData(), contraction); contraction.setTaskId(task.getId()); - itAgentContractionService.insertTAgentContraction(contraction); + if(null == contraction.getId()) + { + itAgentContractionService.insertTAgentContraction(contraction); + result.setMessage("新增合同报账成功"); + } + else + { + itAgentContractionService.updateTAgentContraction(contraction); + result.setMessage("更新合同报账成功"); + } + }); + + result.setData(contraction); + } + + @CallbackHandler(protocol = "" + NSProtocol.NS_PROTOCOL_UPDATE_CONTRACTION) + public void updateContraction(ContractionSession session) + { + NSContractionEntity inContraction = session.message.getData(); + Result result = session.result; + TAgentContraction contraction = itAgentContractionService.selectTAgentContraction(new TAgentContraction().setOrgCode(inContraction.getOrgCode()).setOutId(inContraction.getOutId())); + Assert.notNull(contraction, "报账合同不存在"); + Assert.isTrue(TAgentTask.AGENT_STATUS_PROCESSING.equals(contraction.getAgentStatus()), "报账合同任务未分配"); + Assert.isTrue("2".equals(contraction.getOrderStatus()), "报账合同状态不是待记账状态"); + + SqlUtil.transaction(() -> { + contraction.setOrderStatus(inContraction.getOrderStatus()); + itAgentContractionService.updateTAgentContraction(contraction); + syncFinishTask(contraction); }); result.setData(contraction); @@ -54,20 +82,39 @@ public class ContractionListener private TAgentContraction conv(Message message) { - 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(TAgentTask.AGENT_STATUS_READY) - .setOrderStatus("2") - .normalized() - ; - contraction.setCreateBy("admin"); + + TAgentContraction contractionCond = new TAgentContraction(); + contractionCond.setOrgCode(data.getOrgCode()) + .setOutId(data.getOutId()); + TAgentContraction contraction = itAgentContractionService.selectTAgentContraction(contractionCond); + if(null != contraction) + { + Assert.isTrue("2".equals(contraction.getOrderStatus()), "非待记账状态的合同保障不能修改"); + contraction.setBookId(data.getBookId()) + .setDeptId(data.getDeptId()) + .setName(data.getName()) + .setBuildingTime(data.getBuildingTime()) + ; + contraction.setUpdateBy("admin"); + } + else + { + contraction = new TAgentContraction(); + contraction.setBookId(data.getBookId()) + .setDeptId(data.getDeptId()) + .setOutId(data.getOutId()) + .setName(data.getName()) + .setOrgCode(data.getOrgCode()) + .setBuildingTime(data.getBuildingTime()) + .setOrderAt(new Date()) + .setAgentStatus(TAgentTask.AGENT_STATUS_READY) + .setOrderStatus("2") + .normalized() + ; + contraction.setCreateBy("admin"); + } + return contraction; } @@ -86,6 +133,19 @@ public class ContractionListener task.setId(tAgentTask.getId()); itAgentTaskService.updateTAgentTaskCount(task); - return task; + return tAgentTask; + } + + private void syncFinishTask(TAgentContraction contraction) + { + 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(); + task.setFinishCount(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 e321478..b2c3227 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 @@ -107,4 +107,6 @@ public interface ITAgentTaskService public void fillTAgentTaskOrg(TAgentTask tAgentTask); public TAgentTask getTAgentTask(String orgCode, String year, String month, Consumer ifNotExists); + + public TAgentTask getTAgentTask(String orgCode, String year, String month); } 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 d8e4cb6..15ea73c 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 @@ -49,6 +49,7 @@ public class AgentCenterImpl implements IAgentCenter switch(protocol) { case NSProtocol.NS_PROTOCOL_CONTRACTION: + case NSProtocol.NS_PROTOCOL_UPDATE_CONTRACTION: clazz = NSContractionEntity.class; break; default: @@ -68,6 +69,7 @@ public class AgentCenterImpl implements IAgentCenter switch(protocol) { case NSProtocol.NS_PROTOCOL_CONTRACTION: + case NSProtocol.NS_PROTOCOL_UPDATE_CONTRACTION: session = new ContractionSession((Message) message); break; default: @@ -109,7 +111,7 @@ public class AgentCenterImpl implements IAgentCenter Message message = getMessage(server, request); check(message, request); Session session = createSession(message); - HandlerEngine.Post(session); + HandlerEngine.Call("" + message.getProtocol(), 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 86733b3..303adca 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 @@ -214,19 +214,19 @@ public class TAgentTaskServiceImpl implements ITAgentTaskService @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); + TAgentTask tAgentTask = getTAgentTask(orgCode, year, month); if(null == tAgentTask) { + tAgentTask = new TAgentTask(); SysDept deptCond = new SysDept(); deptCond.setOrgCode(orgCode); SysDept dept = sysDeptMapper.selectSysDept(deptCond); Assert.notNull(dept, "部门不存在: {}", orgCode); - task.setContracCount(0) + tAgentTask.setOrgCode(orgCode) + .setOrderYear(year) + .setOrderMonth(month) + + .setContracCount(0) .setVoucherCount(0) .setAssetCount(0) .setAllCount(0) @@ -235,12 +235,27 @@ public class TAgentTaskServiceImpl implements ITAgentTaskService .setAgentCenter(dept.getAgentCenter()) .setAgentStatus(TAgentTask.AGENT_STATUS_READY) ; - fillTAgentTaskOrg(task); - task.setCreateBy("admin"); - ifNotExists.accept(task); // 补充 - insertTAgentTask(task); - tAgentTask = task; + fillTAgentTaskOrg(tAgentTask); + tAgentTask.setCreateBy("admin"); + ifNotExists.accept(tAgentTask); // 补充 + insertTAgentTask(tAgentTask); } return tAgentTask; } + + @Override + public TAgentTask getTAgentTask(String orgCode, String year, String month) + { + Assert.notBlank(orgCode, "查询任务: orgCode为空"); + Assert.notBlank(year, "查询任务: orderYear为空"); + Assert.notBlank(month, "查询任务: orderMonth为空"); + + TAgentTask task = new TAgentTask(); + task.setOrgCode(orgCode) + .setOrderYear(year) + .setOrderMonth(month) + ; + return tAgentTaskMapper.selectTAgentTask(task); + } + }