using HH.Redis.ReisModel; using HH.WMS.BLL.Interface; using HH.WMS.Common; using HH.WMS.DAL; using HH.WMS.DAL.Basic; using HH.WMS.DAL.InStock; using HH.WMS.Entitys; using HH.WMS.Entitys.Basic; using HH.WMS.Entitys.Common; using HH.WMS.Entitys.Entitys; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace HH.WMS.BLL.InStock { public class TN_WM_ARRIVALBLL : DapperBaseBLL { #region 新增到货单 /// /// 新增到货单 /// /// 到货单实体 /// /// [HANHE(XDL)] CREATED BY 2018-11-15 public OperateResult AddArrival(TN_WM_ARRIVAL_MSTEntity Entity, RedisUserEntity redisUserEntity) { TN_WM_LOT_INFOEntity lotInfo = new TN_WM_LOT_INFOEntity(); string oldLotCode = Entity.CN_S_LOT_CODE; if (string.IsNullOrEmpty(oldLotCode)) { string postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.BatchNo + "\",\"orgId\":\"" + redisUserEntity.CN_S_ORGCODE + "\",\"orgFlag\":\"" + redisUserEntity.CN_S_ORGFLAG + "\"}"; string CN_S_LOT_CODE = WebApiManager.HttpAutoBom_Post("Api/BillRule/GenBillNo", postData); Entity.CN_S_LOT_CODE = CN_S_LOT_CODE; lotInfo.CN_GUID = System.Guid.NewGuid().ToString().ToUpper(); lotInfo.CN_S_LOT_CODE = CN_S_LOT_CODE; lotInfo.CN_S_VENDOR_NO = Entity.CN_S_VENDOR_NO; lotInfo.CN_S_CREATOR = Entity.CN_S_CREATOR; lotInfo.CN_S_CREATOR_BY = Entity.CN_S_CREATOR_BY; lotInfo.CN_T_CREATE = DateTime.Now; } //子表数据集合 List DTLEntity = Entity.DTLEntity; OperateResult operateResult = UseTransaction(trans => { //新增主表 CreateDAL>().Add(Entity, trans); //新增子表 CreateDAL>().AddRange(DTLEntity, trans); if (string.IsNullOrEmpty(oldLotCode)) { CreateDAL>().Add(lotInfo, trans); } }); return operateResult; } #endregion #region 修改到货单 /// /// 修改到货单 /// /// 到货单实体 /// /// [HANHE(XDL)] CREATED BY 2018-11-15 public OperateResult UpdateArrival(TN_WM_ARRIVAL_MSTEntity entity) { //子表数据集合 List DTLEntity = entity.DTLEntity; OperateResult operateResult = UseTransaction(trans => { //修改主表 CreateDAL>().Update(entity, new { CN_S_ARRIVAL_NO = entity.CN_S_ARRIVAL_NO }, trans); //删除子表 CreateDAL>().Delete(new { CN_S_ARRIVAL_NO = entity.CN_S_ARRIVAL_NO }, trans); //新增子表 CreateDAL>().AddRange(DTLEntity, trans); }); return operateResult; } #endregion #region 删除到货单 /// /// 删除到货单 /// /// 到货单单号 /// /// [HANHE(XDL)] CREATED BY 2018-11-15 public OperateResult DeleteArrival(string arrivalNo) { OperateResult operateResult = UseTransaction(trans => { //删除主表 CreateDAL>().Delete(new { CN_S_ARRIVAL_NO = arrivalNo }, trans); //删除子表 CreateDAL>().Delete(new { CN_S_ARRIVAL_NO = arrivalNo }, trans); }); return operateResult; } #endregion #region 提交到货单 /// /// 提交到货单 /// /// 审批实体 /// /// [HANHE(XDL)] CREATED BY 2018-11-15 public OperateResult SubmitArrival(List entity, RedisUserEntity userEntity) { //获取策略:到货是否免审 TN_WM_ARRIVAL_MSTEntity inMst = BLLCreator.Create>().GetSingleEntity(new { CN_S_ARRIVAL_NO = entity[0].CN_S_FROM_NO }); if (inMst == null) { return OperateResult.Error("未获取到提交单据实体!"); } string ArrivalAutoAudit = GetStrategy(inMst.CN_S_STOCK_CODE, "ArrivalAutoAudit"); OperateResult operateResult = new OperateResult(); //到货单免审-自动审核 if (ArrivalAutoAudit == Constants.Y) { operateResult = AuditArrival(entity, userEntity); } else { operateResult = UseTransaction(trans => { //提交主表 CreateDAL().ExamineMst(entity, Constants.State_Submit, trans); //提交子表 CreateDAL().ExamineDtl(entity, Constants.State_Submit, trans); }); } return operateResult; } #endregion #region 审核到货单 List stockQtyList = new List();//影响仓库量表 List stockAreaQtyList = new List();//影响库区量表 /// /// 审核到货单 /// /// 审批实体 /// /// [HANHE(XDL)] CREATED BY 2018-11-15 public OperateResult AuditArrival(List entity, RedisUserEntity userEntity) { string arrivalNo = entity[0].CN_S_FROM_NO; TN_WM_ARRIVAL_MSTEntity inMst = BLLCreator.Create>().GetSingleEntity(new { CN_S_ARRIVAL_NO = entity[0].CN_S_FROM_NO }); List inDtl = BLLCreator.Create>().GetList(new { CN_S_ARRIVAL_NO = entity[0].CN_S_FROM_NO }); //入库单状态 string inCreaseState = Constants.State_New; //检验单状态 string inspectState = Constants.State_New; //到货是否需要检验 string ArrivalNeedInspect = GetStrategy(inMst.CN_S_STOCK_CODE, "ArrivalAutoInspect"); //到货是否自动生成入库单 string ArrivalAutoIncrease = GetStrategy(inMst.CN_S_STOCK_CODE, "ArrivalAutoIncrease"); //到货是否自动入库 string ArrivalAutoInStock = GetStrategy(inMst.CN_S_STOCK_CODE, "ArrivalAutoInStock"); //到货是否启用OMS对接 string isUseOms = GetStrategy(inMst.CN_S_STOCK_CODE, "IsUseOms"); TN_WM_INCREASE_INVENTORY_MSTEntity inMstEntity = new TN_WM_INCREASE_INVENTORY_MSTEntity(); TN_WM_INSPECT_MSTEntity inspectMstEntity = new TN_WM_INSPECT_MSTEntity(); if (ArrivalAutoInStock.Equals(Constants.Y)) { string postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.Rule_In + "\",\"orgId\":\"" + userEntity.CN_S_ORGCODE + "\",\"orgFlag\":\"" + userEntity.CN_S_ORGFLAG + "\"}"; string inOpNo = WebApiManager.HttpAutoBom_Post("Api/BillRule/GenBillNo", postData); //生成入库单号 if (inOpNo == "") { return OperateResult.Error("生成入库单号失败!"); } //生成入库单;审核 inMstEntity = DoCreateIncreateEntity(inOpNo, inMst, inDtl, entity); inCreaseState = Constants.State_Audit; inMstEntity.CN_S_STATE = inCreaseState; foreach (var item in inMstEntity.DTLEntity) { item.CN_S_STATE = inCreaseState; } //影响仓库库区 OperateResult qtyResult = DoCreateQtyEntity(inMstEntity); if (!qtyResult.Success) return qtyResult; } else { if (ArrivalNeedInspect.Equals(Constants.N)) { //undo生成检验单;已提交 暂不响应生成已提交状态的检验单 //inspectState== Constants.State_BeenCheck; //undo //if (ArrivalAutoIncrease.Equals(Constants.Y)) //{ string postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.Rule_In + "\",\"orgId\":\"" + userEntity.CN_S_ORGCODE + "\",\"orgFlag\":\"" + userEntity.CN_S_ORGFLAG + "\"}"; string inOpNo = WebApiManager.HttpAutoBom_Post("Api/BillRule/GenBillNo", postData); //生成入库单号 if (inOpNo == "") { return OperateResult.Error("生成入库单号失败!"); } //生成入库单;新建 inMstEntity = DoCreateIncreateEntity(inOpNo, inMst, inDtl, entity); inMstEntity.CN_S_STATE = inCreaseState; foreach (var item in inMstEntity.DTLEntity) { item.CN_S_STATE = inCreaseState; } //} } else { string postData = "{\"appCode\":\"" + Constants.appCode + "\",\"ruleName\":\"" + Constants.Rule_Inspect + "\",\"orgId\":\"" + userEntity.CN_S_ORGCODE + "\",\"orgFlag\":\"" + userEntity.CN_S_ORGFLAG + "\"}"; string inspectOpNo = WebApiManager.HttpAutoBom_Post("Api/BillRule/GenBillNo", postData); //生成检验单号 if (inspectOpNo == "") { return OperateResult.Error("生成检验单号失败!"); } //生成检验单;新建 inspectMstEntity = DoCreateInspectEntity(inspectOpNo, inMst, inDtl, entity); inspectMstEntity.CN_S_STATE = inspectState; foreach (var item in inspectMstEntity.DTLEntity) { item.CN_S_STATE = inspectState; } } } var opNoList = "";//单号拼接 List opArrivalNoList = new List(); foreach (TN_WM_B_EXAMINEEntity item in entity) { opArrivalNoList.Add(item.CN_S_FROM_NO); opNoList = opNoList + "'" + item.CN_S_FROM_NO + "',"; } opNoList = opNoList.Substring(1, opNoList.Length - 3);//获取数据类似: 123,'123,'321 OperateResult operateResult = UseTransaction(trans => { //是否启用OMS对接----WMS到货单审核调用OMS入库确认接口发送确认指令 if (isUseOms.Equals("Y")) { OperateResult Qir = new InfOMSRequest().ArrivalDoOmsConfirm(opArrivalNoList); if (!Qir.Success) { throw new Exception(Qir.Msg); } } if (!string.IsNullOrEmpty(inMstEntity.CN_S_OP_NO)) { //新增入库单主表 CreateDAL>().Add(inMstEntity, trans); //新增入库单子表 CreateDAL>().AddRange(inMstEntity.DTLEntity, trans); } if (!string.IsNullOrEmpty(inspectMstEntity.CN_S_INSPECT_NO)) { //新增检验单主表 CreateDAL>().Add(inspectMstEntity, trans); //新增检验单子表 CreateDAL>().AddRange(inspectMstEntity.DTLEntity, trans); } if (stockQtyList.Any()) { //影响仓库量表 CreateDAL().AddStockQty(stockQtyList, trans); } if (stockAreaQtyList.Any()) { //影响库区量表 CreateDAL().AddAreaQty(stockAreaQtyList, trans); } //审核主表 CreateDAL().ExamineMst(entity, Constants.State_Audit, trans); //审核子表 CreateDAL().ExamineDtl(entity, Constants.State_Audit, trans); //更新累积到货数 CreateDAL().UpdateAddupAllot(opNoList, trans); }); return operateResult; } #region 生成仓库库区实体 /// /// 生成仓库库区实体 /// /// private OperateResult DoCreateQtyEntity(TN_WM_INCREASE_INVENTORY_MSTEntity inMstEntity) { var inDtlList = inMstEntity.DTLEntity; foreach (var item in inDtlList) { string itemCode = item.CN_S_ITEM_CODE; AutoBomItemEntity itemenity = CreateDAL().GetItemEntity(itemCode); if (itemenity == null) { return OperateResult.Error("未获取到物料 " + itemCode + " 的实体!"); } string itemName = item.CN_S_ITEM_NAME; string itemState = item.CN_S_ITEM_STATE; string lotCode = inMstEntity.CN_S_LOT_NO; string productionBatch = item.CN_S_PRODUCTION_BATCH; string owner = inMstEntity.CN_S_OWNER; string stockCode = inMstEntity.CN_S_STOCK_CODE; decimal qty = item.CN_F_QUANTITY; DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); // 当地时区 long timeStamp = (long)(DateTime.Now - startTime).TotalMilliseconds; // 相差毫秒数 #region 拼接仓库量表实体 stockQtyList.Add(new TN_WM_B_STOCK_QTYEntity() { CN_GUID = System.Guid.NewGuid().ToString().ToUpper(), CN_S_OWNER = owner, CN_S_ITEM_CODE = itemCode, CN_S_ITEM_NAME = itemName, CN_S_ITEM_STATE = itemState, CN_S_LOT_NO = lotCode, CN_S_PRODUCTION_BATCH = productionBatch, CN_S_STOCK_CODE = stockCode, CN_F_QUANTITY = qty, CN_F_PLANNED_QTY = 0, CN_F_ALLOC_QTY = 0, CN_F_PRELOCK_QTY = 0, CN_S_TIMESTAMP = timeStamp.ToString(), CN_S_FIGURE_NO = itemenity.CN_S_FIGURE_NO, CN_S_MEASURE_UNIT = itemenity.CN_S_MEASURE_UNIT, CN_S_MODEL = itemenity.CN_S_MODEL }); #endregion List areaList = CreateDAL().GetSHLocationArea(Constants.ReceivingArea); if (!areaList.Any()) { return OperateResult.Error("未获取到收货区实体,请配置库区<收货区>!"); } #region 拼接库区量表实体 stockAreaQtyList.Add(new TN_WM_B_AREA_QTYEntity() { CN_GUID = System.Guid.NewGuid().ToString().ToUpper(), CN_S_OWNER = owner, CN_S_ITEM_CODE = itemCode, CN_S_ITEM_NAME = itemName, CN_S_ITEM_STATE = itemState, CN_S_LOT_NO = lotCode, CN_S_PRODUCTION_BATCH = productionBatch, CN_S_STOCK_CODE = stockCode, CN_S_STOCK_AREA = areaList[0].CN_S_AREA_CODE, CN_F_QUANTITY = Convert.ToDecimal(qty), CN_F_PLANNED_QTY = 0, CN_F_ALLOC_QTY = 0, CN_S_TIMESTAMP = timeStamp.ToString(), CN_S_FIGURE_NO = itemenity.CN_S_FIGURE_NO, CN_S_MEASURE_UNIT = itemenity.CN_S_MEASURE_UNIT, CN_S_MODEL = itemenity.CN_S_MODEL }); #endregion } return OperateResult.Succeed(""); } #endregion #region 生成入库单实体 /// ///生成入库单实体 /// /// 入库单号-新生成 /// 到货单主表 /// 到货单子表 /// public TN_WM_INCREASE_INVENTORY_MSTEntity DoCreateIncreateEntity(string inOpNo, TN_WM_ARRIVAL_MSTEntity inMst, List inDtl, List entity) { TN_WM_INCREASE_INVENTORY_MSTEntity inMstEntity = new TN_WM_INCREASE_INVENTORY_MSTEntity(); #region 生成入库单主子表 inMstEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper(); inMstEntity.CN_S_OP_NO = inOpNo; inMstEntity.CN_T_OPERATE = inMst.CN_T_DATE; inMstEntity.CN_T_MODIFY = DateTime.Now; inMstEntity.CN_T_CREATE = DateTime.Now; inMstEntity.CN_S_VENDOR_NO = inMst.CN_S_VENDOR_NO; inMstEntity.CN_S_VENDOR_NAME = inMst.CN_S_VENDOR_NAME; inMstEntity.CN_S_STOCK_CODE = inMst.CN_S_STOCK_CODE; inMstEntity.CN_S_STATE = Constants.State_New; inMstEntity.CN_S_OWNER = Constants.DefaultOwner; inMstEntity.CN_S_OPERATOR = inMst.CN_S_OPERATOR; inMstEntity.CN_S_OP_TYPE = inMst.CN_S_OP_TYPE; inMstEntity.CN_S_OP_FROM = "到货单"; inMstEntity.CN_S_FROM_NO = inMst.CN_S_ARRIVAL_NO; inMstEntity.CN_S_MODIFY = entity[0].CN_S_CREATOR; inMstEntity.CN_S_MODIFY_BY = entity[0].CN_S_CREATOR_BY; inMstEntity.CN_S_LOT_NO = inMst.CN_S_LOT_CODE; inMstEntity.CN_S_CREATOR = entity[0].CN_S_CREATOR; inMstEntity.CN_S_CREATOR_BY = entity[0].CN_S_CREATOR_BY; inMstEntity.CN_S_NOTE = inMst.CN_S_NOTE; List dtlEntityList = new List(); foreach (var item in inDtl) { TN_WM_INCREASE_INVENTORY_DTLEntity dtlEntity = new TN_WM_INCREASE_INVENTORY_DTLEntity(); dtlEntity.CN_GUID = System.Guid.NewGuid().ToString().ToUpper(); dtlEntity.CN_T_PRODUCTION = item.CN_T_PRODUCTION; dtlEntity.CN_T_MODIFY = DateTime.Now; dtlEntity.CN_T_CREATE = DateTime.Now; dtlEntity.CN_T_EXPIRATION = item.CN_T_EXPIRATION; dtlEntity.CN_S_STATE = Constants.State_New; dtlEntity.CN_S_SERIAL_NO = item.CN_S_SERIAL_NO; dtlEntity.CN_S_PRODUCTION_BATCH = item.CN_S_PRODUCTION_BATCH; dtlEntity.CN_S_OP_NO = inOpNo; dtlEntity.CN_S_MSTGUID = inMstEntity.CN_GUID; dtlEntity.CN_S_SERIAL_NO = item.CN_S_SERIAL_NO; dtlEntity.CN_S_MODIFY = entity[0].CN_S_CREATOR; dtlEntity.CN_S_MODIFY_BY = entity[0].CN_S_CREATOR_BY; dtlEntity.CN_S_MODEL = item.CN_S_MODEL; dtlEntity.CN_S_MEASURE_UNIT = item.CN_S_MEASURE_UNIT; dtlEntity.CN_S_ITEM_STATE = item.CN_S_ITEM_STATE; dtlEntity.CN_S_ITEM_NAME = item.CN_S_ITEM_NAME; dtlEntity.CN_S_ITEM_CODE = item.CN_S_ITEM_CODE; dtlEntity.CN_S_FIGURE_NO = item.CN_S_FIGURE_NO; dtlEntity.CN_S_CREATOR = entity[0].CN_S_CREATOR; dtlEntity.CN_S_CREATOR_BY = entity[0].CN_S_CREATOR_BY; dtlEntity.CN_S_ARRIVAL_QTY = item.CN_F_QUANTITY == null ? "" : item.CN_F_QUANTITY.ToString(); dtlEntity.CN_N_ROW_NO = item.CN_N_ROW_NO; dtlEntity.CN_F_WARRNTY_PARTS = item.CN_F_WARRNTY_PARTS; dtlEntity.CN_F_UPSHELF_QTY = 0; dtlEntity.CN_F_QUANTITY = item.CN_F_QUANTITY == null ? 0 : Convert.ToDecimal(item.CN_F_QUANTITY.ToString()); dtlEntity.CN_F_PRINTING_QTY = 0; dtlEntity.CN_F_PLAN_PRICE = 0; dtlEntity.CN_F_PLAN_MONEY = 0; dtlEntity.CN_F_ALLOT_QTY = 0; dtlEntity.CN_F_ADD_ONTRAY_QTY = 0; dtlEntity.CN_S_NOTE = item.CN_S_NOTE; dtlEntity.CN_F_ACTUAL_PRICE = item.CN_F_PURCHASE_PRICE; dtlEntity.CN_F_ACTUAL_MONEY = (item.CN_F_PURCHASE_PRICE == null ? 0 : item.CN_F_PURCHASE_PRICE) * item.CN_F_QUANTITY == null ? 0 : Convert.ToDecimal(item.CN_F_QUANTITY.ToString()); dtlEntity.CN_C_IS_SCRAP = Constants.N; dtlEntity.CN_C_IS_BALANCE = Constants.N; dtlEntityList.Add(dtlEntity); } inMstEntity.DTLEntity = dtlEntityList; return inMstEntity; #endregion } #endregion #region 生成检验单实体 /// ///生成检验单实体 /// /// 检验单号-新生成 /// 到货单主表 /// 到货单子表 /// public TN_WM_INSPECT_MSTEntity DoCreateInspectEntity(string inspectOpNo, TN_WM_ARRIVAL_MSTEntity inMst, List inDtl, List entity) { TN_WM_INSPECT_MSTEntity inMstEntity = new TN_WM_INSPECT_MSTEntity(); #region 生成检验单主子表 inMstEntity.CN_S_INSPECT_NO = inspectOpNo; inMstEntity.CN_S_INSPECT_TYPE = "全检"; inMstEntity.CN_S_OWNER = inMst.CN_S_OWNER; inMstEntity.CN_T_DATE = null; // inMstEntity.CN_S_OPERATOR = inMst.CN_S_OPERATOR; inMstEntity.CN_S_STATE = Constants.State_New; inMstEntity.CN_S_NOTE = inMst.CN_S_NOTE; inMstEntity.CN_S_INSPECT_DEPT = ""; inMstEntity.CN_S_OP_TYPE = inMst.CN_S_OP_TYPE; inMstEntity.CN_S_FROM_NO = inMst.CN_S_ARRIVAL_NO; inMstEntity.CN_S_CREATOR = entity[0].CN_S_CREATOR; inMstEntity.CN_S_CREATOR_BY = entity[0].CN_S_CREATOR_BY; inMstEntity.CN_T_CREATE = DateTime.Now; inMstEntity.CN_S_MODIFY = entity[0].CN_S_CREATOR; inMstEntity.CN_S_MODIFY_BY = entity[0].CN_S_CREATOR_BY; inMstEntity.CN_T_MODIFY = DateTime.Now; List dtlEntityList = new List(); foreach (var item in inDtl) { AutoBomItemEntity itemenity = CreateDAL().GetItemEntity(item.CN_S_ITEM_CODE); TN_WM_INSPECT_DTLEntity dtlEntity = new TN_WM_INSPECT_DTLEntity(); dtlEntity.CN_S_INSPECT_NO = inspectOpNo; dtlEntity.CN_N_ROW_NO = item.CN_N_ROW_NO; dtlEntity.CN_S_SERIAL_NO = item.CN_S_SERIAL_NO; dtlEntity.CN_S_ITEM_CODE = item.CN_S_ITEM_CODE; dtlEntity.CN_S_ITEM_NAME = item.CN_S_ITEM_NAME; dtlEntity.CN_C_IS_WARRANTY_PARTS = itemenity.CN_C_IS_WARRNTY_PARTS; dtlEntity.CN_S_MEASURE_UNIT = itemenity.CN_S_MEASURE_UNIT; dtlEntity.CN_F_QUANTITY = item.CN_F_QUANTITY == null ? 0 : Convert.ToDecimal(item.CN_F_QUANTITY.ToString()); dtlEntity.CN_F_QUALIFIED = item.CN_F_QUANTITY == null ? 0 : Convert.ToDecimal(item.CN_F_QUANTITY.ToString()); dtlEntity.CN_F_UNQUALIFIED = 0; dtlEntity.CN_S_STATE = Constants.State_New; dtlEntity.CN_S_FROM_NO = item.CN_S_ARRIVAL_NO; dtlEntity.CN_S_FROM_ROW_NO = item.CN_N_ROW_NO; dtlEntity.CN_S_NOTE = item.CN_S_NOTE; dtlEntity.CN_S_FIGURE_NO = itemenity.CN_S_FIGURE_NO; dtlEntity.CN_S_MODEL = itemenity.CN_S_MODEL; dtlEntity.CN_S_CREATOR = entity[0].CN_S_CREATOR; dtlEntity.CN_S_CREATOR_BY = entity[0].CN_S_CREATOR_BY; dtlEntity.CN_T_CREATE = DateTime.Now; dtlEntity.CN_S_MODIFY = entity[0].CN_S_CREATOR; dtlEntity.CN_S_MODIFY_BY = entity[0].CN_S_CREATOR_BY; dtlEntity.CN_T_MODIFY = DateTime.Now; dtlEntityList.Add(dtlEntity); } inMstEntity.DTLEntity = dtlEntityList; return inMstEntity; #endregion } #endregion #endregion #region 反审到货单 /// /// 反审到货单 /// /// 审批实体 /// /// [HANHE(XDL)] CREATED BY 2018-11-15 public OperateResult ReAuditArrival(List entity) { TN_WM_ARRIVAL_MSTEntity inMst = BLLCreator.Create>().GetSingleEntity(new { CN_S_ARRIVAL_NO = entity[0].CN_S_FROM_NO }); TN_WM_INCREASE_INVENTORY_MSTEntity inMstEntity = CreateDAL>().GetSingleEntity(new { CN_S_FROM_NO = entity[0].CN_S_FROM_NO }); if (inMstEntity != null) { if (inMstEntity.CN_S_STATE != Constants.State_New) { return OperateResult.Error("反审失败!该到货单已进入入库单流程!"); } } TN_WM_INSPECT_MSTEntity inspectMstEntity = CreateDAL>().GetSingleEntity(new { CN_S_FROM_NO = entity[0].CN_S_FROM_NO }); if (inspectMstEntity != null) { if (inspectMstEntity.CN_S_STATE != Constants.State_New) { return OperateResult.Error("反审失败!该到货单已进入检验单流程!"); } } string opNoList = ""; List opArrivalNoList = new List(); foreach (TN_WM_B_EXAMINEEntity item in entity) { opNoList = opNoList + "'" + item.CN_S_FROM_NO + "',"; opArrivalNoList.Add(item.CN_S_FROM_NO); } if (!string.IsNullOrEmpty(opNoList)) { opNoList = opNoList.Substring(0, opNoList.Length - 1); } //到货是否需要检验 string ArrivalNeedInspect = GetStrategy(inMst.CN_S_STOCK_CODE, "ArrivalAutoInspect"); //到货是否自动生成入库单 string ArrivalAutoIncrease = GetStrategy(inMst.CN_S_STOCK_CODE, "ArrivalAutoIncrease"); //到货是否自动入库 string ArrivalAutoInStock = GetStrategy(inMst.CN_S_STOCK_CODE, "ArrivalAutoInStock"); //到货是否启用OMS对接 string isUseOms = GetStrategy(inMst.CN_S_STOCK_CODE, StrategyKey.IsUseOms); OperateResult operateResult = UseTransaction(trans => { //是否启用OMS对接----WMS到货单反审核调用OMS接口发送反审指令 if (isUseOms.Equals("Y")) { OperateResult Qir = new InfOMSRequest().ReArrivalDoOmsConfirm(opArrivalNoList); if (!Qir.Success) { throw new Exception(Qir.Msg); } } //无需检验的情况下 if (ArrivalNeedInspect == Constants.N) { //自动生成入库单 且入库单状态是新建 if (inMstEntity.CN_S_STATE == Constants.State_New) //ArrivalAutoIncrease == Constants.Y && { //条件符合,删除入库单主子表 BLLCreator.Create>().Delete(new { CN_S_OP_NO = inMstEntity.CN_S_OP_NO }); BLLCreator.Create>().Delete(new { CN_S_OP_NO = inMstEntity.CN_S_OP_NO }); } } else { //自动生成检验单 且检验单状态是新建 if (inspectMstEntity.CN_S_STATE == Constants.State_New) //ArrivalAutoIncrease == Constants.Y && { //条件符合,删除检验单主子表 BLLCreator.Create>().Delete(new { CN_S_INSPECT_NO = inspectMstEntity.CN_S_INSPECT_NO }); BLLCreator.Create>().Delete(new { CN_S_INSPECT_NO = inspectMstEntity.CN_S_INSPECT_NO }); } } if (ArrivalAutoInStock == Constants.Y) { //影响仓库量表 CreateDAL().DeleteStockQtyArr(opNoList, trans); //影响库区量表 CreateDAL().DeleteAreaQtyArr(opNoList, trans); } //反审主表 CreateDAL().ExamineMst(entity, Constants.State_ReAudit, trans); //反审子表 CreateDAL().ExamineDtl(entity, Constants.State_ReAudit, trans); //撤销累积到货数 CreateDAL().DeleteAddupAllot(opNoList, trans); }); return operateResult; } #endregion #region 驳回到货单 /// /// 驳回到货单 /// /// 审批实体 /// 驳回记录实体 /// /// [HANHE(XDL)] CREATED BY 2018-11-14 public OperateResult RejectArrival(List entity, TN_WM_B_REJECTEntity rejectEntity) { OperateResult operateResult = UseTransaction(trans => { //驳回主表 CreateDAL().ExamineMst(entity, Constants.State_Reject, trans); //驳回子表 CreateDAL().ExamineDtl(entity, Constants.State_Reject, trans); //插入驳回记录 CreateDAL>().Add(rejectEntity, trans); }); return operateResult; } #endregion #region 入库单联机新增-选择来源 /// /// 入库单页面,选择来源单据 /// /// 实体 /// /// [HANHE(XDL)] CREATED BY 2018-11-22 public OperateResult GetFromArrivalList(SearchModel searchModel) { return CreateDAL().GetFromArrivalList(searchModel); } public List GetFromArrivalDtl(string arrivalNo) { return CreateDAL().GetFromArrivalDtl(arrivalNo); } #endregion #region 查询到货单列表 /// /// 查询到货单列表 /// /// 实体 /// /// [HANHE(XDL)] CREATED BY 2018-11-24 public DataTable GetArrivalList(SearchModel searchModel, out long total, bool isExport) { DataTable dt = CreateDAL().GetArrivalList(searchModel, out total, isExport); dt.Columns["CN_S_STOCK_CODE"].ReadOnly = false; foreach (DataRow dr in dt.Rows) { dr["CN_S_STOCK_CODE"] = GetStock().Find(x => x.CN_S_STOCK_CODE.Equals(dr["CN_S_STOCK_CODE"].ToString().Trim())).CN_S_STOCK_NAME; } return dt; } /// /// 根据单号获取主子表信息 /// /// 模糊查询条件:到货单号 /// /// [HANHE(XDL)] CREATED BY 2018-11-24 public TN_WM_ARRIVAL_MSTEntity GetArrivalMstAndDtl(string arrivalNo) { TN_WM_ARRIVAL_MSTEntity arrivalMstEntity = CreateDAL>().GetSingleEntity(new { CN_S_ARRIVAL_NO = arrivalNo }); List arrivalDtlEntity = CreateDAL>().GetList(new { CN_S_ARRIVAL_NO = arrivalNo }); foreach (var entity in arrivalDtlEntity) { AutoBomItemEntity itemenity = CreateDAL().GetItemEntity(entity.CN_S_ITEM_CODE); entity.CN_F_WARRNTY_PARTS = itemenity.CN_F_WARRNTY_PARTS; } arrivalMstEntity.DTLEntity = arrivalDtlEntity; return arrivalMstEntity; } #endregion #region 查询到货单主表 /// /// 查询到货单主表 /// /// /// [HANHE(lt)] CREATED BY 2018-11-24 public DataTable GetMstList(string sqlwhere) { return CreateDAL().GetMstList(sqlwhere); } #endregion #region 查询到货单子表 /// /// 查询到货单子表 /// /// /// [HANHE(lt)] CREATED BY 2018-11-24 public DataTable GetDtlList(string sqlwhere) { return CreateDAL().GetDtlList(sqlwhere); } #endregion #region 查询到货单 /// /// 查询到货单子表 /// /// /// [HANHE(lt)] CREATED BY 2018-11-24 public DataTable GetMstJoinDtl(string sqlwhere) { return CreateDAL().GetMstJoinDtl(sqlwhere); } #endregion } }