| | |
| | | [HotUpdate] |
| | | public class Pro_ScDayImport : AbstractDynamicFormPlugIn |
| | | { |
| | | |
| | | |
| | | |
| | | CloudClient cloudClient = new CloudClient("http://localhost/K3Cloud/"); |
| | | private string fileFullPath = string.Empty; |
| | | |
| | | //public override void BarItemClick(Kingdee.BOS.Core.DynamicForm.PlugIn.Args.BarItemClickEventArgs e) |
| | | //{ |
| | | // base.BarItemClick(e); |
| | |
| | | // } |
| | | |
| | | //} |
| | | |
| | | |
| | | public override void AfterBarItemClick(AfterBarItemClickEventArgs e) |
| | | { |
| | | base.AfterBarItemClick(e); |
| | | if (e.BarItemKey.ToUpper().Equals("TBIMPORT")) |
| | | { |
| | | LogService.WriteAsync("导入功能:"); |
| | | ImportData(); |
| | | } |
| | | |
| | |
| | | //// 下载地址 |
| | | //string downloadUrl = "FileUpLoadServices/download.aspx"; |
| | | //updateControl.SetCustomPropertyValue("ExDownLoadUrl", downloadUrl); |
| | | |
| | | LogHelper.Info("222222"); |
| | | LogService.WriteAsync("上传功能:"); |
| | | ImportDataSC(fileFullPath); |
| | | } |
| | | } |
| | |
| | | } |
| | | base.CustomEvents(e); |
| | | } |
| | | /// <summary> |
| | | /// 文件上传界面数据显示 |
| | | /// </summary> |
| | | /// <param name="fileFullPath"></param> |
| | | private void ImportDataSC(string fileFullPath) |
| | | { |
| | | using (ExcelOperation helper = new ExcelOperation(this.View)) |
| | |
| | | { |
| | | DataSet ds = helper.ReadFromFile(fileFullPath, 1); |
| | | DataTable dt = ds.Tables[0]; |
| | | |
| | | LogService.WriteAsync("导入功能:dt行数:" + dt.Rows.Count); |
| | | DateTime date = Convert.ToDateTime(this.Model.GetValue("F_Paez_Date")); |
| | | if (dt.Rows.Count > 0) |
| | | { |
| | | //Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); |
| | | //DynamicObjectCollection rows = this.Model.GetEntityDataObject(entity); |
| | | this.Model.DeleteEntryData("FEntity"); |
| | | |
| | | //验证导入模板 |
| | | string ErrorResult = ""; |
| | | string error = ""; |
| | | for (int i = 0; i < dt.Rows.Count; i++) |
| | | { |
| | | error = ""; |
| | | if (dt.Rows[i][1].ToString() == "") |
| | | error += "生产订单号不能为空;"; |
| | | if (dt.Rows[i][2].ToString() == "") |
| | | error += "生产组织不能为空;"; |
| | | if (dt.Rows[i][3].ToString() == "") |
| | | error += "生产车间不能为空;"; |
| | | if (dt.Rows[i][5].ToString() == "") |
| | | error += "产品代码不能为空;"; |
| | | if (dt.Rows[i][13].ToString() == "") |
| | | error += "交货日期不能为空;"; |
| | | if (dt.Rows[i][14].ToString() == "") |
| | | error += "订单等级不能为空;"; |
| | | |
| | | if (error.Length > 0) |
| | | ErrorResult += $"Excel模板存在错误,行数{i + 1}:{error}\r\n"; |
| | | } |
| | | if (ErrorResult.Length > 0) |
| | | { |
| | | this.View.ShowErrMessage(ErrorResult); |
| | | return; |
| | | } |
| | | this.Model.DeleteEntryData("FEntity"); |
| | | for (int i = 0; i < dt.Rows.Count; i++) |
| | | { |
| | | //根据生产订单号和物料查询是否存在明细 |
| | | string sql = string.Format(@"/*dialect*/ SELECT T1.FBILLNO,T2.* FROM T_PRD_MO T1 |
| | | LEFT JOIN T_PRD_MOENTRY T2 ON T1.FID = T2.FID |
| | |
| | | WHERE T1.FBILLNO = '{0}' AND T3.FNUMBER = '{1}'", dt.Rows[i][1].ToString(), dt.Rows[i][5].ToString()); |
| | | DataTable _dt = new DataTable(); |
| | | _dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | | |
| | | |
| | | string FLOT = "";//FLOT 批次 |
| | | string FQTY = "";//FQTY 生产订单数量 |
| | | string FBILLNO = "";//FBILLNO 原单号 |
| | | |
| | | if (_dt.Rows.Count > 0) |
| | | { |
| | | FLOT = _dt.Rows[0]["FLOT"].ToString(); |
| | | FQTY = _dt.Rows[0]["FQTY"].ToString(); |
| | | FBILLNO = _dt.Rows[0]["FBILLNO"].ToString(); |
| | | } |
| | | |
| | | //物料编码 + 生产订单号 + 生产资源 去判断是否导入过 带出日计划工单ID及编号 |
| | | string fDayPlanID = ""; |
| | | string fDayPlanBillNo = ""; |
| | | sql = string.Format(@"select a.FID,FBILLNO,FSCOrderNo,FHMaterID,FHSourceID from Sc_WorkBillSortBillMain a JOIN T_BD_MATERIAL b ON a.FHMaterID = b.FMATERIALID |
| | | left join T_ENG_WORKCENTER c on a.FHSourceID=c.fid |
| | | where FSCOrderNo ='{0}' and b.FNUMBER ='{1}' and (isnull(c.FNUMBER,'') ='{2}' or (select count(*) from T_ENG_WORKCENTER where isnull(c.FNUMBER,'') ='{2}')=0)", dt.Rows[i][1].ToString(), dt.Rows[i][5].ToString(), dt.Rows[i][4].ToString()); |
| | | DataTable dayPlanDt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | | if (dayPlanDt.Rows.Count > 0) |
| | | { |
| | | fDayPlanID = dayPlanDt.Rows[0]["FID"].ToString(); |
| | | fDayPlanBillNo = dayPlanDt.Rows[0]["FBILLNO"].ToString(); |
| | | } |
| | | //DynamicObject row = new DynamicObject(entity.DynamicObjectType); |
| | | this.Model.CreateNewEntryRow("FEntity"); |
| | | this.Model.SetValue("FSEQ", i + 1, i); |
| | |
| | | this.Model.SetItemValueByNumber("FResourcesId", dt.Rows[i][4].ToString(), i); |
| | | // this.Model.SetValue("FMatrailId", dt.Rows[i][5].ToString(), i); |
| | | this.Model.SetItemValueByNumber("FMatrailId", dt.Rows[i][5].ToString(), i); |
| | | // this.Model.SetValue("FMatrailName", dt.Rows[i][6].ToString(), i); |
| | | // this.Model.SetValue("FModel", dt.Rows[i][7].ToString(), i); |
| | | // this.Model.SetValue("FUnit", dt.Rows[i][8].ToString(), i); |
| | | this.Model.SetValue("FBatch", dt.Rows[i][9].ToString(), i); |
| | | this.Model.SetValue("FSalOrderCount", dt.Rows[i][10].ToString(), i); |
| | | this.Model.SetValue("FCompleteSetCount", dt.Rows[i][12].ToString(), i); |
| | | this.Model.SetValue("FDeliveryDate", ToDateTimeValue(dt.Rows[i][13].ToString()), i); |
| | | this.Model.SetValue("FOrderLevel", dt.Rows[i][14].ToString(), i); |
| | | this.Model.SetValue("FOrderLevel", OrderType(dt.Rows[i][14].ToString()), i); |
| | | this.Model.SetValue("FOrderQuantity", FQTY, i); |
| | | this.Model.SetValue("FDayPlanID", fDayPlanID, i);//日计划工单ID |
| | | this.Model.SetValue("FDayPlanBillNo", fDayPlanBillNo, i);//日工单编号 |
| | | for (int j = 0; j <= 60; j++) |
| | | { |
| | | this.Model.SetValue("FT" + "" + j + "", dt.Rows[i][15 + j].ToString(), i); |
| | | } |
| | | |
| | | //调用数量值更新 |
| | | this.View.InvokeFieldUpdateService("FT0", i); |
| | | } |
| | | } |
| | | |
| | | this.View.UpdateView(); |
| | | |
| | | for (int j = 0; j <= 60; j++) |
| | | { |
| | | this.View.GetControl("FT" + "" + j + "").Text = date.AddDays(j).ToShortDateString(); |
| | |
| | | |
| | | |
| | | } |
| | | /// <summary> |
| | | /// 订单状态等级 |
| | | /// </summary> |
| | | /// <param name="Type"></param> |
| | | /// <returns></returns> |
| | | public string OrderType(string Type) |
| | | { |
| | | switch (Type) |
| | | { |
| | | |
| | | case "特急": |
| | | return "1"; |
| | | break; |
| | | case "紧急": |
| | | return "2"; |
| | | break; |
| | | case "普通": |
| | | return "3"; |
| | | break; |
| | | default: |
| | | return " "; |
| | | break; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// 时间戳Timestamp转换成日期 |
| | | /// </summary> |
| | |
| | | DateTime targetDt = dtStart.Add(toNow); |
| | | return targetDt; |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 导入功能 |
| | | /// </summary> |
| | |
| | | try |
| | | { |
| | | LogService.WriteAsync("测试"); |
| | | |
| | | string sql; |
| | | DateTime date = Convert.ToDateTime(this.Model.GetValue("F_Paez_Date")); |
| | | //获取单据体信息 |
| | | Entity entity = this.View.BillBusinessInfo.GetEntity("FEntity"); |
| | | //单据体信息转换为列表集合 |
| | | DynamicObjectCollection entityDataObjoct = this.View.Model.GetEntityDataObject(entity); |
| | | |
| | | List<string> sqlList = new List<string>(); |
| | | foreach (DynamicObject current in entityDataObjoct) |
| | | { |
| | | if (Convert.ToString(current["FDayPlanID"]) == "0") |
| | | continue; |
| | | for (int i = 0; i <= 60; i++) |
| | | { |
| | | JObject jsonFPOOrderEntry = new JObject(); |
| | | //重复导入的更新掉计划数量以及更新齐套状态为空 |
| | | sql = string.Format($"update SC_WORKBILLSORTBILLSub set FHQTY ='{Convert.ToString(current["FT" + "" + i + ""])}',FCOMPLETE='' where FID ={Convert.ToString(current["FDayPlanID"])} and FHMASTERDATE ={date.AddDays(i).ToShortDateString()} and FHLOCKEDSUB = 0"); |
| | | sqlList.Add(sql); |
| | | } |
| | | } |
| | | int res = DBServiceHelper.ExecuteBatch(Context, sqlList); |
| | | string _result = ""; |
| | | foreach (DynamicObject current in entityDataObjoct) |
| | | { |
| | |
| | | this.View.ShowErrMessage(_result); |
| | | return; |
| | | } |
| | | |
| | | foreach (DynamicObject current in entityDataObjoct) |
| | | { |
| | | if (Convert.ToInt32(current["FNoScheduled"]) < 0) |
| | | _result += "序号:" + Convert.ToString(current["SEQ"]) + ",日计划总数量超出生产订单数量"; |
| | | |
| | | } |
| | | if (_result != "") |
| | | { |
| | | this.View.ShowErrMessage(_result); |
| | | return; |
| | | } |
| | | |
| | | foreach (DynamicObject current in entityDataObjoct) |
| | | { |
| | | if (string.IsNullOrEmpty(Convert.ToString(current["FSalOrderNo"])) || string.IsNullOrEmpty(Convert.ToString(current["FSCOrderNo"]))) |
| | | if (string.IsNullOrEmpty(Convert.ToString(current["FSCOrderNo"]))) |
| | | continue; |
| | | |
| | | //根据生产订单号和物料查询是否存在明细 |
| | | sql = string.Format(@"/*dialect*/SELECT T1.FBILLNO,T2.* FROM T_PRD_MO T1 |
| | | LEFT JOIN T_PRD_MOENTRY T2 ON T1.FID = T2.FID |
| | |
| | | dt = DBServiceHelper.ExecuteDataSet(Context, sql).Tables[0]; |
| | | if (dt.Rows.Count == 0) |
| | | continue; |
| | | |
| | | string FID = "";//FID 源单主内码 |
| | | string FENTRYID = "";//FENTRYID 源单子内码 |
| | | string FLOT = "";//FLOT 批次 |
| | | string FQTY = "";//FQTY 生产订单数量 |
| | | string FBILLNO = "";//FBILLNO 原单号 |
| | | |
| | | if (dt.Rows.Count > 0) |
| | | { |
| | | FID = dt.Rows[0]["FID"].ToString(); |
| | |
| | | FQTY = dt.Rows[0]["FQTY"].ToString(); |
| | | FBILLNO = dt.Rows[0]["FBILLNO"].ToString(); |
| | | } |
| | | |
| | | |
| | | JObject jsonRoot = new JObject(); |
| | | jsonRoot.Add("Creator", ""); |
| | | jsonRoot.Add("NeedUpDateFields", new JArray()); |
| | | jsonRoot.Add("NeedReturnFields", new JArray()); |
| | | jsonRoot.Add("IsDeleteEntry", "true"); |
| | | jsonRoot.Add("IsDeleteEntry", "false"); |
| | | jsonRoot.Add("SubSystemId", ""); |
| | | jsonRoot.Add("IsVerifyBaseDataField", ""); |
| | | |
| | | JObject jsonModel = new JObject(); |
| | | jsonModel.Add("FPreparatDate", date.ToString());//编制日期 |
| | | jsonModel.Add("FSCOrderNo", current["FSCOrderNo"].ToString()); //生产订单号FSCOrderNo |
| | | jsonModel.Add("FHSeOrderBillNo", current["FSalOrderNo"].ToString());//销售订单号 |
| | | jsonModel.Add("FHSeOrderBillNo", Convert.ToString(current["FSalOrderNo"]));//销售订单号 |
| | | jsonModel.Add("FHOrderLev", current["FOrderLevel"].ToString());//订单等级 |
| | | jsonModel.Add("FSalOrderCount", current["FOrderLevel"].ToString());//销售订单数量 |
| | | jsonModel.Add("FHOrderQty", Convert.ToString(current["FSalOrderCount"]));//销售订单数量 |
| | | jsonModel.Add("FHOrderCommitDate", current["FDeliveryDate"].ToString());//交货期HOrderCommitDate |
| | | //jsonModel.Add("FBatch", current["FBatch"].ToString());//批次 |
| | | jsonModel.Add("FBatch", FLOT);//批次 |
| | |
| | | jsonModel.Add("FPrdBillNo", FBILLNO); ;//源单编号 |
| | | jsonModel.Add("FPRDMOMAINID", FID); ;//源单主内码 |
| | | jsonModel.Add("FPRDMOENTYID", FENTRYID); ;//源单子内码 |
| | | |
| | | jsonModel.Add("FOrderQuantity", current["FOrderQuantity"].ToString()); ;//生产订单数量 |
| | | jsonModel.Add("FDayPlanQuantity", current["FDayPlanQuantity"].ToString()); ;//日计划数量 |
| | | jsonModel.Add("FNoScheduled", current["FNoScheduled"].ToString()); ;//未排数量 |
| | | |
| | | |
| | | |
| | | |
| | | JObject jsonFHMaterID = new JObject(); |
| | | jsonFHMaterID.Add("FNumber", (current["FMatrailId"] as DynamicObject)["Number"].ToString()); |
| | | jsonModel.Add("FHMaterID", jsonFHMaterID);//FHMaterID 物料 |
| | | |
| | | if (Convert.ToString(current["FORGID_Id"]) != "0") |
| | | { |
| | | JObject jsonFHPRDORGID = new JObject(); |
| | |
| | | jsonFProductWorkShopId.Add("FNumber", (current["FResourcesId"] as DynamicObject)["Number"].ToString()); |
| | | jsonModel.Add("FHSourceID", jsonFProductWorkShopId);//FHSourceID 生产车间 |
| | | } |
| | | |
| | | if (Convert.ToString(current["FProductWorkShopId_Id"]) != "0") |
| | | { |
| | | JObject jsonFResourcesId = new JObject(); |
| | |
| | | jsonModel.Add("FHWorkShopID", jsonFResourcesId);//FHWorkShopID 生产资源 |
| | | } |
| | | JArray Entry = new JArray(); |
| | | for (int i = 0; i <= 60; i++) |
| | | { |
| | | JObject jsonFPOOrderEntry = new JObject(); |
| | | |
| | | jsonFPOOrderEntry.Add("FHMasterDate", date.AddDays(i).ToShortDateString()); ;//主日期 |
| | | jsonFPOOrderEntry.Add("FHQty ", Convert.ToString(current["FT" + "" + i + ""])); ;//日计划数量 |
| | | jsonFPOOrderEntry.Add("FColumn", "FT" + "" + i + ""); ;//对应的列头 |
| | | //jsonFPOOrderEntry.Add("FHMainSourceBillType ", "生产订单"); ;//源单类型 |
| | | //jsonFPOOrderEntry.Add("FHMainSourceBillNo", FBILLNO); ;//源单编号 |
| | | //jsonFPOOrderEntry.Add("FHMainSourceInterID", FID); ;//源单主内码 |
| | | //jsonFPOOrderEntry.Add("FHMainSourceEntryID", FENTRYID); ;//源单子内码 |
| | | |
| | | Entry.Add(jsonFPOOrderEntry); |
| | | } |
| | | |
| | | jsonModel.Add("FEntity", Entry); |
| | | //日计划工单不为空时update |
| | | if (Convert.ToString(current["FDayPlanID"]) != "0") |
| | | { |
| | | sql = $"select max(FHMASTERDATE)FHMASTERDATE from SC_WORKBILLSORTBILLSub where FID={Convert.ToString(current["FDayPlanID"])} "; |
| | | DateTime EndDate = DBServiceHelper.ExecuteScalar<DateTime>(Context, sql, DateTime.Now); |
| | | for (int i = 0; i <= 60; i++) |
| | | { |
| | | if (EndDate >= date.AddDays(i)) |
| | | continue; |
| | | JObject jsonFPOOrderEntry = new JObject(); |
| | | jsonFPOOrderEntry.Add("FHMasterDate", date.AddDays(i).ToShortDateString()); ;//主日期 |
| | | jsonFPOOrderEntry.Add("FHQty ", Convert.ToString(current["FT" + "" + i + ""])); ;//日计划数量 |
| | | jsonFPOOrderEntry.Add("FColumn", "FT" + "" + i + ""); ;//对应的列头 |
| | | Entry.Add(jsonFPOOrderEntry); |
| | | } |
| | | jsonModel.Add("FEntity", Entry); |
| | | jsonModel.Add("FID", Convert.ToString(current["FDayPlanID"])); ;//源单编号 |
| | | jsonRoot.Add("Model", jsonModel); |
| | | CloudClient cloudClient = new CloudClient("http://erp-windows002/K3Cloud/"); |
| | | var result = cloudClient.Save("Paez_Sc_WorkBillAutoSortBill", jsonRoot.ToString()); |
| | | JObject saveObj = JObject.Parse(result); |
| | | string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); |
| | |
| | | { |
| | | string FDayPlanBillNo = saveObj["Result"]["Number"].ToString(); |
| | | string FDayPlanID = saveObj["Result"]["Id"].ToString(); |
| | | |
| | | this.Model.SetValue("FDayPlanBillNo", FDayPlanBillNo, Convert.ToInt32(current["SEQ"]) - 1);// |
| | | this.Model.SetValue("FDayPlanID", FDayPlanID, Convert.ToInt32(current["SEQ"]) - 1);// |
| | | |
| | | this.View.ShowMessage("导入成功"); |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | | //LogService.WriteAsync(saveIsSuc); |
| | | LogService.WriteAsync(jsonRoot); |
| | | LogHelper.Error(jsonRoot.ToString()); |
| | | |
| | | this.View.ShowErrMessage(jsonRoot.ToString()); |
| | | |
| | | |
| | | } |
| | | } |
| | | else |
| | | { |
| | | for (int i = 0; i <= 60; i++) |
| | | { |
| | | JObject jsonFPOOrderEntry = new JObject(); |
| | | jsonFPOOrderEntry.Add("FHMasterDate", date.AddDays(i).ToShortDateString()); ;//主日期 |
| | | jsonFPOOrderEntry.Add("FHQty ", Convert.ToString(current["FT" + "" + i + ""])); ;//日计划数量 |
| | | jsonFPOOrderEntry.Add("FColumn", "FT" + "" + i + ""); ;//对应的列头 |
| | | Entry.Add(jsonFPOOrderEntry); |
| | | } |
| | | jsonModel.Add("FEntity", Entry); |
| | | jsonRoot.Add("Model", jsonModel); |
| | | CloudClient cloudClient = new CloudClient("http://erp-windows002/K3Cloud/"); |
| | | var result = cloudClient.Save("Paez_Sc_WorkBillAutoSortBill", jsonRoot.ToString()); |
| | | JObject saveObj = JObject.Parse(result); |
| | | string saveIsSuc = saveObj["Result"]["ResponseStatus"]["IsSuccess"].ToString().ToUpper(); |
| | |
| | | { |
| | | string FDayPlanBillNo = saveObj["Result"]["Number"].ToString(); |
| | | string FDayPlanID = saveObj["Result"]["Id"].ToString(); |
| | | |
| | | this.Model.SetValue("FDayPlanBillNo", FDayPlanBillNo, Convert.ToInt32(current["SEQ"]) - 1);// |
| | | this.Model.SetValue("FDayPlanID", FDayPlanID, Convert.ToInt32(current["SEQ"]) - 1);// |
| | | |
| | | |
| | | this.View.ShowMessage("导入成功"); |
| | | |
| | | } |
| | | else |
| | | { |
| | | // LogService.WriteAsync(saveIsSuc); |
| | | LogService.WriteAsync(jsonRoot); |
| | | LogHelper.Error(jsonRoot.ToString()); |
| | | |
| | | this.View.ShowErrMessage(jsonRoot.ToString()); |
| | | |
| | | |
| | | } |
| | | } |
| | | |
| | | this.View.UpdateView(); |
| | | |
| | | |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | |
| | | this.View.ShowErrMessage(ex.ToString()); |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | /// <summary> |
| | | /// 数字转换时间格式 |
| | | /// </summary> |
| | |
| | | } |
| | | return string.Empty; |
| | | } |
| | | |
| | | } |
| | | |
| | | } |