工程物料管理信息化建设(十二)——关于工程物料管理系统最后的思考
目录
- 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
题目是输入一个数字,分解成三个数字的和,这三个数字都不相同,并且都不可以被三整除,如果存在输出YES并且输出任意一组可能的三个数字,否则输出NO 代码 #include<bits/stdc.h> using namespace std;int main() …...
Spring5应用之事务属性
作者简介:☕️大家好,我是Aomsir,一个爱折腾的开发者! 个人主页:Aomsir_Spring5应用专栏,Netty应用专栏,RPC应用专栏-CSDN博客 当前专栏:Spring5应用专栏_Aomsir的博客-CSDN博客 文章目录 参考文献前言事务…...
C# 搭建一个简单的WebApi项目23.10.10
一、创建Web API 1、创建一个新的web API项目 启动VS 2019,并在“开始页”选择“创建新项目”。或从“文件”菜单选择“新建”,然后选择“项目”。 选择ASP.NET Web应用程序(.NET Framework) 2.点击下一步,到这个页面时选择Web API。 3.选中…...
VGG卷积神经网络实现Cifar10图片分类-Pytorch实战
前言 当涉足深度学习,选择合适的框架是至关重要的一步。PyTorch作为三大主流框架之一,以其简单易用的特点,成为初学者们的首选。相比其他框架,PyTorch更像是一门易学的编程语言,让我们专注于实现项目的功能࿰…...
CentOS 7文件系统中的软链接和硬链接
软链接(Symbolic Link) 软链接,也称为符号链接,是一个指向另一个文件或目录的特殊类型的文件。它是一个指向目标文件的符号,就像快捷方式一样。软链接的创建和使用非常灵活,适用于各种情况。 创建软链接 …...
【AI】深度学习——前馈神经网络——全连接前馈神经网络
文章目录 1.1 全连接前馈神经网络1.1.1 符号说明超参数参数活性值 1.1.2 信息传播公式通用近似定理 1.1.3 神经网络与机器学习结合二分类问题多分类问题 1.1.4 参数学习矩阵求导链式法则更为高效的参数学习反向传播算法目标计算 ∂ z ( l ) ∂ w i j ( l ) \frac{\partial z^{…...
超简单的视频截取方法,迅速提取所需片段!
“视频可以截取吗?用相机拍摄了一段视频,但是中途相机发生了故障,录进去了很多不需要的片段,现在想截取一部分视频出来,但是不知道方法,想问问广大的网友,知不知道视频截取的方法。” 无论是工…...
ArcGIS/GeoScene脚本:基于粒子群优化的支持向量机回归模型
参数输入 1.样本数据必须包含需要回归的字段 2.回归字段是数值类型 3.影响因子是栅格数据,可添加多个 4.随机种子可以确保每次运行的训练集和测试集一致 5.训练集占比为0-1之间的小数 6.迭代次数:迭代次数越高精度越高,但是运行时间越长…...
vue3组件的通信方式
一、vue3组件通信方式 通信仓库地址:vue3_communication: 当前仓库为贾成豪老师使用组件通信案例 不管是vue2还是vue3,组件通信方式很重要,不管是项目还是面试都是经常用到的知识点。 比如:vue2组件通信方式 props:可以实现父子组件、子父组件、甚至兄弟组件通信 自定义事件:可…...
Qt QPair
QPair 文章目录 QPair 摘要QPairQPair 特点代码示例QPair 与 QMap 区别 关键字: Qt、 QPair、 QMap、 键值、 容器 摘要 今天在观摩小伙伴撸代码的时候,突然听到了QPair自己使用Qt开发这么就,竟然都不知道,所以趁没有被人发…...
CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
前端倒计时误差!
提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
如何在网页里填写 PDF 表格?
有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据ÿ…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
