当前位置: 首页 > news >正文

工程物料管理信息化建设(十二)——关于工程物料管理系统最后的思考

目录

  • 1 功能回顾
    • 1.1 MTO模块
    • 1.2 请购模块
    • 1.3 采购模块
    • 1.4 催交模块
    • 1.5 现场管理模块
    • 1.6 数据分析和看板模块
    • 1.7 其它模块
  • 2 最后几个问题
    • 2.1 按管线发料和直接发料重叠
    • 2.2 YHA 材料编码的唯一性问题
    • 2.3 “合同量单-箱单-入库单” 数据映射
  • 3 关于未来的思考
    • 3.1 三个专业之间的关系
    • 3.2 数据价值
    • 3.3 系统的迭代与发展
  • 4 结束

关于材料管理软件的最后思考和总结,这篇文章迟到了两年,不知道当年哪些让人掉头发的问题小伙伴们是不是已经都解决了,又是一年毕业季,曲终人散终有时,谨以此文——
与过去挥手作别
与自己握手言和
与大家后会有期

1 功能回顾

1.1 MTO模块

实现PDMS生成MTO单线材料表,导入材料管理软件,为按管线发料提供了数据基础,历经多个项目使用和优化,提升数据导入的质量和智能化校验等功能,在MIS项目增加了MTO数据的变更功能,可以将变更导致的材料变化纳入MTO数据管理(不过好像没用起来),这个模块是实战中应用最多的模块没有之一,功能最成熟,运用效果也不错,是我们打磨时间最长的模块。

1.2 请购模块

根据采购包分组信息自动从MTO材料池中进行汇料生成请购量单,这个功能设计非常精巧。增加了材料多批汇料的计算策略,余量系数的设定,管子长度的自动圆整,超出设计量的请购数量预警等细节。

开发了询价单输入和询价信息导入功能,但大部分项目没有用到询价功能,实践中询价工作无法将量单按软件既定格式固化并批量输入。请购模块也是实战应用最多的模块之一,功能成熟,运用效果也不错。

1.3 采购模块

主要功能是做采购合同,包括合同信息和编制量单,后期取消了量单输入的繁琐操作,直接从请购单继承量单数据,并且可以做分拆。这个模块推广非常不容易,采购专业配合度决定了最终应用的效果。多个项目积累了大量有价值的数据,也有部分项目半途而废。

采购业务流程非常复杂,受干扰因素多,系统面面俱到很困难,需求的准确性也不好把握。我们在管理流程的规范性和灵活性中不断地寻找平衡。后期研究并应用了文档在线编辑、电子标签FRID等技术。从采购模块里还分拆出了供应商管理模块,后来逐渐演化为一个独立的系统并成为了公司级供应商门户网站的后端管理模块,其中的供应商评价、履约评价、产品目录等功能对于供应商管理非常有价值。这个模块只在部分项目使用的比较成功,与预想的目标还有差距。

1.4 催交模块

催交这个投入了巨大人力,需求反复,几乎重做了三遍。公司在物流环节投入的资源很有限,执行能力不足。这个模块期望实现的“合同量单-箱单-到货单”数据映射目标实现不了,导致材料的全生命周期数据无法一一对应。该问题在短期内可能无法解决,涉及到行业工作模式、供应链的行业特点、管理成本等诸多方面。

1.5 现场管理模块

现场模块应用的情况远远好于我的预期,几个大EPC项目坚持到底既在情理之中又在意料之外。情理之中是因为我一直坚信现场材料管理是现场项目管理重要的刚需,意外是因为这么复杂的场景用到最后需要太多的付出和坚持,现场的同事们竟然做到了,非常不容易,也从一个侧面证明的现场对管好材料的迫切需求,证明软件能协助管好材料,虽然做不到100%,但是至少在几个坚持到底的EPC大项目上得到了不同程度的接受,这给了我们莫大的信心。

1.6 数据分析和看板模块

在MIS项目上做了尝试,增加了很多统计图表效果,但是我觉得挖掘出的数据价值不足,缺少算法或者方法论支撑,对数据的挖掘还停留在比较肤浅的统计层面,报表很多但是有价值的分析成果不多。当然,数据样本不足也是问题之一。

1.7 其它模块

其它模块做的都是情怀。

2 最后几个问题

2.1 按管线发料和直接发料重叠

按管线发料和直接发料重叠,这个问题的原因是没有根据材料类型规划哪些按管线发料哪些按装置发料,提前做了规划的项目后期执行的非常好,(例如:高安,图克)。

