diff --git a/APT.BaseData.Domain/IServices/FM/IFMFlowPermitService.cs b/APT.BaseData.Domain/IServices/FM/IFMFlowPermitService.cs
index b07e2f5..18f78a7 100644
--- a/APT.BaseData.Domain/IServices/FM/IFMFlowPermitService.cs
+++ b/APT.BaseData.Domain/IServices/FM/IFMFlowPermitService.cs
@@ -52,7 +52,7 @@ namespace APT.BaseData.Domain.IServices.FM
         /// 自定义审批流程人员部门信息
         /// 审批流名称
         /// 
-        void InsertApprove(string serialCode, string fromCode, string param, Guid id, string approveCode, Guid? finishNoticeId, bool sendMessage, Action action, Guid? approveId = null, Guid? approveUserId = null, Dictionary dicApproveUser = null, Dictionary dicApproveDepartMentID = null, string NoticeCode = "", string taskSourceFormCode = "", Guid? operaterID = null, string approveTaskName = "", Enums.FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null, int? BSOperateEnum = null);
+        void InsertApprove(string serialCode, string fromCode, string param, Guid id, string approveCode, Guid? finishNoticeId, bool sendMessage, Action action, Guid? approveId = null, Guid? approveUserId = null, Dictionary dicApproveUser = null, Dictionary dicApproveDepartMentID = null, string NoticeCode = "", string taskSourceFormCode = "", Guid? operaterID = null, string approveTaskName = "", Enums.FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null, int? BSOperateEnum = null, Guid? DATA_ID_LOG = null, Guid? DATA_ID_SUB = null);
 
         /// 
         /// 发布审批流
@@ -84,7 +84,7 @@ namespace APT.BaseData.Domain.IServices.FM
         /// 审批流ID(主表如果有存传值进来 )
         /// 审批用户(主表如果有存传值进来 )
         /// 
-        void InsertApproveRisk(List listSerialCode, string fromCode, List listID, string approveCode, Guid? finishNoticeId, bool isSendMessage, Action action, List listParam = null, List listApproveId = null, Guid? approveUserId = null, string taskSourceFormCode = "", Guid? operaterID = null, List ListDepIDNone = null, Enums.FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null);
+        void InsertApproveRisk(List listSerialCode, string fromCode, List listID, string approveCode, Guid? finishNoticeId, bool isSendMessage, Action action, List listParam = null, List listApproveId = null, Guid? approveUserId = null, string taskSourceFormCode = "", Guid? operaterID = null, List ListDepIDNone = null, Enums.FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null, int? iBSOperateEnum = null, Guid? RiskID = null, List listLevel = null, Dictionary> dicLevelSubID = null);
         /// 
         /// 获取流水码
         /// 
diff --git a/APT.BaseData.Services/Services/FM/FMFlowPermitService.cs b/APT.BaseData.Services/Services/FM/FMFlowPermitService.cs
index afb2752..1d89105 100644
--- a/APT.BaseData.Services/Services/FM/FMFlowPermitService.cs
+++ b/APT.BaseData.Services/Services/FM/FMFlowPermitService.cs
@@ -316,7 +316,7 @@ namespace APT.BaseData.Services.Services.FM
         /// 
         /// 审批流名称
         /// 
-        public void InsertApprove(string serialCode, string fromCode, string param, Guid id, string approveCode, Guid? finishNoticeId, bool sendMessage, Action action, Guid? approveId = null, Guid? approveUserId = null, Dictionary dicApproveUser = null, Dictionary dicApproveDepartMentID = null, string NoticeCode = "", string taskSourceFormCode = "", Guid? operaterID = null, string approveTaskName = "", FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null, int? iBSOperateEnum = null)
+        public void InsertApprove(string serialCode, string fromCode, string param, Guid id, string approveCode, Guid? finishNoticeId, bool sendMessage, Action action, Guid? approveId = null, Guid? approveUserId = null, Dictionary dicApproveUser = null, Dictionary dicApproveDepartMentID = null, string NoticeCode = "", string taskSourceFormCode = "", Guid? operaterID = null, string approveTaskName = "", FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null, int? iBSOperateEnum = null, Guid? DATA_ID_LOG = null, Guid? DATA_ID_SUB = null)
         {
             T_PF_APPROVE approve = null;
             //上个消息
@@ -564,33 +564,14 @@ namespace APT.BaseData.Services.Services.FM
                     });
                 }
 
-                if (iBSOperateEnum.HasValue && appdetails != null && appdetails.Any())
+                if (iBSOperateEnum == 200 || iBSOperateEnum == 20 || iBSOperateEnum == 60)
                 {
-                    try
-                    {
-                        OPERATEPOINT_Enums OPERATEPOINT = (OPERATEPOINT_Enums)iBSOperateEnum;
-
-                        List ListUserID = new List();
-                        List ListUserName = new List();
-                        foreach (var item in appdetails)
-                        {
-                            if (item.APPROVE_USER_ID.HasValue)
-                            {
-                                ListUserID.Add(item.APPROVE_USER_ID.Value);
-                            }
-                        }
-                        if (ListUserID.Count > 0)
-                        {
-                            var listUser = GetEntities(e => ListUserID.Contains(e.ID));
-                            for (int i = 0; i < ListUserID.Count; i++)
-                            {
-                                ListUserName.Add(listUser.FirstOrDefault(e => e.ID == ListUserID[i])?.NAME);
-                            }
-                        }
-
-                        listBSLog = GetListOperateLog(OPERATEPOINT, id, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, ListUserID, ListUserName, approve.ORG_ID, null, null);
-                    }
-                    catch { }
+                    listBSLog = GetOperateLogInfo(DATA_ID_LOG, approve.ORG_ID, appdetails, iBSOperateEnum, finishNotice, DATA_ID_SUB);//验收人确认整改
+                }
+                else
+                {
+                    //修改参数到 if (iBSOperateEnum == 200)
+                    listBSLog = GetOperateLogInfo(id, approve.ORG_ID, appdetails, iBSOperateEnum, finishNotice, approve.DATA_ID);
                 }
             }
             this.UnifiedCommit(() =>
@@ -608,9 +589,6 @@ namespace APT.BaseData.Services.Services.FM
                 if (listBSLog != null && listBSLog.Any())
                     BantchSaveEntityNoCommit(listBSLog);//有修改和新增
             });
-
-            //如果 审批流需要执行默认审批 调用 回调方法
-            //回调方法写在之后  不然之前数据都没有保存到数据库  原有的方法不能使用
             if (!string.IsNullOrEmpty(CALLBACK_INTERFACE))
             {
                 if (CALLBACK_INTERFACE.EndsWith("New"))
@@ -1088,7 +1066,7 @@ namespace APT.BaseData.Services.Services.FM
         /// 发起者 用户ID 如未传参 默认当前登陆者 如果审批流包含此人 默认审批流从他开始 他所在节点默认审批通过
         /// 审批流未找到审批人默认组织安全员
         /// 
-        public void InsertApproveRisk(List listSerialCode, string fromCode, List listID, string approveCode, Guid? finishNoticeId, bool isSendMessage, Action action, List listParam = null, List listApproveId = null, Guid? approveUserId = null, string taskSourceFormCode = "", Guid? operaterID = null, List ListDepIDNone = null, FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null)
+        public void InsertApproveRisk(List listSerialCode, string fromCode, List listID, string approveCode, Guid? finishNoticeId, bool isSendMessage, Action action, List listParam = null, List listApproveId = null, Guid? approveUserId = null, string taskSourceFormCode = "", Guid? operaterID = null, List ListDepIDNone = null, FMTASKTYPE? TASK_TYPE = null, int? FREQUENCYE = null, DateTime? DateTimeLastest = null, int? iBSOperateEnum = null, Guid? RiskID = null, List listLevel = null, Dictionary> dicLevelSubID = null) //List   listDataID_Sub 
         {
             #region     参数判断
 
@@ -1111,6 +1089,7 @@ namespace APT.BaseData.Services.Services.FM
             #endregion
 
             List listApprove = new List();
+            List listBSLog = new List();
             List appdetails = new List();
             List appdetailsTemp = null;
             IEnumerable iEnumApprovalRole = null;
@@ -1349,6 +1328,24 @@ namespace APT.BaseData.Services.Services.FM
                         }
                         appdetails.AddRange(appdetailsTemp);
                         listApprove.Add(approve);
+
+
+                        List listLevelSubID = null;
+                        if (dicLevelSubID != null)
+                        {
+                            if (dicLevelSubID.ContainsKey(listLevel[i]))
+                            {
+                                listLevelSubID = dicLevelSubID[listLevel[i]];
+                            }
+                            if (listLevelSubID != null && listLevelSubID.Any())
+                            {
+                                listBSLog.AddRange(GetOperateLogInfo(RiskID, approve.ORG_ID, appdetailsTemp, iBSOperateEnum, finishNotice, listLevelSubID));
+                            }
+                            else
+                            {
+                                listBSLog.AddRange(GetOperateLogInfo(RiskID, approve.ORG_ID, appdetailsTemp, iBSOperateEnum, finishNotice, approve.DATA_ID));
+                            }
+                        }
                     }
                     else
                     {
@@ -1458,6 +1455,22 @@ namespace APT.BaseData.Services.Services.FM
                         }
                     }
                     listApprove.Add(approve);
+
+                    List listLevelSubID = null;
+                    if (dicLevelSubID.ContainsKey(listLevel[0]))
+                    {
+                        listLevelSubID = dicLevelSubID[listLevel[0]];
+                    }
+                    if (listLevelSubID != null && listLevelSubID.Any())
+                    {
+                        listBSLog = GetOperateLogInfo(RiskID, approve.ORG_ID, appdetailsTemp, iBSOperateEnum, finishNotice, listLevelSubID);
+                    }
+                    else
+                    {
+                        listBSLog = GetOperateLogInfo(RiskID, approve.ORG_ID, appdetailsTemp, iBSOperateEnum, finishNotice, approve.DATA_ID);
+                    }
+
+                    //listBSLog = GetOperateLogInfo(RiskID, approve.ORG_ID, appdetailsTemp, iBSOperateEnum, finishNotice, ((listDataID_Sub != null && listDataID_Sub.Any()) ? listDataID_Sub[0] : approve.DATA_ID));
                 }
                 else
                 {
@@ -1471,6 +1484,8 @@ namespace APT.BaseData.Services.Services.FM
                 throw new Exception("方法不知以什么方式来添加多个审批流!");
             }
 
+
+
             this.UnifiedCommit(() =>
             {
                 if (action != null)
@@ -1479,6 +1494,8 @@ namespace APT.BaseData.Services.Services.FM
                     BantchAddEntityNoCommit(listApprove);
                 if (appdetails != null && appdetails.Any())
                     BantchAddEntityNoCommit(appdetails);
+                if (listBSLog != null && listBSLog.Any())
+                    BantchSaveEntityNoCommit(listBSLog);
                 if (finishNotice != null)
                     UpdateEntityNoCommit(finishNotice, "NOTICE_STATUS", "TASK_DT", "MODIFIER_ID");
                 if (listNotice.Count > 0)
@@ -1659,6 +1676,7 @@ namespace APT.BaseData.Services.Services.FM
             }
             return approveId;
         }
+
         /// 
         /// 根据部门树查找审核人
         /// 
@@ -1985,10 +2003,120 @@ namespace APT.BaseData.Services.Services.FM
 
         //#endregion
 
