/// <summary> /// 根据工站的缓存区,找到物料没有耗尽呼叫,找不到就新增呼叫 /// </summary> /// <param name="robot"></param> /// <returns></returns> public BllResult materialCall(Equipment robot) { //找到工站对应的缓存位 var locationResult = AppSession.Dal.GetCommonModelByCondition <Location>($"where srmCode = '{robot.Code}'"); if (locationResult.Success) { //找到对应的工站中,材料还未耗尽的呼叫 var callHeaderResult = AppSession.Dal.GetCommonModelByCondition <MaterialCallHeader>($"needStation = '{robot.Code}' and status <> '{MaterialCallStatus.配送使用完毕.GetIndexString()}'"); foreach (var item in locationResult.Data) { //判断是否呼叫过 if (callHeaderResult.Success) { if (callHeaderResult.Data.Exists(t => t.LocationCode == item.Code)) { continue; } } //新增一条呼叫 MaterialCallHeader materialCallHeader = new MaterialCallHeader(); var result = AppSession.Dal.InsertCommonModel <MaterialCallHeader>(materialCallHeader); if (result.Success == false) { return(BllResultFactory.Error(result.Msg)); } } } return(BllResultFactory.Sucess()); }
public TableData Query(MaterialCallHeader entity) { var result = new TableData(); var data = _app.Find(EntityToExpression <MaterialCallHeader> .GetExpressions(entity)); GetData(data, result); result.count = data.Count(); return(result); }
public string Upd(MaterialCallHeader Table_entity) { try { _app.Upd(Table_entity); } catch (Exception ex) { Result.Status = false; Result.Message = ex.Message; } return(JsonHelper.Instance.Serialize(Result)); }
public string GetTemplate() { var result = new TableData(); List <MaterialCallHeader> listMaterialCall = new List <MaterialCallHeader>(); MaterialCallHeader entity = _app.FindSingle(u => u.Id > 0); if (entity != null) { listMaterialCall.Add(entity); } else { listMaterialCall.Add(new MaterialCallHeader()); } result.data = listMaterialCall; result.count = listMaterialCall.Count; return(JsonHelper.Instance.Serialize(result)); }
public Response ImportIn(IFormFile excelfile) { Response result = new Infrastructure.Response(); List <MaterialCallHeader> exp = imp.ConvertToModel <MaterialCallHeader>(excelfile); string sErrorMsg = ""; for (int i = 0; i < exp.Count; i++) { try { MaterialCallHeader e = exp[i]; e.Id = null; _app.Add(e); } catch (Exception ex) { sErrorMsg += "第" + (i + 2) + "行:" + ex.Message + "<br>"; result.Message = sErrorMsg; break; } } if (sErrorMsg.Equals(string.Empty)) { if (exp.Count == 0) { sErrorMsg += "没有发现有效数据, 请确定模板是否正确, 或是否有填充数据!"; result.Message = sErrorMsg; } else { result.Message = "导入完成"; } } else { result.Status = false; result.Message = result.Message; } return(result); }
public void Upd(MaterialCallHeader entity) { _app.Update(entity); }
public void Ins(MaterialCallHeader entity) { _app.Add(entity); }
public TableData Load(PageReq pageRequest, MaterialCallHeader entity) { return(_app.Load(pageRequest, entity)); }
public TableData ExportData(MaterialCallHeader entity) { return(_app.ExportData(entity)); }
public string Load(PageReq pageRequest, MaterialCallHeader entity) { return(JsonHelper.Instance.Serialize(_app.Load(pageRequest, entity))); }
public string Export(MaterialCallHeader entity) { return(JsonHelper.Instance.Serialize(_app.ExportData(entity))); }
public void Upd(MaterialDistributeTaskHeader entity) { if (entity.Status == AGVTaskState.配送完成 || entity.Status == AGVTaskState.放料车完成) { //同步更新物料呼叫状态为完成 MaterialCallHeader materialCallHeader = _unitWork.FindSingle <MaterialCallHeader>(u => u.Id.Equals(entity.MaterialCallId)); materialCallHeader.Status = CallStatus.完成; materialCallHeader.UpdateTime = DateTime.Now; materialCallHeader.UpdateBy = _app._loginInfo.Account; _unitWork.Update(materialCallHeader); if (entity.Status == AGVTaskState.配送完成) { List <MaterialCallDetail> materialCallDetail = _unitWork.Find <MaterialCallDetail>(u => u.CallHeaderId.Equals(materialCallHeader.Id)).ToList(); foreach (MaterialCallDetail mcdetail in materialCallDetail) { //同步更新物料需求状态 List <MaterialDemand> materialDemands = _unitWork.Find <MaterialDemand>(u => u.OrderCode.Equals(mcdetail.OrderCode) && u.ProductCode == mcdetail.ProductCode).ToList(); foreach (MaterialDemand md in materialDemands) { md.Status = CallStatus.完成; md.UpdateTime = DateTime.Now; md.UpdateBy = _app._loginInfo.Account; _unitWork.Update(md); } } } //更新缓存区位置存放的料框编号和状态 Location location = _unitWork.Find <Location>(u => u.Code == entity.LocationCode).FirstOrDefault(); location.UpdateTime = DateTime.Now; location.UpdateBy = _app._loginInfo.Account; location.ContainerCode = entity.ContainerCode; location.Status = LocationStatus.货; _unitWork.Update(location); //容器 Container container = _unitWork.Find <Container>(u => u.Code == entity.ContainerCode).FirstOrDefault(); container.UpdateTime = DateTime.Now; container.UpdateBy = _app._loginInfo.Account; container.LocationCode = entity.LocationCode; container.Status = ContainerStatus.; _unitWork.Update(container); } if (entity.Status == AGVTaskState.回收料框完成 || entity.Status == AGVTaskState.取工件完成) { //更新缓存区位置存放的料框编号和状态 Location location = _unitWork.Find <Location>(u => u.Code == entity.LocationCode).FirstOrDefault(); location.UpdateTime = DateTime.Now; location.UpdateBy = _app._loginInfo.Account; location.ContainerCode = ""; location.Status = LocationStatus.空仓位; _unitWork.Update(location); //容器 Container container = _unitWork.Find <Container>(u => u.Code == entity.ContainerCode).FirstOrDefault(); container.UpdateTime = DateTime.Now; container.UpdateBy = _app._loginInfo.Account; container.LocationCode = ""; container.Status = ContainerStatus.空; _unitWork.Update(container); } entity.Status = AGVTaskState.任务完成; _app.Update(entity); }
public void Execute() { DbHelp dbHelp = new DbHelp(ConnString); string sql = string.Format(@"SELECT [id],[needStation],[locationCode],[callTime],[callType] FROM [dbo].[material_call_header] WHERE [dbo].[material_call_header].[status] = '{0}'; ", CallStatus.已准备); DataSet ds = dbHelp.SelectGet(sql); var ccode = ""; List <MaterialCallHeader> chlist = new List <MaterialCallHeader>(); foreach (DataRow dr in ds.Tables[0].Rows) { MaterialCallHeader callheader = new MaterialCallHeader(); callheader.Id = int.Parse(dr["id"].ToString()); callheader.NeedStation = dr["needStation"].ToString(); callheader.LocationCode = dr["locationCode"].ToString(); callheader.CallTime = DateTime.Parse(dr["callTime"].ToString()); callheader.CallType = dr["callType"].ToString(); chlist.Add(callheader); } if (chlist.Count == ds.Tables[0].Rows.Count) { foreach (MaterialCallHeader callhd in chlist) { string sqlmdth = string.Format(@"SELECT * FROM [dbo].[material_distribute_task_header] WHERE [dbo].[material_distribute_task_header].materialCallId = {0}; ", callhd.Id); DataSet materialdthd = dbHelp.SelectGet(sqlmdth); if (materialdthd.Tables[0].Rows.Count < 1) { //读取叫料明细数据 string calldtsql = string.Format("SELECT * FROM dbo.material_call_detail where dbo.material_call_detail.callHeaderId = {0}; ", callhd.Id); DataSet calldtds = dbHelp.SelectGet(calldtsql); //取料框ABC类别 string ABCsql = string.Format("SELECT * FROM dbo.location where dbo.location.code = '{0}'; ", callhd.LocationCode); DataSet ABCds = dbHelp.SelectGet(ABCsql); if (!string.IsNullOrEmpty(ABCds.Tables[0].Rows[0]["ContainerCode"].ToString())) { ccode = ABCds.Tables[0].Rows[0]["ContainerCode"].ToString(); } string taskNo = ""; if (callhd.CallType == CallType.料) { string product = ""; string productid = ""; string confirm = MaterialConfirm.已确认.ToString(); if (ABCds.Tables[0].Rows[0]["type"].ToString() != "C") { product = calldtds.Tables[0].Rows[0]["productCode"].ToString(); productid = calldtds.Tables[0].Rows[0]["productId"].ToString(); confirm = MaterialConfirm.未确认.ToString(); } if (ABCds.Tables[0].Rows[0]["Status"].ToString() == LocationStatus.空仓位) {//第一次叫料,直接生成配送任务 SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@TASKTYPE", AGVTaskNo.工位叫料), new SqlParameter("@NEW_ID", SqlDbType.VarChar, 32) }; parameters[1].Direction = ParameterDirection.Output; taskNo = dbHelp.ProcOutput("Proc_GetTaskNo", parameters, "@NEW_ID").ToString();//生成任务号 //写入物料配送任务主表 string intaskhdsql = string.Format(@"INSERT INTO [dbo].[material_distribute_task_header] ([taskNo],[materialCallId],[productCode],[containerType],[userCode],[needStation],[locationCode],[containerCode],[needTime],[status],[createTime],[createBy],[callType],[startPlace],[EndPlace],[productId],[materialConfirm]) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}'); ", taskNo, callhd.Id, product, ABCds.Tables[0].Rows[0]["type"].ToString(), "AutoJob", callhd.NeedStation, callhd.LocationCode, "", callhd.CallTime, "1", DateTime.Now, "AutoJob", TaskType.料配送, "", callhd.LocationCode, productid, confirm); dbHelp.DataOperator(intaskhdsql); } else {//先生成取空料框任务 SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@TASKTYPE", AGVTaskNo.取空料框), new SqlParameter("@NEW_ID", SqlDbType.VarChar, 32) }; parameters[1].Direction = ParameterDirection.Output; string emptyTaskNo = dbHelp.ProcOutput("Proc_GetTaskNo", parameters, "@NEW_ID").ToString();//生成任务号 //写入物料配送任务主表 string intaskhdsql = string.Format(@"INSERT INTO [dbo].[material_distribute_task_header] ([taskNo],[materialCallId],[productCode],[containerType],[userCode],[needStation],[locationCode],[containerCode],[needTime],[status],[createTime],[createBy],[callType],[startPlace],[EndPlace],[materialConfirm]) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}'); ", emptyTaskNo, callhd.Id, "", ABCds.Tables[0].Rows[0]["type"].ToString(), "AutoJob", callhd.NeedStation, callhd.LocationCode, ccode, callhd.CallTime, "1", DateTime.Now, "AutoJob", TaskType.回收料框, callhd.LocationCode, "", MaterialConfirm.已确认); dbHelp.DataOperator(intaskhdsql); //再生成配送任务 SqlParameter[] gparameters = new SqlParameter[] { new SqlParameter("@TASKTYPE", AGVTaskNo.工位叫料), new SqlParameter("@NEW_ID", SqlDbType.VarChar, 32) }; gparameters[1].Direction = ParameterDirection.Output; taskNo = dbHelp.ProcOutput("Proc_GetTaskNo", gparameters, "@NEW_ID").ToString();//生成任务号 //写入物料配送任务主表 string gintaskhdsql = string.Format(@"INSERT INTO [dbo].[material_distribute_task_header] ([taskNo],[materialCallId],[productCode],[containerType],[userCode],[needStation],[locationCode],[containerCode],[needTime],[status],[createTime],[createBy],[callType],[startPlace],[EndPlace],[productId],[materialConfirm]) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}','{16}'); ", taskNo, callhd.Id, product, ABCds.Tables[0].Rows[0]["type"].ToString(), "AutoJob", callhd.NeedStation, callhd.LocationCode, "", callhd.CallTime, "1", DateTime.Now, "AutoJob", TaskType.料配送, "", callhd.LocationCode, productid, confirm); dbHelp.DataOperator(gintaskhdsql); } //写入配送明细表逻辑 if (calldtds.Tables[0].Rows.Count > 0) { //遍历叫料明细数据 foreach (DataRow item in calldtds.Tables[0].Rows) { //获取写入的配送头表信息 string dtaskheadersql = string.Format(@"SELECT * FROM [dbo].[material_distribute_task_header] WHERE [dbo].[material_distribute_task_header].taskNo = '{0}'; ", taskNo); DataSet dtaskheaderds = dbHelp.SelectGet(dtaskheadersql); if (dtaskheaderds.Tables[0].Rows.Count > 0) { //获取物料需求表数据 string materialmdsql = string.Format(@"SELECT * FROM dbo.material_demand where dbo.material_demand.orderCode = '{0}'; ", item["orderCode"].ToString()); DataSet materialmdds = dbHelp.SelectGet(materialmdsql); if (materialmdds.Tables[0].Rows.Count > 0) { //遍历物料需求数据 foreach (DataRow mditem in materialmdds.Tables[0].Rows) { if (mditem["classABC"].ToString() == ABCds.Tables[0].Rows[0]["type"].ToString()) { string intaskdtsql = string.Format(@"INSERT INTO [dbo].[material_distribute_task_detail] ([materialDistributeTaskHeaderId],[orderCode],[materialCode],[serialNumber],[qty],[userCode],[createTime],[createBy]) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}'); ", dtaskheaderds.Tables[0].Rows[0]["id"].ToString(), mditem["orderCode"].ToString(), mditem["materialCode"].ToString(), item["serialNumber"].ToString(), mditem["distributeQty"].ToString(), "AutoJob", DateTime.Now, "AutoJob"); dbHelp.DataOperator(intaskdtsql); } } } } } } } else if (callhd.CallType == CallType.料) { if (ABCds.Tables[0].Rows[0]["Status"].ToString() == LocationStatus.空仓位) {//第一次呼叫下料,先补空料框 SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@TASKTYPE", AGVTaskNo.补给空框), new SqlParameter("@NEW_ID", SqlDbType.VarChar, 32) }; parameters[1].Direction = ParameterDirection.Output; taskNo = dbHelp.ProcOutput("Proc_GetTaskNo", parameters, "@NEW_ID").ToString(); //生成任务号 //写入物料配送任务主表 string intaskhdsql = string.Format(@"INSERT INTO [dbo].[material_distribute_task_header] ([taskNo],[materialCallId],[productCode],[containerType],[userCode],[needStation],[locationCode],[containerCode],[needTime],[status],[createTime],[createBy],[callType],[startPlace],[EndPlace],[materialConfirm]) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}'); ", taskNo, callhd.Id, "", ABCds.Tables[0].Rows[0]["type"].ToString(), "AutoJob", callhd.NeedStation, callhd.LocationCode, "", callhd.CallTime, "1", DateTime.Now, "AutoJob", TaskType.补给料框, "", callhd.LocationCode, MaterialConfirm.已确认); dbHelp.DataOperator(intaskhdsql); } else {//生成下料任务 SqlParameter[] parameters = new SqlParameter[] { new SqlParameter("@TASKTYPE", AGVTaskNo.成品下料), new SqlParameter("@NEW_ID", SqlDbType.VarChar, 32) }; parameters[1].Direction = ParameterDirection.Output; taskNo = dbHelp.ProcOutput("Proc_GetTaskNo", parameters, "@NEW_ID").ToString();//生成任务号 //写入物料配送任务主表 string intaskhdsql = string.Format(@"INSERT INTO [dbo].[material_distribute_task_header] ([taskNo],[materialCallId],[productCode],[containerType],[userCode],[needStation],[locationCode],[containerCode],[needTime],[status],[createTime],[createBy],[callType],[startPlace],[EndPlace],[materialConfirm]) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}'); ", taskNo, callhd.Id, "", ABCds.Tables[0].Rows[0]["type"].ToString(), "AutoJob", callhd.NeedStation, callhd.LocationCode, ccode, callhd.CallTime, "1", DateTime.Now, "AutoJob", TaskType.料取件, callhd.LocationCode, "", MaterialConfirm.已确认); dbHelp.DataOperator(intaskhdsql); //下料完成后,补给空料框任务 SqlParameter[] bparameters = new SqlParameter[] { new SqlParameter("@TASKTYPE", AGVTaskNo.补给空框), new SqlParameter("@NEW_ID", SqlDbType.VarChar, 32) }; bparameters[1].Direction = ParameterDirection.Output; taskNo = dbHelp.ProcOutput("Proc_GetTaskNo", bparameters, "@NEW_ID").ToString();//生成任务号 //写入物料配送任务主表 string bintaskhdsql = string.Format(@"INSERT INTO [dbo].[material_distribute_task_header] ([taskNo],[materialCallId],[productCode],[containerType],[userCode],[needStation],[locationCode],[containerCode],[needTime],[status],[createTime],[createBy],[callType],[startPlace],[EndPlace],[materialConfirm]) VALUES ('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}','{12}','{13}','{14}','{15}'); ", taskNo, callhd.Id, "", ABCds.Tables[0].Rows[0]["type"].ToString(), "AutoJob", callhd.NeedStation, callhd.LocationCode, "", callhd.CallTime, "1", DateTime.Now, "AutoJob", TaskType.补给料框, "", callhd.LocationCode, MaterialConfirm.已确认); dbHelp.DataOperator(bintaskhdsql); } } } } } }
public Response AGVTaskNodeApp(TaskNodeModel taskNodeModel) { using (var tran = _context.Database.BeginTransaction()) { Response <TaskNodeModel> Response = new Response <TaskNodeModel>(); string sErrorMsg = ""; Location location = null; Container container = null; if (!CheckLogin()) { Response.Code = 500; Response.Status = false; Response.Message = "请先登录!"; return(Response); } try { MaterialDistributeTaskHeader materialDistributeTaskHeader = _unitWork.FindSingle <MaterialDistributeTaskHeader>(u => u.TaskNo.Equals(taskNodeModel.TaskNo)); if (materialDistributeTaskHeader == null) { sErrorMsg += "任务号为:" + taskNodeModel.TaskNo + "不存在,请确认<br>"; Response.Message = sErrorMsg; } else { MaterialCallHeader materialCallHeader = _unitWork.FindSingle <MaterialCallHeader>(u => u.Id.Equals(materialDistributeTaskHeader.MaterialCallId)); List <MaterialCallDetail> materialCallDetail = _unitWork.Find <MaterialCallDetail>(u => u.CallHeaderId.Equals(materialCallHeader.Id)).ToList(); //更新配送状态 if (materialDistributeTaskHeader.Status < AGVTaskState.任务完成) { if (taskNodeModel.Status == AGVTaskState.配送完成 || taskNodeModel.Status == AGVTaskState.放料车完成) { //更新配送任务头表状态为完成 materialDistributeTaskHeader.Status = AGVTaskState.任务完成; //同步更新物料呼叫状态为完成 materialCallHeader.Status = CallStatus.完成; materialCallHeader.UpdateTime = DateTime.Now; materialCallHeader.UpdateBy = "AGVapi"; _unitWork.Update(materialCallHeader); if (materialCallDetail.Count > 0) { foreach (MaterialCallDetail mcdetail in materialCallDetail) { //同步更新物料需求状态 List <MaterialDemand> materialDemands = _unitWork.Find <MaterialDemand>(u => u.OrderCode.Equals(mcdetail.OrderCode) && u.ProductCode == mcdetail.ProductCode).ToList(); foreach (MaterialDemand md in materialDemands) { md.Status = CallStatus.完成; md.UpdateTime = DateTime.Now; md.UpdateBy = "AGVapi"; _unitWork.Update(md); } } } //上料缓存区域 if (_unitWork.IsExist <Location>(u => u.Code == materialDistributeTaskHeader.LocationCode)) { //更新缓存区位置存放的料框编号和状态 location = _unitWork.Find <Location>(u => u.Code == materialDistributeTaskHeader.LocationCode).FirstOrDefault(); location.UpdateTime = DateTime.Now; location.UpdateBy = "AGVapi"; location.ContainerCode = materialDistributeTaskHeader.ContainerCode; location.Status = LocationStatus.货; _unitWork.Update(location); } else { throw new Exception("缓存位置为:" + materialDistributeTaskHeader.LocationCode + "不存在,请先建立!"); } //容器 if (_unitWork.IsExist <Container>(u => u.Code == materialDistributeTaskHeader.ContainerCode)) { container = _unitWork.Find <Container>(u => u.Code == materialDistributeTaskHeader.ContainerCode).FirstOrDefault(); container.UpdateTime = DateTime.Now; container.UpdateBy = "AGVapi"; container.LocationCode = materialDistributeTaskHeader.LocationCode; container.Status = ContainerStatus.; _unitWork.Update(container); } else { throw new Exception("料框为:" + materialDistributeTaskHeader.ContainerCode + "不存在,请先建立!"); } } else if (taskNodeModel.Status == AGVTaskState.回收料框完成 || taskNodeModel.Status == AGVTaskState.取工件完成) { //更新缓存区位置存放的料框编号和状态 materialDistributeTaskHeader.Status = AGVTaskState.任务完成; if (_unitWork.IsExist <Location>(u => u.Code == materialDistributeTaskHeader.LocationCode)) { //更新缓存区位置存放的料框编号和状态 location = _unitWork.Find <Location>(u => u.Code == materialDistributeTaskHeader.LocationCode).FirstOrDefault(); location.UpdateTime = DateTime.Now; location.UpdateBy = "AGVapi"; location.ContainerCode = ""; location.Status = LocationStatus.空仓位; _unitWork.Update(location); } else { throw new Exception("缓存位置为:" + materialDistributeTaskHeader.LocationCode + "不存在,请先建立!"); } //容器 if (_unitWork.IsExist <Container>(u => u.Code == materialDistributeTaskHeader.ContainerCode)) { container = _unitWork.Find <Container>(u => u.Code == materialDistributeTaskHeader.ContainerCode).FirstOrDefault(); container.UpdateTime = DateTime.Now; container.UpdateBy = "AGVapi"; container.LocationCode = ""; container.Status = ContainerStatus.空; _unitWork.Update(container); } else { throw new Exception("料框为:" + materialDistributeTaskHeader.ContainerCode + "不存在,请先建立!"); } } else if (taskNodeModel.Status == AGVTaskState.回收料框开始 || taskNodeModel.Status == AGVTaskState.取工件开始 || taskNodeModel.Status == AGVTaskState.放料车开始) { //更新配送任务头表的小车编号和料框编号 // materialDistributeTaskHeader.Status = AGVTaskState.回收料框开始; materialDistributeTaskHeader.Status = taskNodeModel.Status; if (taskNodeModel.Status == AGVTaskState.放料车开始) { materialDistributeTaskHeader.ContainerCode = taskNodeModel.ContainerCode; } materialDistributeTaskHeader.CarNo = taskNodeModel.CarNo; //同步更新物料呼叫状态 materialCallHeader.Status = CallStatus.执行; materialCallHeader.UpdateTime = DateTime.Now; materialCallHeader.UpdateBy = "AGVapi"; _unitWork.UpdateByTracking(materialCallHeader); } else if (taskNodeModel.Status == AGVTaskState.配送开始) { //更新配送任务头表的小车编号和料框编号 materialDistributeTaskHeader.Status = AGVTaskState.配送开始; materialDistributeTaskHeader.CarNo = taskNodeModel.CarNo; materialDistributeTaskHeader.ContainerCode = taskNodeModel.ContainerCode; List <MaterialDistributeTaskDetail> materialDistributeTaskDetails = _unitWork.Find <MaterialDistributeTaskDetail>(u => u.MaterialDistributeTaskHeaderId.Equals(materialDistributeTaskHeader.Id)).ToList(); //更新配送明细 foreach (MaterialDistributeTaskDetail mdtdetail in materialDistributeTaskDetails) { mdtdetail.ContainerCode = taskNodeModel.ContainerCode; mdtdetail.UpdateTime = DateTime.Now; mdtdetail.UpdateBy = "AGVapi"; _unitWork.Update(mdtdetail); } //同步更新物料呼叫状态为完成 materialCallHeader.Status = CallStatus.执行; materialCallHeader.UpdateTime = DateTime.Now; materialCallHeader.UpdateBy = "AGVapi"; _unitWork.UpdateByTracking(materialCallHeader); foreach (MaterialCallDetail mcdetail in materialCallDetail) { //同步更新物料需求状态 List <MaterialDemand> materialDemands = _unitWork.Find <MaterialDemand>(u => u.OrderCode.Equals(mcdetail.OrderCode) && u.ProductCode == mcdetail.ProductCode).ToList(); foreach (MaterialDemand md in materialDemands) { md.Status = CallStatus.执行; md.UpdateTime = DateTime.Now; md.UpdateBy = "AGVapi"; _unitWork.UpdateByTracking(md); } } } else { materialDistributeTaskHeader.Status = taskNodeModel.Status; } materialDistributeTaskHeader.UpdateTime = DateTime.Now; materialDistributeTaskHeader.UpdateBy = "AGVapi"; _unitWork.Update(materialDistributeTaskHeader); } else { sErrorMsg += "任务号为:" + taskNodeModel.TaskNo + "任务已经结束,无法更新状态<br>"; Response.Message = sErrorMsg; } } tran.Commit(); } catch (Exception ex) { tran.Rollback(); Response.Code = 500; Response.Status = false; Response.Message = (Response.Message == "操作成功" ? "" : Response.Message) + "\r\n" + "TaskNo:" + taskNodeModel.TaskNo + "AGV反馈失败!" + ex.Message; } return(Response); } }