yl
2023-03-07 f124194894fe28e5b67d0e2d838d5b1524f43e66
VueWebApi/Controllers/ProductionManagementController.cs
@@ -2,11 +2,13 @@
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web;
using System.Web.Http;
using System.Web.Script.Serialization;
using VueWebApi.DLL.BLL;
using VueWebApi.Models;
using VueWebApi.Tools;
@@ -15,7 +17,7 @@
{
    [RoutePrefix(prefix: "api/ProductionManagement")]
    [ControllerGroup("生产管理", "在线接口")]
    //[ChannelActionFilter]
    [ChannelActionFilter]
    public class ProductionManagementController : ApiController
    {
        //定义全局信息返回变量
@@ -85,8 +87,9 @@
            string markqty = obj["markqty"].ToString(); //下单数量
            string ordernum = obj["ordernum"].ToString(); //下单单数
            string relse_qty = obj["relse_qty"].ToString(); //已下单数量
            string saleOrderDeliveryDate = obj["saleOrderDeliveryDate"].ToString(); //交付时间
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.MarkSaveErpOrder(erporderid,erpordercode, partcode, wkshopcode, warehousecode, erpqty, markqty, ordernum, relse_qty, username);
            mes = ProductionManagementBLL.MarkSaveErpOrder(erporderid,erpordercode, partcode, wkshopcode, warehousecode, erpqty, markqty, ordernum, relse_qty, saleOrderDeliveryDate, username);
            return TJson.toJson(mes);
        }
        #endregion
@@ -117,6 +120,8 @@
        /// </summary>
        /// <param name="mesorderstus">工单状态码</param>
        /// <param name="mesordercode">工单编号</param>
        /// <param name="sourceorder">源单单号</param>
        /// <param name="ordertype">单据类型</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">产品规格</param>
@@ -129,11 +134,38 @@
        /// <returns></returns>
        [Route(template: "MesOrderSearch")]
        [HttpGet]
        public HttpResponseMessage MesOrderSearch(string mesorderstus = null, string mesordercode = null, string partcode = null, string partname = null, string partspec = null, string creatuser = null, string createdate = null, int page = 0, int rows = 0, string prop = null, string order = null)
        public HttpResponseMessage MesOrderSearch(string mesorderstus = null, string mesordercode = null,string sourceorder=null,string ordertype=null, string partcode = null, string partname = null, string partspec = null, string creatuser = null, string createdate = null, int page = 0, int rows = 0, string prop = null, string order = null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = ProductionManagementBLL.MesOrderSearch(mesorderstus, mesordercode, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
            mes = ProductionManagementBLL.MesOrderSearch(mesorderstus, mesordercode, sourceorder, ordertype, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[MES报废补单工单查询]
        /// <summary>
        /// MES报废补单工单查询
        /// </summary>
        /// <param name="mesordercode">工单编号</param>
        /// <param name="sourceorder">源单单号</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">产品规格</param>
        /// <param name="creatuser">创建人员</param>
        /// <param name="createdate">创建时间</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "MesBadOrderSearch")]
        [HttpGet]
        public HttpResponseMessage MesBadOrderSearch(int page, int rows, string prop, string order, string mesordercode = null, string sourceorder = null, string partcode = null, string partname = null, string partspec = null, string creatuser = null, string createdate = null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = ProductionManagementBLL.MesBadOrderSearch(mesordercode, sourceorder, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
@@ -184,6 +216,38 @@
        }
        #endregion
        #region【生产管理、工单新增、编辑时,选择排程是时获取物料清单版本号】
        /// <summary>
        /// 生产管理、工单新增、编辑时,选择排程是时获取物料清单版本号
        /// </summary>
        /// <param name="partnumber">产品编码</param>
        /// <returns></returns>
        [Route(template: "JobCreationSonAddVison")]
        [HttpGet]
        public HttpResponseMessage JobCreationSonAddVison(string partnumber)
        {
            mes = ProductionManagementBLL.JobCreationSonAddVison(partnumber);
            return TJson.toJson(mes);
        }
        #endregion
        #region[工单派发选择工艺路线或选择生产车间时判断绑定条件]
        /// <summary>
        /// 工单派发选择工艺路线或选择生产车间时判断绑定条件
        /// </summary>
        /// <param name="partcode">产品编码</param>
        /// <param name="routecode">工艺路线编码</param>
        /// <param name="wkshopcode">车间编码</param>
        /// <returns></returns>
        [Route(template: "SelectRouteOrWkshop")]
        [HttpGet]
        public HttpResponseMessage SelectRouteOrWkshop(string partcode, string routecode, string wkshopcode)
        {
            mes = ProductionManagementBLL.SelectRouteOrWkshop(partcode, routecode, wkshopcode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[MES工单新增、编辑提交]
        /// <summary>
        /// MES工单新增、编辑提交
@@ -195,6 +259,8 @@
        public HttpResponseMessage AddUpdateMesOrder([FromBody] JObject obj)
        {
            string mesorderstus = obj["mesorderstus"].ToString();    //工单状态码
            string sourceorder = obj["sourceorder"].ToString();    //源单编号
            string ordertype = obj["ordertype"].ToString();       //工单类型
            string mesordercode = obj["mesordercode"].ToString(); //工单编号
            string partcode = obj["partcode"].ToString(); //产品编码
            string mesqty = obj["mesqty"].ToString(); //工单数量
@@ -203,9 +269,11 @@
            string planstartdate = obj["planstartdate"].ToString(); //计划开始时间
            string planenddate = obj["planenddate"].ToString();     //计划完成时间
            string orderlev = obj["orderlev"].ToString(); //工单等级
            string is_aps = obj["is_aps"].ToString(); //是否排产
            string bom_id = obj["bom_id"].ToString(); //物料清单id
            string opertype = obj["OperType"].ToString();  //操作类型
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.AddUpdateMesOrder(mesorderstus, mesordercode, partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype);
            mes = ProductionManagementBLL.AddUpdateMesOrder(mesorderstus, sourceorder, ordertype, mesordercode, partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype, is_aps, bom_id);
            return TJson.toJson(mes);
        }
        #endregion
@@ -214,15 +282,16 @@
        /// <summary>
        /// MES工单删除
        /// </summary>
        /// <param name="souceid">源单工单</param>
        /// <param name="wocode">工单编号</param>
        /// <param name="m_po">订单编号</param>
        /// <param name="orderqty">工单数量</param>
        /// <returns></returns>
        [Route(template: "DeleteMesOrder")]
        [HttpPost]
        public HttpResponseMessage DeleteMesOrder(string wocode, string m_po, string orderqty)
        public HttpResponseMessage DeleteMesOrder(string souceid, string wocode, string m_po, string orderqty)
        {
            mes = ProductionManagementBLL.DeleteMesOrder(wocode, m_po, orderqty);
            mes = ProductionManagementBLL.DeleteMesOrder(souceid, wocode, m_po, orderqty);
            return TJson.toJson(mes);
        }
        #endregion
@@ -238,7 +307,8 @@
        [HttpPost]
        public HttpResponseMessage ClosedMesOrder(string wocode, string m_po)
        {
            mes = ProductionManagementBLL.ClosedMesOrder(wocode, m_po);
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.ClosedMesOrder(username,wocode, m_po);
            return TJson.toJson(mes);
        }
        #endregion
@@ -298,6 +368,42 @@
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = ProductionManagementBLL.MesOrderWxStepSearch(orderstepqrcode, startNum, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[生产开报工扫码获取工单对应工序任务(不良)]
        /// <summary>
        /// 生产开报工扫码获取工单对应工序任务(不良)
        /// </summary>
        /// <param name="orderstepqrcode">扫描的二维码信息</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则(默认按照计划开工时间正序)</param>
        /// <returns></returns>
        [Route(template: "MesOrderNgStepSearch")]
        [HttpGet]
        public HttpResponseMessage MesOrderNgStepSearch(string orderstepqrcode = null, int page = 0, int rows = 0, string prop = null, string order = null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = ProductionManagementBLL.MesOrderNgStepSearch(orderstepqrcode, startNum, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[生产开报工扫码获取工单对应工序任务(不良明细)]
        /// <summary>
        /// 生产开报工扫码获取工单对应工序任务(不良明细)
        /// </summary>
        /// <param name="orderstepqrcode">扫描的二维码信息</param>
        /// <returns></returns>
        [Route(template: "MesOrderNgSubStepSearch")]
        [HttpGet]
        public HttpResponseMessage MesOrderNgSubStepSearch(string orderstepqrcode)
        {
            mes = ProductionManagementBLL.MesOrderNgSubStepSearch(orderstepqrcode);
            return TJson.toJson(mes);
        }
        #endregion
@@ -446,6 +552,7 @@
            string stepseq = obj["stepseq"].ToString(); //工序序号
            string stepcode = obj["stepcode"].ToString(); //工序编码
            string eqpcode = obj["eqpcode"].ToString(); //设备编码
            string reckway = obj["reckway"].ToString(); //计件方式(班组:group、个人:person)
            string usergroupcode = obj["usergroupcode"].ToString(); //班组编码
            string reportuser = obj["reportuser"].ToString();  //报工人员
            string taskqty = obj["taskqty"].ToString(); //任务数量
@@ -453,8 +560,9 @@
            string reportqty = obj["reportqty"].ToString(); //报工工数量
            string ngqty = obj["ngqty"].ToString(); //不良数量
            string badcode = obj["badcode"].ToString(); //不良原因编码
            string remarks = obj["remarks"].ToString(); //备注
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, username);
            mes = ProductionManagementBLL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, reckway,usergroupcode, reportuser, taskqty, startqty, reportqty, ngqty, badcode, remarks, username);
            return TJson.toJson(mes);
        }
        #endregion
@@ -503,8 +611,25 @@
            string sqty = obj["sqty"].ToString(); //收料数量
            string ngqty = obj["ngqty"].ToString(); //不良数量
            string badcode = obj["badcode"].ToString(); //不良原因编码
            string remarks = obj["remarks"].ToString(); //备注
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, username);
            mes = ProductionManagementBLL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inuser, taskqty, sqty, ngqty, badcode, remarks, username);
            return TJson.toJson(mes);
        }
        #endregion
        #region[不良处理,提交]
        /// <summary>
        /// 不良处理,提交
        /// </summary>
        /// <param name="username">处理人员编码</param>
        /// <param name="json">提交数据</param>
        /// <returns></returns>
        [Route(template: "EditOrderNgStepSeave")]
        [HttpPost]
        public HttpResponseMessage EditOrderNgStepSeave(string username, ReportDefectHandle json)
        {
            mes = ProductionManagementBLL.EditOrderNgStepSeave(json, username);
            return TJson.toJson(mes);
        }
        #endregion
@@ -571,13 +696,318 @@
            string checktypecode = obj["checktypecode"].ToString(); //检验类型编码
            string checkresult = obj["checkresult"].ToString(); //检验结果
            string checkdescr = obj["checkdescr"].ToString(); //检验描述
            string checkqty = obj["checkqty"].ToString(); //检验数量
            string data = obj["data"].ToString();
            List<StepCheck> json = Newtonsoft.Json.JsonConvert.DeserializeObject<List<StepCheck>>(data);
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.SaveMesOrderStepCheckItem(mesordercode, partcode, stepcode, checkstanedcode, checkusercode, checktypecode, checkresult, checkdescr, username,json);
            mes = ProductionManagementBLL.SaveMesOrderStepCheckItem(mesordercode, partcode, stepcode, checkstanedcode, checkusercode, checktypecode, checkresult, checkdescr, checkqty, username,json);
            return TJson.toJson(mes);
        }
        #endregion
        #region[MES工单批量关闭查询]
        /// <summary>
        /// MES工单查询
        /// </summary>
        /// <param name="mesorderstus">工单状态码</param>
        /// <param name="mesordercode">工单编号</param>
        /// <param name="sourceorder">源单单号</param>
        /// <param name="ordertype">单据类型</param>
        /// <param name="partcode">产品编码</param>
        /// <param name="partname">产品名称</param>
        /// <param name="partspec">产品规格</param>
        /// <param name="creatuser">创建人员</param>
        /// <param name="createdate">创建时间</param>
        /// <param name="page">页码</param>
        /// <param name="rows">每页显示条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <returns></returns>
        [Route(template: "MesOrderBitchClosedSearch")]
        [HttpGet]
        public HttpResponseMessage MesOrderBitchClosedSearch(string mesorderstus = null, string mesordercode = null, string sourceorder = null, string ordertype = null, string partcode = null, string partname = null, string partspec = null, string creatuser = null, string createdate = null, int page = 0, int rows = 0, string prop = null, string order = null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = ProductionManagementBLL.MesOrderBitchClosedSearch(mesorderstus, mesordercode, sourceorder, ordertype, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[MES工单批量关闭提交]
        /// <summary>
        /// MES工单批量关闭提交
        /// </summary>
        /// <param name="dt">工单号数组对象</param>
        /// <returns></returns>
        [Route(template: "MesOrderBitchClosedSeave")]
        [HttpPost]
        public HttpResponseMessage MesOrderBitchClosedSeave(DataTable dt)
        {
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.MesOrderBitchClosedSeave(username, dt);
            return TJson.toJson(mes);
        }
        #endregion
        #region[MES工单批量反关闭]
        /// <summary>
        /// MES工单批量反关闭
        /// </summary>
        /// <param name="dt">工单号数组对象</param>
        /// <returns></returns>
        [Route(template: "MesOrderBitchAntiClosedSeave")]
        [HttpPost]
        public HttpResponseMessage MesOrderBitchAntiClosedSeave(DataTable dt)
        {
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.MesOrderBitchAntiClosedSeave(username, dt);
            return TJson.toJson(mes);
        }
        #endregion
        #region[产能规划方案设置查询]
        /// <summary>
        /// 产能规划方案设置查询
        /// </summary>
        /// <returns></returns>
        [Route(template: "CapacityPlanningSetupSearch")]
        [HttpGet]
        public HttpResponseMessage CapacityPlanningSetupSearch()
        {
            mes = ProductionManagementBLL.CapacityPlanningSetupSearch();
            return TJson.toJson(mes);
        }
        #endregion
        #region[产能规划方案设置新增]
        /// <summary>
        /// 产能规划方案设置新增
        /// </summary>
        /// <param name="obj">提交数据</param>
        /// <returns></returns>
        [Route(template: "CapacityPlanningSetupAddUpdate")]
        [HttpPost]
        public HttpResponseMessage CapacityPlanningSetupAddUpdate([FromBody] JObject obj)
        {
            string capacitylist = obj["capacitylist"].ToString(); //提交数据
            string username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            JavaScriptSerializer Serializer = new JavaScriptSerializer();
            List<CapacityPlanningSetup> objs = Serializer.Deserialize<List<CapacityPlanningSetup>>(capacitylist);
            mes = ProductionManagementBLL.CapacityPlanningSetupAddUpdate(username, objs);
            return TJson.toJson(mes);
        }
        #endregion
        #region[产能规划方案设置删除]
        /// <summary>
        /// 产能规划方案设置删除
        /// </summary>
        /// <param name="CapSetupCode">方案编码</param>
        /// <returns></returns>
        [Route(template: "CapacityPlanningSetupDelete")]
        [HttpPost]
        public HttpResponseMessage CapacityPlanningSetupDelete(string capsetupcode)
        {
            string username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.CapacityPlanningSetupDelete(username, capsetupcode);
            return TJson.toJson(mes);
        }
        #endregion
        #region[产能规划查询]
        /// <summary>
        /// 产能规划查询
        /// </summary>
        /// <param name="page">页码</param>
        /// <param name="rows">页数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <param name="workshop">车间编码</param>
        /// <param name="devicetype">生产单元</param>
        /// <param name="stustype">有效状态</param>
        /// <returns></returns>
        [Route(template: "CapacityPlanningSearch")]
        [HttpGet]
        public HttpResponseMessage CapacityPlanningSearch(int page, int rows, string prop, string order,string workshop = null, string devicetype = null, string stustype = null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = ProductionManagementBLL.CapacityPlanningSearch(workshop, devicetype, stustype, startNum, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[产能规划默认方案保存提交]
        /// <summary>
        /// 产能规划默认方案保存提交
        /// </summary>
        /// <param name="captplanid">产能规划(生产资源)id</param>
        /// <param name="wkshopcode">车间编码</param>
        /// <param name="capunitcode">生产单元编码</param>
        /// <param name="capsetupcode">默认方案编码</param>
        /// <param name="captplantype">资源类型</param>
        /// <returns></returns>
        [Route(template: "CapacityPlanSubmit")]
        [HttpPost]
        public HttpResponseMessage CapacityPlanSubmit(string wkshopcode, string capunitcode,string captplanid=null,string capsetupcode=null,string captplantype=null)
        {
            string type = ""; //提交类型
            if (captplanid == "" || captplanid == null)
            {
                type = "Add";
            }
            else
            {
                type = "Update";
            }
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.CapacityPlanSubmit(type,captplanid,wkshopcode,capunitcode,capsetupcode, captplantype,username);
            return TJson.toJson(mes);
        }
        #endregion
        #region[产能规划点击日历组件查找已关联的日期方案]
        /// <summary>
        /// 产能规划点击日历组件查找已关联的日期方案
        /// </summary>
        /// <param name="captplanid">产能规划(生产资源)id</param>
        /// <returns></returns>
        [Route(template: "CapacityPlanningCalendar")]
        [HttpGet]
        public HttpResponseMessage CapacityPlanningCalendar(string captplanid)
        {
            mes = ProductionManagementBLL.CapacityPlanningCalendar(captplanid);
            return TJson.toJson(mes);
        }
        #endregion
        #region[产能规划日历双击时带出对应的方案]
        /// <summary>
        /// 产能规划日历双击时带出对应的方案
        /// </summary>
        /// <param name="captplanid">产能规划(生产资源)id</param>
        /// <param name="datetime">双击选中的日期</param>
        /// <returns></returns>
        [Route(template: "CapacityPlanningOnclickSelect")]
        [HttpGet]
        public HttpResponseMessage CapacityPlanningOnclickSelect(string captplanid,string datetime)
        {
            mes = ProductionManagementBLL.CapacityPlanningOnclickSelect(captplanid, datetime);
            return TJson.toJson(mes);
        }
        #endregion
        #region[产能规划工作日历选择提交]
        /// <summary>
        /// 产能规划工作日历选择提交
        /// </summary>
        /// <returns></returns>
        [Route(template: "CapacityPlanningGivePlanSubmit")]
        [HttpPost]
        public HttpResponseMessage CapacityPlanningGivePlanSubmit()
        {
            string wkshopcode = HttpContext.Current.Request["wkshopcode"].ToString();//车间编码
            string capunitcode = HttpContext.Current.Request["capunitcode"].ToString();//生产单元编码
            string captplanid = HttpContext.Current.Request["captplanid"].ToString(); //产能规划(生产资源)列表id
            string capsetupcode = HttpContext.Current.Request["capsetupcode"].ToString(); //默认方案编码
            string captplantype = HttpContext.Current.Request["captplantype"].ToString(); //资源类型
            string worklist = HttpContext.Current.Request["worklist"].ToString();  //工作日历数据集
            JavaScriptSerializer Serializer = new JavaScriptSerializer();
            List<CapaPlan> objs = Serializer.Deserialize<List<CapaPlan>>(worklist);
            string type = ""; //提交类型
            if (captplanid == "" || captplanid == null)
            {
                type = "Add";
            }
            else
            {
                type = "Update";
            }
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            mes = ProductionManagementBLL.CapacityPlanningGivePlanSubmit(captplanid, wkshopcode, capunitcode, capsetupcode, captplantype, objs,type, username);
            return TJson.toJson(mes);
        }
        #endregion
        #region[自动排程工单查询]
        /// <summary>
        /// 自动排程工单查询
        /// </summary>
        /// <param name="page">页码</param>
        /// <param name="rows">每页条数</param>
        /// <param name="prop">排序字段</param>
        /// <param name="order">排序规则</param>
        /// <param name="workshop">车间编码</param>
        /// <param name="wocode">生产工单号</param>
        /// <param name="partcode">物料编码</param>
        /// <param name="partname">物料名称</param>
        /// <returns></returns>
        [Route(template: "AdvancedSchedulingSearch")]
        [HttpGet]
        public HttpResponseMessage AdvancedSchedulingSearch(int page, int rows, string prop, string order, string workshop = null, string wocode = null, string partcode = null,string partname=null)
        {
            int startNum = rows * (page - 1) + 1;  //起始记录rowNum
            int endNum = rows * page;   //结束记录 rowNum
            mes = ProductionManagementBLL.AdvancedSchedulingSearch(workshop, wocode, partcode, partname, startNum, endNum, prop, order);
            return TJson.toJson(mes);
        }
        #endregion
        #region[高级排程点击工单任务带出瓶颈工序设备、已排程任务数据]
        /// <summary>
        /// 高级排程点击工单任务带出瓶颈工序设备、已排程任务数据
        /// </summary>
        /// <param name="wocode">工单编号</param>
        /// <param name="wkshpcode">车间编码</param>
        /// <param name="partcode">物料编码</param>
        /// <param name="botproccode">瓶颈工序编码(首道工序)</param>
        /// <param name="startdate">开始日期</param>
        /// <param name="enddate">结束日期</param>
        /// <returns></returns>
        [Route(template: "OnclickAdvancedSchedulingDevice")]
        [HttpGet]
        public HttpResponseMessage OnclickAdvancedSchedulingDevice(string wocode,string wkshpcode,string partcode,string botproccode,string startdate,string enddate)
        {
            List<AdvancedSchedulingDevice> list = new List<AdvancedSchedulingDevice>();
            List<AdvancedSchedAlready> list1 = new List<AdvancedSchedAlready>();
            list = ProductionManagementBLL.OnclickAdvancedSchedulingDevice(wocode, wkshpcode, partcode, startdate, enddate, ref mes); //排产设备信息
            DataTable dt = ProductionManagementBLL.AlreadyScheduling(wocode, wkshpcode, partcode, botproccode, startdate, enddate);   //设备已排程信息
            Dictionary<object, object> dList = new Dictionary<object, object>();
            dList.Add("rus", mes);
            dList.Add("rows", list);
            dList.Add("Cont", dt);
            return TJson.toJson(dList);
        }
        #endregion
        #region[排程数据提交]
        /// <summary>
        /// 排程数据提交
        /// </summary>
        /// <returns></returns>
        [Route(template: "SubmitAlreadyScheduling")]
        [HttpPost]
        public HttpResponseMessage SubmitAlreadyScheduling()
        {
            var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员
            string wocode = HttpContext.Current.Request["wocode"].ToString();//工单编号
            string botprocecode = HttpContext.Current.Request["botprocecode"].ToString(); //瓶颈工序编码
            string json = HttpContext.Current.Request["json"].ToString(); //排程提交数据
            JavaScriptSerializer Serializer = new JavaScriptSerializer();
            List<AlreadyScheduling> objs = Serializer.Deserialize<List<AlreadyScheduling>>(json);
            mes = ProductionManagementBLL.SubmitAlreadyScheduling(username, wocode, botprocecode, objs);
            return TJson.toJson(mes);
        }
        #endregion
    }
}