二开案例.工序汇报.工序汇报分录中操作工二开

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.工序汇报.工序汇报分录中操作工二开

近期有客户反馈,在云之家通过移动端审核工序汇报单时,【操作工】字段无法显示出操作工的名字。

究其原因,是工序汇报单上的【操作工】字段共有三个:操作工子分录.操作工(基础资料)、汇总分录.操作工信息(文本)、汇总分录.操作工(多选基础资料),真正有业务意义、会写入数据库的只有第一个(即操作工分录中的操作工基础资料),而汇总分录上的两个字段只做展示,并不会存储到数据库中。


而业务审批并不支持子分录字段的显示,只支持分录中的字段显示,且只能从数据库中读取字段值,因此,汇总分录中的【操作工】,也就无法显示出操作工名字了。


为了解决移动审批的显示问题,可以对汇总分录上的操作工字段进行二开,设置好“字段名”属性,以便工序汇报单保存时能够存储到数据库中。同时,对已经存在的工序汇报单进行数据升级,将操作工子分录中的操作工字段值,赋值到汇总分录中的操作工字段中。为了方便数据升级,推荐使用操作工信息(文本)字段;如果必须使用操作工(多选基础资料)字段,则需要代码升级,因为会涉及到多选基础资料表的主键获取,sql脚本难以实现。


  • 操作工信息(文本)字段二开步骤:

  1. 扩展“工序汇报”,对字段FMultiEmpName设置“字段名”属性


  2. 对已有的工序汇报单进行数据升级,参考sql如下:

declare @currentindex int
declare @detailcount int
begin

set @currentindex=2

--操作工子分录的最大记录数
SELECT @detailcount= MAX(TMP.RN)
FROM (
SELECT ROW_NUMBER() OVER (PARTITION BY RD.FENTRYID ORDER BY RD.FDETAILID) RN
FROM T_SFC_OPTRPTENTRY RE
INNER JOIN T_SFC_OPTRPTDETAIL RD ON RD.FENTRYID = RE.FENTRYID
INNER JOIN T_HR_EMPINFO_L EL ON EL.FID = RD.FEMPINFOID
WHERE RE.FMULTIEMPNAME IS NULL OR RE.FMULTIEMPNAME = ' '
GROUP BY RE.FENTRYID, EL.FNAME, RD.FENTRYID, RD.FDETAILID
) TMP

--将操作工子分录的首行填入操作工文本
MERGE INTO T_SFC_OPTRPTENTRY T1
USING(
SELECT RE.FENTRYID, TMP.FNAME
FROM T_SFC_OPTRPTENTRY RE
INNER JOIN (
SELECT RE.FENTRYID, EL.FNAME, ROW_NUMBER() OVER (PARTITION BY RD.FENTRYID ORDER BY RD.FDETAILID) RN
FROM T_SFC_OPTRPTENTRY RE
INNER JOIN T_SFC_OPTRPTDETAIL RD ON RD.FENTRYID = RE.FENTRYID
INNER JOIN T_HR_EMPINFO_L EL ON EL.FID = RD.FEMPINFOID
WHERE RE.FMULTIEMPNAME IS NULL OR RE.FMULTIEMPNAME = ' '
GROUP BY RE.FENTRYID, EL.FNAME, RD.FENTRYID, RD.FDETAILID
) TMP ON TMP.FENTRYID = RE.FENTRYID AND TMP.RN = 1
) T2 
ON T1.FENTRYID = T2.FENTRYID
WHEN MATCHED 
THEN UPDATE SET T1.FMULTIEMPNAME = T2.FNAME;

while @currentindex <= @detailcount
begin
--将操作工子分录的其余行拼接到操作工文本
MERGE INTO T_SFC_OPTRPTENTRY T1
USING(
SELECT RE.FENTRYID, TMP.FNAME
FROM T_SFC_OPTRPTENTRY RE
INNER JOIN (
SELECT RE.FENTRYID, EL.FNAME, ROW_NUMBER() OVER (PARTITION BY RD.FENTRYID ORDER BY RD.FDETAILID) RN
FROM T_SFC_OPTRPTENTRY RE
INNER JOIN T_SFC_OPTRPTDETAIL RD ON RD.FENTRYID = RE.FENTRYID
INNER JOIN T_HR_EMPINFO_L EL ON EL.FID = RD.FEMPINFOID
WHERE RE.FMULTIEMPNAME IS NOT NULL AND RE.FMULTIEMPNAME <> ' ' 
AND RE.FMULTIEMPNAME NOT LIKE CONCAT('%', EL.FNAME, '%')
GROUP BY RE.FENTRYID, EL.FNAME, RD.FENTRYID, RD.FDETAILID
) TMP ON TMP.FENTRYID = RE.FENTRYID AND TMP.RN = 1
) T2 
ON T1.FENTRYID = T2.FENTRYID
WHEN MATCHED 
THEN UPDATE SET T1.FMULTIEMPNAME = CONCAT(T1.FMULTIEMPNAME, ',', T2.FNAME);

set @currentindex=@currentindex+1
end

end


  • 操作工(多选基础资料)字段二开步骤:

  1. 扩展“工序汇报”,对字段FOperatorId设置“表名”和“字段名”属性


  2. 对已有的工序汇报单进行数据升级,代码略

二开案例.工序汇报.工序汇报分录中操作工二开

近期有客户反馈,在云之家通过移动端审核工序汇报单时,【操作工】字段无法显示出操作工的名字。究其原因,是工序汇报单上的【操作工】字段...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息