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;
}
}
}
}