+        private List GetOperateLogInfo(Guid? dataId, Guid? ORG_ID, List appdetails, int? iBSOperateEnum, T_FM_NOTIFICATION_TASK finishNotice, Guid? DATA_ID_SUB = null)
+        {
+            List listOperateLog = null;
+            if (iBSOperateEnum.HasValue && dataId.HasValue)
+            {
+                List ListUserIDDone = new List();
+                try
+                {
+                    OPERATEPOINT_Enums OPERATEPOINT = (OPERATEPOINT_Enums)iBSOperateEnum;
+                    List ListUserID = new List();
+                    List ListUserName = new List();
+                    if (appdetails != null && appdetails.Any())
+                    {
+                        foreach (var item in appdetails)
+                        {
+                            if (item.APPROVE_USER_ID.HasValue)
+                            {
+                                ListUserID.Add(item.APPROVE_USER_ID.Value);
+                                if (item.NODE_APPROVE_STATUS == 10)
+                                    ListUserIDDone.Add(item.APPROVE_USER_ID.Value);
+                            }
+                        }
+                        if (ListUserID.Count > 0)
+                        {
+                            var listUser = GetEntities(e => ListUserID.Contains(e.ID));
+                            for (int i = 0; i < ListUserID.Count; i++)
+                            {
+                                ListUserName.Add(listUser.FirstOrDefault(e => e.ID == ListUserID[i])?.NAME);
+                            }
+                        }
+                    }
+
+                    DateTime? taskEnd = null;
+                    if (finishNotice != null)
+                        taskEnd = finishNotice.TASK_ENDDT;
+                    listOperateLog = GetListOperateLog(OPERATEPOINT, dataId.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, ListUserID, ListUserName, ORG_ID, DATA_ID_SUB, ListUserIDDone, false, taskEnd);
+                }
+                catch { }
+            }
+            return listOperateLog;
+        }
+
+        /// 
+        /// 更新某个 日志 并且添加多组带操作日志
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        private List GetOperateLogInfo(Guid? dataId, Guid? ORG_ID, List appdetails, int? iBSOperateEnum, T_FM_NOTIFICATION_TASK finishNotice, List ListDATA_ID_SUB)
+        {
+            List listOperateLog = null;
+            if (iBSOperateEnum.HasValue && dataId.HasValue)
+            {
+                List ListUserIDDone = new List();
+                try
+                {
+                    OPERATEPOINT_Enums OPERATEPOINT = (OPERATEPOINT_Enums)iBSOperateEnum;
+                    List ListUserID = new List();
+                    List ListUserName = new List();
+                    if (appdetails != null && appdetails.Any())
+                    {
+                        foreach (var item in appdetails)
+                        {
+                            if (item.APPROVE_USER_ID.HasValue)
+                            {
+                                ListUserID.Add(item.APPROVE_USER_ID.Value);
+                                if (item.NODE_APPROVE_STATUS == 10)
+                                    ListUserIDDone.Add(item.APPROVE_USER_ID.Value);
+                            }
+                        }
+                        if (ListUserID.Count > 0)
+                        {
+                            var listUser = GetEntities(e => ListUserID.Contains(e.ID));
+                            for (int i = 0; i < ListUserID.Count; i++)
+                            {
+                                ListUserName.Add(listUser.FirstOrDefault(e => e.ID == ListUserID[i])?.NAME);
+                            }
+                        }
+                    }
+                    var LoginID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value;
+                    DateTime? taskEnd = null;
+                    if (finishNotice != null)
+                        taskEnd = finishNotice.TASK_ENDDT;
+                    listOperateLog = new List();
+
+                    //OPERATEPOINT_Enums.CheckResultAudit => //(int)OPERATEPOINT_Enums.RiskGet
+                    if (OPERATEPOINT == OPERATEPOINT_Enums.RiskInfoCompleteSD)
+                    {
+                        //手动隐患上报
+                        listOperateLog.Add(GetUpdateDeal(OPERATEPOINT, dataId.Value, LoginID, ListDATA_ID_SUB[0], taskEnd));
+                    }
+                    else
+                    {
+                        //看看 是不是可以改到上面方法
+                        listOperateLog.Add(GetUpdateDeal(OPERATEPOINT, dataId.Value, LoginID, null, taskEnd));
+                    }
+                    foreach (var item in ListDATA_ID_SUB)
+                    {
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listOperateLog.Add(AddModel(OPERATEPOINT_Enums.RiskSendAudit, dataId.Value, ListUserID[i], ListUserName[i], ORG_ID, i, false, item));
+                    }
+                }
+                catch { }
+            }
+            return listOperateLog;
+        }
 
         #region      方法重复写 如有修改 需同步修改  BSOperateLogService  对应方法
 
-        public List GetListOperateLog(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserIDLogin, List ListDATA_ID, List ListUserID, List ListUserName, Guid? ORG_ID, Guid? DATA_ID_SUB = null, List ListUserIDDone = null, bool isEnd = true)
+        public List GetListOperateLog(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserIDLogin, List ListDATA_ID, List ListUserID, List ListUserName, Guid? ORG_ID, Guid? DATA_ID_SUB = null, List ListUserIDDone = null, bool isEnd = false, DateTime? TASK_ENDDT = null)
         {
             List listResult = new List();
             T_BS_OPERATE_LOG modelLogUpdate = null;
@@ -1996,56 +2124,66 @@ namespace APT.BaseData.Services.Services.FM
             {
                 case OPERATEPOINT_Enums.GotCheck:
                     //系统触发 只是新增
-                    if (ListUserID != null && ListUserName != null)
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
                         for (int i = 0; i < ListUserID.Count; i++)
-                            listResult.Add(AddModel(OPERATEPOINT, ListDATA_ID[i], ListUserID[i], ListUserName[i], ORG_ID, i));
+                            listResult.Add(AddModel(OPERATEPOINT, ListDATA_ID[i], ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     break;
                 case OPERATEPOINT_Enums.CheckForm:
                     //BS032保存并发送 到审批流
-                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT_Enums.GotCheck, DATA_ID, UserIDLogin);
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT_Enums.GotCheck, DATA_ID, UserIDLogin, null, TASK_ENDDT);
                     if (modelLogUpdate != null)
                         listResult.Add(modelLogUpdate);
-                    if (ListUserID != null && ListUserName != null)
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
                         for (int i = 0; i < ListUserID.Count; i++)
-                            listResult.Add(AddModel(OPERATEPOINT, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i));
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));//OPERATEPOINT => OPERATEPOINT_Enums.CheckAudit
                     break;
                 case OPERATEPOINT_Enums.CheckAudit:
-                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的待办日志
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);
                     if (modelLogUpdate != null)
                         listResult.Add(modelLogUpdate);
-                    if (ListUserID != null && ListUserName != null)
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
                         for (int i = 0; i < ListUserID.Count; i++)//最后一个审批人 添加 通知
-                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckerCheck, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i));
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckerCheck, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     break;
                 case OPERATEPOINT_Enums.CheckerCheck:
-                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
                     if (modelLogUpdate != null)
                         listResult.Add(modelLogUpdate);
                     break;
                 case OPERATEPOINT_Enums.CheckRegister:
                     //检查登记
-                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
                     if (modelLogUpdate != null)
                         listResult.Add(modelLogUpdate);
-                    if (ListUserID != null && ListUserName != null)
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
                         for (int i = 0; i < ListUserID.Count; i++) //发起检查结果确认
-                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckAgree, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i));
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckAgree, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     break;
                 case OPERATEPOINT_Enums.CheckAgree:
-                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
                     if (modelLogUpdate != null)
                         listResult.Add(modelLogUpdate);
-                    if (ListUserID != null && ListUserName != null)
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
                         for (int i = 0; i < ListUserID.Count; i++) //检查结果确认完 直接到审批
-                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckResultAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i));
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckResultAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     break;
                 case OPERATEPOINT_Enums.CheckResultAudit:
-                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
                     if (modelLogUpdate != null)
                         listResult.Add(modelLogUpdate);
                     if (isEnd) //最后一个审批就归档
                     {
-                        listResult.Add(AddModel(OPERATEPOINT_Enums.CheckEnd, DATA_ID, UserIDLogin, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, ORG_ID));
+                        var logEnd = AddModel(OPERATEPOINT_Enums.CheckEnd, DATA_ID, UserIDLogin, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, ORG_ID);
+                        logEnd.OPERTETIME = DateTime.Now;
+                        if (modelLogUpdate != null)
+                            logEnd.ISINTTIME = modelLogUpdate.ISINTTIME;
+                        listResult.Add(logEnd);
+                    }
+                    else if (DATA_ID_SUB != null)
+                    {
+                        if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                            for (int i = 0; i < ListUserID.Count; i++)
+                                listResult.Add(AddModel(OPERATEPOINT_Enums.RiskGet, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     }
                     break;
                 case OPERATEPOINT_Enums.CheckEnd:
@@ -2058,16 +2196,55 @@ namespace APT.BaseData.Services.Services.FM
                 case OPERATEPOINT_Enums.RiskInfoCompleteSD:
                     break;
                 case OPERATEPOINT_Enums.RiskGet:
-                    //审批结束后 如果有隐患 
-                    if (ListUserID != null && ListUserName != null)
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
                         for (int i = 0; i < ListUserID.Count; i++)
-                            listResult.Add(AddModel(OPERATEPOINT, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i));
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskSendAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     break;
-                case OPERATEPOINT_Enums.RiskSend:
+                //case OPERATEPOINT_Enums.RiskSend:
+                //    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
+                //    if (modelLogUpdate != null)
+                //        listResult.Add(modelLogUpdate);
+                //    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                //        for (int i = 0; i < ListUserID.Count; i++)
+                //            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskSendAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                //    break;
+                case OPERATEPOINT_Enums.RiskSendAudit:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskAssignActure, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.RiskAssignActure:
+                    break;
+                case OPERATEPOINT_Enums.RiskNoticeCheckerCheck:
+                    break;
+                case OPERATEPOINT_Enums.RiskNoticeActureCheck:
+                    break;
+                case OPERATEPOINT_Enums.RiskDeal:
+                    break;
+                case OPERATEPOINT_Enums.RiskDealDealCheck:
+                    break;
+                case OPERATEPOINT_Enums.RiskDealCheckerCheck:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskDealAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.RiskDealAudit:
+                    break;
+                case OPERATEPOINT_Enums.RiskEnd:
                     break;
                 default:
                     break;
             }
+
             if (ListUserIDDone != null && ListUserIDDone.Count > 0)
             {
                 //除了登陆者 需要默认操作的
@@ -2090,7 +2267,7 @@ namespace APT.BaseData.Services.Services.FM
         /// 
         /// 
         /// 
-        private T_BS_OPERATE_LOG AddModel(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, string UserName, Guid? ORG_ID, int ORDERNO = 0)
+        private T_BS_OPERATE_LOG AddModel(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, string UserName, Guid? ORG_ID, int ORDERNO = 0, bool isAddLog = false, Guid? DATA_ID_SUB = null)
         {
             T_BS_OPERATE_LOG ModelAdd = new T_BS_OPERATE_LOG()
             {
@@ -2098,17 +2275,17 @@ namespace APT.BaseData.Services.Services.FM
                 ORG_ID = ORG_ID,
                 LOGTYPE = ((int)OPERATEPOINT) > 80 ? LOGTYPE_Enums.RiskSubmit : LOGTYPE_Enums.SafeCheck,
                 DATA_ID = DATA_ID,
-                //DATA_ID_SUB = null,
+                DATA_ID_SUB = DATA_ID_SUB,
                 OPERATEPOINT = OPERATEPOINT,
                 USER_ID = UserID,
                 USRTNAME = UserName,
                 ORDERNO = ORDERNO,
                 //OPERTETIME = null,
-                ISINTTIME = false,
+                //ISINTTIME = false,
                 CREATE_TIME = DateTime.Now,
                 CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID
             };
-            if (APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue && APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value == UserID)
+            if (isAddLog || (APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue && APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value == UserID))
             {
                 ModelAdd.OPERTETIME = DateTime.Now;//默认通过
             }
@@ -2122,15 +2299,24 @@ namespace APT.BaseData.Services.Services.FM
         /// 
         /// 
         /// 
+        /// 
         /// 
-        private T_BS_OPERATE_LOG GetUpdateDeal(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, Guid? DATA_ID_SUB = null)
+        private T_BS_OPERATE_LOG GetUpdateDeal(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, Guid? DATA_ID_SUB = null, DateTime? TASK_ENDDT = null)
         {
+            if (UserID == Guid.Empty)
+            {
+                return null;
+            }
             Expression> expression = e => e.DATA_ID == DATA_ID && e.OPERATEPOINT == OPERATEPOINT && e.USER_ID == UserID;
             if (DATA_ID_SUB.HasValue)
                 expression = expression.And(e => e.DATA_ID_SUB.HasValue && e.DATA_ID_SUB == DATA_ID_SUB);
             var model = GetEntity(expression);
             if (model != null)
+            {
                 model.OPERTETIME = DateTime.Now;
+                if (TASK_ENDDT != null)
+                    model.ISINTTIME = (model.OPERTETIME > TASK_ENDDT.Value ? false : true);
+            }
             return model;
         }
         #endregion
diff --git a/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs b/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs
index df4d446..b65d647 100644
--- a/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs
+++ b/APT.BaseData.Services/Services/PF/PFApproveCallBackService.cs
@@ -23,6 +23,7 @@ using System;
 using System.Collections.Generic;
 using System.Diagnostics;
 using System.Linq;
+using System.Linq.Expressions;
 using System.Reflection;
 using System.Security.Cryptography;
 
@@ -6352,6 +6353,14 @@ namespace APT.BaseData.Services.DomainServices
                     }
 
 
+                    #region    修改操作日志 添加 下一步待操作日志
+                    DateTime? dtTaskEnd = null;
+                    dtTaskEnd = taskFinish?.TASK_ENDDT;
+
+                    var listOperateLog = GetListOperateLog(OPERATEPOINT_Enums.CheckAudit, entity.ID, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, listUserId, listUserName, entity.ORG_ID, null, listUserIDDone, false, dtTaskEnd);
+
+                    #endregion
+
                     //BS034_SHOWPRINT=> BS032_SHOWPRINT
                     NotificationTaskService.SendNotificationTask((entity.NAME + "-确认"), entity.ID, orgId, listUserId, listUserName, DateTime.Now, dtTimeOut, 0, "BS032_SHOWPRINT", () =>
                     {
@@ -6371,7 +6380,8 @@ namespace APT.BaseData.Services.DomainServices
                             UpdateEntityNoCommit(taskFinish);
                         if (listTaskNext != null && listTaskNext.Count > 0)//下个审批节点
                             BantchSaveEntityNoCommit(listTaskNext);
-
+                        if (listOperateLog != null && listOperateLog.Count > 0)//操作记录
+                            BantchSaveEntityNoCommit(listOperateLog);
 
                     }, "", listUserIDDone);
                 }
@@ -6692,9 +6702,15 @@ namespace APT.BaseData.Services.DomainServices
                     #endregion
                 }
                 entity.STATECHECK = STATECHECK.Archived;
