一、业务背景:
在研发PLM中,研发物料和BOM等业务类型在新增的时候,创建对象和创建日期会跟随版本的变化而变化,会根据物料和BOM的升版操作的对象人员而变化,导致升版几次过后创建人和日期字段的值已经不是最初的初版的创建人和时间了。如果有研发人员想直观的看到初版创建人和时间,而不是通过点开履历去查看的话,可以这样处理。
二、如何添加初始创建人和创建时间呢?
1、在PDM基础对象扩展里面添加两个文本字段,初始创建人和初始创建人时间。标识和字段名可以自定义,尽量设计成方便自己使用的标识和字段名。
二、然后在物料或者BOM业务类型配置里面,属性里面添加这2个字段,勾选上只读。
3、然后设置字段的格式定义,点击会调到创建界面,然后字段的话选创建人,选项里面记得选创建更新。表示每次新增物料或者BOM的时候会取创建人和创建时间到初始创建人和初始创建时间上面,并且可以保持不变化。
系统自带的创建人和创建时间是会随着物料和BOM升版操作而变化的。
同理下面的日期也是一样设置。
然后添加完成之后,可以在物料新增里面验证下看看。
注意:此字段添加只针对后续物料和BOM新增的时候才会更新,如果需要更新历史物料数据和BOM数据的初始创建人和创建日期的话,需要数据库里面更新,要数据库里面找到最早创建的那个创建者名字和日期,然后写SQL更新一下就OK了。
以下是SQL更新语句,可供参考:
--此语句为查询 物料BOM最早版本的时间和创建人姓名
SELECT *
fROM(
SELECT ROW_NUMBER() OVER(PARTITION BY B.FID ORDER BY V.FVERSIONID) AS ROWNUM,
B.FID AS 对象内码, B.FCODE as 对象编码, BV.FCREATEDATE as 最早创建时间, L.FNAME AS 初始创建人
FROM T_PLM_PDM_BASE B
INNER JOIN T_PLM_CFG_VERLIST V ON B.FID = V.FPDMBASE
INNER JOIN T_PLM_PDM_BASEVERSION BV ON BV.FID = V.FVERSIONID
INNER JOIN T_SEC_USER L on l.FUSERID = BV.FCREATORID
WHERE B.FID > 0 AND B.FISCHANGEOBJECT = 0 AND V.FISDELETE = 0 AND (
B.FCATEGORYID LIKE '101%' OR -- 物料类型过滤
B.FCATEGORYID LIKE '103%' -- BOM类型过滤
)
) t
where t.ROWNUM = 1
--更新语句参考
UPDATE Z
SET F_BHR_CSCJSJ = t.FCREATEDATE, --初始创建时间字段(根据实际配置调整)
F_BHR_CSCJR = t.FNAME --初始创建人字段字段(根据实际配置调整)
FROM T_PLM_PDM_BASE B
INNER JOIN T_PLM_PDM_BASE_0 Z ON Z.FID = B.FID
INNER JOIN (
SELECT ROW_NUMBER() OVER(PARTITION BY B.FID ORDER BY V.FVERSIONID ) AS ROWNUM,
B.FID, BV.FCREATEDATE, L.FNAME
FROM T_PLM_PDM_BASE B
INNER JOIN T_PLM_CFG_VERLIST V ON B.FID = V.FPDMBASE
INNER JOIN T_PLM_PDM_BASEVERSION BV ON BV.FID = V.FVERSIONID
INNER JOIN T_SEC_USER L on l.FUSERID = BV.FCREATORID
WHERE B.FID > 0 AND B.FISCHANGEOBJECT = 0 AND V.FISDELETE = 0
AND (
B.FCATEGORYID LIKE '101%' OR -- 物料类型过滤
B.FCATEGORYID LIKE '103%' -- BOM类型过滤
)
) t ON B.FID = T.FID
where t.ROWNUM = 1
推荐阅读