06-微信油站管理系统-油枪管理

        上一文中我们已经完成了站点基本信息配置,本篇将继续完善站点油枪管理功能。

油枪管理功能分析

        通常油站创建订单、支付、查询订单和对账等都是按油枪进行的,油枪从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")

publicListselectBizNozList(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

你可能感兴趣的:(06-微信油站管理系统-油枪管理)