/// <summary> /// 导入Excel-轮胎PID /// </summary> /// <param name="model"></param> /// <param name="list"></param> /// <returns></returns> public bool ImportTireActivityPid(TireActivityModel model, List <TireActivityPIDModel> list) { bool sucess = false; int tireActivityID = AddTireActivity(model); foreach (var item in list) { //检测Excel中的PID是否与己有计划的PID重复 var repeatList = GetTireActivityPidByPid(item.PID); if (repeatList != null && repeatList.Count > 0) { foreach (var piditem in repeatList) { //重复的PID在被覆盖计划中删除 UpdateTireActivityPid(piditem.PKID, item.CreateBy); //重复的PID所在计划的PID数量减去1 UpdateTireActivityPidNum(piditem.TireActivityID, item.CreateBy); //如果重复的PID所在计划的PIDNum为0,则暂停该计划 var tireActivityModel = GetTireActivityModel(piditem.TireActivityID); if (tireActivityModel != null && tireActivityModel.PIDNum == 0) { UpdateTireActivityStatus(piditem.TireActivityID, item.CreateBy); } } } item.TireActivityID = tireActivityID; sucess = AddTireActivityPid(item) > 0; } return(sucess); }
/// <summary> /// 添加轮胎活动计划 /// </summary> /// <param name="model"></param> /// <returns></returns> public static int AddTireActivity(TireActivityModel model) { try { return(DataAccess.DAO.TireActivity.DalTireActivity.AddTireActivity(model)); } catch (Exception ex) { Logger.Error("AddTireActivity", ex); throw ex; } }
public ActionResult AddTireActivityPid(TireActivityModel model, int notvalidCount, List <TireActivityPIDModel> list) { var success = TireActivityManager.ImportTireActivityPid(model, list); if (success == true) { return(Json(new { code = 1, status = success, msg = "文件上传成功" })); } else { return(Json(new { code = 1, status = success, msg = "上传失败" })); } }
/// <summary> /// 添加轮胎活动计划 /// </summary> /// <param name="model"></param> /// <returns></returns> public static int AddTireActivity(TireActivityModel model) { var sql = @"INSERT INTO Activity.[dbo].[TireActivity] ([PlanNumber] ,[PlanName] ,[PlanDesc] ,[PIDNum] ,[Status] ,[UpdateID] ,[BeginDatetime] ,[EndDatetime] ,[CreateDatetime] ,[LastUpdateDateTime] ,[CreateBy] ,[LastUpdateBy] ) VALUES ( @PlanNumber , @PlanName, @PlanDesc, @PIDNum, @Status, @UpdateID, @BeginDatetime, @EndDatetime, GETDATE() , GETDATE(), @CreateBy, @LastUpdateBy ) SELECT SCOPE_IDENTITY();"; using (var conn = new SqlConnection(ConnectionHelper.GetDecryptConn("Gungnir"))) { var parameters = new[] { new SqlParameter("@PlanNumber", model.PlanNumber), new SqlParameter("@PlanName", model.PlanName), new SqlParameter("@PlanDesc", model.PlanDesc), new SqlParameter("@PIDNum", model.PIDNum), new SqlParameter("@Status", model.Status), new SqlParameter("@UpdateID", model.UpdateID), new SqlParameter("@BeginDatetime", model.BeginDatetime), new SqlParameter("@EndDatetime", model.EndDatetime), new SqlParameter("@CreateBy", model.CreateBy), new SqlParameter("@LastUpdateBy", model.LastUpdateBy) }; return(Convert.ToInt32(SqlHelper.ExecuteScalar(conn, CommandType.Text, sql, parameters))); } }
public ActionResult ImportTireActivityPid(string planName, string planDesc, string beginDateTime, string endDateTime) { var list = new List <TireActivityPIDModel>(); #region 验证文件 var files = Request.Files; if (files == null || files.Count <= 0) { return(Json(new { code = 1, status = false, msg = "请先选择文件上传" })); } var file = files[0]; if (file.ContentType != "application/vnd.ms-excel" && file.ContentType != "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet") { return(Json(new { code = 1, status = false, msg = "文件格式不正确, 请上传Excel文件" })); } var desc = Request["planName"].ToString(); #endregion var stream = file.InputStream; var buffer = new byte[stream.Length]; stream.Read(buffer, 0, buffer.Length); var workBook = new XSSFWorkbook(new MemoryStream(buffer)); var sheet = workBook.GetSheetAt(0); #region 读取验证excel信息 Func <ICell, string> getStringValueFunc = cell => { if (cell != null) { if (cell.CellType == CellType.Numeric) { return(DateUtil.IsCellDateFormatted(cell) ? cell.DateCellValue.ToString("yyyy-MM-dd HH:mm:ss.fff") : cell.NumericCellValue.ToString()); } return(cell.StringCellValue?.Trim()); } return(null); }; var titleRow = sheet.GetRow(sheet.FirstRowNum); var cellNum = titleRow.FirstCellNum; int pidNum = 0;//轮胎PID的索引 for (int i = cellNum; i < titleRow.LastCellNum; i++) { if (titleRow.GetCell(i) != null) { if (getStringValueFunc(titleRow.GetCell(i)) == "PID") { pidNum = i; } } } var msgs = new List <string>(); for (var rowIndex = sheet.FirstRowNum + 1; rowIndex <= sheet.LastRowNum; rowIndex++) { var row = sheet.GetRow(rowIndex); if (row != null) { var cellIndex = row.FirstCellNum; var pid = getStringValueFunc(row.GetCell(pidNum)); if (!string.IsNullOrEmpty(pid)) { var item = new TireActivityPIDModel { PID = pid }; var existsItem = list.FirstOrDefault(x => x.PID == item.PID ); if (existsItem != null) { list.Remove(existsItem); } ; item.CreateBy = User.Identity.Name; item.LastUpdateBy = User.Identity.Name; list.Add(item); } } } if (!list.Any()) { return(Json(new { code = 1, status = false, msg = "导入数据不能为空!" })); } #endregion #region 轮胎PID验证 var pidList = list.Select(x => x.PID).ToList(); //excel中所有的pid集合 var validPidList = TireActivityManager.GetValidTirePid(pidList).Select(x => x.PID).ToList(); //有效pid集合 var validMainPackageList = list.Where(x => validPidList.Contains(x.PID)).ToList(); //有效的轮胎活动PID if (!validMainPackageList.Any()) { return(Json(new { code = 1, status = false, msg = "轮胎PID全部无效!" })); } var tireActivityModel = new TireActivityModel(); tireActivityModel.PlanDesc = planDesc.Trim(); tireActivityModel.PlanName = planName.Trim(); tireActivityModel.BeginDatetime = DateTime.Parse(beginDateTime); tireActivityModel.EndDatetime = DateTime.Parse(endDateTime); tireActivityModel.PIDNum = validMainPackageList.Count; var nowTime = DateTime.Now; if (nowTime < tireActivityModel.BeginDatetime) { tireActivityModel.Status = 0; } if (tireActivityModel.BeginDatetime <= nowTime && nowTime <= tireActivityModel.EndDatetime) { tireActivityModel.Status = 1; } if (nowTime > tireActivityModel.EndDatetime) { tireActivityModel.Status = 2; } tireActivityModel.CreateBy = User.Identity.Name; tireActivityModel.LastUpdateBy = User.Identity.Name; int maxUpdateID = TireActivityManager.GetMaxTireActivityUpdateID(); tireActivityModel.UpdateID = maxUpdateID + 1; tireActivityModel.PlanNumber = "计划" + (maxUpdateID + 2); var notvalidCount = list.Where(x => !validPidList.Contains(x.PID)).ToList().Count; #endregion var repeatList = TireActivityManager.GetRepeatTirePids(validMainPackageList.Select(x => x.PID).ToList().ToList()); return(Json(new { code = 0, activityModel = tireActivityModel, list = validMainPackageList, repeatList = repeatList, notvalidCount = notvalidCount, validCount = validPidList.Count })); }