- BP名:BatchCreateItemByDTOSRVProxy
- 命名空间:UFIDA.U9.ISV.Item.Proxy
- dll:C:\yonyou\U9V60\Portal\ApplicationServer\Libs\UFIDA.U9.ISV.Item.Agent.dll
示例代码
using System; using System.Collections.Generic; using System.Data; using Cust.QR.ZJLHBP.Public; using UFIDA.U9.Base; using UFIDA.U9.Base.Organization; using UFIDA.U9.Base.PropertyTypes; using UFIDA.U9.CBO.Pub.Controller; using UFIDA.U9.CBO.Pub.Controller.Proxy; using UFIDA.U9.CBO.SCM.Item; using UFIDA.U9.CBO.SCM.TallyBy; using UFIDA.U9.ISV.Item.Proxy; using UFSoft.UBF.AopFrame; using UFSoft.UBF.Business; using UFSoft.UBF.PL.Engine; using ItemInspectionInfoDTOData = UFIDA.U9.ISV.Item.ItemInspectionInfoDTOData; using ItemInvInfoDTOData = UFIDA.U9.ISV.Item.ItemInvInfoDTOData; using ItemMasterDTOData = UFIDA.U9.ISV.Item.ItemMasterDTOData; using ItemMFGInfoDTOData = UFIDA.U9.ISV.Item.ItemMFGInfoDTOData; using ItemMRPInfoDTOData = UFIDA.U9.ISV.Item.ItemMRPInfoDTOData; using ItemPurchaseInfoDTOData = UFIDA.U9.ISV.Item.ItemPurchaseInfoDTOData; using ItemSaleInfoDTOData = UFIDA.U9.ISV.Item.ItemSaleInfoDTOData; internal partial class AutoCreateItemImpementStrategy : BaseStrategy { public AutoCreateItemImpementStrategy() public override object Do(object obj) { AutoCreateItem bpObj = (AutoCreateItem)obj; Logger logger = Logger.GetInstance(); //所有料品都有数据中心(00)创建然后下发 Organization org = Organization.Finder.Find("Code = '00'"); // 需要生成流水号的料品 ItemMaster.EntityList itemMasters = ItemMaster.Finder.FindAll( string.Format("Description = '需要建流水号' and Org = '{0}' and code = '0101000001' ", org.ID)); foreach (ItemMaster itemMaster in itemMasters) { if (itemMaster.Code.Contains(".")) { continue; } // 右匹配查看生成流水号的料品 string sql = string.Format( @"select id,code from CBO_ItemMaster where code like '{0}%' and DescFlexField_PrivateDescSeg15 != 'true' and org = '{1}' ORDER BY CreatedOn DESC; select id from CBO_ItemMaster where code like '{0}%' and org = '{1}'; ", itemMaster.Code + ".",org.ID); // 执行sql DataSet dataset = PubHelper.RunSQLOutDataSet(sql, null); // 没有创建过流水号料品 try { if (dataset != null && dataset.Tables[1].Rows.Count <= 0) { BatchCreateItemByDTOSRVProxy proxy = new BatchCreateItemByDTOSRVProxy(); proxy.ItemMasterDTOs = new List<ItemMasterDTOData>(); proxy.TargetOrgCode = Context.LoginOrg.Code; proxy.TargetOrgName = Context.LoginOrg.Name; for (int i = 1; i <= 50; i++) { ItemMasterDTOData itemMasterDtoData = CopyItemMasterDtoData(itemMaster); // 处理下料号,料号为不同 PadLeft(6, '0') 使字符串长度达到 6,不足部分填充 0。 itemMasterDtoData.Code = itemMaster.Code + "." + i.ToString().PadLeft(6, '0'); proxy.ItemMasterDTOs.Add(itemMasterDtoData); } List<ItemMasterData> itemMasterDatas = proxy.Do(); foreach (ItemMasterData itemMasterData in itemMasterDatas) { ItemMaster master = ItemMaster.Finder.Find(string.Format("code = '{0}'", itemMasterData.Code)); CopyItemMaster(master); } // 结束本次循环作用于 foreach (ItemMaster itemMaster in itemMasters)这部分的代码 continue; } if (dataset != null && dataset.Tables[0] != null) { // 剩余流水号数量不足50个 if (dataset.Tables[0].Rows.Count < 50 && dataset.Tables[0].Rows.Count > 0) { // 差多少? int balance = 50 - dataset.Tables[0].Rows.Count; BatchCreateItemByDTOSRVProxy proxy = new BatchCreateItemByDTOSRVProxy(); proxy.ItemMasterDTOs = new List<ItemMasterDTOData>(); proxy.TargetOrgCode = Context.LoginOrg.Code; proxy.TargetOrgName = Context.LoginOrg.Name; // 最大的流水号 string maxLiuShui = dataset.Tables[0].Rows[0]["code"].ToString(); string[] result = maxLiuShui.Split('.'); // long 类型是数值类型,它不会存储前导零。因此,无法直接将 "000001" 转换为 long 并保留前导零。下面有处理加上前面的0 long liushuihao = long.Parse(result[1]); for (int i = 0; i <= balance; i++) { ItemMasterDTOData itemMasterDtoData = CopyItemMasterDtoData(itemMaster); // PadLeft(6, '0') 使字符串长度达到 6,不足部分填充 0。 itemMasterDtoData.Code = result[0] + "." + liushuihao++.ToString().PadLeft(6, '0'); proxy.ItemMasterDTOs.Add(itemMasterDtoData); } proxy.Do(); } } } } catch (Exception e) { logger.LogError("自动创建流水料品失败:"); logger.LogError(e.ToString()); } } return null; } private ItemMasterDTOData CopyItemMasterDtoData(ItemMaster itemMaster) { ItemMasterDTOData itemMasterDto = new ItemMasterDTOData(); itemMasterDto.SysState = ObjectState.Inserted; itemMasterDto.Name = itemMaster.Name; itemMasterDto.SPECS = itemMaster.SPECS; itemMasterDto.Effective = new EffectiveData(); itemMasterDto.Effective.IsEffective = true; itemMasterDto.Effective.EffectiveDate = DateTime.Now; itemMasterDto.Effective.DisableDate = DateTime.Parse("9999.12.31"); if (itemMaster.MfgInfo != null) { //料品生产信息 itemMasterDto.MfgInfo = new ItemMFGInfoDTOData(); itemMasterDto.MfgInfo.IsSueOverType = -1; itemMasterDto.MfgInfo.BuildShrinkageRate = 1; itemMasterDto.MfgInfo.IsOutputControlFlag = false; //图号 itemMasterDto.MfgInfo.PictureCode = itemMaster.MfgInfo.PictureCode; itemMasterDto.MfgInfo.OperateType = -1; if (itemMaster.MfgInfo.ProductDepartment != null) { itemMasterDto.MfgInfo.ProductDepartment = new CommonArchiveDataDTOData(); itemMasterDto.MfgInfo.ProductDepartment.ID = itemMaster.MfgInfo.ProductDepartment.ID; } //计划.BOM控制方式 if (itemMaster.MfgInfo.BomControlMode != null) { itemMasterDto.MfgInfo.BomControlMode = itemMaster.MfgInfo.BomControlMode.Value; } //生产.生产数量选择 if (itemMaster.MfgInfo.BuildQuanSelectType != null) { itemMasterDto.MfgInfo.BuildQuanSelectType = itemMaster.MfgInfo.BuildQuanSelectType.Value; } } if (itemMaster.MrpInfo != null) { //料品MRP(计划)信息 itemMasterDto.MrpInfo = new ItemMRPInfoDTOData(); itemMasterDto.MrpInfo.IsTraceRequirement = true; //计划.计划方法 // if (itemMaster.InventoryInfo.InventoryPlanningMethod != InventoryPlanningMethodEnum.UseMRP) { // if (itemMaster.MrpInfo.MRPPlanningType != null) { // itemMasterDto.MrpInfo.MRPPlanningType = itemMaster.MrpInfo.MRPPlanningType.Value; // } // } //计划.预测控制 if (itemMaster.MrpInfo.ForecastContorlType != null) { itemMasterDto.MrpInfo.ForecastContorlType = itemMaster.MrpInfo.ForecastContorlType.Value; } //计划.计划时界原则 if (itemMaster.MrpInfo.PlanningTimeFenceRuleType != null) { itemMasterDto.MrpInfo.PlanningTimeFenceRuleType = itemMaster.MrpInfo.PlanningTimeFenceRuleType.Value; } //计划.计划时界类型 if (itemMaster.MrpInfo.PlanningTimeFence != null) { itemMasterDto.MrpInfo.PlanningTimeFence = itemMaster.MrpInfo.PlanningTimeFence.Value; } //计划.需求时界原则 if (itemMaster.MrpInfo.DemandTimeFenceRuleType != null) { itemMasterDto.MrpInfo.DemandTimeFenceRuleType = itemMaster.MrpInfo.DemandTimeFenceRuleType.Value; } //计划.需求时界类型 if (itemMaster.MrpInfo.DemandTimeFence != null) { itemMasterDto.MrpInfo.DemandTimeFence = itemMaster.MrpInfo.DemandTimeFence.Value; } //计划.发放时界类型 if (itemMaster.MrpInfo.ReleaseTimeFence != null) { itemMasterDto.MrpInfo.ReleaseTimeFence = itemMaster.MrpInfo.ReleaseTimeFence.Value; } /*采购预提前期*/ itemMasterDto.MrpInfo.PurForwardProcessLT = itemMaster.MrpInfo.PurForwardProcessLT; /*采购后提前期*/ itemMasterDto.MrpInfo.PurBackwardProcessLT = itemMaster.MrpInfo.PurBackwardProcessLT; /*采购处理提前期*/ itemMasterDto.MrpInfo.PurProcessLT = itemMaster.MrpInfo.PurProcessLT; //提前期批量 itemMasterDto.MrpInfo.LTBatch = itemMaster.MrpInfo.LTBatch; //变动提前期 itemMasterDto.MrpInfo.VarietyLT = itemMaster.MrpInfo.VarietyLT; /*固定提前期*/ itemMasterDto.MrpInfo.FixedLT = itemMaster.MrpInfo.FixedLT; /*默认计划员*/ if (itemMaster.MrpInfo.Planer != null) { itemMasterDto.MrpInfo.Planer = new CommonArchiveDataDTOData(itemMaster.MrpInfo.Planer.ID, itemMaster.MrpInfo.Planer.Code, itemMaster.MrpInfo.Planer.Name); } /*制造提前期*/ itemMasterDto.MrpInfo.SumManufactureLT = itemMaster.MrpInfo.SumManufactureLT; } itemMasterDto.InventoryInfo = new ItemInvInfoDTOData(); itemMasterDto.InventoryInfo.InventoryPlanningMethod = 4; //存储地点 if (itemMasterDto.InventoryInfo != null) { //料品库存信息 itemMasterDto.InventoryInfo = new ItemInvInfoDTOData(); itemMasterDto.InventoryInfo.Warehouse = new CommonArchiveDataDTOData(); if (itemMaster.InventoryInfo.Warehouse != null) { itemMasterDto.InventoryInfo.Warehouse.ID = itemMaster.InventoryInfo.Warehouse.ID; itemMasterDto.InventoryInfo.Warehouse.Code = itemMaster.InventoryInfo.Warehouse.Code; } itemMasterDto.InventoryInfo.WarehouseManager = new CommonArchiveDataDTOData(); if (itemMaster.InventoryInfo.WarehouseManager != null) { itemMasterDto.InventoryInfo.WarehouseManager.Code = itemMaster.InventoryInfo.WarehouseManager.Code; itemMasterDto.InventoryInfo.WarehouseManager.Name = itemMaster.InventoryInfo.WarehouseManager.Name; itemMasterDto.InventoryInfo.WarehouseManager.ID = itemMaster.InventoryInfo.WarehouseManager.ID; } itemMasterDto.InventoryInfo.PurchaseControlMode = InvQtyCtlTypeEnum.MaxStockLimit.Value; itemMasterDto.InventoryInfo.IsInvCalculateBySeiban = true; itemMasterDto.InventoryInfo.IsBalanceByProject = false; //库存规划.规划方法 //if (itemMaster.InventoryInfo.InventoryPlanningMethod != null) { // itemMasterDto.InventoryInfo.InventoryPlanningMethod = // itemMaster.InventoryInfo.InventoryPlanningMethod.Value; itemMasterDto.InventoryInfo.InventoryPlanningMethod = 4; // } //库存规划.安全存量法 if (itemMaster.InventoryInfo.SafetyStockType != null) { itemMasterDto.InventoryInfo.SafetyStockType = itemMaster.InventoryInfo.SafetyStockType.Value; } //库存规划.安全库存量 itemMasterDto.InventoryInfo.SafetyStockQty = itemMaster.InventoryInfo.SafetyStockQty; /*转换率加权*/ if (itemMaster.InventoryInfo != null) { itemMasterDto.InventoryInfo.ConvertRatio = itemMaster.InventoryInfo.ConvertRatio; } if (itemMaster.InventoryInfo != null && itemMaster.InventoryInfo.LotParam != null) { /*批号参数*/ itemMasterDto.InventoryInfo.LotParam = new CommonArchiveDataDTOData(); itemMasterDto.InventoryInfo.LotParam.Code = itemMaster.InventoryInfo.LotParam.Code; itemMasterDto.InventoryInfo.LotParam.ID = itemMaster.InventoryInfo.LotParam.ID; itemMasterDto.InventoryInfo.LotParam.Name = itemMaster.InventoryInfo.LotParam.Name; } /*序号参数*/ if (itemMaster.InventoryInfo != null && itemMaster.InventoryInfo.SnParam != null) { itemMasterDto.InventoryInfo.SnParam = new CommonArchiveDataDTOData(); itemMasterDto.InventoryInfo.SnParam.ID = itemMaster.InventoryInfo.SnParam.ID; itemMasterDto.InventoryInfo.SnParam.Code = itemMaster.InventoryInfo.SnParam.Code; itemMasterDto.InventoryInfo.SnParam.Name = itemMaster.InventoryInfo.SnParam.Name; } /*安全库存量*/ if (itemMaster.InventoryInfo != null) { itemMasterDto.InventoryInfo.SafetyStockQty = itemMaster.InventoryInfo.SafetyStockQty; } } //料品质量信息 itemMasterDto.InspectionInfo = new ItemInspectionInfoDTOData(); itemMasterDto.InspectionInfo.ID = itemMaster.InspectionInfo.ID; // 描述 // itemMasterDto.Description = itemMasterDto.Description; itemMasterDto.MainItemCategory = new CommonArchiveDataDTOData(); itemMasterDto.MainItemCategory.Code = itemMaster.MainItemCategory.Code; // 库存单位 itemMasterDto.InventorySecondUOM = new CommonArchiveDataDTOData(); itemMasterDto.InventorySecondUOM.Code = itemMaster.Code; // 库存主单位 itemMasterDto.InventoryUOM = new CommonArchiveDataDTOData(); itemMasterDto.InventoryUOM.Code = itemMaster.InventorySecondUOM.Code; // 重量单位 itemMasterDto.WeightUom = new CommonArchiveDataDTOData(); itemMasterDto.WeightUom.Code = itemMaster.InventoryUOM.Code; // 体积单位 itemMasterDto.BulkUom = new CommonArchiveDataDTOData(); itemMasterDto.BulkUom.Code = itemMaster.InventoryUOM.Code; itemMasterDto.SalesUOM = new CommonArchiveDataDTOData(); itemMasterDto.SalesUOM.Code = itemMaster.SalesUOM.Code; itemMasterDto.PurchaseUOM = new CommonArchiveDataDTOData(); itemMasterDto.PurchaseUOM.Code = itemMaster.PurchaseUOM.Code; itemMasterDto.PriceUOM = new CommonArchiveDataDTOData(); itemMasterDto.PriceUOM.Code = itemMaster.PriceUOM.Code; itemMasterDto.ManufactureUOM = new CommonArchiveDataDTOData(); itemMasterDto.ManufactureUOM.Code = itemMaster.ManufactureUOM.Code; itemMasterDto.CostUOM = new CommonArchiveDataDTOData(); itemMasterDto.CostUOM.Code = itemMaster.CostUOM.Code; // 领料单位 itemMasterDto.MaterialOutUOM = new CommonArchiveDataDTOData(); itemMasterDto.MaterialOutUOM.Code = itemMaster.MaterialOutUOM.Code; itemMasterDto.ItemFormAttribute = itemMaster.ItemFormAttribute.Value; itemMasterDto.IsInventoryEnable = true; //可库存交易 itemMasterDto.IsPurchaseEnable = true; // 可采购 itemMasterDto.IsSalesEnable = true; //可销售 itemMasterDto.IsBOMEnable = true; //可BOM itemMasterDto.IsMRPEnable = true; //可MRP itemMasterDto.IsVMIEnable = true; //VMI标志 itemMasterDto.IsOutsideOperationEnable = itemMaster.IsOutsideOperationEnable; //可委外 itemMasterDto.IsBuildEnable = itemMaster.IsBuildEnable; //可生产 itemMasterDto.IsVarRatio = true; if (itemMaster.PurchaseInfo != null) { //料品采购信息 itemMasterDto.PurchaseInfo = new ItemPurchaseInfoDTOData(); //理货规则 TallyBy putawayRule = TallyBy.FindByCode(Context.LoginOrg, "1"); if (putawayRule != null) itemMasterDto.PurchaseInfo.ReceiptModeAllowModify = true; itemMasterDto.PurchaseInfo.PriceSource = 2; itemMasterDto.PurchaseInfo.ReceiptMode = itemMaster.PurchaseInfo.ReceiptMode.Value; itemMasterDto.PurchaseInfo.IsNeedRequest = false; itemMasterDto.PurchaseInfo.ReceiptRule = new CommonArchiveDataDTOData(); itemMasterDto.PurchaseInfo.ReceiptRule.Code = "1"; //采购.配额供应商 if (itemMaster.PurchaseInfo.QuotaSupplier != null) { itemMasterDto.PurchaseInfo.QuotaSupplier = itemMaster.PurchaseInfo.QuotaSupplier.Value; } //采购.收货方式 if (itemMaster.PurchaseInfo.ReceiptType != null) { itemMasterDto.PurchaseInfo.ReceiptType = itemMaster.PurchaseInfo.ReceiptType.Value; } } //料品销售信息 if (itemMaster.SaleInfo != null) { itemMasterDto.SaleInfo = new ItemSaleInfoDTOData(); itemMasterDto.SaleInfo.SupplyOrg = new CommonArchiveDataDTOData(); itemMasterDto.SaleInfo.SupplyOrg.Code = Context.LoginOrg.Code; if (itemMaster.SaleInfo.LimitPriceMode != null) { itemMasterDto.SaleInfo.LimitPriceMode = itemMaster.SaleInfo.LimitPriceMode.Value; } //销售.供应来源 if (itemMaster.SaleInfo.SupplySource != null) { itemMasterDto.SaleInfo.SupplySource = itemMaster.SaleInfo.SupplySource.Value; } //销售.供应类型 if (itemMaster.SaleInfo.DemandTransType != null) { itemMasterDto.SaleInfo.DemandTransType = itemMaster.SaleInfo.DemandTransType.Value; } } //转换率策略 if (itemMaster.ConverRatioRule != null) { itemMasterDto.ConverRatioRule = itemMaster.ConverRatioRule.Value; } //双单位 itemMasterDto.IsDualUOM = itemMaster.IsDualUOM; //多单位 itemMasterDto.IsMultyUOM = itemMaster.IsMultyUOM; //库存单位重量 itemMasterDto.Weight = itemMaster.Weight; // itemMasterDto.MrpInfo = new ItemMRPInfoDTOData(); /*财务分类*/ if (itemMaster.AssetCategory != null) { itemMasterDto.AssetCategory = new CommonArchiveDataDTOData(); itemMasterDto.AssetCategory.ID = itemMaster.AssetCategory.ID; itemMasterDto.AssetCategory.Code = itemMaster.AssetCategory.Code; itemMasterDto.AssetCategory.Name = itemMaster.AssetCategory.Name; } /*专用料*/ itemMasterDto.IsSpecialItem = itemMaster.IsSpecialItem; return itemMasterDto; } }
版权属于:
心底有颗枇杷树
作品采用:
《
署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)
》许可协议授权
评论 (0)