+
+                DateTime? dtTaskEnd = null;
+                dtTaskEnd = taskFinish?.TASK_ENDDT;
+
+
                 //给制表人发送待办
                 if (entity.RISKSTATE == 10 && entity.USERID_DOPLAN.HasValue)
                 {
+                    //结束  +  上报
 
                     #region      隐患上报信息  发隐患上报信息 出去  流程各时间也对应
 
@@ -6801,6 +6817,15 @@ namespace APT.BaseData.Services.DomainServices
                     //  });
 
                     // entity.ID  被  modelSub.ID 替换
+
+
+
+                    var listOperateLog = GetListOperateLog(OPERATEPOINT_Enums.CheckResultAudit, entity.ID, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, new List() { entity.USERID_DOPLAN.Value }, new List() { entity.Nav_User.NAME }, entity.ORG_ID, modelSub.ID, null, false, dtTaskEnd);
+
+                    //modelSubOPERATEPOINT_Enums.RiskGet
+                    //var listOperateLogRisk = GetListOperateLog(OPERATEPOINT_Enums.RiskGet, modelSub.ID, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, new List() { entity.USERID_DOPLAN.Value }, new List() { entity.Nav_User.NAME }, entity.ORG_ID, null, null, false, dtTaskEnd);
+
+
                     NotificationTaskService.SendNotificationTask("隐患待上报:" + entity.NAME.Replace("安全检查:", ""), modelSub.ID, entity.ORG_ID, entity.USERID_DOPLAN.Value, entity.Nav_User.NAME, DateTime.Now, dtTimeOut, 0, "BS006", () =>
                     {
                         if (modelApp != null)
@@ -6827,11 +6852,15 @@ namespace APT.BaseData.Services.DomainServices
                             BantchSaveEntityNoCommit(Nav_Files);
                         if (ListRiskSubmitContent != null && ListRiskSubmitContent.Any())
                             BantchSaveEntityNoCommit(ListRiskSubmitContent);
+                        if (listOperateLog != null && listOperateLog.Any())
+                            BantchSaveEntityNoCommit(listOperateLog);//安全检查操作记录//隐患待上报操作记录
 
                     });
                 }
                 else
                 {
+                    var listOperateLog = GetListOperateLog(OPERATEPOINT_Enums.CheckResultAudit, entity.ID, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, null, null, entity.ORG_ID, null, null, true, dtTaskEnd);
+                    //直接结束
                     entity.ISNEEDTOUP = true;
                     //检查没问题 直接结束 安全检查
                     this.UnifiedCommit(() =>
@@ -6856,6 +6885,8 @@ namespace APT.BaseData.Services.DomainServices
                             BantchUpdateEntityNoCommit(listCheckDetail);
                         if (listUpdateMain != null && listUpdateMain.Any())//安全检查库修改不可用
                             BantchUpdateEntityNoCommit(listUpdateMain);
+                        if (listOperateLog != null && listOperateLog.Any())//操作记录
+                            BantchSaveEntityNoCommit(listOperateLog);
                     });
                 }
             }
@@ -6864,6 +6895,7 @@ namespace APT.BaseData.Services.DomainServices
 
 
 
+
         /// 
         /// 隐患上报 审核通过 给每个通知负责人发送通知
         /// 
@@ -7356,15 +7388,28 @@ namespace APT.BaseData.Services.DomainServices
                     //} 
                     #endregion
                 }
-
+                List listOperateLog = new List();
                 //更新日期
                 //给隐患上报隐患通知责任人  发送待办
                 if (isNoticeCheck)
                 {
-
                     //listNotice = NotificationTaskService.InsertUserNoticeTaskModels(codeList, listName, listDataID, entity.ORG_ID, listUserID, listUserName, DateTime.Now, listEndTime, (int)FMNoticeTypeEnum.消息, "BS042_SHOWPRINT");
                     //整改责任人 指定 整改落实人
                     listNotice = NotificationTaskService.InsertUserNoticeTaskModels(codeList, listName, listDataID, entity.ORG_ID, listUserID, listUserName, DateTime.Now, listEndTime, (int)FMNoticeTypeEnum.消息, "BS074");
+                    //整改责任人指定落实人:车间级巡回检查D级隐患
+
+                    foreach (var item in listContent)
+                    {
+                        for (int j = 0; j < listUserID.Count; j++)
+                        {
+                            if (item.DEAL_USER_ID.HasValue && item.DEAL_USER_ID.Value == listUserID[j])
+                            {
+                                //给每个检查内容 发送  整改责任人确认 操作明细
+                                listOperateLog.AddRange(GetListOperateLog(OPERATEPOINT_Enums.RiskSendAudit, entity.RISK_SUBMIT_ID.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, new List() { listUserID[j] }, new List() { listUserName[j] }, entity.ORG_ID, item.ID, null, false, taskFinish?.TASK_ENDDT));
+                                break;
+                            }
+                        }
+                    }
                 }
                 else
                 {
@@ -7403,12 +7448,17 @@ namespace APT.BaseData.Services.DomainServices
                         BantchSaveEntityNoCommit(listMainConbinQuestionAdd);
                     if (listSafecheckDetail.Count > 0)//确定检查问题  添加安全检查记录
                         BantchUpdateEntityNoCommit(listSafecheckDetail);
+
+                    if (listOperateLog != null && listOperateLog.Any())//操作记录
+                        BantchSaveEntityNoCommit(listOperateLog);
                 });
             }
             return true;
 
         }
 
+
+
         /// 
         /// 隐患上报  完成   修改各种状态   完善隐患库
         /// 
@@ -7722,9 +7772,10 @@ namespace APT.BaseData.Services.DomainServices
                     modelCheck.CHECKOBJECT = (int)deal.Nav_Submit.CHECKOBJECT.Value;
                 }
 
+                var listOperateLog = GetListOperateLog(OPERATEPOINT_Enums.RiskDealAudit, deal.RISK_SUBMIT_ID.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, null, null, deal.ORG_ID, deal.RISK_SUBMIT_CONTENT_ID, null, true, taskFinish?.TASK_ENDDT);
+
                 UnifiedCommit(() =>
                 {
-
                     if (modelApp != null)
                         UpdateEntityNoCommit(modelApp);   //保存主表
                     if (listAppDetail != null && listAppDetail.Count > 0)//添加组合数据   修改的安全库、隐患库
@@ -7744,6 +7795,8 @@ namespace APT.BaseData.Services.DomainServices
                         UpdateEntityNoCommit(modelCheck);
                     if (mainDep != null)
                         UpdateEntityNoCommit(mainDep);
+                    if (listOperateLog != null && listOperateLog.Any())//操作记录
+                        BantchSaveEntityNoCommit(listOperateLog);
                 });
             }
             return true;
@@ -8062,5 +8115,214 @@ namespace APT.BaseData.Services.DomainServices
         //}
 
         //#endregion
+		
+		#region      方法重复写 如有修改 需同步修改  BSOperateLogService  对应方法
+
+        public List GetListOperateLog(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserIDLogin, List ListDATA_ID, List ListUserID, List ListUserName, Guid? ORG_ID, Guid? DATA_ID_SUB = null, List ListUserIDDone = null, bool isEnd = false, DateTime? TASK_ENDDT = null)
+        {
+            List listResult = new List();
+            T_BS_OPERATE_LOG modelLogUpdate = null;
+            switch (OPERATEPOINT)
+            {
+                case OPERATEPOINT_Enums.GotCheck:
+                    //系统触发 只是新增
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT, ListDATA_ID[i], ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.CheckForm:
+                    //BS032保存并发送 到审批流
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT_Enums.GotCheck, DATA_ID, UserIDLogin, null, TASK_ENDDT);
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));//  OPERATEPOINT =>  OPERATEPOINT_Enums.CheckAudit
+                    break;
+                case OPERATEPOINT_Enums.CheckAudit:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的待办日志
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)//最后一个审批人 添加 通知
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckerCheck, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.CheckerCheck:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    break;
+                case OPERATEPOINT_Enums.CheckRegister:
+                    //检查登记
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++) //发起检查结果确认
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckAgree, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.CheckAgree:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++) //检查结果确认完 直接到审批
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckResultAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.CheckResultAudit:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (isEnd) //最后一个审批就归档
+                    {
+                        var logEnd = AddModel(OPERATEPOINT_Enums.CheckEnd, DATA_ID, UserIDLogin, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, ORG_ID);
+                        logEnd.OPERTETIME = DateTime.Now;
+                        if (modelLogUpdate != null)
+                            logEnd.ISINTTIME = modelLogUpdate.ISINTTIME;
+                        listResult.Add(logEnd);
+                    }
+                    else if (DATA_ID_SUB != null)
+                    {
+                        if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                            for (int i = 0; i < ListUserID.Count; i++)
+                                //listResult.Add(AddModel(OPERATEPOINT_Enums.RiskGet, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                                listResult.Add(AddModel(OPERATEPOINT_Enums.RiskGet, DATA_ID_SUB.Value, ListUserID[i], ListUserName[i], ORG_ID, i, false, null));//注意 入参把 隐患上报ID 传给参数 DATA_ID_SUB
+                    }
+                    break;
+                case OPERATEPOINT_Enums.CheckEnd:
+                    //此处没操作
+                    break;
+                case OPERATEPOINT_Enums.RiskNoticeSD:
+                    break;
+                case OPERATEPOINT_Enums.RiskUpSD:
+                    break;
+                case OPERATEPOINT_Enums.RiskInfoCompleteSD:
+                    break;
+                case OPERATEPOINT_Enums.RiskGet:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//隐患待上报 不需要传递 子表ID
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskSendAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));//子表拆分记录
+                    break;
+                //case OPERATEPOINT_Enums.RiskSend:
+                //    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);
+                //    if (modelLogUpdate != null)
+                //        listResult.Add(modelLogUpdate);
+                //    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                //        for (int i = 0; i < ListUserID.Count; i++)
+                //            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskSendAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                //    break;
+                case OPERATEPOINT_Enums.RiskSendAudit:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//分子表处理
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskAssignActure, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.RiskAssignActure:
+                    break;
+                case OPERATEPOINT_Enums.RiskNoticeCheckerCheck:
+                    break;
+                case OPERATEPOINT_Enums.RiskNoticeActureCheck:
+                    break;
+                case OPERATEPOINT_Enums.RiskDeal:
+                    break;
+                case OPERATEPOINT_Enums.RiskDealDealCheck:
+                    break;
+                case OPERATEPOINT_Enums.RiskDealCheckerCheck:
+                    break;
+                case OPERATEPOINT_Enums.RiskDealAudit:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    var logEndRisk = AddModel(OPERATEPOINT_Enums.RiskEnd, DATA_ID, UserIDLogin, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, ORG_ID);
+                    logEndRisk.OPERTETIME = DateTime.Now;
+                    if (modelLogUpdate != null)
+                        logEndRisk.ISINTTIME = modelLogUpdate.ISINTTIME;
+                    listResult.Add(logEndRisk);
+                    break;
+                case OPERATEPOINT_Enums.RiskEnd:
+                    break;
+                default:
+                    break;
+            }
+            if (ListUserIDDone != null && ListUserIDDone.Count > 0)
+            {
+                //除了登陆者 需要默认操作的
+                listResult.ForEach(e =>
+                {
+                    if (ListUserIDDone.Contains(e.USER_ID))
+                        e.OPERTETIME = DateTime.Now;
+                });
+            }
+            return listResult;
+        }
+
+
+        /// 
+        /// 获取新记录
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        private T_BS_OPERATE_LOG AddModel(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, string UserName, Guid? ORG_ID, int ORDERNO = 0, bool isAddLog = false, Guid? DATA_ID_SUB = null)
+        {
+            T_BS_OPERATE_LOG ModelAdd = new T_BS_OPERATE_LOG()
+            {
+                ID = Guid.NewGuid(),
+                ORG_ID = ORG_ID,
+                LOGTYPE = ((int)OPERATEPOINT) > 80 ? LOGTYPE_Enums.RiskSubmit : LOGTYPE_Enums.SafeCheck,
+                DATA_ID = DATA_ID,
+                DATA_ID_SUB = DATA_ID_SUB,
+                OPERATEPOINT = OPERATEPOINT,
+                USER_ID = UserID,
+                USRTNAME = UserName,
+                ORDERNO = ORDERNO,
+                //OPERTETIME = null,
+                //ISINTTIME = false,
+                CREATE_TIME = DateTime.Now,
+                CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID
+            };
+            if (isAddLog || (APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue && APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value == UserID))
+            {
+                ModelAdd.OPERTETIME = DateTime.Now;//默认通过
+            }
+            return ModelAdd;
+        }
+
+        /// 
+        /// 获取需要修改的Model
+        /// 
+        /// 操作节点
+        /// 
+        /// 
+        /// 
+        /// 
+        /// 
+        private T_BS_OPERATE_LOG GetUpdateDeal(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, Guid? DATA_ID_SUB = null, DateTime? TASK_ENDDT = null)
+        {
+            if (UserID == Guid.Empty)
+            {
+                return null;
+            }
+            Expression> expression = e => e.DATA_ID == DATA_ID && e.OPERATEPOINT == OPERATEPOINT && e.USER_ID == UserID;
+            if (DATA_ID_SUB.HasValue)
+                expression = expression.And(e => e.DATA_ID_SUB.HasValue && e.DATA_ID_SUB == DATA_ID_SUB);
+            var model = GetEntity(expression);
+            if (model != null)
+            {
+                model.OPERTETIME = DateTime.Now;
+                if (TASK_ENDDT != null)
+                    model.ISINTTIME = (model.OPERTETIME > TASK_ENDDT.Value ? false : true);
+            }
+            return model;
+        }
+        #endregion
     }
 }
