从针尖对麦芒,到丝滑入扣,记录那些BT需求

news2024/11/19 7:44:30

前言:

        最近被一个“简单”的需求,搞的有点难受。需求其实很简单,就是记录某成品生产过程数据,然后进行展示,但因需求部门是管理部门。为了能获取足够多的参数来提高生产效率和研发进度。因此需要生产来统计收集对应生产过程的参数,如收集某个反应单号、反应釜对应是什么时候开始的,开始的时候对应反应的参数,如温度、PH、电流、搅拌频率、氨浓度、粒度等等,不下40多个检测项目,因此可想而知这个收集表是又臭又长。因此最后的成品大概长这样。

 从图片可以看出后面还有很多很多参数没显示出来。

一、针尖对麦芒

        1、会议讨论猛如虎,剩下只有能不能

        从上面的图片我们可想而知,管理部门在推动生产去做录入应用的时候,生产主任肯定会抱怨,录入的内容太多了,数据能不能自动带出来、能不能防呆、等等。因此在第一次试运行会议上,就出现了针尖对麦芒对麦芒的场景。最后一顿群枪舌剑后,提出了3年都改不完的需求到了我们这边。哈哈哈哈,真是鹬蚌相争,IT“得利"。

       最后主要提出的需求点是:

        1、日期能不能自动带出来,时间能不能自动累计变化,反应时长能不能自动变?

        2、能不能像EXCEL那样直接拉一下数据就跟着变?

        3、能不能根据我录入时间自动变化日期?有些值是固定的,能不能自动填充?

        4、能不能通过EXCEL一次性把数据导入进去?

        5、能不能做数据录入校验,比如录数据的地方不能录字符?

        6、能不能设置必填项,重要信息比较完整?

        7、能不能规定录入的内容,比如只能录入“是”或者“否”的地方,不能录入其他的,比如是加一个空格?

        8、能不能.......?

      2、能不能?不能?那得能

        2.1、内心的emo

        哈哈哈,上面的一顿能不能实在是把我问麻了?我整个人都emo了。从刚开始的激情分析,到后面的可以,我想想办法,最后我甚至都懒得动嘴了。然后他们看我不回答了,旁边的小伙伴直接来一句先记下来,我们回去研究研究。我心里真的是想谢谢你呢。

        其实这一切的罪恶之源,就是数字化建设需要一个较长的过程,但是业务部门在建设时期,需要开展业务,也想提高效率,因此想先手工录入数据,将业务先固化下来,把标准规则做起来,至少数据线上化了,共享了,不在会出现N个版本的数据,也不需要跨部门催数据。总的来说是好的。因此对于IT人员来说,确实能体现我们的价值,加上IT人员都是热心肠,那不就是能,太能了啊!哈哈哈哈,那看看都是怎么实现的吧。

        2.2、一点小思路

        因为提的需求实在太多,这边就挑几个典型的说下实现思路。

        因为不同工序的录入人员不愿意统一在一个大表录入,因此我们将最开始的那张大表拆分成了三张小表,如下图所示,小试、中试、量试。

         如我们将小试拆分成了这样,默认我们就会带出反应级别为小试,默认带出当天的日期。默认未录入数据的时候不能进行删除操作等等。

         为了保证数据质量,通过设置必填提示,并颜色标记必填项提醒用户哪些是必填的,等等。

 二、有点AI的东西

        其实受最近AI的影响,导致下面40 50岁的大爷,天天刷短视频,说这个能不能自动带出来,那个能不能自动计算,能不能自动查重。。。等等,主打的就是一个自动,主打的就是一个解放双手。针对前面提到的 "日期能不能自动带出来,时间能不能自动累计变化,反应时长能不能自动变?",来聊聊这个有点AI的东西。

        1、AI进化论

        首先看这个日期自动带出,就存在一个BT的点,就是用户在录入数据的时候,自动带出当天的日期,超过12点带出第二天的日期,这个需求还是比较简单实现,默认为空的时候赋值为today()的函数来获取系统日期。但是有个BT的点就是,当用户在录入某个日期23点的数据后,再点击新增就需要变化至第二天日期,并变化时间。因为需设置时间是24小时制。而且需要进位加1天的日期。针对这个需求你觉得应该怎么实现呢?

我们先看效果

  效果图

如上图所示,当我们选择时间为00:57后点插入行,自动变化为01:57,并且反应时长自动累加。

