using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; using System.Security.Policy; using System.Text; using System.Threading; using WIDESEA_Common; using WIDESEA_Common.LoctionEnum; using WIDESEA_Common.Tools; using WIDESEA_Core.EFDbContext; using WIDESEA_Core.Utilities; using WIDESEA_Entity.DomainModels; using WIDESEA_Entity.DomainModels.CacheTask; using WIDESEA_Entity.DomainModels.CacheTask.WIDESEA_Entity.DomainModels; using WIDESEA_Entity.materielinfo; using WIDESEA_Services.IRepositories; using WIDESEA_Services.Repositories; namespace WIDESEA_Services.Services { public class PdaWorkService { /// /// pda入库 /// public static WebResponseContent Warehousing(SaveModel saveModel) { #region MyRegion WebResponseContent content = new WebResponseContent(); VOLContext Context = new VOLContext(); Ibase_pda_locationRepository pdaloctionRepository = new base_pda_locationRepository(Context); Idt_containerRepository containerRepository = new dt_containerRepository(Context); IVV_ContainerInfoRepository VV_ContainerInfoRepository = new VV_ContainerInfoRepository(Context); Idt_materielinfoRepository materielinfoRepository = new dt_materielinfoRepository(Context); Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); Ibase_routing_tableRepository routingRepository = new base_routing_tableRepository(Context); Ibase_ware_locationRepository ibase_Ware_Location = new base_ware_locationRepository(Context); try { //File.ReadAllText(Environment.CurrentDirectory); 表示获取当前 var hcgnmmjsondata = File.ReadAllText(Directory.GetCurrentDirectory() + @"/Database/HcgNumdata.json"); List HCGNUM = JsonConvert.DeserializeObject>(hcgnmmjsondata); string csn = saveModel.MainData["csn"].ToString(); HCGNumeData NUMJSON = HCGNUM.Where(d => d.num == csn).FirstOrDefault(); if (NUMJSON == null) { return content.Error($"缓存柜编号中不存在:{csn},无法入库,请检查"); } VV_ContainerInfo containerInfo = VV_ContainerInfoRepository.FindFirst(d => d.container_sn == saveModel.MainData["csn"].ToString()); if (containerInfo != null) { return content.Error($"当前缓存柜:{containerInfo.container_sn},已入库在货位地标:{containerInfo.L_Code}"); } VV_ContainerInfo containerInfo2 = VV_ContainerInfoRepository.FindFirst(d => d.L_Code == saveModel.MainData["cnum"].ToString()); if (containerInfo2 != null) { return content.Error($"当前货位地标:{containerInfo2.L_Code},已被缓存柜:{containerInfo2.container_sn} 占用"); } string code = saveModel.MainData["cnum"].ToString(); base_pda_location pda_Location = pdaloctionRepository.FindFirst(d => d.L_Code == code); if (pda_Location != null) { if (pda_Location.L_Type != "1F-QJHCG") { if (pda_Location.L_state == LoctionStateEnum.LocationState_Empty.ToString()) { if (pda_Location.L_Task == 1) { return content.Error($"当前货位地标:{saveModel.MainData["cnum"].ToString()},已存在任务,请检查"); } dt_materielinfo materielinfo = materielinfoRepository.FindFirst(d => d.materiel_id == saveModel.MainData["ctype"].ToString()); if (materielinfo != null) { dt_container dt_Container = new dt_container() { container_id = Guid.NewGuid(), container_sn = saveModel.MainData["csn"].ToString(), container_barcode = saveModel.MainData["cnum"].ToString(), container_materielid = saveModel.MainData["ctype"].ToString(), container_state = saveModel.MainData["cstate"].ToString(), container_creator = "WCS", container_createtime = DateTime.Now }; containerRepository.Add(dt_Container, true); pda_Location.L_state = LoctionStateEnum.LocationState_Stored.ToString(); ibase_Ware_Location.Update(pda_Location, true); return content.OK($"缓存柜【{saveModel.MainData["csn"]}】入库完成"); } } else { return content.Error($"当前货位地标:{pda_Location.L_Code},货位状态不是空货位,无法入库,请检查"); } } else { //扫描的货位地标编号异常,不是二楼辅材的货位地标,无法入库 return content.Error($"当前货位地标:{pda_Location.L_Code},不是二楼辅材库货位,无法入库"); } } else { return content.Error($"系统未找到pda扫码的货位地标:{saveModel.MainData["cnum"]},请检查"); } return content; } catch (Exception ex) { return content.Error(ex.Message); } #endregion } /// /// 回流呼叫 /// /// /// public static WebResponseContent RefluxCall(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); VOLContext Context = new VOLContext(); Ibase_pda_locationRepository pdaloctionRepository = new base_pda_locationRepository(Context); Idt_containerRepository containerRepository = new dt_containerRepository(Context); IVV_ContainerInfoRepository VV_ContainerInfoRepository = new VV_ContainerInfoRepository(Context); Idt_materielinfoRepository materielinfoRepository = new dt_materielinfoRepository(Context); Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); Ibase_routing_tableRepository routingRepository = new base_routing_tableRepository(Context); Ibase_ware_locationRepository ibase_Ware_Location = new base_ware_locationRepository(Context); try { //Console.WriteLine(AppContext.BaseDirectory); var hcgnmmjsondata = File.ReadAllText(AppContext.BaseDirectory + "/Database/HcgNumdata.json", Encoding.UTF8); // var hcgnmmjsondata = File.ReadAllText(Directory.GetCurrentDirectory() + @"/Database/HcgNumdata.json"); List HCGNUM = JsonConvert.DeserializeObject>(hcgnmmjsondata); string csn = saveModel.MainData["csn"].ToString(); HCGNumeData NUMJSON = HCGNUM.Where(d => d.num == csn).FirstOrDefault(); if (NUMJSON == null) { return content.Error($"缓存柜编号中不存在:{csn},无法回流,请检查"); } VV_ContainerInfo containerInfo = VV_ContainerInfoRepository.FindFirst(d => d.L_Code == csn); if (containerInfo != null) { return content.Error($"当前缓存柜:{csn},存在库存,请检查"); } base_pda_location pda_Location = pdaloctionRepository.FindFirst(d => d.L_Code == saveModel.MainData["cnum"].ToString()); if (pda_Location != null) { string QJHCG = "1F-QJHCG"; string RKFCHCG = "1F-RKFCHCG"; if (pda_Location.L_Type == QJHCG || pda_Location.L_Type == RKFCHCG) //if (pda_Location.L_Type == "1F-GMHCG1" || pda_Location.L_Type == "1F-QJHCG2" || pda_Location.L_Type == "1F-GMHCG3") { if (pda_Location.L_state == LoctionStateEnum.LocationState_Stored.ToString()) { if (pda_Location.L_Task == 2) { dt_agvtask agvtaskfind = agvRepository.FindFirst(d => d.agv_fromaddress == saveModel.MainData["cnum"].ToString() || d.agv_toaddress == saveModel.MainData["cnum"].ToString()); if (agvtaskfind != null) { return content.Error($"当前货位地标:{pda_Location.L_Code},已存在任务,请检查"); } base_pda_location pda_Location2 = pdaloctionRepository.FindFirst(d => d.L_state == LoctionStateEnum.LocationState_Empty.ToString() && d.L_Type == "2F-FLKHCG" && d.L_Status == 1 && d.L_Task == 2); if (pda_Location2 == null) { return content.Error($"二楼库房空柜区没有空位了,无法回流,请检查"); } //生成空箱回流任务 dt_agvtask agvtask = new dt_agvtask() { agv_id = Guid.NewGuid(), agv_tasknum = "KH-" + IdenxManager.GetTaskNo(), agv_fromaddress = pda_Location.L_Code,//以设备未起点 agv_toaddress = pda_Location2.L_Code, agv_code = "组装AGV调度", agv_remark = "PDA回流任务", agv_taskstate = AGVTaskStateEnum.Create.ToString(), agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(), agv_worktype = 1,//工作类型 agv_materielid = "", agv_qty = 1, agv_createtime = DateTime.Now, agv_grade = 0,//任务优先级 agv_userid = "WCS", agv_barcode = csn, }; agvRepository.Add(agvtask, true); pda_Location2.L_Task = 1; ibase_Ware_Location.Update(pda_Location2, true); pda_Location.L_Task = 1; ibase_Ware_Location.Update(pda_Location, true); return content.OK($"回流成功"); } else { return content.Error($"当前货位地标:{pda_Location.L_Code},货位存在任务:{pda_Location.L_Task},无法叫料,请检查"); } } else { return content.Error($"当前货位地标:{pda_Location.L_Code},货位状态不是有货位,无法回流,请检查"); } } else { //扫描的货位地标编号异常,不是二楼辅材的货位地标,无法入库 return content.Error($"当前货位地标:{pda_Location.L_Code},不是切卷机缓存柜货位,无法回流"); } } else { return content.Error($"系统未找到pda扫码的货位地标:{saveModel.MainData["cnum"]},请检查"); } return content; } catch (Exception ex) { return content.Error(ex.Message); } } /// /// 产线叫料 /// /// /// public static WebResponseContent ProductCall(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); VOLContext Context = new VOLContext(); Ibase_pda_locationRepository pdaloctionRepository = new base_pda_locationRepository(Context); Idt_containerRepository containerRepository = new dt_containerRepository(Context); IVV_ContainerInfoRepository VV_ContainerInfoRepository = new VV_ContainerInfoRepository(Context); Idt_materielinfoRepository materielinfoRepository = new dt_materielinfoRepository(Context); Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); Ibase_ware_locationRepository ibase_Ware_Location = new base_ware_locationRepository(Context); try { //产线边是否有缓存柜 VV_ContainerInfo containerInfo = VV_ContainerInfoRepository.FindFirst(d => d.L_Code == saveModel.MainData["cnum"].ToString()); if (containerInfo != null) { return content.Error($"当前货位地标:{containerInfo.L_Code},已被缓存柜:{containerInfo.container_sn} 占用,请检查"); } base_pda_location pda_Location = pdaloctionRepository.FindFirst(d => d.L_Code == saveModel.MainData["cnum"].ToString()); if (pda_Location != null) { string QJHCG = "1F-QJHCG"; string RKFCHCG = "1F-RKFCHCG"; if (pda_Location.L_Type == QJHCG || pda_Location.L_Type == RKFCHCG) { if (pda_Location.L_state == LoctionStateEnum.LocationState_Empty.ToString()) { if (pda_Location.L_Task == 2) { dt_materielinfo materielinfo = materielinfoRepository.FindFirst(d => d.materiel_id == saveModel.MainData["ctype"].ToString()); if (materielinfo != null) { VV_ContainerInfo containerInfo2 = VV_ContainerInfoRepository.FindFirst(d => d.materiel_id == saveModel.MainData["ctype"].ToString() && d.L_Type == saveModel.MainData["ckf"].ToString() && d.L_Task == 2 && d.L_state == LoctionStateEnum.LocationState_Stored.ToString() && d.L_Status == 1); if (containerInfo2 == null) { return content.Error($"您当前选择的库房没有库存了"); } //生成产线叫料任务 dt_agvtask agvtask = new dt_agvtask() { agv_id = Guid.NewGuid(), agv_tasknum = "KH-" + IdenxManager.GetTaskNo(), agv_fromaddress = containerInfo2.L_Code,//以设备未起点 agv_toaddress = pda_Location.L_Code, agv_code = "组装AGV调度", agv_remark = "PDA产线叫料任务", agv_taskstate = AGVTaskStateEnum.Create.ToString(), agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(), agv_worktype = 1,//工作类型 agv_materielid = materielinfo.materiel_id, agv_qty = 1, agv_createtime = DateTime.Now, agv_grade = 0,//任务优先级 agv_userid = "WCS", agv_barcode = containerInfo2.container_sn, }; agvRepository.Add(agvtask, true); base_pda_location pda_LocationTo = pdaloctionRepository.FindFirst(d => d.L_Code == containerInfo2.L_Code); if (pda_LocationTo == null) { throw new NotImplementedException(); } pda_LocationTo.L_Task = 1; ibase_Ware_Location.Update(pda_LocationTo, true); pda_Location.L_Task = 1; ibase_Ware_Location.Update(pda_Location, true); return content.OK($"叫料成功"); } else { return content.Error($"当前pda输入的物料类型:{saveModel.MainData["ctype"].ToString()},WCS后台物料管理中不存在,请检查"); } } else { return content.Error($"当前货位地标:{pda_Location.L_Code},货位存在任务:{pda_Location.L_Task},无法叫料,请检查"); } } else { return content.Error($"当前货位地标:{pda_Location.L_Code},货位状态不是空货位,无法入库,请检查"); } } else { //扫描的货位地标编号异常,不是二楼辅材的货位地标,无法入库 return content.Error($"当前货位地标:{pda_Location.L_Code},不是产线叫料地标区货位,无法产线叫料"); } } else { return content.Error($"系统未找到pda扫码的货位地标:{saveModel.MainData["cnum"]},请检查"); } } catch (Exception ex) { return content.Error(ex.Message); } } /// /// 库房叫料 /// /// /// public static WebResponseContent StoreroomCall(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); VOLContext Context = new VOLContext(); Ibase_pda_locationRepository pdaloctionRepository = new base_pda_locationRepository(Context); Idt_containerRepository containerRepository = new dt_containerRepository(Context); IVV_ContainerInfoRepository VV_ContainerInfoRepository = new VV_ContainerInfoRepository(Context); Idt_materielinfoRepository materielinfoRepository = new dt_materielinfoRepository(Context); Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); try { string cnum = saveModel.MainData["cnum"].ToString();//货物二维码(货位编号) VV_ContainerInfo containerInfo = VV_ContainerInfoRepository.FindFirst(d => d.L_Code == saveModel.MainData["cnum"].ToString()); if (containerInfo != null) { return content.Error($"当前货位地标:{containerInfo.L_Code},已被缓存柜:{containerInfo.container_sn} 占用,请检查"); } base_pda_location pda_Location = pdaloctionRepository.FindFirst(d => d.L_Code == saveModel.MainData["cnum"].ToString()); if (pda_Location != null) { if (pda_Location.L_Type == "1F-GMHCG1" || pda_Location.L_Type == "1F-GMHCG2" || pda_Location.L_Type == "1F-GMHCG3") { if (pda_Location.L_state == LoctionStateEnum.LocationState_Empty.ToString()) { if (pda_Location.L_Task == 2) { dt_agvtask agvtaskfind = agvRepository.FindFirst(d => d.agv_fromaddress == saveModel.MainData["cnum"].ToString() || d.agv_toaddress == saveModel.MainData["cnum"].ToString()); if (agvtaskfind != null) { return content.Error($"当前货位地标:{containerInfo.L_Code},已存在任务,请检查"); } dt_materielinfo materielinfo = materielinfoRepository.FindFirst(d => d.materiel_id == saveModel.MainData["ctype"].ToString()); if (materielinfo != null) { VV_ContainerInfo containerInfo2 = VV_ContainerInfoRepository.FindFirst(d => d.materiel_id == saveModel.MainData["ctype"].ToString() && d.L_Type == "2F-FLHCG" && d.L_Task == 2 && d.L_state == LoctionStateEnum.LocationState_Stored.ToString() && d.L_Status == 1); if (containerInfo2 == null) { return content.Error($"二楼库房没有库存了"); } //生成库房叫料任务 dt_agvtask agvtask = new dt_agvtask() { agv_id = Guid.NewGuid(), agv_tasknum = "KH-" + IdenxManager.GetTaskNo(), agv_fromaddress = containerInfo2.L_Code,//以设备未起点 agv_toaddress = pda_Location.L_Code, agv_code = "组装AGV调度", agv_remark = "PDA库房叫料任务", agv_taskstate = AGVTaskStateEnum.Create.ToString(), agv_tasktype = AGVTaskTypeEnum.TaskType_Outbound.ToString(), agv_worktype = 1,//工作类型 agv_materielid = materielinfo.materiel_id, agv_qty = 1, agv_createtime = DateTime.Now, agv_grade = 0,//任务优先级 agv_userid = "WCS", agv_barcode = containerInfo2.container_sn, }; agvRepository.Add(agvtask, true); base_pda_location pda_LocationTo = pdaloctionRepository.FindFirst(d => d.L_Code == containerInfo2.L_Code); if (pda_LocationTo == null) { throw new NotImplementedException(); } pda_LocationTo.L_Task = 1; pdaloctionRepository.Update(pda_LocationTo, true); pda_Location.L_Task = 1; pdaloctionRepository.Update(pda_Location, true); return content.OK($"叫料完成"); } else { return content.Error($"当前pda输入的物料类型:{saveModel.MainData["ctype"].ToString()},WCS后台物料管理中不存在,请检查"); } } else { return content.Error($"当前货位地标:{pda_Location.L_Code},货位存在任务:{pda_Location.L_Task},无法叫料,请检查"); } } else { return content.Error($"当前货位地标:{pda_Location.L_Code},货位状态不是空货位,无法入库,请检查"); } } else { //扫描的货位地标编号异常,不是二楼辅材的货位地标,无法入库 return content.Error($"当前货位地标:{pda_Location.L_Code},不是二楼辅材库货位,无法入库"); } } else { return content.Error($"系统未找到pda扫码的货位地标:{saveModel.MainData["cnum"]},请检查"); } return content; } catch (Exception ex) { return content.Error(ex.Message); } } /// /// 库存解绑 /// /// /// public static WebResponseContent ReleaseStock(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); VOLContext Context = new VOLContext(); Ibase_pda_locationRepository pdaloctionRepository = new base_pda_locationRepository(Context); Idt_containerRepository containerRepository = new dt_containerRepository(Context); IVV_ContainerInfoRepository VV_ContainerInfoRepository = new VV_ContainerInfoRepository(Context); Idt_materielinfoRepository materielinfoRepository = new dt_materielinfoRepository(Context); Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); try { //var hcgnmmjsondata = File.ReadAllText(Directory.GetCurrentDirectory() + @"/Database/HcgNumdata.json"); Console.WriteLine(AppContext.BaseDirectory); string hcgnmmjsondata = File.ReadAllText(AppContext.BaseDirectory + "/Database/HcgNumdata.json", Encoding.UTF8); List HCGNUM = JsonConvert.DeserializeObject>(hcgnmmjsondata); string csn = saveModel.MainData["barcode"].ToString(); HCGNumeData NUMJSON = HCGNUM.Where(d => d.num == csn).FirstOrDefault(); if (NUMJSON == null) { return content.Error($"缓存柜编号中不存在:{csn},无法解绑,请检查"); } VV_ContainerInfo containerInfo = VV_ContainerInfoRepository.FindFirst(d => d.container_sn == saveModel.MainData["barcode"].ToString()); if (containerInfo == null) { return content.Error($"未找到缓存柜条码【{saveModel.MainData["barcode"].ToString()}】的库存,请检查"); } dt_container dt_Container = containerRepository.FindFirst(d => d.container_id == Guid.Parse(containerInfo.container_id.ToString())); if (dt_Container == null) { return content.Error($"库存查询异常"); } base_pda_location pda_Location = pdaloctionRepository.FindFirst(d => d.L_Code == containerInfo.container_barcode); if (pda_Location == null) { return content.Error($"当前库存的货位地标【{containerInfo.container_barcode}】 在PDA货位列表中不存在,数据异常,请检查"); } if (pda_Location.L_Task == 1) { return content.Error($"当前库存存在AGV任务,无法解绑,请检查"); } if (pda_Location.L_Type.Contains("2F-FL") ) { pda_Location.L_state = LoctionStateEnum.LocationState_Empty.ToString(); int a = pdaloctionRepository.Update(pda_Location,d=>new { d.L_state }, true); if (a != 1) { return content.Error($"库存货位初始化失败"); } containerRepository.Delete(dt_Container, true); } else { //pda_Location.L_state = LoctionStateEnum.LocationState_Stored.ToString(); //int a = pdaloctionRepository.Update(pda_Location, true); //if (a != 1) //{ return content.Error($"当前货位地标【{pda_Location.L_Code}】不是2F的货位,无法解绑,请检查"); //} } return content.OK($"缓存柜【{saveModel.MainData["barcode"]}】解绑成功"); } catch (Exception ex) { return content.Error(ex.Message); } } /// /// 物料档位设置 /// /// /// public static WebResponseContent Gearsetting(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); VOLContext Context = new VOLContext(); Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); Ibase_ware_locationRepository locationRepository = new base_ware_locationRepository(Context); try { base_ware_location location = locationRepository.FindFirst(d => d.upper_code == saveModel.MainData["locde"].ToString()); if (location == null) { return content.Error($"未找到【{saveModel.MainData["locde"].ToString()}】的货位,请检查"); } dt_agvtask agvtask = agvRepository.FindFirst(d => d.agv_fromaddress == location.upper_code || d.agv_toaddress == location.upper_code); if (agvtask != null) { return content.Error($"【{saveModel.MainData["locde"].ToString()}】的货位,有任务存在,无法操作此功能进行设置,请检查"); } if (string.IsNullOrEmpty(saveModel.MainData["gtype"].ToString())) { return content.Error($"客户端传入物料档位数据错误,传入值:【{saveModel.MainData["gtype"].ToString()}】,请检查"); } if (location.geartype == saveModel.MainData["gtype"].ToString()) { return content.Error($"货架:【{location.upper_code}】已是 {location.geartype}类,无需设置"); } location.geartype = saveModel.MainData["gtype"].ToString(); int up = locationRepository.Update(location, d => d.geartype, true); if (up == 1) { return content.OK($"设置成功"); } else { return content.Error($"设置失败,修改异常【{up}】"); } } catch (Exception ex) { return content.Error($"{ex.Message}"); } } /// /// pda货位编辑 /// /// /// public static WebResponseContent LoctionUpdate(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); VOLContext Context = new VOLContext(); Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); Ibase_pda_locationRepository pdaloctionRepository = new base_pda_locationRepository(Context); Idt_containerRepository containerRepository = new dt_containerRepository(Context); IVV_ContainerInfoRepository VV_ContainerInfoRepository = new VV_ContainerInfoRepository(Context); Idt_materielinfoRepository materielinfoRepository = new dt_materielinfoRepository(Context); try { dt_agvtask agvtask= agvRepository.FindFirst(d=>d.agv_toaddress== saveModel.MainData["barcode"].ToString()); if (agvtask!=null) { return content.Error($"当前货位:【{saveModel.MainData["barcode"].ToString()}】,存在AGV任务列表中,任务编号:【{agvtask.agv_tasknum}】,无法编辑,请检查"); } VV_ContainerInfo containerInfo = VV_ContainerInfoRepository.FindFirst(d => d.L_Code == saveModel.MainData["barcode"].ToString()); if (containerInfo != null) { return content.Error($"当前货位有【{saveModel.MainData["barcode"].ToString()}】的库存,无法解绑为空货位,请检查"); } base_pda_location pda_Location= pdaloctionRepository.FindFirst(d => d.L_Code == saveModel.MainData["barcode"].ToString()); if (pda_Location==null) { return content.Error($"当前PDA货位列表中不存在【{saveModel.MainData["barcode"].ToString()}】货位,请检查"); } pda_Location.L_state = LoctionStateEnum.LocationState_Empty.ToString(); pda_Location.L_Task = 2; int x= pdaloctionRepository.Update(pda_Location,true); if (x!=1) { return content.Error($"解绑空货位失败,反馈值:{x},请检查"); } else { return content.OK($"解绑空货位成功"); } } catch (Exception ex) { return content.Error($"解绑空货位失败,异常内容:{ex.Message}"); } } private static int _lock = 0; /// /// PDA货位一键解绑 /// /// /// public static WebResponseContent LoctionOneclickUpdate(SaveModel saveModel) { WebResponseContent content = new WebResponseContent(); VOLContext Context = new VOLContext(); Idt_agvtaskRepository agvRepository = new dt_agvtaskRepository(Context); Ibase_pda_locationRepository pdaloctionRepository = new base_pda_locationRepository(Context); try { List pda_Location = pdaloctionRepository.Find(d => d.L_region == saveModel.MainData["region"].ToString()); if (pda_Location.Count < 0) { return content.Error($"当前PDA货位列表中不存在【{saveModel.MainData["region"].ToString()}】区货位,请检查"); } foreach (var item in pda_Location) { dt_agvtask agvtask1 = agvRepository.FindFirst(d => d.agv_toaddress == item.L_Code); if (agvtask1 != null) { return content.Error($"当前【{saveModel.MainData["region"].ToString()}】区货位有【{item.L_Code}】存在任务,无法一键解绑,请检查"); } } pdaloctionRepository.DbContextBeginTransaction(() => { foreach (var item in pda_Location) { base_pda_location Location = pdaloctionRepository.FindFirst(d => d.L_Code == item.L_Code); if (Location == null) { return content.Error($"当前PDA货位列表中不存在【{saveModel.MainData["barcode"].ToString()}】货位,请检查"); } Location.L_state = LoctionStateEnum.LocationState_Empty.ToString(); Location.L_Task = 2; int x = pdaloctionRepository.Update(Location, true); if (x != 1) { return content.Error($"货位编辑失败,反馈值:{x},请检查"); } else { content.OK($"一键成功"); } } return content; }); return content; } catch (Exception ex) { return content.Error($"编辑失败,异常内容:{ex.Message}"); } } public class HCGNumeData { public string num { get; set; } } } }