diff --git a/APT.MS.Data/Mapping/T4/T4Map.cs b/APT.MS.Data/Mapping/T4/T4Map.cs
index 6e47d8b..8b4340a 100644
--- a/APT.MS.Data/Mapping/T4/T4Map.cs
+++ b/APT.MS.Data/Mapping/T4/T4Map.cs
@@ -49,7 +49,8 @@ builder.HasOne(t => t.Nav_CheckProject).WithMany().HasForeignKey(t => t.CHECK_PR
         public override void Configure(EntityTypeBuilder builder)
 		{
 			base.Configure(builder);
-			builder.Property(t => t.CHECKCONTENT).HasMaxLength(500);
+			builder.Ignore(t => t.StrCheckObject);
+builder.Property(t => t.CHECKCONTENT).HasMaxLength(500);
 		} 
      }
 	 #endregion
diff --git a/APT.MS.Domain/Entities/BS/T_BS_CHECK_CONTENTS.cs b/APT.MS.Domain/Entities/BS/T_BS_CHECK_CONTENTS.cs
index 89f24f9..f400a2a 100644
--- a/APT.MS.Domain/Entities/BS/T_BS_CHECK_CONTENTS.cs
+++ b/APT.MS.Domain/Entities/BS/T_BS_CHECK_CONTENTS.cs
@@ -21,6 +21,13 @@ namespace APT.MS.Domain.Entities.BS
         [FormFieldEdit]
         public BSMineTypeEnum CHECKOBJECT { get; set; }
 
+        /// 
+        /// 检查对象
+        /// 
+        [Description("检查对象")]
+        [DataFieldIngore]
+        public virtual string StrCheckObject { get; set; }
+
         /// 
         /// 检查内容
         /// 
diff --git a/APT.MS.Domain/Entities/BS/T_BS_OPERATE_LOG.cs b/APT.MS.Domain/Entities/BS/T_BS_OPERATE_LOG.cs
index 350181f..5122ab6 100644
--- a/APT.MS.Domain/Entities/BS/T_BS_OPERATE_LOG.cs
+++ b/APT.MS.Domain/Entities/BS/T_BS_OPERATE_LOG.cs
@@ -63,9 +63,9 @@ namespace APT.MS.Domain.Entities.BS
         public DateTime? OPERTETIME { get; set; }
 
         /// 
-        /// 是否超时
+        /// 是否按时
         /// 
-        [Description("是否超时")]
+        [Description("是否按时")]
         public bool? ISINTTIME { get; set; }
     }
 }
\ No newline at end of file
diff --git a/APT.MS.Domain/Enums/BS/BSEnums.cs b/APT.MS.Domain/Enums/BS/BSEnums.cs
index 4163887..952bb7d 100644
--- a/APT.MS.Domain/Enums/BS/BSEnums.cs
+++ b/APT.MS.Domain/Enums/BS/BSEnums.cs
@@ -134,19 +134,19 @@ namespace APT.MS.Domain.Enums
         /// 
         /// 选矿
         /// 
-        [Description("选矿")]
+        [Description("选矿厂")]
         MineChoose = 10,
 
         /// 
         /// 尾矿
         /// 
-        [Description("尾矿")]
+        [Description("尾矿库")]
         Minelast = 20,
 
         /// 
         /// 矿山
         /// 
-        [Description("矿山")]
+        [Description("露天矿")]
         Mine = 30,
 
         /// 
@@ -1425,6 +1425,12 @@ namespace APT.MS.Domain.Enums
         [Description("检查任务确认")]
         CheckerCheck = 40,
 
+        /// 
+        /// 跑批检查登记 48
+        /// 
+        [Description("跑批检查登记")]
+        CheckRegisterRun = 48,
+
         /// 
         /// 检查登记 50
         /// 
@@ -1472,12 +1478,66 @@ namespace APT.MS.Domain.Enums
         [Description("隐患待上报")]
         RiskGet = 120,
 
+        ///// 
+        ///// 隐患上报  130 (弃用)
+        ///// 
+        //[Description("隐患上报")]
+        //RiskSend = 130,
+
         /// 
-        /// 隐患上报  130
+        /// 隐患上报审批  130
         /// 
-        [Description("隐患上报")]
-        RiskSend =130,
+        [Description("隐患上报审批")]
+        RiskSendAudit = 130,
 
+        /// 
+        /// 整改责任人指定落实人  140
+        /// 
+        [Description("指定落实人")]
+        RiskAssignActure = 140,
 
+        /// 
+        /// 验收人确认  150
+        /// 
+        [Description("验收人确认")]
+        RiskNoticeCheckerCheck = 150,
+
+        /// 
+        /// 整改落实人确认  160
+        /// 
+        [Description("整改落实人确认")]
+        RiskNoticeActureCheck = 160,
+
+        //延期申请
+
+        /// 
+        /// 整改落实人确认  180
+        /// 
+        [Description("整改落实人整改")]
+        RiskDeal = 180,
+
+        /// 
+        /// 整改责任人确认  190
+        /// 
+        [Description("整改责任人确认")]
+        RiskDealDealCheck = 190,
+
+        /// 
+        /// 整改验收人确认  200
+        /// 
+        [Description("整改验收人确认")]
+        RiskDealCheckerCheck = 200,
+
+        /// 
+        /// 整改审批  210
+        /// 
+        [Description("整改审批")]
+        RiskDealAudit = 210,
+
+        /// 
+        /// 整改结束  220
+        /// 
+        [Description("整改结束")]
+        RiskEnd = 220,
     }
 }
\ No newline at end of file
diff --git a/APT.MS.Domain/IServices/BS/IBSOperateLogService.cs b/APT.MS.Domain/IServices/BS/IBSOperateLogService.cs
index e25767e..cb8e54c 100644
--- a/APT.MS.Domain/IServices/BS/IBSOperateLogService.cs
+++ b/APT.MS.Domain/IServices/BS/IBSOperateLogService.cs
@@ -6,7 +6,7 @@ using System.Collections.Generic;
 
 namespace APT.BaseData.Domain.IServices
 {
-    public interface IBSOperateLogService 
+    public interface IBSOperateLogService
     {
         ///   
         /// 直接添加多个操作
@@ -23,6 +23,6 @@ namespace APT.BaseData.Domain.IServices
         /// 默认操作通过的
         /// 
         /// 
-        List GetListOperateLog(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserIDLogin, List ListDATA_ID, List ListUserID, List ListUserName, Guid? ORG_ID, Guid? DATA_ID_SUB = null, List ListUserIDDone = null, bool isEnd = true);
+        List GetListOperateLog(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserIDLogin, List ListDATA_ID, List ListUserID, List ListUserName, Guid? ORG_ID, Guid? DATA_ID_SUB = null, List ListUserIDDone = null, bool isEnd = false, DateTime? TASK_ENDDT = null);
     }
 }
diff --git a/APT.MS.Services/Services/BS/BSOperateLogService.cs b/APT.MS.Services/Services/BS/BSOperateLogService.cs
index 2ca3dea..abdd457 100644
--- a/APT.MS.Services/Services/BS/BSOperateLogService.cs
+++ b/APT.MS.Services/Services/BS/BSOperateLogService.cs
@@ -35,14 +35,14 @@ namespace APT.BaseData.Services.DomainServices
         /// SafeCheckID RiskSubmitID
         /// 登入人ID
         /// 可为null与 DATA_ID 只有一个
-        /// 可为null
-        /// 可为null
+        /// 可为null 需要添加下一个节点的人员ID
+        /// 可为null需要添加下一个节点的人员姓名
         /// 
         /// 
         /// 默认操作通过的
         /// 
         /// 
-        public List GetListOperateLog(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserIDLogin, List ListDATA_ID, List ListUserID, List ListUserName, Guid? ORG_ID, Guid? DATA_ID_SUB = null, List ListUserIDDone = null, bool isEnd = true)
+        public List GetListOperateLog(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserIDLogin, List ListDATA_ID, List ListUserID, List ListUserName, Guid? ORG_ID, Guid? DATA_ID_SUB = null, List ListUserIDDone = null, bool isEnd = false, DateTime? TASK_ENDDT = null)
         {
             List listResult = new List();
             T_BS_OPERATE_LOG modelLogUpdate = null;
@@ -50,56 +50,72 @@ namespace APT.BaseData.Services.DomainServices
             {
                 case OPERATEPOINT_Enums.GotCheck:
                     //系统触发 只是新增
-                    if (ListUserID != null && ListUserName != null)
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
                         for (int i = 0; i < ListUserID.Count; i++)
-                            listResult.Add(AddModel(OPERATEPOINT, ListDATA_ID[i], ListUserID[i], ListUserName[i], ORG_ID, i));
+                            listResult.Add(AddModel(OPERATEPOINT, ListDATA_ID[i], ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     break;
                 case OPERATEPOINT_Enums.CheckForm:
                     //BS032保存并发送 到审批流
-                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT_Enums.GotCheck, DATA_ID, UserIDLogin);
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT_Enums.GotCheck, DATA_ID, UserIDLogin, null, TASK_ENDDT);
                     if (modelLogUpdate != null)
                         listResult.Add(modelLogUpdate);
-                    if (ListUserID != null && ListUserName != null)
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
                         for (int i = 0; i < ListUserID.Count; i++)
-                            listResult.Add(AddModel(OPERATEPOINT, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i));
+                            listResult.Add(AddModel(OPERATEPOINT, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     break;
                 case OPERATEPOINT_Enums.CheckAudit:
-                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的待办日志
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的待办日志
                     if (modelLogUpdate != null)
                         listResult.Add(modelLogUpdate);
-                    if (ListUserID != null && ListUserName != null)
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
                         for (int i = 0; i < ListUserID.Count; i++)//最后一个审批人 添加 通知
-                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckerCheck, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i));
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckerCheck, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     break;
                 case OPERATEPOINT_Enums.CheckerCheck:
-                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
                     if (modelLogUpdate != null)
                         listResult.Add(modelLogUpdate);
                     break;
+                case OPERATEPOINT_Enums.CheckRegisterRun:
+                    //检查登记
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++) //发起检查登记
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckRegister, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
                 case OPERATEPOINT_Enums.CheckRegister:
                     //检查登记
-                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
                     if (modelLogUpdate != null)
                         listResult.Add(modelLogUpdate);
-                    if (ListUserID != null && ListUserName != null)
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
                         for (int i = 0; i < ListUserID.Count; i++) //发起检查结果确认
-                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckAgree, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i));
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckAgree, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     break;
                 case OPERATEPOINT_Enums.CheckAgree:
