首页 > 其他分享 >真实业务环境-需求分析思路(一)

真实业务环境-需求分析思路(一)

时间:2024-07-23 23:08:47浏览次数:12  
标签:真实 这里 环境 查询 添加 工单 思路 数据 id

智联-我的代办页面增加字段

(智联)我的待办 ---> 查询条件加上新字段 创建人省份

写本篇文章的目的是记录一下我真实业务下的第一个需求,其次是为了培养良好的实现需求的思路

由于后端代码不能外传,故只能自己偷偷学习,笔记上面不能展示

注意:本篇文章的需求实现并不难,如果是学代码技术不建议看

需求分析

对智联-我的工单中的我的代办工单的优化

添加创建人省份字段

思路:

(1) 在前端添加一个输入下拉框,这个下拉框的内容和省份内容一致就可以。

  • 在点击查询时,需要根据创建人省份去查询我需要处理的工单(待办工单)
  • 修改后端list接口的查询条件

(2)工单不同状态的数量统计需要修改

  • 在进行数量统计时,也要对创建人省份字段进行判断
  • 修改queryCount接口的查询条件

(3)重置按钮

  • 在我们点击重置时,新添加的这个字段需要置为null
  • 修改前端数据

image-20240717110303118

具体实现

添加前端按钮

根据系统中的菜单管理找到代办的index组件(你也可以在router.index.js)

直接复制前面的item项然后直接复用

el-row 表示行

el-col 表示列

el-form-item 一个表单项

el-select 表示这里是一个可选的输入框 v-model 绑定对象中的数据

el-option 表示el-select中的选项 里面使用v-for表示循环

image-20240718100132534

<el-form :model = "formData" label-width="100px" class="form-button">

<el-form>是 Element UI 库中的一个表单组件,它用于创建和管理表单。

:model="formData" 是Vue.js的一个动态属性(使用冒号前缀) ,它将表单的值绑定到Vue实例对象formData上。这意味着表单中的所有的输入组件(input、select、checkbox等)都会自动与formData对象中的属性同步。当用户在表单中输入内容时,formData对象中的数据会被自动更新。

label-width="100px" (标签宽度)用于布局美化

class="form-button" 给<el-form>标签定义类名,css可以通过类名进行修饰美化

image-20240718110907803

不同状态的工单数量统计

image-20240718105249736

在queryPro中存在queryCount方法

在这个方法中有四个状态下的数量的统计,但是后面请求的都是后端的同一个接口

image-20240718105452629

在forData中添加新的字段属性createPro

在进行list和queryCount的接口中都需要该字段

formData: {
  creatorPro: null
}

这里后端的逻辑就不写了,主要是思路的一个分析,这个需求很简单

在原有的基础上添加一个if标签,然后进行数量统计的判断

image-20240718110106970

查询按钮

和上面的接口实现一样,在原有的基础上扩充一个字段,只需要在后端sql的 where 后面加一个条件

image-20240718110106970

重置按钮

image-20240718110359558

当我们点击重置按钮时就会触发resetFormData方法将 所有的属性 置为null ,所以这里需要添加新的字段,否则重置对新的字段没有作用

随后调用queryPro()重新查询数据

resetFormData() {
  this.formData = {
    creatorPro: null
  }
  this.queryPro()
}

后台-工单受理组人员姓名的模糊查询

记录该需求是因为在该需求在测试时发现了代码bug,并且该bug很有意思

本文用于学习实际项目bug的排查思路,顺带学一点PageHelper知识!!!

需求分析

将姓名字段的精准查询优化为模糊查询

  • 在后端SQL查询条件where处将姓名字段的判断变成模糊查询 --- 入门级别

image-20240718143938409

代码Bug分析

原始代码产生分页相关的bug

  • 如果有比较好的排查问题的思路,可以很快的找到问题 ---- 中简单级别

问题展示

在无条件的情况下查询出所有的添加成员,共8000多条

image-20240718165926983

