global class NFM110dataBatch implements Database.Batchable { public string rowData_Id; public transient static List orderReturnIdList; global NFM110dataBatch() { } global NFM110dataBatch( string rowData_Id ) { this.rowData_Id = rowData_Id; } global Database.QueryLocator start(Database.BatchableContext bc) { if( string.isBlank( rowData_Id )){ return Database.getQueryLocator([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, Type__c, DA_retry_cnt__c, NFM501Future_Count__c, NFM501_Web_Annex_Count__c FROM BatchIF_Log__c WHERE RowDataFlg__c = true AND Type__c = 'NFM110' AND CreatedDate >= : Datetime.newInstance(2022, 4, 1) order by MessageGroupNumber__c asc ]); }else{ return Database.getQueryLocator([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, DA_retry_cnt__c ,DN_retry_cnt__c,CreatedDate from BatchIF_Log__c where RowDataFlg__c = true and Id = :rowData_Id ]); } } global void execute(Database.BatchableContext BC, List rowDataList) { Oly_TriggerHandler.bypass('ConsumableAssetHander'); BatchIF_Log__c rowData = rowDataList[0]; StaticParameter.ConsumableAssetHanderTrigger = true; StaticParameter.EscapeConsumableOrderDetail2Trigger = true; Integer batch_retry_max_cnt = Integer.valueOf(System.Label.batch_retry_max_cnt); String logstr = rowData.MessageGroupNumber__c + ' start\n'; BatchIF_Log__c iflog = new BatchIF_Log__c(); iflog.Type__c = 'NFM110'; iflog.MessageGroupNumber__c = rowData.MessageGroupNumber__c; iflog.Log__c = logstr; iflog.ErrorLog__c = ''; insert iflog; String rowDataStr = NFMUtil.getRowDataStr(rowData); List generalDataList = (List) JSON.deserialize(rowDataStr, List.class); if (generalDataList == null || generalDataList.size() == 0) { return; } orderReturnIdList = new List(); //orderoutIdList = new List(); Savepoint sp = Database.setSavepoint(); try { // add by Gaozw 取当前执行日期,后面备用 start date strdate = date.today(); String year = String.valueOf(strdate.year()); String month = String.valueOf(strdate.month()); String day = String.valueOf(strdate.day()); String datestr = String.valueOf(year+month+day); // add by Gaozw 取当前执行日期,后面备用 end //update by rentx 20210823 //本次修改只针对于保有设备 之前使用年月日去插入时 会出现 同一天多批日志里有同一个设备 导致更新失败 现解决方案为使用日志创建时间并精确到分 //update by rentx 20210823 //之前使用年月日去插入时 会出现 同一天多批日志里有同一个设备 导致更新失败 现解决方案为精确到分 // 更新対応配列とMapなどをセット Set managementCodeList = new Set(); Set soNoList = new Set(); Set inquiryNoList = new Set(); Set productCodeList = new Set(); List barCodeList = new List(); List tracingCodeList = new List(); Set productSerialNoList = new Set(); // SWAG-BDV589 start // OppNumberAndProductCode 和QIS 一一对应标识 map > OppNumberAndProductCodetoQISMap = new Map >(); // 返品标识为3的新品的OppNumberAndProductCode集合 list OppNumberAndProductCodeList = new List (); // 直销耗材,出库单新建 Map orderOutMap = new Map(); // SWAG-BDV589 end for (nfm110rest.GeneralData infoH : generalDataList) { if (String.isBlank(infoH.DeliveryNote)) { continue; } if (infoH.DnInformation == null || infoH.DnInformation.size() == 0) { continue; } // 病院と診療科の管理コード、TODO 販売店 infoH.EndUserNo = NFMUtil.trimLeft(infoH.EndUserNo, '0'); infoH.DepartmentNo = NFMUtil.trimLeft(infoH.DepartmentNo, '0'); if (infoH.EndUserNo == null || infoH.EndUserNo == '') { // 病院と診療科の管理コードがない場合、処理と飛ばす continue; } if (infoH.DepartmentNo == null || infoH.DepartmentNo == '') { infoH.DepartmentNo = infoH.EndUserNo; } managementCodeList.add(infoH.EndUserNo); managementCodeList.add(infoH.DepartmentNo); if (String.isBlank(infoH.SoNo) == false) { soNoList.add(infoH.SoNo); } // SWAG-BDV589 start string tempInquiryNo = ''; // SWAG-BDV589 end if (String.isBlank(infoH.InquiryNo) == false) { String[] Inquiry; if (infoH.InquiryNo.contains(',')) { Inquiry = infoH.InquiryNo.split(','); // SWAG-BDV589 start tempInquiryNo = Inquiry[0]; // SWAG-BDV589 end inquiryNoList.add(Inquiry[0]); } else { //根据数据传的样式决定 } } if (!(infoH.ReturnMark == null || infoH.ReturnMark == '' || infoH.ReturnMark == '1' || infoH.ReturnMark == '3' )) { // ReturnMark = 上記以外の場合 Errorメッセージ出力 continue; } for (nfm110rest.DnInformation dnInfo : infoH.DnInformation) { // dnInfo.SerialNoorLotNo = checkSerialNoorLotNo(dnInfo.SerialNoorLotNo); productCodeList.add(dnInfo.OTCode); // CHAN-BBLAAP start string Product_Serial_No = ''; if (dnInfo.SorLMark == 'S') { Product_Serial_No = dnInfo.OTCode + ':' + dnInfo.SerialNoorLotNo; } else { Product_Serial_No = dnInfo.OTCode + ':' + dnInfo.SerialNoorLotNo + '(' + dnInfo.TracingCode + ')'; } // CHAN-BBLAAP end if (dnInfo.OTCode == null || dnInfo.OTCode == '' || dnInfo.SerialNoorLotNo == null || dnInfo.SerialNoorLotNo == '' ) { // 商品コードがない場合、処理と飛ばす continue; } // HHOA-AGN2EH start //productSerialNoList.add(dnInfo.OTCode + ':' + dnInfo.SerialNoorLotNo); productSerialNoList.add(dnInfo.SerialNoorLotNo); productSerialNoList.add(dnInfo.SerialNoorLotNo + '(' + dnInfo.TracingCode + ')'); //if(dnInfo.TracingCode == null || dnInfo.TracingCode == ''){ // continue; //}else{ // tracingCodeList.add(dnInfo.TracingCode); //} // HHOA-AGN2EH end // SWAG-BDV589 start if (infoH.ReturnMark == '3') { OppNumberAndProductCodeList.add(tempInquiryNo + ':' + dnInfo.OTCode); } if (dnInfo.Barcode == null || dnInfo.Barcode == '') { continue; } else { barCodeList.add(dnInfo.Barcode); } if (dnInfo.TracingCode == null || dnInfo.TracingCode == '') { continue; } else { tracingCodeList.add(dnInfo.TracingCode); } } } // 事前に(マスタ)データを取得 // HHOA-BLC8S6 update by vivek 2020-02-13 start // List accList = [select Id, Name, Management_Code__c, Department_Class__c, Hospital__c, ParentId, // RecordType.DeveloperName, Department_Name__c // from Account // where Management_Code__c in :managementCodeList]; List accList = [select Id, Name, Management_Code__c, Department_Class__c, Hospital__c, ParentId, RecordType.DeveloperName, Department_Name__c, OCM_man_province_txt__c from Account where Management_Code__c in :managementCodeList]; // HHOA-BLC8S6 update by vivek 2020-02-13 end Map accsMap = new Map(); for (Account acc : accList) { accsMap.put(acc.Management_Code__c, acc); } //接收订单类型判断是否不生成追溯系统相关内容 精琢技术 thh 2021-10-11 start List boList = [select Id, Name, orderType__c from Statu_Achievements__c where Name in :soNoList and OverviewStatus__c <> '无效合同']; Map NameorderType = new Map(); for(Statu_Achievements__c bo1 : boList) { NameorderType.put(bo1.Name, bo1.orderType__c); } List prdList = [select Id, Name, ProductCode, ProductCode_Ext__c, MDM_Model_No__c // 修改虚拟合同生成逻辑 gzw 20210324 start ,Virtual_Contract__c,GuranteeType__c // 修改虚拟合同生成逻辑 gzw 20210324 end from Product2 where ProductCode_Ext__c in :productCodeList]; //修改 OER-SMART 产品不生成虚拟维修合同 // and Category5__c = 'OER-SMART' Map prdsMap = new Map(); for (Product2 prd : prdList) { prdsMap.put(prd.ProductCode_Ext__c, prd); } if (productCodeList.size() != prdsMap.size()) { list strList = new list(); for (string productcode : productCodeList) { if (!prdsMap.containsKey(productcode)) { strList.add(productcode); } } throw new ControllerUtil.myException('发货数据中的OT CODE:' + String.join(strList, ' ') + '不能找到对应的产品主数据!'); } List prdSearchList = [select Id, Name, Product2__r.ProductCode_Ext__c, Pro2_Dealer_ENG__c, Intra_Trade_List_RMB__c, Asset_Model_No__c, Pro2_Dealer_Object__c,Product2__r.ConsumCategory1F__c from Product2__c where Product2__r.ProductCode_Ext__c in :productCodeList]; Map prdSearchMap = new Map(); for (Product2__c prd2 : prdSearchList) { prdSearchMap.put(prd2.Product2__r.ProductCode_Ext__c, prd2); } // 已有的追溯产品 List orderDetails = [Select Id, Consumable_order_minor__r.Name, Bar_Code__c, TracingCode__c, Deliver_date__c, Asset_Model_No__c, Opportunity_No__c, Dealer_Info_text__c, Consumable_Sale_order__c, Inventory_Status__c, Consumable_order_minor__c, Arrive_date__c, Used_date__c from Consumable_order_details2__c where TracingCode__c IN :tracingCodeList]; Map orderDetailTCDeliveryMap = new Map(); for (Consumable_order_details2__c ordD : orderDetails) { if (String.isBlank(ordD.TracingCode__c) == false) { orderDetailTCDeliveryMap.put(ordD.Dealer_Info_text__c + ':' + ordD.Bar_Code__c, ordD); } } List oppList = [Select Id, Purchase_Type__c, Opportunity_No__c, Strategic_department_Class_Name__c, Sales_Root__c, SAP_Province__c, Trade__c, Agency1__c, Agency1__r.Name,Agency1_Name_F__c, Agency1__r.OCM_man_province_txt__c, Opportunity_Category__c // ,SAP_Province__c //20230323 lt DB202303088261 两票制 add // DB202306197517 gzw start ,Sales_Shop_Class__c // DB202306197517 gzw end From Opportunity Where Opportunity_No__c IN :inquiryNoList]; // update by gzw 2020-04-27 start Map oppMap = new Map(); // 自动修改最终用户 update by vivek start Set agency1Id = new Set(); // 自动修改最终用户 update by vivek end for (Opportunity opp : oppList) { oppMap.put(opp.Opportunity_No__c, opp); // 自动修改最终用户 update by vivek start if (opp.Strategic_department_Class_Name__c == 'ET') { agency1Id.add(opp.Agency1__c); } // 自动修改最终用户 update by vivek end } Map agencyContractETMap = new Map(); Date Contract_Decide_End_Date = Date.today(); List agencyContractET = [select id, name, Is_Active__c, Contract_Decide_End_Date__c, Contact_Type__c, ParentId, Is_Active_Formula__c from Account where ParentId = :agency1Id and Contract_Decide_End_Date__c >= :Contract_Decide_End_Date and Contact_Type__c = 'ET']; for (Account acc : agencyContractET) { agencyContractETMap.put(acc.ParentId, acc.Id); } // 更新対応配列をセット Map odDSUpsertMap = new Map(); // 直销耗材出库单明细2 (医院:科室) Map > odDSUpsertIdxMap = new Map >(); for (NFM110Rest.GeneralData infoH : generalDataList) { // System.debug('562:::'+accsMap.get(infoH.EndUserNo).Id ); // 订单明细2编号 auto NO Map odUpsertIdxMap = new Map(); String InquiryNoStr = ''; String InquiryNoStr2 = ''; if (String.isBlank(infoH.InquiryNo) == false) { if (infoH.InquiryNo.contains(',')) { InquiryNoStr = infoH.InquiryNo.split(',')[0]; if (infoH.InquiryNo.split(',').size() > 1) { InquiryNoStr2 = infoH.InquiryNo.split(',')[1]; } } if (String.isBlank(InquiryNoStr)) { iflog.ErrorLog__c += 'Error! SoNo[' + infoH.SoNo + '] InquiryNo is required. This DN is skipped.\n'; continue; } } if (String.isBlank(infoH.DeliveryNote)) { iflog.ErrorLog__c += 'Error! SoNo[' + infoH.SoNo + '] DeliveryNote is required. This DN is skipped.\n'; continue; } if (infoH.DnInformation == null || infoH.DnInformation.size() == 0) { iflog.ErrorLog__c += 'Error! SoNo[' + infoH.SoNo + '] DeliveryNote[' + infoH.DeliveryNote + '] DnInformation is required. This DN is skipped.\n'; continue; } if (infoH.EndUserNo == null || infoH.EndUserNo == '') { iflog.ErrorLog__c += 'Error! SoNo[' + infoH.SoNo + '] DeliveryNote[' + infoH.DeliveryNote + '] EndUserNo is required. This DN is skipped.\n'; continue; } if (accsMap.get(infoH.EndUserNo) == null) { iflog.ErrorLog__c += 'Error! SoNo[' + infoH.SoNo + '] DeliveryNote[' + infoH.DeliveryNote + '] EndUserNo[' + infoH.EndUserNo + ']NotExist. This DN is skipped.\n'; continue; } else if (accsMap.get(infoH.EndUserNo).RecordType.DeveloperName != 'HP' && accsMap.get(infoH.EndUserNo).RecordType.DeveloperName != 'Agency' && accsMap.get(infoH.EndUserNo).RecordType.DeveloperName != 'AgencyContract') { iflog.ErrorLog__c += 'Error! SoNo[' + infoH.SoNo + '] DeliveryNote[' + infoH.DeliveryNote + '] EndUserNo[' + infoH.EndUserNo + ']Is Not HP or Agency(Contract). This DN is skipped.\n'; continue; } if (accsMap.get(infoH.DepartmentNo) == null) { iflog.ErrorLog__c += 'Error! SoNo[' + infoH.SoNo + '] DeliveryNote[' + infoH.DeliveryNote + '] DepartmentNo[' + infoH.DepartmentNo + ']NotExist. This DN is skipped.\n'; continue; } if (!(infoH.ReturnMark == null || infoH.ReturnMark == '' || infoH.ReturnMark == '1' || infoH.ReturnMark == '3' )) { iflog.ErrorLog__c += 'Error! SoNo[' + infoH.SoNo + '] DeliveryNote[' + infoH.DeliveryNote + '] ReturnMark[' + infoH.ReturnMark + '] Not Defined. This DN is skipped.\n'; continue; } // SWAG-BDV589 start string tempInquiryNo = ''; if (String.isBlank(infoH.InquiryNo) == false) { String[] Inquiry; if (infoH.InquiryNo.contains(',')) { Inquiry = infoH.InquiryNo.split(','); tempInquiryNo = Inquiry[0]; } else { //根据数据传的样式决定 } } // SWAG-BDV589 end // 直销耗材明细2 List cod2List = new List(); //DN中多年保修产品数量 计数 Integer vmcCount = 0; integer tempDNdetailNumber = 0; System.debug('626:::'+infoH.DnInformation.size()); for (NFM110Rest.DnInformation dnInfo : infoH.DnInformation) { // dnInfo.SerialNoorLotNo = checkSerialNoorLotNo(dnInfo.SerialNoorLotNo); if (dnInfo.OTCode == null || dnInfo.OTCode == '') { iflog.ErrorLog__c += 'Error! SoNo[' + infoH.SoNo + '] DeliveryNote[' + infoH.DeliveryNote + '] SerialNoorLotNo[' + dnInfo.SerialNoorLotNo + '] OTCode is required. This asset is skipped.\n'; continue; } if (dnInfo.SerialNoorLotNo == null || dnInfo.SerialNoorLotNo == '') { iflog.ErrorLog__c += 'Error! SoNo[' + infoH.SoNo + '] DeliveryNote[' + infoH.DeliveryNote + '] OTCode[' + dnInfo.OTCode + '] SerialNoorLotNo is required. This asset is skipped.\n'; continue; } Product2__c prdSearch = prdSearchMap.get(dnInfo.OTCode); if (prdSearch == null) { iflog.ErrorLog__c += 'Error! SoNo[' + infoH.SoNo + '] DeliveryNote[' + infoH.DeliveryNote + '] [' + InquiryNoStr + ']ProductSerch[' + dnInfo.OTCode + ']NotExist. This asset is skipped.\n'; continue; } // HHOA-AGN2EH end if (oppMap.get(InquiryNoStr) != null && oppMap.get(InquiryNoStr).Sales_Root__c == '販売店' && accsMap.get(infoH.EndUserNo) != null && accsMap.get(infoH.EndUserNo).RecordType.Developername == 'HP' && String.isNotBlank( dnInfo.Barcode)) { System.debug('销售渠道=经销商'); Product2__c prdMap = prdSearchMap.get(dnInfo.OTCode); System.debug('step1'); if (!(prdMap.Pro2_Dealer_Object__c || prdMap.Pro2_Dealer_ENG__c || prdMap.Product2__r.ConsumCategory1F__c == 'ET耗材' || prdMap.Product2__r.ConsumCategory1F__c == 'ENG耗材')) { continue; } logstr += '\n撒333333333 ' + prdMap.Asset_Model_No__c + '---' + prdMap.Pro2_Dealer_Object__c + '----' +prdMap.Pro2_Dealer_ENG__c + '----' + prdMap.Product2__r.ConsumCategory1F__c; if (NameorderType.get(infoH.SoNo) == 'ZM16') { continue; } System.debug('step2'); // DB202306197517 gzw end System.debug('step3'); Consumable_order_details2__c rac = orderDetailTCDeliveryMap.get(oppMap.get(InquiryNoStr).Agency1__r.Name + ':' + dnInfo.Barcode); // logstr += '\撒222222222 '+ rac; if (rac != null && String.isNotBlank(rac.Consumable_Sale_order__c)) { // logstr += '\撒333333333 '; continue; } if(rac != null && !(rac.Inventory_Status__c == '未到经销商' && String.isBlank(rac.Consumable_order_minor__c))){ // logstr += '\撒444444444 '; continue; } // logstr += '\撒555555555 '; if (rac == null) { rac = new Consumable_order_details2__c(); if (oppMap.containsKey(InquiryNoStr)) { rac.Agencyinfo_fromSAP__c = oppMap.get(InquiryNoStr).Agency1__r.Name; rac.Frist_Storage_Agency__c = oppMap.get(InquiryNoStr).Agency1__r.Name; } // update by gzw 2020-04-27 end cod2List.add(rac); odDSUpsertMap.put(InquiryNoStr + ':' + dnInfo.Barcode, rac); odUpsertIdxMap.put(InquiryNoStr + ':' + dnInfo.Barcode, odDSUpsertMap.size()); rac.Name = InquiryNoStr + ':' + ('000' + odUpsertIdxMap.get(InquiryNoStr + ':' + dnInfo.Barcode)).right(4); rac.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery; // TODO 本番IDにする label if (String.isNotBlank(dnInfo.VALUE)) { rac.Intra_Trade_List_RMB__c = Decimal.valueOf(dnInfo.VALUE); }else { rac.Intra_Trade_List_RMB__c = prdSearch.Intra_Trade_List_RMB__c; } rac.Delivery_List_RMB__c = Decimal.valueOf(dnInfo.VALUE); rac.Asset_Model_No__c = prdSearch.Asset_Model_No__c; rac.Deliver_date__c = NFMUtil.parseStr2Date(infoH.DeliveryDate); // 自动修改最终用户 update by vivek start // logstr += '\nUsed_date__c +++++++++++: '; // if (!(oppMap.get(InquiryNoStr) != null && agencyContractETMap.get(oppMap.get(InquiryNoStr).Agency1__c) == null) ) { // logstr += '\nUsed_date__c +++++++++++: '; // 到货日期需要再确认 todo // rac.Arrive_date__c = NFMUtil.parseStr2Date(infoH.DeliveryDate); rac.Used_date__c = NFMUtil.parseStr2Date(infoH.DeliveryDate); // } // rac.Arrive_date__c = NFMUtil.parseStr2Date(infoH.DeliveryDate); // rac.Used_date__c = NFMUtil.parseStr2Date(infoH.DeliveryDate); // 自动修改最终用户 update by vivek end // gzw DB202301244151 保修期限验证日期可行性调整 start if (dnInfo.ValidTo !=null && dnInfo.ValidTo.length() == 8 && Integer.valueOf(dnInfo.ValidTo.substring(0, 4)) <= Integer.valueOf(Date.today().Year())) { rac.Sterilization_limit__c = null; }else{ rac.Sterilization_limit__c = NFMUtil.parseStr2Date(dnInfo.ValidTo); } // rac.Sterilization_limit__c = NFMUtil.parseStr2Date(dnInfo.ValidTo); // gzw DB202301244151 保修期限验证日期可行性调整 end rac.Consumable_product__c = prdSearch.Id; rac.Bar_Code__c = dnInfo.Barcode; rac.Used_account__c = oppMap.get(InquiryNoStr).Agency1__c; // update by vivek start 2020-02-13 // rac.Account_province_txt__c = oppMap.get(InquiryNoStr).Agency1__r.OCM_man_province_txt__c; // update by vivek end 2020-02-13 rac.Dealer_Info_IF__c = oppMap.get(InquiryNoStr).Agency1__c; rac.DeliveryNote__c = infoH.DeliveryNote; // update by Gaozw start 20200514 rac.SerialLotNo__c = dnInfo.SerialNoorLotNo == '.'? datestr : dnInfo.SerialNoorLotNo; // update by Gaozw end 20200514 rac.TracingCode__c = dnInfo.TracingCode; // HHOA-BFF53G IF来源 rac.IF_Information_From__c = true; //全部System rac.OwnerId = System.Label.User_OlympusSystem; //生成追溯明细时 记录SAP合同号 by rentx 2020-12-14 if (String.isNotEmpty(InquiryNoStr2)) { rac.ContractNo_text__c = InquiryNoStr2; } //生成追溯明细时 记录SAP合同号 // 【委托】ET消耗品系统自动生成出库数量大于当月发货数量 精琢技术 tcm start if (String.isNotEmpty(InquiryNoStr)) { rac.Opportunity_No__c = InquiryNoStr; } }else{ // if (rac.Arrive_date__c == null){ // rac.Arrive_date__c = NFMUtil.parseStr2Date(infoH.DeliveryDate); // } if (rac.Used_date__c == null){ rac.Used_date__c = NFMUtil.parseStr2Date(infoH.DeliveryDate); } } rac.Sales_Shop_Class__c = true; cod2List.add(rac); odDSUpsertMap.put(InquiryNoStr + ':' + dnInfo.Barcode, rac); odUpsertIdxMap.put(InquiryNoStr + ':' + dnInfo.Barcode, odDSUpsertMap.size()); if (odDSUpsertIdxMap.containsKey(accsMap.get(infoH.EndUserNo).Id + ':' + oppMap.get(InquiryNoStr).Id + '')) { odDSUpsertIdxMap.get(accsMap.get(infoH.EndUserNo).Id + ':' + oppMap.get(InquiryNoStr).Id + '').add(rac); } else { odDSUpsertIdxMap.put(accsMap.get(infoH.EndUserNo).Id + ':' + oppMap.get(InquiryNoStr).Id + '', cod2List.clone()); } // 【委托】ET消耗品系统自动生成出库数量大于当月发货数量 精琢技术 tcm end } else { continue; } // 自动修改最终用户 update by vivek start if (!(oppMap.get(InquiryNoStr) != null && agencyContractETMap.get(oppMap.get(InquiryNoStr).Agency1__c) != null )) { if (orderOutMap.containsKey(InquiryNoStr) == false) { Consumable_order__c autoOrder = new Consumable_order__c(); autoOrder.Name = '*'; autoOrder.OwnerId = System.Label.User_OlympusSystem; autoOrder.RecordTypeid = System.Label.RT_ConOrder_Sale; autoOrder.Dealer_Info__c = oppMap.get(InquiryNoStr).Agency1__c; autoOrder.Order_ForHospital__c = accsMap.get(infoH.EndUserNo).Id; autoOrder.Order_type__c = '销售'; autoOrder.SummonsStatus_c__c = '已完成'; autoOrder.SummonsForDirction__c = '直接销售给医院'; autoOrder.Outbound_Date__c = NFMUtil.parseStr2Date(infoH.DeliveryDate); autoOrder.Order_ForCustomerText__c = accsMap.get(infoH.DepartmentNo).Department_Name__c; autoOrder.Opportunity__c = oppMap.get(InquiryNoStr).Id; orderOutMap.put(InquiryNoStr, autoOrder); } } } } logstr += '\norderOutMap +++++++++++: '+ orderOutMap.size(); //直销耗材 返品单、出库单新建 if (orderOutMap.size() > 0) { insert orderOutMap.values(); for (Consumable_order__c co : orderOutMap.values()) { orderReturnIdList.add(co.Id); } } logstr += '\nodDSUpsertMap +++++++++++: '+ odDSUpsertMap.size(); logstr += '\nodDSUpsertIdxMap +++++++++++: '+ odDSUpsertIdxMap.size(); logstr += '\nodDSUpsertIdxMapvalues +++++++++++: '+ odDSUpsertIdxMap.values(); //直销耗材 明细2 if (odDSUpsertMap.size() > 0) { upsert odDSUpsertMap.values(); } // SWAG-BDV589 end // 自动生成出库单信息 if (odDSUpsertIdxMap.size() > 0) { addReturnOrderAuto(odDSUpsertIdxMap); } logstr += '\nend'; rowData.DA_retry_cnt__c = 0; if(System.Test.isRunningTest()){ throw new ControllerUtil.myException('测试错误!'); } } catch (Exception ex) { // エラーが発生した場合 Database.rollback(sp); System.debug(Logginglevel.ERROR, 'NFM110_' + rowData.MessageGroupNumber__c + ':' + ex.getMessage()); System.debug(Logginglevel.ERROR, 'NFM110_' + rowData.MessageGroupNumber__c + ':' + ex.getStackTraceString()); logstr += '\n' + ex.getMessage(); iflog.ErrorLog__c = ex.getMessage() + '\n' + ex.getStackTraceString() + '\n' + iflog.ErrorLog__c; if (rowData.DA_retry_cnt__c == null) rowData.DA_retry_cnt__c = 0; if (rowData.DA_retry_cnt__c < batch_retry_max_cnt) { rowData.DA_retry_cnt__c++; // LogAutoSendSchedule.assignOneMinute(); //if(!Test.isRunningTest()) LogAutoSendSchedule.assignOneMinute(); } if (rowData.DA_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 void addReturnOrderAuto (Map > addMap) { Map > accountGroupMap = new Map >(); Map > productMap = new Map > (); // 根据订单生成返品订单List List orderList = [select Id, Name, Order_ForHospital__c, Order_ForCustomerText__c, Order_type__c, Dealer_Info__c, Opportunity__c from Consumable_order__c where id in : orderReturnIdList]; Map > insDetail1Map = new Map >(); //出库单明细 for (String keystr : addMap.keySet()) { for (Consumable_order_details2__c cod : addMap.get(keystr)) { List accGroupList = new List (); if (accountGroupMap.containsKey(keystr)) { accGroupList = accountGroupMap.get(keystr); } accGroupList.add(cod); accountGroupMap.put(keystr, accGroupList); } } // 设置明细2 的 订单ID Map updDetail2Map = new Map (); for (Consumable_order__c setId : orderList) { //System.debug('订单明细22222 ' + setId.Order_ForHospital__c + ':' + setId.Opportunity__c); //System.debug('返品单Name ' + setId.Name); // 明细2 List d2list = accountGroupMap.get(setId.Order_ForHospital__c + ':' + setId.Opportunity__c); if (d2list == null) continue; Integer i = 1; for (Consumable_order_details2__c dtl2 : d2list) { if (setId.Order_type__c == '销售') { dtl2.Name = setId.Name + ':' + ('000' + i).right(4); dtl2.Consumable_Sale_order__c = setId.Id; dtl2.Consumable_ZS_order__c = setId.Id; } else { dtl2.Consumable_Return_order__c = setId.Id; } updDetail2Map.put(dtl2.Bar_Code__c, dtl2); i++; } } update updDetail2Map.values(); } global void finish(Database.BatchableContext BC) { } public void testMock(){ Integer i = 0; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; } public void testMock2(){ Integer i = 0; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; i++; } }