@RestResource(urlMapping = '/NFM008/*') global with sharing class NFM008Rest { public static boolean isRunning = false; // Integer batchsize = 200; 考量する必要がないと思います。 global class InstallationInformationRest { public InstallationInformation InstallationInformation; } global class InstallationInformation { public NFMUtil.Monitoring Monitoring; public InstallationInfo[] InstallationInfo; } global class InstallationInfo { public InstallationInfoH InstallationInfoH; public InstallationInfoI[] InstallationInfoI; } global class InstallationInfoH { public String InquiryNo; // 电子签收单 start public string DeliveryNote; // 电子签收单 end public String InstallationDateH; // 受信しない public String PostingDate; public String CompanyCode; public String DepartmentCode; public String PurposeOfAdvice; public String EntryDate; } global class InstallationInfoI { public String MaterialNo; public Double Quantity; // 受信しない public String SerialNo; public String InstallationDateI; public String ReturnExchangeReplenishMark; // 返品区分、1の場合、レコード削除 public String SLMark; public String GuaranteePeriod; public String GuaranteeType; public String Location; public String PurposeOfAdvice; public String ProvistonPeriod; // 计提年限 } @HttpPost global static void execute() { // 取得接口传输内容 String strData = RestContext.request.requestBody.toString(); InstallationInformationRest ges = (InstallationInformationRest) JSON.deserializeStrict(strData, InstallationInformationRest.class); if (ges == null ) { return; } NFMUtil.Monitoring Monitoring = ges.InstallationInformation.Monitoring; if (Monitoring == null) { return; } BatchIF_Log__c rowData = NFMUtil.saveRowData(Monitoring, 'NFM008', ges.InstallationInformation.InstallationInfo); if (String.isBlank(rowData.Log__c) == false) { executefuture(rowData.Id); } // JSONを戻す RestResponse res = RestContext.response; res.addHeader('Content-Type', 'application/json'); res.statusCode = 200; //String jsonResponse = '{"status": "Success", "Message":' + gedata + '}'; String jsonResponse = '{"status": "Success", "Message":""}'; res.responseBody = blob.valueOf(jsonResponse); return; } @future global static void executefuture(String rowData_Id) { main(rowData_Id); } global static void main(String rowData_Id) { Integer batch_retry_max_cnt = Integer.valueOf(System.Label.batch_retry_max_cnt); BatchIF_Log__c rowData = [Select Id, Name, Log__c, ErrorLog__c, Log2__c, Log3__c, Log4__c, Log5__c, Log6__c, Log7__c, Log8__c, Log9__c, Log10__c, Log11__c, Log12__c, MessageGroupNumber__c, retry_cnt__c from BatchIF_Log__c where RowDataFlg__c = true and Id = :rowData_Id]; String logstr = rowData.MessageGroupNumber__c + ' start\n'; BatchIF_Log__c iflog = new BatchIF_Log__c(); iflog.Type__c = 'NFM008'; iflog.MessageGroupNumber__c = rowData.MessageGroupNumber__c; iflog.Log__c = logstr; iflog.ErrorLog__c = ''; insert iflog; String rowDataStr = NFMUtil.getRowDataStr(rowData); List installationInfoList = (List) JSON.deserialize(rowDataStr, List.class); if (installationInfoList == null || installationInfoList.size() == 0) { return; } isRunning = true; Savepoint sp = Database.setSavepoint(); try { // 更新対応配列とMapなどをセット List managementCodeList = new List(); List productCodeList = new List(); List productSerialNoList = new List(); for (InstallationInfo InstallationInfo : installationInfoList) { InstallationInfoH InstallationInfoH = InstallationInfo.InstallationInfoH; if (InstallationInfoH == null) { continue; } if (InstallationInfo.InstallationInfoI == null || InstallationInfo.InstallationInfoI.size() == 0) { continue; } // InstallationInfoH より、病院と診療科の管理コード InstallationInfoH.CompanyCode = NFMUtil.trimLeft(InstallationInfoH.CompanyCode, '0'); InstallationInfoH.DepartmentCode = NFMUtil.trimLeft(InstallationInfoH.DepartmentCode, '0'); if (InstallationInfoH.CompanyCode == null || InstallationInfoH.CompanyCode == '' || InstallationInfoH.DepartmentCode == null || InstallationInfoH.DepartmentCode == '' ) { // 病院と診療科の管理コードがない場合、処理と飛ばす continue; } managementCodeList.add(InstallationInfoH.CompanyCode); managementCodeList.add(InstallationInfoH.DepartmentCode); for (InstallationInfoI InstallationInfoI : InstallationInfo.InstallationInfoI) { if (InstallationInfoI.MaterialNo == null || InstallationInfoI.MaterialNo == '' || InstallationInfoI.SerialNo == null || InstallationInfoI.SerialNo == '' ) { // 商品コードがない場合、処理と飛ばす continue; } productCodeList.add(InstallationInfoI.MaterialNo); //MODIFY BY SUNLEI 20160808 //productSerialNoList.add(InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo.trim()); productSerialNoList.add(InstallationInfoI.SerialNo.trim()); } } // 診療科のみを取得 List accList = [select Id, Management_Code__c, Department_Class__c, Hospital__c, RecordType.DeveloperName from Account where Management_Code__c in :managementCodeList]; Map accsMap = new Map(); for (Account acc : accList) { accsMap.put(acc.Management_Code__c, acc); } List prdList = [select Id, Name, ProductCode, ProductCode_Ext__c, MDM_Model_No__c from Product2 where ProductCode_Ext__c in :productCodeList]; Map prdsMap = new Map(); for (Product2 prd : prdList) { prdsMap.put(prd.ProductCode_Ext__c, prd); } // 报表可视化开发估时20210617 精琢科技 zxk 2021-08-26 start //添加的保有设备ID List oldIdList = new List(); // 报表可视化开发估时20210617 精琢科技 zxk 2021-08-26 end List astList = [select Id, Name, Product2.ProductCode, SerialNumber, Product_Serial_No__c, Repair_Count__c, Product2Id, AccountId, Account.Management_Code__c, Department_Class__c, Hospital__c, Posting_Date__c, InstallDate, SLMark__c, Guarantee_period_for_products__c, Installation_Site__c, OT_CODE__c, MDM_Model_No__c, CIC_call_back_check__c from Asset where SerialNumber in :productSerialNoList and Information_From__c <> '失单'];// and Delete_Flag__c = false]; Map astsMap = new Map(); Map astcheckMap = new Map(); for (Asset ast : astList) { // 报表可视化开发估时20210617 精琢科技 zxk 2021-08-26 start oldIdList.add(ast.Id); // 报表可视化开发估时20210617 精琢科技 zxk 2021-08-26 end astsMap.put(ast.MDM_Model_No__c + ':' + ast.SerialNumber, ast); // HHOA-AGN2EH start if (astcheckMap.containsKey(ast.MDM_Model_No__c + ':' + ast.SerialNumber) == false) { astcheckMap.put(ast.MDM_Model_No__c + ':' + ast.SerialNumber, 1); } else { astcheckMap.put(ast.MDM_Model_No__c + ':' + ast.SerialNumber, astcheckMap.get(ast.MDM_Model_No__c + ':' + ast.SerialNumber) + 1); } // HHOA-AGN2EH end } // 更新対応配列をセット astList = new List(); Map astUpdateMap = new Map(); List astDelList = new List(); Map astDelMap = new Map(); for (InstallationInfo InstallationInfo : installationInfoList) { InstallationInfoH InstallationInfoH = InstallationInfo.InstallationInfoH; if (InstallationInfoH == null) { iflog.ErrorLog__c += 'Error! InstallationInfoH is required. This inquiry is skipped.\n'; continue; } if (InstallationInfo.InstallationInfoI == null || InstallationInfo.InstallationInfoI.size() == 0) { iflog.ErrorLog__c += 'Error! InstallationInfoI is required. This inquiry is skipped.\n'; continue; } // InstallationInfoH.PurposeOfAdvice を見ない // if (InstallationInfoH.PurposeOfAdvice == '1') { // // deleteを無視 // logstr += 'InstallationInfoH.PurposeOfAdvice==1 '; // continue; // } // InstallationInfoH より、病院と診療科の管理コード if (InstallationInfoH.CompanyCode == null || InstallationInfoH.CompanyCode == '') { // 必須項目がない場合、処理と飛ばす iflog.ErrorLog__c += 'Error! CompanyCode is required. This inquiry is skipped.\n'; continue; } if (InstallationInfoH.DepartmentCode == null || InstallationInfoH.DepartmentCode == '') { // 必須項目がない場合、処理と飛ばす iflog.ErrorLog__c += 'Error! DepartmentCode is required. This inquiry is skipped.\n'; continue; } if (accsMap.get(InstallationInfoH.CompanyCode) == null) { iflog.ErrorLog__c += 'Error! Company[' + InstallationInfoH.CompanyCode + ']NotExist. This inquiry is skipped.\n'; continue; } else if (accsMap.get(InstallationInfoH.CompanyCode).RecordType.DeveloperName != 'HP' && accsMap.get(InstallationInfoH.CompanyCode).RecordType.DeveloperName != 'Agency') { iflog.ErrorLog__c += 'Error! Company[' + InstallationInfoH.CompanyCode + ']Is Not HP(Agency). This inquiry is skipped.\n'; continue; } if (accsMap.get(InstallationInfoH.DepartmentCode) == null) { iflog.ErrorLog__c += 'Error! Department[' + InstallationInfoH.DepartmentCode + ']NotExist. This inquiry is skipped.\n'; continue; } for (InstallationInfoI InstallationInfoI : InstallationInfo.InstallationInfoI) { if (InstallationInfoI.MaterialNo == null || InstallationInfoI.MaterialNo == '') { // 必須項目がない場合、処理と飛ばす iflog.ErrorLog__c += 'Error! MaterialNo is required. This asset is skipped.\n'; continue; } if (InstallationInfoI.SerialNo == null || InstallationInfoI.SerialNo == '') { // 必須項目がない場合、処理と飛ばす iflog.ErrorLog__c += 'Error! Product[' + InstallationInfoI.MaterialNo + '] SerialNo is required. This asset is skipped.\n'; continue; } Product2 prd = prdsMap.get(InstallationInfoI.MaterialNo); if (prd == null) { iflog.ErrorLog__c += 'Error! [' + InstallationInfoI.SerialNo + ']Product[' + InstallationInfoI.MaterialNo + ']NotExist. This asset is skipped.\n'; continue; } // HHOA-AGN2EH start if (astcheckMap.containsKey(prd.MDM_Model_No__c + ':' + InstallationInfoI.SerialNo.trim()) == true && astcheckMap.get(prd.MDM_Model_No__c + ':' + InstallationInfoI.SerialNo.trim()) > 1) { iflog.ErrorLog__c += 'Error! [' + InstallationInfoI.SerialNo + ']Product[' + InstallationInfoI.MaterialNo + '] Exist more than one. This asset is skipped.\n'; continue; } // HHOA-AGN2EH end Asset ast = astsMap.get(prd.MDM_Model_No__c + ':' + InstallationInfoI.SerialNo.trim()); if (ast == null) { // 保有設備存在しないのに、delete 受信の場合 //if (InstallationInfoI.ReturnExchangeReplenishMark == '1' || InstallationInfoI.PurposeOfAdvice == '1') { // HHOA-AGN2EH start //iflog.ErrorLog__c += 'Warning! Delete Asset[' + InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo + ']NotExist\n'; // HHOA-AGN2EH end // continue; //} //iflog.ErrorLog__c += '194[prd.MDM_Model_No__c:' + prd.MDM_Model_No__c + ']SUNLEI TEST[InstallationInfoI.SerialNo' + InstallationInfoI.SerialNo + '] DEUG\n'; //iflog.ErrorLog__c += '195[prd.MDM_Model_No__c:' + prd.MDM_Model_No__c + ']SUNLEI TEST[InstallationInfoI.SerialNo' + InstallationInfoI.SerialNo + '] DEUG\n'; //add by sunlei 20160810 保有設備存在しない新規の場合、何もしない ast = new Asset(); ast.SerialNumber = InstallationInfoI.SerialNo.trim(); //continue; } else { if (InstallationInfoI.ReturnExchangeReplenishMark == '1' || InstallationInfoI.PurposeOfAdvice == '1') { // 物理削除用 if (astDelMap.get(ast.Product_Serial_No__c) == null) { astDelList.add(ast); astDelMap.put(ast.Product_Serial_No__c, ast); } logstr += InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo + '(delete) '; // 修理がある場合、Warning! を出す if (ast.Repair_Count__c > 0) { // HHOA-AGN2EH start //iflog.ErrorLog__c += 'Warning! Delete Asset[' + InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo + '] with repair.\n'; // HHOA-AGN2EH end } continue; } // HHOA-AGN2EH start if (ast.Hospital__c != accsMap.get(InstallationInfoH.CompanyCode).Id) { iflog.ErrorLog__c += 'Warning! CompanyCode:' + '[' + InstallationInfoH.CompanyCode + '] is not match with the Asset[' + ast.OT_CODE__c + ':' + ast.SerialNumber + ']. This asset is skipped.\n'; continue; } // HHOA-AGN2EH end //Modify by sunlei 20160804 更新的情况下 判断科室是否一致 if (ast.AccountId != accsMap.get(InstallationInfoH.DepartmentCode).Id) { // interface科室 <>保有设备的科室、処理と飛ばす iflog.ErrorLog__c += 'Warning! Asset' + '[' + ast.OT_CODE__c + ':' + ast.SerialNumber + '] DepartmentCode:' + ast.Account.Management_Code__c + ' is updated to ' + InstallationInfoH.DepartmentCode + '.\n'; // HHOA-AGN2EH start //continue; // HHOA-AGN2EH end } } if (InstallationInfoI.InstallationDateI == null || InstallationInfoI.InstallationDateI == '') { // 必須項目がない場合、処理と飛ばす iflog.ErrorLog__c += 'Error! [' + InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo + ']InstallationDateI is required. This asset is skipped.\n'; continue; } if (InstallationInfoI.SLMark == null || InstallationInfoI.SLMark == '') { // 必須項目がない場合、処理と飛ばす iflog.ErrorLog__c += 'Error! [' + InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo + ']SLMark is required. This asset is skipped.\n'; continue; } //Add by sunlei 20160804 更新的情况下[保有设备]的OT-CODE和机身编号一致进行更新 if (ast.SerialNumber == InstallationInfoI.SerialNo.trim() && ast.MDM_Model_No__c == prdsMap.get(InstallationInfoI.MaterialNo).MDM_Model_No__c && ast.OT_CODE__c != InstallationInfoI.MaterialNo ) { iflog.ErrorLog__c += 'Warning! Asset' + '[' + ast.OT_CODE__c + ':' + ast.SerialNumber + '] is updated to [' + InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo + ']\n'; //iflog.ErrorLog__c += '241Warning! Asset' + '[' + ast.OT_CODE__c + ':' + ast.SerialNumber + '] is sunleitest to [' + InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo + ']\n'; //continue; } // upsert用、項目転送 ast.Product_Serial_No__c = InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo.trim(); if (astUpdateMap.get(ast.Product_Serial_No__c) == null) { astList.add(ast); astUpdateMap.put(ast.Product_Serial_No__c, ast); logstr += InstallationInfoI.MaterialNo + ':' + InstallationInfoI.SerialNo.trim() + ' '; } else { ast = astUpdateMap.get(ast.Product_Serial_No__c); } ast.Name = prd.Name; ast.Order_No__c = InstallationInfoH.InquiryNo; ast.Posting_Date__c = NFMUtil.parseStr2Date(InstallationInfoH.PostingDate); ast.AccountId = accsMap.get(InstallationInfoH.DepartmentCode).Id; ast.Department_Class__c = accsMap.get(InstallationInfoH.DepartmentCode).Department_Class__c; // HHOA-AGN2EH start //ast.Hospital__c = accsMap.get(InstallationInfoH.CompanyCode).Id; // HHOA-AGN2EH end ast.Product2Id = prdsMap.get(InstallationInfoI.MaterialNo).Id; // HHOA-AGN2EH start //ast.SerialNumber = InstallationInfoI.SerialNo.trim(); // HHOA-AGN2EH end ast.InstallDate = NFMUtil.parseStr2Date(InstallationInfoI.InstallationDateI); System.debug('+++++++++++++++++++++++++++++++++++++++++++++++++++++++++'+ast.InstallDate); ast.SLMark__c = InstallationInfoI.SLMark; // CHAN-AVC54T start //ast.Guarantee_period_for_products__c = NFMUtil.parseStr2Date(InstallationInfoI.GuaranteePeriod); //Date gp = NFMUtil.parseStr2Date(InstallationInfoI.GuaranteePeriod); //if (gp != null) { // ast.Guarantee_period_for_products__c = gp; //} // 20190906 2位数是年限 新数据,8位数是期限 老数据 if (String.isNotBlank(InstallationInfoI.GuaranteePeriod)) { if (InstallationInfoI.GuaranteePeriod.trim().length() == 2) { ast.New_logic_data__c = true; ast.Guarantee_period_year__c = Decimal.valueOf(InstallationInfoI.GuaranteePeriod); } else { ast.New_logic_data__c = False; ast.Guarantee_period_for_products__c = NFMUtil.parseStr2Date(InstallationInfoI.GuaranteePeriod); } } else { ast.New_logic_data__c = true; } if (String.isNotBlank(InstallationInfoI.ProvistonPeriod)) { ast.ProvistonPeriod__c = Decimal.valueOf(InstallationInfoI.ProvistonPeriod); } ast.EntryDate__c = NFMUtil.parseStr2Date(InstallationInfoH.EntryDate); // CHAN-AVC54T end //if (InstallationInfoI.Location != null) { // ast.Installation_Site__c = InstallationInfoI.Location; //} ast.IF_Information_From__c = true; } } if (astList.size() > 0) { upsert astList; for (Asset astID : astList) { oldIdList.add(astID.Id); } } // 报表可视化开发估时20210617 精琢科技 zxk 2021-08-26 start //创建集合用来存放发货DN ID List esingFromIdList = new List(); // Map statuAchievementsMap = new Map(); if (oldIdList.size() > 0) { //用来存放发货DN对象 最后用来更新发货DN对象。 Map statuMap = new Map(); //根据保有设备ID作为调价查询保有设备里面的安装日期和安装状态,用来给发货DN对象安装日期和安装状态赋值。 // 2021-11-12 "视同签收"功能修改 检索DN明细时候剔除外贸订单 List statuList = [select Id, asset__c, asset__r.InstallDate, asset__r.CIC_call_back_check__c, Statu_Achievements_DN__c from Statu_Achievements_DN_details__c where asset__c in:oldIdList and Statu_Achievements_DN__r.Opportunity__r.Trade__c != '外貿' Order by Statu_Achievements_DN__c, asset__r.InstallDate ]; for (Statu_Achievements_DN_details__c sadnd : statuList) { String DNId = sadnd.Statu_Achievements_DN__c; Statu_Achievements_DN__c statu = new Statu_Achievements_DN__c(); // Statu_Achievements__c statuAchievements = new Statu_Achievements__c(); statu.Id = DNId; // String statuAchievementsId = sadnd.Statu_Achievements__c; // statuAchievements.id = statuAchievementsId; statu.InstallationStatus__c = '未安装'; if (statuMap.containsKey(DNId)) { statu = statuMap.get(DNId); } //给发货DN对象安装日期赋值 statu.InstallDate__c = sadnd.asset__r.InstallDate; if (statu.InstallDate__c != null) { statu.InstallationStatus__c = '已安装'; // statuAchievements.Installation_Day__c = sadnd.asset__r.InstallDate; esingFromIdList.add(DNId); } statuMap.put(DNId, statu); // statuAchievementsMap.put(statuAchievementsId,statuAchievements); } if (statuMap.size() > 0) { update statuMap.values(); } // if (statuAchievementsMap.size()>0) { // update statuAchievementsMap.values(); // } } //集合用来存放签收单日期数据,目的为了如果签收已完成就不进行更新。 Map esMap = new Map(); if (esingFromIdList.size() > 0) { //根据发货DN ID来查询经销商4个日期和医院4个日期,最后用来更新签收单数据。 List eSignFormDataList = [SELECT Id, agencyScanDay__c, agencySignUpDate__c, salesManageConfirmDate__c, Statu_Achievements_DN__c, agencyConfirmDate__c, endUser__c, Sales_Root_Formula__c, HPScanDay__c, HPSignUpDate__c, Statu_Achievements_DN__r.InstallDate__c, salesHPManageConfirmDate__c, skip_Hospital_Sign__c, HPConfirmDate__c, DeemedReceipt__c, agencyDNSignUpStatus__c, HPDNSignUpStatus__c, Statu_Achievements__r.Opportunity__r.Trade__c // 内贸/外贸 From eSignForm__c where Statu_Achievements_DN__c in:esingFromIdList ]; for (eSignForm__c eSignFormList : eSignFormDataList) { /** * 1、经销商直销:只卖给经销商 契约 * 2、医院直销 :只卖给医院 OCSM直接销售 * 3、经销商分销:卖给经销商 ---> 医院 不等于契约 和 不等于OCSM直接销售 **/ String esnewId = eSignFormList.Id; // 2022-01-18 只更新内贸订单 if (String.isNotBlank(eSignFormList.Statu_Achievements__r.Opportunity__r.Trade__c) && '内貿'.equals(eSignFormList.Statu_Achievements__r.Opportunity__r.Trade__c)) { //只更新医院 直销 if ( !eSignFormList.skip_Hospital_Sign__c && eSignFormList.HPDNSignUpStatus__c != '签收已完成') { eSignFormDataList02(eSignFormList); esMap.put(esnewId, eSignFormList); } // 视同签收 eSignFormList.DeemedReceipt__c = true; } } if (esMap.size() > 0) { update esMap.values(); } } // 报表可视化开发估时20210617 精琢科技 zxk 2021-08-26 end if (astDelList.size() > 0) { //delete astDelList; // TODO 今後 返品設備の科室に移動する可能性がある // HHOA-AGN2EH start //for (Asset ast : astDelList) { // ast.Return_Flag__c = true; //} //update astDelList; // HHOA-AGN2EH end } logstr += '\nend'; rowData.retry_cnt__c = 0; } catch (Exception ex) { // エラーが発生した場合 Database.rollback(sp); System.debug(Logginglevel.ERROR, 'NFM008_' + rowData.MessageGroupNumber__c + ':' + ex.getMessage()); System.debug(Logginglevel.ERROR, 'NFM008_' + rowData.MessageGroupNumber__c + ':' + ex.getStackTraceString()); logstr += '\n' + ex.getMessage(); iflog.ErrorLog__c = ex.getMessage() + '\n' + ex.getStackTraceString() + '\n' + iflog.ErrorLog__c; if (rowData.retry_cnt__c == null) rowData.retry_cnt__c = 0; if (rowData.retry_cnt__c < batch_retry_max_cnt) { rowData.retry_cnt__c++; LogAutoSendSchedule.assignOneMinute(); } if (rowData.retry_cnt__c >= batch_retry_max_cnt) { rowData.ErrorLog__c = ex.getMessage() + '\n' + ex.getStackTraceString() + '\n' + rowData.ErrorLog__c + '错误次数已经超过自动收信设定的最大次数,请手动收信'; } } update rowData; iflog.Log__c = logstr; if (iflog.Log__c.length() > 131072) { iflog.Log__c = iflog.Log__c.subString(0, 131065) + ' ...'; } if (iflog.ErrorLog__c.length() > 32768) { iflog.ErrorLog__c = iflog.ErrorLog__c.subString(0, 32760) + ' ...'; } update iflog; } // global static eSignForm__c eSignFormDataList01(eSignForm__c eSignFormList) { // eSignFormList.agencyScanDay__c = eSignFormList.Statu_Achievements_DN__r.InstallDate__c; // eSignFormList.agencySignUpDate__c = eSignFormList.Statu_Achievements_DN__r.InstallDate__c; // eSignFormList.salesManageConfirmDate__c = eSignFormList.Statu_Achievements_DN__r.InstallDate__c; // eSignFormList.agencyConfirmDate__c = eSignFormList.Statu_Achievements_DN__r.InstallDate__c; // return eSignFormList; // } global static eSignForm__c eSignFormDataList02(eSignForm__c eSignFormList) { eSignFormList.HPScanDay__c = eSignFormList.Statu_Achievements_DN__r.InstallDate__c; eSignFormList.HPSignUpDate__c = eSignFormList.Statu_Achievements_DN__r.InstallDate__c; eSignFormList.salesHPManageConfirmDate__c = eSignFormList.Statu_Achievements_DN__r.InstallDate__c; eSignFormList.HPConfirmDate__c = eSignFormList.Statu_Achievements_DN__r.InstallDate__c; // 2021-11-11 SAP报表医院签收确认日期显示需要医院审批状态为已批准 // 视同签收的情况下 设置医院审批状态为已批准 eSignFormList.HPSignUpStatus__c = '已批准'; return eSignFormList; } }