public without sharing class EquipmentLoanerApplyController { // 样机借出申请ID private String loanerApplyId; public Asset rec { get; set; } public String assName { get; set; } public String assECcode { get; set; } public string userType {get;private set; } /*****************排序用******************/ public String sortKey { get; set; } public String setId { get; set; } public String preSortKey { get; private set; } public Boolean sortOrderAsc { get; private set; } public Boolean isManager { get; private set; } //public Boolean isCancel { get; private set; } public String[] sortOrder { get; private set; } private String[] columus = new String[]{ 'SerialNumber', 'OT_Code__c', 'EC_Code__c','loaner_place__c', 'Status'}; public Boolean getcanSave() { return ((loanerApply.Status__c != '草案中' && loanerApply.Status__c != '驳回' && isManager == false)); } public Boolean getcanSearch() { return loanerApply.Loaner_LendOrder__c; } //准备天数 private Integer prepareDay; private Integer dayCount = 0; // 显示数据条数限制 private Integer Select_Limit = 200; private Boolean Over_Limit = false; /*****************画面表示Bean******************/ public loaner_application__c loanerApply { get; set; } //显示明细 public List equipmentSetRecords { get; set; } // 样机Set public List loanerSetRecords { get; set; } List del = New List(); // 样机Set private List ecCodeList; // 已选择样机 private List loanerAssetSelected = new List(); public Integer pageRecordNo { get { return equipmentSetRecords == null ? 0 : equipmentSetRecords.size(); } } public Integer loanerSetNo { get { return loanerSetRecords == null ? 0 : loanerSetRecords.size(); } } public EquipmentLoanerApplyController() { // 获得传入参数 loanerApplyId = ApexPages.currentPage().getParameters().get('loid'); equipmentSetRecords = new List(); } // 画面初始化 public void init() { userType = UserInfo.getUserType(); // 默认排序 this.sortKey = '0'; this.preSortKey = '0'; this.sortOrderAsc = true; //this.isCancel = false; this.sortOrder = new String[4]; this.sortOrder = new String[]{ ' ', ' ', ' ', ' ', ' ','↑'}; prepareDay = 0; Over_Limit = false; isManager = false; List profileIdList = new List(); Map profileIdMap = new Map(); List lend_DetName = new List(); // String profileId = UserInfo.getProfileId().subString(0, 15); //新的获取简档ID calendarUtil.getMemberProfileID 这里用到的人员ID 和获取到的简档ID都是15位的 String new_profileId = calendarUtil.getMemberProfileID(UserInfo.getUserId().subString(0,15)); profileIdList = System.label.LoanerManager.split(','); if(profileIdList.size() > 0){ for(String str : profileIdList){ profileIdMap.put(str, str); } } if(profileIdMap.containsKey(new_profileId.subString(0,15))){ isManager = true; } /*User userInfo = [SELECT Id,Is_Cancel_Jurisdiction__c FROM User WHERE Id = :UserInfo.getUserId()]; if(userInfo.Is_Cancel_Jurisdiction__c) this.isCancel = true;*/ if (String.isNotBlank(loanerApplyId)) { loanerApply = [SELECT id,Name,Demo_purpose__c,EC_Code_1__c,EC_Code_2__c,EC_Code_3__c,EC_Code_4__c, EC_Code_5__c,EC_Code_6__c,EC_Code_7__c,EC_Code_8__c,EC_Code_9__c, EC_Code_10__c,Prepare_Day__c,Rental_Start_Date__c,Rental_End_Date__c,EC_Code_11__c ,EC_Code_12__c,EC_Code_13__c,EC_Code_14__c,EC_Code_15__c,EC_Code_16__c ,EC_Code_17__c,EC_Code_18__c,EC_Code_19__c,EC_Code_20__c,Status__c,Equipment_Type__c ,Loaner_LendFrom__c,Loaner_LendOrder__c,Manager_detail_Del__c ,Loaner_LendFrom__r.Rental_Start_Date__c,Loaner_LendFrom__r.Rental_End_Date__c,Approval_Status__c ,DealerOrder_From__c,Approval_Step__c,Request_shipping_Date__c,Remind_Date__c ,Loaner_LendUser1__c,Loaner_LendUser2__c,Loaner_LendUser3__c,Loaner_LendUser4__c ,Loaner_LendUser5__c,ProductCount19__c,ProductCount20__c,AllLead_OrderName__c ,ProductCount1__c,ProductCount2__c,ProductCount3__c,ProductCount4__c,ProductCount5__c,ProductCount6__c ,ProductCount7__c,ProductCount8__c,ProductCount9__c,ProductCount10__c,ProductCount11__c,ProductCount12__c ,ProductCount13__c,ProductCount14__c,ProductCount15__c,ProductCount16__c,ProductCount17__c,ProductCount18__c FROM loaner_application__c WHERE Id = :loanerApplyId ]; rec = new Asset(); rec.Equipment_Type__c = loanerApply.Equipment_Type__c; ecCodeList = new List(); if(String.isNotBlank(loanerApply.EC_Code_1__c)) ecCodeList.add(loanerApply.EC_Code_1__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_2__c)) ecCodeList.add(loanerApply.EC_Code_2__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_3__c)) ecCodeList.add(loanerApply.EC_Code_3__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_4__c)) ecCodeList.add(loanerApply.EC_Code_4__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_5__c)) ecCodeList.add(loanerApply.EC_Code_5__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_6__c)) ecCodeList.add(loanerApply.EC_Code_6__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_7__c)) ecCodeList.add(loanerApply.EC_Code_7__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_8__c)) ecCodeList.add(loanerApply.EC_Code_8__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_9__c)) ecCodeList.add(loanerApply.EC_Code_9__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_10__c)) ecCodeList.add(loanerApply.EC_Code_10__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_11__c)) ecCodeList.add(loanerApply.EC_Code_11__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_12__c)) ecCodeList.add(loanerApply.EC_Code_12__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_13__c)) ecCodeList.add(loanerApply.EC_Code_13__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_14__c)) ecCodeList.add(loanerApply.EC_Code_14__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_15__c)) ecCodeList.add(loanerApply.EC_Code_15__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_16__c)) ecCodeList.add(loanerApply.EC_Code_16__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_17__c)) ecCodeList.add(loanerApply.EC_Code_17__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_18__c)) ecCodeList.add(loanerApply.EC_Code_18__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_19__c)) ecCodeList.add(loanerApply.EC_Code_19__c.trim()); if(String.isNotBlank(loanerApply.EC_Code_20__c)) ecCodeList.add(loanerApply.EC_Code_20__c.trim()); if(loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_End_Date__c != null){ dayCount = (loanerApply.Rental_Start_Date__c).daysBetween(loanerApply.Rental_End_Date__c); } // 已存在样机借出明细历史取得 List loanerApplyDetSelected = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,LOANER__r.AssetType__c,LOANER__r.Description, LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status,LOANER__r.Rental_Start_Date__c ,LOANER__r.Count_can_allocate_F__c,LOANER__r.RecordTypeId,loaner_ApplyNo__c,RAESD_Status__c,LOANER__r.Name ,Allocated_Det__c,LendPrimary_Name__c,Inspection_result__c,delivery_company__c,Tracking_Number__c ,Return_to_wh_staff__c,Allocate_Date__c,StockDown_Date__c,Pre_inspection_Date__c,Shipment_Request_Date__c ,Receipt_Date__c,StockDown__c,Receipt_Status__c,Equipment_Type__c,LOANER__r.loaner_place__c,loaner_application__c ,loaner_application__r.Status__c,LOANER__r.Equipment_Type__c,loanerOrder_Status__c,Remark__c,LOANER__r.Remarks2__c ,loaner_application__r.loaner_request_number__c,LOANER__r.Rental_Customer__r.Name,LOANER__r.Rental_End_Date__c,LOANER__r.ProductName__c from loaner_application_detail__c where loaner_application__c = :loanerApplyId order by Name]; for(Integer i = 0; i < loanerApplyDetSelected.size(); i++){ if (i == Select_Limit) {Over_Limit=true; break;} EquipmentSetInfo midData = null; if(loanerApplyDetSelected[i].LendPrimary_Name__c != null){ lend_DetName.add(loanerApplyDetSelected[i].LendPrimary_Name__c); midData = new EquipmentSetInfo(loanerApplyDetSelected[i]); midData.firstDet = true; }else{ midData = new EquipmentSetInfo(loanerApplyDetSelected[i]); } loanerAssetSelected.add(loanerApplyDetSelected[i].LOANER__c); equipmentSetRecords.add(midData); } // 样机转借数据 //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '[借出开始日]必须输入转借申请单开始和结束之间的日期。')); if(loanerApply.Loaner_LendOrder__c && loanerApply.DealerOrder_From__c != null){ List loanerApplyLendDetSelected = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,LOANER__r.AssetType__c,LOANER__r.Description, LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status,LOANER__r.Rental_Start_Date__c ,LOANER__r.Count_can_allocate_F__c,LOANER__r.RecordTypeId,loaner_ApplyNo__c,RAESD_Status__c,LOANER__r.Name ,Allocated_Det__c,LendPrimary_Name__c,Inspection_result__c,delivery_company__c,Tracking_Number__c ,Return_to_wh_staff__c,Allocate_Date__c,StockDown_Date__c,Pre_inspection_Date__c,Shipment_Request_Date__c ,Receipt_Date__c,StockDown__c,Receipt_Status__c,Equipment_Type__c,LOANER__r.loaner_place__c,loaner_application__c ,loaner_application__r.Status__c,LOANER__r.Equipment_Type__c,Remark__c,LOANER__r.Remarks2__c,loaner_application__r.loaner_request_number__c ,LOANER__r.Rental_Customer__r.Name,LOANER__r.Rental_End_Date__c,LOANER__r.ProductName__c,is_distribution__c from loaner_application_detail__c where DealerID__c = :String.valueOf(loanerApply.DealerOrder_From__c).subString(0,15) AND Id not in : lend_DetName AND Lend_Det__c = true AND is_distribution__c = false order by Name]; system.debug('111'+loanerApplyLendDetSelected.size()); system.debug('111'+lend_DetName); system.debug(loanerApply.DealerOrder_From__c); for(Integer i = 0; i < loanerApplyLendDetSelected.size(); i++){ if (i == Select_Limit) {Over_Limit=true; break;} loanerAssetSelected.add(loanerApplyLendDetSelected[i].LOANER__c); EquipmentSetInfo midData = new EquipmentSetInfo(loanerApplyLendDetSelected[i]); midData.firstDet = true; midData.check = false; midData.oldcheck = false; equipmentSetRecords.add(midData); } system.debug(equipmentSetRecords.size()); } prepareDay = loanerApply.Prepare_Day__c == null ? Integer.valueOf(System.Label.LoanerRentalPrepare) : loanerApply.Prepare_Day__c.intValue(); loanerApply.Prepare_Day__c = prepareDay; //其他已存在的样机借出历史 /*List others = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,loaner_application__r.Rental_Start_Date__c, LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status, loaner_application__r.Rental_End_Date__c,loaner_application__r.Approval_Date__c,Received_loaner_Date__c ,Allocated_Det__c,LendPrimary_Name__c from loaner_application_detail__c where loaner_application__c != :loanerApplyId and LOANER__c in :loanerAssetSelected AND Arrival_wh_Date__c = null AND LOANER__r.RecordTypeId = :System.label.Asset_Record_Type1 and ((loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c = null) or (loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c != null AND Received_loaner_Date__c >= :Date.today().addDays(-prepareDay))) AND StockUp__c = false order by Name]; Map othersMap = new Map(); for (loaner_application_detail__c other : others) { if (othersMap.containsKey(other.LOANER__c)) { continue; } else { if(other.Received_loaner_Date__c == null){ othersMap.put(other.LOANER__c, other.loaner_application__r.Rental_End_Date__c); }else{ othersMap.put(other.LOANER__c, other.Received_loaner_Date__c); } } }*/ for (EquipmentSetInfo info : equipmentSetRecords) { info.Rental_Start_Date = loanerApply.Rental_Start_Date__c; info.Rental_End_Date = loanerApply.Rental_End_Date__c; info.SEdayCount = dayCount; /*if(info.aset.Status == '在库'){ if(othersMap.containsKey(info.aset.Id)){ info.earliest_Lend_Date = othersMap.get(info.aset.Id).addDays(prepareDay); }else{ info.earliest_Lend_Date = Date.today(); } }*/ } } this.getLoanerSet(); if(loanerApply.Equipment_Type__c != 'BS'){ this.getDefaultLoSet(); } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'equipmentSetRecords + ' + equipmentSetRecords)); // 显示数据条数信息 makeMessage(); system.debug(equipmentSetRecords); system.debug(equipmentSetRecords.size()); } // 获取借出元的所有用户 public void getleadUser() { if(loanerApply.DealerOrder_From__c != null){ List userList = [SELECT Id FROM user WHERE AccountId = :loanerApply.DealerOrder_From__c AND IsActive = true]; Integer i = 1; for(user us: userList){ String column = 'Loaner_LendUser' + i + '__c'; loanerApply.put(column,us.Id); i++; } } } // 获取样机套装 public void getLoanerSet() { // 所有样机Set loanerSetRecords = new List(); List loanerSetSearch = [select Id,set_type__c, Name, Equipment_Type__c,Remarks__c,SerialNumber__c,Internal_Asset_number__c,Status__c,loaner_place__c,Reservation_information__c from Loaner_Set__c WHERE Equipment_Type__c = :loanerApply.Equipment_Type__c order by Name]; Integer line = 0; for(loaner_Set__c ls : loanerSetSearch){ EquipmentSetInfo li = new EquipmentSetInfo(line, ls); loanerSetRecords.add(li); line += 1; } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'loanerSetRecords' + loanerSetRecords)); } // 获取申请单中默认样机 public void getDefaultLoSet() { system.debug('getDefaultLoSet'); List lend_DetName = new List(); //已选择个体管理样机 List loanerindividualList = new List(); //// 画面已打勾的明细保留 List selectedloanerRecords = new List(); for (EquipmentSetInfo info : equipmentSetRecords) { if (info.check == true) { selectedloanerRecords.add(info); if(String.isNotEmpty(info.lad.LendPrimary_Name__c)){ lend_DetName.add(info.lad.LendPrimary_Name__c); } if(String.valueOf(info.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type1){ loanerindividualList.add(info.aset.Id); } } } equipmentSetRecords = new List(); loanerAssetSelected = new list(); for (EquipmentSetInfo info : selectedloanerRecords) { loanerAssetSelected.add(info.aset.Id); } // 已存在明细行做成 equipmentSetRecords.addAll(selectedloanerRecords); // 所有ECcode样机 //loanerSetRecords = new List(); //转借分支 if(loanerApply.Loaner_LendOrder__c){ List loanerApplyLendDetSelected = new List(); if(ecCodeList.size() > 0){ loanerApplyLendDetSelected = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,LOANER__r.AssetType__c,LOANER__r.Description,LOANER__r.Rental_Start_Date__c, LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status ,LOANER__r.Count_can_allocate_F__c,LOANER__r.RecordTypeId,loaner_ApplyNo__c,RAESD_Status__c ,Allocated_Det__c,LendPrimary_Name__c,Inspection_result__c,delivery_company__c,Tracking_Number__c ,Return_to_wh_staff__c,Allocate_Date__c,StockDown_Date__c,Pre_inspection_Date__c,Shipment_Request_Date__c ,Receipt_Date__c,StockDown__c,Receipt_Status__c,Equipment_Type__c,LOANER__r.loaner_place__c,loaner_application__c ,loaner_application__r.Status__c,LOANER__r.Equipment_Type__c,Remark__c,LOANER__r.Remarks2__c,loaner_application__r.loaner_request_number__c ,LOANER__r.Rental_Customer__r.Name,LOANER__r.Rental_End_Date__c,LOANER__r.ProductName__c,LOANER__r.Name from loaner_application_detail__c where DealerID__c = :String.valueOf(loanerApply.DealerOrder_From__c).subString(0,15) AND Id not in : lend_DetName AND LOANER__r.EC_Code__c in : ecCodeList AND Lend_Det__c = true AND is_distribution__c = false order by Name]; system.debug('1'); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'loanerApplyLendDetSelected. ' + loanerApplyLendDetSelected.size())); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'ecCodeList.' + ecCodeList.size())); }else{ loanerApplyLendDetSelected = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,LOANER__r.AssetType__c,LOANER__r.Rental_Start_Date__c, LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status,LOANER__r.Description ,LOANER__r.Count_can_allocate_F__c,LOANER__r.RecordTypeId,loaner_ApplyNo__c,RAESD_Status__c ,Allocated_Det__c,LendPrimary_Name__c,Inspection_result__c,delivery_company__c,Tracking_Number__c ,Return_to_wh_staff__c,Allocate_Date__c,StockDown_Date__c,Pre_inspection_Date__c,Shipment_Request_Date__c ,Receipt_Date__c,StockDown__c,Receipt_Status__c,Equipment_Type__c,LOANER__r.loaner_place__c,loaner_application__c ,loaner_application__r.Status__c,LOANER__r.Equipment_Type__c,Remark__c,LOANER__r.Remarks2__c,loaner_application__r.loaner_request_number__c ,LOANER__r.Rental_Customer__r.Name,LOANER__r.Rental_End_Date__c,LOANER__r.ProductName__c,LOANER__r.Name from loaner_application_detail__c where DealerID__c = :String.valueOf(loanerApply.DealerOrder_From__c).subString(0,15) AND Id not in : lend_DetName AND Lend_Det__c = true AND is_distribution__c = false order by Name]; system.debug('2'); } for(Integer i = 0; i < loanerApplyLendDetSelected.size(); i++){ if (i == Select_Limit) {Over_Limit=true; break;} loanerAssetSelected.add(loanerApplyLendDetSelected[i].LOANER__c); EquipmentSetInfo midData = new EquipmentSetInfo(loanerApplyLendDetSelected[i]); midData.firstDet = true; midData.check = false; midData.oldcheck = false; equipmentSetRecords.add(midData); } system.debug(equipmentSetRecords.size()); }else{ //非转借分支 /* WLIG-C3N6BW XHL 样机分配显示其它分野的保有设备,故添加过滤条件 AND Equipment_Type__c = :loanerApply.Equipment_Type__c */ List queryList = [select Id,Name, SerialNumber, Internal_Asset_number__c, OT_Code__c,AssetType__c,Description, EC_Code__c, status,Count_can_allocate_F__c,RecordTypeId,loaner_place__c ,Remarks2__c,Rental_Customer__r.Name,Rental_End_Date__c,Name__c,ProductName__c,Rental_Start_Date__c from Asset WHERE EC_Code__c in : ecCodeList AND Id not in : loanerindividualList AND Equipment_Type__c = :loanerApply.Equipment_Type__c order by EC_Code__c]; for (Asset query : queryList) { loanerAssetSelected.add(query.Id); } system.debug(queryList); // 新明细行做成 Integer j = 0; for (Integer i = 0; i < queryList.size(); i++) { if (j == Select_Limit - selectedloanerRecords.size()) {Over_Limit=true; break;} equipmentSetRecords.add(new EquipmentSetInfo(queryList[i])); j++; } } if(loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_End_Date__c != null){ dayCount = (loanerApply.Rental_Start_Date__c).daysBetween(loanerApply.Rental_End_Date__c); } prepareDay = loanerApply.Prepare_Day__c == null ? Integer.valueOf(System.Label.LoanerRentalPrepare) : loanerApply.Prepare_Day__c.intValue(); loanerApply.Prepare_Day__c = prepareDay; //其他已存在的样机借出历史 /*List others = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,loaner_application__r.Rental_Start_Date__c, LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status, loaner_application__r.Rental_End_Date__c,loaner_application__r.Approval_Date__c,Received_loaner_Date__c ,Allocated_Det__c,LendPrimary_Name__c,Remark__c,LOANER__r.Remarks2__c from loaner_application_detail__c where loaner_application__c != :loanerApplyId and LOANER__c in :loanerAssetSelected AND LOANER__r.RecordTypeId = :System.label.Asset_Record_Type1 AND Arrival_wh_Date__c = null and ((loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c = null) or (loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c != null AND Received_loaner_Date__c >= :Date.today().addDays(-prepareDay))) AND StockUp__c = false order by Name]; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'others。' + others[0].Id)); Map othersMap = new Map(); for (loaner_application_detail__c other : others) { if (othersMap.containsKey(other.LOANER__c)) { continue; } else { if(other.Received_loaner_Date__c == null){ othersMap.put(other.LOANER__c, other.loaner_application__r.Rental_End_Date__c); }else{ othersMap.put(other.LOANER__c, other.Received_loaner_Date__c); } } }*/ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'othersMap + ' + othersMap)); for (EquipmentSetInfo info : equipmentSetRecords) { info.Rental_Start_Date = loanerApply.Rental_Start_Date__c; info.Rental_End_Date = loanerApply.Rental_End_Date__c; info.SEdayCount = dayCount; /*if(info.aset.Status == '在库'){ if(othersMap.containsKey(info.aset.Id)){ info.earliest_Lend_Date = othersMap.get(info.aset.Id).addDays(prepareDay); }else{ info.earliest_Lend_Date = Date.today(); } }*/ } system.debug('end'); } // 获取样机套装 public void getLoanerSetdet() { //已选择个体管理样机 List loanerindividualList = new List(); //// 画面已打勾的明细保留 List selectedloanerRecords = new List(); for (EquipmentSetInfo info : equipmentSetRecords) { if (info.check == true) { selectedloanerRecords.add(info); if(String.valueOf(info.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type1){ loanerindividualList.add(info.aset.Id); } } } equipmentSetRecords = new List(); loanerAssetSelected = new list(); for (EquipmentSetInfo info : selectedloanerRecords) { loanerAssetSelected.add(info.aset.Id); } // 已存在明细行做成 equipmentSetRecords.addAll(selectedloanerRecords); // 样机set中所有样机 List loanerSetDetIDList = new List(); for(Loaner_Set_Detail__c lSD : [SELECT Id,Asset__c FROM Loaner_Set_Detail__c WHERE Loaner_Set__c = :setId]){ loanerSetDetIDList.add(lSD.Asset__c); } /* WLIG-C3N6BW XHL 样机分配显示其它分野的保有设备,故添加过滤条件 AND Equipment_Type__c = :loanerApply.Equipment_Type__c */ List queryList = [select Id,Name, SerialNumber, Internal_Asset_number__c,Name__c,AssetType__c,Loaner__c,Rental_Start_Date__c , OT_Code__c, EC_Code__c, status,Count_can_allocate_F__c,Description, RecordTypeId,loaner_place__c,Remarks2__c,Rental_Customer__r.Name,Rental_End_Date__c,ProductName__c from Asset where Id in :loanerSetDetIDList AND Id not in : loanerindividualList AND Equipment_Type__c = :loanerApply.Equipment_Type__c /*AND status = '在库'*/]; for (Asset query : queryList) { loanerAssetSelected.add(query.Id); } // 新明细行做成 Integer j = 0; for (Integer i = 0; i < queryList.size(); i++) { if (j == Select_Limit - selectedloanerRecords.size()) {Over_Limit=true; break;} equipmentSetRecords.add(new EquipmentSetInfo(queryList[i])); j++; //} } if(loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_End_Date__c != null){ dayCount = (loanerApply.Rental_Start_Date__c).daysBetween(loanerApply.Rental_End_Date__c); } prepareDay = loanerApply.Prepare_Day__c == null ? Integer.valueOf(System.Label.LoanerRentalPrepare) : loanerApply.Prepare_Day__c.intValue(); loanerApply.Prepare_Day__c = prepareDay; //其他已存在的样机借出历史 /*List others = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,loaner_application__r.Rental_Start_Date__c, LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status, loaner_application__r.Rental_End_Date__c,loaner_application__r.Approval_Date__c,Received_loaner_Date__c ,Allocated_Det__c,LendPrimary_Name__c from loaner_application_detail__c where loaner_application__c != :loanerApplyId and LOANER__c in :loanerAssetSelected AND LOANER__r.RecordTypeId = :System.label.Asset_Record_Type1 AND Arrival_wh_Date__c = null and ((loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c = null) or (loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c != null AND Received_loaner_Date__c >= :Date.today().addDays(-prepareDay))) AND StockUp__c = false order by Name]; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'others。' + others[0].Id)); Map othersMap = new Map(); for (loaner_application_detail__c other : others) { if (othersMap.containsKey(other.LOANER__c)) { continue; } else { if(other.Received_loaner_Date__c == null){ othersMap.put(other.LOANER__c, other.loaner_application__r.Rental_End_Date__c); }else{ othersMap.put(other.LOANER__c, other.Received_loaner_Date__c); } } }*/ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'othersMap + ' + othersMap)); for (EquipmentSetInfo info : equipmentSetRecords) { info.Rental_Start_Date = loanerApply.Rental_Start_Date__c; info.Rental_End_Date = loanerApply.Rental_End_Date__c; info.SEdayCount = dayCount; /*if(info.aset.Status == '在库'){ if(othersMap.containsKey(info.aset.Id)){ info.earliest_Lend_Date = othersMap.get(info.aset.Id).addDays(prepareDay); }else{ info.earliest_Lend_Date = Date.today(); } }*/ } } // 检索样机 public void searchLoanerApp() { //已选择个体管理样机 List loanerindividualList = new List(); //// 画面已打勾的明细保留 List selectedloanerRecords = new List(); for (EquipmentSetInfo info : equipmentSetRecords) { if (info.check == true) { selectedloanerRecords.add(info); if(String.valueOf(info.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type1){ loanerindividualList.add(info.aset.Id); } }else{ if(info.oldcheck == true && info.lad != null){ del.add(info.lad); } } } equipmentSetRecords = new List(); loanerAssetSelected = new list(); for (EquipmentSetInfo info : selectedloanerRecords) { loanerAssetSelected.add(info.aset.Id); } // 已存在明细行做成 equipmentSetRecords.addAll(selectedloanerRecords); // 所有ECcode样机 String ecCodeTail = '(\''; for(Integer i = 0 ; i< ecCodeList.size();i++){ if(i 0) { soql += ' and Id not in ' + loanerindTail; } if (ecCodeList.size() > 0) { soql += ' and EC_Code__c in ' + ecCodeTail; } system.debug(soql); List queryList = Database.query(soql); /*List queryList = [select Id,Name, SerialNumber, Internal_Asset_number__c, OT_Code__c, EC_Code__c, status,Count_can_allocate_F__c,RecordTypeId,loaner_place__c from Asset WHERE EC_Code__c in : ecCodeList AND Id not in : loanerindividualList order by EC_Code__c];*/ for (Asset query : queryList) { loanerAssetSelected.add(query.Id); loanerindividualList.add(query.Id); } system.debug(queryList); // 新明细行做成 Integer j = 0; for (Integer i = 0; i < queryList.size(); i++) { if (j == Select_Limit - selectedloanerRecords.size()) {Over_Limit=true; break;} equipmentSetRecords.add(new EquipmentSetInfo(queryList[i])); j++; //} } // 所有样机 soql = this.makeSoql(assName, rec.OT_Code__c, assECcode, rec.Equipment_Type__c, rec.loaner_place__c, rec.Status,rec.SerialNumber,rec.Internal_Asset_number__c, loanerindividualList); soql += ' order by RecordType.Name asc limit ' + (Select_Limit + 1); system.debug(soql); queryList = Database.query(soql); for (Asset query : queryList) { loanerAssetSelected.add(query.Id); } system.debug(queryList); // 新明细行做成 j = 0; for (Integer i = 0; i < queryList.size(); i++) { if (j == Select_Limit - selectedloanerRecords.size()) {Over_Limit=true; break;} equipmentSetRecords.add(new EquipmentSetInfo(queryList[i])); j++; //} } if(loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_End_Date__c != null){ dayCount = (loanerApply.Rental_Start_Date__c).daysBetween(loanerApply.Rental_End_Date__c); } prepareDay = loanerApply.Prepare_Day__c == null ? Integer.valueOf(System.Label.LoanerRentalPrepare) : loanerApply.Prepare_Day__c.intValue(); loanerApply.Prepare_Day__c = prepareDay; //其他已存在的样机借出历史 /*List others = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,loaner_application__r.Rental_Start_Date__c, LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status, loaner_application__r.Rental_End_Date__c,loaner_application__r.Approval_Date__c,Received_loaner_Date__c ,Allocated_Det__c,LendPrimary_Name__c from loaner_application_detail__c where loaner_application__c != :loanerApplyId and LOANER__c in :loanerAssetSelected AND LOANER__r.RecordTypeId = :System.label.Asset_Record_Type1 AND Arrival_wh_Date__c = null and ((loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c = null) or (loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c != null AND Received_loaner_Date__c >= :Date.today().addDays(-prepareDay))) AND StockUp__c = false order by Name]; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'others。' + others[0].Id)); Map othersMap = new Map(); for (loaner_application_detail__c other : others) { if (othersMap.containsKey(other.LOANER__c)) { continue; } else { if(other.Received_loaner_Date__c == null){ othersMap.put(other.LOANER__c, other.loaner_application__r.Rental_End_Date__c); }else{ othersMap.put(other.LOANER__c, other.Received_loaner_Date__c); } } }*/ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'othersMap + ' + othersMap)); for (EquipmentSetInfo info : equipmentSetRecords) { info.Rental_Start_Date = loanerApply.Rental_Start_Date__c; info.Rental_End_Date = loanerApply.Rental_End_Date__c; info.SEdayCount = dayCount; /*if(info.aset.Status == '在库'){ if(othersMap.containsKey(info.aset.Id)){ info.earliest_Lend_Date = othersMap.get(info.aset.Id).addDays(prepareDay); }else{ info.earliest_Lend_Date = Date.today(); } }*/ } // 显示数据条数信息 makeMessage(); } public PageReference save() { system.debug(isManager); Boolean hasError = false; Boolean chukuStatus = false; String strMessage = null; Map asetEquipmentMap = new Map(); List asetEquipmentList = new List(); Set typeSet = new Set(); Set LoanerSet = new Set(); if(loanerApply.Equipment_Type__c == 'IE' && loanerApply.Remind_Date__c != null){ if(loanerApply.Remind_Date__c > Date.today()){ hasError = true; strMessage = '请提前3个工作日分配样机。'; } } Integer num = 0; /*if(isCancel){ hasError = true; strMessage = '您的账户已被冻结,请联系管理员。'; }*/ /*if(loanerApply.Rental_Start_Date__c == null){ hasError = true; strMessage = '请输入[借出开始日]'; } if(loanerApply.Rental_End_Date__c == null){ hasError = true; strMessage = '请输入[借出结束日]'; } if (loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_End_Date__c != null && loanerApply.Rental_Start_Date__c > loanerApply.Rental_End_Date__c) { hasError = true; strMessage = '[借出开始日]必须小于等于[借出结束日]'; }*/ for (EquipmentSetInfo ass : equipmentSetRecords) { if(ass.check == true){ asetEquipmentMap.put(ass.aset.loaner_place__c, ass.aset.loaner_place__c); asetEquipmentList.add(ass.aset.loaner_place__c); typeSet.add(ass.aset.AssetType__c); if(loanerApply.Equipment_Type__c == 'BS' && loanerApply.Loaner_LendOrder__c){ LoanerSet.add(ass.lad.loaner_application__c); num++; } } } if ((loanerApply.Equipment_Type__c != 'IE' && loanerApply.Equipment_Type__c != 'NDT' && loanerApply.Equipment_Type__c != 'ANI') && asetEquipmentMap.size() > 1) { hasError = true; strMessage = 'IE以外的申请单,只能借一个存放地的样机。'; } if ((loanerApply.Equipment_Type__c != 'IE' && loanerApply.Equipment_Type__c != 'NDT' && loanerApply.Equipment_Type__c != 'ANI') && loanerApply.Approval_Status__c == false && asetEquipmentMap.size() > 1) { hasError = true; strMessage = '只能借一个存放地的样机。'; } if(loanerApply.Equipment_Type__c == 'BS' && typeSet.size()>1 && typeSet.contains('维修部件') ){ hasError = true; strMessage = '维修产品只能单独出借。'; } if(loanerApply.Equipment_Type__c == 'BS' && LoanerSet.size()>1 && loanerApply.Loaner_LendOrder__c){ hasError = true; strMessage = '只能转借一个借用单的样机。'; } List temp = [select id from loaner_application_detail__c where loaner_application__c = :LoanerSet and Receipt_Status__c = 'OK']; system.debug(temp.size()+'------'+num); if(temp.size() > num && loanerApply.Equipment_Type__c == 'BS' && loanerApply.Loaner_LendOrder__c){ hasError = true; strMessage = '转借时请选择申请单内全部样机。'; } if (hasError) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, strMessage)); return null; } Savepoint sp = Database.setSavepoint(); try{ //转借分支 if(loanerApply.Loaner_LendOrder__c){ Map lendOrderName = new Map(); List ins = New List(); //del = New List(); List lendPrimaryList = new List(); List delendIDList = new List(); Map asetNoMap = new Map(); List oldList = new List(); Integer indexNum = 1; Integer i = 1; if (loanerApply.Loaner_LendFrom__r.Rental_Start_Date__c > loanerApply.Rental_Start_Date__c || loanerApply.Loaner_LendFrom__r.Rental_End_Date__c < loanerApply.Rental_Start_Date__c) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '[借出开始日]必须输入转借申请单开始和结束之间的日期。')); return null; } for (EquipmentSetInfo ass : equipmentSetRecords) { if(ass.check == true){ //判断是否已经分配,借出后不计算数量 if(ass.lad.Allocated_Det__c == true){ }else{ if(String.valueOf(ass.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2){ if(asetNoMap.containsKey(ass.aset.Id)){ if(ass.deatilNo > 0){ asetNoMap.put(ass.aset.Id, asetNoMap.get(ass.aset.Id) + ass.deatilNo); }else if(ass.lad.RAESD_Status__c == '已分配'){ asetNoMap.put(ass.aset.Id, asetNoMap.get(ass.aset.Id) + 1); } }else{ if(ass.deatilNo > 0){ asetNoMap.put(ass.aset.Id,ass.deatilNo); }else if(ass.lad.RAESD_Status__c == '已分配'){ asetNoMap.put(ass.aset.Id,1); } } if(ass.aset.Count_can_allocate_F__c < asetNoMap.get(ass.aset.Id)){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '样机 ' + ass.aset.EC_Code__c + ' 借出数量超出可分配数量。')); return null; } } } if(ass.lad.Name == null && String.valueOf(ass.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type1 && ass.aset.status != '在库'){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第' + indexNum +'行数据的状态是' + ass.aset.status + ',无法再分配。')); return null; } if(String.valueOf(ass.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2 && ass.aset.Count_can_allocate_F__c <= 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第' + indexNum +'行数据的可以分配数量是'+ ass.aset.Count_can_allocate_F__c +',无法再分配。')); return null; } if (ass.firstDet == false && loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_Start_Date__c < ass.earliest_Lend_Date) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第' + indexNum +'行数据的[借出开始日]必须输入从[最早可借出日]开始起的日期。')); return null; } if(ass.deatilNo > 0){ for(Integer j = 0; j < ass.deatilNo; j++){ loaner_application_detail__c insertDet = new loaner_application_detail__c(); String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } if(String.isNotEmpty(ass.lad.Id)){ if(ass.firstDet && ass.lad.loaner_application__c != loanerApplyId){ lendOrderName.put(ass.lad.loaner_application__r.loaner_request_number__c, ass.lad.loaner_application__r.loaner_request_number__c); insertDet.loanerOrder_Status__c = ass.lad.loaner_application__c +',' + ass.lad.loaner_application__r.Status__c; insertDet.LendPrimary_Name__c = ass.lad.Id; insertDet.LOANER__c = ass.aset.Id; ass.lad.is_distribution__c = true; oldList.add(ass.lad); }else{ insertDet.Id = ass.lad.Id; } insertDet.loaner_application__c = loanerApplyId; insertDet.RAESD_Status__c = '已分配'; insertDet.Allocate_Date__c = Date.today(); } //else{ // insertDet.loaner_application__c = loanerApplyId; // insertDet.RAESD_Status__c = '已分配'; // insertDet.LOANER__c = ass.aset.Id; // insertDet.Allocate_Date__c = Date.today(); //} if(String.isNotBlank(ass.lad.LendPrimary_Name__c)) lendPrimaryList.add(ass.lad.LendPrimary_Name__c); insertDet.Name = loanerApply.Name + '-' + str; insertDet.Remark__c = ass.remark; ins.add(insertDet); i ++; } } /*else{ loaner_application_detail__c insertDet = new loaner_application_detail__c(); String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } if(String.isNotEmpty(ass.lad.Id)){ if(ass.firstDet && ass.lad.loaner_application__c != loanerApplyId){ lendOrderName.put(ass.lad.loaner_application__r.loaner_request_number__c, ass.lad.loaner_application__r.loaner_request_number__c); insertDet.loanerOrder_Status__c = ass.lad.loaner_application__c +',' + ass.lad.loaner_application__r.Status__c; insertDet.LendPrimary_Name__c = ass.lad.Id ; insertDet.LOANER__c = ass.aset.Id; }else{ insertDet.Id = ass.lad.Id; } insertDet.loaner_application__c = loanerApplyId; insertDet.RAESD_Status__c = '已分配'; insertDet.Allocate_Date__c = Date.today(); } //else{ // insertDet.loaner_application__c = loanerApplyId; // insertDet.RAESD_Status__c = '已分配'; // insertDet.Allocate_Date__c = Date.today(); // insertDet.LOANER__c = ass.aset.Id; //} if(String.isNotBlank(ass.lad.LendPrimary_Name__c)) lendPrimaryList.add(ass.lad.LendPrimary_Name__c); insertDet.Name = loanerApply.Name + '-' + str; insertDet.Remark__c = ass.remark; ins.add(insertDet); i ++; }*/ }else if(ass.oldcheck == true && ass.firstDet == false){ loaner_application_detail__c delDet = new loaner_application_detail__c(); delDet.Id = ass.lad.Id; del.add(delDet); }else if(ass.oldcheck == true && ass.firstDet == true){ delendIDList.add(ass.lad.Id); } indexNum += 1; } loanerApply.loaner_place__c = ''; if(asetEquipmentMap.size() == 1){ if(asetEquipmentList.size() > 0) loanerApply.loaner_place__c = asetEquipmentList[0]; } this.getleadUser(); this.moveDetail(delendIDList); //return null; //this.addDetail(inlendIDList); //删除取消的样机明细 if (del.size()>0){ delete del; } if(ins.size()>0){ upsert ins; } if(oldList.size()>0){ update oldList; } for(loaner_application_detail__c lad : [SELECT Id,loaner_application__r.loaner_request_number__c FROM loaner_application_detail__c WHERE Id in : lendPrimaryList]){ lendOrderName.put(lad.loaner_application__r.loaner_request_number__c, lad.loaner_application__r.loaner_request_number__c); } loanerApply.AllLead_OrderName__c = ''; if(lendOrderName.size() > 0){ for(String lon : lendOrderName.keySet()){ loanerApply.AllLead_OrderName__c += lon + ' \r\n '; } } system.debug(typeSet); if(loanerApply.Equipment_Type__c == 'BS' && typeSet.contains('维修部件')){ loanerApply.Is_Repair_Products__c = true; }else{ loanerApply.Is_Repair_Products__c = false; } if(loanerApply.Equipment_Type__c == 'BS' && typeSet.contains('高端样机')){ loanerApply.Is_High_end_Products__c = true; }else{ loanerApply.Is_High_end_Products__c = false; } update loanerApply; }else{ //非转借分支 List ins = New List(); //del = New List(); Map asetNoMap = new Map(); Integer indexNum = 1; Integer i = 1; for (EquipmentSetInfo ass : equipmentSetRecords) { if(ass.check == true){ //判断是否已经分配,借出后不计算数量 if(ass.lad.Allocated_Det__c == true){ }else{ if(String.valueOf(ass.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2){ if(asetNoMap.containsKey(ass.aset.Id)){ if(ass.deatilNo > 0){ asetNoMap.put(ass.aset.Id, asetNoMap.get(ass.aset.Id) + ass.deatilNo); }else if(ass.lad.RAESD_Status__c == '已分配'){ asetNoMap.put(ass.aset.Id, asetNoMap.get(ass.aset.Id) + 1); } }else{ if(ass.deatilNo > 0){ asetNoMap.put(ass.aset.Id,ass.deatilNo); }else if(ass.lad.RAESD_Status__c == '已分配'){ asetNoMap.put(ass.aset.Id,1); } } if(ass.aset.Count_can_allocate_F__c < asetNoMap.get(ass.aset.Id)){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '样机 ' + ass.aset.EC_Code__c + ' 借出数量超出可分配数量。')); return null; } } } if(ass.lad.Name == null && String.valueOf(ass.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type1 && ass.aset.status != '在库'){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第' + indexNum +'行数据的状态是' + ass.aset.status + ',无法再分配。')); return null; } if(String.valueOf(ass.aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2 && ass.aset.Count_can_allocate_F__c <= 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第' + indexNum +'行数据的可以分配数量是'+ ass.aset.Count_can_allocate_F__c +',无法再分配。')); return null; } //if (loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_Start_Date__c < ass.earliest_Lend_Date) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '第' + indexNum +'行数据的[借出开始日]必须入力从[最早可借出日]开始起的日期。')); // return null; //} if(!isManager){ if(ass.deatilNo > 0){ for(Integer j = 0; j < ass.deatilNo; j++){ loaner_application_detail__c insertDet = new loaner_application_detail__c(); String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } if(String.isNotBlank(ass.lad.Id)){ insertDet.Id = ass.lad.Id; if(loanerApply.Status__c == '驳回'){ insertDet.RAESD_Status__c = '已分配'; } }else{ insertDet.loaner_application__c = loanerApplyId; insertDet.LOANER__c = ass.aset.Id; } insertDet.Name = loanerApply.Name + '-' + str; insertDet.RAESD_Status__c = '已分配'; insertDet.Allocate_Date__c = Date.today(); insertDet.Remark__c = ass.remark; ins.add(insertDet); i ++; } }else{ loaner_application_detail__c insertDet = new loaner_application_detail__c(); String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } if(String.isNotBlank(ass.lad.Id)){ insertDet.Id = ass.lad.Id; if(loanerApply.Status__c == '驳回'){ insertDet.RAESD_Status__c = '已分配'; } }else{ insertDet.loaner_application__c = loanerApplyId; insertDet.LOANER__c = ass.aset.Id; } insertDet.Name = loanerApply.Name + '-' + str; insertDet.RAESD_Status__c = '已分配'; insertDet.Allocate_Date__c = Date.today(); insertDet.Remark__c = ass.remark; ins.add(insertDet); i ++; } }else{ if(ass.deatilNo > 0){ for(Integer j = 0; j < ass.deatilNo; j++){ loaner_application_detail__c insertDet = new loaner_application_detail__c(); String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } if(String.isNotBlank(ass.lad.Id)){ insertDet.Id = ass.lad.Id; if(loanerApply.Status__c == '驳回'){ insertDet.RAESD_Status__c = '已分配'; } }else{ insertDet.loaner_application__c = loanerApplyId; if(loanerApply.Status__c == '已批准'){ insertDet.RAESD_Status__c = '已批准'; }else if(loanerApply.Status__c == '申请中'){ if(loanerApply.Equipment_Type__c == 'IE' && loanerApply.Approval_Step__c == 1){ insertDet.RAESD_Status__c = '已分配'; }else{ insertDet.RAESD_Status__c = '申请中'; } }else if(loanerApply.Status__c == '草案中' || loanerApply.Status__c == '驳回' || loanerApply.Status__c == '销售担当批准'){ insertDet.RAESD_Status__c = '已分配'; }else{ insertDet.RAESD_Status__c = '已出库指示'; chukuStatus = true; } insertDet.LOANER__c = ass.aset.Id; } insertDet.Name = loanerApply.Name + '-' + str; insertDet.Allocate_Date__c = Date.today(); insertDet.Remark__c = ass.remark; ins.add(insertDet); i ++; } }else{ loaner_application_detail__c insertDet = new loaner_application_detail__c(); String str = string.valueOf(i); if(str.length() == 1){ str = '0' + str; } if(String.isNotBlank(ass.lad.Id)){ insertDet.Id = ass.lad.Id; if(loanerApply.Status__c == '驳回'){ insertDet.RAESD_Status__c = '已分配'; } }else{ insertDet.loaner_application__c = loanerApplyId; if(loanerApply.Status__c == '已批准'){ insertDet.RAESD_Status__c = '已批准'; }else if(loanerApply.Status__c == '申请中'){ if(loanerApply.Equipment_Type__c == 'IE' && loanerApply.Approval_Step__c == 1){ insertDet.RAESD_Status__c = '已分配'; }else{ insertDet.RAESD_Status__c = '申请中'; } }else if(loanerApply.Status__c == '草案中' || loanerApply.Status__c == '驳回' || loanerApply.Status__c == '销售担当批准'){ insertDet.RAESD_Status__c = '已分配'; }else{ insertDet.RAESD_Status__c = '已出库指示'; chukuStatus = true; } insertDet.LOANER__c = ass.aset.Id; } insertDet.Name = loanerApply.Name + '-' + str; insertDet.Allocate_Date__c = Date.today(); insertDet.Remark__c = ass.remark; ins.add(insertDet); i ++; } } }else if(ass.oldcheck == true){ loaner_application_detail__c delDet = new loaner_application_detail__c(); delDet.Id = ass.lad.Id; del.add(delDet); } indexNum += 1; } loanerApply.loaner_place__c = ''; if(asetEquipmentMap.size() == 1){ if(asetEquipmentList.size() > 0) loanerApply.loaner_place__c = asetEquipmentList[0]; } if(chukuStatus == true)loanerApply.Status__c = '已出库指示'; //删除取消的样机明细 if(isManager && loanerApply.Manager_detail_Del__c == false){ }else{ if (del.size()>0){ delete del; } } if(ins.size()>0){ upsert ins; } system.debug(typeSet); if(loanerApply.Equipment_Type__c == 'BS' && typeSet.contains('维修部件')){ loanerApply.Is_Repair_Products__c = true; }else{ loanerApply.Is_Repair_Products__c = false; } if(loanerApply.Equipment_Type__c == 'BS' && typeSet.contains('高端样机')){ loanerApply.Is_High_end_Products__c = true; }else{ loanerApply.Is_High_end_Products__c = false; } update loanerApply; } }catch(Exception e){ ApexPages.addMessages(e); Database.rollback(sp); return null; } return new Pagereference('/'+loanerApplyId); } // 追加转借明细 /*public void addDetail(List addlist) { List addDetList = [select Id, Name,Receipt_Status__c,Receipt_Date__c from loaner_application_detail__c WHERE Id in : addlist]; for(loaner_application_detail__c det : addDetList){ if(det.Receipt_Status__c != 'OK' && det.Receipt_Status__c == null){ det.Receipt_Status__c = 'OK'; det.Receipt_Date__c = Date.today(); } //日期 det.Asset_Return_Date__c = Date.today(); det.Received_loaner_Date__c = Date.today(); det.After_Inspection_Date__c = Date.today(); det.Arrival_wh_Date__c = Date.today(); det.RAESD_Status__c = '已回库'; //上架加成 det.StockUp__c = true; det.Check_lost_Item__c = 'OK'; det.Inspection_result_after__c = 'OK'; //物流信息 det.Return_Track_Company__c = System.label.Default_Logistics_company; det.Return_Track_Number__c = System.label.Default_Logistics_No; } update addDetList; }*/ //取消转借明细 public void moveDetail(List movelist) { if(moveList.size() == 0 || moveList == null){ return; } List moveDetList = [select Id, Name,LendPrimary_Name__c,RAESD_Status__c ,loanerOrder_Status__c from loaner_application_detail__c WHERE Id in : movelist]; List idList = new List(); for(loaner_application_detail__c lad : moveDetList){ idList.add(lad.LendPrimary_Name__c); } List oldLadList = [SELECT id FROM loaner_application_detail__c WHERE id IN :idList ]; for(loaner_application_detail__c lad : oldLadList){ lad.is_distribution__c = false; } if(oldLadList.size() > 0) update oldLadList; if(moveDetList.size() > 0 ) delete moveDetList; } // 取消转借明细 /*public void moveDetail(List movelist) { List deleteList = new List(); Map deleteMap = new Map(); Map deleteNameMap = new Map(); Map deleteOrderStatusMap = new Map(); List moveDetList = [select Id, Name,LendPrimary_Name__c,RAESD_Status__c ,loanerOrder_Status__c from loaner_application_detail__c WHERE Id in : movelist]; Map loaner_appMap= new Map(); for(loaner_application_detail__c det : moveDetList){ loaner_application__c loaner_app = new loaner_application__c(); if(String.isNotBlank(det.LendPrimary_Name__c)){ deleteList.add(det.LendPrimary_Name__c); if(det.loanerOrder_Status__c.contains(',')){ loaner_app.Id = det.loanerOrder_Status__c.split(',')[0]; loaner_app.Status__c = det.loanerOrder_Status__c.split(',')[1]; loaner_appMap.put(loaner_app.Id, loaner_app); } } } //取原申请明细的单号ID List movedeleteList = [select Id,Name,loaner_application__c from loaner_application_detail__c WHERE Id in : deleteList]; for(loaner_application_detail__c lapp : movedeleteList){ deleteMap.put(lapp.Id, lapp.loaner_application__c); deleteNameMap.put(lapp.Id, lapp.Name); } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'deleteMap-----' + deleteMap)); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'deleteNameMap-----' + deleteNameMap)); System.debug('deleteMap +++++' + deleteMap); for(loaner_application_detail__c det : moveDetList){ if(String.isNotBlank(det.LendPrimary_Name__c)){ deleteList.add(det.LendPrimary_Name__c); det.Name = deleteNameMap.get(det.LendPrimary_Name__c); det.loaner_application__c = deleteMap.get(det.LendPrimary_Name__c); } det.LendPrimary_Name__c = ''; } System.debug('moveDetList +++++' + moveDetList); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'movedeleteList' + movedeleteList)); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, 'moveDetList' + moveDetList)); //return; if(movedeleteList.size() > 0 ) delete movedeleteList; update moveDetList; if(loaner_appMap.size() > 0 ) update loaner_appMap.values(); }*/ // 排序 public void sortTable() { //已选择个体管理样机 List loanerindividualList = new List(); //// 画面已打勾的明细保留 String strProd = null; List selectedloanerRecords = new List(); for (EquipmentSetInfo info : equipmentSetRecords) { if (info.check == true) { selectedloanerRecords.add(info); }else{ if(strProd==null || strProd.length()==0){ strProd = '\'' + String.valueOf(info.aset.Id) + '\''; } else{ strProd += ',\'' + String.valueOf(info.aset.Id) + '\''; } } } equipmentSetRecords = new List(); loanerAssetSelected = new list(); //Map equipmentSetSelectedMap = new Map(); for (EquipmentSetInfo info : selectedloanerRecords) { loanerAssetSelected.add(info.aset.Id); //equipmentSetSelectedMap.put(info.aset.Id, info.aset.Id); } // 排序 if (this.sortKey == this.preSortKey) { // 方向が変わるのみ this.sortOrderAsc = !this.sortOrderAsc; this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); } else { this.sortOrderAsc = true; this.sortOrder[Integer.valueOf(this.preSortKey)] = ' '; this.sortOrder[Integer.valueOf(this.sortKey)] = (this.sortOrderAsc == true ? '↑' : '↓'); } this.preSortKey = this.sortKey; // 所有备品set String soql = this.makeSoql(assName, rec.OT_Code__c, assECcode, rec.Equipment_Type__c, rec.loaner_place__c, rec.Status,rec.SerialNumber,rec.Internal_Asset_number__c,loanerindividualList); soql += ' AND Id IN (' + strProd + ')'; soql += ' order by ' + this.columus[Integer.valueOf(this.sortKey)] + ' ' + (this.sortOrderAsc == true ? 'asc nulls first' : 'desc nulls last') + ' limit ' + (Select_Limit + 1); List queryList = Database.query(soql); for (Asset query : queryList) { loanerAssetSelected.add(query.Id); } // 已存在明细行做成 //equipmentSetRecords.addAll(selectedloanerRecords); for (Integer i = 0; i < selectedloanerRecords.size(); i++) { // 201を超えた場合前200のみを出す if (i == Select_Limit) {Over_Limit=true; break;} equipmentSetRecords.add(selectedloanerRecords[i]); } // 新明细行做成 Integer j = 0; for (Integer i = 0; i < queryList.size(); i++) { // 201を超えた場合前200のみを出す if (j == Select_Limit - selectedloanerRecords.size()) {Over_Limit=true; break;} //if (!equipmentSetSelectedMap.containsKey(queryList[i].Id)) { j++; equipmentSetRecords.add(new EquipmentSetInfo(queryList[i])); //} } if(loanerApply.Rental_Start_Date__c != null && loanerApply.Rental_End_Date__c != null){ dayCount = (loanerApply.Rental_Start_Date__c).daysBetween(loanerApply.Rental_End_Date__c); } //Integer dayCount = (loanerApply.Rental_Start_Date__c).daysBetween(loanerApply.Rental_End_Date__c); prepareDay = loanerApply.Prepare_Day__c == null ? Integer.valueOf(System.Label.LoanerRentalPrepare) : loanerApply.Prepare_Day__c.intValue(); loanerApply.Prepare_Day__c = prepareDay; //其他已存在的样机借出历史 /*List others = [select Id, Name, LOANER__r.SerialNumber,LOANER__c ,loaner_application__r.Rental_Start_Date__c, LOANER__r.Internal_Asset_number__c, LOANER__r.OT_Code__c,LOANER__r.EC_Code__c,LOANER__r.Status, loaner_application__r.Rental_End_Date__c,loaner_application__r.Approval_Date__c,Received_loaner_Date__c ,Allocated_Det__c from loaner_application_detail__c where loaner_application__c != :loanerApplyId and LOANER__c in :loanerAssetSelected AND Arrival_wh_Date__c = null AND LOANER__r.RecordTypeId = :System.label.Asset_Record_Type1 and ((loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c = null) or (loaner_application__r.Approval_Date__c != null AND Received_loaner_Date__c != null AND Received_loaner_Date__c >= :Date.today().addDays(-prepareDay))) AND StockUp__c = false order by Name]; Map othersMap = new Map(); for (loaner_application_detail__c other : others) { if (othersMap.containsKey(other.LOANER__c)) { continue; } else { //othersMap.put(other.LOANER__c, other.loaner_application__r.Rental_End_Date__c); if(other.Received_loaner_Date__c == null){ othersMap.put(other.LOANER__c, other.loaner_application__r.Rental_End_Date__c); }else{ othersMap.put(other.LOANER__c, other.Received_loaner_Date__c); } } }*/ for (EquipmentSetInfo info : equipmentSetRecords) { info.Rental_Start_Date = loanerApply.Rental_Start_Date__c; info.Rental_End_Date = loanerApply.Rental_End_Date__c; info.SEdayCount = dayCount; /*if(info.aset.Status == '在库'){ if(othersMap.containsKey(info.aset.Id)){ info.earliest_Lend_Date = othersMap.get(info.aset.Id).addDays(prepareDay); }else{ info.earliest_Lend_Date = Date.today(); } }*/ } // 显示数据条数信息 makeMessage(); } // 做成检索SQL文 private String makeSoql(String assName, String otCode, String eCcode, String equipmentType, String loanerPlace, String status,String serialNumber,String internal_Asset_No,List exId) { String sqlTail = '(\''; for(Integer i = 0 ; i< exId.size();i++){ if(i 0) { soql += ' and Id not in ' + sqlTail; } system.debug(soql); return soql; } // 显示数据条数信息 private void makeMessage() { if (Over_Limit) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '数据超过' + Select_Limit + '件,只显示前' + Select_Limit + '件')); Over_Limit = false; } } // 返回按钮 public PageReference cancel() { PageReference ref = new Pagereference('/'); //if (String.isNotBlank(loanerApplyId)) { // 返回样机借出申请 ref = new Pagereference('/' + loanerApplyId); //} //ref.setRedirect(true); return ref; } //data bean class EquipmentSetInfo implements Comparable { public Boolean check { get; set; } public Boolean oldcheck { get; set; } public loaner_application_detail__c lad { get; set; } public Asset aset { get; set; } public Loaner_Set__c lSet { get; set; } public Date Rental_Start_Date { get; set; } public Date Rental_End_Date { get; set; } //最早可借出时间 public Date earliest_Lend_Date { get; set; } public Integer SEdayCount { get; set; } public Integer deatilNo { get; set; } public Boolean canInput { get; set; } public Boolean showNo { get; set; } public String remark { get; set; } //public Date endDate {get; set; } //转借元申请明细标记 public Boolean firstDet { get; set; } // 已存产品明细 public EquipmentSetInfo(loaner_application_detail__c e) { check = true; oldcheck= true; lad = e; aset = e.LOANER__r; //endDate = aset.Rental_End_Date__c; if(String.isNotBlank(lad.Remark__c)){ remark = lad.Remark__c; }else{ remark = aset.Remarks2__c; } deatilNo = 1; canInput = false; firstDet = false; if(String.valueOf(aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2){ showNo = true; }else{ showNo = false; } } public EquipmentSetInfo(Integer in_line, Loaner_Set__c e) { deatilNo = in_line; lSet = e; } public EquipmentSetInfo(Asset e) { system.debug(e); check = false; oldcheck = false; lad = new loaner_application_detail__c(); aset = e; remark = aset.Remarks2__c; firstDet = false; if(String.valueOf(aset.RecordTypeId).subString(0,15) == System.label.Asset_Record_Type2){ canInput = true; showNo = true; }else{ //lad.loaner_ApplyNo__c = 1; deatilNo = 1; canInput = false; showNo = false; } } // 排序 public Integer compareTo(Object compareTo) { return null; } } }