分支自 SuZhouGuanHong/TaiYuanTaiZhong

dengjunjie
2024-04-27 0b5ccdca6263cf7a2cee460f30c76ef1efea2811
´úÂë¹ÜÀí/WMS/WMS_Server/WIDESEA_WMS/ToMes/OutsourceInbound.cs
@@ -6,6 +6,7 @@
using WIDESEA_Comm.LogInfo;
using WIDESEA_Comm.MES_Info;
using WIDESEA_Comm.MES_Info.Request;
using WIDESEA_Comm.TaskNo;
using WIDESEA_Common;
using WIDESEA_Core.EFDbContext;
using WIDESEA_Core.ManageUser;
@@ -22,7 +23,7 @@
    public partial class ToMesServer
    {
        /// <summary>
        /// å¤–协入库(检测上料)
        /// å¤–协出库(检测上料)
        /// </summary>
        /// <param name="saveModel"></param>
        /// <returns></returns>
@@ -32,36 +33,110 @@
            try
            {
                string stationNo = saveModel.MainData["stationNo"].ToString();  //缓存架编号
                if (string.IsNullOrEmpty(stationNo)) return content.Error("请选择下料口!");
                string user = saveModel.MainData["creator"].ToString();
                string sn = saveModel.MainData["dataSN"].ToString();   //车轮SN号
                int i = 1;  //车轮数量
                foreach (var item in sn.Split(","))
                #region åˆ¤æ–­SN号长度、是否存在相同SN号
                bool strOK = false;
                bool SNOK = false;
                for (int i = 1; i < sn.Split(",").Length; i++)
                {
                    if(item!= null)
                    for (int j = 0; j < i; j++)
                    {
                        var info = freeDB.Select<VV_MES_Info>().Where(x => x.SN == item).First();
                        if (info == null)
                        {
                            return content.Error($"第{i}个车轮无检测上料工单信息,请核查工单后在扫描!");
                        }
                        i++;
                        if (sn.Split(",")[j] == sn.Split(",")[i])
                            strOK = true;
                        if (sn.Split(",")[j].Length != 10)
                            SNOK = true;
                    }
                }
                if (strOK)
                    return content.Error("存在相同SN号的车轮信息!请重新扫描!");
                if (SNOK)
                    return content.Error("车轮SN号有误!请重新扫描!");
                #endregion
                dt_agvtask agvtask = new dt_agvtask
                //dt_mes_detail info = null;
                //dt_mes_head mes_head = null;
                VV_Mes_Workinfo mes_Work = null;
                int count = 0;  //车轮数量
                string bindSN = "";
                List<string> list = new List<string>();
                foreach (var SN in sn.Split(","))
                {
                    agv_barcode = stationNo,
                    agv_code = user,
                    if (!string.IsNullOrEmpty(SN))
                        list.Add(SN);
                }
                foreach (var item in list)
                {
                    if (item != null)
                    {
                        count++;
                        bindSN += bindSN == "" ? item : "," + item;
                         mes_Work = freeDB.Select<VV_Mes_Workinfo>().Where(x => x.SN == item && x.processCode == "28").First();
                        if (mes_Work == null)
                            return content.Error($"第{count}个车轮无检测上料工单信息,请核查工单后在扫描!");
                        //info = freeDB.Select<dt_mes_detail>().Where(x => x.SN == item).First();
                        //if (info == null)
                        //    return content.Error($"第{count}个车轮无检测上料工单详情,请核查工单后在扫描!");
                        //mes_head = freeDB.Select<dt_mes_head>().Where(x => x.jobID == info.jobID && x.processCode == "28").First();
                        //if (mes_head == null)
                        //    return content.Error($"第{count}个车轮无检测上料工单信息,请核查工单后在扫描!");
                    }
                }
                VOLContext Context = new VOLContext();
                Idt_stationinfoRepository stationinfoRepository = new dt_stationinfoRepository(Context);
                var station = freeDB.Select<dt_stationinfo>().Where(x => x.stationCode == stationNo).First();
                if (freeDB.Select<dt_agvtask>().Where(x => x.agv_fromaddress == station.stationCode).Any())
                    return content.Error($"下料口{stationNo}存在AGV任务,请核实!");
                if (!station.enable)
                    return content.Error($"下料口{stationNo}被禁用,请核实!");
                station.quantity = count;
                station.bindSN = bindSN;
                station.stationType = mes_Work.drawingNo;
                station.location_state = "Stroge";
                station.Number = mes_Work.jobID;
                if (mes_Work.heatID != null)
                    station.heatNumber = mes_Work.heatID;
                station.tray_status = "StrogeTray";
                stationinfoRepository.Update(station, true);
                #region MyRegion
                //dt_agvtask agvtask = new dt_agvtask
                //{
                //    //agv_barcode = stationNo,
                //    //agv_code = user,
                //    agv_createtime = DateTime.Now,
                //    agv_fromaddress = stationNo,
                //    agv_qty = i,
                //    agv_grade = 1,
                //    agv_tasktype = AGVTaskTypeEnum.TaskType_Inbound.ToString(),
                //    agv_taskstate = AGVTaskStateEnum.Create.ToString(),
                //    agv_toaddress = "",
                //};
                #endregion
                dt_agvtask agvtask = new dt_agvtask()
                {
                    agv_fromaddress = station.stationCode,
                    agv_id = Guid.NewGuid(),
                    agv_tasknum = IdenxManager.GetTaskNo("KH-", "WMS"),
                    agv_grade = 3,
                    agv_createtime = DateTime.Now,
                    agv_fromaddress = stationNo,
                    agv_qty = i,
                    agv_grade = 1,
                    agv_tasktype = AGVTaskTypeEnum.TaskType_Inbound.ToString(),
                    agv_taskstate = AGVTaskStateEnum.Create.ToString(),
                    agv_taskstate = "Queue",
                    agv_materielid = station.stationType,
                    agv_qty = station.quantity,
                    agv_tasktype = "TaskType_OutsourceOutbound",
                    agv_toaddress = "",
                    agv_userid = user,//"系统",
                    jobID = mes_Work.jobID,
                    bindSN = station.bindSN,
                    agv_worktype = Convert.ToInt32(mes_Work.processCode),
                    agv_materbarcode = mes_Work.materialCode,
                    agv_Traytype = station.tray_type,
                    agv_TrayStatus = station.tray_status
                };
                freeDB.Add(agvtask);
                return content.OK();