-                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
                     if (modelLogUpdate != null)
                         listResult.Add(modelLogUpdate);
-                    if (ListUserID != null && ListUserName != null)
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
                         for (int i = 0; i < ListUserID.Count; i++) //检查结果确认完 直接到审批
-                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckResultAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i));
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.CheckResultAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     break;
                 case OPERATEPOINT_Enums.CheckResultAudit:
-                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin);//处理自己的
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
                     if (modelLogUpdate != null)
                         listResult.Add(modelLogUpdate);
                     if (isEnd) //最后一个审批就归档
                     {
-                        listResult.Add(AddModel(OPERATEPOINT_Enums.CheckEnd, DATA_ID, UserIDLogin, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, ORG_ID));
+                        var logEnd = AddModel(OPERATEPOINT_Enums.CheckEnd, DATA_ID, UserIDLogin, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, ORG_ID);
+                        logEnd.OPERTETIME = DateTime.Now;
+                        if (modelLogUpdate != null)
+                            logEnd.ISINTTIME = modelLogUpdate.ISINTTIME;
+                        listResult.Add(logEnd);
+                    }
+                    else if (DATA_ID_SUB != null)
+                    {
+                        if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                            for (int i = 0; i < ListUserID.Count; i++)
+                                listResult.Add(AddModel(OPERATEPOINT_Enums.RiskGet, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     }
                     break;
                 case OPERATEPOINT_Enums.CheckEnd:
@@ -108,16 +124,99 @@ namespace APT.BaseData.Services.DomainServices
                 case OPERATEPOINT_Enums.RiskNoticeSD:
                     break;
                 case OPERATEPOINT_Enums.RiskUpSD:
+                    //有用
+                    listResult.Add(AddModel(OPERATEPOINT_Enums.RiskUpSD, DATA_ID, UserIDLogin, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, ORG_ID, 1, true, DATA_ID_SUB));
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskInfoCompleteSD, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     break;
                 case OPERATEPOINT_Enums.RiskInfoCompleteSD:
                     break;
                 case OPERATEPOINT_Enums.RiskGet:
-                    //审批结束后 如果有隐患 
-                    if (ListUserID != null && ListUserName != null)
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
                         for (int i = 0; i < ListUserID.Count; i++)
-                            listResult.Add(AddModel(OPERATEPOINT, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i));
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskSendAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
                     break;
-                case OPERATEPOINT_Enums.RiskSend:
+                //case OPERATEPOINT_Enums.RiskSend:
+                //    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
+                //    if (modelLogUpdate != null)
+                //        listResult.Add(modelLogUpdate);
+                //    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                //        for (int i = 0; i < ListUserID.Count; i++)
+                //            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskSendAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                //    break;
+                case OPERATEPOINT_Enums.RiskSendAudit:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, null, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskAssignActure, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.RiskAssignActure:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskNoticeCheckerCheck, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.RiskNoticeCheckerCheck:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskNoticeActureCheck, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.RiskNoticeActureCheck:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskDeal, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.RiskDeal:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskDealDealCheck, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.RiskDealDealCheck:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskDealCheckerCheck, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.RiskDealCheckerCheck:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+                    if (ListUserID != null && ListUserName != null && ListUserID.Any())
+                        for (int i = 0; i < ListUserID.Count; i++)
+                            listResult.Add(AddModel(OPERATEPOINT_Enums.RiskDealAudit, DATA_ID, ListUserID[i], ListUserName[i], ORG_ID, i, false, DATA_ID_SUB));
+                    break;
+                case OPERATEPOINT_Enums.RiskDealAudit:
+                    modelLogUpdate = GetUpdateDeal(OPERATEPOINT, DATA_ID, UserIDLogin, DATA_ID_SUB, TASK_ENDDT);//处理自己的
+                    if (modelLogUpdate != null)
+                        listResult.Add(modelLogUpdate);
+
+                    var logEndRisk = AddModel(OPERATEPOINT_Enums.RiskEnd, DATA_ID, UserIDLogin, APT.Infrastructure.Api.AppContext.CurrentSession.UserName, ORG_ID);
+                    logEndRisk.OPERTETIME = DateTime.Now;
+                    if (modelLogUpdate != null)
+                        logEndRisk.ISINTTIME = modelLogUpdate.ISINTTIME;
+                    listResult.Add(logEndRisk);
+
+                    break;
+                case OPERATEPOINT_Enums.RiskEnd:
                     break;
                 default:
                     break;
@@ -144,8 +243,10 @@ namespace APT.BaseData.Services.DomainServices
         /// 
         /// 
         /// 
+        /// 
+        /// 是否添加记录 比如没找到记录 直接添加记录
         /// 
-        private T_BS_OPERATE_LOG AddModel(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, string UserName, Guid? ORG_ID, int ORDERNO = 0)
+        private T_BS_OPERATE_LOG AddModel(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, string UserName, Guid? ORG_ID, int ORDERNO = 0, bool isAddLog = false, Guid? DATA_ID_SUB = null)
         {
             T_BS_OPERATE_LOG ModelAdd = new T_BS_OPERATE_LOG()
             {
@@ -153,17 +254,17 @@ namespace APT.BaseData.Services.DomainServices
                 ORG_ID = ORG_ID,
                 LOGTYPE = ((int)OPERATEPOINT) > 80 ? LOGTYPE_Enums.RiskSubmit : LOGTYPE_Enums.SafeCheck,
                 DATA_ID = DATA_ID,
-                //DATA_ID_SUB = null,
+                DATA_ID_SUB = DATA_ID_SUB,
                 OPERATEPOINT = OPERATEPOINT,
                 USER_ID = UserID,
                 USRTNAME = UserName,
                 ORDERNO = ORDERNO,
                 //OPERTETIME = null,
-                ISINTTIME = false,
+                //ISINTTIME = false,
                 CREATE_TIME = DateTime.Now,
                 CREATER_ID = APT.Infrastructure.Api.AppContext.CurrentSession.UserID
             };
-            if (APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue && APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value == UserID)
+            if (isAddLog || (APT.Infrastructure.Api.AppContext.CurrentSession.UserID.HasValue && APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value == UserID))
             {
                 ModelAdd.OPERTETIME = DateTime.Now;//默认通过
             }
@@ -178,69 +279,24 @@ namespace APT.BaseData.Services.DomainServices
         /// 
         /// 
         /// 
-        private T_BS_OPERATE_LOG GetUpdateDeal(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, Guid? DATA_ID_SUB = null)
+        private T_BS_OPERATE_LOG GetUpdateDeal(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, Guid? DATA_ID_SUB = null, DateTime? TASK_ENDDT = null)
         {
+            if (UserID == Guid.Empty)
+            {
+                return null;
+            }
             Expression> expression = e => e.DATA_ID == DATA_ID && e.OPERATEPOINT == OPERATEPOINT && e.USER_ID == UserID;
             if (DATA_ID_SUB.HasValue)
                 expression = expression.And(e => e.DATA_ID_SUB.HasValue && e.DATA_ID_SUB == DATA_ID_SUB);
             var model = GetEntity(expression);
             if (model != null)
+            {
                 model.OPERTETIME = DateTime.Now;
+                if (TASK_ENDDT != null)
+                    model.ISINTTIME = (model.OPERTETIME > TASK_ENDDT.Value ? false : true);
+            }
             return model;
         }
 
-
-        ///// 
-        ///// 关闭上一个操作,添加新的操作
-        ///// 
-        ///// 当前操作节点
-        ///// 
-        ///// 
-        ///// 
-        ///// 
-        //public List GetOperateLog(OPERATEPOINT_Enums OPERATEPOINT, Guid DATA_ID, Guid UserID, string UserName, Guid? ORG_ID, Guid? DATA_ID_SUB, bool isNext = true)
-        //{
-        //    T_BS_OPERATE_LOG modelLogUpdate = null;
-        //    T_BS_OPERATE_LOG modelLogAdd = null;
-        //    switch (OPERATEPOINT)
-        //    {
-        //        case OPERATEPOINT_Enums.GotCheck:
-        //            //系统触发 只是新增
-        //            modelLogAdd = AddModel(OPERATEPOINT, DATA_ID, UserID, UserName, ORG_ID);
-        //            break;
-        //        case OPERATEPOINT_Enums.CheckForm:
-        //            modelLogUpdate = GetUpdate(OPERATEPOINT_Enums.GotCheck, DATA_ID, UserID, DATA_ID_SUB);
-        //            modelLogAdd = AddModel(OPERATEPOINT, DATA_ID, UserID, UserName, ORG_ID);
-
-        //            break;
-        //        case OPERATEPOINT_Enums.CheckAudit:
-        //            break;
-        //        case OPERATEPOINT_Enums.CheckerCheck:
-        //            break;
-        //        case OPERATEPOINT_Enums.CheckRegister:
-        //            break;
-        //        case OPERATEPOINT_Enums.CheckAgree:
-        //            break;
-        //        case OPERATEPOINT_Enums.CheckResultAudit:
-        //            break;
-        //        case OPERATEPOINT_Enums.CheckEnd:
-        //            break;
-        //        case OPERATEPOINT_Enums.RiskNotice:
-        //            break;
-        //        case OPERATEPOINT_Enums.RiskUp:
-        //            break;
-        //        case OPERATEPOINT_Enums.RiskInfoComplete:
-        //            break;
-        //        case OPERATEPOINT_Enums.RiskGet:
-        //            break;
-        //        case OPERATEPOINT_Enums.RiskSend:
-        //            break;
-        //        default:
-        //            break;
-        //    }
-
-        //    return new List() { modelLogAdd ?? modelLogAdd, modelLogUpdate ?? modelLogUpdate };
-        //}
-
     }
 }
\ No newline at end of file
diff --git a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckContentsController.cs b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckContentsController.cs
index 52cad85..9b8f3ab 100644
--- a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckContentsController.cs
+++ b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckContentsController.cs
@@ -173,15 +173,49 @@ namespace APT.BS.WebApi.Controllers.Api
         {
             return SafeExecute(() =>
             {
+                if (entity.Nav_ListCheckQuestion == null || !entity.Nav_ListCheckQuestion.Any())
+                {
+                    throw new Exception("检查问题不能为空!");
+                }
                 var listQuestions = entity.Nav_ListCheckQuestion;
                 entity.Nav_ListCheckQuestion = null;
-                this.UnifiedCommit(() =>
+                if (!string.IsNullOrEmpty(entity.StrCheckObject))
                 {
-                    if (entity != null)
-                        UpdateEntityNoCommit(entity);
-                    if (listQuestions != null && listQuestions.Any())
-                        BantchSaveEntityNoCommit(listQuestions);
-                });
+                    List list = entity.StrCheckObject.Split('_', StringSplitOptions.RemoveEmptyEntries).ToList();
+                    for (int i = 0; i < list.Count; i++)
+                    {
+                        try
+                        {
+                            entity.CHECKOBJECT = (BSMineTypeEnum)int.Parse(list[i]);
+                            if (i > 0)
+                            {
+                                entity.ID = Guid.NewGuid();
+                                foreach (var item in listQuestions)
+                                {
+                                    item.CHECK_CONTENTS_ID = entity.ID;
+                                }
+                            }
+                            this.UnifiedCommit(() =>
+                            {
+                                if (entity != null)
+                                    UpdateEntityNoCommit(entity);
+                                if (listQuestions != null && listQuestions.Any())
+                                    BantchSaveEntityNoCommit(listQuestions);
+                            });
+                        }
+                        catch { }
+                    }
+                }
+                else
+                {
+                    this.UnifiedCommit(() =>
+                    {
+                        if (entity != null)
+                            UpdateEntityNoCommit(entity);
+                        if (listQuestions != null && listQuestions.Any())
+                            BantchSaveEntityNoCommit(listQuestions);
+                    });
+                }
                 return true;
             });
         }
