using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Spire.Xls; using System; using System.Collections.Generic; using System.Data; using System.IO; using System.Text.RegularExpressions; using System.Web; namespace FangYar.WebUI.ashx { /// /// OaLeaveHandler 的摘要说明 /// public class ZYTSubjectGradeStandard : IHttpHandler { private FangYar.BLL.TRAIN.T_SUBJECTGRADESTANDARD bll = new BLL.TRAIN.T_SUBJECTGRADESTANDARD(); private FangYar.BLL.TRAIN.T_SUBJECT sub_bll = new BLL.TRAIN.T_SUBJECT(); public void ProcessRequest(HttpContext context) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Other, "战训科目标准请求", "", "1"); context.Response.ContentType = "text/plain"; string action = context.Request.Params["Action"]; string returnstr = ""; switch (action) { case "List": returnstr = GetTSubjectGradeStandardList(context); break; case "Add": returnstr = AddTSubjectGradeStandard(context); break; case "Edit": returnstr = EditTSubjectGradeStandard(context); break; case "Del": returnstr = DelTSubjectGradeStandard(context); break; case "GetSubject": returnstr = GetSubject(context); break; case "GetStandardList": returnstr = GetStandardList(context); //根据科目获取标准 break; case "newGetStandardList": returnstr = newGetStandardList(context); //根据科目获取标准 break; case "GetStandardList2": returnstr = GetStandardList2(context); //根据科目获取标准(结果下限倒叙,年龄倒叙) break; case "newGetStandardList2": returnstr = newGetStandardList2(context); //根据科目获取标准(结果下限倒叙,年龄倒叙) break; case "impExcel": returnstr = impExcel(context); break; case "newImpExcel": returnstr = newImpExcel(context); break; case "newImpExcel2023": returnstr = newImpExcel2023(context); break; } context.Response.Write(returnstr); } //查询 private string GetTSubjectGradeStandardList(HttpContext context) { string returnstr = ""; try { string OrgId = context.Request.Params["OrgId"]; string keyword = context.Request.Params["keywords"]; string treeID = context.Request.Params["treeID"]; string page = context.Request.Params["page"]; string limit = context.Request.Params["limit"]; string subjectid = context.Request.Params["subjectid"]; string is_content = context.Request.Params["is_content"]; int pageIndex = 1; int pageSize = 10; int startIndex = 0; int endIndex = 10; if (!string.IsNullOrEmpty(page)) { pageIndex = int.Parse(page); } if (!string.IsNullOrEmpty(limit)) { pageSize = int.Parse(limit); } startIndex = (pageIndex - 1) * pageSize; endIndex = pageSize; string where = " 1=1 "; if (!string.IsNullOrEmpty(treeID) && treeID != OrgId) { if (is_content == "1") { where += " and org_id in ( select o.org_id from fire_org o ,(select get_Org_child_list('" + treeID + "') cids ) s where find_in_set(org_id,cids) ) "; } else { where += " and ORG_ID = '" + treeID + "'"; } } else { if (is_content == "1") { where += " and org_id in ( select o.org_id from fire_org o ,(select get_Org_child_list('" + OrgId + "') cids ) s where find_in_set(org_id,cids) ) "; } else { where += " and ORG_ID = '" + OrgId + "'"; } } if (!string.IsNullOrEmpty(keyword)) { where += " and ( NAME like '%" + keyword + "%' or DESCRIPTION like '%" + keyword + "%')"; } if (!string.IsNullOrEmpty(subjectid)) { where += " and SUBJECTID = '" + subjectid + "'"; } returnstr = "{\"code\":0,\"msg\":\"\","; int count = bll.GetRecordCount(where); returnstr += "\"count\":" + count + ",\"data\":"; if (count == 0) { returnstr += "[]"; } else { DataTable dt = bll.GetListByPage(where, "", startIndex, endIndex).Tables[0]; returnstr += FangYar.Common.JsonHelper.ToJson(dt); } returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":0,\"" + e.Message + "\":\"error\",\"count\":0,\"data\":[]}"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "查询异常:" + e.Message, "1"); } BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "战训科目标准请求", "查询", "1"); return returnstr; } //添加 private string AddTSubjectGradeStandard(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string staobjarry = context.Request.Params["staobjarry"]; List ht = new List(); JArray jArray = JArray.Parse(staobjarry); foreach (JObject obj in jArray) { FangYar.Model.TRAIN.T_SUBJECTGRADESTANDARD model = new Model.TRAIN.T_SUBJECTGRADESTANDARD(); model.ID = Guid.NewGuid().ToString("N"); model.GENDER = obj["gender"].ToString(); model.SUBJECTID = obj["subjectid"].ToString(); model.SUBJECTNAME = obj["subjectname"].ToString(); model.UNITOFMEASUREMEN = obj["unitofmeasuremen"].ToString(); model.STA1 = obj["sta1"].ToString(); model.STA2 = obj["sta2"].ToString(); model.STASYS1 = obj["stasys1"].ToString(); model.STASYS2 = obj["stasys2"].ToString(); model.ACHIEVEMENT1 = obj["achievement1"].ToString(); model.ACHIEVEMENT2 = obj["achievement2"].ToString(); model.ORG_ID = obj["OrgId"].ToString(); model.ORG_NAME = obj["OrgName"].ToString(); FangYar.Model.OA.CommonSql staModel = bll.getInsertStaSql(model); ht.Add(staModel); } if (FangYar.Common.MySqlHelper.ExecuteSqlTranBool(ht)) { code = 1; msg = "操作成功"; } else { code = 0; msg = "操作失败"; } } catch (Exception e) { msg = e.Message; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "添加异常:" + e.Message, "1"); } returnstr = "{\"msg\":\"" + msg + "\",\"code\":" + code + "}"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Add, "战训科目标准请求", "添加", "1"); return returnstr; } //修改 private string EditTSubjectGradeStandard(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string staobjarry = context.Request.Params["staobjarry"]; string subjectid = context.Request.Params["subjectid"]; List ht = new List(); //事务删除 FangYar.Model.OA.CommonSql delModel = bll.getDeleteStaSql(subjectid); ht.Add(delModel); //事务添加 JArray jArray = JArray.Parse(staobjarry); foreach (JObject obj in jArray) { FangYar.Model.TRAIN.T_SUBJECTGRADESTANDARD model = new Model.TRAIN.T_SUBJECTGRADESTANDARD(); model.ID = Guid.NewGuid().ToString("N"); model.GENDER = obj["gender"].ToString(); model.SUBJECTID = obj["subjectid"].ToString(); model.SUBJECTNAME = obj["subjectname"].ToString(); model.UNITOFMEASUREMEN = obj["unitofmeasuremen"].ToString(); model.STA1 = obj["sta1"].ToString(); model.STASYS1 = obj["stasys1"].ToString(); model.ACHIEVEMENT1 = obj["achievement1"].ToString(); model.ORG_ID = obj["OrgId"].ToString(); model.ORG_NAME = obj["OrgName"].ToString(); model.AGE1 = obj["age1"].ToString(); FangYar.Model.OA.CommonSql staModel = bll.getInsertStaSql(model); ht.Add(staModel); } if (FangYar.Common.MySqlHelper.ExecuteSqlTranBool(ht)) { code = 1; msg = "操作成功"; } else { code = 0; msg = "操作失败"; } } catch (Exception e) { msg = e.Message; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "修改异常:" + e.Message, "1"); } returnstr = "{\"msg\":\"" + msg + "\",\"code\":" + code + "}"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Update, "战训科目标准请求", "修改", "1"); return returnstr; } //删除 private string DelTSubjectGradeStandard(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; try { string id = context.Request.Params["id"]; if (bll.Delete(id)) { msg = "删除成功!"; code = 1; } else { msg = "删除失败!"; } } catch (Exception e) { msg = e.Message; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "删除异常:" + e.Message, "1"); } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\"}"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Delete, "战训科目标准请求", "删除", "1"); return returnstr; } //查询大类 private string GetSubject(HttpContext context) { string returnstr = ""; try { string org_id = context.Request.Params["org_id"]; returnstr = "{\"code\":1,\"成功\":\"error\",\"count\":0,\"data\":"; string whereStr = " ORG_ID ='" + org_id + "'"; DataTable dt = sub_bll.GetList(whereStr).Tables[0]; returnstr += FangYar.Common.JsonHelper.ToJson(dt); returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":0,\"" + e.Message + "\":\"error\",\"count\":0,\"data\":[]}"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "查询大类异常:" + e.Message, "1"); } BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "战训科目标准请求", "查询大类", "1"); return returnstr; } //根据科目获取标准 private string GetStandardList(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; int count = 0; string data = ""; try { string subjectid = context.Request.Params["subjectid"]; string orgType = context.Request.Params["orgType"]; //string gender = context.Request.Params["gender"]; //string where = " SUBJECTID = '" + subjectid + "' and GENDER='" + gender + "' order by (ACHIEVEMENT1) desc, (AGE1) asc "; string where = " SUBJECTID = '" + subjectid + "'"; if (!string.IsNullOrEmpty(orgType)) { where += " and EXTENDTHREE = '"+ orgType + "' "; } where += " order by (ACHIEVEMENT1+0) desc, (AGE1+0) asc "; returnstr = "{\"code\":0,\"msg\":\"\","; count = bll.GetRecordCount(where); returnstr += "\"count\":" + count + ",\"data\":"; if (count == 0) { code = 0; msg = "无数据"; data = "[]"; } else { code = 1; msg = "获取数据成功"; DataTable dt = bll.GetList(where).Tables[0]; data = FangYar.Common.JsonHelper.ToJson(dt); } } catch (Exception e) { code = -1; msg = e.Message; data = "[]"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "根据科目获取标准异常:" + e.Message, "1"); } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\",\"count\":" + count + ",\"data\":" + data + "}"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "战训科目标准请求", "根据科目获取标准", "1"); return returnstr; } //根据科目获取标准(新版,表名:train_scoring_standard) private string newGetStandardList(HttpContext context) { string returnstr = ""; int code = -1; string msg = ""; int count = 0; string data = ""; try { string subjectid = context.Request.Params["subjectid"]; string orgType = context.Request.Params["orgType"]; //string gender = context.Request.Params["gender"]; //string where = " SUBJECTID = '" + subjectid + "' and GENDER='" + gender + "' order by (ACHIEVEMENT1) desc, (AGE1) asc "; string where = " SUBJECTID = '" + subjectid + "'"; if (!string.IsNullOrEmpty(orgType)) { where += " and org_type = '" + orgType + "' "; } where += " order by (achievement_lower+0) desc, (age_lower+0) asc "; returnstr = "{\"code\":0,\"msg\":\"\","; string countSql = "select count(1) FROM train_scoring_standard where "+ where; object obj = FangYar.Common.MySqlHelper.GetSingle(countSql); if (obj == null) { count = 0; } else { count = Convert.ToInt32(obj); } returnstr += "\"count\":" + count + ",\"data\":"; if (count == 0) { code = 0; msg = "无数据"; data = "[]"; } else { code = 1; msg = "获取数据成功"; string dataSql = "select * FROM train_scoring_standard where " + where; DataTable dt = FangYar.Common.MySqlHelper.QueryTable(dataSql); data = FangYar.Common.JsonHelper.ToJson(dt); } } catch (Exception e) { code = -1; msg = e.Message; data = "[]"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "根据科目获取标准异常:" + e.Message, "1"); } returnstr = "{\"code\":" + code + ",\"msg\":\"" + msg + "\",\"count\":" + count + ",\"data\":" + data + "}"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "战训科目标准请求", "根据科目获取标准", "1"); return returnstr; } //根据科目获取标准(根据科目单位,排序) private string GetStandardList2(HttpContext context) { string returnstr = ""; try { string subjectid = context.Request.Params["subjectid"]; string company = context.Request.Params["company"]; string where = " SUBJECTID = '" + subjectid + "'"; returnstr = "{\"code\":0,\"msg\":\"\","; int count = bll.GetRecordCount(where); returnstr += "\"count\":" + count + ",\"data\":"; if (count == 0) { returnstr += "[]"; } else { if (company == "0") { where += " order by (GENDER) ,(AGE1) desc ,(STASYS1)"; } else if (company == "1") { where += " order by (GENDER) ,(AGE1) desc ,(STASYS1) desc"; } DataTable dt = bll.GetList(where).Tables[0]; returnstr += FangYar.Common.JsonHelper.ToJson(dt); } returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":-1,\"" + e.Message + "\":\"error\",\"count\":0,\"data\":[]}"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "根据科目获取标准异常:" + e.Message, "1"); } BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "战训科目标准请求", "根据科目获取标准", "1"); return returnstr; } //根据科目获取标准(根据科目单位,排序)(新版,表名:train_scoring_standard) private string newGetStandardList2(HttpContext context) { string returnstr = ""; try { string subjectid = context.Request.Params["subjectid"]; string company = context.Request.Params["company"]; string where = " SUBJECTID = '" + subjectid + "'"; int count = 0; returnstr = "{\"code\":0,\"msg\":\"\","; string countSql = "select count(1) FROM train_scoring_standard where " + where; object obj = FangYar.Common.MySqlHelper.GetSingle(countSql); if (obj == null) { count = 0; } else { count = Convert.ToInt32(obj); } returnstr += "\"count\":" + count + ",\"data\":"; if (count == 0) { returnstr += "[]"; } else { if (company == "0") { where += " order by (gender) ,(age_lower) desc ,(calculation_lower)"; } else if (company == "1") { where += " order by (gender) ,(age_lower) desc ,(calculation_lower) desc"; } string dataSql = "select * FROM train_scoring_standard where " + where; DataTable dt = FangYar.Common.MySqlHelper.QueryTable(dataSql); returnstr += FangYar.Common.JsonHelper.ToJson(dt); } returnstr += "}"; } catch (Exception e) { returnstr = "{\"code\":-1,\"" + e.Message + "\":\"error\",\"count\":0,\"data\":[]}"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "根据科目获取标准异常:" + e.Message, "1"); } BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Query, "战训科目标准请求", "根据科目获取标准", "1"); return returnstr; } //上传excel private string impExcel(HttpContext context) { string returnStr = ""; string msg = ""; try { string SUBID = context.Request.Params["SUBID"] + ""; string UNITOFMEASUREMEN = context.Request.Params["UNITOFMEASUREMEN"] + ""; string ORG_ID = context.Request.Params["ORG_ID"] + ""; string ORG_NAME = context.Request.Params["ORG_NAME"] + ""; string SUBJECTNAME = context.Request.Params["SUBJECTNAME"] + ""; string orgType = context.Request.Params["orgType"] + ""; var file = context.Request.Files[0]; //获取选中文件 Stream stream = file.InputStream; //将文件转为流 Workbook workbook = new Workbook(); //将文件流内容读取到workbook对象里面 workbook.LoadFromStream(stream); //得到第一个Sheet页 Worksheet sheet = workbook.Worksheets[0]; DataTable dtImp = SheetToDataTable(true, sheet); List ht = new List(); //事务 先将数据删除 FangYar.Model.OA.CommonSql delModel = bll.getDeleteStaSql(SUBID); ht.Add(delModel); for (int i = 3; i < dtImp.Rows.Count; i++) { for (int j = 1; j < dtImp.Columns.Count; j++) { FangYar.Model.TRAIN.T_SUBJECTGRADESTANDARD standard = new Model.TRAIN.T_SUBJECTGRADESTANDARD(); string[] nianling = dtImp.Rows[1][j].ToString().Split('-'); string[] haiba = dtImp.Rows[2][j].ToString().Split('-'); string achievement = dtImp.Rows[i][0].ToString(); string jieguo = dtImp.Rows[i][j].ToString(); standard.ID = Guid.NewGuid().ToString("N"); standard.NAME = ""; standard.DESCRIPTION = ""; standard.GENDER = ""; standard.SUBJECTID = SUBID; standard.GRADESTANDARD = ""; standard.UNITOFMEASUREMEN = UNITOFMEASUREMEN; standard.REMARK = ""; standard.EXTENDONE = haiba[0].Trim(); standard.EXTENDTWO = haiba[1].Trim(); standard.EXTENDTHREE = orgType; standard.EXTENDFORE = ""; standard.EXTENDFIVE = ""; standard.ORG_ID = ORG_ID; standard.ORG_NAME = ORG_NAME; standard.SUBJECTNAME = SUBJECTNAME; standard.STA1 = jieguo.Trim(); standard.STA2 = ""; if (UNITOFMEASUREMEN == "0") //0时间; 1次数; 2分数; 3是否通过 { standard.STASYS1 = ChangeMilliSeconds(jieguo).ToString().Trim(); //将时间存成毫秒 分秒毫秒 } else { standard.STASYS1 = jieguo.Trim(); } standard.STASYS2 = ""; standard.ACHIEVEMENT1 = achievement.Trim(); standard.ACHIEVEMENT2 = ""; standard.AGE1 = nianling[0].Trim(); standard.AGE2 = nianling[1].Trim(); //事务添加 FangYar.Model.OA.CommonSql staModel = bll.getInsertStaSql(standard); ht.Add(staModel); } } if (FangYar.Common.MySqlHelper.ExecuteSqlTranBool(ht)) { returnStr = "{\"code\": 1,\"msg\": \"操作成功\"}"; } else { returnStr = "{\"code\": 0,\"msg\": \"操作失败\"}"; } } catch (Exception ex) { returnStr = "{\"code\": -1,\"msg\": \"" + ex.Message + "\"}"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "上传excel异常:" + ex.Message, "1"); } BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Add, "战训科目标准请求", "上传excel", "1"); return returnStr; } //上传excel(新版,表名:train_scoring_standard) private string newImpExcel(HttpContext context) { string returnStr = ""; string msg = ""; try { string SUBID = context.Request.Params["SUBID"] + ""; string UNITOFMEASUREMEN = context.Request.Params["UNITOFMEASUREMEN"] + ""; string ORG_ID = context.Request.Params["ORG_ID"] + ""; string ORG_NAME = context.Request.Params["ORG_NAME"] + ""; string SUBJECTNAME = context.Request.Params["SUBJECTNAME"] + ""; string orgType = context.Request.Params["orgType"] + ""; var file = context.Request.Files[0]; //获取选中文件 Stream stream = file.InputStream; //将文件转为流 Workbook workbook = new Workbook(); //将文件流内容读取到workbook对象里面 workbook.LoadFromStream(stream); //得到第一个Sheet页 Worksheet sheet = workbook.Worksheets[0]; DataTable dtImp = SheetToDataTable(true, sheet); List ht = new List(); //事务 先将数据删除 FangYar.Model.OA.CommonSql deleteSql = new FangYar.Model.OA.CommonSql(); deleteSql.sql = "delete from train_scoring_standard where SUBJECTID='" + SUBID + "' and org_type = '" + orgType + "'"; ht.Add(deleteSql); for (int i = 3; i < dtImp.Rows.Count; i++) { string defaultSex1 = "", defaultSex2 = ""; for (int j = 1; j < dtImp.Columns.Count; j++) { string nianling = dtImp.Rows[1][j].ToString(); string haiba = dtImp.Rows[2][j].ToString(); string achievement = dtImp.Rows[i][0].ToString(); string jieguo = dtImp.Rows[i][j].ToString(); string calculationLower = ""; string altitude_lower = "0", altitude_upper = "0", age_lower = "0", age_upper = "0"; try { if (!string.IsNullOrEmpty(nianling)) { var reg = new Regex("[0-9]+", RegexOptions.IgnoreCase | RegexOptions.Singleline, TimeSpan.FromSeconds(2)); var mc = reg.Matches(nianling.Trim()); if (nianling.Trim().Contains("以下")) { age_lower = "0"; age_upper = mc[0].Groups[0].Value; defaultSex1 = age_lower; defaultSex2 = age_upper; } else { age_lower = mc[0].Groups[0].Value; age_upper = mc[1].Groups[0].Value; defaultSex1 = age_lower; defaultSex2 = age_upper; } } else { age_lower = defaultSex1; age_upper = defaultSex2; } } catch (Exception ex) { age_lower = defaultSex1; age_upper = defaultSex2; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "年龄段数组越界异常:" + ex.Message, "1"); } try { if (!string.IsNullOrEmpty(haiba)) { if (haiba.Contains("内地标准")) { continue; } else { var reg = new Regex("[0-9]+", RegexOptions.IgnoreCase | RegexOptions.Singleline, TimeSpan.FromSeconds(2)); var mc = reg.Matches(haiba.Trim()); if (haiba.Trim().Contains("以下")) { altitude_lower = "0"; altitude_upper = mc[0].Groups[0].Value; } else if (haiba.Trim().Contains("以上")) { altitude_lower = mc[0].Groups[0].Value; altitude_upper = "10000"; } else { altitude_lower = mc[0].Groups[0].Value; altitude_upper = mc[1].Groups[0].Value; } } } } catch (Exception ex) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "海拔数组越界异常:" + ex.Message, "1"); } if (UNITOFMEASUREMEN == "0") //0时间; 1次数; 2分数; 3是否通过 { calculationLower = ChangeMilliSeconds(jieguo).ToString().Trim(); //将时间存成毫秒 分秒毫秒 } else { calculationLower = jieguo.Trim(); } int uInt = 2, oInt = 2; try { if (!string.IsNullOrEmpty(UNITOFMEASUREMEN)) { uInt = int.Parse(UNITOFMEASUREMEN); } } catch (Exception ex) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "单位类型转数字异常:" + ex.Message, "1"); } try { if (!string.IsNullOrEmpty(orgType)) { oInt = int.Parse(orgType); } } catch (Exception ex) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "标准机构类型转数字异常:" + ex.Message, "1"); } FangYar.Model.OA.CommonSql insertSql = new FangYar.Model.OA.CommonSql(); insertSql.sql = @"insert into train_scoring_standard( id,subjectid,subjectname,unitofmeasuremen,altitude_lower,altitude_upper,org_type, standard_lower,calculation_lower,achievement_lower,age_lower,age_upper) values ( '" + Guid.NewGuid().ToString("N") + @"','" + SUBID + @"','" + SUBJECTNAME + @"', " + uInt + @",'" + altitude_lower + @"','" + altitude_upper + @"', " + oInt + @",'" + jieguo.Trim() + @"','" + calculationLower + @"', '"+ Regex.Replace(achievement.Trim(),"分","") + @"','" + age_lower + @"','" + age_upper + @"' )"; ht.Add(insertSql); } } if (FangYar.Common.MySqlHelper.ExecuteSqlTranBool(ht)) { returnStr = "{\"code\": 1,\"msg\": \"操作成功\"}"; } else { returnStr = "{\"code\": 0,\"msg\": \"操作失败\"}"; } } catch (Exception ex) { returnStr = "{\"code\": -1,\"msg\": \"" + ex.Message + "\"}"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "上传excel异常:" + ex.Message, "1"); } BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Add, "战训科目标准请求", "上传excel", "1"); return returnStr; } //上传excel,2023年新标准(新版,表名:train_scoring_standard) private string newImpExcel2023(HttpContext context) { string returnStr = ""; string msg = ""; try { string isAltitude = context.Request.Params["isAltitude"] + "";//是否区分海拔 0不区分;1区分 string SUBID = context.Request.Params["SUBID"] + ""; string UNITOFMEASUREMEN = context.Request.Params["UNITOFMEASUREMEN"] + ""; string ORG_ID = context.Request.Params["ORG_ID"] + ""; string ORG_NAME = context.Request.Params["ORG_NAME"] + ""; string SUBJECTNAME = context.Request.Params["SUBJECTNAME"] + ""; string sortOrder = context.Request.Params["sortOrder"] + ""; var file = context.Request.Files[0]; //获取选中文件 Stream stream = file.InputStream; //将文件转为流 Workbook workbook = new Workbook(); //将文件流内容读取到workbook对象里面 workbook.LoadFromStream(stream); //得到第一个Sheet页 Worksheet sheet = workbook.Worksheets[0]; DataTable dtImp = SheetToDataTable(true, sheet); List ht = new List(); //事务 先将数据删除 FangYar.Model.OA.CommonSql deleteSql = new FangYar.Model.OA.CommonSql(); deleteSql.sql = "delete from train_scoring_standard where SUBJECTID='" + SUBID + "' "; ht.Add(deleteSql); for (int i = 1; i < dtImp.Rows.Count; i++) { string defaultSex1 = "", defaultSex2 = ""; for (int j = 1; j < dtImp.Columns.Count; j++) { string nianling = dtImp.Rows[0][j].ToString(); //string haiba = isAltitude == "1" ? dtImp.Rows[2][j].ToString() : "";//判断是否区分海拔 string achievement = dtImp.Rows[i][0].ToString(); if (string.IsNullOrEmpty(achievement.Trim())) { continue; } string jieguo = dtImp.Rows[i][j].ToString(); string calculationLower = ""; //不区分海拔时使用默认值:0-10000 string altitude_lower = "0", altitude_upper = "10000", age_lower = "0", age_upper = "0"; try { if (!string.IsNullOrEmpty(nianling)) { var reg = new Regex("[0-9]+", RegexOptions.IgnoreCase | RegexOptions.Singleline, TimeSpan.FromSeconds(2)); var mc = reg.Matches(nianling.Trim()); if (nianling.Trim().Contains("以下")) { age_lower = "0"; age_upper = mc[0].Groups[0].Value; defaultSex1 = age_lower; defaultSex2 = age_upper; } else if (nianling.Trim().Contains("以上")) { age_lower = mc[0].Groups[0].Value; age_upper = "100"; defaultSex1 = age_lower; defaultSex2 = age_upper; } else { age_lower = mc[0].Groups[0].Value; age_upper = mc[1].Groups[0].Value; defaultSex1 = age_lower; defaultSex2 = age_upper; } } else { age_lower = defaultSex1; age_upper = defaultSex2; } } catch (Exception ex) { age_lower = defaultSex1; age_upper = defaultSex2; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "年龄段数组越界异常:" + ex.Message, "1"); } if (UNITOFMEASUREMEN == "0") //0时间; 1次数; 2分数; 3是否通过; 4厘米 { if (jieguo.Contains("\"")) { jieguo = jieguo.Replace("\"", "秒"); } if (jieguo.Contains("'")) { jieguo = jieguo.Replace("''", "秒"); jieguo = jieguo.Replace("'", "分"); } calculationLower = ChangeMilliSeconds(jieguo).ToString().Trim(); //将时间存成毫秒 分秒毫秒 } else { calculationLower = jieguo.Trim(); } if (isAltitude == "1")//是否区分海拔 0不区分;1区分 { int cshb = 1; for (int hb=0;hb<11;hb++)//海拔初始3700,最高4800,每100米降低标准 { altitude_lower = 3700 + (hb * 100) +""; altitude_upper = 3800 + (hb * 100) + ""; double bili = 0.01 * hb + 1; try { if (int.Parse(age_lower) > 40)//年龄下限 > 40岁 { bili = 0.02 * hb + 1; } } catch (Exception ex) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "年龄下限转数字异常:" + ex.Message, "1"); } if (UNITOFMEASUREMEN == "0") //0时间; 1次数; 2分数; 3是否通过; 4厘米 { try { jieguo = RevertToTime(Math.Round(double.Parse(calculationLower) * bili)); } catch (Exception ex) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "评定标准降低,时间单位异常:" + ex.Message, "1"); } } else if (UNITOFMEASUREMEN != "2") { try { jieguo = Math.Round(int.Parse(calculationLower) / bili) + ""; } catch (Exception ex) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "评定标准降低,其他单位异常:" + ex.Message, "1"); } } int uInt = 2; try { if (!string.IsNullOrEmpty(UNITOFMEASUREMEN)) { uInt = int.Parse(UNITOFMEASUREMEN); } } catch (Exception ex) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "单位类型转数字异常:" + ex.Message, "1"); } FangYar.Model.OA.CommonSql insertSql = new FangYar.Model.OA.CommonSql(); insertSql.sql = @"insert into train_scoring_standard( id,subjectid,subjectname,unitofmeasuremen,altitude_lower,altitude_upper, standard_lower,calculation_lower,achievement_lower,age_lower,age_upper) values ( '" + Guid.NewGuid().ToString("N") + @"','" + SUBID + @"','" + SUBJECTNAME + @"', " + uInt + @",'" + altitude_lower + @"','" + altitude_upper + @"', '" + jieguo.Trim() + @"','" + calculationLower + @"', '" + Regex.Replace(achievement.Trim(), "分", "") + @"','" + age_lower + @"','" + age_upper + @"' )"; ht.Add(insertSql); } for (int hb = 36; hb > 17; hb--)//海拔初始3700,最低1800,每100米增加标准 { altitude_lower = 0 + (hb * 100) + ""; altitude_upper = 100 + (hb * 100) + ""; double bili = 0.01 * cshb + 1; cshb++; try { if (int.Parse(age_lower) > 40 && int.Parse(altitude_lower) >= 2000)//年龄下限 > 40岁 { bili = 0.02 * hb + 1; } } catch (Exception ex) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "年龄下限转数字异常:" + ex.Message, "1"); } if (UNITOFMEASUREMEN == "0") //0时间; 1次数; 2分数; 3是否通过; 4厘米 { try { jieguo = RevertToTime(Math.Round(double.Parse(calculationLower) / bili)); } catch (Exception ex) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "评定标准降低,时间单位异常:" + ex.Message, "1"); } } else if (UNITOFMEASUREMEN != "2") { try { jieguo = Math.Round(int.Parse(calculationLower) * bili) + ""; } catch (Exception ex) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "评定标准降低,其他单位异常:" + ex.Message, "1"); } } int uInt = 2; try { if (!string.IsNullOrEmpty(UNITOFMEASUREMEN)) { uInt = int.Parse(UNITOFMEASUREMEN); } } catch (Exception ex) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "单位类型转数字异常:" + ex.Message, "1"); } FangYar.Model.OA.CommonSql insertSql = new FangYar.Model.OA.CommonSql(); insertSql.sql = @"insert into train_scoring_standard( id,subjectid,subjectname,unitofmeasuremen,altitude_lower,altitude_upper, standard_lower,calculation_lower,achievement_lower,age_lower,age_upper) values ( '" + Guid.NewGuid().ToString("N") + @"','" + SUBID + @"','" + SUBJECTNAME + @"', " + uInt + @",'" + altitude_lower + @"','" + altitude_upper + @"', '" + jieguo.Trim() + @"','" + calculationLower + @"', '" + Regex.Replace(achievement.Trim(), "分", "") + @"','" + age_lower + @"','" + age_upper + @"' )"; ht.Add(insertSql); } } else { int uInt = 2; try { if (!string.IsNullOrEmpty(UNITOFMEASUREMEN)) { uInt = int.Parse(UNITOFMEASUREMEN); } } catch (Exception ex) { BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "单位类型转数字异常:" + ex.Message, "1"); } FangYar.Model.OA.CommonSql insertSql = new FangYar.Model.OA.CommonSql(); insertSql.sql = @"insert into train_scoring_standard( id,subjectid,subjectname,unitofmeasuremen,altitude_lower,altitude_upper, standard_lower,calculation_lower,achievement_lower,age_lower,age_upper) values ( '" + Guid.NewGuid().ToString("N") + @"','" + SUBID + @"','" + SUBJECTNAME + @"', " + uInt + @",'" + altitude_lower + @"','" + altitude_upper + @"', '" + jieguo.Trim() + @"','" + calculationLower + @"', '" + Regex.Replace(achievement.Trim(), "分", "") + @"','" + age_lower + @"','" + age_upper + @"' )"; ht.Add(insertSql); } } } if (FangYar.Common.MySqlHelper.ExecuteSqlTranBool(ht)) { returnStr = "{\"code\": 1,\"msg\": \"操作成功\"}"; } else { returnStr = "{\"code\": 0,\"msg\": \"操作失败\"}"; } } catch (Exception ex) { returnStr = "{\"code\": -1,\"msg\": \"" + ex.Message + "\"}"; BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Error, "战训科目标准请求", "上传excel异常:" + ex.Message, "1"); } BLL.SysOperationLogHelp.AddSysOperationLog(context, Common.EnumOperationLogType.Add, "战训科目标准请求", "上传excel", "1"); return returnStr; } public int ChangeMilliSeconds(string jieguo) { try{ string minuthTIme = string.Empty; string secondTime = string.Empty; string milliSeconds = string.Empty; string resultShow = string.Empty; int a = jieguo.IndexOf("分"); int b = jieguo.IndexOf("秒"); if (a < 0) { jieguo = "00分" + jieguo; } string[] arr1 = jieguo.Split('分'); string[] arr2 = arr1[1].Split('秒'); minuthTIme = string.IsNullOrWhiteSpace(arr1[0]) ? "0" : arr1[0]; secondTime = string.IsNullOrWhiteSpace(arr2[0]) ? "0" : arr2[0]; milliSeconds = string.IsNullOrWhiteSpace(arr2[1]) ? "0" : arr2[1]; int c = Convert.ToInt32(minuthTIme) * 60 * 1000 + Convert.ToInt32(secondTime) * 1000 + (milliSeconds.Length == 0 ? 0 : (milliSeconds.Length == 1 ? Convert.ToInt32(milliSeconds) * 100 : (milliSeconds.Length == 2 ? Convert.ToInt32(milliSeconds) * 10 : Convert.ToInt32(milliSeconds)))); return c; } catch (Exception e) { return 0; } } public static string RevertToTime(double milliSeconds)//毫秒 { double getsecond = milliSeconds * 1.0 / 1000; double getdoubleminuth = Math.Floor(getsecond / 60); string minuthTIme = string.Empty; string secondTime = string.Empty; string resultShow = string.Empty; if (getdoubleminuth >= 1) { minuthTIme = getdoubleminuth >= 10 ? $"{getdoubleminuth}" : $"0{getdoubleminuth}"; double getmtemp = getdoubleminuth * 60; double getmtemp2 = getsecond - getmtemp; double timemiao = Math.Floor(getmtemp2); secondTime = $"{(timemiao >= 10 ? timemiao.ToString() : "0" + timemiao)}"; string[] secondTimeStr = secondTime.Split('.'); if (secondTimeStr.Length > 1) { resultShow = $"{minuthTIme}分{secondTimeStr[0]}秒{secondTimeStr[1]}"; } else { resultShow = $"{minuthTIme}分{secondTime}秒"; } } else { secondTime = getsecond >= 10 ? getsecond.ToString() : ("0" + getsecond); resultShow = $"0分{secondTime}秒"; } return resultShow; #region old //double getsecond = milliSeconds * 1.0 / 1000;//得到秒钟 //double getdoubleminuth = getsecond * 1.0 / 60;//得到分钟 //double scoreDes = Math.Round(getdoubleminuth, 0); //return scoreDes > 0 ? $"{scoreDes}分0秒" : $"0分{Math.Round(getsecond, 0)}秒"; #endregion } /// /// 将Excel以文件流转换DataTable /// /// 是否有表头 /// 文件流 /// 文件簿索引 public DataTable ExcelToDataTableFormStream(bool hasTitle = true, Stream stream = null, int tableindex = 0) { //新建Workbook Workbook workbook = new Workbook(); //将文件流内容读取到workbook对象里面 workbook.LoadFromStream(stream); //得到第一个Sheet页 Worksheet sheet = workbook.Worksheets[tableindex]; return SheetToDataTable(hasTitle, sheet); } private DataTable SheetToDataTable(bool hasTitle, Worksheet sheet) { int iRowCount = sheet.Rows.Length; int iColCount = sheet.Columns.Length; DataTable dt = new DataTable(); //生成列头 for (int i = 0; i < iColCount; i++) { var name = "column" + i; if (hasTitle) { var txt = sheet.Range[1, i + 1].Text; if (!string.IsNullOrEmpty(txt)) name = txt; } while (dt.Columns.Contains(name)) name = name + "_1";//重复行名称会报错。 dt.Columns.Add(new DataColumn(name, typeof(string))); } //生成行数据 int rowIdx = hasTitle ? 2 : 1; for (int iRow = rowIdx; iRow <= iRowCount; iRow++) { DataRow dr = dt.NewRow(); for (int iCol = 1; iCol <= iColCount; iCol++) { dr[iCol - 1] = sheet.Range[iRow, iCol].DisplayedText; } dt.Rows.Add(dr); } return RemoveEmpty(dt); } /// /// 去除空行 /// /// /// private DataTable RemoveEmpty(DataTable dt) { List removelist = new List(); for (int i = 0; i < dt.Rows.Count; i++) { bool rowdataisnull = true; for (int j = 0; j < dt.Columns.Count; j++) { if (!string.IsNullOrEmpty(dt.Rows[i][j].ToString().Trim())) { rowdataisnull = false; } } if (rowdataisnull) { removelist.Add(dt.Rows[i]); } } for (int i = 0; i < removelist.Count; i++) { dt.Rows.Remove(removelist[i]); } return dt; } public bool IsReusable { get { return false; } } } }