using HH.Redis.ReisModel; using HH.WMS.BLL.Basic; using HH.WMS.Common; using HH.WMS.DAL; using HH.WMS.DAL.InStock; using HH.WMS.Entitys; using HH.WMS.Entitys.Basic; using HH.WMS.Entitys.Entitys; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HH.WMS.BLL.InStock { public class TN_WM_ITEMBACK_MSTBLL : DapperBaseBLL { #region 保存还料数据 /// /// 保存还料数据 /// /// 还料实体 /// 用户实体 /// public OperateResult SaveItemBack(ItemOnShelfEntity entity, RedisUserEntity userEntity) { OperateResult operateResult = new OperateResult(); try { if (entity.row.Count > 0) { TN_WM_ITEMBACK_MSTEntity mstEntity = new TN_WM_ITEMBACK_MSTEntity(); List dtlEntityList = new List(); string postData = "{\"appCode\":\"AutoWMS\",\"ruleName\":\"" + Constants.ItemBackNo + "\",\"orgId\":\"" + userEntity.CN_S_ORG_GUID + "\",\"orgFlag\":\"" + userEntity.CN_S_ORGFLAG + "\"}"; string opNo = WebApiManager.HttpAutoBom_Post("api/BillRule/GenBillNo", postData); if (string.IsNullOrEmpty(opNo)) { return OperateResult.Error("生成还料单号失败!"); } Log.Info("===>生成还料单号:====>", opNo); #region 拼接主表数据 mstEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper(); mstEntity.CN_S_OWNER = entity.row[0].CN_S_OWNER.ToString(); mstEntity.CN_S_OP_NO = opNo; mstEntity.CN_S_STATE = Constants.State_New; mstEntity.CN_S_CREATOR = userEntity.CN_S_LOGIN; mstEntity.CN_S_CREATOR_BY = userEntity.CN_S_NAME; mstEntity.CN_T_CREATE = DateTime.Now; mstEntity.CN_S_MODIFY = userEntity.CN_S_LOGIN; mstEntity.CN_S_MODIFY_BY = userEntity.CN_S_NAME; mstEntity.CN_T_MODIFY = DateTime.Now; #endregion Log.Info("===>生成还料主表:====>", JsonConvert.SerializeObject(mstEntity)); int rowIndex = 1; foreach (var item in entity.row) { #region 拼接子表数据 TN_WM_ITEMBACK_DTLEntity dtlEntity = new TN_WM_ITEMBACK_DTLEntity(); dtlEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper(); dtlEntity.CN_S_OP_NO = opNo; dtlEntity.CN_N_ROW_NO = rowIndex; dtlEntity.CN_S_UNIQUE_CODE = ""; dtlEntity.CN_S_LOT_NO = item.CN_S_LOT_NO; dtlEntity.CN_S_SERIAL_NO = item.CN_S_SERIAL_NO; dtlEntity.CN_S_PRODUCTION_BATCH = item.CN_S_PRODUCTION_BATCH; dtlEntity.CN_S_ITEM_CODE = item.CN_S_ITEM_CODE; dtlEntity.CN_S_ITEM_NAME = item.CN_S_ITEM_NAME; dtlEntity.CN_S_ITEM_STATE = string.IsNullOrEmpty(item.CN_S_ITEM_STATE) ? Constants.ItemState_Qualified : item.CN_S_ITEM_STATE.ToString(); dtlEntity.CN_F_PURCHASE_PRICE = item.CN_F_PURCHASE_PRICE; dtlEntity.CN_F_RETAIL_PRICE = item.CN_F_RETAIL_PRICE; dtlEntity.CN_T_PRODUCTION = string.IsNullOrEmpty(item.CN_T_PRODUCTION.ToString()) ? Convert.ToDateTime("1970-01-01") : Convert.ToDateTime(item.CN_T_PRODUCTION); dtlEntity.CN_T_EXPIRATION = string.IsNullOrEmpty(item.CN_T_EXPIRATION.ToString()) ? Convert.ToDateTime("1970-01-01") : Convert.ToDateTime(item.CN_T_EXPIRATION); dtlEntity.CN_S_PACKING_UNIT = item.CN_S_PACKING_UNIT.ToString(); dtlEntity.CN_F_PACKING_QTY = Convert.ToDecimal(item.CN_F_PACKING_QTY); dtlEntity.CN_F_QUANTITY = Convert.ToDecimal(item.CN_F_QUANTITY); dtlEntity.CN_S_VENDOR_NO = item.CN_S_VENDOR_NO; dtlEntity.CN_S_VENDOR_NAME = item.CN_S_VENDOR_NAME; dtlEntity.CN_S_CREATOR = userEntity.CN_S_LOGIN; dtlEntity.CN_S_CREATOR_BY = userEntity.CN_S_NAME; dtlEntity.CN_T_CREATE = DateTime.Now; dtlEntity.CN_S_MODIFY = userEntity.CN_S_LOGIN; dtlEntity.CN_S_MODIFY_BY = userEntity.CN_S_NAME; dtlEntity.CN_T_MODIFY = DateTime.Now; dtlEntityList.Add(dtlEntity); rowIndex++; #endregion } Log.Info("===>生成还料子表:====>", JsonConvert.SerializeObject(dtlEntityList)); operateResult = UseTransaction(trans => { if (mstEntity != null) { //新增还料主表 CreateDAL>().Add(mstEntity, trans); } if (dtlEntityList.Any()) { //新增还料子表 CreateDAL>().AddRange(dtlEntityList, trans); } }); Log.Info("===>保存还料执行结果:====>", JsonConvert.SerializeObject(operateResult)); } } catch (Exception ex) { return OperateResult.Error(ex.Message.ToString()); } return operateResult; } #endregion /// /// 获取可还料单列表 /// /// 模糊查询条件:还料单号 /// public List GetItemBackList(string opNo) { return CreateDAL().GetItemBackList(opNo); } #region 根据单号获取主子表信息(PDA) /// /// 根据单号获取主子表信息 /// /// 模糊查询条件:还料单号 /// public TN_WM_ITEMBACK_MSTEntity GetItemBackMstAndDtl(string opNo) { TN_WM_ITEMBACK_MSTEntity mstEntity = CreateDAL>().GetSingleEntity(new { CN_S_OP_NO = opNo }); List dtlEntity = CreateDAL>().GetList(new { CN_S_OP_NO = opNo }); foreach (var item in dtlEntity) { AutoBomItemEntity itemEnity = BLLCreator.Create().GetItem(item.CN_S_ITEM_CODE); item.CN_S_MODEL = itemEnity == null ? "" : itemEnity.CN_S_MODEL; } mstEntity.DTLEntity = dtlEntity; return mstEntity; } #endregion } }