系统在这个问题上也有缺陷,客观上两种发料方式大家都需要,任何一种材料在理论上都应该根据项目的实际情况允许按管线发出或者是直接发出。但是按两种计算方式核减材料数量,汇总时核减的总数没有办法对齐。

我觉得最终的答案在VPRM中,VPRM里并没有真正意义上的按管线发料,他的思路叫按计划发料,这个计划里包括勾选管线组成发料的范围,所以我们的出库发料不应该使用两种计算口径,应该保留直接发料这一个口径,在直接发料的过程中,可以关联施工领料计划,在领料计划里勾选管线,并根据管线自动汇料,形成领料清单,再通过直接发料的方式,核减材料数量,核减的时候只记录材料编码和发料数量。这样材料核减的计算方法只有一种口径,就不会因为两种计算口径不同导致总数计错误。通过领料单编号,建立与领料计划的映射关系,依然可以对材料进行追溯。

我们总想搞清楚这些材料原本该谁用,实际该谁用,谁又借去用,这种思路从一开始就是错的。其实不存在原本该谁用,应该所有人都按计划,计划谁先用谁就先用。更不应该有借用,你都允许借用那为什么一开始还规定该谁用呢,最后还不是谁急用谁先借(用),纯属自己挖坑自己跳。

两种计算方式的区别
在这里插入图片描述

2.2 YHA 材料编码的唯一性问题

问题描述:
同一个材料编码,只要外径、壁厚、材质等信息一致,编码就唯一,没有区分材料等级。如果区分材料等级,那么材料编码数量会出现大幅增加,而且本来可以互用的材料不能互用,增加了管理成本。由于壁厚加厚是合同签订后,厂家反馈才确定的,这时候项目图纸都已经入库了,修改设计数据源头已经不可能,这是症结所在,所以项目想通过在已有材料编码上增加A/B/C后缀以示壁厚区别。

我觉得答案还是在VPRM里,代材,这个我们一直嫌弃不好用的功能。这个功能的设计理念完美(从理论上)解决这个问题,为什么说理论上,因为实际也很难落实,改图纸和合同清单都是不可行的,代材不是修改既有数据,而是追加信息。这个逻辑是对的,已经定板的东西是不能改的,牵一发动全身,要付出巨大的成本,中国为啥可以瞎改因为人力成本低,图纸也好合同清单也好改一百次不加钱,未来这些都会纠正的,宇宙的尽头终将是正义。

我们可以在代材管理流程上做一些优化改进,如果是高代低,直接在高材料上标低材料的编码,现场直接拿着用不出事,低代高理论上不允许;如果想精细化管理,就给厂家发去代材的材料编码A用于标识在拟发货的代材上,在系统里用代材功能输入代材编码A,替换原来的编码B,后续电子台账都按A计,实际操作需要花费不少人力成本。

相同编码不同等级的材料在不同阶段不同视角是应该分项还是合并同类项,管理的原则要定下来,而且要全部项目统一标准。编码的变更有一些是来自于非设计端的随意变更,这个变更在项目管理角度来看又有合理的成分,材料的全生命周期是一个系统性工程,有时候我们要跳出技术层,从其他的一些角度辩证地看待这些问题。

2.3 “合同量单-箱单-入库单” 数据映射

这个问题不展开了,这个数据映射问题在可预见的时间内都无法解决的,涉及到物流管理、仓储管理、包装、运输、供应链管理方方面面的细节,所有的环节都要标准化规范化材料信息,颗粒度完全一致。大宗消费品比较容易做到。工业品受种种原因的影响难以做到。

3 关于未来的思考

3.1 三个专业之间的关系

一个新专业的诞生和发展的过程非常艰难,特别是自下而上生长,没有制度加持,没有板凳可坐,没有流程赋权。不知道经过了两年这些问题有没有改观,我记得好几个项目执行阶段,材料控制和采购两个专业相爱相杀,从最开始的格格不入,到最后磨合的渐入佳境,又时而反复,每一个人都付出了巨大的努力,像唐吉坷德一样勇往直前。

材料管理抓手有三:费用、进度、数量。我觉得在宇宙的尽头,材料控制会回归到项目控制成为其一部分,将材料费用和进度管理纳入项目控制管理,材料的数量管理交给设计专业,材料控制在我们搞不清楚材料应该如何管的时候站出来勇敢地担负起摸着石头过河的任务,最终以为公司建立好材料控制管理体系的方式完成历史使命。
在这里插入图片描述