查询 "运维001" 无数据回显(优化模糊查询前后均存在这个bug)

这个在知道时分页的原因之后,发现只有第一页的数据可以查找到,后面的所有的数据均无法找到

image-20240718144141353

问题排查

思路:

后端查询时,根据name查询的逻辑有问题?

  • 这里部分数据可以查询到的就说明name查询逻辑没有问题
  • 这里我去分析了后端的代码发现是没有问题的,所以问题不是在这里

刚开始并不清楚只有第一页能查到,所以就想到为什么只有一部分数据不可以查询,难道是因为某些 用户对象数据 是无法被查到的?

这个仔细一想就不可能。

  • 因为当时认为只有一部分数据不可以查询,所以我就想可能是数据的问题?
  • 然后在debug的时候看到sql在查询的时候有一个 not in ("id","id","id") 然后就印证了自己的这个想法
  • 但是后续添加一个人员后发现这个id多了一个正是添加的那个人的id,发现这里的这个ids是 已添加人员(刚熟悉这个项目,业务不熟悉,然后前后端项目中又没有excludeids的注释),所以并不是数据的问题,所以问题不在这里
  • image-20240718180106519

初始思路就是这样的,但是在debug的过程中发现问题都不是这些。

debug发现数据获取都是没有问题的

image-20240718190056428

这里查询到一个数据,说明后端是存在这个数据

image-20240718190513631

但是这里没有查到数据

image-20240718190610976

说明问题肯定是出在这里!!!

然后我去控制台看了sql代码

SELECT p.id, p.province, p.city, p.employee_code, p.employee_name, p.org_id, (SELECT INSERT(p.employee_phone, 4, 4, '****')) AS employee_phone, p.type, p.state, p.isValid, p.creator_id, p.creator, p.create_time, p.update_time FROM employee_pro_10096 p WHERE 1 = 1 AND p.employee_name LIKE concat('%', '运维01', '%') LIMIT 10, 10;

拉到navicat中运行,发现确实没有任何数据

image-20240719110927568

发现limit 参数起始数据直接从第10条开始查询?

如果查询的数据没有10条,那查询的结果集就会为空

所以这里的分页的参数计算肯定是有问题的

image-20240719111300224

这里的计算是有问题的!!!

比如:当我们在前端界面第二页进行查询 "运维01" ,那么传到后端的pageNo = 2 ,那么这里计算的startRow = (2 - 1) * 10 这样就导致了问题。

image-20240719111327700

然后补齐思路

image-20240719141919069

继续测试:

这里刘的模糊查询出来有280条数据

然后我这里去30页查询,出现了bug

image-20240719143629510

image-20240719143810557

debug解决:

这里发现我们的startRow成功设置,但是我们的pageNo并没有成功设置(记得前端接收pageNo)

所以将if判断从里面移出来,同时也避免了其他代码复用这个类时造成意外的冲突!!!

image-20240719144206375

image-20240719143350970

修改代码如下:

image-20240719150709318

继续测试:

发现忘记思考一个点,就是当我们的当前页数和itemCount相同时

比如说当前页为29页,if条件就会变成 (29-1)*10 > 280

  • 所以修改判断条件为 >=

最后测试:

站在用户的角度去思考!!!

我们去搜索某个名字的时候,不需要 当前页在第几页就把数据显示到第几页,而是默认第一页就可以了(这个你可以试试,作为用户正常的逻辑思维是这样的)

所以当(pageNo * pageSize) > itemCount 直接将页码置为1,防止出现最开始讨论的问题

image-20240719161612590

到这里需求及bug就完成了。

这里因为项目耦合性太强了,所以这里没法使用PageHelper。这里建议学一下pageHelper的原理,看看和这个项目中的逻辑的差别,学习一下。

标签:真实,这里,环境,查询,添加,工单,思路,数据,id
From: https://www.cnblogs.com/zhiliu/p/18319813

