using Hanhe.iWCS.Common; using Hanhe.iWCS.MData; using MongoDB.Bson; using MongoDB.Driver; using MongoDB.Driver.Builders; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Hanhe.iWCS.JingmenGEMTwoProtocol { public class MESHelper { private static string mesurl = Settings.MESUrl; private static string timeurl = Settings.TimeCuo; public static WebApiHelper helper = new WebApiHelper(); /// /// 时间戳数据计数 /// public static int total; /// /// 包装机下线任务调用的MES接口——GlmTonBagFillInfo /// /// 设备号 /// internal static MachineInfoCache GetPackingMachineInfo(string location) { //mes 地址读配置文件 MachineInfoCache result = new MachineInfoCache(); //需要进一步确认MES接口传输的数据 var param = new { machineNo = location }; CMMLog.Info($"向MES发送数据{JsonConvert.SerializeObject(param)},接口地址为:{mesurl}"); var res = helper.WebPost(mesurl, JsonConvert.SerializeObject(param)); if (!string.IsNullOrEmpty(res)) { CMMLog.Info($"MES获取到数据:{JsonConvert.DeserializeObject(res)}"); var req = JsonConvert.DeserializeObject(res); if (req != null) { if (location == req.machineNo) { CMMLog.Info($"转换后MES数据{req}"); var machine = MongoDBSingleton.Instance.FindOne(Query.EQ("machineNo", req.machineNo), "MachineInfo"); if (machine == null) { MongoDBSingleton.Instance.Insert(new MachineInfo { machineNo = req.machineNo, lotNo = req.lotNo, bagNo = req.bagNo, productType = req.productType, palletLayers = req.palletLayers, materialCode = req.materialCode, overlappingLayers = req.overlappingLayers }); } else { CMMLog.Info($"当前中间表有当前包装机点位的信息存在,请检查MST主表是否有任务正在执行!"); Console.WriteLine($"当前中间表有当前包装机点位的信息存在,请检查MST主表是否有任务正在执行!"); } CMMLog.Info($"MES接口传输数据信息:machineNo:{req.machineNo},lotNo:{req.lotNo},bagNo:{req.bagNo},productType:{req.productType},materialCode:{req.materialCode},overlappingLayers:{req.overlappingLayers}"); Console.WriteLine($"MES接口传输数据信息:machineNo:{req.machineNo},lotNo:{req.lotNo},bagNo:{req.bagNo},productType:{req.productType},materialCode:{req.materialCode},overlappingLayers:{req.overlappingLayers}"); result = req; } else CMMLog.Info($"MES传输的包装机号与当前包装机号不符合:当前包装机号:{location},MES传输的包装机号:{req.machineNo}"); } else CMMLog.Info($"MES接口:Json返回数据为空值!接受的数据为:{req}"); } else CMMLog.Info($"MES接口:返回数据为空值!接受的数据为:{res}"); return result; } /// /// 3楼打包下线口到1楼成品货架口——调用打包线下线口接受传输的照相机接口数据 /// /// 时间戳 /// internal static TimeChuoInfo TimeCuo(string timeStamp, ref string deviceNo) { //时间戳 地址读配置文件 TimeChuoInfo result = new TimeChuoInfo(); var param = new { machineNo = timeStamp }; CMMLog.Info($"TimeCuo-01:SendMsg:{JsonConvert.SerializeObject(param)},url:{timeurl}"); //var res = helper.WebGet(timeurl, JsonConvert.SerializeObject(param)); var res = helper.WebGet(timeurl + "?timeStamp=" + timeStamp); CMMLog.Info($"TimeCuo-02:ReqMsg:{JsonConvert.SerializeObject(res)},url:{timeurl}"); try { if (!string.IsNullOrEmpty(res)) { CMMLog.Info("time 02"); var req = JsonConvert.DeserializeObject(res); if (req != null) { CMMLog.Info("time 03"); //req.info = TransUTF8(req.info);//MES传输的UTF-8格式参数,C#默认UniCode格式,出现解析错误,但是此字段无意义,看情况更新 //var time = req.data[req.data.Count]; var timeReq = req.data.Where(a => a.timeStamp == int.Parse(timeStamp)).FirstOrDefault(); CMMLog.Info($"count:{req.count}"); CMMLog.Info("需要处理的参数:" + JsonConvert.SerializeObject(timeReq)); if (timeReq != null && req.count == 1) { CMMLog.Info("time 04"); total = timeReq.totalCount; if (timeReq.batchNumber.Length % 2 == 0 && timeReq.batchNumber.Substring(0, 1) == "0") timeReq.batchNumber = timeReq.batchNumber.Substring(1, timeReq.batchNumber.Length - 1); if (timeReq.productModel.Length % 2 == 0 && timeReq.productModel.Substring(0, 1) == "0") timeReq.productModel = timeReq.batchNumber.Substring(1, timeReq.productModel.Length - 1); string productTime = timeReq.ProductionDate1.ToString(); CMMLog.Info($"time :{timeReq.ProductionDate1.Length}"); if (timeReq.ProductionDate1.Length == 8) productTime = productTime.Substring(0, 4) + "-" + productTime.Substring(4, 2) + "-" + productTime.Substring(6, 2); CMMLog.Info("time 05"); var timeCuo = MongoDBSingleton.Instance.FindOne(Query.EQ("timeReq", timeReq.timeStamp), "TimeCuoInfoCom"); if (timeCuo == null) { MongoDBSingleton.Instance.Insert(new TimeCuoInfoCom { isFold = timeReq.isFold, packingMachineNumber = timeReq.packingMachineNumber_1, //bagNumber = timeReq.bagNumber_1+","+timeReq.bagNumber_2, needWeight = timeReq.needWeight_1 / 100, realWeight = timeReq.realWeight_1 / 100, totalWeight = timeReq.totalWeight, batchNumber = timeReq.batchNumber, productModel = timeReq.productModel, bagNumber_1 = timeReq.bagNumber_1, bagNumber_2 = timeReq.bagNumber_2, bagNumber_3 = timeReq.bagNumber_3, bagNumber_4 = timeReq.bagNumber_4, isNeedTray = timeReq.isNeedTray, //totalCount = timeReq.totalCount, totalCount = timeReq.totalCount, timeStamp = timeReq.timeStamp, photoURL = timeReq.photoURL, ProductionDate = productTime, // ERP变更-照相机新增字段 materialCode = timeReq.materialCode, materialName = timeReq.materialName, measurementUnit = timeReq.measurementUnit, createOrganization = timeReq.createOrganization, count = timeReq.count, WarehouseCode = timeReq.WarehouseCode, workshopCode = timeReq.workshopCode, BusinessDate = timeReq.BusinessDate, barcode = timeReq.barcode, codeRules = timeReq.codeRules, employeeID1 = timeReq.employeeID1, employeeID2 = timeReq.employeeID2, employeeID3 = timeReq.employeeID3, employeeID4 = timeReq.employeeID4, //变更注释 orderCode = timeReq.productionOrder, totalNeedWeight = timeReq.totalNeedWeight, netWeight = timeReq.netWeight, FEntryID_1 = timeReq.firstPackageEntryID, FEntryID_2 = timeReq.secondPackageEntryID, FEntryID_3 = timeReq.thirdPackageEntryID, FEntryID_4 = timeReq.fourthPackageEntryID }); } else { var query = Query.EQ("timeReq", timeReq.timeStamp); //UpdateBuilder update = Update.Set("isFold", timeReq.isFold).Set("realWeight", timeReq.realWeight_1 / 100).Set("totalWeight", timeReq.totalWeight) // .Set("batchNumber", timeReq.batchNumber).Set("productModel", timeReq.productModel).Set("needWeight", timeReq.needWeight_1).Set("bagNumber", timeReq.bagNumber_1).Set("isNeedTray", timeReq.isNeedTray) // .Set("totalCount", timeReq.totalCount).Set("timeStamp", timeReq.timeStamp).Set("photoURL", timeReq.photoURL).Set("ProductionDate", productTime) // .Set("materialCode", timeReq.materialCode).Set("materialName", timeReq.materialName).Set("measurementUnit", timeReq.measurementUnit) // .Set("createOrganization", timeReq.createOrganization).Set("count", timeReq.count).Set("WarehouseCode", timeReq.WarehouseCode) // .Set("workshopCode", timeReq.workshopCode).Set("BusinessDate", timeReq.BusinessDate).Set("barcode", timeReq.barcode) // .Set("codeRules", timeReq.codeRules).Set("employeeID1",timeReq.employeeID1); //变更注释 UpdateBuilder update = Update.Set("isFold", timeReq.isFold).Set("realWeight", timeReq.realWeight_1 / 100).Set("totalWeight", timeReq.totalWeight) .Set("batchNumber", timeReq.batchNumber).Set("productModel", timeReq.productModel).Set("needWeight", timeReq.needWeight_1 / 100) .Set("bagNumber_1", timeReq.bagNumber_1).Set("bagNumber_2", timeReq.bagNumber_2).Set("bagNumber_3", timeReq.bagNumber_3).Set("bagNumber_4", timeReq.bagNumber_4) .Set("isNeedTray", timeReq.isNeedTray).Set("packingMachineNumber", timeReq.packingMachineNumber_1) .Set("totalCount", timeReq.totalCount).Set("timeStamp", timeReq.timeStamp).Set("photoURL", timeReq.photoURL).Set("ProductionDate", productTime) .Set("materialCode", timeReq.materialCode).Set("materialName", timeReq.materialName).Set("measurementUnit", timeReq.measurementUnit) .Set("createOrganization", timeReq.createOrganization).Set("count", timeReq.count).Set("WarehouseCode", timeReq.WarehouseCode) .Set("workshopCode", timeReq.workshopCode).Set("BusinessDate", timeReq.BusinessDate).Set("barcode", timeReq.barcode) .Set("codeRules", timeReq.codeRules).Set("employeeID1",timeReq.employeeID1).Set("orderCode",timeReq.productionOrder) .Set("totalNeedWeight", timeReq.totalNeedWeight).Set("netWeight", timeReq.netWeight).Set("FEntryID_1", timeReq.firstPackageEntryID) .Set("FEntryID_2", timeReq.secondPackageEntryID).Set("FEntryID_3", timeReq.thirdPackageEntryID).Set("FEntryID_4", timeReq.fourthPackageEntryID); MongoDBSingleton.Instance.Update(query, update, UpdateFlags.None); } CMMLog.Info($"获取到的时间戳接口数据:包装机号packingMachineNumber:{timeReq.packingMachineNumber_1},叠托后的需求重量needWeight:{timeReq.needWeight_1 / 100},叠托后的实际重量totalWeight:{timeReq.totalWeight},产品批次号batchNumber:{timeReq.batchNumber}" + $",产品型号productModel:{timeReq.productModel},totalCount:{timeReq.totalCount},timeStamp:{timeReq.timeStamp},photoURL:{timeReq.photoURL}"); #region 判断叠包层数 //if (timeReq.isFold == 1 || timeReq.isFold == 2 || timeReq.isFold == 3) //{ // var query = Query.EQ("packingMachineNumber", timeReq.packingMachineNumber_1); // UpdateBuilder update = null; // if (timeReq.isFold == 1) update = Update.Set("bagNumber", timeReq.bagNumber_1).Set("realWeight", (timeReq.realWeight_1 / 100).ToString().Trim()); // else if (timeReq.isFold == 2) update = Update.Set("bagNumber", timeReq.bagNumber_1 + "," + timeReq.bagNumber_2); // else if (timeReq.isFold == 3) update = Update.Set("bagNumber", timeReq.bagNumber_1 + "," + timeReq.bagNumber_2 + "," + timeReq.bagNumber_3); // // if (update != null) // MongoDBSingleton.Instance.Update(query, update, "TimeCuoInfoCom", UpdateFlags.None); //} //else CMMLog.Error($"isFold:{timeReq.isFold}"); #region // if (timeReq.isFold == 1) // MongoDBSingleton.Instance.Update(Query.EQ("packingMachineNumber", timeReq.packingMachineNumber_1), Update.Set("bagNumber", timeReq.bagNumber_1).Set("realWeight", (timeReq.realWeight_1 / 100).ToString().Trim()), UpdateFlags.None); // else if (timeReq.isFold == 2) // //MongoDBSingleton.Instance.Update(Query.EQ("packingMachineNumber", timeReq.packingMachineNumber_1), Update.Set("bagNumber", timeReq.bagNumber_1 + "," + timeReq.bagNumber_2).Set("realWeight", (timeReq.realWeight_1 / 100).ToString().Trim()+","+ (timeReq.realWeight_2 / 100).ToString().Trim()), UpdateFlags.None); // MongoDBSingleton.Instance.Update(Query.EQ("packingMachineNumber", timeReq.packingMachineNumber_1), Update.Set("bagNumber", timeReq.bagNumber_1 + "," + timeReq.bagNumber_2), UpdateFlags.None); // else if (timeReq.isFold == 3) // //MongoDBSingleton.Instance.Update(Query.EQ("packingMachineNumber", timeReq.packingMachineNumber_1), Update.Set("bagNumber", timeReq.bagNumber_1 + "," + timeReq.bagNumber_2 + "," + timeReq.bagNumber_3).Set("realWeight", (timeReq.realWeight_1 / 100).ToString().Trim() + "," + (timeReq.realWeight_2 / 100).ToString().Trim()+","+ (timeReq.realWeight_3 / 100).ToString().Trim()), UpdateFlags.None); // MongoDBSingleton.Instance.Update(Query.EQ("packingMachineNumber", timeReq.packingMachineNumber_1), Update.Set("bagNumber", timeReq.bagNumber_1 + "," + timeReq.bagNumber_2 + "," + timeReq.bagNumber_3), UpdateFlags.None); // else CMMLog.Error($"isFold:{timeReq.isFold}"); #endregion #endregion //判断是否叠底托 deviceNo = timeReq.isNeedTray == 2 ? "7" : "10"; result = req; } else result = null; } else result = null; CMMLog.Info($"code:{req.code},count:{req.count},info:{req.info},info:{req.msg},info:{req.status}"); } CMMLog.Info("time over!"); } catch (Exception ex) { CMMLog.Error($"TimeCuo Error:{ex.Message}"); } return result; } public static string TransUTF8(string text) { //声明字符集 System.Text.Encoding utf8, gb2312; //utf8 utf8 = System.Text.Encoding.GetEncoding("utf-8"); //gb2312 gb2312 = System.Text.Encoding.GetEncoding("gb2312"); byte[] utf; utf = gb2312.GetBytes(text); utf = System.Text.Encoding.Convert(gb2312, utf8, utf); //返回转换后的字符 return utf8.GetString(utf); } /// /// 存放从MES接受的数据和设备通道里面读取的数据(包括转换后的数据) /// public class MachineInfo { public ObjectId _id { get; set; } /// /// mes返回的包装机号(T1,T2,......,T9) /// public string machineNo { get; set; } /// /// mes返回的成品批次号 /// public string lotNo { get; set; } = "0"; /// /// mes返回的袋号 /// public string bagNo { get; set; } = "0"; /// /// mes返回的产品型号 /// public string productType { get; set; } = "0"; /// /// MES返回的是否叠底托(1-不叠底托 2-叠底托) /// public string palletLayers { get; set; } = "0"; /// /// mes返回的物料编码 /// public string materialCode { get; set; } = "0"; /// /// mes返回的物料名称 /// public string materialName { get; set; } = "0"; /// /// 计量单位 /// public string measurementUnit { get; set; } = "0"; /// /// mes返回的叠包层数 (例1,2,3:1代表不叠包,2代表叠2层,3代表叠3层) /// public string overlappingLayers { get; set; } = "0"; /// /// 设备通道数据5——员工编码 /// public string empCode { get; set; } = "0"; /// /// 设备通道数据3——托盘码 /// public string trayCode { get; set; } = "0"; /// /// 设备通道数据1——包装机号 /// public string location { get; set; } = "0"; /// /// 设备通道数据2——产品需求重量:32位整数 /// public string productWeight { get; set; } = "0"; /// /// 设备通道数据2——托盘重量:32位整数 ERP变更:根据最新信号协议 trayCodeWeight 变更为 【员工编号】通道 /// public string trayCodeWeight { get; set; } = "0"; /// /// 设备通道数据2——单托毛重:32位整数 /// public string oneTrayWeight1 { get; set; } = "0"; /// /// 设备通道数据2——单托实际重量:32位整数 /// public string oneTrayWeight { get; set; } = "0"; /// /// 设备通道数据1——物料打包类型:32位整数 /// public string trayType { get; set; } = "0"; /// /// 设备通道数据2——叠包后实际重量:32位整数 /// public string addWeight { get; set; } = "0"; /// /// 设备通道数据1——包装机出口称重结果:1:OK,2:NG /// public int packNg { get; set; } = 1; /// /// 设备通道数据1——复称口称重结果:1:OK,2:NG /// public int secondNg { get; set; } = 1; /// /// 设备通道数据1——是否需要叠包:1:叠包,2:不叠包 /// public int addState { get; set; } = 0; /// /// 设备通道数据1——袋号(001,002,003…999) /// public string packageCode { get; set; } = "0"; /// /// 设备通道数据2——生产日期:32位整数 /// public string productTime { get; set; } = "0"; //变更注释 /// /// 设备通道数据15——生产订单编号:32位整数 /// public string orderCode { get; set; } = "0"; /// /// 设备通道数据1——分录ID:16位整数 /// public int FEntryID { get; set; } /// /// 设备通道数据——全16位short /// public int[] machinedown = new int[40]; /// /// 设备通道数据——数据库JSON /// public string jsonData { get; set; } = "0"; public string occupy { get; set; } = "1"; public DateTime modify { get; set; } public string isOne { get; set; } } public class MachineInfoTwo { public ObjectId _id { get; set; } /// /// mes返回的包装机号(T1,T2,......,T9) /// public string machineNo { get; set; } /// /// mes返回的成品批次号 /// public string lotNo { get; set; } = "0"; /// /// mes返回的袋号 /// public string bagNo { get; set; } = "0"; /// /// mes返回的产品型号 /// public string productType { get; set; } = "0"; /// /// MES返回的是否叠底托(1-不叠底托 2-叠底托) /// public string palletLayers { get; set; } = "0"; /// /// mes返回的物料编码 /// public string materialCode { get; set; } = "0"; /// /// mes返回的物料名称 /// public string materialName { get; set; } = "0"; /// /// 计量单位 /// public string measurementUnit { get; set; } = "0"; /// /// mes返回的叠包层数 (例1,2,3:1代表不叠包,2代表叠2层,3代表叠3层) /// public string overlappingLayers { get; set; } = "0"; /// /// 设备通道数据5——员工编码 /// public string empCode { get; set; } = "0"; /// /// 设备通道数据3——托盘码 /// public string trayCode { get; set; } = "0"; /// /// 设备通道数据1——包装机号 /// public string location { get; set; } = "0"; /// /// 设备通道数据2——产品需求重量:32位整数 /// public string productWeight { get; set; } = "0"; /// /// 设备通道数据2——托盘重量:32位整数 ERP变更:根据最新信号协议 trayCodeWeight 变更为 【员工编号】通道 /// public string trayCodeWeight { get; set; } = "0"; /// /// 设备通道数据2——单托毛重:32位整数 /// public string oneTrayWeight1 { get; set; } = "0"; /// /// 设备通道数据2——单托实际重量:32位整数 /// public string oneTrayWeight { get; set; } = "0"; /// /// 设备通道数据2——复称毛重:32位整数 /// public string oneTrayWeightFC { get; set; } = "0"; /// /// 设备通道数据1——物料打包类型:32位整数 /// public string trayType { get; set; } = "0"; /// /// 设备通道数据2——叠包后实际重量:32位整数 /// public string addWeight { get; set; } = "0"; /// /// 设备通道数据1——包装机出口称重结果:1:OK,2:NG /// public int packNg { get; set; } = 1; /// /// 设备通道数据1——复称口称重结果:1:OK,2:NG /// public int secondNg { get; set; } = 1; /// /// 设备通道数据1——是否需要叠包:1:叠包,2:不叠包 /// public int addState { get; set; } = 0; /// /// 设备通道数据1——袋号(001,002,003…999) /// public string packageCode { get; set; } = "0"; /// /// 设备通道数据2——生产日期:32位整数 /// public string productTime { get; set; } = "0"; /// /// 设备通道数据2——生产日期:32位整数 /// public int productYear { get; set; } /// /// 设备通道数据2——生产日期:32位整数 /// public int productMonth { get; set; } //变更注释 /// /// 设备通道数据15——生产订单编号:32位整数 /// public string orderCode { get; set; } = "0"; /// /// 设备通道数据1——分录ID:16位整数 /// public int FEntryID { get; set; } /// /// 设备通道数据——全16位short /// public int[] machinedown = new int[40]; /// /// 设备通道数据——数据库JSON /// public string jsonData { get; set; } = "0"; public int[] fcWeight = new int[2]; /// /// 设备通道数据——数据库JSON /// public string fcWeightJson { get; set; } = "0"; public string occupy { get; set; } = "1"; public DateTime modify { get; set; } public string isOne { get; set; } } public class MachineInfoCache { /// /// mes返回的包装机号(T1,T2,......,T9) /// public string machineNo { get; set; } /// /// mes返回的成品批次号 /// public string lotNo { get; set; } /// /// mes返回的袋号 /// public string bagNo { get; set; } /// /// mes返回的产品型号 /// public string productType { get; set; } /// /// mes返回的是否叠底托信号 /// public string palletLayers { get; set; } /// /// mes返回的物料编码 /// public string materialCode { get; set; } /// /// mes返回的叠包层数 (例1,2,3:1代表不叠包,2代表叠2层,3代表叠3层) /// public string overlappingLayers { get; set; } } /// /// 时间戳——调用照相机设备获取的返回信息 /// public class TimeChuoInfo { public int code { get; set; } public int count { get; set; } public string info { get; set; } public string msg { get; set; } public int status { get; set; } public List data { get; set; } public class TimeCuoInfo { public string bagNumber_1 { get; set; } public string bagNumber_2 { get; set; } public string bagNumber_3 { get; set; } public string bagNumber_4 { get; set; } public string batchNumber { get; set; } public int isFold { get; set; } public string master { get; set; } public int needWeight_1 { get; set; } public int needWeight_2 { get; set; } public int needWeight_3 { get; set; } public int needWeight_4 { get; set; } public string newComeInFlag { get; set; } public string packingMachineNumber_1 { get; set; } public string packingMachineNumber_2 { get; set; } public string packingMachineNumber_3 { get; set; } public string packingMachineNumber_4 { get; set; } public string photoFlag { get; set; } public string photoURL { get; set; } public string printFlag { get; set; } public string printMsg { get; set; } public string productModel { get; set; } public int realWeight_1 { get; set; } public int realWeight_2 { get; set; } public int realWeight_3 { get; set; } public int realWeight_4 { get; set; } public int timeStamp { get; set; } public int totalCount { get; set; } public int totalWeight { get; set; } /// /// 员工编号1 /// public string employeeID1 { get; set; } /// /// 员工编号2 /// public string employeeID2 { get; set; } /// /// 员工编号3 /// public string employeeID3 { get; set; } /// /// 员工编号4 /// public string employeeID4 { get; set; } /// /// 生产日期1 /// public string ProductionDate1 { get; set; } /// /// 生产日期2 /// public string ProductionDate2 { get; set; } /// /// 生产日期3 /// public string ProductionDate3 { get; set; } /// /// 生产日期4 /// public string ProductionDate4 { get; set; } /// /// 是否叠底托(ERP变更功能之后不再使用此字段) /// public int isNeedTray { get; set; } /// /// 物料编码 /// public string materialCode { get; set; } = "1"; /// /// 物料名称 /// public string materialName { get; set; } /// /// 计量单位 /// public string measurementUnit { get; set; } /// /// 创建组织 /// public string createOrganization { get; set; } /// /// 数量 /// public int count { get; set; } /// /// 仓库编码 /// public string WarehouseCode { get; set; } /// /// 车间编码 /// public string workshopCode { get; set; } /// /// 业务日期 /// public string BusinessDate { get; set; } /// /// 条形码 /// public string barcode { get; set; } /// /// 条码规则 /// public string codeRules { get; set; } //变更注释 /// /// 生产订单编码 /// public string productionOrder { get; set; } /// /// 需求总重量 /// public int totalNeedWeight { get; set; } /// /// 叠包后总重量(净重) /// public int netWeight { get; set; } /// /// 第一包分录ID /// public int firstPackageEntryID { get; set; } /// /// 第二包分录ID /// public int secondPackageEntryID { get; set; } /// /// 第三包分录ID /// public int thirdPackageEntryID { get; set; } /// /// 第四包分录ID /// public int fourthPackageEntryID { get; set; } } } public class TimeCuoInfoCom { public ObjectId _id { get; set; } /// /// 是否叠包(1,2,3) /// public int isFold { get; set; } /// /// 员工编号 /// public string employeeID1 { get; set; } /// /// 员工编号2 /// public string employeeID2 { get; set; } /// /// 员工编号3 /// public string employeeID3 { get; set; } /// /// 员工编号4 /// public string employeeID4 { get; set; } /// /// 包装机号 /// public string packingMachineNumber { get; set; } /// /// 袋号(001,002,003…999)1 /// public string bagNumber_1 { get; set; } /// /// 袋号(001,002,003…999)2 /// public string bagNumber_2 { get; set; } /// /// 袋号(001,002,003…999)3 /// public string bagNumber_3 { get; set; } /// /// 袋号(001,002,003…999)4 /// public string bagNumber_4 { get; set; } /// /// 产品需求重量1:32位整数 /// public int needWeight { get; set; } /// /// 单托实际重量1:32位整数 /// public int realWeight { get; set; } /// /// 时间戳 /// public int timeStamp { get; set; } /// /// 照片url /// public string photoURL { get; set; } /// /// 物料编码 /// public string materialCode { get; set; } /// /// 物料名称 /// public string materialName { get; set; } /// /// 计量单位 /// public string measurementUnit { get; set; } /// /// 创建组织 /// public string createOrganization { get; set; } /// /// 数量 /// public int count { get; set; } /// /// 仓库编码 /// public string WarehouseCode { get; set; } /// /// 车间编码 /// public string workshopCode { get; set; } /// /// 业务日期 /// public string BusinessDate { get; set; } /// /// 条形码 /// public string barcode { get; set; } /// /// 条码规则 /// public string codeRules { get; set; } /// /// 生产订单编码 /// public string orderCode { get; set; } /// /// 需求总重量 /// public int totalNeedWeight { get; set; } /// /// 叠包后总重量(净重) /// public int netWeight { get; set; } /// /// 分录id 1 /// public int FEntryID_1 { get; set; } /// /// 分录id 2 /// public int FEntryID_2 { get; set; } /// /// 分录id 3 /// public int FEntryID_3 { get; set; } /// /// 分录id 4 /// public int FEntryID_4 { get; set; } /// /// 叠托后的实际重量:32位整数 /// public int totalWeight { get; set; } /// /// 产品批次号 /// public string batchNumber { get; set; } /// /// 产品型号 /// public string productModel { get; set; } /// /// 是否叠底托(1-不叠底托 2-叠底托) /// public int isNeedTray { get; set; } /// /// 计数(只在数据库) /// public int totalCount { get; set; } /// /// 生产日期 /// public string ProductionDate { get; set; } /// /// 生产日期2 /// public string ProductionDate2 { get; set; } /// /// 生产日期3 /// public string ProductionDate3 { get; set; } /// /// 生产日期4 /// public string ProductionDate4 { get; set; } } /// /// 物料表 /// public class T_JY_MATERIALSync { /// /// 流水号 /// public int FID { get; set; } /// /// 名称 /// public string FName { get; set; } /// /// 编码 /// public string FNumber { get; set; } /// /// 规格型号 /// public string FSpecification { get; set; } /// /// 使用组织编码 /// public string FUseOrgNumber { get; set; } /// /// 车间名称 /// public string FWorkShopNumber { get; set; } /// /// 保质期 /// public int FExpPeriod { get; set; } /// /// 保质期单位 /// public string FExpUnit { get; set; } /// /// 库存单位 /// public string FStoreUnit { get; set; } /// /// 物料分组名称 /// public string FMaterialGroupName { get; set; } /// /// 物料分组编码 /// public string FMaterialGroupNumber { get; set; } } /// /// 员工表 /// public class T_JY_EMPINFOSync { /// /// 流水号 /// public int FID { get; set; } /// /// 编码 /// public string FNumber { get; set; } /// /// 名称 /// public string FName { get; set; } /// /// 员工编号 /// public string FStaffNumber { get; set; } } /// /// 条码表 /// public class T_JY_BARCODESync { /// /// 流水号 /// public int FID { get; set; } /// /// 条形码 /// public string FBarCode { get; set; } /// /// 条码规则 /// public string FBarCodeRule { get; set; } /// /// 物料编码 /// public string FMaterialNumber { get; set; } /// /// 创建组织 /// public string FCreateOrgNumber { get; set; } /// /// 批号主档 /// public string FLot { get; set; } /// /// 计量单位 /// public string FUnit { get; set; } /// /// 数量(重量) /// public float FQty { get; set; } /// /// 仓库编码 /// public string FStockNumber { get; set; } /// /// 部门编码 /// public string FDept { get; set; } /// /// 业务日期 /// public DateTime FBillDate { get; set; } /// /// 操作人编码 /// public string F_JY_CZZ { get; set; } } } }