3.2 数据价值

材料控制和采购在很多控制指标上可以交互,我在图里画了一些,还有很多方面,没有一一列出。其中很多数据是非常有价值的,例如:价格库、履约评价、费用和进度的阀值,对阈值、变更等控制指标的检测预警、物流和仓储数据的挖掘,从数据收集和分析来感知用户(供应商、化建施工单位等)行为,反推管理的合理性和有效性,为决策提供数据支持,为项目提供历史经验,对未来进行预估评判。

3.3 系统的迭代与发展

寻找提升价值的点,我之前有想过大概三个方面,每一个点都足够做很久:
在数智化建设方向,与设计平台数据集成,向上游延伸;
在项目管理方向,逐渐融入或者集成项目管理平台(融入会让系统失去独立性,无法在成为独立软件,软件的迭代会收到很多限制),为整个项目信息化管理生产材料管理过程数据,把数据分析挖掘交给大数据平台;
移动端、自动化数据采集、智能化决策辅助施工、接入智慧仓库、智慧建管运维。

4 结束

材料软件走到今天只能说完成了从0到1,应该还有一个孵化的过程,在智能化、物联网等技术的融合缺乏接入点,需要更多的资源,路阻且长,但是这是凤凰涅槃的必由之路;

我觉得做材料管理软件最大的收获就是体会到了什么叫十年磨一剑。从最开始购买商业软件,到自己完全理解吃透,再到根据公司实际流程重新设计,完全依靠自主力量开发,十几年时间迭代了三个大版本。有幸跟随公司发展的脚步,走遍天南海北,去了很多项目现场做技术支持,从大山深处到戈壁滩,从仓库货架到塔架顶端,在内蒙的沙尘暴里伸手不见五指,在仓库里和化建工人一起搬阀门。系统从最早的ASP.NET到后来的MVC/前后端分离+专业UI再到移动手持PDA,我也跟随着这个系统一起成长。

做软件从来就不是一蹴而就的事情,开发一个软件大概需要一年,吃透一个软件可能需要十年,打磨它可能需要一辈子。只要我们专注做这件事,日积月累一定会有所收获,即使遭遇挫折,也请做我们该做的事情,并接受他的事与愿违。

因为一些原因我提前结束了材料管理软件的研发工作,开始了新的征程,希望同学们继续加油,愿我们在胜利的彼岸再次相遇。

相关文章:

工程物料管理信息化建设(十二)——关于工程物料管理系统最后的思考

目录 1 功能回顾1.1 MTO模块1.2 请购模块1.3 采购模块1.4 催交模块1.5 现场管理模块1.6 数据分析和看板模块1.7 其它模块 2 最后几个问题2.1 按管线发料和直接发料重叠2.2 YHA 材料编码的唯一性问题2.3 “合同量单-箱单-入库单” 数据映射 3 关于未来的思考3.1 三个专业之间的关…...

什么是API网关?——驱动数字化转型的“隐形冠军”

什么是API网关 API网关(API Gateway)是一个服务器,位于应用程序和后端服务之间,提供了一种集中式的方式来管理API的访问。它是系统的入口点,负责接收并处理来自客户端的请求,然后将请求路由到相应的后端服…...

Java 序列化和反序列化为什么要实现 Serializable 接口?

序列化和反序列化 序列化:把对象转换为字节序列的过程称为对象的序列化. 反序列化:把字节序列恢复为对象的过程称为对象的反序列化. 什么时候需要用到序列化和反序列化呢或者对象序列化的两种用途… : (1) 对象持久化:把对象的…...

【【萌新的SOC学习之GPIO学习 水】】

萌新的SOC学习之GPIO学习 General Purpose I/O 通用I/O zynq-7000 SOC PS 分为四大部分 APU application Processor UintMemoryIO外设Interconnect 内部互联 PL : IO外设 GPIO可以连接通用的设备(比如按键) 也可以用GPIO模拟其他的协议 GP…...

10-Node.js入门

01.什么是 Node.js 目标 什么是 Node.js,有什么用,为何能独立执行 JS 代码,演示安装和执行 JS 文件内代码 讲解 Node.js 是一个独立的 JavaScript 运行环境,能独立执行 JS 代码,因为这个特点,它可以用来…...

Redis 的过期键 | Navicat 技术干货

Redis 是一种高性能的内存数据存储,以其速度和多功能性而闻名。其中一个有用的特性是为键设置过期时间的功能。在 Redis 中,为键设置过期时间对于管理数据和确保过时或临时数据自动从数据库中删除是至关重要的。在本文中,我们将探讨在 redis-…...

