public JsonResult SavePhatHanhVanBan(FormCollection col) { AssignUserInfo(); SMSDAL.SendSMSDAL sms = new SMSDAL.SendSMSDAL(); SYS_TINNHANBusiness = Get <SYS_TINNHANBusiness>(); LogSMSBusiness = Get <LogSMSBusiness>(); HSCV_VANBANDIBusiness = Get <HSCV_VANBANDIBusiness>(); HSCV_VANBANDENBusiness = Get <HSCV_VANBANDENBusiness>(); DM_NHOMDANHMUCBusiness = Get <DM_NHOMDANHMUCBusiness>(); DM_DANHMUC_DATABusiness = Get <DM_DANHMUC_DATABusiness>(); TAILIEUDINHKEMBusiness = Get <TAILIEUDINHKEMBusiness>(); DM_NGUOIDUNGBusiness = Get <DM_NGUOIDUNGBusiness>(); WF_MODULEBusiness = Get <WF_MODULEBusiness>(); WF_PROCESSBusiness = Get <WF_PROCESSBusiness>(); WF_STATE_FUNCTIONBusiness = Get <WF_STATE_FUNCTIONBusiness>(); WF_STATEBusiness = Get <WF_STATEBusiness>(); WF_STREAMBusiness = Get <WF_STREAMBusiness>(); WF_FUNCTION_DONEBusiness = Get <WF_FUNCTION_DONEBusiness>(); WF_LOGBusiness = Get <WF_LOGBusiness>(); WF_ITEM_USER_PROCESSBusiness = Get <WF_ITEM_USER_PROCESSBusiness>(); CCTC_THANHPHANBusiness = Get <CCTC_THANHPHANBusiness>(); string selectedDept = col["department-choose"]; long? ID = col["ID"].ToLongOrNULL(); if (0 >= ID) { return(Json(new { Type = "ERROR", Message = "Không tìm thấy văn bản cần lưu sổ và phát hành" })); } #region cập nhật thông tin văn bản đi HSCV_VANBANDI VanBanDi = HSCV_VANBANDIBusiness.Find(ID); if (VanBanDi == null) { return(Json(new { Type = "ERROR", Message = "Không tìm thấy văn bản cần lưu sổ và phát hành" })); } if (!string.IsNullOrEmpty(col["SOHIEU"])) { VanBanDi.SOHIEU = col["SOHIEU"]; } VanBanDi.USER_RECEIVE_DIRECTLY = col["USERS_RECEIVE_SPECIAL"]; VanBanDi.DONVINHAN_INTERNAL_ID = selectedDept; VanBanDi.SOTHEOSO = col["SOTHEOSO"]; VanBanDi.SOVANBAN_ID = col["SOVANBAN_ID"].ToIntOrNULL(); if (!string.IsNullOrEmpty(col["TRICHYEU"])) { VanBanDi.TRICHYEU = col["TRICHYEU"].Trim(); } if (!string.IsNullOrEmpty(col["NGAY_HIEULUC"])) { try { VanBanDi.NGAYCOHIEULUC = col["NGAY_HIEULUC"].ToDateTime(); } catch (Exception e) { } } if (!string.IsNullOrEmpty(col["NGAYHET_HIEULUC"])) { try { VanBanDi.NGAYHETHIEULUC = col["NGAYHET_HIEULUC"].ToDateTime(); } catch (Exception e) { } } if (!string.IsNullOrEmpty(col["NGAYBANHANH"])) { try { VanBanDi.NGAYBANHANH = col["NGAYBANHANH"].ToDateTime(); } catch (Exception e) { } } HSCV_VANBANDIBusiness.Save(VanBanDi); #endregion //cập nhật số đi theo văn bản vào số văn bản hiện tại int numbSoDiTheoSo = VanBanDi.SOTHEOSO.GetPrefixNumber(); DM_DANHMUC_DATABusiness.UpdateSoVanBan(VanBanDi.SOVANBAN_ID.GetValueOrDefault(), numbSoDiTheoSo); #region Convert Văn bản List <int> ListDonVi = selectedDept.ToListInt(','); DateTime? NGAY_HIEULUC = col["NGAY_HIEULUC"].ToDateTime(); DateTime? NGAYHET_HIEULUC = col["NGAYHET_HIEULUC"].ToDateTime(); string TRICHYEU = col["TRICHYEU"]; string SOHIEU = col["SOHIEU"]; if (!string.IsNullOrEmpty(SOHIEU)) { SOHIEU = SOHIEU.Trim(); } if (!string.IsNullOrEmpty(TRICHYEU)) { TRICHYEU = TRICHYEU.Trim(); } List <TAILIEUDINHKEM> ListTaiLieu = TAILIEUDINHKEMBusiness.GetDataByItemID(ID.HasValue ? ID.Value : 0, LOAITAILIEU.VANBAN); DM_NGUOIDUNG NguoiDung = DM_NGUOIDUNGBusiness.Find(VanBanDi.NGUOIKY_ID); #endregion #region cập nhật wf function done var process = WF_PROCESSBusiness.GetProcess(VanBanDi.ID, MODULE_CONSTANT.VANBANTRINHKY); var function = WF_STATE_FUNCTIONBusiness.GetStateFunction((int)process.CURRENT_STATE); var functionDone = new WF_FUNCTION_DONE(); functionDone.ITEM_TYPE = MODULE_CONSTANT.VANBANTRINHKY; functionDone.ITEM_ID = VanBanDi.ID; functionDone.STATE = process.CURRENT_STATE; functionDone.FUNCTION_STATE = function.ID; functionDone.create_at = DateTime.Now; functionDone.create_by = currentUser.ID; WF_FUNCTION_DONEBusiness.Save(functionDone); var log = new WF_LOG(); log.ITEM_ID = VanBanDi.ID; log.ITEM_TYPE = MODULE_CONSTANT.VANBANTRINHKY; log.MESSAGE = "<div class='label label-info'>Đã phát hành</div>"; log.WF_ID = process.WF_ID; log.create_at = DateTime.Now; log.create_by = currentUser.ID; log.NGUOIXULY_ID = currentUser.ID; WF_LOGBusiness.Save(log); //Ghi nhận luồng đã xử lý xong var state = WF_STATEBusiness.Find(process.CURRENT_STATE); if (state != null && state.IS_KETTHUC == true) { process.IS_END = true; WF_PROCESSBusiness.Save(process); } var itemprocess = WF_ITEM_USER_PROCESSBusiness.repository.All().Where(x => x.ITEM_ID == process.ITEM_ID && x.ITEM_TYPE == process.ITEM_TYPE && x.STEP_ID == process.CURRENT_STATE) .FirstOrDefault(); if (itemprocess != null) { itemprocess.DAXULY = true; WF_ITEM_USER_PROCESSBusiness.Save(itemprocess); } #endregion //gửi văn bản đi cho đơn vị SaveVanBanPhatHanhToDonVi(VanBanDi, sms); //gửi văn bản đi cho cá nhân SaveVanBanPhatHanhToCaNhan(VanBanDi, sms); return(Json(new { Type = "SUCCESS", Message = "Lưu sổ và phát hành văn bản thành công" })); }
public JsonResult SaveKyDuyetVanBan(long id) { AssignUserInfo(); HSCV_VANBANDIBusiness = Get <HSCV_VANBANDIBusiness>(); HSCV_VANBANDI VanBan = HSCV_VANBANDIBusiness.Find(id); if (VanBan == null) { return(Json(new { Type = "ERROR", Message = "Không tìm thấy văn bản trình ký cần ký duyệt" })); } //Nếu như văn bản cần ký duyệt if (true == VanBan.HAS_SIGNED) { try { UploadFileTool tool = new UploadFileTool(); FileUltilities file = new FileUltilities(); List <string> ListExtension = tool.GetWordExtension(); List <string> ListPdfExtension = tool.GetPdfExtension(); var TAILIEUDINHKEMBusiness = Get <TAILIEUDINHKEMBusiness>(); var ListTaiLieu = TAILIEUDINHKEMBusiness.GetDataByItemID(id, LOAITAILIEU.VANBAN); var ListPdf = ListTaiLieu.Where(x => !string.IsNullOrEmpty(x.DINHDANG_FILE) && ListPdfExtension.Contains(x.DINHDANG_FILE.ToLower())).ToList(); var ListWord = ListTaiLieu.Where(x => !string.IsNullOrEmpty(x.DINHDANG_FILE) && ListExtension.Contains(x.DINHDANG_FILE.ToLower())).ToList(); var personalSign = ""; if (currentUser.signpath != null && currentUser.signpath != "") { personalSign = Server.MapPath("~/" + currentUser.signpath); } if (ListWord.Count > 0) { FileUltilities.CreateListWatermark("APPROVED", ListWord, "", personalSign); } if (ListPdf.Count > 0) { FileUltilities.CreateWaterMarkPdf(ListPdf, "APPROVED"); } } catch (Exception ex) { } } #region cập nhật wf function done var WF_PROCESSBusiness = Get <WF_PROCESSBusiness>(); var process = WF_PROCESSBusiness.GetProcess(VanBan.ID, MODULE_CONSTANT.VANBANTRINHKY); var WF_STATE_FUNCTIONBusiness = Get <WF_STATE_FUNCTIONBusiness>(); var function = WF_STATE_FUNCTIONBusiness.GetStateFunction((int)process.CURRENT_STATE); var WF_FUNCTION_DONEBusiness = Get <WF_FUNCTION_DONEBusiness>(); var WF_LOGBusiness = Get <WF_LOGBusiness>(); var functionDone = new WF_FUNCTION_DONE(); functionDone.ITEM_TYPE = MODULE_CONSTANT.VANBANTRINHKY; functionDone.ITEM_ID = VanBan.ID; functionDone.STATE = process.CURRENT_STATE; functionDone.FUNCTION_STATE = function.ID; functionDone.create_at = DateTime.Now; AssignUserInfo(); functionDone.create_by = currentUser.ID; WF_FUNCTION_DONEBusiness.Save(functionDone); var log = new WF_LOG(); log.ITEM_ID = VanBan.ID; log.ITEM_TYPE = MODULE_CONSTANT.VANBANTRINHKY; log.MESSAGE = "<div class='label label-info'>Đã phát hành</div>"; log.WF_ID = process.WF_ID; log.create_at = DateTime.Now; log.create_by = currentUser.ID; log.NGUOIXULY_ID = currentUser.ID; WF_LOGBusiness.Save(log); //Ghi nhận luồng đã xử lý xong var WF_STATEBusiness = Get <WF_STATEBusiness>(); var state = WF_STATEBusiness.Find(process.CURRENT_STATE); if (state != null && state.IS_KETTHUC == true) { process.IS_END = true; WF_PROCESSBusiness.Save(process); } #endregion return(Json(new { Type = "SUCCESS", Message = "Ký duyệt văn bản thành công" })); }
public JsonResultBO AddFlow(long ItemId, string itemType, UserInfoBO userId, int customState = 0) { var result = new JsonResultBO(true); //Lấy thông tin module của loại đối tượng var module = this.context.WF_MODULE.Where(x => x.MODULE_CODE.Equals(itemType)).FirstOrDefault(); if (module == null || module.WF_STREAM_ID == null) { result.MessageFail("Không tìm thấy luồng xử lý"); return(result); } //Lấy thông tin luồng xử lý var DeptObj = this.context.CCTC_THANHPHAN.Find(userId.DM_PHONGBAN_ID); if (DeptObj == null) { result.MessageFail("Không tìm thấy luồng xử lý do chưa set đúng phòng ban"); return(result); } var LstWFIds = module.WF_STREAM_ID.ToListInt(','); var flow = this.context.WF_STREAM.Where(x => x.LEVEL_ID == DeptObj.CATEGORY && LstWFIds.Contains(x.ID)).FirstOrDefault(); if (flow == null) { result.MessageFail("Không tìm thấy luồng xử lý"); return(result); } //Lấy danh sách bước var lstStep = this.context.WF_STATE.Where(x => x.WF_ID == flow.ID).OrderBy(x => x.ID).ToList(); if (lstStep == null && !lstStep.Any()) { result.MessageFail("Luồng xử lý chưa được cấu hình"); return(result); } var stateID = GetState(flow.ID, userId); /* * @author: duynn * @description: "trạng thái" tùy chỉnh cho phép sử dụng trạng thái vượt cấp * */ if (customState > 0) { stateID = customState; } var stateCurrent = this.context.WF_STATE.Find(stateID); var process = new WF_PROCESS(); process.ITEM_ID = ItemId; process.ITEM_TYPE = itemType; process.USER_ID = userId.ID; process.WF_ID = flow.ID; process.CURRENT_STATE = stateCurrent.ID; process.CURRENT_STATE_NAME = stateCurrent.STATE_NAME; if (customState > 0) { process.IS_END = stateCurrent.IS_KETTHUC.GetValueOrDefault(); } this.Save(process); var userProcess = new WF_ITEM_USER_PROCESS(); userProcess.ITEM_ID = ItemId; userProcess.ITEM_TYPE = itemType; userProcess.IS_XULYCHINH = true; userProcess.USER_ID = userId.ID; userProcess.create_at = DateTime.Now; userProcess.create_by = userId.ID; if (customState > 0) { userProcess.DAXULY = true; } this.context.WF_ITEM_USER_PROCESS.Add(userProcess); var log = new WF_LOG(); log.ITEM_ID = process.ITEM_ID; log.ITEM_TYPE = process.ITEM_TYPE; log.NGUOIXULY_ID = userId.ID; log.WF_ID = process.WF_ID; if (customState > 0) { log.MESSAGE = "<div class='label label-info'>" + stateCurrent.STATE_NAME + "</div>"; } else { log.MESSAGE = "<div class='label label-info'>Khởi tạo</div>"; } log.STEP_ID = null; log.create_at = DateTime.Now; log.create_by = userId.ID; this.context.WF_LOG.Add(log); if (customState > 0) { var function = this.context.WF_STATE_FUNCTION .Where(x => x.WF_STATE_ID == customState) .FirstOrDefault(); if (function != null) { var functionDone = new WF_FUNCTION_DONE(); functionDone.ITEM_TYPE = itemType; functionDone.ITEM_ID = ItemId; functionDone.STATE = customState; functionDone.FUNCTION_STATE = function.ID; functionDone.create_at = DateTime.Now; functionDone.create_by = userId.ID; this.context.WF_FUNCTION_DONE.Add(functionDone); } } this.context.SaveChanges(); return(result); }