diff --git a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckMainController.cs b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckMainController.cs
index 2e6c37d..bb88bec 100644
--- a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckMainController.cs
+++ b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSCheckMainController.cs
@@ -252,6 +252,8 @@ namespace APT.BS.WebApi.Controllers.Api
 
             //第一行是标题 跳过
             int rowAll = dtSource.Rows.Count;
+            List list = DataHelper.GetEnum("BSMineTypeEnum");
+            EnumsResult? enumCheck = null;
             for (int i = 0; i < rowAll; i++)
             {
                 #region    不能为空
@@ -280,26 +282,13 @@ namespace APT.BS.WebApi.Controllers.Api
 
                 strCheckObject = dtSource.Rows[i][0].ToString().Trim();
                 ICheckObject = 0;
-                switch (strCheckObject)
+
+                enumCheck = list.FirstOrDefault(e => e.NAME == strCheckObject);
+                if (enumCheck != null)
                 {
-                    case "全公司":
-                        ICheckObject = 0;
-                        break;
-                    case "选矿":
-                        ICheckObject = 10;
-                        break;
-                    case "尾矿":
-                        ICheckObject = 20;
-                        break;
-                    case "矿山":
-                        ICheckObject = 30;
-                        break;
-                    case "地下矿":
-                        ICheckObject = 40;
-                        break;
-                    default:
-                        break;
+                    ICheckObject = enumCheck.ID;
                 }
+
                 #endregion
                 #region 检查区域  1
 
diff --git a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitController.cs b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitController.cs
index bac1665..ee08ae9 100644
--- a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitController.cs
+++ b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitController.cs
@@ -30,6 +30,7 @@ namespace APT.BS.WebApi.Controllers.Api
         IPFCodeRuleService CodeRuleService { get; set; }
         IPFSysLogService SysLogService { get; set; }
         IFMDepartmentService DepartmentService { get; set; }
+        IBSOperateLogService OperateLogService { get; set; }
 
         ///// 
         ///// 回调
@@ -38,7 +39,7 @@ namespace APT.BS.WebApi.Controllers.Api
         ///// 
         //public delegate void DelegateCallBack(string CALLBACK_INTERFACE, string DATA_ID);
 
-        public BSRiskSubmitController(IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFCodeRuleService codeRuleService, IPFSysLogService sysLogService, IPFApproveCallBackService approveCallBackService, IFMDepartmentService departmentService)
+        public BSRiskSubmitController(IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFCodeRuleService codeRuleService, IPFSysLogService sysLogService, IPFApproveCallBackService approveCallBackService, IFMDepartmentService departmentService, IBSOperateLogService operateLogService)
         {
             NotificationTaskService = notificationTaskService;
             MFlowPermitService = mFlowPermitService;
@@ -46,6 +47,7 @@ namespace APT.BS.WebApi.Controllers.Api
             SysLogService = sysLogService;
             ApproveCallBackService = approveCallBackService;
             DepartmentService = departmentService;
+            OperateLogService = operateLogService;
             //DelegateCallBack callBack = new DelegateCallBack(CallBACK);
             //callBack += CallBACK;
         }
@@ -106,8 +108,14 @@ namespace APT.BS.WebApi.Controllers.Api
                             modelSub = new T_BS_RISK_SUBMIT();
                             modelSub.ID = Guid.NewGuid();
                             modelSub.CODE = entity.CODE;//替换成同一个
-
-
+                            if (entity.CHECKOBJECT.HasValue)
+                            {
+                                try
+                                {
+                                    modelSub.CHECKOBJECT = (BSMineTypeEnum)entity.CHECKOBJECT;
+                                }
+                                catch { }
+                            }
                             modelSub.NAME = entity.Nav_CheckTypeLevel.Nav_Enums.NAME + entity.Nav_CheckType.NAME;
                             modelSub.Nav_Check = entity;
                             modelSub.Nav_CheckType = entity.Nav_CheckType;
@@ -2966,13 +2974,21 @@ namespace APT.BS.WebApi.Controllers.Api
                         listUser = GetEntities(e => listUserID.Contains(e.ID), null);
                     }
                 }
-
+                DateTime? TASK_ENDDT = null;
+                if (task != null)
+                {
+                    TASK_ENDDT = task.TASK_ENDDT;
+                }
+                List listLog = new List();
                 foreach (var item in entityDeal)
                 {
                     var entity = item.Nav_SubmitContent;
                     listContents.Add(entity);
                     entity.RiskContentState = (int)RiskContentState.ActualDealCheck;
                     listTask.Add(NotificationTaskService.InsertUserNoticeTaskModel("隐患整改单:" + entity.NAME.Replace("隐患整改通知:", ""), item.ID, entity.ORG_ID, entity.ACTUAL_DEAL_USER_ID.Value, listUser.FirstOrDefault(e => e.ID == entity.ACTUAL_DEAL_USER_ID.Value)?.NAME, DateTime.Now, item.Nav_SubmitContent.LastDateUser.Value, (int)FMNoticeTypeEnum.消息, "BS044"));
+
+
+                    listLog.AddRange(OperateLogService.GetListOperateLog(OPERATEPOINT_Enums.RiskNoticeActureCheck, entity.RISK_SUBMIT_ID.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, new List() { entity.ACTUAL_DEAL_USER_ID.Value }, new List() { listUser.FirstOrDefault(e => e.ID == entity.ACTUAL_DEAL_USER_ID.Value)?.NAME }, entity.ORG_ID, item.RISK_SUBMIT_CONTENT_ID, null, false, TASK_ENDDT));
                 }
 
                 this.UnifiedCommit(() =>
@@ -2982,6 +2998,8 @@ namespace APT.BS.WebApi.Controllers.Api
                         BantchSaveEntityNoCommit(listContents);
                     if (listTask != null && listTask.Any())
                         BantchSaveEntityNoCommit(listTask);
+                    if (listLog != null && listLog.Any())
+                        BantchSaveEntityNoCommit(listLog);
                     if (task != null)//代办消息 清除
                         UpdateEntityNoCommit(task, "NOTICE_STATUS", "TASK_DT", "MODIFIER_ID");
                 });
@@ -3174,6 +3192,12 @@ namespace APT.BS.WebApi.Controllers.Api
 
                         T_FM_NOTIFICATION_TASK task = null;
                         GetEntityTask(entity.TaskID, ref task, "BS044_SHOWPRINT");
+                        DateTime? TASK_ENDDT = null;
+                        if (task != null)
+                        {
+                            TASK_ENDDT = task.TASK_ENDDT;
+                        }
+                        var listLog = OperateLogService.GetListOperateLog(OPERATEPOINT_Enums.RiskDeal, entity.RISK_SUBMIT_ID.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, new List() { entity.DEAL_USER_ID.Value }, new List() { userDealName }, entity.ORG_ID, entity.RISK_SUBMIT_CONTENT_ID, null, false, TASK_ENDDT);
 
                         //修改 model
                         UnifiedCommit(() =>
@@ -3188,6 +3212,8 @@ namespace APT.BS.WebApi.Controllers.Api
                                 BantchSaveEntityNoCommit(files);
                             if (filesAfter != null && filesAfter.Any())//检查后附件
                                 BantchSaveEntityNoCommit(filesAfter);
+                            if (listLog != null && listLog.Any())//日志
+                                BantchSaveEntityNoCommit(listLog);
                             //if (signDeal != null && signDeal.Any())//整改人签名
                             //    BantchSaveEntityNoCommit(signDeal);
                         });
@@ -3821,13 +3847,15 @@ namespace APT.BS.WebApi.Controllers.Api
                     //    throw new Exception("改整改记录验收人已验收,操作失败!");
                     //}
                 }
+                DateTime? TASK_ENDDT = null;
+                if (task != null)
+                    TASK_ENDDT = task.TASK_ENDDT;
 
                 if (entity.DEALSITUATION == (int)DealSituation.OK)
                 {
                     //通过
                     if (content.RiskContentState == (int)RiskContentState.DealSend)//整改落实人 提交整改记录 整改责任人 验收
                     {
-
                         #region   整改责任人验收通过 给验收人发送审核待办 
 
                         content.RiskContentState = (int)RiskContentState.DealSign;//整改责任人已经签名
@@ -3836,6 +3864,8 @@ namespace APT.BS.WebApi.Controllers.Api
                         DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_RiskUp_Checker_Check, entity.ORG_ID.Value, DateTime.Now, null, content.LastDateUser);
                         var notice = NotificationTaskService.InsertUserNoticeTaskModel("验收人确认整改:" + entity.NAME, entity.ID, entity.ORG_ID, entity.CHECK_USER_ID.Value, entity.Nav_UserCheck.NAME, DateTime.Now, dtEnd, (int)FMNoticeTypeEnum.消息, "BS044_CHECK");//隐患整改验收单
 
+                        var listLog = OperateLogService.GetListOperateLog(OPERATEPOINT_Enums.RiskDealDealCheck, entity.RISK_SUBMIT_ID.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, new List() { entity.CHECK_USER_ID.Value }, new List() { entity.Nav_UserCheck.NAME }, entity.ORG_ID, content.ID, null, false, TASK_ENDDT);
+
                         this.UnifiedCommit(() =>
                         {
                             UpdateEntityNoCommit(entity);//审核信息 验收状态修改  审批意见 完成情况
@@ -3843,6 +3873,8 @@ namespace APT.BS.WebApi.Controllers.Api
                             UpdateEntityNoCommit(notice);//给验收人发送整改单通知
                             if (task != null)//代办消息 清除
                                 UpdateEntityNoCommit(task, "NOTICE_STATUS", "TASK_DT", "MODIFIER_ID");
+                            if (listLog != null && listLog.Any())
+                                BantchSaveEntityNoCommit(listLog);
                         });
 
                         #endregion
@@ -3898,7 +3930,7 @@ namespace APT.BS.WebApi.Controllers.Api
                                 UpdateEntityNoCommit(entity);   //保存主表 NoCommit
                                                                 //BantchSaveEntityNoCommit(sign);    //验收人签名
                             UpdateEntityNoCommit(content);//上报明细 修改状态
-                        }, entity.APPROVE_ID, approveUserId, null, null, listCode[1], "", null, "", FMTASKTYPE.BS_RiskUp_DealAudit);
+                        }, entity.APPROVE_ID, approveUserId, null, null, listCode[1], "", null, "", FMTASKTYPE.BS_RiskUp_DealAudit, null, null, (int)OPERATEPOINT_Enums.RiskDealCheckerCheck, content.RISK_SUBMIT_ID, content.ID);
 
                         #endregion
                     }
@@ -5629,12 +5661,15 @@ namespace APT.BS.WebApi.Controllers.Api
                 List listSubmitContentReason = new List();
                 List listApproveId = new List();
                 List listId = new List();
+                List listDataID_Sub = new List();
                 List listParam = new List();
 
                 List ListDepIDNone = new List(); //责任部门ID
                                                              //通知表单
                 List listSubmitNotice = new List();
                 int rowIndex = 0;
