public without sharing class InventoryHeaderCopyHandler extends Oly_TriggerHandler { private Map newMap; private Map oldMap; private List newList; private List oldList; private Set checkedApprovalIHIdSet = new Set(); // 需要追加共享的共享Object private static List shareList = new List(); // 已经放在追加共享List的Key private static Set shareSet = new Set(); private static List idList = new List(); // private static List cidList = new List(); private static Set updateAssetIdSet = new Set(); private static Map updateAssetMap = new Map(); // 20210427 you start public static Integer FIELDMAX = 35; // 20210427 you end public InventoryHeaderCopyHandler() { this.newMap = (Map) Trigger.newMap; this.oldMap = (Map) Trigger.oldMap; this.newList = (List) Trigger.new; this.oldList = (List) Trigger.old; } protected override void beforeInsert() { genInventoryReportNo(); // 盘点报告书编号生成 assignApprovalUsers(); // 分配审批用户 -- 经理(备品) & 部长(备品) & 总监(备品) } protected override void beforeUpdate() { idList = new List(); updateAssetMap = new Map(); assignApprovalUsers(); // 分配审批用户 -- 经理(备品) & 部长(备品) & 总监(备品) } protected override void afterUpdate() { // approvalIHD(); setShare(); if (shareList.size() > 0) { insert shareList; } System.debug(updateAssetMap); if (updateAssetMap.isEmpty() == false) { update updateAssetMap.values(); } if (idList.size() > 0) { //update by rentx 2021-05-13 start 1625 // LostReportHandler.Loaner_AutoGiveup(null, null, idList); // 20220224 ljh 113盘点 // LostReportHandler.Loaner_AutoGiveup(null, null, idList, null); //update by rentx 2021-05-13 end 1635 } /*if(cidList.size()>0){ for (Consum_Inventory_Detail_Copy__c id1 : cidList) { id1.Auto_Lost_item_giveup__c = true; } update cidList; }*/ } private void setShare() { for (Inventory_Header_Copy__c nObj: newList) { Inventory_Header_Copy__c oObj = oldMap.get(nObj.Id); if (nObj.Inventory_Status__c != nObj.Inventory_Status__c && nObj.Inventory_Status__c == '填写完毕') { List userList = new List(); userList.add(nObj.Jingli_Equipment_Id__c + '_Read'); userList.add(nObj.Buzhang_Equipment_Id__c + '_Read'); userList.add(nObj.Zongjian_Equipment_Id__c + '_Read'); // userList.add(nObj.RA_TongkuoZongjian_F__c + '_Read'); LostReportHandler.setSObjectShare('Inventory_Header__Share', 'Manual', nObj.Id, userList, nObj.OwnerId, shareSet, shareList); } } } /** * 盘点报告书编号生成规则 * [OCMA-自动生成年度-自动生成BJ-01(开始盘点日期对应的月份)] * 年度 可参考申请No的生成方式 * BJ 根据备品存放地来生成 (北京 备品中心:BJ 上海 备品中心:SH 广州 备品中心:GZ) */ private void genInventoryReportNo() { //20210427 you 1650 start SS_Batch_Column_Mapping__c mpdMapping = SS_Batch_Column_Mapping__c.getValues('Inventory_Header_Name');//盘点编码 Map HeaderMap = new Map(); for (Integer i = 1; i <= FIELDMAX; i++) { String lpadI = ('00' + i).right(3); String fromColumn = 'From_Column_' + lpadI + '__c'; String apiStr = String.valueOf(mpdMapping.get(fromColumn)); if (String.isBlank(apiStr) == false) { String ssColumn = 'SS_Column_' + lpadI + '__c'; String ssApiStr = String.valueOf(mpdMapping.get(ssColumn)); HeaderMap.put(apiStr,ssApiStr); } } //20210427 you 1650 end String reportNo = '', location = '', month = '',day = ''; for (Inventory_Header_Copy__c nObj : this.newList) { // 20210223 you WLIG-BV8CHF start // reportNo = 'OCMA-' + nObj.Report_No_Year__c + '-'; reportNo = 'OCMA-' + nObj.Report_No_Year_New__c + '-'; // 20210223 you WLIG-BV8CHF end //20210427 you 1650 start if(HeaderMap.containsKey(nObj.Internal_asset_location__c)){ if (nObj.Internal_asset_location__c == '北京 备品中心') { reportNo += 'BJ-'; } else if (nObj.Internal_asset_location__c == '上海 备品中心') { if(String.isBlank(nObj.Fixture_Header__c)){ reportNo += 'SH-'; } // Fixture_Header__c有值的是耗材的盘点表头 else{ reportNo += 'ET/DISP-'; } } else if (nObj.Internal_asset_location__c == '广州 备品中心') { reportNo += 'GZ-'; }else{ reportNo += 'BSC-'+HeaderMap.get(nObj.Internal_asset_location__c)+'-'; } } /** if (nObj.Internal_asset_location__c == '北京 备品中心') { reportNo += 'BJ-'; } else if (nObj.Internal_asset_location__c == '上海 备品中心') { if(String.isBlank(nObj.Fixture_Header__c)){ reportNo += 'SH-'; } // Fixture_Header__c有值的是耗材的盘点表头 else{ reportNo += 'ET/DISP-'; } } else if (nObj.Internal_asset_location__c == '广州 备品中心') { reportNo += 'GZ-'; } else if (nObj.Internal_asset_location__c == '青岛') {//20210423 you 1650 reportNo += 'QD-'; } **/ //20210427 you 1650 end month = String.valueOf(nObj.Inventory_Start_Date__c.month()); if(String.isNotBlank(month) && month.length() == 1){ month = '0' + month; } day = String.valueOf(nObj.Inventory_Start_Date__c.day()); if(String.isNotBlank(day) && day.length() == 1){ day = '0' + day; } reportNo += month+'-'+day; nObj.Name = reportNo; } } /** * 分配审批用户 -- 经理(备品) & 部长(备品) & 总监(备品) */ private void assignApprovalUsers() { for (Inventory_Header_Copy__c nObj : this.newList) { Inventory_Header_Copy__c oObj; if (Trigger.isUpdate) { oObj = this.oldMap.get(nObj.Id); } if (Trigger.isInsert || nObj.InventorySubmit_PIC__c != oObj.InventorySubmit_PIC__c || (oObj.Inventory_Status__c != '填写完毕' && nObj.Inventory_Status__c == '填写完毕')) { bp3_Setting__c conf = bp3_Setting__c.getOrgDefaults(); if (String.isNotBlank(nObj.Jingli_Equipment_Id__c)) { nObj.Jingli_Equipment__c = nObj.Jingli_Equipment_Id__c; } if (String.isNotBlank(nObj.Buzhang_Equipment_Id__c)) { nObj.Buzhang_Equipment__c = nObj.Buzhang_Equipment_Id__c; } /** 20210701 1650 you 华东得办事处是副总监 if (String.isNotBlank(nObj.Zongjian_Equipment_Id__c)) { nObj.Zongjian_Equipment__c = nObj.Zongjian_Equipment_Id__c; }**/ if(nObj.InventoryBenbu__c == '医疗华东营业本部' &&nObj.Internal_asset_location__c!= '广州 备品中心' && nObj.Internal_asset_location__c!= '北京 备品中心' && nObj.Internal_asset_location__c!= '上海 备品中心') { nObj.Zongjian_Equipment__c = conf.FuZongJian__c; } else { if (String.isNotBlank(nObj.Zongjian_Equipment_Id__c)) { nObj.Zongjian_Equipment__c = nObj.Zongjian_Equipment_Id__c; } } } } } // 20220224 ljh 113盘点 /*private void approvalIHD() { Set checkedApprovalIDSet = new Set(); for (Inventory_Header_Copy__c nObj : newList) { Inventory_Header_Copy__c oObj = oldMap.get(nObj.Id); System.debug(oObj.Inventory_Status__c); System.debug(nObj.Inventory_Status__c); if (oObj.Inventory_Status__c != '已批准' && nObj.Inventory_Status__c == '已批准' && !checkedApprovalIHIdSet.contains(nObj.Id)) { checkedApprovalIDSet.add(nObj.Id); checkedApprovalIHIdSet.add(nObj.Id); // TODO Header 1件ずつ呼び出すしかないですか? if(String.isBlank(nObj.Fixture_Header__c)){ InventoryReportDetailArchiveBatch mBatch = new InventoryReportDetailArchiveBatch(nObj); Database.executeBatch(mBatch); // 借出明细 Integer fileNo = 0; Integer totalCount = 0; Integer totalCountDone = 0; InventoryReportDtlArcRaesdBatch raesdBatch = new InventoryReportDtlArcRaesdBatch(nObj, fileNo, totalCount, totalCountDone); Database.executeBatch(raesdBatch); } // 耗材盘点表头 else { ConsumInventoryReportDetailArchiveBatch mBatch = new ConsumInventoryReportDetailArchiveBatch(nObj); Database.executeBatch(mBatch); // 借出明细 Integer fileNo = 0; Integer totalCount = 0; Integer totalCountDone = 0; ConsumInventoryReportDtlArcRaesdBatch raesdBatch = new ConsumInventoryReportDtlArcRaesdBatch(nObj, fileNo, totalCount, totalCountDone); Database.executeBatch(raesdBatch); } } } List idList1 = [SELECT Id, Appended_Inventory_Frozen_Quantity_F__c, Inventory_Deviation__c, Asset__c, Internal_Asset_Flg__c, Asset__r.Inventory_Frozen_Quantity__c, Asset__r.Inventory_Profit_Quantity__c FROM Inventory_Detail_Copy__c WHERE Inventory_Header_Copy__c = :checkedApprovalIDSet AND Auto_Lost_item_giveup__c = false AND Inventory_Deviation__c != 0 AND Inventory_Time__c != null]; List idList2 = [SELECT Id, Appended_Inventory_Frozen_Quantity_F__c, Inventory_Deviation__c, Asset__c, Internal_Asset_Flg__c, Asset__r.Inventory_Frozen_Quantity__c, Asset__r.Inventory_Profit_Quantity__c FROM Consum_Inventory_Detail_Copy__c WHERE Inventory_Header_Copy__c = :checkedApprovalIDSet AND Inventory_Deviation__c != 0 AND Inventory_Time__c != null]; for (Inventory_Detail_Copy__c id1 : idList1) { if (!updateAssetIdSet.contains(id1.Asset__c)) { updateAssetIdSet.add(id1.Asset__c); updateAssetMap.put(id1.Asset__c, new Asset(Id = id1.Asset__c, Appended_Inventory_Frozen_Quantity__c = id1.Asset__r.Inventory_Frozen_Quantity__c, Inventory_Frozen_Quantity__c = 0, Appended_Inventory_Profit_Quantity__c = id1.Asset__r.Inventory_Profit_Quantity__c, Inventory_Profit_Quantity__c = 0 )); } if (id1.Internal_Asset_Flg__c == false && id1.Inventory_Deviation__c < 0) { idList.add(id1); } } for (Consum_Inventory_Detail_Copy__c id1 : idList2) { if (!updateAssetIdSet.contains(id1.Asset__c)) { updateAssetIdSet.add(id1.Asset__c); updateAssetMap.put(id1.Asset__c, new Asset(Id = id1.Asset__c, Appended_Inventory_Frozen_Quantity__c = id1.Asset__r.Inventory_Frozen_Quantity__c, Inventory_Frozen_Quantity__c = 0, Appended_Inventory_Profit_Quantity__c = id1.Asset__r.Inventory_Profit_Quantity__c, Inventory_Profit_Quantity__c = 0 )); } if (id1.Internal_Asset_Flg__c == false && id1.Inventory_Deviation__c < 0) { cidList.add(id1); } } }*/ }