当然班次是根据时间自动判断的,0点到8点半是早班,8点半到17点是中班,其他是晚班。当然这些都比较简单,复杂的是时间自动跳的时候超过23点的时候,自动回0并且日期加1天。因此我们通过截取选择时间的:左边的小时,或者对应的小时,点插入行的时候,自动将小时加1,然后再判断时间时候小于10小时,小于10时,前面填充个0变成01 02 03 。。09。然后再和后面的分钟拼接起来。 这样基本就实现了自动跳小时加1。最后通过mod(小时,24)自动让小时从0到23变化。其实这时候的日期变化就变的简单,只要上一行的小时变化成23的时候,自动将日期+1即可。

        具体的动态效果我们可以看下视频

20230816_225117

        2、进化论2.0

        细心的小伙伴,可能会发现,插入行的时候因为是根据上一行的值来自动填充下一行的值,因此,如果我们点击的不是最后一行就会导致填充的数据错误,因此用户就开始emo了。

         因此用户需要一个自动能填充多行,而且不用担心填充错误的功能,说实话,我也是第一次遇到这么BT的需求,因此苦苦研究了下,想到了一个数据定位功能,让功能按钮每次都能定位到最后一行,此时再点击插入就不会导致数据插入错误,只要无脑点击就行,当然了有插入必然会因为插入点的比较嗨,导致插入的多了,因此也需要一个无脑可以删除的功能,只需要点击删除就可以删除最后一行。因此最后通过JS来判断数据位置,每次从最后一行 进行数据的插入和删除就实现了这个需求。最后这个功能界面长这样。

定位插入行位置,每次自动定位,删除/插入最后一行

三、你以为这就结束了?

        经过,多次迭代终于将上面提的需求完成了,但是万万没想到出现了一个emo需求,因为上下是两个表,因此数据存在两个表中,为了防止数据被误删除了,因此数据都是没有被真正删除,而是通过一个删除标记来记录是否删除,比如当删除标记dr=0时表示未删除,dr=1就表示删除。因为没考虑到他们会对删除的数据做修改或者二次录入因此,最后出现了一个这样的场景,上面主表是没数据,当明细表时有数据的,我们称之为无头勇士。真的是笑喷了,这也为我无尽的需求增添了一丝丝慰藉,哈哈哈,真是愉快的一天啊~

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886349.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文件IO编程 1 2

