UCML针对数据表的修改自定义维护数据变更记录

1、BPO新建服务端函数,在服务端业务提交后调用,参数:VCName

 1 DBLayer.ProjectM.yq_projectplan objyq_projectplan = new DBLayer.ProjectM.yq_projectplan();
 2 DBLayer.ProjectM.yq_projectplanInfo objyq_projectplanInfo = new DBLayer.ProjectM.yq_projectplanInfo();
 3 string result = "";
 4 DataTable deltaTable = BC_projectplansLBase.deltaTable;
 5 //获取VC字段
 6 DataTable fieldArray = GetFieldArray(vcname);
 7 //用户信息
 8 string userID = base.loginUserInfo.UserOID.ToString();
 9 string userName = base.loginUserInfo.PersonName .ToString();
10 string tableName = "yq_projectplan";
11 string oldValue = "",newValue = "";
12 UCMLCommon.DataChangeLog dlog = new UCMLCommon.DataChangeLog();
13 
14 for (int i = 0; i < deltaTable.Rows.Count; i++)
15 {
16    if (deltaTable.Rows[i].RowState == DataRowState.Modified){
17         string COID = deltaTable.Rows[i]["yq_projectplanOID"].ToString();//数据主键 
18            string NewOID = Guid.NewGuid().ToString();
19            for(int j=0;j<fieldArray.Rows.Count;j++){
20                string fieldname = fieldArray.Rows[j]["FieldName"].ToString();
21                string fielddesc = fieldArray.Rows[j]["ChineseName"].ToString();
22                //遍历判断每个字段
23                if (!deltaTable.Rows[i][""+fieldname+""].Equals(deltaTable.Rows[i][""+fieldname+"", DataRowVersion.Original]))
24             {
25                    oldValue = deltaTable.Rows[i][""+fieldname+"", DataRowVersion.Original].ToString();
26                 newValue = deltaTable.Rows[i][""+fieldname+""].ToString();
             //插入单个字段的修改记录 
27 string resultlog = dlog.SetInsertLog(NewOID,userID,userName,tableName,COID,fieldname,fielddesc,oldValue,newValue,"修改","数据修改"); 28 } 29 } 30 //插入针对数据行变更的修改记录 31 string resultlogm = dlog.SetInsertLogM(NewOID,userID,userName,tableName,COID,"修改","修改保存成功"); 32 } 33 }

2、辅助函数

//查询当前VC前台显示的字段集合,用作辅助遍历判断是否修改值
StringBuilder commandText = new StringBuilder(); commandText.Append(" select FieldName,ChineseName from AppletColumn where AppletOID =(select AppletOID from Applet where AppletName = '"+vcname+"')"); SysDBModel.CodeValue Codeobj = new SysDBModel.CodeValue(); DataTable CodeTable = new DataTable(); Codeobj.ExecuteQuery(commandText.ToString(), CodeTable); return CodeTable;

 

posted @ 2020-04-23 15:45  ZhiPeng007  阅读(271)  评论(0编辑  收藏  举报