+                Dictionary> dicLevelSubID = new Dictionary>();
+                List listLevel = new List();
                 if (listRiskSubminContentl.Any() && listRiskSubminContentl.Count > 0)
                 {
                     foreach (var item in listRiskSubminContentl)
@@ -5688,15 +5723,25 @@ namespace APT.BS.WebApi.Controllers.Api
                                 item.RISK_SUBMIT_NOTICE_ID = modelNotice.ID;
 
                                 listId.Add(modelNotice.ID);
+                                //listDataID_Sub.Add(item.ID);
+                                listLevel.Add(item.QUESTION_LEVEL);
                                 listParam.Add(modelNotice.QUESTION_LEVEL.ToString());
                                 listApproveId.Add(modelNotice.APPROVE_ID.Value);
+                                dicLevelSubID.Add(item.QUESTION_LEVEL, new List() { item.ID });
                             }
                             else
                             {
                                 item.APPROVE_ID = subTemp.APPROVE_ID;
                                 item.RISK_SUBMIT_NOTICE_ID = subTemp.ID;
+
+                                var subIDs = dicLevelSubID[item.QUESTION_LEVEL];
+                                subIDs.Add(item.ID);
+                                //回头看看是否正常
                             }
 
+                            //listDataID_Sub.Add(item.ID);//每条明细都要添加记录
+
+
                             //if (!listParam.Contains(item.QUESTION_LEVEL.ToString()) && !item.RISK_SUBMIT_NOTICE_ID.HasValue)//&& !item.RISK_SUBMIT_NOTICE_ID.HasValue  通知不能重复  2023-04-26(概率发生 看反馈 没得验证)
                             //{
                             //    #region      不包含此等级 添加通知
@@ -5905,7 +5950,7 @@ namespace APT.BS.WebApi.Controllers.Api
                             BantchSaveEntityNoCommit(listRiskSubminContentl);
                         if (listSubmitContentReason.Any())
                             BantchSaveEntityNoCommit(listSubmitContentReason);
-                    }, listParam, listApproveId, ApproveIDDependUserID, "BS006_VIEW", null, ListDepIDNone, FMTASKTYPE.BS_RiskUp_Audit);//  null =>ApproveIDDependUserID
+                    }, listParam, listApproveId, ApproveIDDependUserID, "BS006_VIEW", null, ListDepIDNone, FMTASKTYPE.BS_RiskUp_Audit, null, null, (int)OPERATEPOINT_Enums.RiskGet, entity.ID, listLevel, dicLevelSubID);//  null =>ApproveIDDependUserID  
                 }
                 return true;
             });
@@ -6008,7 +6053,7 @@ namespace APT.BS.WebApi.Controllers.Api
                 }
                 T_FM_NOTIFICATION_TASK taskMaster = null;
                 T_FM_NOTIFICATION_TASK taskEnd = null;
-
+                List listLog = null;
                 //手动上报 保存并发送 通知安全员
                 if (risk.SUBMIT_STATUS == (int)BSSubmitStatusEnum.Temp)
                 {
@@ -6083,6 +6128,7 @@ namespace APT.BS.WebApi.Controllers.Api
                     {
                         taskEnd = NotificationTaskService.GetEntityTask(entity.TaskID, "BS072_SHOWPRINT");
                     }
+                    listLog = OperateLogService.GetListOperateLog(OPERATEPOINT_Enums.RiskUpSD, risk.ID, risk.USER_ID.Value, null, new List() { UserId }, new List() { userName }, risk.ORG_ID, entity.ID);
                 }
 
                 entity.RiskContentState = null;
@@ -6098,6 +6144,8 @@ namespace APT.BS.WebApi.Controllers.Api
                         UpdateEntityNoCommit(taskMaster);
                     if (taskEnd != null)
                         UpdateEntityNoCommit(taskEnd);
+                    if (listLog != null && listLog.Any())
+                        BantchSaveEntityNoCommit(listLog);
                 });
 
                 return true;
@@ -6243,12 +6291,15 @@ namespace APT.BS.WebApi.Controllers.Api
                 var entity = entityContent.Nav_Submit;
                 if (entity == null)
                 {
+                    //页面传值过来是null
                     entity = GetEntity(entityContent.RISK_SUBMIT_ID.Value);
                     entity.SUBMIT_STATUS = entityContent.SUBMIT_STATUS;
                     if (entityContent.CHECK_TYPE_ID.HasValue)
                         entity.CHECK_TYPE_ID = entityContent.CHECK_TYPE_ID;
                     if (entityContent.CHECK_TYPE_LEVEL_ID.HasValue)
                         entity.CHECK_TYPE_LEVEL_ID = entityContent.CHECK_TYPE_LEVEL_ID;
+                    if (entityContent.CHECKOBJECT.HasValue)
+                        entity.CHECKOBJECT = entityContent.CHECKOBJECT;
                 }
                 var files = entityContent.Nav_Files;
                 entityContent.Nav_Files = null;
@@ -6260,6 +6311,8 @@ namespace APT.BS.WebApi.Controllers.Api
                 if (entity.SUBMIT_STATUS != (int)BSSubmitStatusEnum.Temp)
                 {
                     //手动上报
+                    if (!entity.CHECKOBJECT.HasValue)
+                        throw new Exception("请选择检查区域!");
                     if (!entity.CHECK_TYPE_ID.HasValue)
                         throw new Exception("请选择检查类型!");
                     if (!entity.CHECK_TYPE_LEVEL_ID.HasValue)
@@ -6529,7 +6582,9 @@ namespace APT.BS.WebApi.Controllers.Api
 
                     //如果是手动隐患上报 根据明细的 整改责任人  来走审批流 20240118
                     Guid? ApproveIDDependUserID = entityContent.DEAL_USER_ID;
-
+                    List listLevel = new List() { entityContent.QUESTION_LEVEL };
+                    Dictionary> dic = new Dictionary>();
+                    dic.Add(entityContent.QUESTION_LEVEL, new List() { entityContent.ID });
                     //??????
                     ////给通知责任人 发送通知
                     ////通知责任人 确定 后  走审批流
@@ -6547,7 +6602,7 @@ namespace APT.BS.WebApi.Controllers.Api
                             BantchSaveEntityNoCommit(files);
                         if (listRiskQuestionReason != null && listRiskQuestionReason.Any())
                             BantchSaveEntityNoCommit(listRiskQuestionReason);
-                    }, listParam, listApproveId, ApproveIDDependUserID, "BS073_SHOWPRINT", null, ListDepIDNone, FMTASKTYPE.BS_RiskUp_Audit);//  null =>ApproveIDDependUserID
+                    }, listParam, listApproveId, ApproveIDDependUserID, "BS073_SHOWPRINT", null, ListDepIDNone, FMTASKTYPE.BS_RiskUp_Audit, null, null, ((int)OPERATEPOINT_Enums.RiskInfoCompleteSD), entity.ID, listLevel, dic);//  null =>ApproveIDDependUserID
                 }
                 return true;
             });
@@ -6593,7 +6648,7 @@ namespace APT.BS.WebApi.Controllers.Api
                 List listDealF = new List();
                 List listNoticeDeal = new List();
                 T_BS_RISK_SUBMIT_CONTENT_DEAL dealTemp = null;
-
+                List listLog = new List();
                 listRiskSubminContentl.ForEach(item =>
                 {
                     if (item.CHECK_USER_ID == LoginID)
@@ -6607,7 +6662,13 @@ namespace APT.BS.WebApi.Controllers.Api
                     }
                 });
 
-
+                T_FM_NOTIFICATION_TASK task = null;
+                GetEntityTask(TaskID, ref task);
+                DateTime? TASK_ENDDT = null;
+                if (task != null)
+                {
+                    TASK_ENDDT = task.TASK_ENDDT;
+                }
                 //给验收人 发送通知
                 DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_RiskUp_ActualDealNotice, entity.ORG_ID.Value, DateTime.Now, null, null);
                 foreach (var item in listRiskSubminContentl)
@@ -6674,11 +6735,12 @@ namespace APT.BS.WebApi.Controllers.Api
                         notice.CREATE_TIME = dtNow;
                         listNoticeDeal.Add(notice);
 
+
+
+                        listLog.AddRange(OperateLogService.GetListOperateLog(OPERATEPOINT_Enums.RiskNoticeCheckerCheck, entity.RISK_SUBMIT_ID.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, new List() { dealTemp.ACTUAL_DEAL_USER_ID.Value }, new List() { item.Nav_UserActualDeal.NAME }, entity.ORG_ID, item.ID, null, false, TASK_ENDDT));
                     }
                 }
 
-                T_FM_NOTIFICATION_TASK task = null;
-                GetEntityTask(TaskID, ref task);
 
                 /// 整改落实人 确认整改通知单 系统发送整改单给整改落实人
                 //UpdateActualDealRecord
@@ -6701,6 +6763,9 @@ namespace APT.BS.WebApi.Controllers.Api
                 }
 
 
+                //OperateLogService.GetListOperateLog(OPERATEPOINT_Enums.RiskAssignActure, entity.RISK_SUBMIT_ID.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, ListNoticeAll, ListNoticeAllNAME, entity.ORG_ID, item.ID, null, false, TASK_ENDDT);
+
+
                 this.UnifiedCommit(() =>
                 {
                     UpdateEntityNoCommit(entity);//保存状态
@@ -6712,6 +6777,8 @@ namespace APT.BS.WebApi.Controllers.Api
                         BantchSaveEntity(listRiskSubminContentl);    //保存子表
                     if (listNoticeDeal != null && listNoticeDeal.Any())//整改责任人 按条数 收到整改单
                         BantchSaveEntity(listNoticeDeal);
+                    if (listLog != null && listLog.Any())//操作日志
+                        BantchSaveEntity(listLog);
                     if (task != null)//代办消息 清除
                         UpdateEntityNoCommit(task, "NOTICE_STATUS", "TASK_DT", "MODIFIER_ID");
                 });
diff --git a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitNoticePersonController.cs b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitNoticePersonController.cs
index 9ce94a6..7aaad49 100644
--- a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitNoticePersonController.cs
+++ b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSRiskSubmitNoticePersonController.cs
@@ -26,13 +26,15 @@ namespace APT.BS.WebApi.Controllers.Api
         IPFCodeRuleService CodeRuleService { get; set; }
         IPFApproveCallBackService ApproveCallBackService { get; set; }
         IFMDepartmentService DepartmentService { get; set; }
-        public BSRiskSubmitNoticePersonController(IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFCodeRuleService codeRuleService, IPFApproveCallBackService approveCallBackService, IFMDepartmentService departmentService)
+        IBSOperateLogService OperateLogService { get; set; }
+        public BSRiskSubmitNoticePersonController(IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFCodeRuleService codeRuleService, IPFApproveCallBackService approveCallBackService, IFMDepartmentService departmentService, IBSOperateLogService operateLogService)
         {
             NotificationTaskService = notificationTaskService;
             MFlowPermitService = mFlowPermitService;
             CodeRuleService = codeRuleService;
             ApproveCallBackService = approveCallBackService;
             DepartmentService = departmentService;
+            OperateLogService = operateLogService;
         }
 
 
@@ -169,6 +171,7 @@ namespace APT.BS.WebApi.Controllers.Api
                 //    throw new Exception("您不是此单的整改责任人,不能处理此单据!");
                 //}
                 T_FM_NOTIFICATION_TASK task = null;
+                DateTime? TASK_ENDDT = null;
                 if (entity.OPERATETYPE == OperateType.Save)
                 {
                     List listIndex = new List();
@@ -194,6 +197,8 @@ namespace APT.BS.WebApi.Controllers.Api
                     }
 
                     task = NotificationTaskService.GetEntityTask(entity.TaskID, "BS074_SHOWPRINT");
+                    if (task != null)
+                        TASK_ENDDT = task.TASK_ENDDT;
                 }
 
                 //审核人 同意
@@ -202,7 +207,9 @@ namespace APT.BS.WebApi.Controllers.Api
                 //entity.Nav_ListRiskSubmitContent = null;//不能有 不然 对应外键 会被清空
                 List ListNoticeAll = new List();
                 List ListNoticeAllNAME = new List();
+                List listOperateLog = new List();
                 DateTime dtEnd = NotificationTaskService.GetTaskEndTime(FMTASKTYPE.BS_RiskUp_Deal, entity.ORG_ID.Value, DateTime.Now, null, null);
