/// <summary>
        /// 点击datagrid checkbox时判断是否存在
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public dynamic PostCurrentProductList(dynamic data)
        {
            var    result                       = new { status = 0 };
            string ProductRate                  = data.ProductRate;
            string ContractCode                 = data.ContractCode;
            int    ProductID                    = data.ProductID;
            string PlanCode                     = data.PlanCode;
            string ProcessType                  = data.ProcessType;
            string PartCode                     = data.PartCode;
            var    PRS_Process_BOMList          = new PRS_Process_BOMService().GetModelList();
            var    PartQuantity                 = PRS_Process_BOMList.Where(a => a.PartCode == PartCode && a.ContractCode == ContractCode && a.ProductID == ProductID).FirstOrDefault().PartQuantity ?? 0;//单台数量
            var    APS_ProjectProduceDetialList = new APS_ProjectProduceDetialService().GetModelList();
            var    ProcuctList                  = APS_ProjectProduceDetialList
                                                  .Where(a =>
                                                         a.ContractCode == ContractCode &&
                                                         a.ProjectDetailID == ProductID &&
                                                         a.PartCode == PartCode &&
                                                         a.ProcessModelType == ProcessType &&
                                                         a.MonthPlanCode == PlanCode).Count();

            if (ProcuctList > 0)
            {
                result = new { status = 0 };
            }
            else
            {
                result = new { status = 1 };
            }
            return(result);
        }
예제 #2
0
        public dynamic GetPageData(string PartCode = "", string ContractCode = "", string tabName = "")
        {
            var pQuery = ParamQuery.Instance();

            if (PartCode == "")
            {
                var result = new
                {
                    tab0 = "",
                };
                return(result);
            }
            else
            {
                List <dynamic> data = new List <dynamic>();
                if (tabName == "项目生产明细计划")
                {
                    data = new APS_ProjectProduceDetialService().GetDynamicList(pQuery.AndWhere("ContractCode", ContractCode).AndWhere("PartCode", PartCode));
                }
                //else if (tabName == "工艺路线管理")
                //{
                //    data = new MES_BD_TechnologyService().GetDynamicList(pQuery.AndWhere("LineCode", lineCode));
                //}
                var result = new
                {
                    rows  = data,
                    total = data.Count
                };
                return(result);
            }
        }
예제 #3
0
        public string PostBuildPlan2(dynamic data)
        {
            List <APS_ProjectProduceDetial> list = new List <APS_ProjectProduceDetial>();

            foreach (var item in data.list)
            {
                APS_ProjectProduceDetial aps = new APS_ProjectProduceDetial();
                aps.ContractCode    = item.ContractCode;
                aps.ProjectDetailID = item.ProjectDetailID;
                aps.PartCode        = item.PartCode;
                aps.ProcessCode     = item.ProcessCode;
                aps.Quantity        = item.Quantity;
                aps.PlanType        = item.PlanType;
                aps.ProcessName     = item.ProcessName;
                aps.ProductPlanCode = item.ProductPlanCode;
                aps.IsEnable        = item.IsEnable;

                list.Add(aps);
            }

            if (data["EndPlanTime"] == "")
            {
                return("计划日期不能为空!");
            }
            string msg    = "";
            var    result = new APS_ProjectProduceDetialService().PostBuildPlan2(data["planType"].ToString(), data["ContractCode"].ToString(), data["ProjectDetailID"].ToString(), data["PartCode"].ToString(), Convert.ToDateTime(data["EndPlanTime"]), data["ProductPlanCode"].ToString(), data["DesignTaskCode"].ToString(), out msg);

            return(msg);
        }
