//仿EquipmentSetSRList2Controller.cls /* TestClass RentalFixtureManage1Test RentalFixtureManage3Test RentalFixtureManage9Test RentalFixtureManage10Test */ public with sharing class ReceivingNoteListController { public List rnsList { get; set; } public List summaryInfoList{get;set;} public String sr_open { get; set; } public Boolean doneFlg {get; set; } public String receiving_note_no { get; set; } public String sr_id { get; set; } public String sr_type { get; set; } public List typeList {get; set;} public String selectedType {get; set;} public String rndIdsStr {get; set;} public String rnId {get; set;} public String userId; public ReceivingNote__c relatedNote { get; set; } public String cdlStr {get; private set;} // 20231013 ljh add public Integer getRnsListSize() { return rnsList.size(); } public ReceivingNoteListController() { receiving_note_no = ApexPages.currentPage().getParameters().get('id'); sr_type = ApexPages.currentPage().getParameters().get('type'); sr_open = ApexPages.currentPage().getParameters().get('open'); summaryInfoList = new List(); userId = Userinfo.getUserId(); } public void init() { rnsList = new List(); doneFlg = false; initTypeList(); Set summaryIdSet = new Set(); Map summaryFileCnt = new Map(); if (receiving_note_no != null) { rnsList = [ SELECT Id , ReceivingNoteSummaryNo__c , Fixture_Model_No_F__c , First_RND__r.SerialNumber_F__c , First_RND__r.Fixture_QRCode_F__c , RNS_Status__c , ReceivingNote__c , Wei_DataConfirmation_Cnt__c , Wei_Acceptance_Cnt__c , ReceivingNoteDetail_Cnt__c , ReceivingNote__r.Asset_loaner_category__c , ReceivingNote__r.Status__c , Package_Status__c , Package_Status_Memo__c FROM ReceivingNoteSummary__c //WLIG-BV8CHF 20210331 you start //WHERE ReceivingNote__r.ReceivingNoteNo__c = :receiving_note_no WHERE ReceivingNote__r.ReceivingNoteNo_New__c = :receiving_note_no //WLIG-BV8CHF 20210331 you end ORDER BY ReceivingNoteSummaryNo__c ]; System.debug('receiving_note_no = ' + receiving_note_no + ': ' + rnsList.size()); for(ReceivingNoteSummary__c rns:rnsList){ SummaryInfo summaryInfo = new SummaryInfo(rns); summaryInfoList.add(summaryInfo); rnId = rns.ReceivingNote__c; summaryIdSet.add(rns.Id); } if(summaryInfoList.size() == 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '收货清单没有收货清单明细')); } else { // 20231013 ljh add start cdlStr = ''; for (ContentDocumentLink link : [SELECT ContentDocumentId,ContentDocument.LatestPublishedVersionId FROM ContentDocumentLink WHERE LinkedEntityId = :rnId]) { String idS = link.ContentDocument.LatestPublishedVersionId; cdlStr += idS.substring(0,15)+'_'+link.ContentDocumentId+';'; } // 20231013 ljh add end relatedNote = [select Id, Name from ReceivingNote__c where id = :rnId]; AggregateResult[] fileCnt = [select count(id) cnt, LinkedEntityId from ContentDocumentLink where LinkedEntityId in :summaryIdSet group by LinkedEntityId]; for (AggregateResult cnt : fileCnt) { summaryFileCnt.put((Id)cnt.get('LinkedEntityId'), Integer.valueOf(cnt.get('cnt'))); } for (SummaryInfo si : summaryInfoList) { if (summaryFileCnt.containsKey(si.rns.Id)) { si.fileCnt = summaryFileCnt.get(si.rns.Id); } } } } return; } private void initTypeList(){ typeList = new List(); typeList.add(new SelectOption('无','无')); typeList.add(new SelectOption('收货确认','收货确认')); typeList.add(new SelectOption('取消收货确认','取消收货确认')); typeList.add(new SelectOption('清点','清点')); typeList.add(new SelectOption('验收','验收')); typeList.add(new SelectOption('入库', '入库')); System_UserSetting__c config = System_UserSetting__c.getInstance(userId); selectedType = config.ReceivingNote_Action_Type__c; if (String.isBlank(selectedType)){ selectedType = '无'; } } public void setType(){ if (selectedType != '无' && selectedType != null ){ System_UserSetting__c config = System_UserSetting__c.getInstance(userId); config.ReceivingNote_Action_Type__c = selectedType; FixtureUtil.withoutUpsertObjects(new System_UserSetting__c[]{config}); } } /** @description 变更收货确认状态 */ public void receivedConfirm(){ List updateRNSList = new List (); List rnsIdList = new List(); List delRnsList = new List(); Map updateMap = new Map([ SELECT Id , Wei_DataConfirmation_Cnt__c , Wei_Acceptance_Cnt__c , ReceivingNoteDetail_Cnt__c FROM ReceivingNoteSummary__c //WLIG-BV8CHF 20210331 you start //WHERE ReceivingNote__r.ReceivingNoteNo__c = :receiving_note_no WHERE ReceivingNote__r.ReceivingNoteNo_New__c = :receiving_note_no //WLIG-BV8CHF 20210331 you end ]); if (selectedType == '收货确认') { for (SummaryInfo sinfo : summaryInfoList){ if(sinfo.isChecked) { if(updateMap.containsKey(sinfo.rns.Id)) { ReceivingNoteSummary__c originRns = updateMap.get(sinfo.rns.Id); if (sinfo.rns.Wei_DataConfirmation_Cnt__c > 0 || originRns.Wei_DataConfirmation_Cnt__c > 0) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '【'+sinfo.rns.ReceivingNoteSummaryNo__c+'】有未做数据确认的明细存在,不能确认收货,请刷新画面重试。')); } if (originRns.Wei_Acceptance_Cnt__c < originRns.ReceivingNoteDetail_Cnt__c) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '【'+sinfo.rns.ReceivingNoteSummaryNo__c+'】清点已开始,不可以修改收货确认状态,请刷新画面重试。')); } } else { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '【'+sinfo.rns.ReceivingNoteSummaryNo__c+'】不存在,请刷新画面重试。')); } if (sinfo.rns.Package_Status__c == null) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '【'+sinfo.rns.ReceivingNoteSummaryNo__c+'】未填写外包装是否完整,不能确认收货。')); } // 对被选中的一览 的 确认时间 和 确认人 赋值 sinfo.rns.Received_Confirm_Time__c = System.now(); sinfo.rns.Received_Confirm_Staff__c = userId; updateRNSList.add(sinfo.rns); rnsIdList.add(sinfo.rns.Id); } } if (ApexPages.hasMessages()) return; } else if (selectedType == '取消收货确认'){ for (SummaryInfo sinfo : summaryInfoList){ if(sinfo.isChecked){ if(updateMap.containsKey(sinfo.rns.Id)) { ReceivingNoteSummary__c originRns = updateMap.get(sinfo.rns.Id); if (originRns.Wei_Acceptance_Cnt__c < originRns.ReceivingNoteDetail_Cnt__c) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '【'+sinfo.rns.ReceivingNoteSummaryNo__c+'】清点已开始,不可以修改收货确认状态,请刷新画面重试。')); return; } } else { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '【'+sinfo.rns.ReceivingNoteSummaryNo__c+'】不存在,请刷新画面重试。')); return; } // 将被选中的一览的确认时间和确认人清空 sinfo.rns.Received_Confirm_Time__c = null; sinfo.rns.Received_Confirm_Staff__c = null; sinfo.rns.Package_Status__c = null; sinfo.rns.Package_Status_Memo__c = null; updateRNSList.add(sinfo.rns); rnsIdList.add(sinfo.rns.Id); delRnsList.add(sinfo.rns.Id); } } } if (updateRNSList.size() > 0){ Savepoint sp = Database.setSavepoint(); List rnsList = [select ReceivingNoteSummaryNo__c, Id, Fixture_Model_No__c, First_RND__r.SerialNumber_F__c, First_RND__r.Fixture_QRCode_F__c, RNS_Status__c, ReceivingNote__r.Status__c, Received_Confirm_Time__c, Received_Confirm_Staff__c from ReceivingNoteSummary__c where Id in :rnsIdList for update ]; try { FixtureUtil.withoutUpsertObjects(updateRNSList); if (delRnsList.size() > 0) { List delList = [select id from ContentDocumentLink where LinkedEntityId in :delRnsList]; FixtureUtil.withoutDelete(delList); } } catch (Exception ex) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ex.getMessage())); Database.rollback(sp); return; } } doneFlg = true; return; } public void checkckb() { if (selectedType == '收货确认' || selectedType == '取消收货确认') { for (SummaryInfo sinfo : summaryInfoList){ if (sinfo.canChange == false) sinfo.isChecked = false; } } else { for (SummaryInfo sinfo : summaryInfoList){ sinfo.isChecked = sinfo.isChecked; } } } public class SummaryInfo{ public ReceivingNoteSummary__c rns {get;set;} public boolean isChecked{get;set;} public Integer fileCnt{get;set;} public Boolean canChange {get;set;} public Boolean disableFalg {get; set; } // 20231019 ymh add sitbug public SummaryInfo(ReceivingNoteSummary__c rns){ this.isChecked = false; this.rns = rns; this.fileCnt = 0; this.canChange = false; disableFalg = true;// 20231019 ymh add sitbug // 全部明细数据确认后,且还没开始清点才可以编辑 if (rns.Wei_DataConfirmation_Cnt__c == 0 && rns.Wei_Acceptance_Cnt__c == rns.ReceivingNoteDetail_Cnt__c) { //this.isChecked = true; this.canChange = true; } // 20231019 ymh add sitbug start if(rns.RNS_Status__c == '已入库'){ disableFalg = false; } // 20231019 ymh add sitbug start } } }