# dkd **Repository Path**: heyuanfly/dkd ## Basic Information - **Project Name**: dkd - **Description**: 基于Ruoyi框架开发的自动售货机系统后端(SpringBoot) - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2024-11-26 - **Last Updated**: 2024-11-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 基于RuoYi(SpringBoot+Vue前后端分离)的售货机管理系统 # 部分功能模块展示 ## 首页 统计并动态展示信息,如工单统计、销售统计、商品热榜、签到排行等各模块均动态展示。 ![image-20241031092629440](README.assets/image-20241031092629440.png) ![image-20241031092710100](README.assets/image-20241031092710100.png) ### 签到功能 使用 Redis 的 BitMap 数据结构存储签到记录,通过拼接年月和用户id获得唯一键 **每个用户每月使用一个 BitMap**,**BitMap 的每一位代表当月的一天**,1表示签到,0表示未签到,第0位代表1号,第1位代表2号... 每个用户每月仅需 4 字节(32bit)存储空间,支持大规模用户签到数据存储 在签到后更新签到按钮状态以及签到排行榜 ![image-20241031094744242](README.assets/image-20241031094744242.png) ![image-20241031093136146](README.assets/image-20241031093136146.png) 当本月签到天数>=22天时,改变本月签到卡片的样式,增加全勤标识 ![image-20241031093850427](README.assets/image-20241031093850427.png) ### 签到排行 统计每个用户本月签到天数展示签到排行榜,签到前三名有单独的样式,可以下滑在本模块查看所有启用状态员工的签到排行 ![image-20241031094557124](README.assets/image-20241031094557124.png) ### 签到缓存设计 缓存时效性设计 签到记录 (BitMap):永久存储,按月分区存储,key格式:sign:202410:18 ![image-20241031110414461](README.assets/image-20241031110414461.png) 个人统计缓存:有效期:24小时,用户签到时清除,key格式:sign:stats:202410:18 ![image-20241031110454988](README.assets/image-20241031110454988.png) 排行榜缓存:有效期:30分钟,任何用户签到时清除,key格式:sign:rank:202410 ![image-20241031110800282](README.assets/image-20241031110800282.png) 缓存更新策略 1.主动更新:用户签到时,主动清除相关缓存,确保数据实时性 2.被动更新:缓存过期后,重新计算,减少计算频率 ## 工单管理 ### 运营工单 ![image-20241020173855478](README.assets/image-20241020173855478.png) ![image-20241020174110134](README.assets/image-20241020174110134.png) **只能给运营中的设备补货** ![image-20241020174125374](README.assets/image-20241020174125374.png) **已有同类型工单处于待办或进行状态则无法继续创建工单** ![image-20241023173308464](README.assets/image-20241023173308464.png) ### 运维工单 ![image-20241023173748589](README.assets/image-20241023173748589.png) **不能投放状态为运营中的设备,只能维修运营中的设备,只能撤机运营中的设备** **如果该设备有同类型工单处于待办或进行状态则无法创建该设备的同类型工单** ![image-20241023174340945](README.assets/image-20241023174340945.png) ![image-20241023174549739](README.assets/image-20241023174549739.png) ![image-20241023174619484](README.assets/image-20241023174619484.png) **查看工单详情** ![image-20241020174347275](README.assets/image-20241020174347275.png) **待办工单可以由工单管理员取消,取消后不可恢复但可重新创建** ![image-20241020174322380](README.assets/image-20241020174322380.png) ### 工单统计 **统计四种状态的工单,并用图表展示** ![image-20241023174056319](README.assets/image-20241023174056319.png) ## 工单列表 工单列表可根据**登录用户的角色**不同来显示**不同的工单列表**,运营员登录显示运营工单列表,维修员登录显示运维工单列表。超级管理员显示全部该状态的工单列表。 ### 待办工单 显示**工单执行人为该登录用户**的全部**待办工单**,超级管理员显示全部待办工单列表。**选择接受则工单状态变为进行中**,工单由待办工单列表转入进行工单列表。**选择拒绝则工单状态变为取消**,取消后不可恢复但可由工单管理员再次创建,取消的同时将工单的备注改为:“工作人员已拒绝”。 ![image-20241021153149568](README.assets/image-20241021153149568.png) ![image-20241020175527271](README.assets/image-20241020175527271.png) ![image-20241020175822778](README.assets/image-20241020175822778.png) ![image-20241020180151630](README.assets/image-20241020180151630.png) 选择确定或取消(关闭对话框)会弹出不同提示 ### 进行工单 显示**工单执行人为该登录用户**的全部**进行工单**,超级管理员显示全部进行工单列表。**选择完成则工单状态变为完成,根据工单类型不同完成不同的任务**。对于运营工单要去批量更新货道表的当前容量,上一次补货时间等信息(货道表和设备表),对于运维工单要去更新设备表中的设备状态。**选择取消则工单状态变为取消**,取消后不可恢复但可由工单管理员再次创建,取消的同时将工单的备注改为:“工作人员已取消”。 ![image-20241020184616676](README.assets/image-20241020184616676.png) ![image-20241020175910426](README.assets/image-20241020175910426.png) ![image-20241020185044780](README.assets/image-20241020185044780.png) ![image-20241020185057959](README.assets/image-20241020185057959.png) ![image-20241020185239427](README.assets/image-20241020185239427.png) ### 全部工单 显示**工单执行人为该登录用户**的全部**进行工单**,**超级管理员显示全部工单列表**。 ![image-20241020185300371](README.assets/image-20241020185300371.png) ![image-20241020185320341](README.assets/image-20241020185320341.png) ## 点位管理 ### 区域管理 **区域管理,可以对区域信息进行CRUD,并通过点位表统计该区域下的点位数,点击查看详情可以查看该区域下具体有哪些点位** ![image-20241021140934294](README.assets/image-20241021140934294.png) ![image-20241021140947589](README.assets/image-20241021140947589.png) ![image-20241021153317131](README.assets/image-20241021153317131.png) ### 点位管理 **点击查看详情可以查看该点位下具体有哪些设备** ![image-20241021141017833](README.assets/image-20241021141017833.png) **通过百度地图开放平台调用百度地图来选择详细地址,并在添加时把所在区域传给百度地图获取大概位置,当修改点位时则把详细地址传给百度地图,快速定位到之前选择过的地址** ![image-20241017104602703](README.assets/image-20241017104602703.png) ![image-20241017104546188](README.assets/image-20241017104546188.png) ![image-20241021145958662](README.assets/image-20241021145958662.png) ### 合作商管理 ![image-20241017104946368](README.assets/image-20241017104946368.png) ![image-20241017105001993](README.assets/image-20241017105001993.png) ![image-20241017105040789](README.assets/image-20241017105040789.png) ## 员工管理 ### 员工列表 在员工列表**管理员工可以同步若依自带的用户管理**(同步新增、修改、删除),当新增员工时自动同步新增用户,用户名为人员名称的拼音,如张三的用户名为zhangsan,用户昵称为人员名称,密码默认为“123456”,**对密码采用SecurityUtils.encryptPassword()方法进行加密**,**新增和修改员工时自动把员工的角色以及权限进行同步**。 ![image-20241021150053808](README.assets/image-20241021150053808.png) ![image-20241021150158486](README.assets/image-20241021150158486.png) ![image-20241021150228371](README.assets/image-20241021150228371.png) ### 员工业绩 对于**角色为运营员和维修员的员工**,统计他们完成/进行/待办/取消四种状态的工单,对于**角色工单管理员为工单管理员的员工**,统计他们创建工单的数量。工单表的执行人id与员工表的id对应,工单表的指派人id存的是用户id与员工表中的user_id对应。根据角色的不同,两表之间建立联系的方式不同。 ![image-20241023172837275](README.assets/image-20241023172837275.png) ## 设备管理 ### 设备管理 ![image-20241021150853217](README.assets/image-20241021150853217.png) ![image-20241021150924999](README.assets/image-20241021150924999.png) ![image-20241021151013615](README.assets/image-20241021151013615.png) ![image-20241021151036498](README.assets/image-20241021151036498.png) ![image-20241021151058228](README.assets/image-20241021151058228.png) ### 设备状态 **设备状态中的经纬度是在对设备进行添加和修改时在后端完成的,通过点位的详细地址获取具体的经纬度,借助百度地图开放平台完成** ![image-20241021151125362](README.assets/image-20241021151125362.png) ![image-20241021151139935](README.assets/image-20241021151139935.png) ### 设备类型管理 **只能修改或删除没有被使用的型号** ![image-20241021151213244](README.assets/image-20241021151213244.png) ![image-20241021151254711](README.assets/image-20241021151254711.png) ## 商品管理 ### 商品类型 ![image-20241017105746339](README.assets/image-20241017105746339.png) ### 商品管理 ![image-20241017105829890](README.assets/image-20241017105829890.png) ![image-20241017105900896](README.assets/image-20241017105900896.png) ## 策略管理 ### 策略管理 ![image-20241021152812179](README.assets/image-20241021152812179.png) ![image-20241021152827997](README.assets/image-20241021152827997.png) ## 订单管理 ### 订单管理 ![image-20241020185514852](README.assets/image-20241020185514852.png) ## 定时任务 每天**早上8点执行定时任务**,检测运营中的设备的货道,若**货道的当前容量小于最大容量$\times$补货警戒线**,则**自动创建补货工单**,**若设备所在区域中有多名运营员则随机选择一名运营员执行工单**。**工单编号为了区别手动创建的我将后四位的第一位设置为字母**,从A开始,第一个为A0001,A999的下一个为B001,第二天会恢复到从A001开始(工单编号的前几位由日期构成)。改用这种方式增大了一天中自动创建补货工单的工单编号容量。 ![image-20241022234321188](README.assets/image-20241022234321188.png) ![image-20241022233700437](README.assets/image-20241022233700437.png) ![image-20241022234343648](README.assets/image-20241022234343648.png) ![image-20241022234512330](README.assets/image-20241022234512330.png) ![image-20241022234607989](README.assets/image-20241022234607989.png) ![image-20241022235043888](README.assets/image-20241022235043888.png) ## 售货机面板 ![image-20241021152955270](README.assets/image-20241021152955270.png)