+
                 listRiskSubminContentl.ForEach(item =>
                 {
                     //item.ACTUAL_DEAL_USER_ID = item.DEAL_USER_ID;//整改落实人默认  整改责任人
@@ -219,10 +226,11 @@ namespace APT.BS.WebApi.Controllers.Api
 
                         //给责任人 发送通知
                         listNoticeDeal.AddRange(NotificationTaskService.InsertUserNoticeTaskModels("验收人确认:" + entity.NAME.Replace("隐患整改通知:", ""), entity.ID, entity.ORG_ID, ListNoticeAll, ListNoticeAllNAME, DateTime.Now, ((item.LastDateUser.HasValue && item.LastDateUser.Value < dtEnd) ? item.LastDateUser.Value : dtEnd), (int)FMNoticeTypeEnum.消息, "BS042_SHOWPRINT"));//HM001_SHOWPRINT  "整改责任人确认:" + entity.NAME.Replace("隐患整改通知:", "")
+
+                        listOperateLog.AddRange(OperateLogService.GetListOperateLog(OPERATEPOINT_Enums.RiskAssignActure, entity.RISK_SUBMIT_ID.Value, APT.Infrastructure.Api.AppContext.CurrentSession.UserID.Value, null, ListNoticeAll, ListNoticeAllNAME, entity.ORG_ID, item.ID, null, false, TASK_ENDDT));
                     }
                 });
 
-
                 this.UnifiedCommit(() =>
                 {
                     UpdateEntityNoCommit(entity);//保存状态
@@ -230,6 +238,8 @@ namespace APT.BS.WebApi.Controllers.Api
                         BantchSaveEntity(listRiskSubminContentl);    //保存子表
                     if (listNoticeDeal != null && listNoticeDeal.Any())//整改责任人 按条数 收到整改单
                         BantchSaveEntity(listNoticeDeal);
+                    if (listOperateLog != null && listOperateLog.Any())//日志
+                        BantchSaveEntity(listOperateLog);
                     if (task != null)//代办消息 清除
                         UpdateEntityNoCommit(task, "NOTICE_STATUS", "TASK_DT", "MODIFIER_ID");
                 });
diff --git a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSSafeCheckController.cs b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSSafeCheckController.cs
index 4a79776..8aae82a 100644
--- a/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSSafeCheckController.cs
+++ b/APT.MicroApi/APT.BS.WebApi/Controllers/Api/BSSafeCheckController.cs
@@ -33,7 +33,8 @@ namespace APT.BS.WebApi.Controllers.Api
         IFMDepartmentService DepartmentService { get; set; }
         IPFSysLogService SysLogService { get; set; }
         IFMUserService UserService { get; set; }
-        public BSSafeCheckController(IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFCodeRuleService codeRuleService, IPFApproveCallBackService approveCallBackService, IFMDepartmentService departmentService, IPFSysLogService sysLogService, IFMUserService userService)
+        IBSOperateLogService OperateLogService { get; set; }
+        public BSSafeCheckController(IFMNotificationTaskService notificationTaskService, IFMFlowPermitService mFlowPermitService, IPFCodeRuleService codeRuleService, IPFApproveCallBackService approveCallBackService, IFMDepartmentService departmentService, IPFSysLogService sysLogService, IFMUserService userService, IBSOperateLogService operateLogService)
         {
             NotificationTaskService = notificationTaskService;
             MFlowPermitService = mFlowPermitService;
@@ -42,6 +43,7 @@ namespace APT.BS.WebApi.Controllers.Api
             DepartmentService = departmentService;
             SysLogService = sysLogService;
             UserService = userService;
+            OperateLogService = operateLogService;
         }
 
         #region   安全检查表单设计
@@ -1268,7 +1270,7 @@ namespace APT.BS.WebApi.Controllers.Api
                 #region  数据验证 表单数据处理  listDetail  listUser
 
                 //string FORM_CODE = "";
-                if (entity.Nav_ListSafeCheckDetail == null || entity.Nav_ListSafeCheckDetail.Count < 1)
+                if (entity.Nav_ListSafeCheckDetail == null || !entity.Nav_ListSafeCheckDetail.Any())
                 {
                     this.ThrowError("010001", "检查明细不能为空【选择检查项目分类,系统会自动带出检查明细】!");
                 }
@@ -2099,7 +2101,7 @@ namespace APT.BS.WebApi.Controllers.Api
                             BantchDeleteEntityNoCommit(listDelCategoryID);
                         if (listDelUserIDs != null)
                             BantchDeleteEntityNoCommit(listDelUserIDs);
-                    }, entity.APPROVE_ID, null, null, null, null, "BS032_SHOWPRINT", appOperaterID, approveTaskName, FMTASKTYPE.BS_SafeCheck_Make_Audit, null, entity.CHECKTIME, (int)OPERATEPOINT_Enums.CheckForm);//, entity.LIMITDATETIME
+                    }, entity.APPROVE_ID, null, null, null, null, "BS032_SHOWPRINT", appOperaterID, approveTaskName, FMTASKTYPE.BS_SafeCheck_Make_Audit, null, entity.CHECKTIME, (int)OPERATEPOINT_Enums.CheckForm, entity.ID);//, entity.LIMITDATETIME
 
                     #endregion
                 }
@@ -2206,6 +2208,8 @@ namespace APT.BS.WebApi.Controllers.Api
                     }
                     catch { }
                 }
+                var listOperateLog = OperateLogService.GetListOperateLog(OPERATEPOINT_Enums.CheckerCheck, entity.ID, LoginID, null, null, null, entity.ORG_ID, null, null, false, task.TASK_ENDDT);
+
                 if (isLast)
                 {
                     //最后一个检查 给检查主要负责人 发送待办
@@ -2220,6 +2224,8 @@ namespace APT.BS.WebApi.Controllers.Api
                             BantchSaveEntityNoCommit(listDetailUser);
                         if (task != null)//代办消息 清除
                             UpdateEntityNoCommit(task, "NOTICE_STATUS", "TASK_DT", "MODIFIER_ID");
+                        if (listOperateLog != null && listOperateLog.Any())
+                            BantchSaveEntityNoCommit(listOperateLog);
                     });
 
                     //List listUserID = new List();
@@ -2267,6 +2273,8 @@ namespace APT.BS.WebApi.Controllers.Api
                     {
                         if (listDetailUser.Count > 0)
                             BantchSaveEntityNoCommit(listDetailUser);
+                        if (listOperateLog != null && listOperateLog.Any())
+                            BantchSaveEntityNoCommit(listOperateLog);
                         if (task != null)//代办消息 清除
                             UpdateEntityNoCommit(task, "NOTICE_STATUS", "TASK_DT", "MODIFIER_ID");
                     });
@@ -4375,6 +4383,37 @@ namespace APT.BS.WebApi.Controllers.Api
                 }
                 else
                 {
+                    List listUserIDLog = new List();
+                    List listUserNameLog = new List();
+                    foreach (var item in listDetail)
+                    {
+                        IEnumerable listUserLogID = null;
+                        Func predicate = e => e.USER_ID != UserID && !listUserIDLog.Contains(e.USER_ID);
+                        if (!isSign)
+                        {
+                            //别人 且不是登记人
+                            listUserLogID = item.Nav_ListCheckDetailUser.Where(e => e.USER_ID != UserID && !listUserIDLog.Contains(e.USER_ID) && !e.ISMAINCHECK).Select(e => e.USER_ID);
+                        }
+                        else
+                        {
+                            //别人
+                            listUserLogID = item.Nav_ListCheckDetailUser.Where(e => e.USER_ID != UserID && !listUserIDLog.Contains(e.USER_ID)).Select(e => e.USER_ID);
+                        }
+
+                        if (listUserLogID != null && listUserLogID.Any())
+                        {
+                            listUserIDLog.AddRange(listUserLogID);
+                        }
+                    }
+                    if (listUserIDLog != null && listUserIDLog.Any())
+                    {
+                        var listUserLog = GetEntities(e => listUserIDLog.Contains(e.ID), null, null);
+                        foreach (var item in listUserIDLog)
+                        {
+                            listUserNameLog.Add(listUserLog.FirstOrDefault(e => e.ID == item)?.NAME);
+                        }
+                    }
+
                     string FORM_CODE = "BS034";
                     //代办
                     T_FM_NOTIFICATION_TASK task = null;
@@ -4384,6 +4423,7 @@ namespace APT.BS.WebApi.Controllers.Api
                         task = NotificationTaskService.GetTaskFinishModel(entity.TaskID, "BS034_VIEW");
                     }
 
+                    List listOpLog = null;
                     //检查确认记录
                     T_BS_SAFE_CHECK_RECORD Record = null;
                     if (!isSign)
@@ -4415,6 +4455,8 @@ namespace APT.BS.WebApi.Controllers.Api
                             {
                                 taskCheck.NOTICE_STATUS = 2;
                             }
+
+                            listOpLog = OperateLogService.GetListOperateLog(OPERATEPOINT_Enums.CheckerCheck, entity.ID, UserID, null, listUserIDLog, listUserNameLog, entity.ORG_ID, null, null, false, taskCheck.TASK_ENDDT);//检查记录确认 默认 处理 检查通知确认
                         }
                     }
 
@@ -4432,11 +4474,23 @@ namespace APT.BS.WebApi.Controllers.Api
                     //    FORM_CODE = "BS034";
                     //}
 
+
+
                     #region    查看是否都审批完成    新版 (如果中途添加审批流 可能直接就是审批人 会默认过(其实多组人填单,还有人没填就走了一个审批流)  最后一个确认人 还是给第一个审批人 发送待办)
 
                     var UserUnSignCheck = this.GetEntities(e => e.SAFE_CHECK_ID == entity.ID && e.USER_ID != UserID && e.SAFECHECKSTATE.HasValue && e.SAFECHECKSTATE != 80, null, null);//&& !e.ISCHECK = > ISSAMEMAINCHECKOK  && !e.ISCHECK
                     if (UserUnSignCheck != null && UserUnSignCheck.Count() > 0)
                     {
+                        listOpLog = new List();
+                        if (isSign)
+                        {
+                            listOpLog.AddRange(OperateLogService.GetListOperateLog(OPERATEPOINT_Enums.CheckRegister, entity.ID, UserID, null, listUserIDLog, listUserNameLog, entity.ORG_ID, null, null, false, (task != null ? task.TASK_ENDDT : null)));//操作记录
+                        }
+                        else
+                        {
+                            listOpLog.AddRange(OperateLogService.GetListOperateLog(OPERATEPOINT_Enums.CheckAgree, entity.ID, UserID, null, listUserIDLog, listUserNameLog, entity.ORG_ID, null, null, false, (task != null ? task.TASK_ENDDT : null)));//操作记录
+                        }
+
                         //如果还有人没有填单或者确认
                         //如果是主要检查人  判断 给次要检查人 添加 待办
 
@@ -4588,10 +4642,16 @@ namespace APT.BS.WebApi.Controllers.Api
                                 BantchSaveEntityNoCommit(listCheckRecordDetail);//确认 明细
                             if (Record != null)
                                 UpdateEntityNoCommit(Record);   //保存主表
+                            if (listOpLog != null && listOpLog.Any())
+                                BantchSaveEntityNoCommit(listOpLog);//日志
                         });
                     }
                     else
                     {
+                        ////最后一个人确认 、 发送审批流
+                        //listOpLog = OperateLogService.GetListOperateLog(OPERATEPOINT_Enums.CheckAgree, entity.ID, UserID, null, listUserIDLog, listUserNameLog, entity.ORG_ID, null, null, false, (task != null ? task.TASK_ENDDT : null));//操作记录
+
+
                         if (entity.STATECHECK == STATECHECK.Approving && entity.APPROVE_CHECKAUDIT_ID.HasValue)
                         {
                             if (entity.TaskID != Guid.Empty)
@@ -4772,7 +4832,9 @@ namespace APT.BS.WebApi.Controllers.Api
                             //    BantchDeleteEntityNoCommit(listIDDel);
                             if (Record != null)//检查记录
                                 UpdateEntityNoCommit(Record);
-                        }, entity.APPROVE_CHECKAUDIT_ID, entity.USERID_DOPLAN, null, null, null, "BS034_VIEW", null, entity.NAME.Replace("任务表", "记录表") + "-审批", FMTASKTYPE.BS_SafeCheck_Audit, null, entity.LIMITDATETIME);
+                            if (listOpLog != null && listOpLog.Count > 0)
+                                BantchSaveEntityNoCommit(listOpLog);//日志
+                        }, entity.APPROVE_CHECKAUDIT_ID, entity.USERID_DOPLAN, null, null, null, "BS034_VIEW", null, entity.NAME.Replace("任务表", "记录表") + "-审批", FMTASKTYPE.BS_SafeCheck_Audit, null, entity.LIMITDATETIME, ((int)OPERATEPOINT_Enums.CheckAgree), entity.ID);
 
                         #endregion