using HH.WMS.CoreServer.DAL; using HH.WMS.Entitys; using HH.WMS.Entitys.Algorithm; using HH.WMS.Entitys.Basic; using HH.WMS.Entitys.Common; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HH.WMS.CoreServer.BLL { public class OutDataBLL : BaseBLL { public DataTable GetOutMstData(string tableName) { return CreateDAL().GetOutMstData(tableName); } public DataTable GetOutDtlData(string collectionName, string cCode) { return CreateDAL().GetOutDtlData(collectionName, cCode); } public bool AddRdrecord(DataTable RdrecordMstEntityTable, string dtlTableName, string opType) { //主表集合 List outMstEntityList = new List(); string stockStr = WebApiManager.HttpWMS_Get("api/Common/NoTokenStockList"); OperateResult or = JsonConvert.DeserializeObject(stockStr); List stockList = JsonConvert.DeserializeObject>(or.Data.ToString()); for (int i = 0; i < RdrecordMstEntityTable.Rows.Count; i++) { #region 拼接出库单主表 string postDataOpNo = "{\"appCode\":\"WMS\",\"ruleName\":\"" + Constants.Rule_OutOrder + "\",\"orgId\":\"\",\"orgFlag\":\"0\"}"; string opNo = WebApiManager.HttpAutoBom_Post("Api/BillRule/GenBillNo", postDataOpNo); if (opNo == "") { Log.Info("生成出库单号失败!", "AutoBom接口GenBillNo未调通!"); return false; } TN_WM_OUT_MSTEntity outMstEntity = new TN_WM_OUT_MSTEntity(); outMstEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper(); outMstEntity.CN_S_OP_NO = opNo; //outMstEntity.CN_T_OPERATE = Convert.ToDateTime(RdrecordMstEntityTable.Rows[i]["dDate"].ToString()); if (dtlTableName == "Rdrecords32") { outMstEntity.CN_S_CUSTOMER = RdrecordMstEntityTable.Rows[i]["cCusCode"].ToString(); outMstEntity.CN_S_CUSTOMER_NAME = RdrecordMstEntityTable.Rows[i]["cCusName"].ToString(); outMstEntity.CN_S_DETAIL_ADDRESS = RdrecordMstEntityTable.Rows[i]["cShipAddress"].ToString(); } else { outMstEntity.CN_S_CUSTOMER = ""; outMstEntity.CN_S_CUSTOMER_NAME = ""; } outMstEntity.CN_S_STOCK_CODE = stockList[0].CN_S_STOCK_CODE; // RdrecordMstEntityTable.Rows[i]["cWhCode"].ToString(); outMstEntity.CN_S_FROM_NO = RdrecordMstEntityTable.Rows[i]["MainId"].ToString(); outMstEntity.CN_S_AUDITOR = RdrecordMstEntityTable.Rows[i]["cChecker_Erp"].ToString(); outMstEntity.CN_T_AUDIT_TIME = string.IsNullOrEmpty(RdrecordMstEntityTable.Rows[i]["dCheckDate_Erp"].ToString()) ? DateTime.Now : Convert.ToDateTime(RdrecordMstEntityTable.Rows[i]["dCheckDate_Erp"].ToString()); outMstEntity.CN_T_CREATE = Convert.ToDateTime(RdrecordMstEntityTable.Rows[i]["dCreateDate"].ToString()); //未传递 默认值 outMstEntity.CN_T_OP_DATE = DateTime.Now; outMstEntity.CN_S_STATE = Constants.State_Audit; outMstEntity.CN_S_OWNER = Constants.DefaultU8Owner; outMstEntity.CN_S_OP_TYPE = opType; outMstEntity.CN_S_OP_FROM = "U8"; outMstEntity.CN_S_FROM_NO = RdrecordMstEntityTable.Rows[i]["cCode"].ToString(); outMstEntity.CN_S_AUDIT_REMARK = ""; outMstEntity.CN_S_OPERATOR = "汉和信息"; outMstEntity.CN_S_CREATOR = "hh"; outMstEntity.CN_S_CREATOR_BY = "汉和信息"; outMstEntity.CN_S_MODIFY = "hh"; outMstEntity.CN_S_MODIFY_BY = "汉和信息"; outMstEntity.CN_T_MODIFY = DateTime.Now; outMstEntity.CN_S_NOTE = "U8对接导入"; #endregion #region 拼接出库单子表 //子表集合 List outDtlEntityList = new List(); DataTable RdrecordDtlEntityTable = BLLCreator.Create().GetOutDtlData(dtlTableName, outMstEntity.CN_S_FROM_NO); for (int j = 0; j < RdrecordDtlEntityTable.Rows.Count; j++) { AutoBomItemEntity itemenity = BLLCreator.Create().GetItemEntity(RdrecordDtlEntityTable.Rows[j]["cInvCode"].ToString()); ; if (itemenity == null) { Log.Info("拼接子表失败!", "物料编码 " + RdrecordDtlEntityTable.Rows[j]["cInvCode"].ToString() + " 不存在或者未定版!"); return false; } TN_WM_OUT_DTLEntity dtlEntity = new TN_WM_OUT_DTLEntity(); dtlEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper(); dtlEntity.CN_T_PRODUCTION = Convert.ToDateTime(RdrecordDtlEntityTable.Rows[j]["dMadeDate"].ToString()); dtlEntity.CN_T_MODIFY = DateTime.Now; dtlEntity.CN_T_CREATE = DateTime.Now; dtlEntity.CN_S_STATE = Constants.State_Audit; dtlEntity.CN_S_SERIAL_NO = ""; dtlEntity.CN_S_PRODUCTION_BATCH = RdrecordDtlEntityTable.Rows[j]["cBatch"].ToString(); dtlEntity.CN_S_OP_NO = outMstEntity.CN_S_OP_NO; dtlEntity.CN_S_MSTGUID = outMstEntity.CN_GUID; dtlEntity.CN_S_MODEL = itemenity.CN_S_MODEL; dtlEntity.CN_S_ITEM_NAME = itemenity.CN_S_ITEM_NAME; dtlEntity.CN_S_ITEM_CODE = itemenity.CN_S_ITEM_CODE; dtlEntity.CN_N_ROW_NO = Convert.ToInt32(RdrecordDtlEntityTable.Rows[j]["iRowNo"].ToString()); string unit = RdrecordDtlEntityTable.Rows[j]["cComUnitName"].ToString(); decimal qty = RdrecordDtlEntityTable.Rows[j]["iQuantity"].ToString() == null ? 0 : Convert.ToDecimal(RdrecordDtlEntityTable.Rows[j]["iQuantity"].ToString()); if (unit != itemenity.CN_S_MEASURE_UNIT) { if (string.IsNullOrEmpty(itemenity.CN_S_CONERSION)) { Log.Info("拼接子表失败!", "请维护物料 " + itemenity.CN_S_ITEM_CODE + " 的换算比例!"); return false; } unit = itemenity.CN_S_MEASURE_UNIT; decimal jishu = Convert.ToDecimal(itemenity.CN_S_CONERSION.Substring(0, itemenity.CN_S_CONERSION.IndexOf("-"))); if (jishu == 0) jishu = 1; dtlEntity.CN_F_QUANTITY = Math.Floor(qty / jishu); } else { dtlEntity.CN_F_QUANTITY = qty; } dtlEntity.CN_S_MEASURE_UNIT = unit; dtlEntity.CN_S_ITEM_STATE = Constants.ItemState_WaitCheck; dtlEntity.CN_S_CREATOR = "hh"; dtlEntity.CN_S_CREATOR_BY = "汉和信息"; dtlEntity.CN_S_MODIFY = "hh"; dtlEntity.CN_S_MODIFY_BY = "汉和信息"; dtlEntity.CN_T_MODIFY = DateTime.Now; dtlEntity.CN_S_FIGURE_NO = ""; dtlEntity.CN_S_NOTE = "U8对接导入"; outDtlEntityList.Add(dtlEntity); } outMstEntity.OutDtlList = outDtlEntityList; outMstEntityList.Add(outMstEntity); #endregion } string resultStrMst = WebApiManager.HttpWMS_Post("Api/Out/AddU8OutData", JsonConvert.SerializeObject(outMstEntityList)); if (resultStrMst == "") { Log.Info("保存主子表调通!", "Api/Out/AddU8OutData"); return false; } OperateResult orMst = JsonConvert.DeserializeObject(resultStrMst); if (!orMst.Success) { Log.Info("保存主子表接口调用失败!", orMst.Msg); return false; } return orMst.Success; } public SqlExecuteResult UpdateRdrecordCheckState(DataTable RdrecordMstEntityTable, string collectionName) { return CreateDAL().UpdateRdrecordCheckState(RdrecordMstEntityTable, collectionName); } public bool UpdateRdrecord(DataTable RdrecordMstEntityTable, string collectionName) { List transVouchList = new List(); for (int i = 0; i < RdrecordMstEntityTable.Rows.Count; i++) { string cCode = RdrecordMstEntityTable.Rows[i]["cCode"].ToString(); DataTable RdrecordDtlEntityTable = BLLCreator.Create().GetOutDtlData(collectionName, cCode); for (int j = 0; j < RdrecordDtlEntityTable.Rows.Count; j++) { U8_TransVouchEntity transVouchEntity = new U8_TransVouchEntity(); string itemCode = RdrecordDtlEntityTable.Rows[i]["cInvCode"].ToString(); string productBatch = RdrecordDtlEntityTable.Rows[i]["cBatch"].ToString(); transVouchEntity.CN_S_ITEM_CODE = itemCode; transVouchEntity.CN_S_PRODUCTION_BATCH = productBatch; transVouchEntity.CN_S_BATCH_NO = productBatch; transVouchEntity.CN_S_ITEM_STATE = Constants.ItemState_Qualified; transVouchList.Add(transVouchEntity); } } string result = WebApiManager.HttpWMS_Post("Api/In/UpdateTransVouchItemState", JsonConvert.SerializeObject(transVouchList)); OperateResult opResult = JsonConvert.DeserializeObject(result); return opResult.Success; } public SqlExecuteResult UpdateRdrecordCheckFlag(string opNo, string tableName) { return CreateDAL().UpdateRdrecordCheckFlag(opNo, tableName); } } }