using HH.WCS.Mobox3.SXJK.wms; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Web.Http; using static HH.WCS.Mobox3.SXJK.api.ApiHelper; using static HH.WCS.Mobox3.SXJK.api.ApiModel; using static HH.WCS.Mobox3.SXJK.api.OtherModel; using static HH.WCS.Mobox3.SXJK.api.WmsController.OutBoundOrder; using static HH.WCS.Mobox3.SXJK.api.WmsController.ShiftingStockOrder; using static HH.WCS.Mobox3.SXJK.api.WmsController.TransferOrder; using static Topshelf.Runtime.Windows.NativeMethods; namespace HH.WCS.Mobox3.SXJK.api { /// /// 第三方调用的接口 /// [RoutePrefix("api")] public class WmsController : System.Web.Http.ApiController { internal static string GenerateTaskNo() { var id = SYSHelper.GetSerialNumber("通讯ID", "UUID"); var date = DateTime.Now.ToString("yyMMdd"); return $"UUID{date}{id.ToString().PadLeft(4, '0')}"; } /// /// 入库单同步接口 /// /// /// [HttpPost] [Route("inStockListSync")] public ResponseData inStockListSync(PutawayOrderData model) { LogHelper.Info("inStockListSync Request:" + JsonConvert.SerializeObject(model), "WMS"); ResponseData responseData = new ResponseData(); ES_BC_INFO es_bc_info = new ES_BC_INFO() { UUID = model.IS_BC_INFO.UUID, MSGID = model.IS_BC_INFO.MSGID, IFID = model.IS_BC_INFO.IFID, IFNAME = model.IS_BC_INFO.IFNAME, SENDER = model.IS_BC_INFO.RECEIVER, RECEIVER = model.IS_BC_INFO.SENDER, SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"), }; try { model.IT_DATA.ForEach(a => { var result = ApiHelper.putawayOrderSync(a); if (!result) { es_bc_info.TYPE = "E"; es_bc_info.MSG = "入库单同步错误"; } }); } catch (Exception ex) { LogHelper.Info("inStockListSync 接口错误:" + ex.Message, "WMS"); Console.WriteLine("入库单同步接口错误,错误信息:" + ex.Message); es_bc_info.TYPE = "E"; es_bc_info.MSG = "入库单同步错误"; } responseData.ES_BC_INFO = es_bc_info; LogHelper.Info("inStockListSync response:" + JsonConvert.SerializeObject(responseData), "WMS"); return responseData; } /// /// 出库单同步接口 /// /// /// [HttpPost] [Route("outStockListSync")] public ResponseData outStockListSync(OutboundOrderData model) { LogHelper.Info("outStockListSync Request:" + JsonConvert.SerializeObject(model), "WMS"); ResponseData responseData = new ResponseData(); ES_BC_INFO es_bc_info = new ES_BC_INFO() { UUID = model.IS_BC_INFO.UUID, MSGID = model.IS_BC_INFO.MSGID, IFID = model.IS_BC_INFO.IFID, IFNAME = model.IS_BC_INFO.IFNAME, SENDER = model.IS_BC_INFO.RECEIVER, RECEIVER = model.IS_BC_INFO.SENDER, SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"), }; try { model.IT_DATA.ForEach(a => { var result = ApiHelper.outboundOrderSync(a); if (!result) { es_bc_info.TYPE = "E"; es_bc_info.MSG = "入库单同步错误"; } }); } catch (Exception ex) { Console.WriteLine("出库单同步接口错误,错误信息:" + ex.Message); es_bc_info.TYPE = "E"; es_bc_info.MSG = "出库单同步错误"; } responseData.ES_BC_INFO = es_bc_info; LogHelper.Info("outStockListSync response:" + JsonConvert.SerializeObject(responseData), "WMS"); return responseData; } /// /// 转移单同步接口 /// /// /// [HttpPost] [Route("transferListSync")] public ResponseData transferListSync(TransferOrderData model) { LogHelper.Info("transferListSync Request:" + JsonConvert.SerializeObject(model), "WMS"); ResponseData responseData = new ResponseData(); ES_BC_INFO es_bc_info = new ES_BC_INFO() { UUID = model.IS_BC_INFO.UUID, MSGID = model.IS_BC_INFO.MSGID, IFID = model.IS_BC_INFO.IFID, IFNAME = model.IS_BC_INFO.IFNAME, SENDER = model.IS_BC_INFO.RECEIVER, RECEIVER = model.IS_BC_INFO.SENDER, SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"), }; try { model.IT_DATA.ForEach(a => { var result = ApiHelper.transferOrderSync(a); if (!result) { es_bc_info.TYPE = "E"; es_bc_info.MSG = "转移单同步错误"; } }); } catch (Exception ex) { Console.WriteLine("转移单同步接口错误,错误信息:" + ex.Message); es_bc_info.TYPE = "E"; es_bc_info.MSG = "转移单同步错误"; } responseData.ES_BC_INFO = es_bc_info; LogHelper.Info("transferListSync response:" + JsonConvert.SerializeObject(responseData), "WMS"); return responseData; } /// /// 移库单同步接口 /// /// /// [HttpPost] [Route("shiftingStockListSync")] public ResponseData shiftingStockListSync(ShiftingStockOrderData model) { LogHelper.Info("shiftingStockListSync Request:" + JsonConvert.SerializeObject(model), "WMS"); ResponseData responseData = new ResponseData(); ES_BC_INFO es_bc_info = new ES_BC_INFO() { UUID = model.IS_BC_INFO.UUID, MSGID = model.IS_BC_INFO.MSGID, IFID = model.IS_BC_INFO.IFID, IFNAME = model.IS_BC_INFO.IFNAME, SENDER = model.IS_BC_INFO.RECEIVER, RECEIVER = model.IS_BC_INFO.SENDER, SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"), }; try { model.IT_DATA.ForEach( a => { var result = ApiHelper.shiftingStockOrderSync(a); if (!result) { es_bc_info.TYPE = "E"; es_bc_info.MSG = "移库单同步错误"; } }); } catch (Exception ex) { Console.WriteLine("移库单同步接口错误,错误信息:" + ex.Message); es_bc_info.TYPE = "E"; es_bc_info.MSG = "移库单同步错误"; } responseData.ES_BC_INFO = es_bc_info; LogHelper.Info("shiftingStockListSync response:" + JsonConvert.SerializeObject(responseData), "WMS"); return responseData; } /// /// 冻结单同步接口 /// /// /// [HttpPost] [Route("freezeListSync")] public ResponseData freezeListSync(FreezeOrderData model) { LogHelper.Info("freezeListSync Request:" + JsonConvert.SerializeObject(model), "WMS"); ResponseData responseData = new ResponseData(); ES_BC_INFO es_bc_info = new ES_BC_INFO() { UUID = model.IS_BC_INFO.UUID, MSGID = model.IS_BC_INFO.MSGID, IFID = model.IS_BC_INFO.IFID, IFNAME = model.IS_BC_INFO.IFNAME, SENDER = model.IS_BC_INFO.RECEIVER, RECEIVER = model.IS_BC_INFO.SENDER, SEND_DT = DateTime.Now.ToString("yyyyMMddHHmmss"), }; try { model.IT_DATA.ForEach(a => { var result = ApiHelper.freezeOrderSync(a); if (!result) { es_bc_info.TYPE = "E"; es_bc_info.MSG = "冻结单同步错误"; } }); } catch (Exception ex) { Console.WriteLine("冻结单同步接口错误,错误信息:" + ex.Message); es_bc_info.TYPE = "E"; es_bc_info.MSG = "冻结单同步错误"; } responseData.ES_BC_INFO = es_bc_info; LogHelper.Info("freezeListSync response:" + JsonConvert.SerializeObject(responseData), "WMS"); return responseData; } public class ResponseData { public ES_BC_INFO ES_BC_INFO { get; set; } } public class ES_BC_INFO { public string IFID { get; set; } = "WESWMS_ORDER_001"; // 接口ID public string UUID { get; set; } // UUID每次通讯要求唯一 public string MSGID { get; set; } // 业务ID public string RESEND_ID { get; set; } = "001"; // 重复次数 public string BUSTYP { get; set; } = "创建"; // 状态 public string IFNAME { get; set; } = "WES成品收货信息传递到WMS"; // 接口描述 public string SEND_DT { get; set; } // 响应日期 public string SENDER { get; set; } = "WES"; // 发送人系统 public string RECEIVER { get; set; } = "WMS"; // 接收人系统 public string TYPE { get; set; } = "S"; // 业务成功标记 E失败 S成功 public string MSG { get; set; } = "Success"; // 异常描述 } public class FreezeOrderData { public IS_BC_INFO IS_BC_INFO { get; set; } public List IT_DATA { get; set; } } public class FreezeOrder { public string organizationId { get; set; } public string warehouseId { get; set; } public string customerId { get; set; } public string holdNo { get; set; } public string status { get; set; } public string udf01 { get; set; } public string udf02 { get; set; } public string udf03 { get; set; } public string udf04 { get; set; } public string udf05 { get; set; } public List Details { get; set; } public class FreezeOrderDetail { public string holdNo { get; set; } public string traceId { get; set; } public string udf01 { get; set; } public string udf02 { get; set; } public string udf03 { get; set; } public string udf04 { get; set; } public string udf05 { get; set; } } } public class ShiftingStockOrderData { public IS_BC_INFO IS_BC_INFO { get; set; } public List IT_DATA { get; set; } } public class ShiftingStockOrder { public string organizationId { get; set; } public string warehouseId { get; set; } public string customerId { get; set; } public string mdocNo { get; set; } public string mdocType { get; set; } public string status { get; set; } public string udf01 { get; set; } public string udf02 { get; set; } public string udf03 { get; set; } public string udf04 { get; set; } public string udf05 { get; set; } public List Details { get; set; } public class ShiftingStockOrderDetail { public string mdocNo { get; set; } public string traceId { get; set; } public string toLocation { get; set; } public string udf01 { get; set; } public string udf02 { get; set; } public string udf03 { get; set; } public string udf04 { get; set; } public string udf05 { get; set; } } } public class TransferOrderData { public IS_BC_INFO IS_BC_INFO { get; set; } public List IT_DATA { get; set; } } public class TransferOrder { public string organizationId { get; set; } public string warehouseId { get; set; } public string customerId { get; set; } public string tdocNo { get; set; } public string tdocType { get; set; } public string status { get; set; } public string udf01 { get; set; } public string udf02 { get; set; } public string udf03 { get; set; } public string udf04 { get; set; } public string udf05 { get; set; } public List Details { get; set; } public class TransferOrderDetail { public string tdocNo { get; set; } public string traceId { get; set; } public string serialNo { get; set; } public string tolotAtt01 { get; set; } public string tolotAtt02 { get; set; } public string tolotAtt03 { get; set; } public string tolotAtt04 { get; set; } public string tolotAtt05 { get; set; } public string tolotAtt06 { get; set; } public string tolotAtt07 { get; set; } public string tolotAtt08 { get; set; } public string tolotAtt09 { get; set; } public string tolotAtt10 { get; set; } public string tolotAtt11 { get; set; } public string tolotAtt12 { get; set; } public string tolotAtt13 { get; set; } public string tolotAtt14 { get; set; } public string tolotAtt15 { get; set; } public string tolotAtt16 { get; set; } public string tolotAtt17 { get; set; } public string tolotAtt18 { get; set; } public string tolotAtt19 { get; set; } public string tolotAtt20 { get; set; } public string tolotAtt21 { get; set; } public string tolotAtt22 { get; set; } public string tolotAtt23 { get; set; } public string tolotAtt24 { get; set; } public string udf01 { get; set; } public string udf02 { get; set; } public string udf03 { get; set; } public string udf04 { get; set; } public string udf05 { get; set; } } } public class OutboundOrderData { public IS_BC_INFO IS_BC_INFO { get; set; } public List IT_DATA { get; set; } } public class OutBoundOrder { public string organizationId { get; set; } public string warehouseId { get; set; } public string customerId { get; set; } public string orderNo { get; set; } public string orderType { get; set; } public string soStatus { get; set; } public string soReference1 { get; set; } public string udf01 { get; set; } public string udf02 { get; set; } public string udf03 { get; set; } public string udf04 { get; set; } public string udf05 { get; set; } public List Details { get; set; } public class OutBoundOrderDetail { public string orderNo { get; set; } public string sku { get; set; } public string seqNo { get; set; } public string qty { get; set; } public string lotAtt01 { get; set; } public string lotAtt02 { get; set; } public string lotAtt03 { get; set; } public string lotAtt04 { get; set; } public string lotAtt05 { get; set; } public string lotAtt06 { get; set; } public string lotAtt07 { get; set; } public string lotAtt08 { get; set; } public string lotAtt09 { get; set; } public string lotAtt10 { get; set; } public string lotAtt11 { get; set; } public string lotAtt12 { get; set; } public string lotAtt13 { get; set; } public string lotAtt14 { get; set; } public string lotAtt15 { get; set; } public string lotAtt16 { get; set; } public string lotAtt17 { get; set; } public string lotAtt18 { get; set; } public string lotAtt19 { get; set; } public string lotAtt20 { get; set; } public string lotAtt21 { get; set; } public string lotAtt22 { get; set; } public string lotAtt23 { get; set; } public string lotAtt24 { get; set; } public string udf01 { get; set; } public string udf02 { get; set; } public string udf03 { get; set; } public string udf04 { get; set; } public string udf05 { get; set; } } } public class PutawayOrderData { public IS_BC_INFO IS_BC_INFO { get; set; } public List IT_DATA { get; set; } } public class IS_BC_INFO { public string CUSTOMERID { get; set; } public string BUSTYP { get; set; } = "回传"; public string IFID { get; set; } public string IFNAME { get; set; } public string MSGID { get; set; } public string RECEIVER { get; set; } = "MES"; public string RESEND_ID { get; set; } = "001"; public string SENDER { get; set; } = "WMS"; public string SEND_DT { get; set; } public string UUID { get; set; } } public class PutawayOrderIn { public string organizationId { get; set; } public string warehouseId { get; set; } public string customerId { get; set; } public string ASNNo { get; set; } public string ASNType { get; set; } public string asnStatus { get; set; } public string asnReference1 { get; set; } public string udf01 { get; set; } public string udf02 { get; set; } public string udf03 { get; set; } public string udf04 { get; set; } public string udf05 { get; set; } public List Details { get; set; } public class PutawayOrderDetail { public string WERKS { get; set; } public string ASNNo { get; set; } public string sku { get; set; } public string skuDescr { get; set; } public string qty { get; set; } public string traceId { get; set; } public string serialNo { get; set; } public string containerWeight { get; set; } public string lotAtt01 { get; set; } public string lotAtt02 { get; set; } public string lotAtt03 { get; set; } public string lotAtt04 { get; set; } public string lotAtt05 { get; set; } public string lotAtt06 { get; set; } public string lotAtt07 { get; set; } public string lotAtt08 { get; set; } public string lotAtt09 { get; set; } public string lotAtt10 { get; set; } public string lotAtt11 { get; set; } public string lotAtt12 { get; set; } public string lotAtt13 { get; set; } public string lotAtt14 { get; set; } public string lotAtt15 { get; set; } public string lotAtt16 { get; set; } public string lotAtt17 { get; set; } public string lotAtt18 { get; set; } public string lotAtt19 { get; set; } public string lotAtt20 { get; set; } public string lotAtt21 { get; set; } public string lotAtt22 { get; set; } public string lotAtt23 { get; set; } public string lotAtt24 { get; set; } public string udf01 { get; set; } public string udf02 { get; set; } public string udf03 { get; set; } public string udf04 { get; set; } public string udf05 { get; set; } } } } }