| | |
| | | protected override void beforeUpdate() { |
| | | if(!disabled){ |
| | | beforeSetValue(); |
| | | |
| | | // 设值排队的UniqueKey |
| | | setUniqueKeyQueue(); |
| | | } |
| | | } |
| | | protected override void afterInsert() { |
| | |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (!detailIds.isEmpty()) { |
| | | List<String> sequencekeylist = new List<String>(); |
| | | List<String> changeSequenceIds = new List<String>(); |
| | | Map<String,Decimal> changesequenceMap = new Map<String,Decimal>(); |
| | | List<Rental_Apply_Sequence__c> assignSequence = [SELECT Id,Series_No__c,Invalid_Flag__c,Externalkey__c |
| | | FROM Rental_Apply_Sequence__c |
| | | WHERE Apply_Set_Detail__c IN: detailIds |
| | | AND Invalid_Flag__c = false |
| | | AND Series_No__c > 0]; |
| | | for(Rental_Apply_Sequence__c se:assignSequence){ |
| | | // sequencekeylist.add(se.Externalkey__c); |
| | | changeSequenceIds.add(se.Id); |
| | | // if(!changesequenceMap.containsKey(se.Externalkey__c)){ |
| | | // changesequenceMap.put(se.Externalkey__c,se.Series_No__c); |
| | | // }else{ |
| | | // if(changesequenceMap.get(se.Externalkey__c) > se.Series_No__c){ |
| | | // changesequenceMap.put(se.Externalkey__c,se.Series_No__c); |
| | | // } |
| | | // } |
| | | se.Invalid_Flag__c = true; |
| | | se.Series_No__c = 0; |
| | | } |
| | | List<Rental_Apply_Equipment_Set_Detail__c> changeDetailList = new List<Rental_Apply_Equipment_Set_Detail__c>(); |
| | | List<Rental_Apply_Equipment_Set_Detail__c> raesdList = [SELECT Id, Rental_Apply_Equipment_Set__c, Asset__c,Rental_Apply_Equipment_Set__r.Fixture_Set__r.Product_Type__c, |
| | | FSD_Fixture_Model_No__c, Fixture_Model_No_text__c,Rental_Apply__r.demo_purpose2__c,Queue_Day__c,ExternalKey__c, |
| | | Is_Body__c, FSD_Is_OneToOne__c, Select_Time__c,Rental_Apply__r.EquipmentGuaranteeFlg__c,Allow_Adjust_Queue_Flag__c, |
| | | Cancel_Select__c, Fixture_Model_No_F__c, Queue_Number__c, Internal_asset_location__c,Fixture_Model_No__c,Rental_Apply__c, |
| | | Internal_asset_location_before__c,Salesdepartment__c, Product_category_F__c, Product_category_text__c,Equipment_Type_text__c, |
| | | Salesdepartment_before__c,Rental_Apply__r.Request_shipping_day__c,QuenType__c,IsAdjust__c,Rental_Apply__r.Request_approval_time__c, |
| | | Equipment_Type__c, Rental_Apply__r.Internal_asset_location_F__c,Cancel_Reason__c,Loaner_cancel_reason__c, |
| | | Loaner_cancel_Remarks__c ,Rental_Apply_Equipment_Set__r.Name |
| | | FROM Rental_Apply_Equipment_Set_Detail__c |
| | | WHERE Queue_Number__c > 0 |
| | | AND Cancel_Select__c = false |
| | | AND ExternalKey__c IN:externalKeyList |
| | | AND Id NOT IN :detailIds |
| | | ORDER BY Queue_Number__c ASC ]; |
| | | Map<String,List<Rental_Apply_Equipment_Set_Detail__c>> detailsMap = new Map<String,List<Rental_Apply_Equipment_Set_Detail__c>>(); |
| | | for(Rental_Apply_Equipment_Set_Detail__c setdetail:raesdList){ |
| | | if(!detailsMap.containsKey(setdetail.Externalkey__c)){ |
| | | detailsMap.put(setdetail.Externalkey__c,new List<Rental_Apply_Equipment_Set_Detail__c>()); |
| | | } |
| | | detailsMap.get(setdetail.Externalkey__c).add(setdetail); |
| | | |
| | | |
| | | List<String> sequencekeylist = new List<String>(); |
| | | List<String> changeSequenceIds = new List<String>(); |
| | | Map<String,Decimal> changesequenceMap = new Map<String,Decimal>(); |
| | | List<Rental_Apply_Sequence__c> assignSequence = [SELECT Id,Series_No__c,Invalid_Flag__c,Externalkey__c |
| | | FROM Rental_Apply_Sequence__c |
| | | WHERE Apply_Set_Detail__c IN: detailIds |
| | | } |
| | | for(String key:detailsMap.keySet()){ |
| | | Decimal queueNo = minNumberMap.get(key); |
| | | System.debug(LoggingLevel.INFO, '*** queueNo: ' + queueNo); |
| | | Decimal i = 0; |
| | | for(Rental_Apply_Equipment_Set_Detail__c detail : detailsMap.get(key)){ |
| | | System.debug(LoggingLevel.INFO, '*** detail.Queue_Number__c: ' + detail.Queue_Number__c); |
| | | if(detail.Queue_Number__c > queueNo){ |
| | | RentalFixtureSetAssignController.KeyObj dobj = RentalFixtureSetAssignController.getSequenceInfo(detail); |
| | | sequencekeylist.addAll(dobj.sequencekeylist); |
| | | detail.Queue_Number__c = queueNo + i; |
| | | i ++; |
| | | System.debug(LoggingLevel.INFO, '**111* detail.Queue_Number__c: ' + detail.Queue_Number__c); |
| | | changeDetailList.add(detail); |
| | | } |
| | | } |
| | | } |
| | | List<String> nodusequencekeylist = new List<String>(new Set<String>(sequencekeylist)); |
| | | List<Rental_Apply_Sequence__c> sequenceList = [SELECT Id,ExternalKey__c,Demo_Purpose2__c, |
| | | Apply_Set_Detail__c,Apply_Set_Detail_ExternalKey__c, |
| | | Series_No__c,Salesdepartment__c,Product_category__c, |
| | | Rental_Apply__c,Internal_asset_location__c, |
| | | Apply_Set_Detail__r.Queue_Number__c,Series_Unequal_Queue_Flag__c, |
| | | Fixture_Model_No__c,Equipment_Type__c |
| | | FROM Rental_Apply_Sequence__c |
| | | WHERE ExternalKey__c IN: nodusequencekeylist |
| | | AND Id NOT IN:changeSequenceIds |
| | | AND Series_No__c > 0 |
| | | AND Invalid_Flag__c = false |
| | | AND Series_No__c > 0]; |
| | | for(Rental_Apply_Sequence__c se:assignSequence){ |
| | | // sequencekeylist.add(se.Externalkey__c); |
| | | changeSequenceIds.add(se.Id); |
| | | // if(!changesequenceMap.containsKey(se.Externalkey__c)){ |
| | | // changesequenceMap.put(se.Externalkey__c,se.Series_No__c); |
| | | // }else{ |
| | | // if(changesequenceMap.get(se.Externalkey__c) > se.Series_No__c){ |
| | | // changesequenceMap.put(se.Externalkey__c,se.Series_No__c); |
| | | // } |
| | | // } |
| | | se.Invalid_Flag__c = true; |
| | | se.Series_No__c = 0; |
| | | } |
| | | List<Rental_Apply_Equipment_Set_Detail__c> changeDetailList = new List<Rental_Apply_Equipment_Set_Detail__c>(); |
| | | List<Rental_Apply_Equipment_Set_Detail__c> raesdList = [SELECT Id, Rental_Apply_Equipment_Set__c, Asset__c,Rental_Apply_Equipment_Set__r.Fixture_Set__r.Product_Type__c, |
| | | FSD_Fixture_Model_No__c, Fixture_Model_No_text__c,Rental_Apply__r.demo_purpose2__c,Queue_Day__c,ExternalKey__c, |
| | | Is_Body__c, FSD_Is_OneToOne__c, Select_Time__c,Rental_Apply__r.EquipmentGuaranteeFlg__c,Allow_Adjust_Queue_Flag__c, |
| | | Cancel_Select__c, Fixture_Model_No_F__c, Queue_Number__c, Internal_asset_location__c,Fixture_Model_No__c,Rental_Apply__c, |
| | | Internal_asset_location_before__c,Salesdepartment__c, Product_category_F__c, Product_category_text__c,Equipment_Type_text__c, |
| | | Salesdepartment_before__c,Rental_Apply__r.Request_shipping_day__c,QuenType__c,IsAdjust__c,Rental_Apply__r.Request_approval_time__c, |
| | | Equipment_Type__c, Rental_Apply__r.Internal_asset_location_F__c,Cancel_Reason__c,Loaner_cancel_reason__c, |
| | | Loaner_cancel_Remarks__c ,Rental_Apply_Equipment_Set__r.Name |
| | | FROM Rental_Apply_Equipment_Set_Detail__c |
| | | WHERE Queue_Number__c > 0 |
| | | AND Cancel_Select__c = false |
| | | AND ExternalKey__c IN:externalKeyList |
| | | AND Id NOT IN :detailIds |
| | | ORDER BY Queue_Number__c ASC ]; |
| | | Map<String,List<Rental_Apply_Equipment_Set_Detail__c>> detailsMap = new Map<String,List<Rental_Apply_Equipment_Set_Detail__c>>(); |
| | | for(Rental_Apply_Equipment_Set_Detail__c setdetail:raesdList){ |
| | | if(!detailsMap.containsKey(setdetail.Externalkey__c)){ |
| | | detailsMap.put(setdetail.Externalkey__c,new List<Rental_Apply_Equipment_Set_Detail__c>()); |
| | | FOR UPDATE |
| | | ]; |
| | | System.debug(LoggingLevel.INFO, '*** sequenceList: ' + sequenceList); |
| | | Map<String,List<Rental_Apply_Sequence__c>> sequenceMap = new Map<String,List<Rental_Apply_Sequence__c>>(); |
| | | List<FixtureUtil.SequenceWrapper> Wrappers = new List<FixtureUtil.SequenceWrapper>(); |
| | | for(Rental_Apply_Sequence__c se: sequenceList){ |
| | | Wrappers.add(new FixtureUtil.SequenceWrapper(se)); |
| | | } |
| | | detailsMap.get(setdetail.Externalkey__c).add(setdetail); |
| | | Wrappers.sort(); |
| | | sequenceList = new List<Rental_Apply_Sequence__c>(); |
| | | for(FixtureUtil.SequenceWrapper wrapper:wrappers){ |
| | | sequenceList.add(wrapper.sequence); |
| | | } |
| | | for(Rental_Apply_Sequence__c se: sequenceList){ |
| | | if(!sequenceMap.containsKey(se.Externalkey__c)){ |
| | | sequenceMap.put(se.Externalkey__c,new List<Rental_Apply_Sequence__c>()); |
| | | } |
| | | sequenceMap.get(se.Externalkey__c).add(se); |
| | | } |
| | | List<Rental_Apply_Sequence__c> changeSequenceList = new List<Rental_Apply_Sequence__c>(); |
| | | for(String key:sequenceMap.keyset()){ |
| | | Decimal i = 1; |
| | | for(Rental_Apply_Sequence__c se: sequenceMap.get(key)){ |
| | | if(se.Series_No__c != i){ |
| | | se.Series_No__c = i; |
| | | changeSequenceList.add(se); |
| | | } |
| | | i ++ ; |
| | | } |
| | | } |
| | | update assignSequence; |
| | | update changeSequenceList; |
| | | update changeDetailList; |
| | | } |
| | | } |
| | | |
| | | private void setUniqueKeyQueue(){ |
| | | Map<Id, Rental_Apply_Equipment_Set_Detail__c> olddetailMap = (Map<Id, Rental_Apply_Equipment_Set_Detail__c>) Trigger.oldMap; |
| | | |
| | | System.debug('开始处理------------------------------------'); |
| | | System.debug('(List<Rental_Apply_Equipment_Set_Detail__c>) Trigger.new---------------' + (List<Rental_Apply_Equipment_Set_Detail__c>) Trigger.new); |
| | | for(Rental_Apply_Equipment_Set_Detail__c newdetail : (List<Rental_Apply_Equipment_Set_Detail__c>) Trigger.new){ |
| | | System.debug(newdetail.Id + ' 申请单号:' + newdetail.Rental_Apply__r.name); |
| | | Rental_Apply_Equipment_Set_Detail__c olddetail = olddetailMap.get(newdetail.Id); |
| | | System.debug('旧排队No:' + olddetail.Queue_Number__c); |
| | | System.debug('新排队No:' + newdetail.Queue_Number__c); |
| | | |
| | | } |
| | | for(String key:detailsMap.keySet()){ |
| | | Decimal queueNo = minNumberMap.get(key); |
| | | System.debug(LoggingLevel.INFO, '*** queueNo: ' + queueNo); |
| | | Decimal i = 0; |
| | | for(Rental_Apply_Equipment_Set_Detail__c detail : detailsMap.get(key)){ |
| | | System.debug(LoggingLevel.INFO, '*** detail.Queue_Number__c: ' + detail.Queue_Number__c); |
| | | if(detail.Queue_Number__c > queueNo){ |
| | | RentalFixtureSetAssignController.KeyObj dobj = RentalFixtureSetAssignController.getSequenceInfo(detail); |
| | | sequencekeylist.addAll(dobj.sequencekeylist); |
| | | detail.Queue_Number__c = queueNo + i; |
| | | i ++; |
| | | System.debug(LoggingLevel.INFO, '**111* detail.Queue_Number__c: ' + detail.Queue_Number__c); |
| | | changeDetailList.add(detail); |
| | | } |
| | | if((olddetail.Queue_Number__c > 0 && newdetail.Queue_Number__c == 0)// 暂定分配 |
| | | || (!olddetail.Cancel_Select__c && newdetail.Cancel_Select__c && olddetail.Queue_Number__c > 0) //取消(排队中,暂定分配) |
| | | || (olddetail.Queue_Number__c > 0 && newdetail.Queue_Number__c == null )//分单 |
| | | ){ |
| | | // 清空排队的UniqueKey |
| | | newdetail.UniqueKey_Queue__c = null; |
| | | System.debug('新排队UniqueKey_Queue__c:' + newdetail.UniqueKey_Queue__c); |
| | | } |
| | | } |
| | | List<String> nodusequencekeylist = new List<String>(new Set<String>(sequencekeylist)); |
| | | List<Rental_Apply_Sequence__c> sequenceList = [SELECT Id,ExternalKey__c,Demo_Purpose2__c, |
| | | Apply_Set_Detail__c,Apply_Set_Detail_ExternalKey__c, |
| | | Series_No__c,Salesdepartment__c,Product_category__c, |
| | | Rental_Apply__c,Internal_asset_location__c, |
| | | Apply_Set_Detail__r.Queue_Number__c,Series_Unequal_Queue_Flag__c, |
| | | Fixture_Model_No__c,Equipment_Type__c |
| | | FROM Rental_Apply_Sequence__c |
| | | WHERE ExternalKey__c IN: nodusequencekeylist |
| | | AND Id NOT IN:changeSequenceIds |
| | | AND Series_No__c > 0 |
| | | AND Invalid_Flag__c = false |
| | | FOR UPDATE |
| | | ]; |
| | | System.debug(LoggingLevel.INFO, '*** sequenceList: ' + sequenceList); |
| | | Map<String,List<Rental_Apply_Sequence__c>> sequenceMap = new Map<String,List<Rental_Apply_Sequence__c>>(); |
| | | List<FixtureUtil.SequenceWrapper> Wrappers = new List<FixtureUtil.SequenceWrapper>(); |
| | | for(Rental_Apply_Sequence__c se: sequenceList){ |
| | | Wrappers.add(new FixtureUtil.SequenceWrapper(se)); |
| | | } |
| | | Wrappers.sort(); |
| | | sequenceList = new List<Rental_Apply_Sequence__c>(); |
| | | for(FixtureUtil.SequenceWrapper wrapper:wrappers){ |
| | | sequenceList.add(wrapper.sequence); |
| | | } |
| | | for(Rental_Apply_Sequence__c se: sequenceList){ |
| | | if(!sequenceMap.containsKey(se.Externalkey__c)){ |
| | | sequenceMap.put(se.Externalkey__c,new List<Rental_Apply_Sequence__c>()); |
| | | } |
| | | sequenceMap.get(se.Externalkey__c).add(se); |
| | | } |
| | | List<Rental_Apply_Sequence__c> changeSequenceList = new List<Rental_Apply_Sequence__c>(); |
| | | for(String key:sequenceMap.keyset()){ |
| | | Decimal i = 1; |
| | | for(Rental_Apply_Sequence__c se: sequenceMap.get(key)){ |
| | | if(se.Series_No__c != i){ |
| | | se.Series_No__c = i; |
| | | changeSequenceList.add(se); |
| | | } |
| | | i ++ ; |
| | | } |
| | | } |
| | | update assignSequence; |
| | | update changeSequenceList; |
| | | update changeDetailList; |
| | | |
| | | |
| | | // 重排或者排队No变化时更新 |
| | | if (!newdetail.Cancel_Select__c && newdetail.Queue_Number__c > 0 && newdetail.ExternalKey__c != null |
| | | && (newdetail.Queue_Number__c != olddetail.Queue_Number__c |
| | | || newdetail.ExternalKey__c != olddetail.ExternalKey__c)) { |
| | | // 排队的UniqueKey设值 |
| | | newdetail.UniqueKey_Queue__c = newdetail.ExternalKey__c + ':' + newdetail.Queue_Number__c; |
| | | System.debug('新排队UniqueKey_Queue__c:' + newdetail.UniqueKey_Queue__c); |
| | | } |
| | | } |
| | | System.debug('结束处理------------------------------------'); |
| | | } |
| | | |
| | | /* |
| | |
| | | ORDER BY Rental_Apply__c, Rental_Apply_Equipment_Set__c, Name]; |
| | | // 收集回寄明细 {raesId -> raesdList} |
| | | Map<Id, List<Rental_Apply_Equipment_Set_Detail__c>> raesdListMap = new Map<Id, List<Rental_Apply_Equipment_Set_Detail__c>>(); |
| | | Map<Id, Rental_Apply__c> return_DeliverySlipIdMap = new Map<Id, Rental_Apply__c>(); |
| | | Map<Id, FixtureDeliverySlip__c> return_DeliverySlipMap = new Map<Id, FixtureDeliverySlip__c>(); |
| | | for (Rental_Apply_Equipment_Set_Detail__c raesd : raesdList) { |
| | | if (!raesdListMap.containsKey(raesd.Rental_Apply_Equipment_Set__c)) { |
| | | raesdListMap.put(raesd.Rental_Apply_Equipment_Set__c, new List<Rental_Apply_Equipment_Set_Detail__c>()); |
| | | } |
| | | return_DeliverySlipIdMap.put(raesd.Return_DeliverySlip__c, raesd.Rental_Apply__r); |
| | | |
| | | raesdListMap.get(raesd.Rental_Apply_Equipment_Set__c).add(raesd); |
| | | /* --------- 设置运输单Map Start --------- */ |
| | | if (return_DeliverySlipMap.containsKey(raesd.Rental_Apply__c) == false) { |