diff --git a/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/controller/AptJcxxController.java b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/controller/AptJcxxController.java
new file mode 100644
index 0000000..adb2088
--- /dev/null
+++ b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/controller/AptJcxxController.java
@@ -0,0 +1,126 @@
+package com.ruoyi.apt.dispatch.controller;
+
+import java.util.Date;
+import java.util.List;
+import com.ruoyi.apt.common.audit.AptAudit;
+import com.ruoyi.apt.common.page.AptTableDataInfo;
+import com.ruoyi.apt.dispatch.domain.AptCorrectCommand;
+import com.ruoyi.apt.dispatch.domain.AptDutyCommand;
+import com.ruoyi.apt.dispatch.domain.AptDutyCommandResult;
+import com.ruoyi.apt.dispatch.domain.AptJcxxQuery;
+import com.ruoyi.apt.dispatch.service.IAptDutyCommandService;
+import com.ruoyi.apt.dispatch.service.IAptJcxxService;
+import com.ruoyi.apt.framework.web.AptBaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import org.springframework.format.annotation.DateTimeFormat;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * 叫乘信息管理(IT-5 / M3,公寓端/04 表 4-9 接口 1~6)。
+ *
+ *
刻意不提供 {@code PUT /apt/jcxx/{id}}:状态字段只能经
+ * {@code POST /apt/jcxx/{id}/commands} 提交命令,由 {@code apt.duty.state} 落库;
+ * 非状态字段走 {@code /correct} 白名单。
+ *
+ * @author apt-rev01
+ */
+@RestController
+@RequestMapping(value = "/apt/jcxx", produces = "application/json;charset=UTF-8")
+public class AptJcxxController extends AptBaseController
+{
+ private final IAptJcxxService jcxxService;
+ private final IAptDutyCommandService commandService;
+
+ public AptJcxxController(IAptJcxxService jcxxService, IAptDutyCommandService commandService)
+ {
+ this.jcxxService = jcxxService;
+ this.commandService = commandService;
+ }
+
+ /** 表 4-9 #1:在寓/叫乘记录列表 */
+ @PreAuthorize("@ss.hasPermi('apt:jcxx:list')")
+ @AptAudit(module = "DISPATCH", action = "JCXX_LIST")
+ @GetMapping("/list")
+ public AptTableDataInfo list(
+ @RequestParam(required = false) String ryid,
+ @RequestParam(required = false) String rymc,
+ @RequestParam(required = false) String fjh,
+ @RequestParam(required = false) String cc,
+ @RequestParam(required = false) String jlid,
+ @RequestParam(required = false) List ryzt,
+ @RequestParam(required = false) String finishJc,
+ @RequestParam(required = false) String finishLy,
+ @RequestParam(required = false) String stoped,
+ @RequestParam(required = false) String isTempCall,
+ @RequestParam(required = false)
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date jcsjFrom,
+ @RequestParam(required = false)
+ @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date jcsjTo)
+ {
+ AptJcxxQuery query = new AptJcxxQuery();
+ query.setRyid(ryid);
+ query.setRymc(rymc);
+ query.setFjh(fjh);
+ query.setCc(cc);
+ query.setJlid(jlid);
+ query.setRyzt(ryzt);
+ query.setFinishJc(finishJc);
+ query.setFinishLy(finishLy);
+ query.setStoped(stoped);
+ query.setIsTempCall(isTempCall);
+ query.setJcsjFrom(jcsjFrom);
+ query.setJcsjTo(jcsjTo);
+
+ startAptPage();
+ return getAptDataTable(jcxxService.list(query));
+ }
+
+ /** 表 4-9 #6:状态分布(看板) */
+ @PreAuthorize("@ss.hasPermi('apt:jcxx:list')")
+ @GetMapping("/statistics")
+ public AjaxResult statistics(@RequestParam(required = false) String date)
+ {
+ return AjaxResult.success(jcxxService.statistics(date));
+ }
+
+ /** 表 4-9 #2:详情 */
+ @PreAuthorize("@ss.hasPermi('apt:jcxx:query')")
+ @AptAudit(module = "DISPATCH", action = "JCXX_DETAIL")
+ @GetMapping("/{id}")
+ public AjaxResult detail(@PathVariable Long id)
+ {
+ return AjaxResult.success(jcxxService.detail(id));
+ }
+
+ /** 表 4-9 #3:事件时间线(排障) */
+ @PreAuthorize("@ss.hasPermi('apt:jcxx:query')")
+ @GetMapping("/{id}/timeline")
+ public AjaxResult timeline(@PathVariable Long id)
+ {
+ return AjaxResult.success(jcxxService.timeline(id));
+ }
+
+ /** 表 4-9 #4:非状态字段修正(白名单) */
+ @PreAuthorize("@ss.hasPermi('apt:jcxx:correct')")
+ @PostMapping("/{id}/correct")
+ public AjaxResult correct(@PathVariable Long id, @RequestBody AptCorrectCommand command)
+ {
+ return AjaxResult.success(jcxxService.correct(id, command));
+ }
+
+ /** 表 4-9 #5:状态机命令(全部转 duty_manual_action 再由 apt.duty.state 执行) */
+ @PreAuthorize("@ss.hasPermi('apt:jcxx:changeStatus')")
+ @PostMapping("/{id}/commands")
+ public AjaxResult commands(@PathVariable Long id, @RequestBody AptDutyCommand command)
+ {
+ AptDutyCommandResult result = commandService.execute(id, command);
+ return AjaxResult.success(result);
+ }
+}
diff --git a/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptCorrectCommand.java b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptCorrectCommand.java
new file mode 100644
index 0000000..80b734c
--- /dev/null
+++ b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptCorrectCommand.java
@@ -0,0 +1,148 @@
+package com.ruoyi.apt.dispatch.domain;
+
+/**
+ * 非状态字段人工修正(公寓端/04 表 4-9 第 4 个接口)。
+ *
+ * 白名单只有 fjh / jlid / cc / jch / leaveRemark / isTempCall(仅置 1)。
+ * 为让「改 ryzt」明确返回 40001 而不是被静默忽略,状态字段单独声明为
+ * {@code rejected*}:只要请求体带了任一状态字段,直接拒绝。
+ *
+ * @author apt-rev01
+ */
+public class AptCorrectCommand
+{
+ private String commandId;
+ private String reason;
+ private String fjh;
+ private String jlid;
+ private String cc;
+ private String jch;
+ private String leaveRemark;
+ private Boolean isTempCall;
+
+ /** 以下字段不参与写入,仅用于识别越权改状态(40001) */
+ private String ryzt;
+ private String finishJc;
+ private String finishLy;
+ private String stoped;
+
+ public String getCommandId()
+ {
+ return commandId;
+ }
+
+ public void setCommandId(String commandId)
+ {
+ this.commandId = commandId;
+ }
+
+ public String getReason()
+ {
+ return reason;
+ }
+
+ public void setReason(String reason)
+ {
+ this.reason = reason;
+ }
+
+ public String getFjh()
+ {
+ return fjh;
+ }
+
+ public void setFjh(String fjh)
+ {
+ this.fjh = fjh;
+ }
+
+ public String getJlid()
+ {
+ return jlid;
+ }
+
+ public void setJlid(String jlid)
+ {
+ this.jlid = jlid;
+ }
+
+ public String getCc()
+ {
+ return cc;
+ }
+
+ public void setCc(String cc)
+ {
+ this.cc = cc;
+ }
+
+ public String getJch()
+ {
+ return jch;
+ }
+
+ public void setJch(String jch)
+ {
+ this.jch = jch;
+ }
+
+ public String getLeaveRemark()
+ {
+ return leaveRemark;
+ }
+
+ public void setLeaveRemark(String leaveRemark)
+ {
+ this.leaveRemark = leaveRemark;
+ }
+
+ public Boolean getIsTempCall()
+ {
+ return isTempCall;
+ }
+
+ public void setIsTempCall(Boolean isTempCall)
+ {
+ this.isTempCall = isTempCall;
+ }
+
+ public String getRyzt()
+ {
+ return ryzt;
+ }
+
+ public void setRyzt(String ryzt)
+ {
+ this.ryzt = ryzt;
+ }
+
+ public String getFinishJc()
+ {
+ return finishJc;
+ }
+
+ public void setFinishJc(String finishJc)
+ {
+ this.finishJc = finishJc;
+ }
+
+ public String getFinishLy()
+ {
+ return finishLy;
+ }
+
+ public void setFinishLy(String finishLy)
+ {
+ this.finishLy = finishLy;
+ }
+
+ public String getStoped()
+ {
+ return stoped;
+ }
+
+ public void setStoped(String stoped)
+ {
+ this.stoped = stoped;
+ }
+}
diff --git a/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptDutyCommand.java b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptDutyCommand.java
new file mode 100644
index 0000000..603cba2
--- /dev/null
+++ b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptDutyCommand.java
@@ -0,0 +1,58 @@
+package com.ruoyi.apt.dispatch.domain;
+
+/**
+ * 状态机命令请求(公寓端/04 表 4-9 第 5 个接口)。
+ *
+ * command 只允许 STOP / RE_CALL / FORCE_FINISH / MARK_LEAVE / CANCEL;
+ * commandId 是 L2 幂等键,落 duty_manual_action.uk_manual_gyid_action。
+ *
+ * @author apt-rev01
+ */
+public class AptDutyCommand
+{
+ private String commandId;
+ private String command;
+ private String reason;
+ /** MARK_LEAVE 专用:离寓类型,缺省 MANUAL */
+ private String leaveType;
+
+ public String getCommandId()
+ {
+ return commandId;
+ }
+
+ public void setCommandId(String commandId)
+ {
+ this.commandId = commandId;
+ }
+
+ public String getCommand()
+ {
+ return command;
+ }
+
+ public void setCommand(String command)
+ {
+ this.command = command;
+ }
+
+ public String getReason()
+ {
+ return reason;
+ }
+
+ public void setReason(String reason)
+ {
+ this.reason = reason;
+ }
+
+ public String getLeaveType()
+ {
+ return leaveType;
+ }
+
+ public void setLeaveType(String leaveType)
+ {
+ this.leaveType = leaveType;
+ }
+}
diff --git a/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptDutyCommandResult.java b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptDutyCommandResult.java
new file mode 100644
index 0000000..d359b2c
--- /dev/null
+++ b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptDutyCommandResult.java
@@ -0,0 +1,76 @@
+package com.ruoyi.apt.dispatch.domain;
+
+/**
+ * 状态机命令结果(公寓端/04 表 4-9 第 5 个接口出参)。
+ *
+ * @author apt-rev01
+ */
+public class AptDutyCommandResult
+{
+ private String commandId;
+ private String command;
+ private boolean accepted;
+ private boolean duplicated;
+ private String stateAfter;
+ private String actionId;
+
+ public String getCommandId()
+ {
+ return commandId;
+ }
+
+ public void setCommandId(String commandId)
+ {
+ this.commandId = commandId;
+ }
+
+ public String getCommand()
+ {
+ return command;
+ }
+
+ public void setCommand(String command)
+ {
+ this.command = command;
+ }
+
+ public boolean isAccepted()
+ {
+ return accepted;
+ }
+
+ public void setAccepted(boolean accepted)
+ {
+ this.accepted = accepted;
+ }
+
+ public boolean isDuplicated()
+ {
+ return duplicated;
+ }
+
+ public void setDuplicated(boolean duplicated)
+ {
+ this.duplicated = duplicated;
+ }
+
+ public String getStateAfter()
+ {
+ return stateAfter;
+ }
+
+ public void setStateAfter(String stateAfter)
+ {
+ this.stateAfter = stateAfter;
+ }
+
+ public String getActionId()
+ {
+ return actionId;
+ }
+
+ public void setActionId(String actionId)
+ {
+ this.actionId = actionId;
+ }
+}
diff --git a/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptJcxxQuery.java b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptJcxxQuery.java
new file mode 100644
index 0000000..2b2e366
--- /dev/null
+++ b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptJcxxQuery.java
@@ -0,0 +1,145 @@
+package com.ruoyi.apt.dispatch.domain;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 叫乘列表查询条件(公寓端/04 表 4-9 第 1 个接口)。
+ *
+ * @author apt-rev01
+ */
+public class AptJcxxQuery
+{
+ private String ryid;
+ private String rymc;
+ private String fjh;
+ private String cc;
+ private String jlid;
+ private List ryzt;
+ private String finishJc;
+ private String finishLy;
+ private String stoped;
+ private Date jcsjFrom;
+ private Date jcsjTo;
+ private String isTempCall;
+
+ public String getRyid()
+ {
+ return ryid;
+ }
+
+ public void setRyid(String ryid)
+ {
+ this.ryid = ryid;
+ }
+
+ public String getRymc()
+ {
+ return rymc;
+ }
+
+ public void setRymc(String rymc)
+ {
+ this.rymc = rymc;
+ }
+
+ public String getFjh()
+ {
+ return fjh;
+ }
+
+ public void setFjh(String fjh)
+ {
+ this.fjh = fjh;
+ }
+
+ public String getCc()
+ {
+ return cc;
+ }
+
+ public void setCc(String cc)
+ {
+ this.cc = cc;
+ }
+
+ public String getJlid()
+ {
+ return jlid;
+ }
+
+ public void setJlid(String jlid)
+ {
+ this.jlid = jlid;
+ }
+
+ public List getRyzt()
+ {
+ return ryzt;
+ }
+
+ public void setRyzt(List ryzt)
+ {
+ this.ryzt = ryzt;
+ }
+
+ public String getFinishJc()
+ {
+ return finishJc;
+ }
+
+ public void setFinishJc(String finishJc)
+ {
+ this.finishJc = finishJc;
+ }
+
+ public String getFinishLy()
+ {
+ return finishLy;
+ }
+
+ public void setFinishLy(String finishLy)
+ {
+ this.finishLy = finishLy;
+ }
+
+ public String getStoped()
+ {
+ return stoped;
+ }
+
+ public void setStoped(String stoped)
+ {
+ this.stoped = stoped;
+ }
+
+ public Date getJcsjFrom()
+ {
+ return jcsjFrom;
+ }
+
+ public void setJcsjFrom(Date jcsjFrom)
+ {
+ this.jcsjFrom = jcsjFrom;
+ }
+
+ public Date getJcsjTo()
+ {
+ return jcsjTo;
+ }
+
+ public void setJcsjTo(Date jcsjTo)
+ {
+ this.jcsjTo = jcsjTo;
+ }
+
+ public String getIsTempCall()
+ {
+ return isTempCall;
+ }
+
+ public void setIsTempCall(String isTempCall)
+ {
+ this.isTempCall = isTempCall;
+ }
+}
diff --git a/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptStateSnapshot.java b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptStateSnapshot.java
new file mode 100644
index 0000000..1eed01f
--- /dev/null
+++ b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/domain/AptStateSnapshot.java
@@ -0,0 +1,104 @@
+package com.ruoyi.apt.dispatch.domain;
+
+/**
+ * gy_jcxx 状态快照(只读,用于命令前置校验与结果去重判定)。
+ *
+ * @author apt-rev01
+ */
+public class AptStateSnapshot
+{
+ private Long id;
+ private String jcid;
+ private String ryzt;
+ private String finishJc;
+ private String finishLy;
+ private String stoped;
+ private String callMode;
+ private Long bizVersion;
+
+ /** 终态判定:已完成或已离寓,任何迟到结果都不再回写(表 3-10 保护语义 1/2) */
+ public boolean isTerminal()
+ {
+ return "1".equals(finishJc) || "1".equals(finishLy);
+ }
+
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public String getJcid()
+ {
+ return jcid;
+ }
+
+ public void setJcid(String jcid)
+ {
+ this.jcid = jcid;
+ }
+
+ public String getRyzt()
+ {
+ return ryzt;
+ }
+
+ public void setRyzt(String ryzt)
+ {
+ this.ryzt = ryzt;
+ }
+
+ public String getFinishJc()
+ {
+ return finishJc;
+ }
+
+ public void setFinishJc(String finishJc)
+ {
+ this.finishJc = finishJc;
+ }
+
+ public String getFinishLy()
+ {
+ return finishLy;
+ }
+
+ public void setFinishLy(String finishLy)
+ {
+ this.finishLy = finishLy;
+ }
+
+ public String getStoped()
+ {
+ return stoped;
+ }
+
+ public void setStoped(String stoped)
+ {
+ this.stoped = stoped;
+ }
+
+ public String getCallMode()
+ {
+ return callMode;
+ }
+
+ public void setCallMode(String callMode)
+ {
+ this.callMode = callMode;
+ }
+
+ public Long getBizVersion()
+ {
+ return bizVersion;
+ }
+
+ public void setBizVersion(Long bizVersion)
+ {
+ this.bizVersion = bizVersion;
+ }
+}
diff --git a/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/mapper/AptDutyStateMapper.java b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/mapper/AptDutyStateMapper.java
new file mode 100644
index 0000000..76fae0c
--- /dev/null
+++ b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/mapper/AptDutyStateMapper.java
@@ -0,0 +1,57 @@
+package com.ruoyi.apt.dispatch.mapper;
+
+import java.util.List;
+import com.ruoyi.apt.dispatch.domain.AptStateSnapshot;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * {@code apt.duty.state} 唯一写入口的数据访问(公寓端/03 表 3-10)。
+ *
+ * 硬约束:全仓 `UPDATE gy_jcxx SET ryzt / finish_jc / finish_ly / stoped`
+ * 只允许出现在本 Mapper 的 XML({@code AptDutyStateMapper.xml}),
+ * 每条 UPDATE 必须同时带 {@code gyid}、{@code jcid} 与期望态条件,
+ * 由 {@code AptDutyStateServiceImpl} 独占调用;管理端只提交命令。
+ *
+ * @author apt-rev01
+ */
+public interface AptDutyStateMapper
+{
+ /** 状态快照(命令前置校验 + 结果去重判定) */
+ AptStateSnapshot selectSnapshot(@Param("gyid") String gyid, @Param("jcid") String jcid);
+
+ /** 0 待叫乘 -> 1 叫乘中(SIP 发起呼叫 / 人工临时叫乘) */
+ int updateCallStart(@Param("gyid") String gyid, @Param("jcid") String jcid,
+ @Param("tempCall") boolean tempCall);
+
+ /** -> 3 已应答待离寓:SIP ConfbridgeJoin 或平板 ANSWERED+VERIFIED */
+ int updateAnswered(@Param("gyid") String gyid, @Param("jcid") String jcid,
+ @Param("fromStates") List fromStates);
+
+ /** 1 叫乘中 -> 2 叫乘报警(30s 无入会 / 平板 NO_ANSWER / FAILED) */
+ int updateCallFailed(@Param("gyid") String gyid, @Param("jcid") String jcid);
+
+ /** 人工「停止叫乘」:ryzt 保持,stoped=1 */
+ int updateStop(@Param("gyid") String gyid, @Param("jcid") String jcid);
+
+ /** 人工「复叫」:清 stoped、ryzt->1、记 fjsj_s */
+ int updateRecall(@Param("gyid") String gyid, @Param("jcid") String jcid);
+
+ /** 人工「强制结束」:finish_jc=1,不动 finish_ly(不置离寓) */
+ int updateForceFinish(@Param("gyid") String gyid, @Param("jcid") String jcid);
+
+ /** 人工「登记离寓」:finish_ly=1 + sjlysj */
+ int updateMarkLeave(@Param("gyid") String gyid, @Param("jcid") String jcid,
+ @Param("leaveType") String leaveType, @Param("eventId") String eventId,
+ @Param("remark") String remark);
+
+ /** 人工「取消未开始的叫乘」:ryzt=0 保持,stoped=1 */
+ int updateCancel(@Param("gyid") String gyid, @Param("jcid") String jcid);
+
+ /** 复叫新增一次会话(表 3-10:RE_CALL 生成新会话) */
+ int insertCallSession(@Param("gyid") String gyid, @Param("sessionId") String sessionId,
+ @Param("jcid") String jcid, @Param("callMode") String callMode);
+
+ /** 登记离寓写 gygl_ly_event(leave_type=MANUAL 等),由 gy_jcxx 行带出人员房间 */
+ int insertLeaveEvent(@Param("gyid") String gyid, @Param("eventId") String eventId,
+ @Param("jcid") String jcid, @Param("leaveType") String leaveType);
+}
diff --git a/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/mapper/AptJcxxMapper.java b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/mapper/AptJcxxMapper.java
new file mode 100644
index 0000000..450cf23
--- /dev/null
+++ b/dev/RuoYi-Vue-master/ruoyi-apt/src/main/java/com/ruoyi/apt/dispatch/mapper/AptJcxxMapper.java
@@ -0,0 +1,82 @@
+package com.ruoyi.apt.dispatch.mapper;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import com.ruoyi.apt.dispatch.domain.AptCorrectCommand;
+import com.ruoyi.apt.dispatch.domain.AptJcxxQuery;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 叫乘信息读侧 + 白名单修正 + 命令流水(IT-5 / M3)。
+ *
+ * 本 Mapper 只写 {@code duty_manual_action}、{@code duty_operation_log}
+ * 关联的非状态字段与 {@code gy_jcxx} 白名单列(fjh/jlid/cc/jch/leave_remark/is_temp_call),
+ * 不写 ryzt / finish_jc / finish_ly / stoped(那些只在 AptDutyStateMapper)。
+ *
+ * @author apt-rev01
+ */
+public interface AptJcxxMapper
+{
+ List