IDC服务器商是如何保护服务器的数据安全

服务器是作为一个公司存储数据和管理服务的设备,随着网络的不断发展大数据的普遍性,所以数据安全问题也越来越受到企业和个体的重视,那么IDC服务器商家是如何对服务器的数据进行安全保护的呢? 配置防火墙。防火墙是服务器的必备工…...

c++中什么时候用double?

c中什么时候用double? 在C中,通常使用double数据类型来表示浮点数,特别是当需要更高的精度时。以下是一些情况下可以考虑使用double的示例: 1. **需要高精度的计算**:当您需要进行精确的浮点数计算时,double通常比flo…...

TCP/IP(四)TCP的连接管理(一)三次握手

一 tcp连接回顾 部分内容来自小林coding TCP篇 记录的目的: 亲身参与进来,加深记忆 ① 引入 前面我们知道: TCP 是面向连接 [点对点的单播]的、可靠的、基于字节流的传输层通信协议面向连接意味着:在使用TCP之前,通信双方必须先建立一…...

bash上下键选择选项demo脚本

效果如下: 废话不多说,上代码: #!/bin/bashoptions("111" "222" "333" "444") # 选项列表 options_index0 # 默认选中第一个选项 options_len${#options[]}echo "请用上下方向键进行选择&am…...

cf 1886A

题目是输入一个数字&#xff0c;分解成三个数字的和&#xff0c;这三个数字都不相同&#xff0c;并且都不可以被三整除&#xff0c;如果存在输出YES并且输出任意一组可能的三个数字&#xff0c;否则输出NO 代码 #include<bits/stdc.h> using namespace std;int main() …...

Spring5应用之事务属性

作者简介&#xff1a;☕️大家好&#xff0c;我是Aomsir&#xff0c;一个爱折腾的开发者&#xff01; 个人主页&#xff1a;Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏&#xff1a;Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言事务…...

C# 搭建一个简单的WebApi项目23.10.10

一、创建Web API 1、创建一个新的web API项目 启动VS 2019&#xff0c;并在“开始页”选择“创建新项目”。或从“文件”菜单选择“新建”&#xff0c;然后选择“项目”。 选择ASP.NET Web应用程序(.NET Framework) 2.点击下一步&#xff0c;到这个页面时选择Web API。 3.选中…...

VGG卷积神经网络实现Cifar10图片分类-Pytorch实战

前言 当涉足深度学习&#xff0c;选择合适的框架是至关重要的一步。PyTorch作为三大主流框架之一&#xff0c;以其简单易用的特点&#xff0c;成为初学者们的首选。相比其他框架&#xff0c;PyTorch更像是一门易学的编程语言&#xff0c;让我们专注于实现项目的功能&#xff0…...

CentOS 7文件系统中的软链接和硬链接

软链接&#xff08;Symbolic Link&#xff09; 软链接&#xff0c;也称为符号链接&#xff0c;是一个指向另一个文件或目录的特殊类型的文件。它是一个指向目标文件的符号&#xff0c;就像快捷方式一样。软链接的创建和使用非常灵活&#xff0c;适用于各种情况。 创建软链接 …...

【AI】深度学习——前馈神经网络——全连接前馈神经网络