头文件包含路径 linux 操作系统分为两大空间:用户空间和内核空间 这样划分,是为了保护内核的核心组件,不被轻易访问和修改 系统调用:安全的访问内核空间 其核心是:函数API(API:用户编程接口&…

Ogami Organic Store有机商店WordPress主题

Ogami Organic Store有机商店WordPress主题是一个整洁且响应迅速的 WooCommerce WordPress 主题,适用于任何类型的食品、蔬菜店、化妆品或类似网站,这些网站需要功能丰富且美观的在线展示以及优雅灵活的设计。 网址: Ogami Organic Store有机商店WordPr…

信息与通信工程面试准备——信号与系统|10:23

8月16日 23:21 目录 ​编辑 1. 调制的作用 2. 放大器与振荡器的作用和区别 工作原理 输出信号 应用 反馈方式 设计复杂度 装置性质 3. 信号与系统:三大变换之间的关系? 4. 无码间串扰的条件 5. 冲激函数的作用? 研究的意义&…

Java免费自学网站推荐来啦!

Java自学的难度因人而异,取决于个人的学习能力、学习方法和学习态度等因素。对于一些有编程经验或者具备良好的逻辑思维能力的人来说,自学Java可能会相对容易些。而对于零基础的初学者来说,可能需要更多的时间和精力来理解和掌握Java的概念和…

进制转换:二进制、八进制、十六进制、十进制之间的转换

对于基础薄弱的读者,本节的内容可能略显晦涩和枯燥,如果你觉得吃力,可以暂时跳过,基本不会影响后续章节的学习,等用到的时候再来阅读。 上节我们对二进制、八进制和十六进制进行了说明,本节重点讲解不同进制…

无痛VSCode+clangd+lldb+cmake配置C/C++开发环境

前言 在C/C开发中,如果使用vscode作为开发平台的话,相信大家都会安装C/C扩展,在remote到远程一个机器上开发时,C/C扩展提供的自动补全等功能总是慢一拍,这让我感觉很不舒服,时间就了就人忍不下去了&#x…

考公-判断推理-逻辑判断-加强类

论点 论据 削弱 论点 转折之后 例题 例题 例题 例题 搭桥方向,论据推出论点 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题 例题

【Redis】Redis的持久化(备份)

【Redis】Redis的持久化(备份) Redis的数据全部在内存里,如果突然宕机,数据就会全部丢失,因此必须有一种机制来保证Redis的数据不会因为故障而丢失,这种机制就是Redis的持久化机制。 如图所示&#xff0c…

将单个训练数据集文件拆分为:image文件和label文件(pytorch学习+蚂蚁蜜蜂数据集)

蚂蚁蜜蜂分类数据集下载链接:https://download.pytorch.org/tutorial/hymenoptera_data.zip 要实现如图操作: 将ants分为ants_image和ants_label 将bees分成bees_image和bees_label 创建ants_label和bees_label,并且以图片名作为txt文件的…

layui单选必填验证

效果&#xff1a; 代码 <div class"layui-form-item"><label class"layui-form-label layui-required-title">对此次活动内容输出是否满意&#xff1f;</label><div class"layui-input-block"><input type"ra…

int(M)、char(M) 、varchar(M)的用法

文章目录 MySQL中int、char、varchar的一般用法1、int (M)2、varchar(M)3、char(M)4、char(M) 和varchar(M)的区别4.1 区别1&#xff1a;定长和变长4.2 区别2&#xff1a;存储容量上4.3 区别3&#xff1a;在展示上4.4 区别4&#xff1a;在使用场景上4.5 区别5&#xff1a;在书写…

如何编写技术文档?

软件开发中&#xff0c;为你的软件系统编写文档并不是一件新鲜的事情。几乎所有人都明白这样的道理&#xff1a; 你的软件产品如何优秀对用户来说并不是最重要的&#xff0c;因为你的文档如果不够优秀&#xff0c;用户不会使用它&#xff01;即便用户在某些情况下不得不使用你…

uniapp app 实现右上角回首页;点homeButton返回上一页;onNavigationBarButtonTap不生效问题

场景&#xff1a; app&#xff0c;Android移动端 实现点击右上角图标&#xff0c;回首页。 问题&#xff1a;用了官网的 homeButton&#xff0c;图标正常展示了&#xff0c;也可点击&#xff0c;但每次点击后是会返回上一页而非首页。 后来查到说&#xff0c;要结合onNavigatio…

SciencePub学术 | 计算机重点SCIE征稿中

SciencePub学术 刊源推荐: 计算机重点SCIE征稿中&#xff01;信息如下&#xff0c;录满为止&#xff1a; 一、期刊概况&#xff1a; 计算机语音类重点SCIE 【期刊简介】IF&#xff1a;4.0-4.5&#xff0c;JCR2区&#xff0c;中科院3区&#xff1b; 【出版社】世界排名前三出…

Mysql之explain详解

1. explain作用 使用explain可以展示出sql语句的执行计划&#xff0c;再根据sql的执行计划去判断这条sql有哪些点可以进行优化&#xff0c;从而让sql的效率达到最大化。 2. 执行计划各列含义 &#xff08;1&#xff09;id&#xff1a;id列是select的序列号&#xff0c;这个…

Docker基础入门:从0开始学习容器化技术

Docker基础入门&#xff1a;从零开始学习容器化技术 一、Docker基础1.1、Docker起源1.2、Docker概念1.3、Docker优势1.4、Docker 的组成 二、Docker安装2.1、卸载旧版Docker2.2、需要的安装包依赖2.3、设置镜像仓库2.4、更新yum软件包索引2.5、安装Docker--社区版2.6、配置镜像…

十、接口(2)

本章概要 抽象类和接口完全解耦多接口结合使用继承扩展接口 结合接口时的命名冲突 抽象类和接口 尤其是在 Java 8 引入 default 方法之后&#xff0c;选择用抽象类还是用接口变得更加令人困惑。下表做了明确的区分&#xff1a; 特性接口抽象类组合新类可以组合多个接口只能…

Java基础知识实际应用(学生信息管理系统、猜拳小游戏、打印日历)

一、Java学生信息管理系统 这个系统包含了添加、修改、删除、查询和显示所有学生信息等功能。您可以在此基础上进行修改和完善&#xff0c;以适应您的需求。 import java.util.Scanner;public class StudentManagementSystem {private static Scanner scanner new Scanner(S…

C++——oo的魅力之多态

文章目录 多态的概念多态的定义和实现多态的构成条件虚函数重写的两个例外协变(基类和派生类虚函数返回值类型不同)析构函数的重写(基类和派生类析构函数名字不同) c11 override 和 final关键字 重载&#xff0c;重写(覆盖)&#xff0c; 隐藏(重定义)对比抽象类(纯虚函数)多态的…

Vivado使用入门之二:网表物理约束

目录 一、背景 二、物理约束 2.1 概念 2.2 网表约束 2.2.1 CLOCK_DEDICATED_ROUTE 2.2.2 MARK_DEBUG 2.2.3 DONT_TOUCH 2.2.4 LOCK_PINS 三、位置约束 四、布线约束 4.1 route 4.2 assign routing mode 五、参考 一、背景 在工程设计中为了保证上板后功能正常&…