using Newtonsoft.Json; 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; namespace VueWebApi.Controllers { [RoutePrefix(prefix: "api/ProductionManagement")] [ControllerGroup("生产管理", "在线接口")] [ChannelActionFilter] public class ProductionManagementController : ApiController { //定义全局信息返回变量 ToMessage mes = new ToMessage(); RedisHelper redis = new RedisHelper(); #region[ERP订单查询] /// /// ERP订单查询 /// /// 订单状态码 /// 订单编号 /// 销售单号 /// 产品编码 /// 产品名称 /// 产品规格 /// 预计开工时间 /// 预计完工时间 /// 创建人员 /// 页码 /// 每页显示条数 /// 排序字段 /// 排序规则 /// [Route(template: "ErpOrderSearch")] [HttpGet] public HttpResponseMessage ErpOrderSearch(string erporderstus = null, string erpordercode = null,string saleordercode=null, string partcode = null, string partname = null, string partspec = null, string paystartdate = null, string payenddate = null, string creatuser = null, int page = 0, int rows = 0, string prop = null, string order = null) { var stu_torgcode = HttpContext.Current.Request.Cookies["stu_torgcode"].Value.ToString(); //所属组织 var stu_torgtypecode = HttpContext.Current.Request.Cookies["description"].Value.ToString(); //所属组织类型 string paydatestartdate = ""; //预计开工开始时间 string paydateenddate = ""; //预计开工结束时间 string paydatestartdate1 = ""; //预计完工开始时间 string paydateenddate2 = ""; //预计完工结束时间 if (paystartdate != "" && paystartdate != null) { paydatestartdate = paystartdate.Split('~')[0].ToString(); paydateenddate = paystartdate.Split('~')[1].ToString(); } if (payenddate != "" && payenddate != null) { paydatestartdate1 = payenddate.Split('~')[0].ToString(); paydateenddate2 = payenddate.Split('~')[1].ToString(); } int startNum = rows * (page - 1) + 1; //起始记录rowNum int endNum = rows * page; //结束记录 rowNum mes = ProductionManagementBLL.ErpOrderSearch(stu_torgcode, stu_torgtypecode,erporderstus, erpordercode, saleordercode, partcode, partname, partspec, startNum, paydatestartdate, paydateenddate, paydatestartdate1, paydateenddate2, creatuser, endNum, prop, order); return TJson.toJson(mes); } #endregion #region[ERP订单下达] /// /// ERP订单下达 /// /// 提交数据 /// [Route(template: "MarkSaveErpOrder")] [HttpPost] public HttpResponseMessage MarkSaveErpOrder([FromBody] JObject obj) { string erporderid = obj["erporderid"].ToString(); //订单id string erpordercode = obj["erpordercode"].ToString(); //订单编号 string saleordercode = obj["saleordercode"].ToString(); //销售订单号 string partcode = obj["partcode"].ToString(); //产品编码 string wkshopcode = obj["wkshopcode"].ToString(); //车间编码 string warehousecode = obj["warehousecode"].ToString(); //仓库编码 string erpqty = obj["erpqty"].ToString(); //订单数量 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, saleordercode, partcode, wkshopcode, warehousecode, erpqty, markqty, ordernum, relse_qty, saleOrderDeliveryDate, username); return TJson.toJson(mes); } #endregion #region[ERP订单批量下达] /// /// ERP订单批量下达 /// /// 提交数据 /// [Route(template: "MarkBatchSaveErpOrder")] [HttpPost] public HttpResponseMessage MarkBatchSaveErpOrder(List obj) { var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员 mes = ProductionManagementBLL.MarkBatchSaveErpOrder(obj, username); return TJson.toJson(mes); } #endregion #region[ERP订单关闭] /// /// ERP订单关闭 /// /// 订单id /// 订单号 /// [Route(template: "ClosedErpOrder")] [HttpPost] public HttpResponseMessage ClosedErpOrder(string erporderid, string erpordercode) { var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员 mes = ProductionManagementBLL.ClosedErpOrder(erporderid, erpordercode, username); return TJson.toJson(mes); } #endregion #region[ERP订单删除] /// /// ERP订单删除 /// /// 订单id /// 订单号 /// [Route(template: "DeleteErpOrder")] [HttpPost] public HttpResponseMessage DeleteErpOrder(string erporderid, string erpordercode) { var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员 mes = ProductionManagementBLL.DeleteErpOrder(erporderid, erpordercode, username); return TJson.toJson(mes); } #endregion #region[MES工单查询] /// /// MES工单查询 /// /// 工单状态码 /// 工单编号 /// 源单单号 /// 销售单号 /// 单据类型 /// 产品编码 /// 产品名称 /// 产品规格 /// 创建人员 /// 创建时间 /// 页码 /// 每页显示条数 /// 排序字段 /// 排序规则 /// [Route(template: "MesOrderSearch")] [HttpGet] public HttpResponseMessage MesOrderSearch(int page, int rows, string prop, string order, string mesorderstus = null, string mesordercode = null, string sourceorder = null,string saleordercode=null, string ordertype = null, string partcode = null, string partname = null, string partspec = null, string creatuser = null, string createdate = null) { var stu_torgcode = HttpContext.Current.Request.Cookies["stu_torgcode"].Value.ToString(); //所属组织 var stu_torgtypecode = HttpContext.Current.Request.Cookies["description"].Value.ToString(); //所属组织类型 int startNum = rows * (page - 1) + 1; //起始记录rowNum int endNum = rows * page; //结束记录 rowNum mes = ProductionManagementBLL.MesOrderSearch(stu_torgcode, stu_torgtypecode,mesorderstus, mesordercode, sourceorder, saleordercode, ordertype, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order); return TJson.toJson(mes); } #endregion #region[MES报废补单工单查询] /// /// MES报废补单工单查询 /// /// 工单编号 /// 源单单号 /// 销售单号 /// 产品编码 /// 产品名称 /// 产品规格 /// 创建人员 /// 创建时间 /// 页码 /// 每页显示条数 /// 排序字段 /// 排序规则 /// [Route(template: "MesBadOrderSearch")] [HttpGet] public HttpResponseMessage MesBadOrderSearch(int page, int rows, string prop, string order, string mesordercode = null, string sourceorder = null,string saleordercode=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, saleordercode, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order); return TJson.toJson(mes); } #endregion #region[产品编码查找工艺路线下拉接口] /// /// 产品编码查找工艺路线下拉接口 /// /// 产品编码 /// 车间编码 /// [Route(template: "PartSelectRoute")] [HttpGet] public HttpResponseMessage PartSelectRoute(string partcode,string wkshopcode) { mes = ProductionManagementBLL.PartSelectRoute(partcode, wkshopcode); return TJson.toJson(mes); } #endregion #region[产品+工艺路线查找车间下拉接口] /// /// 产品+工艺路线查找车间下拉接口 /// /// 产品编码 /// [Route(template: "RouteSelectWkshop")] [HttpGet] public HttpResponseMessage RouteSelectWkshop(string partcode) { var stu_torgcode = HttpContext.Current.Request.Cookies["stu_torgcode"].Value.ToString(); //所属组织 var stu_torgtypecode = HttpContext.Current.Request.Cookies["description"].Value.ToString(); //所属组织类型 mes = ProductionManagementBLL.RouteSelectWkshop(stu_torgcode, stu_torgtypecode,partcode); return TJson.toJson(mes); } #endregion #region[根据选择工艺路线查看工序接口] /// /// 根据选择工艺路线查看工序接口 /// /// 工艺路线编码 /// [Route(template: "SelectRouteStep")] [HttpGet] public HttpResponseMessage SelectRouteStep(string routecode) { mes = ProductionManagementBLL.SelectRouteStep(routecode); return TJson.toJson(mes); } #endregion #region【生产管理、工单新增、编辑时,选择排程是时获取物料清单版本号】 /// /// 生产管理、工单新增、编辑时,选择排程是时获取物料清单版本号 /// /// 产品编码 /// [Route(template: "JobCreationSonAddVison")] [HttpGet] public HttpResponseMessage JobCreationSonAddVison(string partnumber) { mes = ProductionManagementBLL.JobCreationSonAddVison(partnumber); return TJson.toJson(mes); } #endregion #region[工单派发选择工艺路线或选择生产车间时判断绑定条件] /// /// 工单派发选择工艺路线或选择生产车间时判断绑定条件 /// /// 产品编码 /// 工艺路线编码 /// 车间编码 /// 是否工价管控 /// [Route(template: "SelectRouteOrWkshop")] [HttpGet] public HttpResponseMessage SelectRouteOrWkshop(string partcode, string routecode, string wkshopcode,string is_steprice) { mes = ProductionManagementBLL.SelectRouteOrWkshop(partcode, routecode, wkshopcode, is_steprice); return TJson.toJson(mes); } #endregion #region[MES工单新增、获取工单号] /// /// MES工单新增、获取工单号 /// /// [Route(template: "AddMesOrderCodeSearch")] [HttpPost] public HttpResponseMessage AddMesOrderCodeSearch() { mes = ProductionManagementBLL.AddMesOrderCodeSearch(); return TJson.toJson(mes); } #endregion #region[MES工单新增、编辑提交] /// /// MES工单新增、编辑提交 /// /// 提交数据 /// [Route(template: "AddUpdateMesOrder")] [HttpPost] 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(); //工单数量 string routecode = obj["routecode"].ToString(); //工艺路线编码 string wkshopcode = obj["wkshopcode"].ToString();//生产车间编码 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, sourceorder, ordertype, mesordercode, partcode, mesqty, routecode, wkshopcode, planstartdate, planenddate, orderlev, username, opertype, is_aps, bom_id); return TJson.toJson(mes); } #endregion #region[MES工单删除] /// /// MES工单删除 /// /// 源单工单 /// 工单编号 /// 订单编号 /// 工单数量 /// [Route(template: "DeleteMesOrder")] [HttpPost] public HttpResponseMessage DeleteMesOrder(string souceid, string wocode, string m_po, string orderqty) { mes = ProductionManagementBLL.DeleteMesOrder(souceid, wocode, m_po, orderqty); return TJson.toJson(mes); } #endregion #region[MES工单关闭] /// /// MES工单关闭 /// /// 工单编号 /// 订单编号 /// [Route(template: "ClosedMesOrder")] [HttpPost] public HttpResponseMessage ClosedMesOrder(string wocode, string m_po) { var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员 mes = ProductionManagementBLL.ClosedMesOrder(username, wocode, m_po); return TJson.toJson(mes); } #endregion #region[MES工单查看工序任务] /// /// MES工单查看工序任务 /// /// 工单编号 /// [Route(template: "SearchWorkStep")] [HttpGet] public HttpResponseMessage SearchWorkStep(string wo_code) { mes = ProductionManagementBLL.SearchWorkStep(wo_code); return TJson.toJson(mes); } #endregion #region[MES工单打印更新打印次数] /// /// MES工单打印更新打印次数 /// /// 工单编号 /// [Route(template: "UpdateMesOrderPrintCount")] [HttpPost] public HttpResponseMessage UpdateMesOrderPrintCount(string wo_code) { mes = ProductionManagementBLL.UpdateMesOrderPrintCount(wo_code); return TJson.toJson(mes); } #endregion #region[生产开报工扫码获取当前工序对应的设备(自制)] /// /// 生产开报工扫码获取当前工序对应的设备(自制) /// /// 扫描的二维码信息 /// [Route(template: "MesOrderStepEqpSearch")] [HttpGet] public HttpResponseMessage MesOrderStepEqpSearch(string orderstepqrcode = null) { mes = ProductionManagementBLL.MesOrderStepEqpSearch(orderstepqrcode); return TJson.toJson(mes); } #endregion #region[生产开报工扫码获取当前工序对应的供方(外协)] /// /// 生产开报工扫码获取当前工序对应的供方(外协) /// /// 扫描的二维码信息 /// [Route(template: "MesOrderWxStepEqpSearch")] [HttpGet] public HttpResponseMessage MesOrderWxStepEqpSearch(string orderstepqrcode = null) { mes = ProductionManagementBLL.MesOrderWxStepEqpSearch(orderstepqrcode); return TJson.toJson(mes); } #endregion #region[生产开报工扫码获取工单对应工序任务(自制)] /// /// 生产开报工扫码获取工单对应工序任务(自制) /// /// 工单号 /// 产品编码 /// 产品名称 /// 规格型号 /// 页码 /// 每页显示条数 /// 排序字段 /// 排序规则(默认按照计划开工时间正序) /// [Route(template: "MesOrderStepSearch")] [HttpGet] public HttpResponseMessage MesOrderStepSearch(string wocode = null, string partcode = null, string partname = null, string partspec = null, int page = 0, int rows = 0, string prop = null, string order = null) { var stu_torgcode = HttpContext.Current.Request.Cookies["stu_torgcode"].Value.ToString(); //所属组织 var stu_torgtypecode = HttpContext.Current.Request.Cookies["description"].Value.ToString(); //所属组织类型 int startNum = rows * (page - 1) + 1; //起始记录rowNum int endNum = rows * page; //结束记录 rowNum mes = ProductionManagementBLL.MesOrderStepSearch(stu_torgcode, stu_torgtypecode, wocode,partcode,partname,partspec, startNum, endNum, prop, order); return TJson.toJson(mes); } #endregion #region[生产开报工扫码获取工单对应工序任务(外协)] /// /// 生产开报工扫码获取工单对应工序任务(外协) /// /// 扫描的二维码信息 /// 页码 /// 每页显示条数 /// 排序字段 /// 排序规则(默认按照计划开工时间正序) /// [Route(template: "MesOrderWxStepSearch")] [HttpGet] public HttpResponseMessage MesOrderWxStepSearch(string orderstepqrcode = null, int page = 0, int rows = 0, string prop = null, string order = null) { var stu_torgcode = HttpContext.Current.Request.Cookies["stu_torgcode"].Value.ToString(); //所属组织 var stu_torgtypecode = HttpContext.Current.Request.Cookies["description"].Value.ToString(); //所属组织类型 int startNum = rows * (page - 1) + 1; //起始记录rowNum int endNum = rows * page; //结束记录 rowNum mes = ProductionManagementBLL.MesOrderWxStepSearch(stu_torgcode, stu_torgtypecode,orderstepqrcode, startNum, endNum, prop, order); return TJson.toJson(mes); } #endregion #region[生产开报工扫码获取工单对应工序任务(不良)] /// /// 生产开报工扫码获取工单对应工序任务(不良) /// /// 扫描的二维码信息 /// 页码 /// 每页显示条数 /// 排序字段 /// 排序规则(默认按照计划开工时间正序) /// [Route(template: "MesOrderNgStepSearch")] [HttpGet] public HttpResponseMessage MesOrderNgStepSearch(string orderstepqrcode = null, int page = 0, int rows = 0, string prop = null, string order = null) { var stu_torgcode = HttpContext.Current.Request.Cookies["stu_torgcode"].Value.ToString(); //所属组织 var stu_torgtypecode = HttpContext.Current.Request.Cookies["description"].Value.ToString(); //所属组织类型 int startNum = rows * (page - 1) + 1; //起始记录rowNum int endNum = rows * page; //结束记录 rowNum mes = ProductionManagementBLL.MesOrderNgStepSearch(stu_torgcode, stu_torgtypecode,orderstepqrcode, startNum, endNum, prop, order); return TJson.toJson(mes); } #endregion #region[生产开报工扫码获取工单对应工序任务(不良明细)] /// /// 生产开报工扫码获取工单对应工序任务(不良明细) /// /// 扫描的二维码信息 /// [Route(template: "MesOrderNgSubStepSearch")] [HttpGet] public HttpResponseMessage MesOrderNgSubStepSearch(string orderstepqrcode) { mes = ProductionManagementBLL.MesOrderNgSubStepSearch(orderstepqrcode); return TJson.toJson(mes); } #endregion #region [生产开报工:开工(开始/报工)/外协(发料/收料)时条件判断及数据返回接口] /// /// 生产开报工:开工(开始/报工)/外协(发料/收料)时条件判断及数据返回接口 /// /// 操作类型:自制(ZZ)/外协(WX) /// 操作类型:自制(开工(START)/报工(REPORT))/外协(发料标识(OUT)/收料标识(IN)) /// 扫描二维码信息 /// 所属组织编码 /// [Route(template: "MesOrderStepStart")] [HttpGet] public HttpResponseMessage MesOrderStepStart(string OperType,string stu_torgcode, string orderstepqrcode, string SelectType = null) { mes = ProductionManagementBLL.MesOrderStepStart(OperType, stu_torgcode, SelectType, orderstepqrcode); return TJson.toJson(mes); } #endregion #region[生产开报工:开工时获取设备下拉列表] /// /// 生产开报工:开工时获取设备下拉列表 /// /// 扫描二维码信息 /// [Route(template: "MesOrderStepStartSelectEqp")] [HttpGet] public HttpResponseMessage MesOrderStepStartSelectEqp(string orderstepqrcode) { mes = ProductionManagementBLL.MesOrderStepStartSelectEqp(orderstepqrcode); return TJson.toJson(mes); } #endregion #region[生产开报工:报工时获取生产班组下拉框] /// /// 生产开报工:报工时获取生产班组下拉框 /// /// 车间编码 /// [Route(template: "MesOrderStepReportSelectUserGroup")] [HttpGet] public HttpResponseMessage MesOrderStepReportSelectUserGroup(string wkshopcode) { var stu_torgcode = HttpContext.Current.Request.Cookies["stu_torgcode"].Value.ToString(); //所属组织 var stu_torgtypecode = HttpContext.Current.Request.Cookies["description"].Value.ToString(); //所属组织类型 mes = ProductionManagementBLL.MesOrderStepReportSelectUserGroup(stu_torgcode, stu_torgtypecode,wkshopcode); return TJson.toJson(mes); } #endregion #region[生产开报工:根据生产班组查找人员列表] /// /// 生产开报工:根据生产班组查找人员列表 /// /// 班组编码 /// [Route(template: "MesOrderGroupSelectUser")] [HttpGet] public HttpResponseMessage MesOrderGroupSelectUser(string usergroupcode) { var stu_torgcode = HttpContext.Current.Request.Cookies["stu_torgcode"].Value.ToString(); //所属组织 mes = ProductionManagementBLL.MesOrderGroupSelectUser(stu_torgcode,usergroupcode); return TJson.toJson(mes); } #endregion #region[生产开报工:人员下拉列表] /// /// 生产开报工:人员下拉列表 /// /// 人员编码 /// [Route(template: "MesOrderSelectUser")] [HttpGet] public HttpResponseMessage MesOrderSelectUser(string usercode = null) { mes = ProductionManagementBLL.MesOrderSelectUser(usercode); return TJson.toJson(mes); } #endregion #region[生产开报工:发料/收料时获取外协下拉列表] /// /// 生产开报工:发料/收料时获取外协下拉列表 /// /// 扫描二维码信息 /// [Route(template: "MesOrderStepSelectWX")] [HttpGet] public HttpResponseMessage MesOrderStepSelectWX(string orderstepqrcode) { mes = ProductionManagementBLL.MesOrderStepSelectWX(orderstepqrcode); return TJson.toJson(mes); } #endregion #region[生产报工:报工/外协收料 获取不良原因下拉列表] /// /// 生产报工:报工/外协收料 获取不良原因下拉列表 /// /// 扫描二维码信息 /// [Route(template: "MesOrderStepSelectCause")] [HttpGet] public HttpResponseMessage MesOrderStepSelectCause(string orderstepqrcode) { mes = ProductionManagementBLL.MesOrderStepSelectCause(orderstepqrcode); return TJson.toJson(mes); } #endregion #region[生产开报工,开工提交] /// /// 生产开报工,开工提交 /// /// 开工提交数据 /// [Route(template: "SavaMesOrderStepStart")] [HttpPost] public HttpResponseMessage SavaMesOrderStepStart([FromBody] JObject obj) { string mesordercode = obj["mesordercode"].ToString(); //工单编号 string partcode = obj["partcode"].ToString(); //产品编码 string stepseq = obj["stepseq"].ToString(); //工序序号 string stepcode = obj["stepcode"].ToString(); //工序编码 string eqpcode = obj["eqpcode"].ToString(); //设备编码 string taskqty = obj["taskqty"].ToString(); //任务数量 string startqty = obj["startqty"].ToString(); //开工数量 var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //开工人员 mes = ProductionManagementBLL.SavaMesOrderStepStart(mesordercode, partcode, stepseq, stepcode, eqpcode, taskqty, startqty, username); return TJson.toJson(mes); } #endregion #region[生产开报工,报工提交] /// /// 生产开报工,报工提交 /// /// 报工提交数据 /// [Route(template: "SavaMesOrderStepReport")] [HttpPost] public HttpResponseMessage SavaMesOrderStepReport([FromBody] JObject obj) { string mesordercode = obj["mesordercode"].ToString(); //工单编号 string partcode = obj["partcode"].ToString(); //产品编码 string stepseq = obj["stepseq"].ToString(); //工序序号 string stepcode = obj["stepcode"].ToString(); //工序编码 string eqpcode = obj["eqpcode"].ToString(); //设备编码 string inbarcode = obj["inbarcode"].ToString(); //入库条码 string reckway = obj["reckway"].ToString(); //计件方式(班组:group、个人:person) string usergroupcode = obj["usergroupcode"].ToString(); //班组编码 string reportuser = obj["reportuser"].ToString(); //报工人员 string taskqty = obj["taskqty"].ToString(); //任务数量 string startqty = obj["startqty"].ToString(); //开工数量 string reportqty = obj["reportqty"].ToString(); //报工工数量 string defectlist= obj["defectlist"].ToString();//不良汇总 string remarks = obj["remarks"].ToString(); //备注 var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员 List defectobjs = JsonConvert.DeserializeObject>(defectlist); mes = ProductionManagementBLL.SavaMesOrderStepReport(mesordercode, partcode, stepseq, stepcode, eqpcode, inbarcode, reckway, usergroupcode, reportuser, taskqty, startqty, reportqty, defectobjs, remarks, username); return TJson.toJson(mes); } #endregion #region[生产开报工,发料提交] /// /// 生产开报工,发料提交 /// /// 发料提交数据 /// [Route(template: "SavaMesOrderStepOut")] [HttpPost] public HttpResponseMessage SavaMesOrderStepOut([FromBody] JObject obj) { string mesordercode = obj["mesordercode"].ToString(); //工单编号 string partcode = obj["partcode"].ToString(); //产品编码 string stepseq = obj["stepseq"].ToString(); //工序序号 string stepcode = obj["stepcode"].ToString(); //工序编码 string wxcode = obj["wxcode"].ToString(); //外协供应商编码 string outuser = obj["outuser"].ToString(); //发料人员 string taskqty = obj["taskqty"].ToString(); //任务数量 string fqty = obj["fqty"].ToString(); //发料数量 var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员 mes = ProductionManagementBLL.SavaMesOrderStepOut(mesordercode, partcode, stepseq, stepcode, wxcode, outuser, taskqty, fqty, username); return TJson.toJson(mes); } #endregion #region[生产开报工,收料提交] /// /// 生产开报工,收料提交 /// /// 收料提交数据 /// [Route(template: "SavaMesOrderStepIn")] [HttpPost] public HttpResponseMessage SavaMesOrderStepIn([FromBody] JObject obj) { string mesordercode = obj["mesordercode"].ToString(); //工单编号 string partcode = obj["partcode"].ToString(); //产品编码 string stepseq = obj["stepseq"].ToString(); //工序序号 string stepcode = obj["stepcode"].ToString(); //工序编码 string wxcode = obj["wxcode"].ToString(); //外协供应商编码 string inbarcode = obj["inbarcode"].ToString(); //入库条码 string inuser = obj["inuser"].ToString(); //收料人员 string taskqty = obj["taskqty"].ToString(); //任务数量 string sqty = obj["sqty"].ToString(); //收料数量 string defectlist = obj["defectlist"].ToString();//不良汇总 string remarks = obj["remarks"].ToString(); //备注 var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员 List defectobjs = JsonConvert.DeserializeObject>(defectlist); mes = ProductionManagementBLL.SavaMesOrderStepIn(mesordercode, partcode, stepseq, stepcode, wxcode, inbarcode, inuser, taskqty, sqty, defectobjs, remarks, username); return TJson.toJson(mes); } #endregion #region[不良处理,提交] /// /// 不良处理,提交 /// /// 处理人员编码 /// 提交数据 /// [Route(template: "EditOrderNgStepSeave")] [HttpPost] public HttpResponseMessage EditOrderNgStepSeave(string username, ReportDefectHandle json) { mes = ProductionManagementBLL.EditOrderNgStepSeave(json, username); return TJson.toJson(mes); } #endregion #region[工序检验扫码获取任务信息] /// /// 工序检验扫码获取任务信息 /// /// 所属组织编码 /// 扫描工序二维码信息 /// 检验方式FirstCheck(首检) PatroCheck(巡检) EndCheck(完工检) /// [Route(template: "MesOrderStepCheckSearch")] [HttpGet] public HttpResponseMessage MesOrderStepCheckSearch(string stu_torgcode, string orderstepqrcode, string checktype) { mes = ProductionManagementBLL.MesOrderStepCheckSearch(stu_torgcode,orderstepqrcode, checktype); return TJson.toJson(mes); } #endregion #region[工序检验根据选择的检验方案查找检验项目] /// /// 入厂检验,工序检验根据选择的检验方案查找检验项目 /// /// 检验方案编码 /// [Route(template: "MesOrderStepCheckItemList")] [HttpGet] public HttpResponseMessage MesOrderStepCheckItemList(string checkstandcode) { mes = ProductionManagementBLL.MesOrderStepCheckItemList(checkstandcode); return TJson.toJson(mes); } #endregion #region[工序检验,提交] /// /// 工序检验,提交 /// /// [Route(template: "SaveMesOrderStepCheckItem")] [HttpPost] public HttpResponseMessage SaveMesOrderStepCheckItem([FromBody] JObject obj) { string stu_torgcode = obj["stu_torgcode"].ToString(); //所属组织编号 string wocode = obj["wocode"].ToString(); //工单编号 string partcode = obj["partcode"].ToString(); //产品编码 string stepcode = obj["stepcode"].ToString(); //工序编码 string checkstandcode = obj["checkstandcode"].ToString(); //质检方案编码 string check_type = obj["check_type"].ToString(); //检验方式FirstCheck(首检) PatroCheck(巡检) EndCheck(完工检) string sampmethod = obj["sampmethod"].ToString(); //抽检方式:固定抽检(FIXED) 比例抽检(SCARE) string qualitystatus = obj["qualitystatus"].ToString(); //质量状态(合格、不合格) string labqty = obj["good_qty"].ToString(); //工序任务合格数量 string sampleqty = obj["sampleqty"].ToString(); //样本数量 string goodqty = obj["goodqty"].ToString(); //合格数量 string ngqty = obj["ngqty"].ToString();//不合格数量 string checkitemcont = obj["checkitemcont"].ToString(); //检验项目数据 var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员 mes = ProductionManagementBLL.SaveMesOrderStepCheckItem(stu_torgcode,wocode, partcode, stepcode, checkstandcode, check_type, sampmethod, qualitystatus, labqty, sampleqty, goodqty, ngqty, checkitemcont, username); return TJson.toJson(mes); } #endregion #region[MES工单批量关闭查询] /// /// MES工单查询 /// /// 工单状态码 /// 工单编号 /// 源单单号 /// 销售订单号 /// 单据类型 /// 产品编码 /// 产品名称 /// 产品规格 /// 创建人员 /// 创建时间 /// 页码 /// 每页显示条数 /// 排序字段 /// 排序规则 /// [Route(template: "MesOrderBitchClosedSearch")] [HttpGet] public HttpResponseMessage MesOrderBitchClosedSearch(string mesorderstus = null, string mesordercode = null, string sourceorder = null,string saleordercode=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) { var stu_torgcode = HttpContext.Current.Request.Cookies["stu_torgcode"].Value.ToString(); //所属组织 var stu_torgtypecode = HttpContext.Current.Request.Cookies["description"].Value.ToString(); //所属组织类型 int startNum = rows * (page - 1) + 1; //起始记录rowNum int endNum = rows * page; //结束记录 rowNum mes = ProductionManagementBLL.MesOrderBitchClosedSearch(stu_torgcode, stu_torgtypecode,mesorderstus, mesordercode, sourceorder, saleordercode, ordertype, partcode, partname, partspec, startNum, creatuser, createdate, endNum, prop, order); return TJson.toJson(mes); } #endregion #region[MES工单批量关闭提交] /// /// MES工单批量关闭提交 /// /// 工单号数组对象 /// [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工单批量反关闭] /// /// MES工单批量反关闭 /// /// 工单号数组对象 /// [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[产能规划方案设置查询] /// /// 产能规划方案设置查询 /// /// [Route(template: "CapacityPlanningSetupSearch")] [HttpGet] public HttpResponseMessage CapacityPlanningSetupSearch() { mes = ProductionManagementBLL.CapacityPlanningSetupSearch(); return TJson.toJson(mes); } #endregion #region[产能规划方案设置新增] /// /// 产能规划方案设置新增 /// /// 提交数据 /// [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 objs = Serializer.Deserialize>(capacitylist); mes = ProductionManagementBLL.CapacityPlanningSetupAddUpdate(username, objs); return TJson.toJson(mes); } #endregion #region[产能规划方案设置删除] /// /// 产能规划方案设置删除 /// /// 方案编码 /// [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[产能规划查询] /// /// 产能规划查询 /// /// 页码 /// 页数 /// 排序字段 /// 排序规则 /// 车间编码 /// 生产单元 /// 有效状态 /// [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[产能规划默认方案保存提交] /// /// 产能规划默认方案保存提交 /// /// 产能规划(生产资源)id /// 车间编码 /// 生产单元编码 /// 默认方案编码 /// 资源类型 /// [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[产能规划点击日历组件查找已关联的日期方案] /// /// 产能规划点击日历组件查找已关联的日期方案 /// /// 产能规划(生产资源)id /// [Route(template: "CapacityPlanningCalendar")] [HttpGet] public HttpResponseMessage CapacityPlanningCalendar(string captplanid) { mes = ProductionManagementBLL.CapacityPlanningCalendar(captplanid); return TJson.toJson(mes); } #endregion #region[产能规划日历双击时带出对应的方案] /// /// 产能规划日历双击时带出对应的方案 /// /// 产能规划(生产资源)id /// 双击选中的日期 /// [Route(template: "CapacityPlanningOnclickSelect")] [HttpGet] public HttpResponseMessage CapacityPlanningOnclickSelect(string captplanid, string datetime) { mes = ProductionManagementBLL.CapacityPlanningOnclickSelect(captplanid, datetime); return TJson.toJson(mes); } #endregion #region[产能规划工作日历选择提交] /// /// 产能规划工作日历选择提交 /// /// [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 objs = Serializer.Deserialize>(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[自动排程工单查询] /// /// 自动排程工单查询 /// /// 页码 /// 每页条数 /// 排序字段 /// 排序规则 /// 车间编码 /// 生产工单号 /// 物料编码 /// 物料名称 /// [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[高级排程点击工单任务带出瓶颈工序设备、已排程任务数据] /// /// 高级排程点击工单任务带出瓶颈工序设备、已排程任务数据 /// /// 工单编号 /// 车间编码 /// 物料编码 /// 瓶颈工序编码(首道工序) /// 开始日期 /// 结束日期 /// [Route(template: "OnclickAdvancedSchedulingDevice")] [HttpGet] public HttpResponseMessage OnclickAdvancedSchedulingDevice(string wocode, string wkshpcode, string partcode, string botproccode, string startdate, string enddate) { List list = new List(); List list1 = new List(); list = ProductionManagementBLL.OnclickAdvancedSchedulingDevice(wocode, wkshpcode, partcode, startdate, enddate, ref mes); //排产设备信息 DataTable dt = ProductionManagementBLL.AlreadyScheduling(wocode, wkshpcode, partcode, botproccode, startdate, enddate); //设备已排程信息 Dictionary dList = new Dictionary(); dList.Add("rus", mes); dList.Add("rows", list); dList.Add("Cont", dt); return TJson.toJson(dList); } #endregion #region[NEW高级排程点击工单任务带出瓶颈工序设备、已排程任务数据] /// /// NEW高级排程点击工单任务带出瓶颈工序设备、已排程任务数据 /// /// 查询数据 /// [Route(template: "NewOnclickAdvancedSchedulingDevice")] [HttpPost] public HttpResponseMessage NewOnclickAdvancedSchedulingDevice(List json) { List list = new List(); List list1 = new List(); list = ProductionManagementBLL.NewOnclickAdvancedSchedulingDevice(json, ref mes); //排产设备信息 List dt = ProductionManagementBLL.NewAlreadyScheduling(json); //设备已排程信息 Dictionary dList = new Dictionary(); dList.Add("rus", mes); dList.Add("rows", list); dList.Add("Cont", dt); return TJson.toJson(dList); } #endregion #region[排程数据提交] /// /// 排程数据提交 /// /// [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 objs = Serializer.Deserialize>(json); mes = ProductionManagementBLL.SubmitAlreadyScheduling(username, wocode, botprocecode, objs); return TJson.toJson(mes); } #endregion #region[生产入库条码补打] /// /// 生产入库条码补打 /// /// 工单编号 /// [Route(template: "ProductInHouseLabCode")] [HttpGet] public HttpResponseMessage ProductInHouseLabCode(string ordercode) { mes = ProductionManagementBLL.ProductInHouseLabCode(ordercode); return TJson.toJson(mes); } #endregion #region[生产入库通过车间查找生产订单] /// /// 生产入库通过车间查找生产订单 /// /// 单据类型 /// 车间编码 /// [Route(template: "ProductInHouseWkshopOrder")] [HttpGet] public HttpResponseMessage ProductInHouseWkshopOrder(string ordertype,string wkshopcode) { mes = ProductionManagementBLL.ProductInHouseWkshopOrder(ordertype, wkshopcode); return TJson.toJson(mes); } #endregion #region[生产入库信息查询] /// /// 生产入库信息查询 /// /// 车间编码 /// 订单编号 /// 工单编号 /// 产品编码 /// 产品名称 /// 规格型号 /// 工单日期 /// [Route(template: "ProductInHouseOrderSearch")] [HttpGet] public HttpResponseMessage ProductInHouseOrderSearch(string wkshopcode, string erpordercode = null, string mesordercode = null, string partcode = null, string partname = null, string partspec = null, string orderdate = null) { string startorderdate = ""; //工单开始时间 string endorderdate = ""; //工单结束时间 if (orderdate != "" && orderdate != null) { startorderdate = orderdate.Split('~')[0].ToString(); endorderdate = orderdate.Split('~')[1].ToString(); } mes = ProductionManagementBLL.ProductInHouseOrderSearch(wkshopcode,erpordercode, mesordercode, partcode, partname, partspec, startorderdate, endorderdate); return TJson.toJson(mes); } #endregion #region[生产入库获取单据号] /// /// 生产入库获取单据号 /// /// 功能编码 /// [Route(template: "ProductInHouseOrderCodeSearch")] [HttpPost] public HttpResponseMessage ProductInHouseOrderCodeSearch(string rightcode) { mes = ProductionManagementBLL.ProductInHouseOrderCodeSearch(rightcode); return TJson.toJson(mes); } #endregion #region[生产入库提交] /// /// 生产入库提交 /// /// 明细数据 /// [Route(template: "ProductInHouseOrderSeave")] [HttpPost] public HttpResponseMessage ProductInHouseOrderSeave([FromBody] JObject obj) { var username = HttpContext.Current.Request.Cookies["admin"].Value.ToString(); //操作人员 mes = ProductionManagementBLL.ProductInHouseOrderSeave(username, obj); return TJson.toJson(mes); } #endregion } }