/// <summary> /// 得到一个对象实体 /// </summary> public Mod_TPA_KP_PLAN GetModel(string C_ID) { StringBuilder strSql=new StringBuilder(); strSql.Append("select C_ID,C_FK,C_STOVE_NO,C_STL_GRD,C_STD_CODE,N_WGT,D_START_TIME,D_END_TIME,N_CN,D_PLAN_DATE,C_REMARK,N_STATUS,C_CCM,D_START_TIME_SJ,D_END_TIME_SJ,C_KP_CODE,N_SORT,C_MATRL_CODE_SLAB,C_MATRL_NAME_SLAB,N_SLAB_LENGTH,N_SLAB_PW,C_MATRL_CODE_KP,C_MATRL_NAME_KP,C_KP_SIZE,N_KP_LENGTH,N_KP_PW,C_DHL,D_CAN_START_TIME,C_DFP_RZ,C_RZP_RZ,C_DFP_YQ,C_RZP_YQ,C_SLAB_SIZE from TPA_KP_PLAN "); strSql.Append(" where C_ID=:C_ID "); OracleParameter[] parameters = { new OracleParameter(":C_ID", OracleDbType.Varchar2,50) }; parameters[0].Value = C_ID; Mod_TPA_KP_PLAN model=new Mod_TPA_KP_PLAN(); DataSet ds=DbHelperOra.Query(strSql.ToString(),parameters); if(ds.Tables[0].Rows.Count>0) { return DataRowToModel(ds.Tables[0].Rows[0]); } else { return null; } }
public string ProcessSort(out List <Mod_TSP_PLAN_SMS> processResult) { int ccm_dfphl = int.Parse(ConfigurationManager.AppSettings.Get("ccm_dfphl")); int dfphl_kp = int.Parse(ConfigurationManager.AppSettings.Get("dfphl_kp")); int kp_hl = int.Parse(ConfigurationManager.AppSettings.Get("kp_hl")); int hl_xm = int.Parse(ConfigurationManager.AppSettings.Get("hl_xm")); int ccm_kp = int.Parse(ConfigurationManager.AppSettings.Get("ccm_kp")); int kp_xm = int.Parse(ConfigurationManager.AppSettings.Get("kp_xm")); string result = "1"; //获取缓冷坑库位 var strLocs = bll_TPA_HL_ACT.DataTableToList(dal.GetDfpHlStrLoc()); var dStrLocs = strLocs.Where(x => x.C_SLAB_TYPE == "大方坯").OrderBy(x => x.C_WH_CODE).ToList(); //大方坯库位 var xStrLocs = strLocs.Where(x => x.C_SLAB_TYPE == "小方坯").OrderBy(x => x.C_WH_CODE).ToList(); //小方坯库位 //查询所有连铸计划 var smsAllModels = bll_TSP_PLAN_SMS.DataTableToList(dal_TSP_PLAN_SMS.GetList(" C_SLAB_TYPE='大方坯' AND N_CREAT_PLAN!=3 ").Tables[0]); //按照连铸计划时间、热轧排序 大方坯 var smsModels = smsAllModels.Where(x => x.C_SLAB_TYPE == "大方坯") .OrderBy(x => x.D_P_START_TIME) .ThenByDescending(x => x.C_DFP_RZ) .ToList(); //删除个子表计划 dal.DelDfpHl_FK(smsModels); dal.DelKp_FK(smsModels); dal.DelHl_FK(smsModels); dal.DelXm_FK(smsModels); //连铸计划推出开坯计划 List <Mod_TSP_PLAN_SMS> kpResult = new List <Mod_TSP_PLAN_SMS>(); //缓冷计划 List <Mod_TPA_DHL_PLAN> dhlPlans = new List <Mod_TPA_DHL_PLAN>(); //开坯计划 List <Mod_TPA_KP_PLAN> kpPlans = new List <Mod_TPA_KP_PLAN>(); //缓冷计划(小方坯) List <Mod_TPA_HL_PLAN> hlPlans = new List <Mod_TPA_HL_PLAN>(); //开坯计划推出修磨计划 List <Mod_TSP_PLAN_SMS> xmResult = new List <Mod_TSP_PLAN_SMS>(); //修磨计划 List <Mod_TPA_XM_PLAN> xmPlans = new List <Mod_TPA_XM_PLAN>(); try { int smsCount = smsModels.Count; for (int i = 0; i < smsCount; i++) { smsModels[i].C_QUA = "19"; if (smsModels[i].C_DFP_HL == "Y") //缓冷(大方坯) { #region 计算缓冷时间 //获取未用缓冷坑(所有缓冷坑-已使用过的缓冷坑) DataTable usedD = dal.GetUsedLoc(); if (usedD.Rows.Count > 0) { int lCount = usedD.Rows.Count; for (int l = 0; l < lCount; l++) { var loc = dStrLocs.FirstOrDefault(x => x.C_WH_CODE == usedD.Rows[l]["C_WH_CODE"].ToString()); dStrLocs.Remove(loc); } } smsModels[i].D_DFPHL_START_TIME = smsModels[i].D_P_START_TIME.Value.AddHours(ccm_dfphl); //连铸到缓冷1小时 smsModels[i].D_DFPHL_END_TIME = smsModels[i].D_DFPHL_START_TIME.Value.AddHours((int)smsModels[i].N_DFP_HL_TIME); //需要缓冷时间 //入坑记录 Mod_TPA_DHL_PLAN dhlM = new Mod_TPA_DHL_PLAN(); dhlM.C_ID = Guid.NewGuid().ToString("N"); dhlM.C_FK = smsModels[i].C_ID; dhlM.C_STOVE_NO = smsModels[i].C_STOVE_NO; dhlM.C_STL_GRD = smsModels[i].C_STL_GRD; dhlM.C_STD_CODE = smsModels[i].C_STD_CODE; dhlM.D_START_TIME = smsModels[i].D_DFPHL_START_TIME; dhlM.D_END_TIME = smsModels[i].D_DFPHL_END_TIME; dhlM.N_HL_TIME = smsModels[i].N_HL_TIME; dhlM.N_STATUS = 1; dhlM.N_QUA = decimal.Parse(smsModels[i].C_QUA); dhlM.D_OVER_TIME = smsModels[i].D_DFPHL_END_TIME; var locD = dal.GetUseLoc(usedD, (int)dhlM.N_QUA, dhlM.D_END_TIME); //可用坑位 var locMaster = dal.GetOutLoc(usedD, smsModels[i].D_P_START_TIME); //快要出坑明细 if (locD != null && locD.Rows.Count > 0) //缓冷坑余量足够 并且 当前坑中原钢坯与新入钢坯时间间隔不能超过5小时 { dhlM.C_WH_CODE = locD.Rows[0]["C_WH_CODE"].ToString(); dhlM.N_TOTAL_QUA = dhlM.N_QUA + int.Parse(locD.Rows[0]["N_TOTAL_QUA"].ToString()); dhlM.N_NUM = int.Parse(locD.Rows[0]["N_NUM"].ToString()); dhlM.N_CAP = int.Parse(locD.Rows[0]["N_CAP"].ToString()); smsModels[i].WhCode = dhlM.C_WH_CODE; smsModels[i].Num = dhlM.N_NUM; } else if (dStrLocs != null && dStrLocs.Count > 0)//使用没有使用过的坑位 { dhlM.C_WH_CODE = dStrLocs[0].C_WH_CODE; dhlM.N_TOTAL_QUA = dhlM.N_QUA; dhlM.N_NUM = 1; dhlM.N_CAP = dStrLocs[0].N_CAP_QUA; smsModels[i].WhCode = dhlM.C_WH_CODE; smsModels[i].Num = dhlM.N_NUM; } else if (locMaster != null && locMaster.Rows.Count > 0)//计划n+1次入坑 { dhlM.C_WH_CODE = locMaster.Rows[0]["C_WH_CODE"].ToString(); dhlM.N_TOTAL_QUA = dhlM.N_QUA; dhlM.N_NUM = int.Parse(locMaster.Rows[0]["N_NUM"].ToString()) + 1; dhlM.N_CAP = int.Parse(locMaster.Rows[0]["N_CAP"].ToString()); smsModels[i].WhCode = dhlM.C_WH_CODE; smsModels[i].Num = dhlM.N_NUM; } else//坑满 虚拟坑位 { dhlM.C_WH_CODE = "0"; smsModels[i].N_STATUS = 0; dhlM.N_TOTAL_QUA = dhlM.N_QUA + dal.GetVirtualLocMaxQua(); dhlM.N_NUM = 0; smsModels[i].WhCode = dhlM.C_WH_CODE; smsModels[i].Num = dhlM.N_NUM; } dal_TPA_DHL_PLAN.Add(dhlM); dhlPlans.Add(dhlM); #endregion #region 计算开坯时间(需要缓冷钢坯) smsModels[i].D_KP_START_TIME = smsModels[i].D_DFPHL_END_TIME.Value.AddHours(dfphl_kp); //缓冷坑到开坯增加一小时 smsModels[i].D_KP_END_TIME = smsModels[i].D_KP_START_TIME.Value.AddHours((double)smsModels[i].N_PROD_TIME); //开坯时间 smsModels[i].CalCulateTimeStart = smsModels[i].D_KP_START_TIME; smsModels[i].C_QUA = (int.Parse(smsModels[i].C_QUA) * 2).ToString(); kpResult.Add(smsModels[i]); #endregion } else//不需要缓冷(大方坯) { #region 计算开坯时间 smsModels[i].D_KP_START_TIME = smsModels[i].D_P_START_TIME.Value.AddHours(ccm_kp); //连铸到开坯2小时 smsModels[i].D_KP_END_TIME = smsModels[i].D_KP_START_TIME.Value.AddHours((double)smsModels[i].N_PROD_TIME); //开坯时间 smsModels[i].CalCulateTimeStart = smsModels[i].D_KP_START_TIME; smsModels[i].C_QUA = (int.Parse(smsModels[i].C_QUA) * 2).ToString(); kpResult.Add(smsModels[i]); #endregion } } #region 计算开坯顺序 kpResult = kpResult.OrderBy(x => x.D_KP_START_TIME) .ThenByDescending(x => x.C_DFP_RZ) .ToList(); for (int j = 2; j < kpResult.Count; j++) { //如果开坯时间互斥,重新计算开坯时间 if ((kpResult[j].D_KP_START_TIME < kpResult[j - 1].D_KP_END_TIME)) { kpResult[j].D_KP_START_TIME = kpResult[j - 1].D_KP_END_TIME; kpResult[j].D_KP_END_TIME = kpResult[j].D_KP_START_TIME.Value.AddHours((double)kpResult[j].N_PROD_TIME); } } kpResult = kpResult.OrderBy(x => x.D_KP_START_TIME) .ThenByDescending(x => x.C_DFP_RZ) .ToList(); foreach (var kp in kpResult) { //开坯记录 Mod_TPA_KP_PLAN kpM = new Mod_TPA_KP_PLAN(); kpM.C_ID = Guid.NewGuid().ToString("N"); kpM.C_FK = kp.C_ID; kpM.C_STOVE_NO = kp.C_STOVE_NO; kpM.C_STL_GRD = kp.C_STL_GRD; kpM.C_STD_CODE = kp.C_STD_CODE; kpM.N_WGT = kp.N_SLAB_WGT; kpM.D_START_TIME = kp.D_KP_START_TIME; kpM.D_END_TIME = kp.D_KP_END_TIME; kpM.N_CN = kp.N_JSCN.Value; kpM.N_STATUS = 1; kpM.C_CCM = kp.C_CCM_DESC; kpM.D_CAN_START_TIME = kp.D_KP_START_TIME; kpPlans.Add(kpM); } #endregion #region 计算缓冷坑最大出坑时间(大方坯) var useD = dal.GetUsedLoc(); if (useD != null && useD.Rows.Count > 0) { var uCount = useD.Rows.Count; for (int i = 0; i < uCount; i++) { for (int j = 0; j < int.Parse(useD.Rows[i]["N_NUM"].ToString()); j++) { var outPitDt = dal.GetOutPitTime(useD.Rows[j]["C_WH_CODE"].ToString(), j + 1); if (outPitDt != null && outPitDt.Rows.Count > 0) { int nCount = outPitDt.Rows.Count; for (int n = 0; n < nCount; n++) { string c_fk = outPitDt.Rows[n]["C_FK"].ToString(); DateTime overtime = DateTime.Parse(outPitDt.Rows[n]["D_OVER_TIME"].ToString()); var resetOutTimes = smsModels.Where(x => x.C_ID == c_fk).ToList(); if (resetOutTimes.Count > 0) { resetOutTimes[0].D_DFPHL_END_TIME = overtime; } } } } } } #endregion kpResult.OrderBy(x => x.D_KP_END_TIME).ThenByDescending(x => x.C_RZP_RZ).ToList(); //计算小方坯缓冷 for (int i = 0; i < kpResult.Count; i++) { //缓冷(小方坯) if (kpResult[i].C_HL == "Y") { #region 小方坯缓冷 //获取未用缓冷坑(所有缓冷坑-已使用过的缓冷坑) DataTable usedX = dal.GetUsedXLoc(); if (usedX.Rows.Count > 0) { for (int l = 0; l < usedX.Rows.Count; l++) { var loc = xStrLocs.FirstOrDefault(x => x.C_WH_CODE == usedX.Rows[l]["C_WH_CODE"].ToString()); xStrLocs.Remove(loc); } } kpResult[i].D_HL_START_TIME = kpResult[i].D_KP_END_TIME.Value.AddHours(kp_hl); //开坯到缓冷1小时 kpResult[i].D_HL_END_TIME = kpResult[i].D_HL_START_TIME.Value.AddHours((int)kpResult[i].N_HL_TIME); //需要缓冷时间 //入坑记录 Mod_TPA_HL_PLAN xhlM = new Mod_TPA_HL_PLAN(); xhlM.C_ID = Guid.NewGuid().ToString("N"); xhlM.C_FK = kpResult[i].C_ID; xhlM.C_STOVE_NO = kpResult[i].C_STOVE_NO; xhlM.C_STL_GRD = kpResult[i].C_STL_GRD; xhlM.C_STD_CODE = kpResult[i].C_STD_CODE; xhlM.D_START_TIME = kpResult[i].D_HL_START_TIME; xhlM.D_END_TIME = kpResult[i].D_HL_END_TIME; xhlM.N_HL_TIME = kpResult[i].N_HL_TIME; xhlM.N_STATUS = 1; xhlM.N_QUA = decimal.Parse(kpResult[i].C_QUA); xhlM.D_OVER_TIME = kpResult[i].D_HL_END_TIME; var locD = dal.GetUseXLoc(usedX, (int)xhlM.N_QUA, xhlM.D_END_TIME); //可用坑位 var locMaster = dal.GetOutXLoc(usedX, kpResult[i].D_KP_END_TIME); //快要出坑明细 if (locD != null && locD.Rows.Count > 0) //缓冷坑余量足够 并且 当前坑中原钢坯与新入钢坯时间间隔不能超过5小时 { xhlM.C_WH_CODE = locD.Rows[0]["C_WH_CODE"].ToString(); xhlM.N_TOTAL_QUA = xhlM.N_QUA + int.Parse(locD.Rows[0]["N_TOTAL_QUA"].ToString()); xhlM.N_NUM = int.Parse(locD.Rows[0]["N_NUM"].ToString()); xhlM.N_CAP = int.Parse(locD.Rows[0]["N_CAP"].ToString()); kpResult[i].WhCode = xhlM.C_WH_CODE; kpResult[i].Num = xhlM.N_NUM; } else if (xStrLocs != null && xStrLocs.Count > 0)//使用没有使用过的坑位 { xhlM.C_WH_CODE = xStrLocs[0].C_WH_CODE; xhlM.N_TOTAL_QUA = xhlM.N_QUA; xhlM.N_NUM = 1; xhlM.N_CAP = xStrLocs[0].N_CAP_QUA; kpResult[i].WhCode = xhlM.C_WH_CODE; kpResult[i].Num = xhlM.N_NUM; } else if (locMaster != null && locMaster.Rows.Count > 0)//计划n+1次入坑 { xhlM.C_WH_CODE = locMaster.Rows[0]["C_WH_CODE"].ToString(); xhlM.N_TOTAL_QUA = xhlM.N_QUA; xhlM.N_NUM = int.Parse(locMaster.Rows[0]["N_NUM"].ToString()) + 1; xhlM.N_CAP = int.Parse(locMaster.Rows[0]["N_CAP"].ToString()); kpResult[i].WhCode = xhlM.C_WH_CODE; kpResult[i].Num = xhlM.N_NUM; } else//坑满 虚拟坑位 { xhlM.C_WH_CODE = "0"; kpResult[i].N_STATUS = 0; xhlM.N_TOTAL_QUA = xhlM.N_QUA + dal.GetVirtualXLocMaxQua(); xhlM.N_NUM = 0; kpResult[i].WhCode = xhlM.C_WH_CODE; kpResult[i].Num = xhlM.N_NUM; } dal_TPA_HL_PLAN.Add(xhlM); hlPlans.Add(xhlM); #endregion #region 计算修磨时间(需要缓冷) if (kpResult[i].C_XM == "Y") { kpResult[i].D_XM_START_TIME = kpResult[i].D_HL_END_TIME.Value.AddHours(kp_hl); decimal?d = kpResult[i].N_SLAB_WGT / (400 / 24); kpResult[i].D_XM_END_TIME = kpResult[i].D_XM_START_TIME.Value.AddHours((double)d); kpResult[i].CalCulateTimeStart = kpResult[i].D_XM_END_TIME; xmResult.Add(kpResult[i]); } #endregion } else if (kpResult[i].C_XM == "Y") { #region 计算修磨时间 kpResult[i].D_XM_START_TIME = kpResult[i].D_KP_END_TIME.Value.AddHours(kp_xm); decimal?d = kpResult[i].N_SLAB_WGT / (400 / 24); kpResult[i].D_XM_END_TIME = kpResult[i].D_XM_START_TIME.Value.AddHours((double)d); kpResult[i].CalCulateTimeStart = kpResult[i].D_XM_END_TIME; xmResult.Add(kpResult[i]); #endregion } } #region 计算修磨顺序 xmResult = xmResult.OrderBy(x => x.D_XM_START_TIME) .ToList(); for (int j = 1; j < xmResult.Count; j++) { //如果修磨时间互斥,重新计算修磨时间 if (xmResult[j].D_XM_START_TIME < xmResult[j - 1].D_XM_END_TIME) { xmResult[j].D_XM_START_TIME = xmResult[j - 1].D_XM_END_TIME; decimal?d = xmResult[j].N_SLAB_WGT / (400 / 24); xmResult[j].D_XM_END_TIME = xmResult[j].D_XM_START_TIME.Value.AddHours((double)d); } } xmResult = xmResult.OrderBy(x => x.D_XM_START_TIME) .ToList(); foreach (var xm in xmResult) { Mod_TPA_XM_PLAN xmM = new Mod_TPA_XM_PLAN(); xmM.C_ID = Guid.NewGuid().ToString("N"); xmM.C_STOVE_NO = xm.C_STOVE_NO; xmM.C_STL_GRD = xm.C_STL_GRD; xmM.C_STD_CODE = xm.C_STD_CODE; xmM.N_WGT = xm.N_SLAB_WGT; xmM.N_CN = xm.N_SLAB_WGT / (400 / 24); xmM.D_PLAN_DATE = xm.D_XM_START_TIME; xmM.D_START_TIME = xm.D_XM_START_TIME; xmM.D_END_TIME = xm.D_XM_END_TIME; xmM.N_STATUS = 0; xmM.C_CCM = xm.C_CCM_DESC; xmM.C_FK = xm.C_ID; xmM.C_XM_TYPE = "碳钢"; xmPlans.Add(xmM); } #endregion #region 计算缓冷坑最大出坑时间(小方坯) var useDX = dal.GetUsedXLoc(); if (useDX != null && useDX.Rows.Count > 0) { var uCount = useDX.Rows.Count; for (int i = 0; i < uCount; i++) { for (int j = 0; j < int.Parse(useDX.Rows[i]["N_NUM"].ToString()); j++) { var outPitDt = dal.GetOutPitXTime(useDX.Rows[j]["C_WH_CODE"].ToString(), j + 1); if (outPitDt != null && outPitDt.Rows.Count > 0) { int nCount = outPitDt.Rows.Count; for (int n = 0; n < nCount; n++) { string c_fk = outPitDt.Rows[n]["C_FK"].ToString(); DateTime overtime = DateTime.Parse(outPitDt.Rows[n]["D_OVER_TIME"].ToString()); var resetOutTimes = smsModels.Where(x => x.C_ID == c_fk).ToList(); if (resetOutTimes.Count > 0) { resetOutTimes[0].D_HL_END_TIME = overtime; } } } } } } #endregion TransactionHelper.BeginTransaction(); foreach (var kpPlan in kpPlans) { if (!dal_TPA_KP_PLAN.TranAdd(kpPlan)) { TransactionHelper.RollBack(); dal.DelDfpHl(dhlPlans); dal.DelHl(hlPlans); processResult = smsModels; return("0"); } } foreach (var xmPlan in xmPlans) { if (!dal_TPA_XM_PLAN.TranAdd(xmPlan)) { TransactionHelper.RollBack(); dal.DelDfpHl(dhlPlans); dal.DelHl(hlPlans); processResult = smsModels; return("0"); } } if (!dal.DelSms(smsModels)) { TransactionHelper.RollBack(); dal.DelDfpHl(dhlPlans); dal.DelHl(hlPlans); processResult = smsModels; return("0"); } foreach (var sms in smsModels) { sms.N_CREAT_PLAN = 2; if (!dal_TSP_PLAN_SMS.TranAdd(sms)) { TransactionHelper.RollBack(); dal.DelDfpHl(dhlPlans); dal.DelHl(hlPlans); processResult = smsModels; return("0"); } } TransactionHelper.Commit(); processResult = kpResult; } catch (Exception e) { TransactionHelper.RollBack(); dal.DelDfpHl(dhlPlans); dal.DelHl(hlPlans); processResult = kpResult; return("0"); } return(result); }
private static List <Mod_TPA_HL_ACT> hl_acl = new List <Mod_TPA_HL_ACT>(); //已排产未完成的计划 #region 更新各个工序计划LIST public static List <Mod_TSP_CAST_PLAN> Sort_GX_Plan(List <Mod_TSP_CAST_PLAN> lst) { #region 重新初始化各工序计划 dhl_plan = bll_dhl.GetModelList(" AND C_STOVE_NO IS NULL "); //已排产大方坯缓冷未完成计划 kp_plan = bll_kp.GetModelList(" AND C_STOVE_NO IS NULL "); //已排产大方坯开坯未完成 hl_plan = bll_hl.GetModelList(" AND C_STOVE_NO IS NULL "); //已排产热轧坯缓冷未完成计划 xm_plan = bll_xm.GetModelList(" AND C_STOVE_NO IS NULL "); //已排产修磨未完成计划 lc_plan = bll_plan_sms.GetModelList(" N_CREAT_PLAN<3 "); //已排产未完成的计划 hl_acl = bll_hl_act.GetModelList(""); //已排产未完成的计划 #endregion #region 在list中将待排产的浇次排产 for (int j = 0; j < lst.Count; j++) { List <Mod_TSP_PLAN_SMS> lst_lc = bll_plan_sms.GetModelListByJcID(lst[j].C_ID); if (lst_lc.Count > 0) { #region 将炉次计划的工序计划插入到工序计划list表中 DateTime D_P_START_TIME = (DateTime)lst[j].D_P_START_TIME; for (int lc = 0; lc < lst_lc.Count; lc++) { #region 更新炉次计划时间 lst_lc[lc].N_SORT = lc + 1; lst_lc[lc].N_JC_SORT = lst[j].N_SORT; lst_lc[lc].N_USE_WGT = lst_lc[lc].N_SLAB_WGT; lst_lc[lc].D_P_START_TIME = D_P_START_TIME; lst_lc[lc].D_P_END_TIME = D_P_START_TIME.AddHours(Convert.ToDouble(lst_lc[lc].N_SLAB_WGT / lst_lc[lc].N_JSCN)); D_P_START_TIME = (DateTime)lst_lc[lc].D_P_END_TIME;//下一炉的开始时间 #endregion #region 插入大方坯缓冷计划 if (lst_lc[lc].C_DFP_HL == "Y") { DateTime? D_OVER_TIME = null;//进入坑的坑的结束时间 Mod_TPA_DHL_PLAN mod_dhl = new Mod_TPA_DHL_PLAN(); mod_dhl.C_ID = System.Guid.NewGuid().ToString(); mod_dhl.C_FK = lst_lc[lc].C_ID; mod_dhl.C_STL_GRD = lst_lc[lc].C_STL_GRD; mod_dhl.C_STD_CODE = lst_lc[lc].C_STD_CODE; mod_dhl.C_CCM = lst_lc[lc].C_CCM_DESC; mod_dhl.C_HLYQ = lst_lc[lc].C_DFP_YQ; mod_dhl.N_HL_TIME = lst_lc[lc].N_DFP_HL_TIME; mod_dhl.N_QUA = 19; mod_dhl.C_HLYQ = lst_lc[lc].C_DFP_YQ; mod_dhl.D_START_TIME = Convert.ToDateTime(lst_lc[lc].D_P_START_TIME).AddHours(2); mod_dhl.D_END_TIME = Convert.ToDateTime(lst_lc[lc].D_P_START_TIME).AddHours(2).AddHours(Convert.ToDouble(mod_dhl.N_HL_TIME)); //计划缓冷结束时间 var lstdhl = dhl_plan.Where(a => a.D_OVER_TIME > mod_dhl.D_START_TIME && a.C_WH_CODE != "0" && a.D_START_TIME < mod_dhl.D_START_TIME).GroupBy(a => new { a.C_WH_CODE, a.N_NUM }).Select(a => new { wh = a.First().C_WH_CODE, total_qua = a.Sum(p => p.N_QUA), cap = a.Max(p => p.N_CAP), left = a.Max(p => p.N_CAP) - a.Sum(p => p.N_QUA), num = a.Max(p => p.N_NUM), over_time = a.Max(p => p.D_END_TIME) }).ToList().Where(a => a.left >= mod_dhl.N_QUA).OrderByDescending(a => a.over_time).ToList(); //查找缓冷未结束的有空闲的坑按缓冷结束时间倒序; if (lstdhl.Count > 0) { mod_dhl.C_WH_CODE = lstdhl[0].wh; mod_dhl.N_TOTAL_QUA = 19 + lstdhl[0].total_qua; mod_dhl.N_NUM = lstdhl[0].num; mod_dhl.N_CAP = lstdhl[0].cap; D_OVER_TIME = lstdhl[0].over_time; if (mod_dhl.D_END_TIME > lstdhl[0].over_time) { D_OVER_TIME = mod_dhl.D_END_TIME; } mod_dhl.D_OVER_TIME = D_OVER_TIME; dhl_plan.Add(mod_dhl); //跟新当前坑的结束时间 var lstUpdateOverTime = dhl_plan.Where(a => a.C_WH_CODE == mod_dhl.C_WH_CODE && a.N_NUM == mod_dhl.N_NUM).ToList(); } else { var lstdhl2 = dhl_plan.Where(a => a.C_WH_CODE != "0").GroupBy(a => new { a.C_WH_CODE }).Select(a => new { wh = a.First().C_WH_CODE, total_qua = a.Sum(p => p.N_QUA), cap = a.Max(p => p.N_CAP), left = a.Max(p => p.N_CAP) - a.Sum(p => p.N_QUA), num = a.Max(p => p.N_NUM), over_time = a.Max(p => p.D_END_TIME) }).ToList().Where(a => a.over_time < mod_dhl.D_START_TIME).OrderBy(a => a.over_time).ToList();//查找已缓冷结束的坑 if (lstdhl2.Count > 0) { mod_dhl.C_WH_CODE = lstdhl2[0].wh; mod_dhl.N_TOTAL_QUA = 19; mod_dhl.N_NUM = lstdhl2[0].num + 1; D_OVER_TIME = mod_dhl.D_END_TIME; mod_dhl.N_CAP = lstdhl2[0].cap; mod_dhl.D_OVER_TIME = D_OVER_TIME; dhl_plan.Add(mod_dhl); //更新当前坑的结束时间 } else { var list1 = dhl_plan.GroupBy(a => a.C_WH_CODE).Select(a => new { a.First().C_WH_CODE }).ToList(); var list2 = hl_acl.Where(a => a.C_SLAB_TYPE == "大方坯" && a.N_QUA == 0).GroupBy(a => a.C_WH_CODE).Select(a => new { a.First().C_WH_CODE }).ToList(); var expectedList = list2.Except(list1).ToList().OrderBy(a => a.C_WH_CODE).ToList(); //从没有使用过的缓冷坑找一个坑使用 var lstdhl_act = hl_acl.Where(a => a.C_WH_CODE == expectedList[0].C_WH_CODE).ToList(); if (lstdhl_act.Count > 0) { foreach (var item in hl_acl) { if (item.C_ID == lstdhl_act[0].C_ID) { item.N_QUA = Convert.ToDecimal(mod_dhl.N_QUA); } } mod_dhl.C_WH_CODE = expectedList[0].C_WH_CODE; mod_dhl.N_TOTAL_QUA = 19; mod_dhl.N_CAP = lstdhl_act[0].N_CAP_QUA; mod_dhl.N_NUM = dhl_plan.Where(a => a.C_WH_CODE == mod_dhl.C_WH_CODE).Max(a => a.N_NUM) == null ? 0 : dhl_plan.Where(a => a.C_WH_CODE == mod_dhl.C_WH_CODE).Max(a => a.N_NUM) + 1; mod_dhl.D_OVER_TIME = mod_dhl.D_END_TIME; dhl_plan.Add(mod_dhl); } else { hl_acl[0].N_QUA = Convert.ToDecimal(mod_dhl.N_QUA); mod_dhl.C_WH_CODE = "0"; mod_dhl.N_TOTAL_QUA = 19; mod_dhl.N_CAP = 10000; mod_dhl.N_NUM = 1; mod_dhl.D_OVER_TIME = mod_dhl.D_END_TIME; dhl_plan.Add(mod_dhl); } } } lst_lc[lc].D_DFPHL_START_TIME = mod_dhl.D_START_TIME; lst_lc[lc].D_DFPHL_END_TIME = mod_dhl.D_OVER_TIME; } #endregion #region 插入开坯计划 Mod_TPA_KP_PLAN mod_kp = new Mod_TPA_KP_PLAN(); mod_kp.C_ID = System.Guid.NewGuid().ToString(); mod_kp.C_FK = lst_lc[lc].C_ID; mod_kp.C_STL_GRD = lst_lc[lc].C_STL_GRD; mod_kp.C_STD_CODE = lst_lc[lc].C_STD_CODE; mod_kp.C_CCM = lst_lc[lc].C_CCM_DESC; mod_kp.D_CAN_START_TIME = lst_lc[lc].C_DFP_HL == "Y" ? Convert.ToDateTime(lst_lc[lc].D_DFPHL_END_TIME).AddHours(1) : Convert.ToDateTime(lst_lc[lc].D_P_START_TIME).AddHours(2); //可开坯时间 mod_kp.N_WGT = lst_lc[lc].N_SLAB_WGT; mod_kp.N_CN = 114; //机时产能 mod_kp.C_DHL = lst_lc[lc].C_HL; //热轧钢坯是否缓冷 mod_kp.C_DFP_RZ = lst_lc[lc].C_DFP_RZ; //大方坯是否热装 mod_kp.C_DFP_YQ = lst_lc[lc].C_DFP_YQ; //大方坯缓冷要求 mod_kp.C_MATRL_CODE_SLAB = lst_lc[lc].C_MATRL_NO; mod_kp.C_MATRL_NAME_SLAB = lst_lc[lc].C_MATRL_NAME; mod_kp.C_MATRL_CODE_KP = lst_lc[lc].C_MATRL_CODE_KP; mod_kp.C_MATRL_NAME_KP = lst_lc[lc].C_MATRL_NAME_KP; mod_kp.C_KP_SIZE = lst_lc[lc].C_KP_SIZE; mod_kp.N_KP_LENGTH = lst_lc[lc].N_KP_LENGTH; mod_kp.N_KP_PW = lst_lc[lc].N_KP_PW; mod_kp.N_SLAB_LENGTH = Convert.ToDecimal(lst_lc[lc].C_SLAB_LENGTH); mod_kp.C_SLAB_SIZE = lst_lc[lc].C_SLAB_SIZE; mod_kp.N_SLAB_PW = lst_lc[lc].N_SLAB_PW; if (mod_kp.C_DFP_RZ == "Y" || mod_kp.C_DFP_YQ.Trim() != "") { //必需热轧 DateTime?dtjhkssj = null; var lstlastkp = kp_plan.Where(a => a.D_START_TIME <= Convert.ToDateTime(lst_lc[lc].D_P_START_TIME).AddHours(2)).ToList(); if (lstlastkp.Count > 0) { dtjhkssj = (DateTime)kp_plan.Where(a => a.D_START_TIME <= Convert.ToDateTime(lst_lc[lc].D_P_START_TIME).AddHours(2)).Max(a => a.D_END_TIME); if (dtjhkssj < Convert.ToDateTime(lst_lc[lc].D_P_START_TIME).AddHours(2)) { dtjhkssj = Convert.ToDateTime(lst_lc[lc].D_P_START_TIME).AddHours(2); } mod_kp.N_SORT = kp_plan.Where(a => a.D_START_TIME <= Convert.ToDateTime(lst_lc[lc].D_P_START_TIME).AddHours(2)).Max(a => a.N_SORT) + 1;//开坯计划排序号 } else { mod_kp.N_SORT = 1; } mod_kp.D_START_TIME = dtjhkssj; //开坯计划开始时间 mod_kp.D_END_TIME = ((DateTime)dtjhkssj).AddHours((double)(mod_kp.N_WGT / mod_kp.N_CN)); //开坯计划结束时间 //将当前计划之后的计划时间全都重新计算 var updatelist = kp_plan.Where(a => a.N_SORT > mod_kp.N_SORT - 1).OrderBy(a => a.N_SORT).ToList(); if (updatelist.Count > 0) { DateTime dtB2 = (DateTime)mod_kp.D_END_TIME; for (int m = 0; m < updatelist.Count; m++) { updatelist[m].N_SORT = updatelist[m].N_SORT + 1; updatelist[m].D_START_TIME = dtB2; updatelist[m].D_END_TIME = dtB2.AddHours((double)(updatelist[m].N_WGT / updatelist[m].N_CN)); dtB2 = (DateTime)updatelist[m].D_END_TIME; } } } else { int kpsort = 0; DateTime dtjhkssj = (DateTime)mod_kp.D_CAN_START_TIME; if (kp_plan.Count == 0) { dtjhkssj = (DateTime)mod_kp.D_CAN_START_TIME; } else { dtjhkssj = (DateTime)kp_plan.Max(a => a.D_END_TIME); kpsort = (int)kp_plan.Max(a => a.N_SORT); } if (dtjhkssj < mod_kp.D_CAN_START_TIME) { dtjhkssj = (DateTime)mod_kp.D_CAN_START_TIME; } mod_kp.N_SORT = kpsort + 1; //开坯计划排序号 mod_kp.D_START_TIME = dtjhkssj; //开坯计划开始时间 mod_kp.D_END_TIME = dtjhkssj.AddHours((double)(mod_kp.N_WGT / mod_kp.N_CN)); //开坯计划结束时间 } kp_plan.Add(mod_kp); lst_lc[lc].D_KP_START_TIME = mod_kp.D_START_TIME; lst_lc[lc].D_KP_END_TIME = mod_kp.D_END_TIME; if (lst_lc[lc].C_HL == "N" && lst_lc[lc].C_XM == "N") { lst_lc[lc].D_CAN_USE_TIME = ((DateTime)mod_kp.D_START_TIME).AddHours(2); } #endregion #region 插入热轧坯缓冷计划 if (lst_lc[lc].C_HL == "Y") { DateTime? D_OVER_TIME = null;//进入坑的坑的结束时间 Mod_TPA_HL_PLAN mod_hl = new Mod_TPA_HL_PLAN(); mod_hl.C_ID = System.Guid.NewGuid().ToString(); mod_hl.C_FK = lst_lc[lc].C_ID; mod_hl.C_STL_GRD = lst_lc[lc].C_STL_GRD; mod_hl.C_STD_CODE = lst_lc[lc].C_STD_CODE; mod_hl.C_CCM = lst_lc[lc].C_CCM_DESC; mod_hl.C_HLYQ = lst_lc[lc].C_RZP_YQ; mod_hl.N_HL_TIME = lst_lc[lc].N_HL_TIME; mod_hl.N_QUA = 38; mod_hl.C_HLYQ = lst_lc[lc].C_DFP_YQ; mod_hl.D_START_TIME = Convert.ToDateTime(lst_lc[lc].D_KP_START_TIME).AddHours(2); mod_hl.D_END_TIME = Convert.ToDateTime(lst_lc[lc].D_KP_START_TIME).AddHours(2).AddHours(Convert.ToDouble(mod_hl.N_HL_TIME)); //计划缓冷结束时间 var lstdhl = hl_plan.Where(a => a.D_OVER_TIME > mod_hl.D_START_TIME && a.C_WH_CODE != "0" && a.D_START_TIME < mod_hl.D_START_TIME).GroupBy(a => new { a.C_WH_CODE, a.N_NUM }).Select(a => new { wh = a.First().C_WH_CODE, num = a.First().N_NUM, total_qua = a.Sum(p => p.N_QUA), cap = a.Max(p => p.N_CAP), left = a.Max(p => p.N_CAP) - a.Sum(p => p.N_QUA), over_time = a.Max(p => p.D_END_TIME) }).ToList().Where(a => a.left >= mod_hl.N_QUA).OrderByDescending(a => a.over_time).ToList(); //查找缓冷未结束的有空闲的坑按缓冷结束时间倒序; if (lstdhl.Count > 0) { mod_hl.C_WH_CODE = lstdhl[0].wh; mod_hl.N_TOTAL_QUA = 38 + lstdhl[0].total_qua; mod_hl.N_NUM = lstdhl[0].num; mod_hl.N_CAP = lstdhl[0].cap; D_OVER_TIME = lstdhl[0].over_time; if (mod_hl.D_END_TIME > lstdhl[0].over_time) { D_OVER_TIME = mod_hl.D_END_TIME; } mod_hl.D_OVER_TIME = D_OVER_TIME; hl_plan.Add(mod_hl); //跟新当前坑的结束时间 var lstUpdateOverTime = hl_plan.Where(a => a.C_WH_CODE == mod_hl.C_WH_CODE && a.N_NUM == mod_hl.N_NUM).ToList(); } else { var lstdhl2 = hl_plan.Where(a => a.C_WH_CODE != "0").GroupBy(a => new { a.C_WH_CODE }).Select(a => new { wh = a.First().C_WH_CODE, num = a.First().N_NUM, total_qua = a.Sum(p => p.N_QUA), cap = a.Max(p => p.N_CAP), left = a.Max(p => p.N_CAP) - a.Sum(p => p.N_QUA), over_time = a.Max(p => p.D_END_TIME) }).ToList().Where(a => a.over_time < mod_hl.D_START_TIME).OrderBy(a => a.over_time).ToList();//查找缓冷坑缓冷已结束的坑 if (lstdhl2.Count > 0) { mod_hl.C_WH_CODE = lstdhl2[0].wh; mod_hl.N_TOTAL_QUA = 38; mod_hl.N_NUM = lstdhl2[0].num + 1; D_OVER_TIME = mod_hl.D_END_TIME; mod_hl.N_CAP = lstdhl2[0].cap; mod_hl.D_OVER_TIME = D_OVER_TIME; hl_plan.Add(mod_hl); //更新当前坑的结束时间 } else { var list1 = hl_plan.GroupBy(a => a.C_WH_CODE).Select(a => new { a.First().C_WH_CODE }).ToList(); var list2 = hl_acl.Where(a => a.C_SLAB_TYPE == "小方坯" && a.N_QUA == 0).GroupBy(a => a.C_WH_CODE).Select(a => new { a.First().C_WH_CODE }).ToList(); var expectedList = list2.Except(list1).ToList().OrderBy(a => a.C_WH_CODE).ToList(); if (expectedList.Count > 0) { //从没有使用过的缓冷坑找一个坑使用 var lstdhl_act = hl_acl.Where(a => a.C_WH_CODE == expectedList[0].C_WH_CODE).ToList(); if (lstdhl_act.Count > 0) { foreach (var item in hl_acl) { if (item.C_ID == lstdhl_act[0].C_ID) { item.N_QUA = Convert.ToDecimal(mod_hl.N_QUA); } } //从没有使用过的缓冷坑找一个坑使用 mod_hl.C_WH_CODE = expectedList[0].C_WH_CODE; mod_hl.N_TOTAL_QUA = 38; mod_hl.N_CAP = lstdhl_act[0].N_CAP_QUA; mod_hl.N_NUM = dhl_plan.Where(a => a.C_WH_CODE == mod_hl.C_WH_CODE).Max(a => a.N_NUM) == null ? 0 : dhl_plan.Where(a => a.C_WH_CODE == mod_hl.C_WH_CODE).Max(a => a.N_NUM) + 1; mod_hl.D_OVER_TIME = mod_hl.D_END_TIME; hl_plan.Add(mod_hl); } else { hl_acl[0].N_QUA = Convert.ToDecimal(mod_hl.N_QUA); mod_hl.C_WH_CODE = "0"; mod_hl.N_TOTAL_QUA = 38; mod_hl.N_CAP = 10000; mod_hl.N_NUM = 1; mod_hl.D_OVER_TIME = mod_hl.D_END_TIME; hl_plan.Add(mod_hl); } } else { hl_acl[0].N_QUA = Convert.ToDecimal(mod_hl.N_QUA); mod_hl.C_WH_CODE = "0"; mod_hl.N_TOTAL_QUA = 38; mod_hl.N_CAP = 10000; mod_hl.N_NUM = 1; mod_hl.D_OVER_TIME = mod_hl.D_END_TIME; hl_plan.Add(mod_hl); } } } lst_lc[lc].D_HL_START_TIME = mod_hl.D_START_TIME; lst_lc[lc].D_HL_END_TIME = mod_hl.D_OVER_TIME; if (lst_lc[lc].C_XM == "N") { if (mod_hl.D_OVER_TIME == null) { lst_lc[lc].D_CAN_USE_TIME = null; } else { lst_lc[lc].D_CAN_USE_TIME = ((DateTime)mod_hl.D_OVER_TIME).AddHours(2); } } } #endregion #region 插入修磨计划 if (lst_lc[lc].C_XM == "Y") { Mod_TPA_XM_PLAN mod_xm = new Mod_TPA_XM_PLAN(); mod_xm.C_ID = System.Guid.NewGuid().ToString(); mod_xm.C_FK = lst_lc[lc].C_ID; mod_xm.C_STL_GRD = lst_lc[lc].C_STL_GRD; mod_xm.C_STD_CODE = lst_lc[lc].C_STD_CODE; mod_xm.C_CCM = lst_lc[lc].C_CCM_DESC; mod_xm.D_PLAN_DATE = lst_lc[lc].C_HL == "Y" ? Convert.ToDateTime(lst_lc[lc].D_HL_END_TIME).AddHours(1) : Convert.ToDateTime(lst_lc[lc].D_KP_END_TIME).AddHours(12);//可修磨时间 mod_xm.N_WGT = lst_lc[lc].N_SLAB_WGT; mod_xm.C_XM_TYPE = "碳钢"; mod_xm.N_CN = 400 / 24; //机时产能 DateTime maxxmtime = (DateTime)mod_xm.D_PLAN_DATE; DateTime?maxsytime = xm_plan.Where(a => a.C_XM_TYPE == "碳钢").Max(a => a.D_END_TIME); //找出已排计划最大修磨结束时间 if (maxsytime != null && maxsytime >= maxxmtime) { maxxmtime = (DateTime)maxsytime; } mod_xm.D_START_TIME = maxxmtime; mod_xm.D_END_TIME = maxxmtime.AddHours((double)(mod_xm.N_WGT / mod_xm.N_CN)); xm_plan.Add(mod_xm); lst_lc[lc].D_XM_START_TIME = mod_xm.D_START_TIME; lst_lc[lc].D_XM_END_TIME = mod_xm.D_END_TIME; lst_lc[lc].D_CAN_USE_TIME = ((DateTime)mod_xm.D_END_TIME).AddHours(2); } #endregion bll_plan_sms.Update(lst_lc[lc]); } #endregion } bll_cast_plan.Update(lst[j]); } #endregion #region 添加工序计划 if (dhl_plan.Count > 0) { for (int i = 0; i < dhl_plan.Count; i++) { bll_dhl.Add(dhl_plan[i]); } } if (kp_plan.Count > 0) { for (int i = 0; i < kp_plan.Count; i++) { bll_kp.Add(kp_plan[i]); } } if (hl_plan.Count > 0) { for (int i = 0; i < hl_plan.Count; i++) { bll_hl.Add(hl_plan[i]); } } if (xm_plan.Count > 0) { for (int i = 0; i < xm_plan.Count; i++) { bll_xm.Add(xm_plan[i]); } } #endregion return(lst); }
/// <summary> /// 得到一个对象实体 /// </summary> public Mod_TPA_KP_PLAN DataRowToModel(DataRow row) { Mod_TPA_KP_PLAN model=new Mod_TPA_KP_PLAN(); if (row != null) { if(row["C_ID"]!=null) { model.C_ID=row["C_ID"].ToString(); } if(row["C_FK"]!=null) { model.C_FK=row["C_FK"].ToString(); } if(row["C_STOVE_NO"]!=null) { model.C_STOVE_NO=row["C_STOVE_NO"].ToString(); } if(row["C_STL_GRD"]!=null) { model.C_STL_GRD=row["C_STL_GRD"].ToString(); } if(row["C_STD_CODE"]!=null) { model.C_STD_CODE=row["C_STD_CODE"].ToString(); } if(row["N_WGT"]!=null && row["N_WGT"].ToString()!="") { model.N_WGT=decimal.Parse(row["N_WGT"].ToString()); } if(row["D_START_TIME"]!=null && row["D_START_TIME"].ToString()!="") { model.D_START_TIME=DateTime.Parse(row["D_START_TIME"].ToString()); } if(row["D_END_TIME"]!=null && row["D_END_TIME"].ToString()!="") { model.D_END_TIME=DateTime.Parse(row["D_END_TIME"].ToString()); } if(row["N_CN"]!=null && row["N_CN"].ToString()!="") { model.N_CN=decimal.Parse(row["N_CN"].ToString()); } if(row["D_PLAN_DATE"]!=null && row["D_PLAN_DATE"].ToString()!="") { model.D_PLAN_DATE=DateTime.Parse(row["D_PLAN_DATE"].ToString()); } if(row["C_REMARK"]!=null) { model.C_REMARK=row["C_REMARK"].ToString(); } if(row["N_STATUS"]!=null && row["N_STATUS"].ToString()!="") { model.N_STATUS=decimal.Parse(row["N_STATUS"].ToString()); } if(row["C_CCM"]!=null) { model.C_CCM=row["C_CCM"].ToString(); } if(row["D_START_TIME_SJ"]!=null && row["D_START_TIME_SJ"].ToString()!="") { model.D_START_TIME_SJ=DateTime.Parse(row["D_START_TIME_SJ"].ToString()); } if(row["D_END_TIME_SJ"]!=null && row["D_END_TIME_SJ"].ToString()!="") { model.D_END_TIME_SJ=DateTime.Parse(row["D_END_TIME_SJ"].ToString()); } if(row["C_KP_CODE"]!=null) { model.C_KP_CODE=row["C_KP_CODE"].ToString(); } if(row["N_SORT"]!=null && row["N_SORT"].ToString()!="") { model.N_SORT=decimal.Parse(row["N_SORT"].ToString()); } if(row["C_MATRL_CODE_SLAB"]!=null) { model.C_MATRL_CODE_SLAB=row["C_MATRL_CODE_SLAB"].ToString(); } if(row["C_MATRL_NAME_SLAB"]!=null) { model.C_MATRL_NAME_SLAB=row["C_MATRL_NAME_SLAB"].ToString(); } if(row["N_SLAB_LENGTH"]!=null && row["N_SLAB_LENGTH"].ToString()!="") { model.N_SLAB_LENGTH=decimal.Parse(row["N_SLAB_LENGTH"].ToString()); } if(row["N_SLAB_PW"]!=null && row["N_SLAB_PW"].ToString()!="") { model.N_SLAB_PW=decimal.Parse(row["N_SLAB_PW"].ToString()); } if(row["C_MATRL_CODE_KP"]!=null) { model.C_MATRL_CODE_KP=row["C_MATRL_CODE_KP"].ToString(); } if(row["C_MATRL_NAME_KP"]!=null) { model.C_MATRL_NAME_KP=row["C_MATRL_NAME_KP"].ToString(); } if(row["C_KP_SIZE"]!=null) { model.C_KP_SIZE=row["C_KP_SIZE"].ToString(); } if(row["N_KP_LENGTH"]!=null && row["N_KP_LENGTH"].ToString()!="") { model.N_KP_LENGTH=decimal.Parse(row["N_KP_LENGTH"].ToString()); } if(row["N_KP_PW"]!=null && row["N_KP_PW"].ToString()!="") { model.N_KP_PW=decimal.Parse(row["N_KP_PW"].ToString()); } if(row["C_DHL"]!=null) { model.C_DHL=row["C_DHL"].ToString(); } if(row["D_CAN_START_TIME"]!=null && row["D_CAN_START_TIME"].ToString()!="") { model.D_CAN_START_TIME=DateTime.Parse(row["D_CAN_START_TIME"].ToString()); } if(row["C_DFP_RZ"]!=null) { model.C_DFP_RZ=row["C_DFP_RZ"].ToString(); } if(row["C_RZP_RZ"]!=null) { model.C_RZP_RZ=row["C_RZP_RZ"].ToString(); } if(row["C_DFP_YQ"]!=null) { model.C_DFP_YQ=row["C_DFP_YQ"].ToString(); } if(row["C_RZP_YQ"]!=null) { model.C_RZP_YQ=row["C_RZP_YQ"].ToString(); } if (row["C_SLAB_SIZE"] != null) { model.C_RZP_YQ = row["C_SLAB_SIZE"].ToString(); } } return model; }
/// <summary> /// 增加一条数据 /// </summary> public bool Add(Mod_TPA_KP_PLAN model) { StringBuilder strSql=new StringBuilder(); strSql.Append("insert into TPA_KP_PLAN("); strSql.Append("C_ID,C_FK,C_STOVE_NO,C_STL_GRD,C_STD_CODE,N_WGT,D_START_TIME,D_END_TIME,N_CN,D_PLAN_DATE,C_REMARK,N_STATUS,C_CCM,D_START_TIME_SJ,D_END_TIME_SJ,C_KP_CODE,N_SORT,C_MATRL_CODE_SLAB,C_MATRL_NAME_SLAB,N_SLAB_LENGTH,N_SLAB_PW,C_MATRL_CODE_KP,C_MATRL_NAME_KP,C_KP_SIZE,N_KP_LENGTH,N_KP_PW,C_DHL,D_CAN_START_TIME,C_DFP_RZ,C_RZP_RZ,C_DFP_YQ,C_RZP_YQ,C_SLAB_SIZE)"); strSql.Append(" values ("); strSql.Append(":C_ID,:C_FK,:C_STOVE_NO,:C_STL_GRD,:C_STD_CODE,:N_WGT,:D_START_TIME,:D_END_TIME,:N_CN,:D_PLAN_DATE,:C_REMARK,:N_STATUS,:C_CCM,:D_START_TIME_SJ,:D_END_TIME_SJ,:C_KP_CODE,:N_SORT,:C_MATRL_CODE_SLAB,:C_MATRL_NAME_SLAB,:N_SLAB_LENGTH,:N_SLAB_PW,:C_MATRL_CODE_KP,:C_MATRL_NAME_KP,:C_KP_SIZE,:N_KP_LENGTH,:N_KP_PW,:C_DHL,:D_CAN_START_TIME,:C_DFP_RZ,:C_RZP_RZ,:C_DFP_YQ,:C_RZP_YQ,:C_SLAB_SIZE)"); OracleParameter[] parameters = { new OracleParameter(":C_ID", OracleDbType.Varchar2,50), new OracleParameter(":C_FK", OracleDbType.Varchar2,50), new OracleParameter(":C_STOVE_NO", OracleDbType.Varchar2,50), new OracleParameter(":C_STL_GRD", OracleDbType.Varchar2,50), new OracleParameter(":C_STD_CODE", OracleDbType.Varchar2,50), new OracleParameter(":N_WGT", OracleDbType.Decimal,10), new OracleParameter(":D_START_TIME", OracleDbType.Date), new OracleParameter(":D_END_TIME", OracleDbType.Date), new OracleParameter(":N_CN", OracleDbType.Decimal,10), new OracleParameter(":D_PLAN_DATE", OracleDbType.Date), new OracleParameter(":C_REMARK", OracleDbType.Varchar2,500), new OracleParameter(":N_STATUS", OracleDbType.Decimal,5), new OracleParameter(":C_CCM", OracleDbType.Varchar2,50), new OracleParameter(":D_START_TIME_SJ", OracleDbType.Date), new OracleParameter(":D_END_TIME_SJ", OracleDbType.Date), new OracleParameter(":C_KP_CODE", OracleDbType.Varchar2,50), new OracleParameter(":N_SORT", OracleDbType.Decimal,5), new OracleParameter(":C_MATRL_CODE_SLAB", OracleDbType.Varchar2,100), new OracleParameter(":C_MATRL_NAME_SLAB", OracleDbType.Varchar2,100), new OracleParameter(":N_SLAB_LENGTH", OracleDbType.Decimal,15), new OracleParameter(":N_SLAB_PW", OracleDbType.Decimal,15), new OracleParameter(":C_MATRL_CODE_KP", OracleDbType.Varchar2,100), new OracleParameter(":C_MATRL_NAME_KP", OracleDbType.Varchar2,100), new OracleParameter(":C_KP_SIZE", OracleDbType.Varchar2,100), new OracleParameter(":N_KP_LENGTH", OracleDbType.Decimal,15), new OracleParameter(":N_KP_PW", OracleDbType.Decimal,15), new OracleParameter(":C_DHL", OracleDbType.Varchar2,50), new OracleParameter(":D_CAN_START_TIME", OracleDbType.Date), new OracleParameter(":C_DFP_RZ", OracleDbType.Varchar2,100), new OracleParameter(":C_RZP_RZ", OracleDbType.Varchar2,100), new OracleParameter(":C_DFP_YQ", OracleDbType.Varchar2,100), new OracleParameter(":C_RZP_YQ", OracleDbType.Varchar2,100), new OracleParameter(":C_SLAB_SIZE", OracleDbType.Varchar2,100)}; parameters[0].Value = model.C_ID; parameters[1].Value = model.C_FK; parameters[2].Value = model.C_STOVE_NO; parameters[3].Value = model.C_STL_GRD; parameters[4].Value = model.C_STD_CODE; parameters[5].Value = model.N_WGT; parameters[6].Value = model.D_START_TIME; parameters[7].Value = model.D_END_TIME; parameters[8].Value = model.N_CN; parameters[9].Value = model.D_PLAN_DATE; parameters[10].Value = model.C_REMARK; parameters[11].Value = model.N_STATUS; parameters[12].Value = model.C_CCM; parameters[13].Value = model.D_START_TIME_SJ; parameters[14].Value = model.D_END_TIME_SJ; parameters[15].Value = model.C_KP_CODE; parameters[16].Value = model.N_SORT; parameters[17].Value = model.C_MATRL_CODE_SLAB; parameters[18].Value = model.C_MATRL_NAME_SLAB; parameters[19].Value = model.N_SLAB_LENGTH; parameters[20].Value = model.N_SLAB_PW; parameters[21].Value = model.C_MATRL_CODE_KP; parameters[22].Value = model.C_MATRL_NAME_KP; parameters[23].Value = model.C_KP_SIZE; parameters[24].Value = model.N_KP_LENGTH; parameters[25].Value = model.N_KP_PW; parameters[26].Value = model.C_DHL; parameters[27].Value = model.D_CAN_START_TIME; parameters[28].Value = model.C_DFP_RZ; parameters[29].Value = model.C_RZP_RZ; parameters[30].Value = model.C_DFP_YQ; parameters[31].Value = model.C_RZP_YQ; parameters[32].Value = model.C_SLAB_SIZE; int rows=DbHelperOra.ExecuteSql(strSql.ToString(),parameters); if (rows > 0) { return true; } else { return false; } }
/// <summary> /// 更新一条数据 /// </summary> public bool Update(Mod_TPA_KP_PLAN model) { StringBuilder strSql=new StringBuilder(); strSql.Append("update TPA_KP_PLAN set "); strSql.Append("C_FK=:C_FK,"); strSql.Append("C_STOVE_NO=:C_STOVE_NO,"); strSql.Append("C_STL_GRD=:C_STL_GRD,"); strSql.Append("C_STD_CODE=:C_STD_CODE,"); strSql.Append("N_WGT=:N_WGT,"); strSql.Append("D_START_TIME=:D_START_TIME,"); strSql.Append("D_END_TIME=:D_END_TIME,"); strSql.Append("N_CN=:N_CN,"); strSql.Append("D_PLAN_DATE=:D_PLAN_DATE,"); strSql.Append("C_REMARK=:C_REMARK,"); strSql.Append("N_STATUS=:N_STATUS,"); strSql.Append("C_CCM=:C_CCM,"); strSql.Append("D_START_TIME_SJ=:D_START_TIME_SJ,"); strSql.Append("D_END_TIME_SJ=:D_END_TIME_SJ,"); strSql.Append("C_KP_CODE=:C_KP_CODE,"); strSql.Append("N_SORT=:N_SORT,"); strSql.Append("C_MATRL_CODE_SLAB=:C_MATRL_CODE_SLAB,"); strSql.Append("C_MATRL_NAME_SLAB=:C_MATRL_NAME_SLAB,"); strSql.Append("N_SLAB_LENGTH=:N_SLAB_LENGTH,"); strSql.Append("N_SLAB_PW=:N_SLAB_PW,"); strSql.Append("C_MATRL_CODE_KP=:C_MATRL_CODE_KP,"); strSql.Append("C_MATRL_NAME_KP=:C_MATRL_NAME_KP,"); strSql.Append("C_KP_SIZE=:C_KP_SIZE,"); strSql.Append("N_KP_LENGTH=:N_KP_LENGTH,"); strSql.Append("N_KP_PW=:N_KP_PW,"); strSql.Append("C_DHL=:C_DHL,"); strSql.Append("D_CAN_START_TIME=:D_CAN_START_TIME,"); strSql.Append("C_DFP_RZ=:C_DFP_RZ,"); strSql.Append("C_RZP_RZ=:C_RZP_RZ,"); strSql.Append("C_DFP_YQ=:C_DFP_YQ,"); strSql.Append("C_RZP_YQ=:C_RZP_YQ,"); strSql.Append("C_SLAB_SIZE=:C_SLAB_SIZE "); strSql.Append(" where C_ID=:C_ID "); OracleParameter[] parameters = { new OracleParameter(":C_FK", OracleDbType.Varchar2,50), new OracleParameter(":C_STOVE_NO", OracleDbType.Varchar2,50), new OracleParameter(":C_STL_GRD", OracleDbType.Varchar2,50), new OracleParameter(":C_STD_CODE", OracleDbType.Varchar2,50), new OracleParameter(":N_WGT", OracleDbType.Decimal,10), new OracleParameter(":D_START_TIME", OracleDbType.Date), new OracleParameter(":D_END_TIME", OracleDbType.Date), new OracleParameter(":N_CN", OracleDbType.Decimal,10), new OracleParameter(":D_PLAN_DATE", OracleDbType.Date), new OracleParameter(":C_REMARK", OracleDbType.Varchar2,500), new OracleParameter(":N_STATUS", OracleDbType.Decimal,5), new OracleParameter(":C_CCM", OracleDbType.Varchar2,50), new OracleParameter(":D_START_TIME_SJ", OracleDbType.Date), new OracleParameter(":D_END_TIME_SJ", OracleDbType.Date), new OracleParameter(":C_KP_CODE", OracleDbType.Varchar2,50), new OracleParameter(":N_SORT", OracleDbType.Decimal,5), new OracleParameter(":C_MATRL_CODE_SLAB", OracleDbType.Varchar2,100), new OracleParameter(":C_MATRL_NAME_SLAB", OracleDbType.Varchar2,100), new OracleParameter(":N_SLAB_LENGTH", OracleDbType.Decimal,15), new OracleParameter(":N_SLAB_PW", OracleDbType.Decimal,15), new OracleParameter(":C_MATRL_CODE_KP", OracleDbType.Varchar2,100), new OracleParameter(":C_MATRL_NAME_KP", OracleDbType.Varchar2,100), new OracleParameter(":C_KP_SIZE", OracleDbType.Varchar2,100), new OracleParameter(":N_KP_LENGTH", OracleDbType.Decimal,15), new OracleParameter(":N_KP_PW", OracleDbType.Decimal,15), new OracleParameter(":C_DHL", OracleDbType.Varchar2,50), new OracleParameter(":D_CAN_START_TIME", OracleDbType.Date), new OracleParameter(":C_DFP_RZ", OracleDbType.Varchar2,100), new OracleParameter(":C_RZP_RZ", OracleDbType.Varchar2,100), new OracleParameter(":C_DFP_YQ", OracleDbType.Varchar2,100), new OracleParameter(":C_RZP_YQ", OracleDbType.Varchar2,100), new OracleParameter(":C_SLAB_SIZE", OracleDbType.Varchar2,100), new OracleParameter(":C_ID", OracleDbType.Varchar2,50)}; parameters[0].Value = model.C_FK; parameters[1].Value = model.C_STOVE_NO; parameters[2].Value = model.C_STL_GRD; parameters[3].Value = model.C_STD_CODE; parameters[4].Value = model.N_WGT; parameters[5].Value = model.D_START_TIME; parameters[6].Value = model.D_END_TIME; parameters[7].Value = model.N_CN; parameters[8].Value = model.D_PLAN_DATE; parameters[9].Value = model.C_REMARK; parameters[10].Value = model.N_STATUS; parameters[11].Value = model.C_CCM; parameters[12].Value = model.D_START_TIME_SJ; parameters[13].Value = model.D_END_TIME_SJ; parameters[14].Value = model.C_KP_CODE; parameters[15].Value = model.N_SORT; parameters[16].Value = model.C_MATRL_CODE_SLAB; parameters[17].Value = model.C_MATRL_NAME_SLAB; parameters[18].Value = model.N_SLAB_LENGTH; parameters[19].Value = model.N_SLAB_PW; parameters[20].Value = model.C_MATRL_CODE_KP; parameters[21].Value = model.C_MATRL_NAME_KP; parameters[22].Value = model.C_KP_SIZE; parameters[23].Value = model.N_KP_LENGTH; parameters[24].Value = model.N_KP_PW; parameters[25].Value = model.C_DHL; parameters[26].Value = model.D_CAN_START_TIME; parameters[27].Value = model.C_DFP_RZ; parameters[28].Value = model.C_RZP_RZ; parameters[29].Value = model.C_DFP_YQ; parameters[30].Value = model.C_RZP_YQ; parameters[31].Value = model.C_SLAB_SIZE; parameters[32].Value = model.C_ID; int rows=DbHelperOra.ExecuteSql(strSql.ToString(),parameters); if (rows > 0) { return true; } else { return false; } }
/// <summary> /// 更新一条数据 /// </summary> public bool Update(Mod_TPA_KP_PLAN model) { return(dal.Update(model)); }
/// <summary> /// 增加一条数据 /// </summary> public bool Add(Mod_TPA_KP_PLAN model) { return(dal.Add(model)); }