예제 #4
0
        public dynamic Get(RequestWrapper query)
        {
            query.LoadSettingXmlString(@"
            <settings defaultOrderBy='ID'>
                <select>DISTINCT *</select>
                <from>V_APS_ProjectProduceDetial</from>
                <where defaultForAll='false' defaultCp='equal' defaultIgnoreEmpty='true'>
                    <field name='ID'         cp='In'></field>
                    <field name='ContractCode'       cp='equal'></field>
                    <field name='ProjectDetailID'        cp='equal'></field>
                    <field name='PlanType'       cp='equal'></field>
<field name='PlanedStartTime'        cp='daterange'></field>
<field name='PlanedFinishTime'       cp='daterange'></field>
                    <field name='WorkshopID'         cp='equal'></field>
                    <field name='PlanState'          cp='equal'></field>
                    <field name='MonthPlanCode'          cp='equal'></field>
                    <field name='RootPartCode'       cp='equal'></field>
                    <field name='ProcessModelType'       cp='In'></field>
                </where>
            </settings>").ToParamQuery();
            var service = new APS_ProjectProduceDetialService();
            var pQuery  = query.ToParamQuery();
            var result  = service.GetDynamicListWithPaging(pQuery);

            return(result);
        }
예제 #5
0
        public void Edit(dynamic data)
        {
            var listWrapper = RequestWrapper.Instance().LoadSettingXmlString(@"
    <settings>
        <table>
            APS_ProjectProduceDetial
        </table>
        <where>
            <field name='ID' cp='equal'></field>
        </where>
    </settings>");
            var service     = new APS_ProjectProduceDetialService();

            if (data.list.inserted.ToString() != "[]")
            {
                //APS明细表新增
                var    PlanCode    = MmsHelper.GetOrderNumber("APS_ProjectProduceDetial", "ApsCode", "SCJH", "", "");
                string PreCode     = PlanCode.Substring(0, PlanCode.Length - 3);
                int    StartNumber = Convert.ToInt32(PlanCode.Substring(PlanCode.Length - 3));
                foreach (dynamic row in data.list.inserted)
                {
                    var ApsCode = PreCode + StartNumber.ToString().PadLeft(3, '0');
                    row["ApsCode"] = ApsCode;
                    StartNumber++;
                }
            }
            var result = service.Edit(null, listWrapper, data);
        }
        //工单
        public dynamic Get(RequestWrapper query)
        {
            query.LoadSettingXmlString(@"
<settings defaultOrderBy='temp.ID'>
    <select>*</select>
    <from>(select * from V_APS_ProjectProduceDetial where ContractCode=(select ContractCode from PMS_BN_ProjectPart where PartCode='xxx')
and ProjectDetailID=(select ProjectDetailID from PMS_BN_ProjectPart where PartCode='xxx')) as temp</from>
</settings>");

            var service = new APS_ProjectProduceDetialService();
            var pQuery  = query.ToParamQuery();
            var c       = query["PartCode"].ToString().Length;

            if (c != 0)
            {
                pQuery.GetData().From = pQuery.GetData().From.Replace("xxx", query["PartCode"].ToString());
            }
            else
            {
                return(null);
            }
            var result = service.GetDynamicListWithPaging(pQuery);

            return(result);
        }
예제 #7
0
        public string PostPlanWork(dynamic data)
        {
            string msg = "";
            string ids = data["ids"].ToString();

            ids = ids.Remove(ids.Length - 1, 1);
            var result = new APS_ProjectProduceDetialService().PostPlanRelease("2", ids, out msg);

            return(msg);
        }
        public dynamic PostProductPlanList_Blanking(dynamic data)
        {
            var ContractCode = data[0].ContractCode;
            var SavantCode   = data[0].SavantCode;
            List <APS_ProjectProduceDetial> IsExistSavant = new APS_ProjectProduceDetialService().GetModelList(
                ParamQuery.Instance()
                .AndWhere("ContractCode", ContractCode).AndWhere("SavantCode", SavantCode));

            if (IsExistSavant.Count > 0)
            {
                return(new { list = new List <dynamic>(), status = 2 });//已存在该中间件的计划
            }

            //中间件表
            List <dynamic> MES_SavantList = data.ToObject <List <dynamic> >();

            //工序表
            var ProcessRouteList =
                new MES_BN_ProductProcessRouteService()
                .GetDynamicList()
                .Where(p => p.IsEnable == 1 && p.ProcessModelType == "1")
                .ToList <dynamic>();
            var ProductPlanList =
                (from a in MES_SavantList
                 join p in ProcessRouteList
                 on new { PartCode = Convert.ToString(a.PartCode), ContractCode = Convert.ToString(a.ContractCode) } equals new { PartCode = Convert.ToString(p.PartCode), ContractCode = Convert.ToString(p.ContractCode) }
                 orderby p.ProcessModelType, p.ProcessLineCode
                 select new
            {
                ContractCode = a.ContractCode,
                SavantCode = a.SavantCode,
                //a.ContractCode,
                a.ProductID,
                p.ProcessModelType,
                p.PartCode,
                p.ProcessCode,
                p.ProcessName,
                a.PartFigureCode,
                a.PartName,
                a.MaterialCode,
                Quantity = a.SpareMateNum,
                //BomQty = a.PartQuantity,
                PlanType = 1,
                p.ManHour,
                p.WorkshopID,
                p.WorkshopName,
                p.EquipmentID,
                p.EquipmentName,
                p.WorkGroupID,
                p.WorkGroupName
            }).ToList <dynamic>();

            return(new { list = ProductPlanList, status = 1 });
        }
예제 #9
0
        public string PostBuildPlan(dynamic data)
        {
            if (data["StartPlanTime"] == "")
            {
                return("计划开始日期不能为空!");
            }
            string msg    = "";
            var    result = new APS_ProjectProduceDetialService().PostBuildPlan(data["planType"].ToString(), data["ContractCode"].ToString(), data["ProjectDetailID"].ToString(), data["PartCode"].ToString(), Convert.ToDateTime(data["StartPlanTime"]), data["MonthPlanCode"].ToString(), out msg);

            return(msg);
        }
        public dynamic GetProductTreeList([FromUri] TreeNodeModel model)
        {
            var PMS_BN_ProjectDetailList     = new PMS_BN_ProjectDetailService().GetModelList();
            var PRS_Process_BOMList          = new PRS_Process_BOMService().GetModelList();
            var APS_ProjectProduceDetialList = new APS_ProjectProduceDetialService().GetModelList();

            var list = TreeNodeManage.GetTreeNodeList <dynamic>(
                TreeNodeManage.Instance()
                .SetNode(model.NodeField)
                .SetParentNode(model.ParentNodeField, model.ParentNodeValue)
                .SetTableName(model.TableName)
                .SetNodeLevel(model.IsLevel)
                .SetTreeSetting(model.TreeSetting)
                .SetWhereSql(model.WhereSql));

            var new_list = new List <dynamic>();

            list.ForEach(item =>
            {
                dynamic item_old = item;

                string ContractCode = item_old.ContractCode;
                int ProductID       = item_old.ProductID;
                string PartCode     = item_old.PartCode;
                var Quantity        = PMS_BN_ProjectDetailList.Where(a => a.ID == ProductID).FirstOrDefault().Quantity ?? 0;                                                                   //合同台数
                var PartQuantity    = PRS_Process_BOMList.Where(a => a.PartCode == PartCode && a.ContractCode == ContractCode && a.ProductID == ProductID).FirstOrDefault().PartQuantity ?? 0; //单台数量
                int ProductTotal    = Quantity * PartQuantity;                                                                                                                                 //生产总数=合同台数*单台数量
                //已生产数量
                //var ProcuctList = APS_ProjectProduceDetialList
                //.Where(a => a.ContractCode == ContractCode && a.ProjectDetailID == ProductID && a.PartCode == PartCode)
                //.GroupBy(a => new { a.ProcessModelType, a.MonthPlanCode })
                //.Select(a => new { ProcessType = a.Key.ProcessModelType, a.Key.MonthPlanCode, Quantity = a.Max(b => b.Quantity) });
                var ProcuctList = APS_ProjectProduceDetialList
                                  .Where(a => a.ContractCode == ContractCode && a.ProjectDetailID == ProductID && a.PartCode == PartCode)
                                  .GroupBy(a => new { a.ProcessModelType, a.ProcessCode })
                                  .Select(a => new { ProcessType = a.Key.ProcessModelType, ProcessCode = a.Key.ProcessCode, Quantity = a.Sum(b => b.Quantity) });

                int BlankingTotal   = ProcuctList.Where(a => a.ProcessType == "1").FirstOrDefault() == null ? 0 : ProcuctList.Where(a => a.ProcessType == "1").FirstOrDefault().Quantity ?? 0;
                int WeldingTotal    = ProcuctList.Where(a => a.ProcessType == "2").FirstOrDefault() == null ? 0 : ProcuctList.Where(a => a.ProcessType == "2").FirstOrDefault().Quantity ?? 0;
                int MachiningTotal  = ProcuctList.Where(a => a.ProcessType == "3").FirstOrDefault() == null ? 0 : ProcuctList.Where(a => a.ProcessType == "3").FirstOrDefault().Quantity ?? 0;
                int AssemblingTotal = ProcuctList.Where(a => a.ProcessType == "4").FirstOrDefault() == null ? 0 : ProcuctList.Where(a => a.ProcessType == "4").FirstOrDefault().Quantity ?? 0;

                item_old.BlankingTotal   = BlankingTotal.ToString() + "/" + ProductTotal.ToString();
                item_old.WeldingTotal    = WeldingTotal.ToString() + "/" + ProductTotal.ToString();
                item_old.MachiningTotal  = MachiningTotal.ToString() + "/" + ProductTotal.ToString();
                item_old.AssemblingTotal = AssemblingTotal.ToString() + "/" + ProductTotal.ToString();

                new_list.Add(item_old);
            });
            return(new_list);
        }
     public void Edit(dynamic data)
     {
         var listWrapper = RequestWrapper.Instance().LoadSettingXmlString(@"
 <settings>
     <table>
         APS_ProjectProduceDetial
     </table>
     <where>
         <field name='ID' cp='equal'></field>
     </where>
 </settings>");
         var service     = new APS_ProjectProduceDetialService();
         var result      = service.Edit(null, listWrapper, data);
     }
예제 #12
0
        public dynamic Get(RequestWrapper query)
        {
            query.LoadSettingXmlString(@"
            <settings defaultOrderBy='temp.ContractCode'>
                <select>*</select>
                <from>(SELECT distinct t1.ID, t1.ContractCode,t1.SavantCode, t1.ProjectDetailID, t1.ProductPlanMainID, t1.PartCode, t1.ProcessCode, t1.ProcessLineCode, 
                t1.WorkshopID, t1.WorkshopName, t1.EquipmentID, t1.EquipmentName, t1.WorkGroupID, t1.WorkGroupName, 
                t1.Quantity, t1.ManHour, t1.Unit, t1.EarliestStartTime, t1.LatestStartTime, t1.PlanedStartTime, t1.EarliestFinishTime, 
                t1.LatestFinishTime, t1.PlanedFinishTime, t1.ActualStartTime, t1.ActualFinishTime, t1.FloatingHour, t1.PlanColor, 
                t1.PlanState, t1.PlanType, t1.IsEnable, t1.CreatePerson, t1.CreateTime, t1.ModifyPerson, t1.ModifyTime, t1.ApproveState, 
                t1.ApprovePerson, t1.ApproveDate, t1.ApproveRemark, t1.ApsCode, t1.ProductPlanCode, t1.ProcessName, 
                t1.DesignTaskCode, t1.BomQty, t1.MainID, t2.ProductName, t2.ProductType, t2.Model, t2.Specifications, 
                t3.PartFigureCode, t4.eqpUseTime, t3.MaterialCode, P.PartName, t1.RootPartCode, t1.MonthPlanCode, 
                t1.ProcessModelType
FROM      dbo.APS_ProjectProduceDetial AS t1 LEFT OUTER JOIN
                dbo.PMS_BN_ProjectDetail AS t2 ON t1.ProjectDetailID = t2.ID LEFT OUTER JOIN
                dbo.PRS_Process_BOM AS t3 ON t1.PartCode = t3.PartCode LEFT OUTER JOIN
                    (SELECT   EquipmentID, SUM(CASE WHEN DATEDIFF(d, CONVERT(VARCHAR(10), PlanedStartTime, 121), 
                                     CONVERT(VARCHAR(10), PlanedFinishTime, 121)) > 0 THEN DATEDIFF(mi, PlanedStartTime, 
                                     (CONVERT(VARCHAR(10), PlanedStartTime, 121) + ' 17:00:00')) ELSE DATEDIFF(mi, PlanedStartTime, 
                                     PlanedFinishTime) END) AS eqpUseTime, CONVERT(VARCHAR(10), PlanedStartTime, 121) 
                                     AS PlanedStartTime
                     FROM      dbo.APS_ProjectProduceDetial
                     WHERE   (EquipmentID IS NOT NULL)
                     GROUP BY EquipmentID, CONVERT(VARCHAR(10), PlanedStartTime, 121)) AS t4 ON 
                t1.EquipmentID = t4.EquipmentID AND CONVERT(VARCHAR(10), t1.PlanedStartTime, 121) = CONVERT(VARCHAR(10), 
                t4.PlanedStartTime, 121) LEFT OUTER JOIN
                    (SELECT DISTINCT PartCode, MAX(PartName) AS PartName
                     FROM      dbo.SYS_Part
                     GROUP BY PartCode) AS P ON t1.PartCode = P.PartCode
WHERE   (t1.IsEnable = 1) AND (t3.IsEnable = 1) AND t1.ProcessModelType='1') as temp</from>
                <where defaultForAll='false' defaultCp='equal' defaultIgnoreEmpty='true'>
                    <field name='temp.ID'        cp='In'></field>
                    <field name='temp.ContractCode'          cp='equal'></field>
                    <field name='temp.SavantCode'        cp='equal'></field>
                    <field name='temp.ProjectDetailID'       cp='equal'></field>
                    <field name='temp.PlanType'          cp='equal'></field>
                    <field name='temp.WorkshopID'        cp='equal'></field>
                    <field name='temp.PlanState'         cp='equal'></field>
                    <field name='temp.MonthPlanCode'         cp='equal'></field>
                    <field name='temp.RootPartCode'          cp='equal'></field>
                    <field name='temp.ProcessModelType'          cp='In'></field>
                </where>
            </settings>").ToParamQuery();
            var service = new APS_ProjectProduceDetialService();
            var pQuery  = query.ToParamQuery();
            var result  = service.GetDynamicListWithPaging(pQuery);

            return(result);
        }
        public dynamic PostCheckIsExist(dynamic data)
        {
            //List<dynamic> MonthPlanDetailList = data.MonthPlanDetailList.ToObject<List<dynamic>>();
            var    ApsProduceAndMonthPlanList = new APS_ProduceAndMonthPlanService().GetModelList();
            var    ApsProduceList             = new APS_ProjectProduceDetialService().GetModelList();
            string PartCode = data.PartCode;
            var    list     = (from m in ApsProduceAndMonthPlanList
                               join p in ApsProduceList
                               on Convert.ToString(m.ProducePlanCode) equals Convert.ToString(p.ApsCode)
                               where p.PartCode == PartCode
                               select m.MonthPlanCode).Distinct().ToList();

            return(list);
        }
        public dynamic GetAps(RequestWrapper query)
        {
            query.LoadSettingXmlString(@"
<settings defaultOrderBy='ID'>
    <select>*</select>
    <from>V_APS_ProjectProduceDetial</from>
    <where defaultForAll='true' defaultCp='equal' defaultIgnoreEmpty='true' >
        <field name='ApsCode'		cp='equal'></field>   
    </where>
</settings>");
            var service = new APS_ProjectProduceDetialService();
            var pQuery  = query.ToParamQuery();
            var result  = service.GetDynamicListWithPaging(pQuery);

            return(result);
        }
예제 #15
0
        public void Edit(dynamic data)
        {
            string  TurnTargetCode = "", TurnTargetName = "";
            var     ApsList     = new APS_ProjectProduceDetialService().GetModelList();
            dynamic insert_list = data.list.inserted;

            if (data.list.inserted.ToString() != "[]")
            {
                var    PlanCode    = MmsHelper.GetOrderNumber("MES_WorkingTicket", "WorkTicketCode", "ZYGP", "", "");
                string PreCode     = PlanCode.Substring(0, PlanCode.Length - 3);
                int    StartNumber = Convert.ToInt32(PlanCode.Substring(PlanCode.Length - 3));
                foreach (dynamic item in data.list.inserted)
                {
                    item["ApproveState"]   = 1;
                    item["WorkTicketCode"] = PreCode + StartNumber.ToString().PadLeft(3, '0');
                    string ApsCode         = item["ApsCode"];
                    var    ApsItem         = ApsList.Where(a => a.ApsCode == ApsCode).FirstOrDefault();
                    var    TurnTargetModel = new WinFormClientService().GetTurnTarget(ApsItem.ID);
                    bool   Result          = TurnTargetModel.Result;
                    if (Result)
                    {
                        TurnTargetCode = TurnTargetModel.Data.ID;
                        TurnTargetName = TurnTargetModel.Data.Name;
                    }
                    item["TurnTargetCode"] = TurnTargetCode;
                    item["TurnTargetName"] = TurnTargetName;
                    StartNumber++;
                }
            }

            var listWrapper = RequestWrapper.Instance().LoadSettingXmlString(@"
    <settings>
        <table>
            MES_WorkingTicket
        </table>
        <where>
            <field name='ID' cp='equal'></field>
        </where>
    </settings>");
            var service     = new MES_WorkingTicketService();
            var result      = service.Edit(null, listWrapper, data);
        }
        public dynamic Get(RequestWrapper query)
        {
            query.LoadSettingXmlString(@"
    <settings defaultOrderBy='ID'>
        <select>*</select>
        <from>V_APS_ProjectProduceDetial</from>
        <where defaultForAll='false' defaultCp='equal' defaultIgnoreEmpty='true'>
                <field name='ContractCode'       cp='like'></field>
                <field name='PartFigureCode'         cp='like'></field>
                <field name='WorkshopName'       cp='like'></field>
                <field name='EquipmentName'          cp='like'></field>
                <field name='PlanedStartTime'        cp='daterange'></field>
                <field name='PlanedFinishTime'       cp='daterange'></field>
        </where>
    </settings>");
            var service = new APS_ProjectProduceDetialService();
            var pQuery  = query.ToParamQuery();
            var result  = service.GetDynamicListWithPaging(pQuery);

            return(result);
        }
예제 #17
0
        public void Edit(dynamic data)
        {
            var listWrapper = RequestWrapper.Instance().LoadSettingXmlString(@"
    <settings>
        <table>
            APS_ProjectProduceDetial
        </table>
        <where>
            <field name='ID' cp='equal'></field>
        </where>
    </settings>");
            var service     = new APS_ProjectProduceDetialService();

            if (data.list.inserted.ToString() != "[]")
            {
                //APS明细表新增
                var    PlanCode    = MmsHelper.GetOrderNumber("APS_ProjectProduceDetial", "ApsCode", "SCJH", "", "");
                string PreCode     = PlanCode.Substring(0, PlanCode.Length - 3);
                int    StartNumber = Convert.ToInt32(PlanCode.Substring(PlanCode.Length - 3));
                foreach (dynamic row in data.list.inserted)
                {
                    var ApsCode = PreCode + StartNumber.ToString().PadLeft(3, '0');
                    row["ApsCode"] = ApsCode;
                    string MonthPlanStr  = row.MonthPlanCode;
                    var    MonthPlanList = MonthPlanStr.Split(',');
                    for (int i = 0; i < MonthPlanList.Length; i++)
                    {
                        new APS_ProduceAndMonthPlanService().Insert(
                            ParamInsert.Instance()
                            .Insert("APS_ProduceAndMonthPlan")
                            .Column("ProducePlanCode", ApsCode)
                            .Column("MonthPlanCode", MonthPlanList[i])
                            .Column("CreateTime", DateTime.Now)
                            .Column("CreatePerson", MmsHelper.GetUserCode()));
                    }
                    StartNumber++;
                }
            }
            var result = service.Edit(null, listWrapper, data);
        }
        public ActionResult Index(string id)
        {
            WorkTicketCode = id;

            //查询工票表信息
            var WorkTicketCodeModel = new MES_WorkingTicketService().GetModelList(ParamQuery.Instance().AndWhere("WorkTicketCode", WorkTicketCode)).FirstOrDefault();
            var WorkshopCode        = WorkTicketCodeModel.WorkshopCode; //工票信息车间编码
            var WorkshopName        = WorkTicketCodeModel.WorkshopName; //工票信息车间名称
            var PartCode            = WorkTicketCodeModel.PartCode;     //工票信息零件编码
            //var WorkQuantity = WorkTicketCodeModel.WorkQuantity;//工票信息派工数量
            var ApsCode      = WorkTicketCodeModel.ApsCode;             //计划编码
            var ApproveState = WorkTicketCodeModel.ApproveState ?? 1;

            //查询计划中产品数量
            var PlanNumber = new APS_ProjectProduceDetialService().GetField <int>(
                ParamQuery.Instance()
                .Select("Quantity/BomQty")
                .From("APS_ProjectProduceDetial")
                .AndWhere("ApsCode", ApsCode));

            var MES_WorkshopBatchingList       = new MES_WorkshopBatchingService().GetModelList(ParamQuery.Instance().AndWhere("WorkshopCode", WorkshopCode).AndWhere("PartCode", PartCode).AndWhere("IsEnable", 1));
            var MES_WorkshopBatchingDetailList = new List <MES_WorkshopBatchingDetail>();

            var MES_WorkTicketMateList = new List <dynamic>();

            MES_WorkTicketMateList = new MES_WorkTicketMateService().GetDynamicList(ParamQuery.Instance().AndWhere("WorkTicketCode", WorkTicketCode));

            if (MES_WorkTicketMateList.Count == 0)
            {
                var PRS_Process_BOMList =
                    new PRS_Process_BOMService()
                    .GetModelList();

                if (MES_WorkshopBatchingList.Count > 0)
                {
                    string BatchingCodeStr = "'" + string.Join("','", MES_WorkshopBatchingList.Select(a => a.BatchingCode)) + "'";
                    MES_WorkshopBatchingDetailList = new MES_WorkshopBatchingDetailService().GetModelList(ParamQuery.Instance().AndWhere("BatchingCode", BatchingCodeStr, Cp.In));
                }
                if (MES_WorkshopBatchingDetailList.Count > 0)
                {
                    MES_WorkTicketMateList = MES_WorkshopBatchingDetailList
                                             .Join(PRS_Process_BOMList, a =>
                                                   new { PartCode = a.PartCode, ParentCode = a.ParentCode }, b => new { PartCode = b.PartCode, ParentCode = b.ParentCode }, (a, b) => new { a, b })
                                             //.Join(PRS_Process_BOMList, c => new { ParentCode = c.b.ParentCode }, d => new { ParentCode = d.PartCode }, (c, d) => { c,d })
                                             .Select(r => new
                    {
                        InventoryCode    = r.b.InventoryCode,
                        PartCode         = r.b.PartCode,
                        ParentCode       = r.b.ParentCode,
                        InventoryName    = r.a.PartName,
                        RequiredQuantity = r.a.BatchingNum,               //需求数量
                        TotalQuantity    = r.b.PartQuantity * PlanNumber, //需求总数
                        WorkTicketCode   = WorkTicketCode,
                        WorkshopCode     = WorkshopCode,
                        WorkshopName     = WorkshopName,
                        IsEnable         = 1,
                        IsCrux           = r.b.IsCrux
                    }).ToList <dynamic>();
                }
            }

            var code  = new sys_codeService();
            var model = new
            {
                dataSource = new
                {
                    MES_WorkTicketMateList = MES_WorkTicketMateList,
                    ApproveState           = ApproveState
                },
                urls = new
                {
                    query  = "/api/Mms/MES_WorkTicketMate",
                    newkey = "/api/Mms/MES_WorkTicketMate/getnewkey",
                    edit   = "/api/Mms/MES_WorkTicketMate/edit"
                },
                resx = new
                {
                    noneSelect   = "请先选择一条数据!",
                    editSuccess  = "保存成功!",
                    auditSuccess = "单据已审核!"
                },
                form = new
                {
                    WorkTicketCode = ""
                },
                defaultRow = new
                {
                },
                setting = new
                {
                    idField        = "ID",
                    postListFields = new string[] { "ID", "WorkTicketCode", "InventoryCode", "PartCode", "ParentCode", "InventoryName", "RequiredQuantity", "TotalQuantity", "WorkshopCode", "WorkshopName", "CreatePerson", "CreateTime", "IsEnable", "IsCrux" }
                }
            };

            return(View(model));
        }