public ActionResult ToTargetContent(string keyValue, int mode) { //当前用户 Operator curUser = OperatorProvider.Provider.Current(); var entity = findquestioninfobll.GetEntity(keyValue); //发现问题对象 var userInfo = userbll.GetUserInfoEntity(entity.CREATEUSERID); //创建人对象 List <FileInfoEntity> filelist = fileinfobll.GetImageListByObject(entity.QUESTIONPIC).ToList(); //问题图片集合 string resultMsg = string.Empty; //返回结果信息 bool isSucess = false; //创建流程是否成功 bool isSucessful = true; //返回流程推进结果 string wfFlag = string.Empty; //流程流转标记 string participant = string.Empty; //下一步流程参与者 string workFlow = string.Empty; //流程实例代码 string applicationId = string.Empty; //关联的应用id string applicationType = string.Empty; //关联的应用类型 WfControlObj wfentity = new WfControlObj(); WfControlResult result = new WfControlResult(); switch (mode) { //转隐患 case 0: applicationType = "yh"; #region 转隐患 string HidCode = DateTime.Now.ToString("yyyyMMddHHmmssfff").ToString(); try { #region 隐患基本信息 HTBaseInfoEntity bentity = new HTBaseInfoEntity(); bentity.ADDTYPE = "0"; bentity.CREATEUSERID = userInfo.UserId; bentity.CREATEUSERNAME = userInfo.RealName; bentity.CREATEUSERDEPTCODE = userInfo.DepartmentCode; bentity.CREATEUSERORGCODE = userInfo.OrganizeCode; bentity.HIDCODE = HidCode; bentity.HIDDEPART = userInfo.OrganizeId; bentity.HIDDEPARTNAME = userInfo.OrganizeName; bentity.HIDPHOTO = Guid.NewGuid().ToString(); //图片 foreach (FileInfoEntity fentity in filelist) { string sourcefile = Server.MapPath(fentity.FilePath); string targetFileName = Guid.NewGuid().ToString() + "." + fentity.FileType; string targetUrl = fentity.FilePath.Substring(0, fentity.FilePath.LastIndexOf("/")); if (System.IO.File.Exists(sourcefile)) { System.IO.FileInfo sfileInfo = new System.IO.FileInfo(sourcefile); string targetDir = sfileInfo.DirectoryName; string targetFile = targetDir + "\\" + targetFileName; System.IO.File.Copy(sourcefile, targetFile); } FileInfoEntity newfileEntity = new FileInfoEntity(); newfileEntity = fentity; newfileEntity.FilePath = targetUrl + "/" + targetFileName; newfileEntity.FileId = string.Empty; newfileEntity.RecId = bentity.HIDPHOTO; fileinfobll.SaveForm("", newfileEntity); } bentity.HIDBMID = entity.DEPTID; //所属部门id bentity.HIDBMNAME = entity.DEPTNAME; //所属部门名称 bentity.HIDDESCRIBE = entity.QUESTIONCONTENT; //隐患描述(问题内容) //排查信息 bentity.CHECKDATE = DateTime.Now; bentity.CHECKMAN = userInfo.UserId; bentity.CHECKMANNAME = userInfo.RealName; bentity.CHECKDEPARTID = userInfo.DepartmentCode; bentity.CHECKDEPARTNAME = userInfo.DeptName; //bentity.CHECKTYPE = dataitemdetailbll.GetDataItemListByItemCode("'SaftyCheckType'").Where(p => p.ItemName.Contains("日常")).FirstOrDefault().ItemDetailId; //检查类型 //添加 htbaseinfobll.SaveForm("", bentity); applicationId = bentity.ID; #endregion #region 创建隐患流程 workFlow = "01"; //隐患处理 isSucess = htworkflowbll.CreateWorkFlowObj(workFlow, applicationId, userInfo.UserId); if (isSucess) { htworkflowbll.UpdateWorkStreamByObjectId(applicationId); //更新业务流程状态 } #endregion #region 整改信息 HTChangeInfoEntity centity = new HTChangeInfoEntity(); centity.HIDCODE = HidCode; htchangeinfobll.SaveForm("", centity); #endregion #region 验收信息 HTAcceptInfoEntity aentity = new HTAcceptInfoEntity(); aentity.HIDCODE = HidCode; htacceptinfobll.SaveForm("", aentity); #endregion #region 推进流程 wfentity.businessid = applicationId; //隐患主键 wfentity.argument1 = string.Empty; //专业分类 wfentity.argument2 = userInfo.DepartmentId; //当前部门 wfentity.argument3 = string.Empty; //隐患类别 wfentity.argument4 = bentity.HIDBMID; //所属部门 wfentity.startflow = "隐患登记"; wfentity.submittype = "提交"; wfentity.rankid = string.Empty; wfentity.spuser = userInfo; wfentity.mark = "厂级隐患排查"; wfentity.organizeid = bentity.HIDDEPART; //对应电厂id //获取下一流程的操作人 result = wfcontrolbll.GetWfControl(wfentity); //处理成功 if (result.code == WfCode.Sucess) { participant = result.actionperson; wfFlag = result.wfflag; if (!string.IsNullOrEmpty(participant)) { int count = htworkflowbll.SubmitWorkFlow(wfentity, result, applicationId, participant, wfFlag, userInfo.UserId); if (count > 0) { htworkflowbll.UpdateWorkStreamByObjectId(applicationId); //更新业务流程状态 } } else { isSucessful = false; resultMsg = "请联系系统管理员,添加本单位及相关单位评估人员!"; } resultMsg = "已成功转为隐患,并进入对应流程,请知晓"; } else { isSucessful = false; resultMsg = result.message; } #endregion } catch (Exception ex) { isSucessful = false; resultMsg = ex.Message; } #endregion break; //转违章 case 1: applicationType = "wz"; #region 转违章 try { #region 违章基础信息 string lenNum = !string.IsNullOrEmpty(dataitemdetailbll.GetItemValue("LllegalSerialNumberLen")) ? dataitemdetailbll.GetItemValue("LllegalSerialNumberLen") : "3"; LllegalRegisterEntity wzentity = new LllegalRegisterEntity(); wzentity.ADDTYPE = "0"; wzentity.LLLEGALNUMBER = lllegalregisterbll.GenerateHidCode("bis_lllegalregister", "lllegalnumber", int.Parse(lenNum)); //违章编码 wzentity.CREATEUSERID = userInfo.UserId; wzentity.CREATEUSERNAME = userInfo.RealName; wzentity.CREATEUSERDEPTCODE = userInfo.DepartmentCode; wzentity.CREATEUSERORGCODE = userInfo.OrganizeCode; wzentity.CREATEDEPTID = userInfo.DepartmentId; wzentity.CREATEDEPTNAME = userInfo.DeptName; //所属单位 wzentity.BELONGDEPARTID = userInfo.OrganizeId; wzentity.BELONGDEPART = userInfo.OrganizeName; wzentity.LLLEGALPIC = Guid.NewGuid().ToString(); foreach (FileInfoEntity fentity in filelist) { string sourcefile = Server.MapPath(fentity.FilePath); string targetFileName = Guid.NewGuid().ToString() + "." + fentity.FileType; string targetUrl = fentity.FilePath.Substring(0, fentity.FilePath.LastIndexOf("/")); if (System.IO.File.Exists(sourcefile)) { System.IO.FileInfo sfileInfo = new System.IO.FileInfo(sourcefile); string targetDir = sfileInfo.DirectoryName; string targetFile = targetDir + "\\" + targetFileName; System.IO.File.Copy(sourcefile, targetFile); } FileInfoEntity newfileEntity = new FileInfoEntity(); newfileEntity = fentity; newfileEntity.FilePath = targetUrl + "/" + targetFileName; newfileEntity.FileId = string.Empty; newfileEntity.RecId = wzentity.LLLEGALPIC; fileinfobll.SaveForm("", newfileEntity); } wzentity.LLLEGALDESCRIBE = entity.QUESTIONCONTENT; lllegalregisterbll.SaveForm("", wzentity); applicationId = wzentity.ID; #endregion #region 创建流程 workFlow = "03"; isSucess = htworkflowbll.CreateWorkFlowObj(workFlow, applicationId, userInfo.UserId); if (isSucess) { lllegalregisterbll.UpdateFlowStateByObjectId("bis_lllegalregister", "flowstate", applicationId); //更新业务流程状态 } #endregion if (!string.IsNullOrEmpty(wzentity.ID)) { wzentity = lllegalregisterbll.GetEntity(wzentity.ID); } #region 违章整改信息 LllegalReformEntity reformEntity = new LllegalReformEntity(); reformEntity.LLLEGALID = applicationId; lllegalreformbll.SaveForm("", reformEntity); #endregion #region 违章验收信息 LllegalAcceptEntity acceptEntity = new LllegalAcceptEntity(); acceptEntity.LLLEGALID = applicationId; lllegalacceptbll.SaveForm("", acceptEntity); #endregion #region 推进流程 wfentity.businessid = applicationId; //主键 wfentity.argument3 = userInfo.DepartmentId; //当前部门id wfentity.startflow = wzentity.FLOWSTATE; wfentity.submittype = "提交"; wfentity.rankid = null; wfentity.spuser = userInfo; wfentity.mark = "厂级违章流程"; wfentity.organizeid = wzentity.BELONGDEPARTID; //对应电厂id //获取下一流程的操作人 result = wfcontrolbll.GetWfControl(wfentity); //处理成功 if (result.code == WfCode.Sucess) { participant = result.actionperson; wfFlag = result.wfflag; //提交流程到下一节点 if (!string.IsNullOrEmpty(participant)) { int count = htworkflowbll.SubmitWorkFlow(wfentity, result, applicationId, participant, wfFlag, userInfo.UserId); if (count > 0) { htworkflowbll.UpdateFlowStateByObjectId("bis_lllegalregister", "flowstate", applicationId); //更新业务流程状态 } } resultMsg = "已成功转为违章,并进入对应流程,请知晓"; } else { isSucessful = false; resultMsg = result.message; } #endregion } catch (Exception ex) { isSucessful = false; resultMsg = ex.Message; } #endregion break; //转问题 case 2: applicationType = "wt"; #region 转问题 try { #region 基础信息 QuestionInfoEntity qtEntity = new QuestionInfoEntity(); qtEntity.QUESTIONNUMBER = questioninfobll.GenerateCode("bis_questioninfo", "questionnumber", 4); qtEntity.CREATEUSERID = userInfo.UserId; qtEntity.CREATEUSERNAME = userInfo.RealName; qtEntity.CREATEUSERDEPTCODE = userInfo.DepartmentCode; qtEntity.CREATEUSERORGCODE = userInfo.OrganizeCode; qtEntity.BELONGDEPTID = userInfo.OrganizeId; qtEntity.BELONGDEPTNAME = userInfo.OrganizeName; qtEntity.QUESTIONPIC = Guid.NewGuid().ToString(); foreach (FileInfoEntity fentity in filelist) { string sourcefile = Server.MapPath(fentity.FilePath); string targetFileName = Guid.NewGuid().ToString() + "." + fentity.FileType; string targetUrl = fentity.FilePath.Substring(0, fentity.FilePath.LastIndexOf("/")); if (System.IO.File.Exists(sourcefile)) { System.IO.FileInfo sfileInfo = new System.IO.FileInfo(sourcefile); string targetDir = sfileInfo.DirectoryName; string targetFile = targetDir + "\\" + targetFileName; System.IO.File.Copy(sourcefile, targetFile); } FileInfoEntity newfileEntity = new FileInfoEntity(); newfileEntity = fentity; newfileEntity.FilePath = targetUrl + "/" + targetFileName; newfileEntity.FileId = string.Empty; newfileEntity.RecId = qtEntity.QUESTIONPIC; fileinfobll.SaveForm("", newfileEntity); } qtEntity.QUESTIONDESCRIBE = entity.QUESTIONCONTENT; qtEntity.CHECKDATE = DateTime.Now; qtEntity.CHECKPERSONID = userInfo.UserId; qtEntity.CHECKPERSONNAME = userInfo.RealName; qtEntity.CHECKDEPTID = userInfo.DepartmentId; qtEntity.CHECKDEPTNAME = userInfo.DeptName; //qtEntity.CHECKTYPE = dataitemdetailbll.GetDataItemListByItemCode("'SaftyCheckType'").Where(p => p.ItemName.Contains("日常")).FirstOrDefault().ItemDetailId; //检查类型 questioninfobll.SaveForm("", qtEntity); applicationId = qtEntity.ID; #endregion #region 创建流程 workFlow = "09"; //问题处理 isSucess = htworkflowbll.CreateWorkFlowObj(workFlow, applicationId, userInfo.UserId); if (isSucess) { htworkflowbll.UpdateFlowStateByObjectId("bis_questioninfo", "flowstate", applicationId); //更新业务流程状态 } #endregion #region 整改信息 QuestionReformEntity qtreformEntity = new QuestionReformEntity(); qtreformEntity.QUESTIONID = applicationId; questionreformbll.SaveForm("", qtreformEntity); #endregion //极光消息推送 JPushApi.PushMessage(userInfo.Account, userInfo.RealName, "WT001", "您有一条问题需完善,请到问题登记进行处理", "您" + entity.CREATEDATE.Value.ToString("yyyy-MM-dd") + "发现的问题已确定为问题,请您到问题登记下对该问题进行完善并指定对应整改责任人。", applicationId); resultMsg = "已成功转为问题,并进入对应流程,请知晓"; } catch (Exception ex) { isSucessful = false; resultMsg = ex.Message; } #endregion break; } try { if (isSucessful) { //评估阶段转 if (entity.FLOWSTATE == "评估") { #region 推进发现问题流程 wfentity = new WfControlObj(); wfentity.businessid = keyValue; // wfentity.startflow = entity.FLOWSTATE; wfentity.submittype = "提交"; wfentity.rankid = string.Empty; wfentity.user = curUser; wfentity.spuser = null; wfentity.mark = "发现问题流程"; wfentity.organizeid = entity.ORGANIZEID; //对应电厂id //获取下一流程的操作人 result = wfcontrolbll.GetWfControl(wfentity); //处理成功 if (result.code == WfCode.Sucess) { participant = result.actionperson; wfFlag = result.wfflag; //提交流程到下一节点 if (!string.IsNullOrEmpty(participant)) { int count = htworkflowbll.SubmitWorkFlow(wfentity, result, keyValue, participant, wfFlag, curUser.UserId); if (count > 0) { //返回成功的结果 #region 返回成功的结果 FindQuestionHandleEntity qentity = new FindQuestionHandleEntity(); if (mode == 0) { qentity.HANDLESTATUS = "已转隐患"; } else if (mode == 1) { qentity.HANDLESTATUS = "已转违章"; } else if (mode == 2) { qentity.HANDLESTATUS = "已转问题"; } qentity.HANDLEDATE = DateTime.Now; qentity.HANDLERID = curUser.UserId; qentity.HANDLERNAME = curUser.UserName; qentity.QUESTIONID = keyValue; qentity.RELEVANCEID = applicationId; qentity.RELEVANCETYPE = applicationType; qentity.APPSIGN = "Web"; findquestionhandlebll.SaveForm("", qentity); #endregion htworkflowbll.UpdateFlowStateByObjectId("bis_findquestioninfo", "flowstate", keyValue); //更新业务流程状态 } } return(Success(resultMsg)); } else { return(Error(result.message)); } #endregion } else //结束阶段转 列表转 { //返回成功的结果 #region 返回成功的结果 FindQuestionHandleEntity qentity = new FindQuestionHandleEntity(); if (mode == 0) { qentity.HANDLESTATUS = "已转隐患"; } else if (mode == 1) { qentity.HANDLESTATUS = "已转违章"; } else if (mode == 2) { qentity.HANDLESTATUS = "已转问题"; } qentity.HANDLEDATE = DateTime.Now; qentity.HANDLERID = curUser.UserId; qentity.HANDLERNAME = curUser.UserName; qentity.QUESTIONID = keyValue; qentity.RELEVANCEID = applicationId; qentity.RELEVANCETYPE = applicationType; qentity.APPSIGN = "Web"; findquestionhandlebll.SaveForm("", qentity); #endregion return(Success(resultMsg)); } } else { return(Error(resultMsg)); } } catch (Exception ex) { return(Error(ex.Message)); } }
public ActionResult SaveForm(string keyValue, string isUpSubmit, HTBaseInfoEntity bentity, HTApprovalEntity entity, HTChangeInfoEntity chEntity, HTAcceptInfoEntity aEntity) { Operator curUser = OperatorProvider.Provider.Current(); string wfFlag = string.Empty; //流程标识 #region 保存基本信息 //评估ID string APPROVALID = Request.Form["APPROVALID"] != null ? Request.Form["APPROVALID"].ToString() : ""; string CHANGEID = Request.Form["CHANGEID"] != null ? Request.Form["CHANGEID"].ToString() : ""; string ACCEPTID = Request.Form["ACCEPTID"] != null ? Request.Form["ACCEPTID"].ToString() : ""; APPROVALID = APPROVALID == " " ? "" : APPROVALID; //隐患曝光 string EXPOSURESTATE = Request.Form["EXPOSURESTATE"] != null ? Request.Form["EXPOSURESTATE"].ToString() : ""; //设备 if (string.IsNullOrEmpty(bentity.DEVICEID)) { bentity.DEVICEID = string.Empty; } if (string.IsNullOrEmpty(bentity.DEVICENAME)) { bentity.DEVICENAME = string.Empty; } if (string.IsNullOrEmpty(bentity.DEVICECODE)) { bentity.DEVICECODE = string.Empty; } //保存隐患基本信息 htbaseinfobll.SaveForm(keyValue, bentity); //隐患整改 if (!string.IsNullOrEmpty(CHANGEID)) { var tempEntity = htchangeinfobll.GetEntity(CHANGEID); chEntity.AUTOID = tempEntity.AUTOID; chEntity.BACKREASON = ""; //回退原因 chEntity.APPLICATIONSTATUS = tempEntity.APPLICATIONSTATUS; chEntity.POSTPONEDAYS = tempEntity.POSTPONEDAYS; chEntity.POSTPONEDEPT = tempEntity.POSTPONEDEPT; chEntity.POSTPONEDEPTNAME = tempEntity.POSTPONEDEPTNAME; } htchangeinfobll.SaveForm(CHANGEID, chEntity); //隐患验收 if (!string.IsNullOrEmpty(ACCEPTID)) { var tempEntity = htacceptinfobll.GetEntity(ACCEPTID); aEntity.AUTOID = tempEntity.AUTOID; } htacceptinfobll.SaveForm(ACCEPTID, aEntity); #endregion string participant = string.Empty; //获取流程下一节点的参与人员 HTBaseInfoEntity baseEntity = htbaseinfobll.GetEntity(keyValue); WfControlObj wfentity = new WfControlObj(); wfentity.businessid = keyValue; wfentity.argument1 = bentity.MAJORCLASSIFY; //专业分类 wfentity.argument2 = curUser.DeptId; //当前部门 wfentity.argument3 = bentity.HIDTYPE; //隐患类别 wfentity.argument4 = bentity.HIDBMID; //所属部门 string startflow = baseEntity.WORKSTREAM; wfentity.startflow = startflow; wfentity.rankid = baseEntity.HIDRANK; wfentity.user = curUser; wfentity.mark = "厂级隐患排查"; wfentity.organizeid = baseEntity.HIDDEPART; //对应电厂id //返回结果 WfControlResult result = new WfControlResult(); if (isUpSubmit == "1") //上报,且存在上级部门 { #region 报 wfentity.submittype = "上报"; //获取下一流程的操作人 result = wfcontrolbll.GetWfControl(wfentity); //处理成功 if (result.code == WfCode.Sucess) { participant = result.actionperson; //目标流程参与者 if (!string.IsNullOrEmpty(participant)) { //保存隐患评估信息 htapprovebll.SaveForm(APPROVALID, entity); htworkflowbll.SubmitWorkFlowNoChangeStatus(wfentity, result, keyValue, participant, curUser.UserId); return(Success(result.message)); } else { return(Error("当前上级部门无评估人员,如需上报,请联系系统管理员进行配置!")); } } else { return(Error(result.message)); } #endregion } else //不上报,评估通过需要提交整改,评估不通过退回到登记 { /****判断当前人是否评估通过*****/ #region 判断当前人是否评估通过 //评估通过,则直接进行整改 if (entity.APPROVALRESULT == "1") { wfentity.submittype = "提交"; //不指定整改责任人 if (chEntity.ISAPPOINT == "0") { wfentity.submittype = "制定提交"; } //判断是否是同级提交 bool ismajorpush = GetCurUserWfAuth(baseEntity.HIDRANK, "隐患评估", "隐患评估", "厂级隐患排查", "同级提交", baseEntity.MAJORCLASSIFY, null, null, keyValue); if (ismajorpush) { wfentity.submittype = "同级提交"; } #region 国电新疆版本 if (baseEntity.ADDTYPE == "3") { //非本部门整改 if (baseEntity.ISSELFCHANGE == "0") { wfentity.submittype = "制定提交"; //如果已经制定了整改计划,则按照提交来进行推送 if (baseEntity.ISFORMULATE == "1") { wfentity.submittype = "提交"; } //如果当前评估部门是整改部门,则直接提交 if (curUser.DeptId == chEntity.CHANGEDUTYDEPARTID) { wfentity.submittype = "提交"; } //如果当前评估部门是创建部门,则直接提交至非本部门整改的安监部 if (curUser.DeptCode == baseEntity.CREATEUSERDEPTCODE) { wfentity.submittype = "制定提交"; } } else //本部门整改情况下, 公司级用户不管如何,都不会直接到生技部 { UserEntity userEntity = userbll.GetEntity(baseEntity.CREATEUSERID); if (userEntity.RoleName.Contains("公司级用户") && curUser.RoleName.Contains("公司级用户")) { wfentity.submittype = "制定提交"; } } } #endregion } else //评估不通过,退回到登记 { wfentity.submittype = "退回"; #region 国电新疆版本 if (baseEntity.ADDTYPE == "3") { //已经制定了整改计划,则按照制定计划退回 if (baseEntity.ISFORMULATE == "1") { wfentity.submittype = "制定退回"; } } #endregion } //获取下一流程的操作人 result = wfcontrolbll.GetWfControl(wfentity); //处理成功 if (result.code == WfCode.Sucess) { participant = result.actionperson; wfFlag = result.wfflag; if (!string.IsNullOrEmpty(participant)) { //如果是更改状态 if (result.ischangestatus) { int count = htworkflowbll.SubmitWorkFlow(wfentity, result, keyValue, participant, wfFlag, curUser.UserId); if (count > 0) { //保存隐患评估信息 htapprovebll.SaveForm(APPROVALID, entity); htworkflowbll.UpdateWorkStreamByObjectId(keyValue); //更新业务流程状态 return(Success(result.message)); } else { return(Error("当前用户无评估权限!")); } } else //不更改状态的情况下 { //保存隐患评估信息 htapprovebll.SaveForm(APPROVALID, entity); htworkflowbll.SubmitWorkFlowNoChangeStatus(wfentity, result, keyValue, participant, curUser.UserId); return(Success(result.message)); } } else { return(Error("目标流程参与者未定义!")); } } else { return(Error(result.message)); } #endregion } }