Quellcode durchsuchen

初始化项目

LIJIAN vor 1 Monat
Ursprung
Commit
46e9d99ca4

+ 44 - 0
ema-admin/src/main/java/com/ema/admin/modules/assets/vo/AssetsInfoQueryVo.java

@@ -0,0 +1,44 @@
+package com.ema.admin.modules.assets.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 资产管理查询条件VO
+ *
+ * @author LIJIAN
+ * @since 2026-05-13
+ */
+@Data
+@ApiModel("资产管理查询参数")
+public class AssetsInfoQueryVo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @ApiModelProperty("资产管理部门")
+    private String deptName;
+
+    @ApiModelProperty("资产编码")
+    private String assetCode;
+
+    @ApiModelProperty("资产类型")
+    private String assetType;
+
+    @ApiModelProperty("品牌")
+    private String brand;
+
+    @ApiModelProperty("型号")
+    private String model;
+
+    @ApiModelProperty("盘点状态")
+    private String invstkStatus;
+
+    @ApiModelProperty("页码")
+    private Integer pageNumber = 1;
+
+    @ApiModelProperty("每页条数")
+    private Integer pageSize = 10;
+}

+ 176 - 0
ema-admin/src/main/resources/web/pages/assets/assets_form.html

@@ -0,0 +1,176 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>资产表单</title>
+    <link rel="stylesheet" href="../../lib/layui/css/layui.css">
+    <style>
+        body { padding: 20px; }
+        .required { color: #ff5722; }
+        .layui-form-item { margin-bottom: 20px; }
+    </style>
+</head>
+<body>
+    <form class="layui-form" lay-filter="assetsForm" id="assetsForm">
+        <input type="hidden" name="id" id="assetsId">
+        
+        <div class="layui-form-item">
+            <label class="layui-form-label"><span class="required">*</span>资产管理部门</label>
+            <div class="layui-input-block">
+                <input type="text" name="deptName" lay-verify="required" placeholder="请输入资产管理部门" class="layui-input" style="width: 300px;">
+            </div>
+        </div>
+        
+        <div class="layui-form-item">
+            <label class="layui-form-label"><span class="required">*</span>资产编码</label>
+            <div class="layui-input-block">
+                <input type="text" name="assetCode" lay-verify="required" placeholder="请输入资产编码" class="layui-input" style="width: 300px;">
+            </div>
+        </div>
+        
+        <div class="layui-form-item">
+            <label class="layui-form-label"><span class="required">*</span>资产类型</label>
+            <div class="layui-input-block">
+                <input type="text" name="assetType" lay-verify="required" placeholder="请输入资产类型" class="layui-input" style="width: 200px;">
+            </div>
+        </div>
+        
+        <div class="layui-form-item">
+            <label class="layui-form-label">品牌</label>
+            <div class="layui-input-block">
+                <input type="text" name="brand" placeholder="请输入品牌" class="layui-input" style="width: 200px;">
+            </div>
+        </div>
+        
+        <div class="layui-form-item">
+            <label class="layui-form-label">型号</label>
+            <div class="layui-input-block">
+                <input type="text" name="model" placeholder="请输入型号" class="layui-input" style="width: 200px;">
+            </div>
+        </div>
+        
+        <div class="layui-form-item">
+            <label class="layui-form-label">购买日期</label>
+            <div class="layui-input-block">
+                <input type="text" name="purchaseDate" id="purchaseDate" placeholder="请选择购买日期" class="layui-input" style="width: 200px;">
+            </div>
+        </div>
+        
+        <div class="layui-form-item">
+            <label class="layui-form-label">采购价值</label>
+            <div class="layui-input-block">
+                <input type="number" name="purchaseValue" placeholder="请输入采购价值" class="layui-input" style="width: 200px;">
+            </div>
+        </div>
+        
+        <div class="layui-form-item">
+            <label class="layui-form-label">盘点状态</label>
+            <div class="layui-input-block">
+                <select name="invstkStatus" class="layui-select" style="width: 200px;">
+                    <option value="0">未盘点</option>
+                    <option value="1">已盘点</option>
+                </select>
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">最后盘点时间</label>
+            <div class="layui-input-block">
+                <input type="text" name="lastInvstkTime" id="lastInvstkTime" placeholder="请选择最后盘点时间" class="layui-input" style="width: 200px;">
+            </div>
+        </div>
+        
+        <div class="layui-form-item">
+            <label class="layui-form-label">备注</label>
+            <div class="layui-input-block">
+                <textarea name="remark" placeholder="请输入备注" class="layui-textarea" style="width: 350px; height: 80px;"></textarea>
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">扩展字段1</label>
+            <div class="layui-input-block">
+                <input type="text" name="attribute1" placeholder="请输入扩展字段1" class="layui-input" style="width: 200px;">
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">扩展字段2</label>
+            <div class="layui-input-block">
+                <input type="text" name="attribute2" placeholder="请输入扩展字段2" class="layui-input" style="width: 200px;">
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">扩展字段3</label>
+            <div class="layui-input-block">
+                <input type="text" name="attribute3" placeholder="请输入扩展字段3" class="layui-input" style="width: 200px;">
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <label class="layui-form-label">扩展字段4</label>
+            <div class="layui-input-block">
+                <input type="text" name="attribute4" placeholder="请输入扩展字段4" class="layui-input" style="width: 200px;">
+            </div>
+        </div>
+
+        <div class="layui-form-item">
+            <div class="layui-input-block">
+                <button type="submit" class="layui-btn" lay-submit lay-filter="submitForm">提交</button>
+                <button type="reset" class="layui-btn layui-btn-primary">重置</button>
+            </div>
+        </div>
+    </form>
+    
+    <script src="../../lib/jquery.min.js"></script>
+    <script src="../../lib/layui/layui.js"></script>
+    <script src="../../js/config.js"></script>
+    <script src="../../js/common.js"></script>
+    <script>
+        layui.use(['form', 'laydate'], function() {
+            var form = layui.form;
+            var laydate = layui.laydate;
+            
+            // 日期选择器
+            laydate.render({
+                elem: '#purchaseDate'
+            });
+
+            // 最后盘点时间日期选择器
+            laydate.render({
+                elem: '#lastInvstkTime',
+                type: 'datetime'
+            });
+            
+            var id = Common.getQueryString('id');
+            var isEdit = !!id;
+            
+            if (isEdit) {
+                Common.get(Config.api.assets.getInfo + '/' + id, function(res) {
+                    if (res.code === 200) {
+                        form.val('assetsForm', res.data);
+                    }
+                });
+            }
+            
+            form.on('submit(submitForm)', function(data) {
+                Common.ajax({
+                    url: isEdit ? Config.api.assets.update : Config.api.assets.save,
+                    type: isEdit ? 'PUT' : 'POST',
+                    data: data.field,
+                    success: function(res) {
+                        Common.success(isEdit ? '修改成功' : '添加成功', function() {
+                            var index = parent.layer.getFrameIndex(window.name);
+                            parent.layer.close(index);
+                            parent.layui.table.reload('tableList');
+                        });
+                    }
+                });
+                return false;
+            });
+        });
+    </script>
+</body>
+</html>

+ 153 - 0
ema-admin/src/main/resources/web/pages/assets/assets_list.html

@@ -0,0 +1,153 @@
+<!DOCTYPE html>
+<html lang="zh-CN">
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>资产管理</title>
+    <link rel="stylesheet" href="../../lib/layui/css/layui.css">
+    <style>
+        body { padding: 15px; }
+        .search-form { margin-bottom: 15px; padding: 15px; background: #fff; border-radius: 4px; }
+        .table-toolbar { margin-bottom: 10px; }
+    </style>
+</head>
+<body>
+    <div class="search-form">
+        <form class="layui-form layui-form-pane" lay-filter="searchForm">
+            <div class="layui-form-item">
+                <div class="layui-inline">
+                    <label class="layui-form-label">资产管理部门</label>
+                    <div class="layui-input-inline">
+                        <input type="text" name="deptName" placeholder="请输入资产管理部门" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-inline">
+                    <label class="layui-form-label">资产编码</label>
+                    <div class="layui-input-inline">
+                        <input type="text" name="assetCode" placeholder="请输入资产编码" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-inline">
+                    <label class="layui-form-label">资产类型</label>
+                    <div class="layui-input-inline">
+                        <input type="text" name="assetType" placeholder="请输入资产类型" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-inline">
+                    <label class="layui-form-label">品牌</label>
+                    <div class="layui-input-inline">
+                        <input type="text" name="brand" placeholder="请输入品牌" class="layui-input">
+                    </div>
+                </div>
+                <div class="layui-inline">
+                    <label class="layui-form-label">盘点状态</label>
+                    <div class="layui-input-inline">
+                        <select name="invstkStatus" class="layui-select">
+                            <option value="">全部</option>
+                            <option value="0">未盘点</option>
+                            <option value="1">已盘点</option>
+                        </select>
+                    </div>
+                </div>
+                <div class="layui-inline">
+                    <button type="button" class="layui-btn" id="btnSearch"><i class="layui-icon layui-icon-search"></i> 搜索</button>
+                    <button type="reset" class="layui-btn layui-btn-primary">重置</button>
+                </div>
+            </div>
+        </form>
+    </div>
+    
+    <div class="table-toolbar">
+        <button class="layui-btn layui-btn-sm" id="btnAdd"><i class="layui-icon layui-icon-add-1"></i> 添加</button>
+    </div>
+    
+    <table id="tableList" lay-filter="tableList"></table>
+    
+    <script type="text/html" id="toolbar">
+        <a class="layui-btn layui-btn-xs" lay-event="edit"><i class="layui-icon layui-icon-edit"></i> 编辑</a>
+        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i> 删除</a>
+    </script>
+    
+    <script type="text/html" id="invstkStatusTpl">
+        {{# if(d.invstkStatus === '1') { }}
+            <span class="layui-badge layui-bg-green">已盘点</span>
+        {{# } else { }}
+            <span class="layui-badge layui-bg-gray">未盘点</span>
+        {{# } }}
+    </script>
+    
+    <script type="text/html" id="purchaseValueTpl">
+        {{# if(d.purchaseValue) { }}
+            ¥{{d.purchaseValue}}
+        {{# } else { }}
+            -
+        {{# } }}
+    </script>
+    
+    <script src="../../lib/jquery.min.js"></script>
+    <script src="../../lib/layui/layui.js"></script>
+    <script src="../../js/config.js"></script>
+    <script src="../../js/common.js"></script>
+    <script>
+        layui.use(['table', 'layer', 'form'], function() {
+            var table = layui.table;
+            var layer = layui.layer;
+            var form = layui.form;
+            
+            var tableIns = TableRender.init({
+                elem: '#tableList',
+                url: Config.api.assets.page,
+                cols: [[
+                    { field: 'deptName', title: '资产管理部门', width: 150 },
+                    { field: 'assetCode', title: '资产编码', width: 150 },
+                    { field: 'assetType', title: '资产类型', width: 120 },
+                    { field: 'brand', title: '品牌', width: 100 },
+                    { field: 'model', title: '型号', width: 120 },
+                    { field: 'purchaseDate', title: '购买日期', width: 120 },
+                    { field: 'purchaseValue', title: '采购价值', width: 120, templet: '#purchaseValueTpl' },
+                    { field: 'invstkStatus', title: '盘点状态', width: 100, templet: '#invstkStatusTpl' },
+                    { field: 'lastInvstkTime', title: '最后盘点时间', width: 170, templet: function(d) { return d.lastInvstkTime ? Common.formatDate(d.lastInvstkTime) : '-'; } },
+                    { field: 'createTime', title: '创建时间', width: 170, templet: function(d) { return Common.formatDate(d.createTime); } },
+                    { fixed: 'right', title: '操作', width: 200, align: 'center', toolbar: '#toolbar' }
+                ]]
+            });
+            
+            $('#btnSearch').click(function() {
+                table.reload('tableList', {
+                    where: form.val('searchForm'),
+                    page: { curr: 1 }
+                });
+            });
+            
+            $('#btnAdd').click(function() {
+                Common.open({
+                    title: '添加资产',
+                    area: ['650px', '550px'],
+                    content: 'assets_form.html'
+                });
+            });
+            
+            table.on('tool(tableList)', function(obj) {
+                var data = obj.data;
+                var event = obj.event;
+                
+                if (event === 'edit') {
+                    Common.open({
+                        title: '编辑资产',
+                        area: ['650px', '550px'],
+                        content: 'assets_form.html?id=' + data.id
+                    });
+                } else if (event === 'del') {
+                    Common.confirm('确定要删除资产 【' + data.assetCode + '】 吗?', function() {
+                        Common.del(Config.api.assets.remove + '/' + data.id, function(res) {
+                            Common.success('删除成功', function() {
+                                obj.del();
+                            });
+                        });
+                    });
+                }
+            });
+        });
+    </script>
+</body>
+</html>

+ 105 - 0
src/main/java/com/ema/admin/modules/assets/controller/AssetStatusHistoryController.java

@@ -0,0 +1,105 @@
+package com.ema.admin.modules.assets.controller;
+
+import com.mybatisflex.core.paginate.Page;
+import org.springframework.web.bind.annotation.DeleteMapping;
+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.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.ema.admin.modules.assets.entity.AssetStatusHistory;
+import com.ema.admin.modules.assets.service.AssetStatusHistoryService;
+import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import java.util.List;
+
+/**
+ *  控制层。
+ *
+ * @author LIJIAN
+ * @since 2026-05-13
+ */
+@RestController
+@Api("接口")
+@RequestMapping("/assetStatusHistory")
+public class AssetStatusHistoryController {
+
+    @Autowired
+    private AssetStatusHistoryService assetStatusHistoryService;
+
+    /**
+     * 添加。
+     *
+     * @param assetStatusHistory 
+     * @return {@code true} 添加成功,{@code false} 添加失败
+     */
+    @PostMapping("save")
+    @ApiOperation("保存")
+    public boolean save(@RequestBody @ApiParam("") AssetStatusHistory assetStatusHistory) {
+        return assetStatusHistoryService.save(assetStatusHistory);
+    }
+
+    /**
+     * 根据主键删除。
+     *
+     * @param id 主键
+     * @return {@code true} 删除成功,{@code false} 删除失败
+     */
+    @DeleteMapping("remove/{id}")
+    @ApiOperation("根据主键")
+    public boolean remove(@PathVariable @ApiParam("主键") String id) {
+        return assetStatusHistoryService.removeById(id);
+    }
+
+    /**
+     * 根据主键更新。
+     *
+     * @param assetStatusHistory 
+     * @return {@code true} 更新成功,{@code false} 更新失败
+     */
+    @PutMapping("update")
+    @ApiOperation("根据主键更新")
+    public boolean update(@RequestBody @ApiParam("主键") AssetStatusHistory assetStatusHistory) {
+        return assetStatusHistoryService.updateById(assetStatusHistory);
+    }
+
+    /**
+     * 查询所有。
+     *
+     * @return 所有数据
+     */
+    @GetMapping("list")
+    @ApiOperation("查询所有")
+    public List<AssetStatusHistory> list() {
+        return assetStatusHistoryService.list();
+    }
+
+    /**
+     * 根据主键获取详细信息。
+     *
+     * @param id 主键
+     * @return 详情
+     */
+    @GetMapping("getInfo/{id}")
+    @ApiOperation("根据主键获取")
+    public AssetStatusHistory getInfo(@PathVariable @ApiParam("主键") String id) {
+        return assetStatusHistoryService.getById(id);
+    }
+
+    /**
+     * 分页查询。
+     *
+     * @param page 分页对象
+     * @return 分页对象
+     */
+    @GetMapping("page")
+    @ApiOperation("分页查询")
+    public Page<AssetStatusHistory> page(@ApiParam("分页信息") Page<AssetStatusHistory> page) {
+        return assetStatusHistoryService.page(page);
+    }
+
+}

+ 105 - 0
src/main/java/com/ema/admin/modules/assets/controller/AssetsInfoController.java

@@ -0,0 +1,105 @@
+package com.ema.admin.modules.assets.controller;
+
+import com.mybatisflex.core.paginate.Page;
+import org.springframework.web.bind.annotation.DeleteMapping;
+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.PutMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.ema.admin.modules.assets.entity.AssetsInfo;
+import com.ema.admin.modules.assets.service.AssetsInfoService;
+import org.springframework.web.bind.annotation.RestController;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import java.util.List;
+
+/**
+ *  控制层。
+ *
+ * @author LIJIAN
+ * @since 2026-05-13
+ */
+@RestController
+@Api("接口")
+@RequestMapping("/assetsInfo")
+public class AssetsInfoController {
+
+    @Autowired
+    private AssetsInfoService assetsInfoService;
+
+    /**
+     * 添加。
+     *
+     * @param assetsInfo 
+     * @return {@code true} 添加成功,{@code false} 添加失败
+     */
+    @PostMapping("save")
+    @ApiOperation("保存")
+    public boolean save(@RequestBody @ApiParam("") AssetsInfo assetsInfo) {
+        return assetsInfoService.save(assetsInfo);
+    }
+
+    /**
+     * 根据主键删除。
+     *
+     * @param id 主键
+     * @return {@code true} 删除成功,{@code false} 删除失败
+     */
+    @DeleteMapping("remove/{id}")
+    @ApiOperation("根据主键")
+    public boolean remove(@PathVariable @ApiParam("主键") String id) {
+        return assetsInfoService.removeById(id);
+    }
+
+    /**
+     * 根据主键更新。
+     *
+     * @param assetsInfo 
+     * @return {@code true} 更新成功,{@code false} 更新失败
+     */
+    @PutMapping("update")
+    @ApiOperation("根据主键更新")
+    public boolean update(@RequestBody @ApiParam("主键") AssetsInfo assetsInfo) {
+        return assetsInfoService.updateById(assetsInfo);
+    }
+
+    /**
+     * 查询所有。
+     *
+     * @return 所有数据
+     */
+    @GetMapping("list")
+    @ApiOperation("查询所有")
+    public List<AssetsInfo> list() {
+        return assetsInfoService.list();
+    }
+
+    /**
+     * 根据主键获取详细信息。
+     *
+     * @param id 主键
+     * @return 详情
+     */
+    @GetMapping("getInfo/{id}")
+    @ApiOperation("根据主键获取")
+    public AssetsInfo getInfo(@PathVariable @ApiParam("主键") String id) {
+        return assetsInfoService.getById(id);
+    }
+
+    /**
+     * 分页查询。
+     *
+     * @param page 分页对象
+     * @return 分页对象
+     */
+    @GetMapping("page")
+    @ApiOperation("分页查询")
+    public Page<AssetsInfo> page(@ApiParam("分页信息") Page<AssetsInfo> page) {
+        return assetsInfoService.page(page);
+    }
+
+}

+ 116 - 0
src/main/java/com/ema/admin/modules/assets/entity/AssetStatusHistory.java

@@ -0,0 +1,116 @@
+package com.ema.admin.modules.assets.entity;
+
+import com.ema.common.domain.base.BaseEntity;
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.KeyType;
+import com.mybatisflex.annotation.Table;
+import java.io.Serializable;
+import java.sql.Date;
+import java.time.LocalDateTime;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  实体类。
+ *
+ * @author LIJIAN
+ * @since 2026-05-13
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("")
+@Table("asset_status_history")
+public class AssetStatusHistory extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @Id(keyType = KeyType.Generator, value = "snowFlakeId")
+    @ApiModelProperty("主键")
+    private String id;
+
+    /**
+     * 资产信息id
+     */
+    @ApiModelProperty("资产信息id")
+    private String assetId;
+
+    /**
+     * 使用公司
+     */
+    @ApiModelProperty("使用公司")
+    private String useCompany;
+
+    /**
+     * 使用部门
+     */
+    @ApiModelProperty("使用部门")
+    private String useDept;
+
+    /**
+     * 使用人
+     */
+    @ApiModelProperty("使用人")
+    private String useUser;
+
+    /**
+     * 使用状态 在库、正常使用、已转移、报废中、维修中等
+     */
+    @ApiModelProperty("使用状态 在库、正常使用、已转移、报废中、维修中等")
+    private String useStatus;
+
+    /**
+     * 当前位置
+     */
+    @ApiModelProperty("当前位置")
+    private String curLocation;
+
+    /**
+     * 生效开始日期
+     */
+    @ApiModelProperty("生效开始日期")
+    private Date startDate;
+
+    /**
+     * 生效结束日期(当前有效为4712-12-31)
+     */
+    @ApiModelProperty("生效结束日期(当前有效为4712-12-31)")
+    private Date endDate;
+
+    /**
+     * 操作人
+     */
+    @ApiModelProperty("操作人")
+    private String operatorName;
+
+    /**
+     * 操作时间
+     */
+    @ApiModelProperty("操作时间")
+    private LocalDateTime operatorDate;
+
+    /**
+     * 协管员
+     */
+    @ApiModelProperty("协管员")
+    private String assistantName;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty("备注")
+    private String remark;
+
+}

+ 129 - 0
src/main/java/com/ema/admin/modules/assets/entity/AssetsInfo.java

@@ -0,0 +1,129 @@
+package com.ema.admin.modules.assets.entity;
+
+import com.ema.common.domain.base.BaseEntity;
+import com.mybatisflex.annotation.Id;
+import com.mybatisflex.annotation.KeyType;
+import com.mybatisflex.annotation.Table;
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.sql.Date;
+import java.time.LocalDateTime;
+
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.EqualsAndHashCode;
+
+/**
+ *  实体类。
+ *
+ * @author LIJIAN
+ * @since 2026-05-13
+ */
+@Data
+@Builder
+@NoArgsConstructor
+@AllArgsConstructor
+@EqualsAndHashCode(callSuper = true)
+@ApiModel("")
+@Table("assets_info")
+public class AssetsInfo extends BaseEntity implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @Id(keyType = KeyType.Generator, value = "snowFlakeId")
+    @ApiModelProperty("主键")
+    private String id;
+
+    /**
+     * 资产管理部门
+     */
+    @ApiModelProperty("资产管理部门")
+    private String deptName;
+
+    /**
+     * 资产编码
+     */
+    @ApiModelProperty("资产编码")
+    private String assetCode;
+
+    /**
+     * 资产类型
+     */
+    @ApiModelProperty("资产类型")
+    private String assetType;
+
+    /**
+     * 品牌
+     */
+    @ApiModelProperty("品牌")
+    private String brand;
+
+    /**
+     * 型号
+     */
+    @ApiModelProperty("型号")
+    private String model;
+
+    /**
+     * 购买日期
+     */
+    @ApiModelProperty("购买日期")
+    private Date purchaseDate;
+
+    /**
+     * 采购价值(元)
+     */
+    @ApiModelProperty("采购价值(元)")
+    private BigDecimal purchaseValue;
+
+    /**
+     * 盘点状态
+     */
+    @ApiModelProperty("盘点状态")
+    private String invstkStatus;
+
+    /**
+     * 最后一次盘点时间
+     */
+    @ApiModelProperty("最后一次盘点时间")
+    private LocalDateTime lastInvstkTime;
+
+    /**
+     * 扩展字段1
+     */
+    @ApiModelProperty("扩展字段1")
+    private String attribute1;
+
+    /**
+     * 扩展字段2
+     */
+    @ApiModelProperty("扩展字段2")
+    private String attribute2;
+
+    /**
+     * 扩展字段3
+     */
+    @ApiModelProperty("扩展字段3")
+    private String attribute3;
+
+    /**
+     * 扩展字段4
+     */
+    @ApiModelProperty("扩展字段4")
+    private String attribute4;
+
+    /**
+     * 备注
+     */
+    @ApiModelProperty("备注")
+    private String remark;
+
+}

+ 14 - 0
src/main/java/com/ema/admin/modules/assets/mapper/AssetStatusHistoryMapper.java

@@ -0,0 +1,14 @@
+package com.ema.admin.modules.assets.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import com.ema.admin.modules.assets.entity.AssetStatusHistory;
+
+/**
+ *  映射层。
+ *
+ * @author LIJIAN
+ * @since 2026-05-13
+ */
+public interface AssetStatusHistoryMapper extends BaseMapper<AssetStatusHistory> {
+
+}

+ 14 - 0
src/main/java/com/ema/admin/modules/assets/mapper/AssetsInfoMapper.java

@@ -0,0 +1,14 @@
+package com.ema.admin.modules.assets.mapper;
+
+import com.mybatisflex.core.BaseMapper;
+import com.ema.admin.modules.assets.entity.AssetsInfo;
+
+/**
+ *  映射层。
+ *
+ * @author LIJIAN
+ * @since 2026-05-13
+ */
+public interface AssetsInfoMapper extends BaseMapper<AssetsInfo> {
+
+}

+ 14 - 0
src/main/java/com/ema/admin/modules/assets/service/AssetStatusHistoryService.java

@@ -0,0 +1,14 @@
+package com.ema.admin.modules.assets.service;
+
+import com.mybatisflex.core.service.IService;
+import com.ema.admin.modules.assets.entity.AssetStatusHistory;
+
+/**
+ *  服务层。
+ *
+ * @author LIJIAN
+ * @since 2026-05-13
+ */
+public interface AssetStatusHistoryService extends IService<AssetStatusHistory> {
+
+}

+ 14 - 0
src/main/java/com/ema/admin/modules/assets/service/AssetsInfoService.java

@@ -0,0 +1,14 @@
+package com.ema.admin.modules.assets.service;
+
+import com.mybatisflex.core.service.IService;
+import com.ema.admin.modules.assets.entity.AssetsInfo;
+
+/**
+ *  服务层。
+ *
+ * @author LIJIAN
+ * @since 2026-05-13
+ */
+public interface AssetsInfoService extends IService<AssetsInfo> {
+
+}

+ 18 - 0
src/main/java/com/ema/admin/modules/assets/service/impl/AssetStatusHistoryServiceImpl.java

@@ -0,0 +1,18 @@
+package com.ema.admin.modules.assets.service.impl;
+
+import com.mybatisflex.spring.service.impl.ServiceImpl;
+import com.ema.admin.modules.assets.entity.AssetStatusHistory;
+import com.ema.admin.modules.assets.mapper.AssetStatusHistoryMapper;
+import com.ema.admin.modules.assets.service.AssetStatusHistoryService;
+import org.springframework.stereotype.Service;
+
+/**
+ *  服务层实现。
+ *
+ * @author LIJIAN
+ * @since 2026-05-13
+ */
+@Service
+public class AssetStatusHistoryServiceImpl extends ServiceImpl<AssetStatusHistoryMapper, AssetStatusHistory>  implements AssetStatusHistoryService{
+
+}

+ 18 - 0
src/main/java/com/ema/admin/modules/assets/service/impl/AssetsInfoServiceImpl.java

@@ -0,0 +1,18 @@
+package com.ema.admin.modules.assets.service.impl;
+
+import com.mybatisflex.spring.service.impl.ServiceImpl;
+import com.ema.admin.modules.assets.entity.AssetsInfo;
+import com.ema.admin.modules.assets.mapper.AssetsInfoMapper;
+import com.ema.admin.modules.assets.service.AssetsInfoService;
+import org.springframework.stereotype.Service;
+
+/**
+ *  服务层实现。
+ *
+ * @author LIJIAN
+ * @since 2026-05-13
+ */
+@Service
+public class AssetsInfoServiceImpl extends ServiceImpl<AssetsInfoMapper, AssetsInfo>  implements AssetsInfoService{
+
+}

+ 7 - 0
src/main/resources/mapper/AssetStatusHistoryMapper.xml

@@ -0,0 +1,7 @@
+<?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.ema.admin.modules.assets.mapper.AssetStatusHistoryMapper">
+
+</mapper>

+ 7 - 0
src/main/resources/mapper/AssetsInfoMapper.xml

@@ -0,0 +1,7 @@
+<?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.ema.admin.modules.assets.mapper.AssetsInfoMapper">
+
+</mapper>