public with sharing class ISO_DemandOperAndDemonsController { //公共变量:list public List pageQueryoDoList{get;set;} public List pageQueryoDDList{get;set;} //公共变量:对象数据 public IS_Opportunity_Demand_Operating__c pageShwoElement{get;set;} public String ISodcIdStr {get;set;} public String OpporIdStr {get;set;} public String abortCode {get;set;} public IS_Opportunity_Demand__c ISOhead {get;set;} public ISOpportunityDemandInfo pageShowSet{get;set;} public ISOpportunityDemandInfo pageShowSetClone{get;set;} public List ISOheadList{get;set;} public List initMail{get;set;} //公共变量: 数据类型 public Id thePageIdStr{get;set;} public Integer indexOpr{get;set;} public Integer indexDom{get;set;} public String nowDateShow{get;set;} public String ErrorMsg{get;set;} public String StatusMsg{get;set;} public String Brand_of_Laparoscopy_Tower{get;set;} public boolean NewOrNot {get;set;} public boolean EditAble {get;set;} public String TargetName{get;set;} public Integer OprNumCnt{get;set;} public Integer DomNumCnt{get;set;} public boolean UnableToEdit{get;set;} public String MailTarget{get;set;} public String Cc {get;set;} public String Ccid {get;set;} public String MailDetail {get;set;} public String CopyIDStr {get;set;} public String PDFfileName {get;set;}//为打印PDF提供名字 public String isReturn{get;set;} //判断保存之后是否返回 /** 追加了一个字符串,把需要变色的id压进去,传到前台 */ public String ErrorColorChangeStr {get;set;} public String ErrorColorChangeStrShow {get;set;} //公共变量:集合变量 public List CcList{get;set;} //公共变量:Flg控制标签 // public String ErrorHead{get;set;} public String ErrorTitle{get;set;} public String ErrorElements{get;set;} public boolean ifCtrlUtil{get;set;} // public ISO_DemandOperAndDemonsController() { ifCtrlUtil = false; nowDateShow = Date.today().year()+'年' +Date.today().month()+'月'+Date.today().day()+'日'; ISodcIdStr = ApexPages.currentPage().getParameters().get('id'); CopyIDStr = ApexPages.currentPage().getParameters().get('CopyID'); system.debug(OpporIdStr+'::::::::OppoerID'); abortCode = ApexPages.currentPage().getParameters().get('abortID'); if(ISodcIdStr==''|ISodcIdStr==null){ OpporIdStr = ApexPages.currentPage().getParameters().get('OppoerID'); NewOrNot = false; EditAble = true; }else{ NewOrNot = true; EditAble = false; } pageQueryoDoList = new List(); pageQueryoDDList = new List(); pageShwoElement = new IS_Opportunity_Demand_Operating__c(); pageShowSetClone = new ISOpportunityDemandInfo(); pageShowSet = new ISOpportunityDemandInfo(); ISOheadList = new List(); initMail = new List(); CcList = new List(); //ErrorElements = new List(); ErrorElements='ErrorHead,ErrorHead,ErrorHead,ErrorHead'; //system.debug('Test$$$$$00002'+ErrorElements); this.ErrorHead = 'ErrorHead'; this.ErrorTitle = 'ErrorTitle'; indexOpr = 0; indexDom = 0; } //*******************************************************************************************/ // 外部使用的方法 Start //*******************************************************************************************/ public static String synchronousSodWithOppor(List oppoidList){ //对于询价新增的需求表,通过这个方法进行必要的参数同步,一般用于同步状态,日期 List ThisOpporList = [select id,S_Install_Date__c,SI_FinishedPorj_Date__c from Opportunity where id = : oppoidList]; Map opporidMap = new Map(); Map opporDateInsMap = new Map(); Map opporDateProMap = new Map(); for(Opportunity ops : ThisOpporList){ opporDateInsMap.put(ops.Id, ops.S_Install_Date__c); opporDateProMap.put(ops.Id, ops.SI_FinishedPorj_Date__c); } List updateISO = [select id, Program_Finished_Date__c,Install_Date__c,Opportunity_ID__c from IS_Opportunity_Demand__c where Opportunity_ID__c = :oppoidList and Abort_Date__c = null]; for(IS_Opportunity_Demand__c iso : updateISO){ opporidMap.put(iso.id, iso.Opportunity_ID__c); } for(IS_Opportunity_Demand__c iso : updateISO){ iso.Program_Finished_Date__c = opporDateProMap.get(opporidMap.get(iso.id)); iso.Install_Date__c = opporDateInsMap.get(opporidMap.get(iso.id)); } Savepoint sp = Database.setSavepoint(); try{ update updateISO; return 'Fin'; }catch(Exception o){ Database.rollback(sp); return 'DDL Error'; } } public static String SetQuoteDecide(String oppoid){ List setDecideDate = [SELECT Quote_Locked_Date__c from IS_Opportunity_Demand__c where Opportunity_ID__c = :oppoid]; for(IS_Opportunity_Demand__c iso: setDecideDate){ iso.Quote_Locked_Date__c = Date.today(); } Savepoint sp = Database.setSavepoint(); try{ update setDecideDate; }catch(Exception o){ return o+''; DataBase.rollback(sp); } return 'Fin'; } public static Map setNameForNew(List newList){ Map isoCount = new Map(); Set OppoIDset = new Set(); for(IS_Opportunity_Demand__c NewISO : newList){ OppoIDset.add(NewISO.Opportunity_ID__c); } // List ISOList = [ select count(id) isoID, Opportunity_ID__c oppoID from IS_Opportunity_Demand__c where Opportunity_ID__c = :OppoIDset group by Opportunity_ID__c]; for(AggregateResult ar : ISOList){ system.debug('$$$$$$$$$$$$$$$$$$'+Integer.valueOf(ar.get('isoID'))); isoCount.put((id)ar.get('oppoID'), Integer.valueOf(ar.get('isoID'))); } return isoCount; } public static boolean UpdateMotherOpportunity(List oldList,List newList){ List oldIdList = new List(); Map NewIdMap = new Map(); Map OppToSODIdMap = new Map(); List updateOppor = new List(); for(IS_Opportunity_Demand__c iso : oldList){ if(iso.Approval_Date__c == null &&iso.Submit_Date__c !=null){ oldIdList.add(iso.id); } } for(IS_Opportunity_Demand__c iso : newList){ if(iso.Approval_Date__c !=null){ NewIdMap.put(iso.id, iso.Opportunity_ID__c); OppToSODIdMap.put(iso.Opportunity_ID__c, iso.id); } } for(id idc : oldIdList){ if(NewIdMap.containsKey(idc)){ updateOppor.add(NewIdMap.get(idc)); } } List OppList = [select id,SI_Decide_ID__c,Opportunity_No__c from Opportunity where id in:updateOppor]; for(Opportunity Op : OppList){ Op.SI_Decide_ID__c = OppToSODIdMap.get(Op.Id); } Savepoint sp = Database.setSavepoint(); boolean Flg; try{ update OppList; Flg = true; }catch (Exception o){ Database.rollback(sp); Flg = false; } return Flg; } public static String SetStockDate(id isoID){ List updateList = new List(); updateList = [SELECT id,Stock_Comfirm_Date__c,Equipment_Confirm_Date__c from IS_Opportunity_Demand__c where id = :isoID]; return 'Fin'; } public static String Abort_SI(id isoID,String AbortReason){ List updateList = new List(); if(AbortReason==null||String.isBlank(AbortReason)){ return '请输入终止SI需求原因'; }else{ updateList = [SELECT id,Abort_SI_Reason__c,Abort_Date__c from IS_Opportunity_Demand__c where id = :isoID]; for(IS_Opportunity_Demand__c iso : updateList){ iso.Abort_SI_Reason__c = AbortReason; iso.Abort_Date__c = Date.today(); } Savepoint sp = Database.setSavepoint(); try{ update updateList; return 'Fin'; }catch (Exception o){ Database.rollback(sp); return 'DataBase is Crashed,Connect with the Developer PLEASE'; } } } public static String CopyFunc(String ISodcIdStr){ IS_Opportunity_Demand__c isoHead = new IS_Opportunity_Demand__c() ; List isoODO = new List(); List isoODD = new List(); isoODD = [ SELECT Id, IsDeleted, Name, Other_Relative_Position__c, IS_Opportunity_Demand__c, Demand_Demonstration_Area_Sum__c, Display_Separate_TF__c, Mobile_Equip_Controller_TF__c, Display_Equipment_List__c, HD_Camera_Panorama_TF__c, Microphone_Type_List__c, Position_To_Operating_Room_List__c, Share_With_Other_Firm_TF__c, Other_Require_Text__c, Microphone_Number__c, Microphone_Exsit_TF__c, Brand_Name__c FROM IS_Opportunity_Demand_Demonstration__c where IS_Opportunity_Demand__c =:ISodcIdStr ]; isoHead = [SELECT Id, Name, Name_Index__c , Response__c, Opportunity_ID__c, Mail_Tar_Selector__c, Phone_Of_Nuers__c, Phone_Of_HDOA__c, Phone_of_ImfD__c, Phone_of_GAD__c, Phone_of_EDC__c, Phone_of_CCD__c, Lead_Of_Nurses__c, Lead_Of_Department_Of_Anesthesia__c, Lead_Of_Information_Department__c, Lead_of_General_Affairs_Department__c, Lead_of_Equipment_Department__c, Lead_of_Capital_Construction_Department__c, Public_Hospital_TF__c, Private_Hospital_TF__c, Other_Hospital_TF__c, Operating_Room_Sum__c, Demand_Demonstration_Cnt__c, OperatingCnt__c, Demonstration_Area_Sum__c, Preparation_Stage_TF__c, Building_Phase_Stage_TF__c, Purification_Construction_Stage_TF__c, Other_Stage_Text__c, Operating_Room_Plane_Graph_TF__c, Head_Mast_Position_Graph_TF__c, Operating_Room_Clear_Graph_TF__c, Demonstration_Area_Plane_Graph_TF__c, Buliding_Plane_Graph_TF__c, Other_Enginee_List_Text__c, Func_SOD_Status__c FROM IS_Opportunity_Demand__c where Id =: ISodcIdStr ]; isoODO = [SELECT Id, Name, IS_Opportunity_Demand__c, Operating_Room_Num_or_Name__c, Operating_Room_Position_Area__c, Operating_Room_Position_Building__c, Operating_Room_Position_Stage__c, Operating_Room_Length__c, Operating_Room_Width__c, Operating_Room_Build_Heigth__c, Operating_Room_Top_heigth__c, isChirurgery_TF__c, isGynaecology_TF__c, isUrological_TF__c, isOrthopedics_TF__c, isENT_TF__c, isPlanned_TF__c, isAural_Sursery_TF__c, isGastroenterology_TF__c, isRespirationDept_TF__c, isInvasive_Technology_TF__c, Wall_Mounting_Type_TF__c, Dept_Others_Text__c, Centre_Air_Support_System_TF__c, Purify_Operating_Room_TF__c, Lamp_Panel_Type_List__c, Lamp_Panel_Sum__c, Planning_Blue_Room_TF__c, Need_to_Transform_TF__c, Centralized_Control_TF__c, Shadowless_And_Carm_Ctrl1_TF__c, Shadowless_And_Carm_Ctrl2_TF__c, Shadowless_And_Carm_Ctrl3_TF__c, Reform_Lamp_Plane_List__c, Reform_Lamp_Plane_Sum__c, Equipment_Centralized_Control_TF__c, Equipment_Center_Crtl_Minor_TF__c, OTV_S190_TF__c, OTV_S7_Pro_TF__c, T3D_System_TF__c, CV_180_TF__c, CV_190_TF__c, Olympus_Endoscope_Other_Text__c, UHI_4_TF__c, UHI_3_TF__c, UHI_3_TF_add__c, Other_3D_Displayer__c , Pneumoperitoneum_Other__c, Storz_Main__c, Storz_Main_Model__c, Stryker_Main__c, Stryker_Main_Model__c, Compatible_Signal_TF__c, Compatible_Signal_Format_Text__c, Compatible_Signal_Sum__c, Party_a_Purchase_TF__c, Olympus_Package_Purchase_TF__c, Party_A_Hold_TF__c, Laparoscopy_Tower_TF__c, Anesthesia_Tower_TF__c, Surgical_Tower_TF__c, Display_Tower_Radiation_TF__c, Other_Tower_TF__c, Brand_of_Laparoscopy_Tower_List__c, Other_Brand_Laparoscopy_Text__c, Laparoscopy_Tower_Type_List__c, Install_Type_FullHD_List_Display__c, Laparoscopy_Tower_Model_Desciption_Text__c, Brand_Surgical_Tower_List__c, Surgical_Tower_Model_Or_Decription_Text__c, Brand_Of_Display_Tower_Radiation_List__c, Display_Tower_Model_Or_Description__c, Other_Tower_Brand__c, Performanc_60inch_Display__c, Other_FullHD_Display__c, Other_Tower_Brand_List__c, Other_Tower_Model_Description__c, Purchase_Plan_SpringArm_List__c, Brand_Of_SpringArm__c, Other_Medic_Displayer__c, HIS_TF__c,PASC_TF__c, Hand_Anaesthesia_SYS_TF__c, Other_IMF_Interface__c, SpringArm_AC2000_Sum__c, SpringArm_AC3000_Sum__c, SpringArm_Other_Name__c, Shadowless_Lamp_Procurement_Plan__c, Other_Main_And_Model_Text__c, Equipment_Centralized_Control_List__c, Brand_Of_Shadowless_Lamp_List__c, ShadowlessLamp_Model_Or_Description_Text__c, Shadowless_Lamp_Type_List__c, Brand_Of_Mid_Camera_List__c, Mid_Camera_Model_Or_Descirption_Text__c, Mid_Camera_Signal_Type_List__c, Side_Camera_Procurement_Plan__c, Brand_Of_Side_Camera__c, Side_Camera_Model_Or_Description_Text__c, Side_Camera_Signal_Type_List__c, Endoscopic_Other_Video_Src_ListM__c, OEV_262_2D_Sum__c, Other_2D_Sum__c, Other_2D_Name__c, Dept_Others_TF__c, Olympus_Endoscope_2_Model_List__c, Other_Main_And_Model_TF__c, Energy_Portable_ESG_400_TF__c, Energy_Portable_USG_400_TF__c, Energy_Portable_UES_40_TF__c, Energy_Portable_SSG_2_TF__c, Energy_Portable_Other_Text__c, Covidien_Brand_TF__c, Force_FX_C_Brand_TF__c, Force_Triad_Brand_TF__c, ERBE_Brand_TF__c, VIO300D_Brand_TF__c, Anesthesia_Tower_Text_Description__c, Brand_Of_Anesthesia_Tower_List__c, Operating_Room_Plan__c, Brand_Of_Operating_Bed_List__c, Operating_Bed_Model_Or_Description_Text__c, Operating_Equipment_Ctrl_TF__c, Other_Vs_Arm_Type_C_TF__c, Other_Vs_DSA_TF__c, Other_Vs_EUS_TF__c, Other_Vs_Type_B_ultrasonic_TF__c, Other_Vs_Other_Text__c, LMD_2451TC_Sum__c, LMD_3251TC_Sum__c, Other_3D_Displayer_Sum__c, Size60_3D_Displayer_Sum__c, Sony_42_3D_Displayer_Pro_Sum__c, In_Cell_InstallType_TF__c, Display_60_Install_TF__c, IMF_IO_System__c, IMH_20_Model_TF__c, IMH_10_Model_TF__c, Install_Type_60Display_List__c, MultiTouch_Display_Equip_Ctrl_TF__c, Wireless_Music_Input_Ctrl_TF__c, Reserved_Video_Channels_Sum__c, Reserved_Audio_Channels_Sum__c, Remarks_Text__c FROM IS_Opportunity_Demand_Operating__c where IS_Opportunity_Demand__c =: ISodcIdStr ]; isoHead.id =null; isoHead.name='*'; insert isoHead; for(IS_Opportunity_Demand_Operating__c odo: isoODO){ odo.id= null; odo.IS_Opportunity_Demand__c = isoHead.id; } for(IS_Opportunity_Demand_Demonstration__c odd: isoODD){ odd.id= null; odd.IS_Opportunity_Demand__c = isoHead.id; } insert isoODO; insert isoODD; return isoHead.id; } //*******************************************************************************************/ // 外部使用的方法 END //*******************************************************************************************/ public ISO_DemandOperAndDemonsController(ApexPages.StandardController controller) { //this.targetEstimateId = (String)(ApexPages.currentPage().getParameters().get('id')); nowDateShow = Date.today().year()+'年' +Date.today().month()+'月'+Date.today().day()+'日'; ISodcIdStr = ApexPages.currentPage().getParameters().get('id'); OpporIdStr = ApexPages.currentPage().getParameters().get('OppoerID'); system.debug(OpporIdStr+'::::::::OppoerID'); abortCode = ApexPages.currentPage().getParameters().get('abortID'); if(ISodcIdStr==''|ISodcIdStr==null){ NewOrNot = false; EditAble = true; }else{ NewOrNot = true; EditAble = false; } pageQueryoDoList = new List(); pageQueryoDDList = new List(); pageShwoElement = new IS_Opportunity_Demand_Operating__c(); pageShowSetClone = new ISOpportunityDemandInfo(); pageShowSet = new ISOpportunityDemandInfo(); ISOheadList = new List(); initMail = new List(); CcList = new List(); //ErrorElements = new List(); ErrorElements='ErrorHead,ErrorHead,ErrorHead,ErrorHead'; //system.debug('Test$$$$$00002'+ErrorElements); this.ErrorHead = 'ErrorHead'; this.ErrorTitle = 'ErrorTitle'; indexOpr = 0; indexDom = 0; } public void init(){ OprNumCnt = 0; DomNumCnt = 0; pageQueryoDoList = new List(); pageQueryoDDList = new List(); if(abortCode!=null&&abortCode!=''){ //更新需求表:终止之前的需求表,然后创建新的 List ODCLIST = new List(); ODCLIST = [SELECT id,Abort_Date__c from IS_Opportunity_Demand__c where Opportunity_ID__c =:abortCode and Abort_Date__c=null]; for(IS_Opportunity_Demand__c Od : ODCLIST){ Od.Abort_Date__c = Date.today(); } update ODCLIST; } ISOhead = new IS_Opportunity_Demand__c(); if(ISodcIdStr!=''&&ISodcIdStr!=null){ pageQueryoDDList = [ SELECT Id, IsDeleted, Name, Other_Relative_Position__c, IS_Opportunity_Demand__c, Demand_Demonstration_Area_Sum__c, Display_Separate_TF__c, Mobile_Equip_Controller_TF__c, Display_Equipment_List__c, HD_Camera_Panorama_TF__c, Microphone_Type_List__c, Position_To_Operating_Room_List__c, Share_With_Other_Firm_TF__c, Other_Require_Text__c, Microphone_Number__c, Microphone_Exsit_TF__c, Brand_Name__c FROM IS_Opportunity_Demand_Demonstration__c where IS_Opportunity_Demand__c =:ISodcIdStr ]; ISOheadList = [SELECT Id, OwnerId, IsDeleted, Name, Name_Index__c , Submit_Date__c, Response__c, Mail_Tar_Selector__c, Approval_Date__c, Phone_Of_Nuers__c, Phone_Of_HDOA__c, Phone_of_ImfD__c, Phone_of_GAD__c, Phone_of_EDC__c, Phone_of_CCD__c, Opportunity_ID__c, Lead_Of_Nurses__c, Lead_Of_Department_Of_Anesthesia__c, Lead_Of_Information_Department__c, Lead_of_General_Affairs_Department__c, Lead_of_Equipment_Department__c, Lead_of_Capital_Construction_Department__c, Table_Create_Date__c, Public_Hospital_TF__c, Private_Hospital_TF__c, Other_Hospital_TF__c, Operating_Room_Sum__c, Demand_Demonstration_Cnt__c, OperatingCnt__c, Demonstration_Area_Sum__c, Preparation_Stage_TF__c, Building_Phase_Stage_TF__c, Purification_Construction_Stage_TF__c, Other_Stage_Text__c, Operating_Room_Plane_Graph_TF__c, Head_Mast_Position_Graph_TF__c, Operating_Room_Clear_Graph_TF__c, Demonstration_Area_Plane_Graph_TF__c, Buliding_Plane_Graph_TF__c, Other_Enginee_List_Text__c, Func_SOD_Status__c FROM IS_Opportunity_Demand__c where Id =: ISodcIdStr ]; if(ISOheadList.size()==1){ ISOhead = ISOheadList[0]; ISOhead.Operating_Room_Sum__c = ISOhead.OperatingCnt__c; ISOhead.Demonstration_Area_Sum__c = ISOhead.Demand_Demonstration_Cnt__c; String oppoIDs = ISOhead.Opportunity_ID__c; Opportunity OppList = [select id,SI_Decide_ID__c,Opportunity_No__c from Opportunity where id =:oppoIDs]; PDFfileName = OppList.Opportunity_No__c; }else{ ISOhead = new IS_Opportunity_Demand__c(Operating_Room_Sum__c = 1,Demonstration_Area_Sum__c = 1,Response__c=''); } pageQueryoDoList = [SELECT Id, Name, IS_Opportunity_Demand__c, Operating_Room_Num_or_Name__c, Operating_Room_Position_Area__c, Operating_Room_Position_Building__c, Operating_Room_Position_Stage__c, Operating_Room_Length__c, Operating_Room_Width__c, Operating_Room_Build_Heigth__c, Operating_Room_Top_heigth__c, isChirurgery_TF__c, isGynaecology_TF__c, isUrological_TF__c, isOrthopedics_TF__c, isENT_TF__c, isPlanned_TF__c, isAural_Sursery_TF__c, isGastroenterology_TF__c, isRespirationDept_TF__c, isInvasive_Technology_TF__c, Wall_Mounting_Type_TF__c, Dept_Others_Text__c, Centre_Air_Support_System_TF__c, Purify_Operating_Room_TF__c, Lamp_Panel_Type_List__c, Lamp_Panel_Sum__c, Planning_Blue_Room_TF__c, Need_to_Transform_TF__c, Centralized_Control_TF__c, Shadowless_And_Carm_Ctrl1_TF__c, Shadowless_And_Carm_Ctrl2_TF__c, Shadowless_And_Carm_Ctrl3_TF__c, Reform_Lamp_Plane_List__c, Reform_Lamp_Plane_Sum__c, Equipment_Centralized_Control_TF__c, Equipment_Center_Crtl_Minor_TF__c, OTV_S190_TF__c, OTV_S7_Pro_TF__c, T3D_System_TF__c, CV_180_TF__c, CV_190_TF__c, Olympus_Endoscope_Other_Text__c, UHI_4_TF__c, UHI_3_TF__c, UHI_3_TF_add__c, Other_3D_Displayer__c , Pneumoperitoneum_Other__c, Storz_Main__c, Storz_Main_Model__c, Stryker_Main__c, Stryker_Main_Model__c, Compatible_Signal_TF__c, Compatible_Signal_Format_Text__c, Compatible_Signal_Sum__c, Party_a_Purchase_TF__c, Olympus_Package_Purchase_TF__c, Party_A_Hold_TF__c, Laparoscopy_Tower_TF__c, Anesthesia_Tower_TF__c, Surgical_Tower_TF__c, Display_Tower_Radiation_TF__c, Other_Tower_TF__c, Brand_of_Laparoscopy_Tower_List__c, Other_Brand_Laparoscopy_Text__c, Laparoscopy_Tower_Type_List__c, Install_Type_FullHD_List_Display__c, Laparoscopy_Tower_Model_Desciption_Text__c, Brand_Surgical_Tower_List__c, Surgical_Tower_Model_Or_Decription_Text__c, Brand_Of_Display_Tower_Radiation_List__c, Display_Tower_Model_Or_Description__c, Other_Tower_Brand__c, Performanc_60inch_Display__c, Other_FullHD_Display__c, Other_Tower_Brand_List__c, Other_Tower_Model_Description__c, Purchase_Plan_SpringArm_List__c, Brand_Of_SpringArm__c, Other_Medic_Displayer__c, HIS_TF__c,PASC_TF__c, Hand_Anaesthesia_SYS_TF__c, Other_IMF_Interface__c, SpringArm_AC2000_Sum__c, SpringArm_AC3000_Sum__c, SpringArm_Other_Name__c, Shadowless_Lamp_Procurement_Plan__c, Other_Main_And_Model_Text__c, Equipment_Centralized_Control_List__c, Brand_Of_Shadowless_Lamp_List__c, ShadowlessLamp_Model_Or_Description_Text__c, Shadowless_Lamp_Type_List__c, Brand_Of_Mid_Camera_List__c, Mid_Camera_Model_Or_Descirption_Text__c, Mid_Camera_Signal_Type_List__c, Side_Camera_Procurement_Plan__c, Brand_Of_Side_Camera__c, Side_Camera_Model_Or_Description_Text__c, Side_Camera_Signal_Type_List__c, Endoscopic_Other_Video_Src_ListM__c, OEV_262_2D_Sum__c, Other_2D_Sum__c, Other_2D_Name__c, Dept_Others_TF__c, Olympus_Endoscope_2_Model_List__c, Other_Main_And_Model_TF__c, Energy_Portable_ESG_400_TF__c, Energy_Portable_USG_400_TF__c, Energy_Portable_UES_40_TF__c, Energy_Portable_SSG_2_TF__c, Energy_Portable_Other_Text__c, Covidien_Brand_TF__c, Force_FX_C_Brand_TF__c, Force_Triad_Brand_TF__c, ERBE_Brand_TF__c, VIO300D_Brand_TF__c, Anesthesia_Tower_Text_Description__c, Brand_Of_Anesthesia_Tower_List__c, Operating_Room_Plan__c, Brand_Of_Operating_Bed_List__c, Operating_Bed_Model_Or_Description_Text__c, Operating_Equipment_Ctrl_TF__c, Other_Vs_Arm_Type_C_TF__c, Other_Vs_DSA_TF__c, Other_Vs_EUS_TF__c, Other_Vs_Type_B_ultrasonic_TF__c, Other_Vs_Other_Text__c, LMD_2451TC_Sum__c, LMD_3251TC_Sum__c, Other_3D_Displayer_Sum__c, Size60_3D_Displayer_Sum__c, Sony_42_3D_Displayer_Pro_Sum__c, In_Cell_InstallType_TF__c, Display_60_Install_TF__c, IMF_IO_System__c, IMH_20_Model_TF__c, IMH_10_Model_TF__c, Install_Type_60Display_List__c, MultiTouch_Display_Equip_Ctrl_TF__c, Wireless_Music_Input_Ctrl_TF__c, Reserved_Video_Channels_Sum__c, Reserved_Audio_Channels_Sum__c, Remarks_Text__c FROM IS_Opportunity_Demand_Operating__c where IS_Opportunity_Demand__c =: ISodcIdStr ]; }else{ String TestJson = ''; //String TestJson = '{ "MailEle": [{ "To":"AppleTest", "Fromer": "Applier", "Cc":"McLaughlin", "Details": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" },{ "To":"AppleTest", "Fromer": "SI", "Cc":"Hunter", "Details": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"},{ "To":"AppleTest", "Fromer": "SI", "Cc":"Harold", "Details": "cccc" },{ "To":"AppleTest", "Fromer": "Applier", "Cc":"Harold", "Details": "cccc" },{ "To":"AppleTest", "Fromer": "SI", "Cc":"Harold", "Details": "cccc" }]}'; ISOhead = new IS_Opportunity_Demand__c(Operating_Room_Sum__c = 1,Demonstration_Area_Sum__c = 0,Response__c=TestJson); pageQueryoDoList.add(new IS_Opportunity_Demand_Operating__c(name='*')); //pageQueryoDDList.add(new IS_Opportunity_Demand_Demonstration__c(name='*')); pageShowSet = new ISOpportunityDemandInfo(ISOhead,pageQueryoDoList,pageQueryoDDList); } if(pageQueryoDoList.size()==1){ pageShwoElement = pageQueryoDoList[0]; }else if(pageQueryoDoList.size()==0){ pageQueryoDoList.add(new IS_Opportunity_Demand_Operating__c(name='*')); } if(pageQueryoDDList.size()==0){ //pageQueryoDDList.add(new IS_Opportunity_Demand_Demonstration__c(name='*')); } System.debug('ididididid'+ISOhead); System.debug('ddddd'+pageQueryoDoList.size()); pageShowSet = new ISOpportunityDemandInfo(ISOhead,pageQueryoDoList,pageQueryoDDList); if(pageShowSet!=null){ StatusMsg = 'Normal'; }else{ StatusMsg = 'Empty'; } if(ISOhead.Submit_Date__c!=null||ISOhead.Approval_Date__c!=null){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '数据已提交审批,不能再进行编辑了')); UnableToEdit = false; }else{ UnableToEdit = true; } if(ISOhead.Response__c!=null){ system.debug('开始解析'); initMail = ISO_DemandOperAndDemonsController.JSONtoMailElement(ISOhead.Response__c); system.debug('结束解析'+initMail); } OprNumCnt = pageQueryoDoList.size(); DomNumCnt = pageQueryoDDList.size(); //system.debug('开始解析id'+pageQueryoDDList[0].id); } /** 页面交互功能,用于刷新相关负责人的联系方式 */ public void SearchPhone(){ Map ContactMap = new Map(); ContactMap.put(pageShowSet.ISOdcInfoHead.Lead_Of_Nurses__c, ''); ContactMap.put(pageShowSet.ISOdcInfoHead.Lead_Of_Department_Of_Anesthesia__c, ''); ContactMap.put(pageShowSet.ISOdcInfoHead.Lead_Of_Information_Department__c, ''); ContactMap.put(pageShowSet.ISOdcInfoHead.Lead_of_General_Affairs_Department__c, ''); ContactMap.put(pageShowSet.ISOdcInfoHead.Lead_of_Equipment_Department__c, ''); ContactMap.put(pageShowSet.ISOdcInfoHead.Lead_of_Capital_Construction_Department__c, ''); List ConPhoneList = [ SELECT id, name, MobilePhone, Phone FROM Contact where id in: ContactMap.keySet() ]; for(Contact Co : ConPhoneList){ if(Co.MobilePhone!=null && Co.MobilePhone!=''){ ContactMap.put(Co.id, Co.MobilePhone); }else if(Co.Phone!=null && Co.Phone!=''){ ContactMap.put(Co.id, Co.Phone); } } if(pageShowSet.ISOdcInfoHead.Phone_Of_Nuers__c==null||pageShowSet.ISOdcInfoHead.Phone_Of_Nuers__c==''){ pageShowSet.ISOdcInfoHead.Phone_Of_Nuers__c = ContactMap.get(pageShowSet.ISOdcInfoHead.Lead_Of_Nurses__c); } if(pageShowSet.ISOdcInfoHead.Phone_Of_HDOA__c==null||pageShowSet.ISOdcInfoHead.Phone_Of_HDOA__c=='')pageShowSet.ISOdcInfoHead.Phone_Of_HDOA__c = ContactMap.get(pageShowSet.ISOdcInfoHead.Lead_Of_Department_Of_Anesthesia__c); if(pageShowSet.ISOdcInfoHead.Phone_of_ImfD__c==null||pageShowSet.ISOdcInfoHead.Phone_of_ImfD__c=='')pageShowSet.ISOdcInfoHead.Phone_of_ImfD__c = ContactMap.get(pageShowSet.ISOdcInfoHead.Lead_Of_Information_Department__c); if(pageShowSet.ISOdcInfoHead.Phone_of_GAD__c==null||pageShowSet.ISOdcInfoHead.Phone_of_GAD__c=='')pageShowSet.ISOdcInfoHead.Phone_of_GAD__c = ContactMap.get(pageShowSet.ISOdcInfoHead.Lead_of_General_Affairs_Department__c); if(pageShowSet.ISOdcInfoHead.Phone_of_EDC__c==null||pageShowSet.ISOdcInfoHead.Phone_of_EDC__c=='')pageShowSet.ISOdcInfoHead.Phone_of_EDC__c = ContactMap.get(pageShowSet.ISOdcInfoHead.Lead_of_Equipment_Department__c); if(pageShowSet.ISOdcInfoHead.Phone_of_CCD__c==null||pageShowSet.ISOdcInfoHead.Phone_of_CCD__c=='')pageShowSet.ISOdcInfoHead.Phone_of_CCD__c = ContactMap.get(pageShowSet.ISOdcInfoHead.Lead_of_Capital_Construction_Department__c); } public void refreshDetail() { system.debug(indexOpr+'####'+indexDom ); for(integer i = 0 ; i < indexOpr ; i++){ pageQueryoDoList.add(new IS_Opportunity_Demand_Operating__c(name='*')); } for(integer i = 0 ; i < indexDom ; i++){ pageQueryoDDList.add(new IS_Opportunity_Demand_Demonstration__c(name='*')); } //return null; } //public void refreshDetail(integer i,integer j){ // system.debug(indexOpr+'===='+indexDom ); //} public Pagereference renturn(){ if(OpporIdStr==null){ OpporIdStr =''; } PageReference ref = new Pagereference('/'+(OpporIdStr!=''?OpporIdStr:ISodcIdStr)); ref.setRedirect(true); return ref; } public PageReference Save(){ //insert System.debug('==========Test999'+pageShowSet.ISodoc_InfoList.size()); System.debug('==========Test888'+pageShowSet.ISOdd_InfoList.size()); system.debug('Test0001'); PageReference ref = new Pagereference('/'); //****************************************************************************** //Pneumoperitoneum_Other__c 整理数据 //****************************************************************************** //****************************************************************************** //Pneumoperitoneum_Other__c 整理数据 //****************************************************************************** if(ISodcIdStr==null||ISodcIdStr==''){ ErrorColorChangeStr = this.CheckRules(pageShowSet.ISOdcInfoHead,pageShowSet.ISodoc_InfoList,pageShowSet.ISOdd_InfoList); system.debug('Test0002'); IS_Opportunity_Demand__c insertODC = new IS_Opportunity_Demand__c(); List insertOperatingList = new List(); List insertDemonstration = new List(); insertODC = pageShowSet.ISOdcInfoHead; insertODC.Table_Create_Date__c = Date.today(); //insertOperatingList = pageShowSet.ISodoc_InfoList; //insertDemonstration = pageShowSet.ISOdd_InfoList; //if(insertODC.Operating_Room_Length__c == '无效' // ||insertODC.Operating_Room_Width__c == '无效' // ||insertODC.Operating_Room_Build_Heigth__c == '无效' // ||insertODC.Operating_Room_Top_heigth__c = '无效'){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请修正无效的数据')); // return null; //} if(insertODC.Operating_Room_Sum__c>0 ){ system.debug('Test0003'); Savepoint sp = Database.setSavepoint(); try{ insertODC.Id = null; system.debug('Test0003====OpporIdStr'+OpporIdStr); if(OpporIdStr!=null&&OpporIdStr!=''){ insertODC.Opportunity_ID__c = OpporIdStr; insert insertODC; system.debug('Test0003===TestInsert'); }else if(abortCode!=null && abortCode!=''){ insertODC.Opportunity_ID__c = abortCode; insert insertODC; OpporIdStr = abortCode; } else{ system.debug('Test0003===TestInsert'); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '未能锁定询价')); return null; } system.debug('Test0003===2'); if(pageShowSet.ISodoc_InfoList.size()>0){ for(IS_Opportunity_Demand_Operating__c ODO : pageShowSet.ISodoc_InfoList){ if( ODO.IS_Opportunity_Demand__c == null){ ODO.IS_Opportunity_Demand__c = insertODC.id; } ODO.id = null; if(ODO.Equipment_Centralized_Control_List__c=='控制无影灯'){ if(ODO.Brand_Of_Shadowless_Lamp_List__c =='' ||ODO.ShadowlessLamp_Model_Or_Description_Text__c == '' ||ODO.Shadowless_Lamp_Type_List__c ==''){ system.debug(ODO.Brand_Of_Shadowless_Lamp_List__c+'###'+ODO.ShadowlessLamp_Model_Or_Description_Text__c+'###'+ODO.Shadowless_Lamp_Type_List__c); ODO.Equipment_Centralized_Control_List__c.addError('请补全所选控制设备的相关信息'); //ApexPages.addMessages('请补全无影灯相关控制设备信息'); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请补全无影灯相关控制设备信息')); return null; } } if(ODO.Equipment_Centralized_Control_List__c=='控制术野摄像机'){ if(ODO.Mid_Camera_Model_Or_Descirption_Text__c=='' ||ODO.Mid_Camera_Signal_Type_List__c == '' ||ODO.Brand_Of_Mid_Camera_List__c ==''){ ODO.Equipment_Centralized_Control_List__c.addError('请补全所选控制设备的相关信息'); system.debug(ODO.Mid_Camera_Signal_Type_List__c+'###'+ODO.Brand_Of_Mid_Camera_List__c+'###'+ODO.Mid_Camera_Model_Or_Descirption_Text__c); //ApexPages.addMessages('请补中置术野摄像机相关控制设备信息'); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '请补中置术野摄像机相关控制设备信息')); return null; } } insertOperatingList.add(ODO); } insert insertOperatingList; } if(pageShowSet.ISOdd_InfoList.size()>0){ system.debug('检测InsertDemon数量'+pageShowSet.ISOdd_InfoList.size()); for(IS_Opportunity_Demand_Demonstration__c ODD : pageShowSet.ISOdd_InfoList){ if( ODD.IS_Opportunity_Demand__c == null){ ODD.IS_Opportunity_Demand__c = insertODC.id; } ODD.id = null; insertDemonstration.add(ODD); } system.debug('检测InsertDemon数量'+insertDemonstration.size()); insert insertDemonstration; } }catch(Exception e){ system.debug('Test0004'); Database.rollback(sp); ApexPages.addMessages(e); return null; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, 'e')); } }else{ system.debug('Test0005'); String Error = ''; if(insertODC.Operating_Room_Sum__c == 0 ||insertODC.Operating_Room_Sum__c == null){ Error = Error + '手术间数量为零 '; } //if(insertODC.Demonstration_Area_Sum__c == 0||insertODC.Demonstration_Area_Sum__c == null){ // Error = Error + '示教点数量为零 '; //} Error = Error + '不可保存'; system.debug('Test0005'+Error); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, Error)); return null; } ref = new Pagereference('/'+OpporIdStr); }else if(CopyIDStr!=''&&CopyIDStr!=null){ pageShowSet.ISOdcInfoHead.id=null; insert pageShowSet.ISOdcInfoHead; for(IS_Opportunity_Demand_Operating__c odo: pageShowSet.ISodoc_InfoList){ odo.id=null; odo.IS_Opportunity_Demand__c = pageShowSet.ISOdcInfoHead.id; } for(IS_Opportunity_Demand_Demonstration__c odd: pageShowSet.ISOdd_InfoList){ odd.id=null; odd.IS_Opportunity_Demand__c = pageShowSet.ISOdcInfoHead.id; } insert pageShowSet.ISodoc_InfoList; insert pageShowSet.ISOdd_InfoList; }else{ if(UnableToEdit){ ErrorColorChangeStr = this.CheckRules(pageShowSet.ISOdcInfoHead,pageShowSet.ISodoc_InfoList,pageShowSet.ISOdd_InfoList); system.debug('Anydatatype_msg'+pageShowSet.ISodoc_InfoList.size()); Savepoint sp = Database.setSavepoint(); system.debug('Test0009'); try{ update pageShowSet.ISOdcInfoHead; for(IS_Opportunity_Demand_Operating__c isodo : pageShowSet.ISodoc_InfoList){ if(isodo.IS_Opportunity_Demand__c==null){ isodo.IS_Opportunity_Demand__c = pageShowSet.ISOdcInfoHead.id; } if(isodo.Name==null){ isodo.Name ='*'; } } system.debug('Test0010'+pageShowSet.ISOdd_InfoList.size()); for(IS_Opportunity_Demand_Demonstration__c isddd : pageShowSet.ISOdd_InfoList){ if(isddd.IS_Opportunity_Demand__c==null){ isddd.IS_Opportunity_Demand__c = pageShowSet.ISOdcInfoHead.id; } if(isddd.Name==null){ isddd.Name ='*'; } } List insertList = new List(); List updateList = new List(); List insertListODD = new List(); List updateListODD = new List(); for(IS_Opportunity_Demand_Operating__c isodo : pageShowSet.ISodoc_InfoList){ if(isodo.id==null){ insertList.add(isodo); }else{ updateList.add(isodo); } } for(IS_Opportunity_Demand_Demonstration__c isoDD : pageShowSet.ISOdd_InfoList){ if(isoDD.id==null){ insertListODD.add(isoDD); }else{ updateListODD.add(isoDD); } } if(insertList.size()>0){ insert insertList; } if(insertListODD.size()>0){ if(pageShowSet.ISOdcInfoHead.Demonstration_Area_Sum__c!=0){ insert insertListODD; } } if(updateList.size()>0){ update updateList; } if(updateListODD.size()>0){ update updateListODD; } ref = new Pagereference('/'+pageShowSet.ISOdcInfoHead.id); }catch(Exception IO){ Database.rollback(sp); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, ''+IO)); return null; } }else{ ref = new Pagereference('/'+pageShowSet.ISOdcInfoHead.id); } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '已存在的需求表')); system.debug('Test0006'); //return null; } if(ErrorColorChangeStr!='Fin'){ if(isReturn == 'false'){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO , '以上数据不完整,请及时修正')); }else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '数据不完整,请修正')); } //return null; } ref.setRedirect(true); if(isReturn == 'true'){ return ref; }else{ ISodcIdStr = pageShowSet.ISOdcInfoHead.id; return null; } } public void completenessCheck(){ ErrorColorChangeStr = this.CheckRules(pageShowSet.ISOdcInfoHead,pageShowSet.ISodoc_InfoList,pageShowSet.ISOdd_InfoList); if(ErrorColorChangeStr !='Fin')ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '需求表未填写完整,请修正')); system.debug('ErrorColorChangeStr'+ErrorColorChangeStr ); } public String CheckRules(IS_Opportunity_Demand__c checkSOD,List checkoDoList,List checkoDDList){ String ErrorStr = ''; ErrorColorChangeStrShow = ''; //提交的时候才验证 if(true){ /** 工程文件清单(必须提供) */ //if(checkSOD.Operating_Room_Plane_Graph_TF__c==false // &&checkSOD.Head_Mast_Position_Graph_TF__c == false // &&checkSOD.Operating_Room_Clear_Graph_TF__c == false // &&checkSOD.Demonstration_Area_Plane_Graph_TF__c == false // &&checkSOD.Buliding_Plane_Graph_TF__c == false // &&( checkSOD.Other_Enginee_List_Text__c == '' || checkSOD.Other_Enginee_List_Text__c == null )){ // ErrorStr += 'ProgramFileList,'; // ErrorColorChangeStrShow +='工程文件清单(必须提供);'; // } /** 循环检索oDo内部的错误数据 */ for(integer i = 0;i < checkoDoList.size() ; i++ ){ if(checkoDoList[i].isChirurgery_TF__c == false &&checkoDoList[i].isGynaecology_TF__c == false &&checkoDoList[i].isUrological_TF__c == false &&checkoDoList[i].isOrthopedics_TF__c == false &&checkoDoList[i].isENT_TF__c == false &&checkoDoList[i].isAural_Sursery_TF__c == false &&checkoDoList[i].isGastroenterology_TF__c == false &&checkoDoList[i].isRespirationDept_TF__c == false &&checkoDoList[i].isInvasive_Technology_TF__c ==false &&checkoDoList[i].Dept_Others_TF__c == false ){ ErrorStr += 'DeptForUse'+i+','; ErrorColorChangeStrShow += i+':使用科室;'; }else if(checkoDoList[i].Dept_Others_TF__c == true &&( checkoDoList[i].Dept_Others_Text__c == '' || checkoDoList[i].Dept_Others_Text__c== null)){ ErrorStr += 'DeptForUse'+i+','; } if( checkoDoList[i].Operating_Room_Position_Area__c ==null || checkoDoList[i].Operating_Room_Position_Area__c ==''){ ErrorStr += 'ErrorPosition'+i+','; ErrorColorChangeStrShow += i+':院区;'; }else if( checkoDoList[i].Operating_Room_Position_Building__c ==null || checkoDoList[i].Operating_Room_Position_Building__c ==''){ ErrorStr += 'ErrorPosition'+i+','; ErrorColorChangeStrShow += i+':楼;'; }else if( checkoDoList[i].Operating_Room_Position_Stage__c ==null || checkoDoList[i].Operating_Room_Position_Stage__c ==''){ ErrorStr += 'ErrorPosition'+i+','; ErrorColorChangeStrShow += i+':层;'; } if(checkoDoList[i].Equipment_Center_Crtl_Minor_TF__c== true &&checkoDoList[i].OTV_S190_TF__c == false && checkoDoList[i].OTV_S7_Pro_TF__c == false && checkoDoList[i].T3D_System_TF__c == false && checkoDoList[i].CV_180_TF__c == false && checkoDoList[i].CV_190_TF__c == false && (checkoDoList[i].Olympus_Endoscope_Other_Text__c =='' || checkoDoList[i].Olympus_Endoscope_Other_Text__c == null)){ ErrorStr += 'olympusMainMirrorOne'+i+','; ErrorColorChangeStrShow +=i+':奥林巴斯内镜主机1型号;'; } system.debug('FFFFFFFFFF'+checkoDoList[i].Equipment_Centralized_Control_TF__c+checkoDoList[i].OTV_S190_TF__c+checkoDoList[i].Olympus_Endoscope_Other_Text__c); if(checkoDoList[i].Energy_Portable_ESG_400_TF__c == false && checkoDoList[i].Energy_Portable_USG_400_TF__c == false && checkoDoList[i].Energy_Portable_UES_40_TF__c == false && checkoDoList[i].Energy_Portable_SSG_2_TF__c == false && (checkoDoList[i].Energy_Portable_Other_Text__c==null || checkoDoList[i].Energy_Portable_Other_Text__c =='')){ ErrorStr += 'OlympusEnergy'+i+','; ErrorColorChangeStrShow +=i+':奥林巴斯能量平台;'; } if(checkoDoList[i].Compatible_Signal_TF__c == true &&(checkoDoList[i].Compatible_Signal_Format_Text__c == '' ||checkoDoList[i].Compatible_Signal_Format_Text__c == null)){ ErrorStr += 'Compatible_Signal_TF__c'+i+','; ErrorColorChangeStrShow +=i+':兼容其信号;'; } /** 这里是吊塔配置判断 */ system.debug(checkoDoList[i].Laparoscopy_Tower_TF__c); system.debug(checkoDoList[i].Brand_of_Laparoscopy_Tower_List__c); system.debug(checkoDoList[i].Brand_of_Laparoscopy_Tower_List__c ==null); if(checkoDoList[i].Party_A_Hold_TF__c == true &&checkoDoList[i].Laparoscopy_Tower_TF__c ==false &&checkoDoList[i].Anesthesia_Tower_TF__c ==false &&checkoDoList[i].Surgical_Tower_TF__c ==false &&checkoDoList[i].Display_Tower_Radiation_TF__c ==false &&checkoDoList[i].Other_Tower_TF__c ==false){ ErrorStr += 'SetOfTower'+i+','; ErrorColorChangeStrShow +=i+':吊塔配置;'; } if(checkoDoList[i].Purchase_Plan_SpringArm_List__c == '甲方已有' &&(checkoDoList[i].Brand_Of_SpringArm__c == ''||checkoDoList[i].Brand_Of_SpringArm__c == null)){ ErrorStr += 'Brand_Of_SpringArm'+i+','; ErrorColorChangeStrShow +=i+':补全弹簧臂品牌;'; } if(checkoDoList[i].Shadowless_Lamp_Procurement_Plan__c == '甲方已有' &&(checkoDoList[i].Brand_Of_Shadowless_Lamp_List__c == ''||checkoDoList[i].Brand_Of_Shadowless_Lamp_List__c == null) &&(checkoDoList[i].Brand_Of_Mid_Camera_List__c == ''||checkoDoList[i].Brand_Of_Mid_Camera_List__c == null)){ ErrorStr += 'Brand_Of_Mid_Camera_List'+i+','; ErrorStr += 'Brand_Of_Shadowless_Lamp_List'+i+','; ErrorColorChangeStrShow +=i+':无影灯及中置术野摄像机补全无影灯品牌;'; } if(checkoDoList[i].Side_Camera_Procurement_Plan__c == '甲方已有' &&(checkoDoList[i].Brand_Of_Side_Camera__c == ''||checkoDoList[i].Brand_Of_Side_Camera__c == null)){ ErrorStr += 'Brand_Of_Side_Camera__cTitle'+i+','; ErrorColorChangeStrShow +=i+':补全旁置术野摄像机品牌;'; } if(checkoDoList[i].Operating_Room_Plan__c == '甲方已有' &&(checkoDoList[i].Brand_Of_Operating_Bed_List__c == ''||checkoDoList[i].Brand_Of_Operating_Bed_List__c == null)){ ErrorStr += 'Brand_Of_Operating_Bed'+i+','; ErrorColorChangeStrShow +=i+':补全手术床品牌;'; } if( checkoDoList[i].Laparoscopy_Tower_TF__c == true && (checkoDoList[i].Brand_of_Laparoscopy_Tower_List__c == ''||checkoDoList[i].Brand_of_Laparoscopy_Tower_List__c == null )){ ErrorStr += 'Brand_of_Laparoscopy_Tower'+i+','; ErrorColorChangeStrShow +=i+':腔镜塔品牌;'; } if(checkoDoList[i].Anesthesia_Tower_TF__c == true && (checkoDoList[i].Brand_Of_Anesthesia_Tower_List__c == ''||checkoDoList[i].Brand_Of_Anesthesia_Tower_List__c == null)){ ErrorStr += 'Brand_Of_Anesthesia_Tower'+i+','; ErrorColorChangeStrShow +=i+':麻醉塔品牌;'; } if(checkoDoList[i].Surgical_Tower_TF__c == true && (checkoDoList[i].Brand_Surgical_Tower_List__c == ''||checkoDoList[i].Brand_Surgical_Tower_List__c == null)){ ErrorStr += 'Brand_Surgical_Tower'+i+','; ErrorColorChangeStrShow +=i+':外科塔品牌;'; } if(checkoDoList[i].Display_Tower_Radiation_TF__c == true && (checkoDoList[i].Brand_Of_Display_Tower_Radiation_List__c == ''||checkoDoList[i].Brand_Of_Display_Tower_Radiation_List__c == null)){ ErrorStr += 'Brand_Of_Display_Tower_Radiation'+i+','; ErrorColorChangeStrShow +=i+':显示塔品牌;'; } if(checkoDoList[i].Other_Tower_TF__c == true && (checkoDoList[i].Other_Tower_Brand_List__c == ''||checkoDoList[i].Other_Tower_Brand_List__c == null|| checkoDoList[i].Other_Tower_Model_Description__c == '' ||checkoDoList[i].Other_Tower_Model_Description__c == null)){ ErrorStr += 'Other_Tower_Brand'+i+','; ErrorColorChangeStrShow +=i+':其他塔品牌;'; } if( checkoDoList[i].Laparoscopy_Tower_TF__c == true && (checkoDoList[i].Laparoscopy_Tower_Model_Desciption_Text__c == '' ||checkoDoList[i].Laparoscopy_Tower_Model_Desciption_Text__c == null)){ ErrorStr += 'Laparoscopy_Tower_Model_Desciption_Text__c'+i+','; ErrorColorChangeStrShow +=i+':腔镜塔型号或描述;'; } if( checkoDoList[i].Anesthesia_Tower_TF__c == true && (checkoDoList[i].Anesthesia_Tower_Text_Description__c == '' ||checkoDoList[i].Anesthesia_Tower_Text_Description__c == null)){ ErrorStr += 'Anesthesia_Tower_Text_Description__c'+i+','; ErrorColorChangeStrShow +=i+':麻醉塔型号或描述;'; } if( checkoDoList[i].Surgical_Tower_TF__c == true && (checkoDoList[i].Surgical_Tower_Model_Or_Decription_Text__c == '' ||checkoDoList[i].Surgical_Tower_Model_Or_Decription_Text__c == null)){ ErrorStr += 'Surgical_Tower_Model_Or_Decription_Text__c'+i+','; ErrorColorChangeStrShow +=i+':外科塔型号或描述;'; } if( checkoDoList[i].Display_Tower_Radiation_TF__c == true && (checkoDoList[i].Display_Tower_Model_Or_Description__c == '' ||checkoDoList[i].Display_Tower_Model_Or_Description__c == null)){ ErrorStr += 'Display_Tower_Model_Or_Description__c'+i+','; ErrorColorChangeStrShow +=i+':显示塔(放射)型号或描述;'; } if( checkoDoList[i].Other_Tower_TF__c == true && (checkoDoList[i].Other_Tower_Model_Description__c == '' ||checkoDoList[i].Other_Tower_Model_Description__c == null)){ ErrorStr += 'Other_Tower_Model_Description__c'+i+','; ErrorColorChangeStrShow +=i+':其他塔品牌型号或描述;'; } if( checkoDoList[i].Brand_Of_SpringArm__c == null){ ErrorStr += 'Brand_Of_SpringArm'+i+','; ErrorColorChangeStrShow +=i+':弹簧臂;'; } if( checkoDoList[i].Brand_Of_Mid_Camera_List__c == null && checkoDoList[i].Equipment_Centralized_Control_List__c=='控制术野摄像机'){ ErrorStr += 'Brand_Of_Mid_Camera_List'+i+','; ErrorColorChangeStrShow +=i+':中置显示器;'; } if( checkoDoList[i].Brand_Of_Operating_Bed_List__c == null){ ErrorStr += 'Brand_Of_Operating_Bed'+i+','; ErrorColorChangeStrShow +=i+':手术床;'; } if( checkoDoList[i].Brand_Of_Shadowless_Lamp_List__c == null && checkoDoList[i].Equipment_Centralized_Control_List__c=='控制无影灯'){ ErrorStr += 'Brand_Of_Shadowless_Lamp_List'+i+','; ErrorColorChangeStrShow +=i+':无影灯;'; } } Integer j = 0; for(IS_Opportunity_Demand_Demonstration__c odd : checkoDDList){ System.debug('Brand_Name__c'+odd.Brand_Name__c+'===Microphone_Exsit_TF__c'+odd.Microphone_Exsit_TF__c); if(odd.Microphone_Exsit_TF__c == true && (odd.Brand_Name__c =='' ||odd.Brand_Name__c == null)){ ErrorStr += 'Brand_Name__c'+j+','; ErrorColorChangeStrShow +=j+':麦克风品牌;'; } j++; } } system.debug(ErrorStr+'ErrorStr======='); if(ErrorColorChangeStrShow!=''){ if(isReturn == 'false'){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '已保存,但以下字段存在问题:'+ErrorColorChangeStrShow)); }else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '以下字段存在问题:'+ErrorColorChangeStrShow)); } }else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '已填写完整')); } ErrorStr += 'Fin'; if(ErrorStr == 'Fin' && checkSOD.Id!=null && checkSOD.Submint_TF__c ==false){ IS_Opportunity_Demand__c updateISO = new IS_Opportunity_Demand__c(id =checkSOD.Id,Data_Check_TF__c= true ); update updateISO; } return ErrorStr; } public void SetDetailSum(){ //刷新表格数量 //如果数字比以前小,要在这里执行删除 this.ErrorHead = '测试ErrorHead'; this.ErrorTitle = '测试ErrorTitle'; //this.ErrorElements = ErrorList; //this.SetErrorMsg('测试ErrorHead','测试ErrorTitle',ErrorList); List EmptyoDoList = new List(); List EmptyoDDList =new List(); /** System.debug('==========1'); System.debug('==========1ODO'+pageShowSet.ISOdcInfoHead.Operating_Room_Sum__c); System.debug('==========1ODD'+pageShowSet.ISOdcInfoHead.Demonstration_Area_Sum__c); System.debug('==========1'+TargetName); */ if(TargetName =='Operating_Room'){ if(pageShowSet.ISOdcInfoHead.Operating_Room_Sum__c!=null){ if(pageShowSet.ISOdcInfoHead.Operating_Room_Sum__c>0){ //重定义,如果刷新数据大于原本 if( pageShowSet.ISOdcInfoHead.Operating_Room_Sum__c > pageShowSet.ISodoc_InfoList.size() ){ Decimal addCly = pageShowSet.ISOdcInfoHead.Operating_Room_Sum__c - pageShowSet.ISodoc_InfoList.size(); System.debug('==========1'); for(Decimal i = 0; i rebuildList = pageShowSet.ISodoc_InfoList.clone(); List deleteListoDo = new List(); Decimal minCly = pageShowSet.ISodoc_InfoList.size() - pageShowSet.ISOdcInfoHead.Operating_Room_Sum__c; for( Decimal i = 0; i0){ delete deleteListoDo; } } }else if(pageShowSet.ISOdcInfoHead.Operating_Room_Sum__c==0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.Error, '手术间数量不能为零')); } } }else if(TargetName =='Demonstration'){ for(IS_Opportunity_Demand_Demonstration__c isodd : pageShowSet.ISOdd_InfoList){ System.debug('Head确认ID::::::::'+isoDD.Id); } if(pageShowSet.ISOdcInfoHead.Demonstration_Area_Sum__c!=null){ if(pageShowSet.ISOdcInfoHead.Demonstration_Area_Sum__c >0){ System.debug('################1'); for(integer i = 0;i rebuildListODD = pageShowSet.ISOdd_InfoList.clone(); List deleteListODD = new List(); Decimal minClyOdd = pageShowSet.ISOdd_InfoList.size() - pageShowSet.ISOdcInfoHead.Demonstration_Area_Sum__c; for( Decimal i = 0; i0){ System.debug('执行删除'+deleteListODD.size()); delete deleteListODD; } } }else if(pageShowSet.ISOdcInfoHead.Demonstration_Area_Sum__c == 0){ System.debug('==========设置为零'); Savepoint sp = Database.setSavepoint(); try{ System.debug('执行删除'+ pageShowSet.ISOdd_InfoList.size()); delete pageShowSet.ISOdd_InfoList; pageShowSet.ISOdd_InfoList = new List(); }catch (Exception ex ){ Database.rollback(sp); ApexPages.addMessages(ex); } } } } OprNumCnt = pageShowSet.ISodoc_InfoList.size(); DomNumCnt = pageShowSet.ISOdd_InfoList.size(); for(IS_Opportunity_Demand_Demonstration__c isodd : pageShowSet.ISOdd_InfoList){ System.debug('确认ID::::::::'+isoDD.Id); System.debug('确认Name::::::::'+isoDD.Name); } System.debug('==========19'+pageShowSet.ISodoc_InfoList.size()); System.debug('==========18'+pageShowSet.ISOdd_InfoList.size()); } public void sendMail(){ if(MailTarget == 'Applyer'){ }else if(MailTarget == 'SIoppor'){ } Datetime dt = Datetime.now(); String temp = ''; temp += '****** ' + ' ' + dt.format() + ' ******\n'; temp += '*** To:' + MailTarget + '\n'; temp += '*** Cc:' + Cc + '\n'; temp += MailDetail; MailEle me = new MailEle(); me.Fromer=MailTarget; me.Cc=Cc; me.To=MailTarget; me.Details=MailDetail; initMail.add(me); String response = MailImfParseToJson(initMail); pageShowSet.ISOdcInfoHead.Response__c = response; try{ update pageShowSet.ISOdcInfoHead; Messaging.SingleEmailMessage messageNEW= new Messaging.SingleEmailMessage(); //get the bode from above dummy instance and set it to your actual email //messageNEW.HTMLBody = message.getHtmlBody(); //messageNEW.Subject = '备品借出申请' + ra.Name + '' + '应答沟通'; messageNEW.Subject = 'SI询价需求表 ' + pageShowSet.ISOdcInfoHead.Name + ' \n' + 'SI术间:'; for(IS_Opportunity_Demand_Operating__c odo: pageShowSet.ISodoc_InfoList){ messageNEW.Subject += odo.name +' '; } messageNEW.Subject += '\n SI示教点:'; for(IS_Opportunity_Demand_Demonstration__c odd: pageShowSet.ISOdd_InfoList){ messageNEW.Subject += odd.name +' '; } messageNEW.PlainTextBody = temp; //set desired email addresses messageNEW.setCharset('UTF-8'); List idList = Ccid.split(','); List UserEmail = [SELECT Id, Name, Email from user where id in :idList]; List MailCc = new List(); for(User us : UserEmail){ MailCc.add(us.Email); } //messageNEW.toAddresses = toMailList; messageNEW.ccAddresses = MailCc; //send the mail Messaging.SendEmailResult[] results = messaging.sendEmail(new Messaging.SingleEmailMessage[] {messageNEW}); if(!results[0].success){ system.debug('=====' + results[0].errors[0].message); //MailDetail.addError('邮件发送失败。'); //hasError=true; }else{ //邮件发送成功 //hasError=false; } } catch (Exception ex) { system.debug('=====' + ex.getMessage()); //hasError = true; ApexPages.addMessages(ex); } } class ISOpportunityDemandInfo{ //主题数据组 public IS_Opportunity_Demand__c ISOdcInfoHead{get;set;} public List ISodoc_InfoList {get;set;} public List ISOdd_InfoList{get;set;} //验证关系 boolean isCheckPass{get;set;} public ISOpportunityDemandInfo(){ isCheckPass =false; } public ISOpportunityDemandInfo(IS_Opportunity_Demand__c ISHead,List ISodocInfoList,List ISOddInfoList){ isCheckPass = false; this.ISOdcInfoHead = ISHead; this.ISodoc_InfoList = ISodocInfoList; this.ISOdd_InfoList =ISOddInfoList; if(ISOdcInfoHead!=null){ if(ISOdcInfoHead.Demonstration_Area_Sum__c!=ISOdd_InfoList.size() ||ISOdcInfoHead.Operating_Room_Sum__c!=ISodoc_InfoList.size() ||ISOdd_InfoList.size()==0 ||ISodoc_InfoList.size()==0){ }else{ isCheckPass = true; } } } } public static String MailImfParseToJson(List imfList){ String JsonString; JSONGenerator CreateJson = JSON.createGenerator(true); CreateJson.writeStartObject(); for(MailEle Mail : imfList){ CreateJson.writeFieldName('MailEle'); CreateJson.writeObject(Mail); } CreateJson.writeEndObject(); JsonString = CreateJson.getAsString(); return JsonString; } public static List JSONtoMailElement(String JsonStr){ JSONParser parser = JSON.createParser(JsonStr); List OutputList = new List(); while(parser.nextToken()!=null){ system.debug('23333333333'); while(parser.nextToken() != null){ if(parser.getCurrentToken() == JSONToken.START_OBJECT){ MailEle Me = (MailEle)parser.readValueAs(MailEle.class); OutputList.add(Me); system.debug('==++==Me++==++'+Me); } } } return OutputList; } public class MailEle{ public String Fromer {get;set;} public String Cc{get;set;} public String To{get;set;} public String Details{get;set;} public MailEle(){ } } }