文章目录 1.1 全连接前馈神经网络1.1.1 符号说明超参数参数活性值 1.1.2 信息传播公式通用近似定理 1.1.3 神经网络与机器学习结合二分类问题多分类问题 1.1.4 参数学习矩阵求导链式法则更为高效的参数学习反向传播算法目标计算 ∂ z ( l ) ∂ w i j ( l ) \frac{\partial z^{…...

超简单的视频截取方法,迅速提取所需片段!

“视频可以截取吗&#xff1f;用相机拍摄了一段视频&#xff0c;但是中途相机发生了故障&#xff0c;录进去了很多不需要的片段&#xff0c;现在想截取一部分视频出来&#xff0c;但是不知道方法&#xff0c;想问问广大的网友&#xff0c;知不知道视频截取的方法。” 无论是工…...

ArcGIS/GeoScene脚本:基于粒子群优化的支持向量机回归模型

参数输入 1.样本数据必须包含需要回归的字段 2.回归字段是数值类型 3.影响因子是栅格数据&#xff0c;可添加多个 4.随机种子可以确保每次运行的训练集和测试集一致 5.训练集占比为0-1之间的小数 6.迭代次数&#xff1a;迭代次数越高精度越高&#xff0c;但是运行时间越长…...

vue3组件的通信方式

一、vue3组件通信方式 通信仓库地址:vue3_communication: 当前仓库为贾成豪老师使用组件通信案例 不管是vue2还是vue3,组件通信方式很重要,不管是项目还是面试都是经常用到的知识点。 比如:vue2组件通信方式 props:可以实现父子组件、子父组件、甚至兄弟组件通信 自定义事件:可…...

Qt QPair

QPair 文章目录 QPair 摘要QPairQPair 特点代码示例QPair 与 QMap 区别 关键字&#xff1a; Qt、 QPair、 QMap、 键值、 容器 摘要 今天在观摩小伙伴撸代码的时候&#xff0c;突然听到了QPair自己使用Qt开发这么就&#xff0c;竟然都不知道&#xff0c;所以趁没有被人发…...

K8S云计算系列-(3)

K8S Kubeadm案例实战 Kubeadm 是一个K8S部署工具&#xff0c;它提供了kubeadm init 以及 kubeadm join 这两个命令来快速创建kubernetes集群。 Kubeadm 通过执行必要的操作来启动和运行一个最小可用的集群。它故意被设计为只关心启动集群&#xff0c;而不是之前的节点准备工作…...

ardupilot罗盘数据计算航向

目录 文章目录 目录摘要1.数据特点2.数据结论1.结论2.结论摘要 本节主要记录ardupilot 根据罗盘数据计算航向的过程。 如果知道了一组罗盘数据,我们可以粗略估计航向:主要后面我们所说的X和Y都是表示的飞机里面的坐标系,也就是X前Y右边,如果按照罗盘坐标系Y实际在左边。 我…...

第六章:最新版零基础学习 PYTHON 教程—Python 正则表达式(第一节 - Python 正则表达式)

在本教程中,您将了解RegEx并了解各种正则表达式。 常用表达为什么使用正则表达式基本正则表达式更多正则表达式编译的正则表达式 目录​​​​​​​ 元字符 为什么是正则表达式?...

docker安装Jenkins完整教程

1.docker拉取 Jenkins镜像并启动容器 新版本的Jenkins依赖于JDK11 我们选择docker中jdk11版本的镜像 # 拉取镜像 docker pull jenkins/jenkins:2.346.3-2-lts-jdk11 2.宿主机上创建文件夹 # 创建Jenkins目录文件夹 mkdir -p /data/jenkins_home # 设置权限 chmod 777 -R /dat…...

[CISCN 2019初赛]Love Math - RCE(异或绕过)

[CISCN 2019初赛]Love Math 1 解题流程1.1 分析1.2 解题题目代码: <?php //听说你很喜欢数学,不知道你是否爱它胜过爱flag if(!isset($_GET[c]))...

C++ 使用getline()从文件中读取一行字符串

我们知道,getline() 方法定义在 istream 类中,而 fstream 和 ifstream 类继承自 istream 类,因此 fstream 和 ifstream 的类对象可以调用 getline() 成员方法。 当文件流对象调用 getline() 方法时,该方法的功能就变成了从指定文件中读取一行字符串。 该方法有以下 2 种语…...

JS进阶-原型

原型 原型就是一个对象&#xff0c;也称为原型对象 构造函数通过原型分配的函数是所有对象所共享的 JavaScript规定&#xff0c;每一个构造函数都有一个prototype属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象 这个对象可以挂载函数&#xff0c;对象实…...

虹科方案 | 汽车CAN/LIN总线数据采集解决方案

全文导读&#xff1a;现代汽车配备了复杂的电子系统&#xff0c;CAN和LIN总线已成为这些系统之间实现通信的标准协议&#xff0c;为了开发和优化汽车的电子功能&#xff0c;汽车制造商和工程师需要可靠的数据采集解决方案。基于PCAN和PLIN设备&#xff0c;虹科提供了一种高效、…...

HTML5+CSSDAY4综合案例一--热词

样式展示图&#xff1a; 代码如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>热词…...

【源码】hamcrest 源码阅读 泛型 extends 和迭代器模式

文章目录 前言1. 泛型参数和自定义迭代器1.1 使用场景1.2 实现 2. 值得一提 前言 官方文档 Hamcrest Tutorial 上篇文章 Hamcrest 源码阅读及空对象模式、模板方法模式的应用 本篇文章 迭代器模式 1. 泛型参数和自定义迭代器 hamcrest 作为一个matcher库&#xff0c;把某个…...