diff --git a/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsMapTraceController.java b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsMapTraceController.java
new file mode 100644
index 000000000..ab0396117
--- /dev/null
+++ b/emis-biz-web/src/main/java/com/xdadan/erp/web/emis/EmisTmsMapTraceController.java
@@ -0,0 +1,134 @@
+
+/**
+ * @Project: emis
+ * @Title: EmisTmsMapTraceController.java
+ * @author linfso
+ * @date 2025-08-13 04:50:50
+ * @Copyright: ShangHai Duta 2022 All rights reserved.
+ * @version v1.0
+ * @Description:
可视化物流轨迹 控制器
+ */
+
+package com.xdadan.erp.web.emis;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import com.xdadan.erp.common.annotation.Log;
+import com.xdadan.erp.common.core.controller.BaseController;
+import com.xdadan.erp.common.core.domain.AjaxResult;
+import com.xdadan.erp.common.core.page.TableDataInfo;
+import com.xdadan.erp.common.enums.BusinessType;
+import com.xdadan.erp.common.utils.StringUtils;
+import com.xdadan.erp.common.utils.poi.ExcelUtil;
+
+import com.xdadan.erp.emis.domain.EmisTmsMapTrace;
+import com.xdadan.erp.emis.service.IEmisTmsMapTraceService;
+
+/**
+ * 可视化物流轨迹Controller
+ *
+ * @author linfso
+ * @date 2025-08-13 04:50:50
+ */
+@RestController
+@RequestMapping("/emis/emisTmsMapTrace")
+public class EmisTmsMapTraceController extends BaseController
+{
+ @Autowired
+ private IEmisTmsMapTraceService emisTmsMapTraceService;
+
+ /**
+ * 查询可视化物流轨迹列表
+ */
+ @PreAuthorize("@ss.hasPermi('emis:emisTmsMapTrace:list')")
+ @GetMapping("/list")
+ public TableDataInfo list(EmisTmsMapTrace emisTmsMapTrace)
+ {
+ startPage();
+ List list = emisTmsMapTraceService.selectEmisTmsMapTraceList(emisTmsMapTrace);
+ return getDataTable(list);
+ }
+
+
+ /**
+ * 检查是否重复
+ *
+ * @param emisTmsMapTrace
+ * @return 数量
+ */
+ @PreAuthorize("@ss.hasPermi('emis:emisTmsMapTrace:list')")
+ @GetMapping("/checkUnique")
+ public AjaxResult checkUnique(EmisTmsMapTrace emisTmsMapTrace)
+ {
+ int cnt=emisTmsMapTraceService.checkUnique(emisTmsMapTrace);
+ return AjaxResult.success("检查成功",cnt);
+ }
+
+
+ /**
+ * 导出可视化物流轨迹列表
+ */
+ @PreAuthorize("@ss.hasPermi('emis:emisTmsMapTrace:export')")
+ @Log(title = "可视化物流轨迹", businessType = BusinessType.EXPORT)
+ @PostMapping("/export")
+ public void export(HttpServletResponse response, EmisTmsMapTrace emisTmsMapTrace)
+ {
+ List list = emisTmsMapTraceService.selectEmisTmsMapTraceList(emisTmsMapTrace);
+ ExcelUtil util = new ExcelUtil(EmisTmsMapTrace.class);
+ util.exportExcel(response, list, "可视化物流轨迹数据");
+ }
+
+ /**
+ * 获取可视化物流轨迹详细信息
+ */
+ @PreAuthorize("@ss.hasPermi('emis:emisTmsMapTrace:query')")
+ @GetMapping(value = "/{id}")
+ public AjaxResult getInfo(@PathVariable("id") Long id)
+ {
+ return AjaxResult.success(emisTmsMapTraceService.selectEmisTmsMapTraceById(id));
+ }
+
+ /**
+ * 新增可视化物流轨迹
+ */
+ @PreAuthorize("@ss.hasPermi('emis:emisTmsMapTrace:add')")
+ @Log(title = "可视化物流轨迹", businessType = BusinessType.INSERT)
+ @PostMapping
+ public AjaxResult add(@RequestBody EmisTmsMapTrace emisTmsMapTrace)
+ {
+ return toAjax(emisTmsMapTraceService.insertEmisTmsMapTrace(emisTmsMapTrace));
+ }
+
+ /**
+ * 修改可视化物流轨迹
+ */
+ @PreAuthorize("@ss.hasPermi('emis:emisTmsMapTrace:edit')")
+ @Log(title = "可视化物流轨迹", businessType = BusinessType.UPDATE)
+ @PutMapping
+ public AjaxResult edit(@RequestBody EmisTmsMapTrace emisTmsMapTrace)
+ {
+ return toAjax(emisTmsMapTraceService.updateEmisTmsMapTrace(emisTmsMapTrace));
+ }
+
+ /**
+ * 删除可视化物流轨迹
+ */
+ @PreAuthorize("@ss.hasPermi('emis:emisTmsMapTrace:remove')")
+ @Log(title = "可视化物流轨迹", businessType = BusinessType.DELETE)
+ @DeleteMapping("/{ids}")
+ public AjaxResult remove(@PathVariable Long[] ids)
+ {
+ return toAjax(emisTmsMapTraceService.deleteEmisTmsMapTraceByIds(ids));
+ }
+}
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsMapTrace.java b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsMapTrace.java
new file mode 100644
index 000000000..4ad02ed10
--- /dev/null
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/domain/EmisTmsMapTrace.java
@@ -0,0 +1,52 @@
+/**
+ * @Project: emis
+ * @Title: EmisTmsMapTrace.java
+ * @author linfso
+ * @date 2025-08-13 04:50:50
+ * @Copyright: ShangHai Duta 2022 All rights reserved.
+ * @version v1.0
+ * @Description: 可视化物流轨迹 实体类
+ */
+
+package com.xdadan.erp.emis.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.xdadan.erp.common.annotation.Excel;
+import com.xdadan.erp.common.core.domain.BaseEntity;
+import com.xdadan.erp.common.core.domain.TreeEntity;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import lombok.Data;
+
+
+/**
+ * @ClassName EmisTmsMapTrace
+ * @Description 可视化物流轨迹
+ * @author linfso
+ * @date 2025-08-13 04:50:50
+ */
+ @Data
+public class EmisTmsMapTrace extends BaseEntity
+{
+ private static final long serialVersionUID = 1L;
+
+ /* id */
+ private Long id;
+ /* 单号号或者批次号 */
+ private String orderNo;
+ /* 设备号 */
+ private String deviceNo;
+ /* 1-运单 2-批次 */
+ private String traceType;
+ /* 跟进日期 */
+ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+ private Date lastTraceDate;
+ /* 50-签收 */
+ private String lastTraceStatus;
+ /* 最后地点 */
+ private String lastLocationInfo;
+
+}
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsMapTraceMapper.java b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsMapTraceMapper.java
new file mode 100644
index 000000000..36f3a50e1
--- /dev/null
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/mapper/EmisTmsMapTraceMapper.java
@@ -0,0 +1,80 @@
+/**
+ * @Project: emis
+ * @Title: EmisTmsMapTraceMapper.java
+ * @author linfso
+ * @date 2025-08-13 04:50:50
+ * @Copyright: ShangHai Doitinfo 2022 All rights reserved.
+ * @version v1.0
+ * @Description: 可视化物流轨迹 Mapper 接口
+ * Warning : This file is generate by ai tools,don't edit!!!
+ */
+package com.xdadan.erp.emis.mapper;
+
+import java.util.List;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xdadan.erp.emis.domain.EmisTmsMapTrace;
+/**
+ * @ClassName EmisTmsMapTraceMapper
+ * @Description 可视化物流轨迹 Mapper 接口
+ * @author linfso
+ * @date 2025-08-13 04:50:50
+ */
+public interface EmisTmsMapTraceMapper extends BaseMapper
+{
+ /**
+ * 主键查询
+ * @param id
+ * @return
+ */
+ public EmisTmsMapTrace selectEmisTmsMapTraceById(Long id);
+
+ /**
+ * 查询列表
+ *
+ * @param emisTmsMapTrace
+ * @return 集合
+ */
+ public List selectEmisTmsMapTraceList(EmisTmsMapTrace emisTmsMapTrace);
+
+
+ /**
+ * 检查是否重复
+ *
+ * @param emisTmsMapTrace
+ * @return 数量
+ */
+ public int checkUnique(EmisTmsMapTrace emisTmsMapTrace);
+
+
+ /**
+ * 新增
+ *
+ * @param emisTmsMapTrace
+ * @return
+ */
+ public int insertEmisTmsMapTrace(EmisTmsMapTrace emisTmsMapTrace);
+
+ /**
+ * 修改
+ *
+ * @param emisTmsMapTrace
+ * @return
+ */
+ public int updateEmisTmsMapTrace(EmisTmsMapTrace emisTmsMapTrace);
+
+ /**
+ * 删除
+ *
+ * @param id 主键
+ * @return 结果
+ */
+ public int deleteEmisTmsMapTraceById(Long id);
+
+ /**
+ * 批量删除
+ *
+ * @param ids 需要删除的数据主键集合
+ * @return 结果
+ */
+ public int deleteEmisTmsMapTraceByIds(Long[] ids);
+}
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsMapTraceService.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsMapTraceService.java
new file mode 100644
index 000000000..49da4275c
--- /dev/null
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/IEmisTmsMapTraceService.java
@@ -0,0 +1,78 @@
+ /**
+ * @Project: emis
+ * @Title: EmisTmsMapTraceService.java
+ * @author linfso
+ * @date 2025-08-13 04:50:50
+ * @Copyright: ShangHai Duta 2022 All rights reserved.
+ * @version v1.0
+ * @Description: 可视化物流轨迹 服务类接口
+ */
+package com.xdadan.erp.emis.service;
+
+import java.util.List;
+import com.xdadan.erp.emis.domain.EmisTmsMapTrace;
+
+/**
+ * @ClassName EmisTmsMapTraceService
+ * @Description 可视化物流轨迹
+ * @author linfso
+ * @date 2025-08-13 04:50:50
+ */
+public interface IEmisTmsMapTraceService
+{
+ /**
+ * 主键查询
+ * @param id
+ * @return
+ */
+ public EmisTmsMapTrace selectEmisTmsMapTraceById(Long id);
+
+ /**
+ * 查询可视化物流轨迹列表
+ *
+ * @param emisTmsMapTrace 可视化物流轨迹
+ * @return 可视化物流轨迹集合
+ */
+ public List selectEmisTmsMapTraceList(EmisTmsMapTrace emisTmsMapTrace);
+
+
+ /**
+ * 检查是否重复
+ *
+ * @param emisTmsMapTrace
+ * @return 数量
+ */
+ public int checkUnique(EmisTmsMapTrace emisTmsMapTrace);
+
+ /**
+ * 新增可视化物流轨迹
+ *
+ * @param emisTmsMapTrace 可视化物流轨迹
+ * @return 结果
+ */
+ public int insertEmisTmsMapTrace(EmisTmsMapTrace emisTmsMapTrace);
+
+ /**
+ * 修改可视化物流轨迹
+ *
+ * @param emisTmsMapTrace 可视化物流轨迹
+ * @return 结果
+ */
+ public int updateEmisTmsMapTrace(EmisTmsMapTrace emisTmsMapTrace);
+
+ /**
+ * 批量删除可视化物流轨迹
+ *
+ * @param ids 需要删除的可视化物流轨迹主键集合
+ * @return 结果
+ */
+ public int deleteEmisTmsMapTraceByIds(Long[] ids);
+
+ /**
+ * 删除可视化物流轨迹信息
+ *
+ * @param id 可视化物流轨迹主键
+ * @return 结果
+ */
+ public int deleteEmisTmsMapTraceById(Long id);
+}
diff --git a/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsMapTraceServiceImpl.java b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsMapTraceServiceImpl.java
new file mode 100644
index 000000000..ce826e90e
--- /dev/null
+++ b/emis-biz/src/main/java/com/xdadan/erp/emis/service/impl/EmisTmsMapTraceServiceImpl.java
@@ -0,0 +1,117 @@
+ /**
+ * @Project: emis
+ * @Title: EmisTmsMapTraceServiceImpl.java
+ * @author linfso
+ * @date 2025-08-13 04:50:50
+ * @Copyright: ShangHai Duta 2022 All rights reserved.
+ * @version v1.0
+ * @Description: 可视化物流轨迹 实体类
+ */
+
+package com.xdadan.erp.emis.service.impl;
+
+import java.util.List;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.xdadan.erp.emis.domain.EmisTmsMapTrace;
+import com.xdadan.erp.emis.mapper.EmisTmsMapTraceMapper;
+import com.xdadan.erp.emis.service.IEmisTmsMapTraceService;
+
+/**
+ * 可视化物流轨迹Service业务层处理
+ *
+ * @author linfso
+ * @date 2025-08-13 04:50:50
+ */
+@Service
+public class EmisTmsMapTraceServiceImpl implements IEmisTmsMapTraceService
+{
+ @Autowired
+ private EmisTmsMapTraceMapper emisTmsMapTraceMapper;
+
+ /**
+ * 查询可视化物流轨迹
+ *
+ * @param id 可视化物流轨迹主键
+ * @return 可视化物流轨迹
+ */
+ @Override
+ public EmisTmsMapTrace selectEmisTmsMapTraceById(Long id)
+ {
+ return emisTmsMapTraceMapper.selectEmisTmsMapTraceById(id);
+ }
+
+
+ /**
+ * 查询可视化物流轨迹列表
+ *
+ * @param emisTmsMapTrace 可视化物流轨迹
+ * @return 可视化物流轨迹
+ */
+ @Override
+ public List selectEmisTmsMapTraceList(EmisTmsMapTrace emisTmsMapTrace)
+ {
+ return emisTmsMapTraceMapper.selectEmisTmsMapTraceList(emisTmsMapTrace);
+ }
+
+ /**
+ * 检查是否重复
+ *
+ * @param emisTmsMapTrace
+ * @return 数量
+ */
+ @Override
+ public int checkUnique(EmisTmsMapTrace emisTmsMapTrace)
+ {
+ return emisTmsMapTraceMapper.checkUnique(emisTmsMapTrace);
+ }
+
+ /**
+ * 新增可视化物流轨迹
+ *
+ * @param emisTmsMapTrace 可视化物流轨迹
+ * @return 结果
+ */
+ @Override
+ public int insertEmisTmsMapTrace(EmisTmsMapTrace emisTmsMapTrace)
+ {
+ return emisTmsMapTraceMapper.insertEmisTmsMapTrace(emisTmsMapTrace);
+ }
+
+ /**
+ * 修改可视化物流轨迹
+ *
+ * @param emisTmsMapTrace 可视化物流轨迹
+ * @return 结果
+ */
+ @Override
+ public int updateEmisTmsMapTrace(EmisTmsMapTrace emisTmsMapTrace)
+ {
+ return emisTmsMapTraceMapper.updateEmisTmsMapTrace(emisTmsMapTrace);
+ }
+
+ /**
+ * 批量删除可视化物流轨迹
+ *
+ * @param ids 需要删除的可视化物流轨迹主键
+ * @return 结果
+ */
+ @Override
+ public int deleteEmisTmsMapTraceByIds(Long[] ids)
+ {
+ return emisTmsMapTraceMapper.deleteEmisTmsMapTraceByIds(ids);
+ }
+
+ /**
+ * 删除可视化物流轨迹信息
+ *
+ * @param id 可视化物流轨迹主键
+ * @return 结果
+ */
+ @Override
+ public int deleteEmisTmsMapTraceById(Long id)
+ {
+ return emisTmsMapTraceMapper.deleteEmisTmsMapTraceById(id);
+ }
+
+}
diff --git a/emis-biz/src/main/resources/mapper/EmisTmsMapTraceMapper.xml b/emis-biz/src/main/resources/mapper/EmisTmsMapTraceMapper.xml
new file mode 100644
index 000000000..ee38d0f3b
--- /dev/null
+++ b/emis-biz/src/main/resources/mapper/EmisTmsMapTraceMapper.xml
@@ -0,0 +1,140 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ select id, order_no, device_no, trace_type, last_trace_date, last_trace_status, last_location_info, remark, del_flag, create_by, create_time, update_by, update_time, create_site, update_site from emis_tms_map_trace
+
+
+
+
+
+
+
+
+
+ insert into emis_tms_map_trace
+
+ id,
+ order_no,
+ device_no,
+ trace_type,
+ last_trace_date,
+ last_trace_status,
+ last_location_info,
+ remark,
+ del_flag,
+ create_by,
+ create_time,
+ update_by,
+ update_time,
+ create_site,
+ update_site,
+
+
+ #{id},
+ #{orderNo},
+ #{deviceNo},
+ #{traceType},
+ #{lastTraceDate},
+ #{lastTraceStatus},
+ #{lastLocationInfo},
+ #{remark},
+ #{delFlag},
+ #{createBy},
+ #{createTime},
+ #{updateBy},
+ #{updateTime},
+ #{createSite},
+ #{updateSite},
+
+
+
+
+ update emis_tms_map_trace
+
+ order_no = #{orderNo},
+ device_no = #{deviceNo},
+ trace_type = #{traceType},
+ last_trace_date = #{lastTraceDate},
+ last_trace_status = #{lastTraceStatus},
+ last_location_info = #{lastLocationInfo},
+ remark = #{remark},
+ del_flag = #{delFlag},
+ create_by = #{createBy},
+ create_time = #{createTime},
+ update_by = #{updateBy},
+ update_time = #{updateTime},
+ create_site = #{createSite},
+ update_site = #{updateSite},
+
+ where id = #{id}
+
+
+
+ delete from emis_tms_map_trace where id = #{id}
+
+
+
+ delete from emis_tms_map_trace where id in
+
+ #{id}
+
+
+
\ No newline at end of file