public with sharing class TransferEquipmentSetSRListController { public List resList { get; set; } public String sr_open { get; set; } public String sr_apply_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;} private String Id; public Boolean canSelect {get;set;} public Boolean showDown {get;set;} public Boolean showUp {get;set;} public String sr_FromLocation {get;set;} public String sr_ToLocation {get;set;} public Integer getResListSize() { return resList.size(); } public TransferEquipmentSetSRListController() { Id = ApexPages.currentPage().getParameters().get('id'); sr_type = ApexPages.currentPage().getParameters().get('type'); sr_open = ApexPages.currentPage().getParameters().get('open'); } public void init() { resList = new List(); User user1 = [SELECT OCM_man_province_Rental__c, Work_Location__c, UserRole.Name, Profile.Name FROM User WHERE Id=:UserInfo.getUserId()]; canSelect = false; if (String.isNotBlank(Id)) { resList = [select TransferApply__r.Name , TransferApply__r.RecordType.DeveloperName , TransferApply__r.Destination_location__c , TransferApply__r.Asset_return_time__c , TransferApply__r.Yi_loaner_arranged__c , TransferApply__r.From_Location__c , First_TAD__r.Asset__r.Fixture_Model_No_F__c , First_TAD__r.Asset__r.SerialNumber , First_TAD__r.Asset__r.Fixture_QRCode__c , OnStock_By_Cancel_Cnt__c , TAS_Status__c , Wei_Arrival_in_wh__c , Yi_loaner_arranged__c , Asset_return_time__c , Inspection_before_ng_cnt__c , Wei_Return__c , TransferDetail_Cnt__c from TransferApplySummary__c where TransferApply__r.Name = :id OR (First_TAD__r.Asset__r.Fixture_QRCode__c = :id AND TransferApply__r.ShelfUp_ng_num__c > 0) order by Name ]; if (resList.size() > 0) { sr_apply_no = resList[0].TransferApply__r.Name; sr_id = resList[0].TransferApply__r.Name; sr_FromLocation = resList[0].TransferApply__r.From_Location__c; sr_ToLocation = resList[0].TransferApply__r.Destination_location__c; String recordTypeName = resList[0].TransferApply__r.RecordType.DeveloperName; Boolean isReturned = false; for(TransferApplySummary__c res:resList) { // 下架后有取消 isReturned = isReturned || res.OnStock_By_Cancel_Cnt__c > 0; // 办事处回寄 isReturned = isReturned || res.TransferDetail_Cnt__c - res.Wei_Return__c > 0; // 下架前检测NG isReturned = isReturned || res.Inspection_before_ng_cnt__c > 0; // 如果不是来自同一调拨单,全清空 if(sr_apply_no != res.TransferApply__r.Name) { sr_apply_no = ''; sr_id = ''; sr_FromLocation = ''; sr_ToLocation = ''; recordTypeName = ''; isReturned = false; } } canSelect = initTypeList(recordTypeName, user1, sr_FromLocation, sr_ToLocation, isReturned); } else { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '备品或调拨单不存在')); } } } /** @description 根据申请单类型,用户工作地,调拨至地区显示下拉框 @param recordTypeName 记录类型developername @param u 用户 @param destination 调拨至地区 @param isReturned 是否需要在备品中心重新上架 */ private Boolean initTypeList(String recordTypeName, User u, String fromlocation, String destination, Boolean isReturned){ typeList = new List(); typeList.add(new SelectOption('无','无')); showUp = false; showDown = false; switch on recordTypeName { when 'AgencyToCenter' { showDown = false; showUp = isMatch(u, destination); } when 'CenterToAgency', 'CenterToOther' { showDown = isMatch(u, fromlocation); showUp = isMatch(u, fromlocation) && isReturned; } when 'CenterToCenter' { showDown = isMatch(u, fromlocation); showUp = isMatch(u, destination) || (showDown && isReturned); } when 'InsideCenter' { showDown = false; showUp = false; } } // 全部显示,通过showDown和showUp控制是否允许跳转 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(UserInfo.getUserId()); selectedType = config.TAS_Action_Type__c; if (String.isBlank(selectedType)){ selectedType = '无'; } return showUp || showDown; } /** @description 用户角色与地区地否匹配 @param u User @param center 备品中心 */ private Boolean isMatch(User u, String center) { if(u.Profile.Name == '2B3_备品中心管理者(照片)'){ return true; } //20210519 you WLIG-C2J9AA if(u.UserRole.Name == '备品运营部'){ return true; } switch on center { when '北京 备品中心' { return u.UserRole.Name == '备品中心北方管理成员'; } when '上海 备品中心' { return u.UserRole.Name == '备品中心华东管理成员'; } when '广州 备品中心' { return u.UserRole.Name == '备品中心南方管理成员'; } } return false; } // 记忆用户的选择 public void setType(){ if (selectedType != '无' && String.isNotBlank(selectedType)) { System_UserSetting__c config = System_UserSetting__c.getInstance(UserInfo.getUserId()); config.TAS_Action_Type__c = selectedType; FixtureUtil.withoutUpsertObjects(new System_UserSetting__c[]{config}); } } /** * 转换办事处到省 * @param str 存放地 * @return OCSM管理省名字 */ private String getOcmMgtProvStr(String str) { Map ocmMgtProvMap = AssetWebService.getOcmMgtProvMap(); String res = ''; if (ocmMgtProvMap.containsKey(str)) { res = ocmMgtProvMap.get(str); } return res; } }