上一文中我们已经完成了站点基本信息配置,本篇将继续完善站点油枪管理功能。
油枪管理功能分析
通常油站创建订单、支付、查询订单和对账等都是按油枪进行的,油枪从1到N排序,油枪关联油品,通过油枪设置单价,因此应有如下功能:
1,根据油站枪数生成油枪列表;
2,设置油品和修改单价;
3,停用启用油枪;
接下来新增一个油枪管理页面完成油枪相关功能。
油枪管理功能实现
1. 添加油品字典
进入系统管理->字典管理,新增字典 “业务系统油品”,字典类型为biz_prod;添加常见油品如下:
2. 创建油枪配置表
根据功能分析,油枪至少应该包含所属站点、枪号、油品、油价和使用状态字段,建表脚本如下:
CREATETABLE`biz_noz`(
`noz_id`varchar(20)COLLATEutf8mb4_general_ciNOTNULLDEFAULT''COMMENT'油枪ID',
`noz_no`intNOTNULLCOMMENT'枪号',
`dept_id`intNOTNULLCOMMENT'站点ID',
`prod_id`intDEFAULTNULLCOMMENT'油品ID',
`prod_name`varchar(20)COLLATEutf8mb4_general_ciDEFAULT''COMMENT'油品名',
`price`decimal(20,2)DEFAULTNULLCOMMENT'单价,单位元',
`status`tinyintDEFAULT'1'COMMENT'1=启用,0=禁用',
`create_time`datetimeDEFAULTNULLCOMMENT'创建时间',
`update_time`datetimeDEFAULTNULLCOMMENT'更新时间',
PRIMARYKEY(`noz_id`)USINGBTREE,
KEY`IDX_DEPT_NOZ`(`noz_no`,`dept_id`)
)ENGINE=InnoDBDEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_general_ciCOMMENT='站点油枪配置';
3.生成业务代码
将数据表创建完成后,打开若依界面,选择系统工具->代码生成,点击“导入”按钮,在弹出框中选择biz_noz表,编辑代码生成配置,如下图:
4.修改菜单
在站点信息中已经设置了油站的油枪数据,为了统一油枪编码和序号,新增油枪初始化权限,并在将入口放在站点管理页面。修改nozMenu.sql文件,删除新增功能权限,添加油枪初始化权限并执行,修改后结果如下:
-- 菜单 SQL
INSERTINTOsys_menu(menu_name,parent_id,order_num,path,component,is_frame,is_cache,menu_type,visible,STATUS,perms,icon,create_by,create_time,update_by,update_time,remark)
VALUES('油枪配置','2004','1','noz','nxx/noz/index',1,0,'C','0','0','nxx:noz:list','#','admin',SYSDATE(),'',NULL,'油枪配置菜单');
-- 按钮父菜单ID
SELECT@parentId:=LAST_INSERT_ID();
-- 按钮 SQL
INSERTINTOsys_menu(menu_name,parent_id,order_num,path,component,is_frame,is_cache,menu_type,visible,STATUS,perms,icon,create_by,create_time,update_by,update_time,remark)
VALUES('油枪配置查询',@parentId,'1','#','',1,0,'F','0','0','nxx:noz:query','#','admin',SYSDATE(),'',NULL,'');
INSERTINTOsys_menu(menu_name,parent_id,order_num,path,component,is_frame,is_cache,menu_type,visible,STATUS,perms,icon,create_by,create_time,update_by,update_time,remark)
VALUES('油枪配置初始化',@parentId,'2','#','',1,0,'F','0','0','nxx:noz:init','#','admin',SYSDATE(),'',NULL,'');
INSERTINTOsys_menu(menu_name,parent_id,order_num,path,component,is_frame,is_cache,menu_type,visible,STATUS,perms,icon,create_by,create_time,update_by,update_time,remark)
VALUES('油枪配置修改',@parentId,'3','#','',1,0,'F','0','0','nxx:noz:edit','#','admin',SYSDATE(),'',NULL,'');
INSERTINTOsys_menu(menu_name,parent_id,order_num,path,component,is_frame,is_cache,menu_type,visible,STATUS,perms,icon,create_by,create_time,update_by,update_time,remark)
VALUES('油枪配置删除',2009,'4','#','',1,0,'F','0','0','nxx:noz:remove','#','admin',SYSDATE(),'',NULL,'');
INSERTINTOsys_menu(menu_name,parent_id,order_num,path,component,is_frame,is_cache,menu_type,visible,STATUS,perms,icon,create_by,create_time,update_by,update_time,remark)
VALUES('油枪配置导出',@parentId,'5','#','',1,0,'F','0','0','nxx:noz:export','#','admin',SYSDATE(),'',NULL,'');
5.复制domain和mapper
将domain和mapper目录下的文件复制到ruoyi-nxx-dao项目中,将service和controller代码复制到ruoyi-nxx-mgr项目中;
6.修改实体类和查询SQL
修改BizNoz.java,添加站点名称字段,并修改BizNozMapper.xml中的查询语句,结果如下:
@TableName("biz_noz")
publicclassBizNozextendsBaseEntity{
/**
* 油枪ID
*/
@TableField("noz_id")
@Excel(name="油枪ID")
private String nozId;
/**
* 枪号
*/
@TableField("noz_no")
@Excel(name="枪号")
private Integer nozNo;
/**
* 站点ID
*/
@TableField("dept_id")
private Long deptId;
@TableField(exist=false)
@Excel(name="站点名称")
private String deptName;
/**
* 油品ID
*/
@TableField("prod_id")
private Long prodId;
/**
* 油品名
*/
@TableField("prod_name")
@Excel(name="油品名称")
private String prodName;
/**
* 单价,单位元
*/
@TableField("price")
@Excel(name="单价")
private BigDecimal price;
/**
* 是否启用
*/
@TableField("status")
@Excel(name="是否启用")
private Integer status;
}
SELECTn.*,d.`dept_name`FROMbiz_noz nINNERJOINsys_dept dONd.`dept_id`=n.dept_id
d.`del_flag`='0'andd.status=0
andn.noz_no=#{nozNo}
andn.dept_id=#{deptId}
andn.prod_id=#{prodId}
andn.prod_namelikeconcat('%',#{prodName}, '%')
andn.status=#{status} ${params.dataScope}
SELECTn.*,d.`dept_name`FROMbiz_noz nINNERJOINsys_dept dONd.`dept_id`=n.dept_id
wheren.noz_id=#{nozId}
7.添加数据权限
修改BizNozServiceImpl.java中selectBizNozList方法,添加数据权限注解,结果如下:
@Override
@DataScope(deptAlias="d")
publicList
selectBizNozList(BizNozbizNoz) { returnbizNozMapper.selectBizNozList(bizNoz);
}
8.修改前端页面
将生成代码中vue目录下的api和views目录复制到ruoyi-ui下src目录,修改nxx/noz/index.vue页面,删除列表上方的新增和修改按钮,并修改列表字段,效果如下:
9.油枪初始化接口实现
打开IBizNozService.java添加油枪初始化接口public int iniBizNoz(BizNoz bizNoz),并在BizNozServiceImpl.java中实现:
@Autowired
privateBizDeptExtMapperbizDeptExtMapper;
@Override
publicintiniBizNoz(BizNozbizNoz) {
intinsertCnt=0;
LongdeptId=bizNoz.getDeptId();
BizDeptExtbizDeptExt=bizDeptExtMapper.selectBizDeptExtByDeptId(deptId);
Objects.requireNonNull(bizDeptExt,"请先设置站点油枪数量");
ZhaoUtil.checkParam(ZhaoUtil.gtZero(bizDeptExt.getNozCnt()),"油枪数据需大于0");
for(inti=1;i<=bizDeptExt.getNozCnt();i++) {
//油枪ID由部门号+2位序号
StringnozId=String.format("%s%02d",deptId,i);
System.out.println(nozId);
BizNozorgBizNoz=bizNozMapper.selectBizNozByNozId(nozId);
if(orgBizNoz!=null)continue;
orgBizNoz=newBizNoz();
orgBizNoz.setNozId(nozId);
orgBizNoz.setDeptId(deptId);
orgBizNoz.setNozNo(i);
orgBizNoz.setStatus(0);
orgBizNoz.setCreateTime(newDate());
bizNozMapper.insertBizNoz(orgBizNoz);
insertCnt=insertCnt+1;
}
returnbizDeptExt.getNozCnt();
}
打开BizNozController.java,添加初始化接口:
/**
* 初始化油枪配置
*/
@PreAuthorize("@ss.hasPermi('nxx:noz:init')")
@Log(title="油枪配置",businessType=BusinessType.INSERT)
@PostMapping("/init")
publicAjaxResultinit(@RequestBodyBizNozbizNoz) {
returnAjaxResult.success("初始化成功",bizNozService.iniBizNoz(bizNoz));
}
10.添加油枪初始化入口
打开ruoyi-ui/src/api/nxx/noz.js添加接口:
exportfunctioninitNoz(data) {
returnrequest({
url:'/nxx/noz/init',
method:'post',
data:data
})
}
打开ruoyi-ui/src/views/nxx/deptext/index.vue添加初始化入口:
修改
初始化油枪
//引入接口
import { initNoz } from '@/api/nxx/noz'
//处理界面事件
handleInitNoz(row) {
initNoz({ deptId: row.deptId }).then(() => {
this.$modal.msgSuccess('初始化成功')
})
}
效果如下:
至此,油枪配置已完成,并且保留了数据权限控制。
演示地址:http://162.14.124.216:8000
账号密码:admin/admin123