相关文章

  • esp32在Arduino中环境的搭建
      我们找到https://dl.espressif.cn/dl/package_esp32_index.json的json文件,然后打开它。  首先是在“platforms”块中找到你的需要的esp32版本把“url”中的内容复制到迅雷中下载,这样我们就得到了esp32-1.0.6.zip, 剩下的在“tools”块中,找到你自己的平台,比如你是window......
  • 【xv6】xv6源码调试环境搭建
    1.xv6源代码下载gitclonehttps://github.com/ytcoode/xv6.git2.编译并在qemu中运行xv6镜像2.1安装qemusudoapt-getinstallqemu2.2编译并运行xv6将54行QEMU前面的#号注释掉然后直接在当前目录下执行makeqemu即可直接加载并运行xv6镜像手动运行:qemu-syste......
  • 使用脚本自动配置Java环境
    python脚本配置java环境适用Windows与LinuxLinux系统的全局配置文件路径:/etc/profile首先需要下载jdk,然后在命令行使用脚本使用方式:jdk路径不带bin目录pythonset_java_env.py/path/to/jdkset_java_env.py内容如下:importosimportsysdefset_java_env(java_path):......
  • 搭建Ollama环境
    Ollama环境搭建参考链接:https://baijiahao.baidu.com/s?id=1798741366479996086&wfr=spider&for=pc下载Ollama下载地址:https://ollama.com/download双击直接安装安装成功,默认模型的位置是C:\Users.ollama\models,可在powershell修改模型位置setxOLLAMA_MODELS"D:\others\O......
  • 力扣第二题——两数相加(链表的讲解与运用,含解决链表问题模板)(含思路详解、完整代码与知
    内容介绍给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0 开头。示例1:输入:l1=[2,4,3],......
  • VMware vCenter Server 8.0U3a - 集中式管理 vSphere 环境
    VMwarevCenterServer8.0U3a-集中式管理vSphere环境ServerManagementSoftware|vCenter请访问原文链接:https://sysin.org/blog/vmware-vcenter-8-u3/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVMwarevCenterServer是一款高级服务器管理软件,提供了一......
  • 基于Memotrace(留痕)、jieba、wordcloud、cnsenti的微信聊天记录分析(一)(环境准备+词
     创作背景在数字化时代,社交媒体和即时通讯工具已成为人们日常生活中不可或缺的一部分。微信,作为中国最流行的即时通讯软件之一,不仅承载了人们的日常交流,更记录了无数情感的起伏与心灵的触碰。小明,一个对生活充满好奇与热情的年轻人,最近通过微信结识了一位特别的女生——小芳......
  • 如何在启动时设置 Raspberry Pi 上的显示环境变量?
    我有一个RaspberryPi4,显示屏为1280x800,没有键盘或鼠标。我通过WiFi远程ssh进入它,并对它进行编码以显示图像,最终无需我ssh进入它。我安装了feh并在python脚本中使用它来显示图像:importsubprocessimage=subprocess.Popen(["feh","--hide-pointer","-x","-q"......
  • Django 入门指南:从环境设置到创建第一个应用程序
    简介Django是一个流行的PythonWeb框架,用于快速开发强大的Web应用程序。本指南将带你从安装Django开始,逐步学习如何创建一个简单的Django项目和应用程序。步骤1:准备环境首先,确保你的开发环境中安装了Python,并了解如何使用虚拟环境来管理项目依赖。安装虚拟......
  • linux执行vcfmaf命令perl vcf2maf.pl xxx,如何将vcf2maf.pl添加到环境变量,使得脚本可以
    要将vcf2maf.pl(或任何其他Perl脚本)添加到环境变量中,以便能够直接在命令行中调用它,你实际上不需要将脚本本身添加到PATH环境变量。PATH环境变量用于查找可执行文件(通常是编译后的二进制文件),而不是脚本。但是,由于Perl脚本可以通过Perl解释器执行,你可以通过几种方式来实现类似的功能......