public without sharing class ArriveGoodsController { public String barcode { get; set; } public Consumable_order__c coc { get; set; } /*****************画面表示Bean******************/ public List ConsumableorderdetailsRecords = new List(); public List consumableorderdetailsRecordsUse = new List(); public List consumableInventory { get; set; } public List detailsSummary { get; set; } public List consumableInventoryUse = new List(); //更新明细取消时间 public List consumableorderdetails2Cancle = new List(); // 更新借调信息 add by gzw 2020-0-415 start Map orderdetails2trMap = new Map(); // 更新借调信息 add by gzw 2020-0-415 end public List consumableorderdetails2Insert= new List(); public List consumableorderdetails2Nobox= new List(); public List ConsumableorderdetailsRecordserror { get; set; } public transient List ConsumableorderdetailsRecordsdummy { get; set; } public List ShowGoodsofReturnList{get;set;} public List ShowGoodsofRemoveBoxReturnList{get;set;} //add by rentx 20210602 CHAN-C3K4ZQ public List> consumableorderdetailsRecordsview { get; set; } //add by rentx 20210602 CHAN-C3K4ZQ public List GrList = new List(); //超出定货数量的产品 public List cancellationProList = new List(); //错误信息 public String alertMessage {set;get;} public integer getinventorysize(){ return consumableInventory.size(); } public integer geterrorsize(){ return ConsumableorderdetailsRecordserror.size(); } Set noboxBarcodeList = new Set(); public transient Map ExistIdMap = new Map(); public transient Map ErrorIdMap = new Map(); public transient Map AllMap = new Map(); Map otherAgencyMap = new Map(); public transient Map barMcodeMap = new Map(); Map BarcodeCntMap = new Map(); //qi public transient List BarCodeListP = new List(); // public transient Map OrderAllMap = new Map(); Map orderProductCunMap = new Map(); Map orderProductArrivedCunMap = new Map(); Map orderWantArriveCunMap = new Map(); //超出型号和数量 Map overOrderCunMap = new Map(); //超出BARCODE和型号 Map> overOrderBARcodeCunMap = new Map>(); list overOrderBARcodeTTTTTT = new list(); //不符合的barcode和型号 Map> notEqualBARcodeCunMap = new Map>(); list overOrderBARcodeSSSSSS = new list(); list productList = new list(); list notInlist = new list(); //不选择订单时保存订单ID、产品型号用 //List orderId = new List(); //List prodName = new List(); //库存登录使用 list notInStorelist = new list(); list exitBarCodeList = new list(); // Map reallMap = new Map(); Map HosErrorMap = new Map(); List HosErrorList = new List(); public String baseUrl {get;private set;} public String ESetId { get; set; } public String arriveId = ''; private String accountid = null; private String accountName = null; //public String[] proidList =new String[]{}; public Decimal orderCountAll = 0; public Decimal orderCountNotarrive = 0; private id return_Order_id = null; private id inventory_Order_id = null; public boolean ReturnFLGbln {get;set;} public boolean saveFLGbln {get;set;} public String ArrType{get;set;} // 登录者工作地 private String userWorkLocation; //用户产品区分 public String userPro_Typestr = null; public String userPro_Type = null; public String product_Type = null; public Boolean EngFlag = false; public Boolean ETFlag = false; public ArriveGoodsController(){ baseUrl = URL.getSalesforceBaseUrl().toExternalForm(); ESetId = ApexPages.currentPage().getParameters().get('esetId'); ArrType = ApexPages.currentPage().getParameters().get('ArrType'); ConsumableorderdetailsRecords = new List(); ConsumableorderdetailsRecordserror = new List(); ConsumableorderdetailsRecordsdummy = new List(); consumableInventory = new List(); consumableorderdetailsRecordsUse = new List(); consumableInventoryUse = new List(); consumableorderdetails2Cancle = new List(); orderdetails2trMap = new Map(); detailsSummary = new List(); saveFLGbln = FALSE; //overOrderBARcodeTTTTTT.add(''); //add by rentx 20210602 CHAN-C3K4ZQ start consumableorderdetailsRecordsview = new List>(); //add by rentx 20210602 CHAN-C3K4ZQ end // OrderAllMap = new Map(); } //add by rentx 20210602 CHAN-C3K4ZQ start 出错的原因是页面最多展示1000条数据,但是需要展示的数据超过了1000条,现在把展示上线改为1000 * 1000 public void makeRecordsView(List recordsdummy){ consumableorderdetailsRecordsview = new List>(); if(recordsdummy.size() > 1000){ List ConsumableorderdetailsRecordsbreak = new List(); List ConsumableorderdetailsRecordsbreakover = new List(); ConsumableorderdetailsInfo c = null; ConsumableorderdetailsRecordsbreak.clear(); ConsumableorderdetailsRecordsbreakover.clear(); consumableorderdetailsRecordsview.clear(); //选择产品view ConsumableorderdetailsRecordsbreak = new List(); ConsumableorderdetailsRecordsbreakover = new List(); if(recordsdummy.size() > 1000){ for(Integer i = 0; i < recordsdummy.size(); i++){ if(i < 1000){ c = recordsdummy.get(i); ConsumableorderdetailsRecordsbreak.add(c); }else{ c = recordsdummy.get(i); ConsumableorderdetailsRecordsbreakover.add(c); } } consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreak); consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreakover); }else{ consumableorderdetailsRecordsview.add(recordsdummy); } // Integer count = recordsdummy.size() / 1000; // Integer last = recordsdummy.size() - (1000*count); // for(Integer i = 0; i < count ; i++){ // List tempList = new List(); // for(Integer j=0; j < 1000; j++){ // tempList.add(recordsdummy.get(i * count + j )); // // itemList.add(resList.get(i*count+j)); // } // consumableorderdetailsRecordsview.add(tempList); // } // if (last > 0) { // List tempList = new List(); // for(Integer j=0; j < last; j++){ // tempList.add(recordsdummy.get(count * 1000 + j )); // // itemList.add(resList.get(i*count+j)); // } // consumableorderdetailsRecordsview.add(tempList); // } }else{ consumableorderdetailsRecordsview.add(recordsdummy); } } //add by rentx 20210602 CHAN-C3K4ZQ end public void init() { // String userId = '00510000007cthP'; String userId = UserInfo.getUserId(); List Useracc = New List(); Useracc = [SELECT accountid, Work_Location__c,UserPro_Type__c FROM user WHERE id =:userId]; accountid = Useracc[0].accountid; //--------AddStart-----XHL--------------20181008------------- userPro_Type = Useracc[0].UserPro_Type__c; if(String.isBlank(userPro_Type)){ userPro_Type = 'ET'; } if(userPro_Type == 'ENG'){ product_Type = 'ET'; EngFlag = true; }else{ product_Type = 'ENG'; ETFlag = true; } userPro_Typestr = '%' + userPro_Type + '%'; //--------AddEnd-----XHL--------------20181008------------- userWorkLocation = Useracc[0].Work_Location__c; system.debug('userWorkLocation'+ userWorkLocation); List accountInfo = [SELECT Name FROM account WHERE id =:accountid]; accountName = accountInfo[0].Name; system.debug('accountName'+ accountName); coc = new Consumable_order__c(); if(ArrType=='ReG'){ ReturnFLGbln = true; }else{ ReturnFLGbln = false; } if(ESetId != '' && ESetId !=null){ List qs = New List(); List reSet1 = New List(); List reSet = New List(); qs = [SELECT Id,Name,Order_status__c,Dealer_Info__c,Deliver_date__c,ReturnGs_Upload_Date__c, Order_Reason__c,Order_date__c, Contract_application_decision__c,Order_type__c,Total_num__c, OrderNumber_arrived__c,Delivery_detail_count__c,OrderNumber_notarrive__c,orderPattern__c FROM Consumable_order__c WHERE Id =:ESetId AND Order_Owner_WorkLocal__c =: userWorkLocation AND Dealer_Info__c = :accountid]; if (qs.size()>0){ coc = qs[0]; orderCountAll = coc.Total_num__c; orderCountNotarrive = coc.OrderNumber_notarrive__c; } //产品定货数量 reSet = [SELECT Asset_Model_No__c, Consumable_order__c, Consumable_count__c FROM Consumable_Orderdetails__c WHERE Consumable_order__c = :ESetId AND Order_Owner_WorkLocal__c =: userWorkLocation]; for (Integer i = 0; i < reSet.size(); i++) { productList.add(reSet[i].Asset_Model_No__c); orderProductCunMap.put(reSet[i].Asset_Model_No__c,reSet[i].Consumable_count__c); orderProductArrivedCunMap.put(reSet[i].Asset_Model_No__c,0); orderWantArriveCunMap.put(reSet[i].Asset_Model_No__c,0); overOrderCunMap.put(reSet[i].Asset_Model_No__c,0); overOrderBARcodeCunMap.put(reSet[i].Asset_Model_No__c,overOrderBARcodeTTTTTT); //overOrderCunMap.put(reSet[i].Asset_Model_No__c,0); } // reSet1 = [SELECT Id, Name, Intra_Trade_List_RMB__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Name__c, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Dealer_Arrive__c, Guarantee_period_for_products__c, CFDA_Status__c, Box_Piece__c, Rrturn_count__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c //add by rentx 2020-10-14 start ,ContractNo_text__c/*,ContractNo__c1*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Arrive_Owner_Work_Location__c = : userWorkLocation AND Consumable_order_minor__c = :ESetId AND Dealer_Arrive__c = true AND Box_Piece__c != '个' ]; for (Integer i = 0; i < reSet1.size(); i++) { // OrderAllMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); //init的时候不展示已经入库的明细 by rentx 20210617 CHAN-C3K4ZQ // ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet1[i])); //update by rentx 20210617 end CHAN-C3K4ZQ if(orderProductArrivedCunMap.containsKey(reSet1[i].Asset_Model_No__c)){ orderProductArrivedCunMap.put(reSet1[i].Asset_Model_No__c,orderProductArrivedCunMap.get(reSet1[i].Asset_Model_No__c)+1); } } //add by rentx 20210602 start CHAN-C3K4ZQ // makeRecordsView(ConsumableorderdetailsRecordsdummy); //add by rentx 20210602 end CHAN-C3K4ZQ } } //========20160311======ADD_Start================================ // 将页面或取得BarCode去掉重复的,转换成List //========20160311======ADD_Start================================ public List ParseBarCode(String Code){ String[] Cache = new String[]{}; Cache = Code.split('\n'); Set Buff = new Set(); for(String A : Cache){ Buff.add(A.toUpperCase()); } List outPut = new List(); for(String B :Buff){ B = B.trim(); if(B.length() > 8){ String tracingCode = B.substring(B.length() - 5,B.length()); barMcodeMap.put(B,tracingCode); } outPut.add(B); }system.debug('barMcodeMap等于'+barMcodeMap); return outPut; } //========20160311======ADD_End================================== //获取明细 public void SearchPro() { notInlist = new list(); otherAgencyMap = new Map(); barMcodeMap = new Map(); consumableInventory = new List(); consumableInventoryUse = new List(); consumableorderdetails2Cancle = new List(); orderdetails2trMap = new Map(); //add by rentx 2021-01-27 start HosErrorList = new List(); HosErrorMap = new Map(); //add by rentx 2021-01-27 end noboxBarcodeList.clear(); //再检索项目清空 ConsumableorderdetailsRecordserror = new List(); ErrorIdMap = new Map(); ErrorIdMap.clear(); AllMap = new Map(); AllMap.clear(); ExistIdMap = new Map(); ExistIdMap.clear(); consumableorderdetails2Insert = new List(); ConsumableorderdetailsRecordsdummy = new List(); /*if(EsetId != null && EsetId != ''){ List reSet1 = [SELECT Id, Name, Intra_Trade_List_RMB__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Name__c, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Dealer_Arrive__c, Guarantee_period_for_products__c, CFDA_Status__c, Box_Piece__c, Rrturn_count__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c //add by rentx 2020-10-14 start ,ContractNo_text__c,/*ContractNo__c1* //add by rentx 2020-10-14 end ,hospitalSpecialOffer__c FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Consumable_order_minor__c = :ESetId AND Arrive_Owner_Work_Location__c =: userWorkLocation AND Dealer_Arrive__c = true ]; for (Integer i = 0; i < reSet1.size(); i++) { // OrderAllMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); //add by rentx 2021-01-27 // reallMap.put(reSet1[i].Bar_Code__C, reSet1[i]); //add by rentx 2021-01-27 //不需要展示已到货的明细 update by rentx 20210617 start CHAN-C3K4ZQ // ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet1[i])); //不需要展示已到货的明细 update by rentx 20210617 end CHAN-C3K4ZQ //if(orderProductArrivedCunMap.containsKey(reSet1[i].Asset_Model_No__c)){ // orderProductArrivedCunMap.put(reSet1[i].Asset_Model_No__c,orderProductArrivedCunMap.get(reSet1[i].Asset_Model_No__c)+1); //} } }*/ ConsumableorderdetailsRecords = new List(); BarCodeListP = new List(); BarCodeListP = ParseBarCode(barcode); Consumable_order_details2__c p = new Consumable_order_details2__c(); List Ins = New List(); List reSet = new List(); List reSet1 = new List(); if(barcode == null || barcode.trim() ==''){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO,'请输入BarCode号。')); return; } //对比全部库存中是否存在管理编码一样,barcode号不一样的产品 reSet1 = [SELECT Id, Name,TracingCode__c,Bar_Code__c,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Dealer_Shipment__c = false AND Dealer_Saled__c = false AND Lose_Flag__c = false AND Dealer_Returned__c = false AND Cancellation_Flag__c = false AND TracingCode__c in :barMcodeMap.values() AND Bar_Code__c not in :barMcodeMap.keySet() AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c =: userWorkLocation ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ for(String str : barMcodeMap.keySet()){ if(barMcodeMap.get(str) == reSet1[i].TracingCode__c){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, str + ' 的管理编码已经存在于系统的库存中,请确认输入信息是否有误。')); ErrorIdMap.put(str,str); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } } } //管理编码为空的产品 reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, TracingCode__c,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Bar_Code__c in :BarCodeListP AND Dealer_Info_text__c = :accountName //AND Arrive_Owner_Work_Location__c =: userWorkLocation AND (TracingCode__c = null OR TracingCode__c = '') ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '该产品没有管理编码,无法入库'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '管理编码为空的产品 ' + ErrorIdMap)); //整体到货 if(EsetId == null || EsetId == ''){ if(ArrType!='ReG'){ //到货但产品类型与用户的类型不符 reSet1 = [SELECT Id,Name,Intra_Trade_List_RMB__c,Asset_Model_No__c, Consumable_Product__c,Consumable_Product__r.Name, Consumable_Product__r.Name__c,Consumable_Product__r.Asset_Model_No__c, Sterilization_limit__c,Deliver_date__c,Bar_Code__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name, Consumable_order_minor__c,Dealer_Arrive__c, Guarantee_period_for_products__c,CFDA_Status__c, ProductPacking_list_manual__c,Report_Product_Approbation__c, Report_Product_Expiration__c,Box_Piece__c, Rrturn_count__c, Product_Type__c ,ContractNo_text__c/*,ContractNo__c1*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end FROM Consumable_order_details2__c WHERE Bar_Code__c in :BarCodeListP AND ( not Product_Type__c like :userPro_Typestr) AND Dealer_Info_text__c = :accountName AND ((Consumable_order_minor__c != null AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation) OR Consumable_order_minor__c = null) ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '产品类型['+reSet1[i].Product_Type__c+']与用户的类型['+userPro_Type+']不符'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } //销售产品 reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c,OwnerId,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Saled__c = true AND Dealer_Returned__c = false AND Bar_Code__c in :BarCodeListP AND Dealer_Info_text__c = :accountName AND (Arrive_Owner_Work_Location__c =: userWorkLocation OR OwnerId = :System.Label.User_OlympusSystem) ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = ''; if (reSet1[i].OwnerId == System.Label.User_OlympusSystem) { str = '该商品是直销产品请先返品'; }else{ str = '该商品已经销售'; } ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } //出库产品 reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Shipment__c = true AND Dealer_Returned__c = false AND Bar_Code__c in :BarCodeListP AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c =: userWorkLocation ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '该商品已经出库'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } //已到货产品 reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,Lose_Flag__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Dealer_Returned__c = false AND Bar_Code__c in :BarCodeListP AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c =: userWorkLocation ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '该商品已经到货'; if (reSet1[i].Lose_Flag__c == TRUE) { str = '该商品已经丢失'; } ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } //已拆盒产品 reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Bar_Code__c in :BarCodeListP AND (Dealer_Info_text__c != :accountName OR (Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c !=: userWorkLocation)) AND Box_Piece__c = '个' ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '已拆盒的产品不能入库'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } // 经销商之间或者同一经销商不同工作地调货 reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c,Asset_Model_No__c, Arrive_Owner_Work_Location__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c,Box_Piece__c, Deliver_date__c,Bar_Code__c,TracingCode__c, Dealer_Info_text__c, OwnerId, Lose_Flag__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c,SerialLotNo__c, Dealer_Arrive__c, Consumable_Arrived_order__r.Dealer_Info__c, Consumable_Arrived_order__r.Dealer_Info__r.Name, Intra_Trade_List_RMB__c, Dealer_Shipment__c, Dealer_Saled__c,Consumable_Product__r.Asset_Model_No__c // 更新借调信息 add by gzw 2020-0-415 start ,SummonsForDirction_det__c,Transfer_Time__c,Frist_Transfer_Agency__c,Agency_Transfer__c // 更新借调信息 add by gzw 2020-0-415 start // 首次入库经销商信息 add by gzw 2020-04-27 start ,Agencyinfo_fromSAP__c,Frist_Storage_Agency__c // 首次入库经销商信息 add by gzw 2020-04-27 end //add by rentx 2020-10-13 start 互相调货时,借入方记录SAP合同号 ,ContractNo_text__c/*,ContractNo__c */ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end //add by rentx 2020-10-13 end //add by rentx 2021-03-22 start ,hospitalSpecialOffer__c ,exchangeOutPattern__c ,Report_Product_Expiration__c //add by rentx 2021-03-22 end FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE //AND Dealer_Shipment__c= false //AND Dealer_Saled__c = FALSE AND Dealer_Returned__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code__c in :BarCodeListP //AND (Dealer_Shipment__c = FALSE // OR (Dealer_Shipment__c = TRUE // AND Consumable_Shipment_order__r.SummonsForDirction__c != '互相调货')) AND (Dealer_Info_text__c != :accountName OR (Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c != :userWorkLocation) ) // 更新借调信息 add by gzw 2020-0-415 start order by Bar_Code__c, Transfer_Time__c desc // 更新借调信息 add by gzw 2020-0-415 end ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ if(otherAgencyMap.containsKey(reSet1[i].Bar_Code__c)){ continue; }else{ //其他经销商出库产品可以入库 List barcodedetList = new List(); barcodedetList.add(reSet1[i].Bar_Code__c); barcodedetList.add(String.valueOf(reSet1[i].Sterilization_limit__c)); barcodedetList.add(reSet1[i].SerialLotNo__c); barcodedetList.add(reSet1[i].TracingCode__c); if (reSet1[i].Lose_Flag__c == false //&& reSet1[i].Dealer_Info_text__c == accountName ) { consumableorderdetails2Cancle.add(reSet1[i]); } // 更新借调信息 add by gzw 2020-0-415 start if (reSet1[i].SummonsForDirction_det__c == '互相调货' && !orderdetails2trMap.containsKey(reSet1[i].Bar_Code__c)) { orderdetails2trMap.put(reSet1[i].Bar_Code__c, reSet1[i]); } // 更新借调信息 add by gzw 2020-0-415 end consumableInventory.add(new ConsumableorderdetailsInfo(reSet1[i],barcodedetList)); Consumable_order_details2__c codsIns = new Consumable_order_details2__c(); codsIns.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery; codsIns.Intra_Trade_List_RMB__c = reSet1[i].Intra_Trade_List_RMB__c; //gzw 手动入库 默认产品单价 20230307 codsIns.Asset_Model_No__c = reSet1[i].Asset_Model_No__c; codsIns.Direct_Arrive_Product__c = true; codsIns.Sterilization_limit__c = reSet1[i].Sterilization_limit__c; codsIns.Consumable_Product__c = reSet1[i].Consumable_Product__c; codsIns.Bar_Code__c = reSet1[i].Bar_Code__c; codsIns.SerialLotNo__c = reSet1[i].SerialLotNo__c; codsIns.TracingCode__c = reSet1[i].TracingCode__c; // 更新借调信息 add by gzw 2020-0-415 start codsIns.Transfer_Time__c = reSet1[i].Transfer_Time__c == null? 1 : reSet1[i].Transfer_Time__c; codsIns.Frist_Transfer_Agency__c = reSet1[i].Frist_Transfer_Agency__c == null ? reSet1[i].Dealer_Info_text__c : reSet1[i].Frist_Transfer_Agency__c; codsIns.Agency_Transfer__c = true; // 更新借调信息 add by gzw 2020-0-415 end // 追加首次入库经销商 add by gzw 2020-04-27 start codsIns.Agencyinfo_fromSAP__c = reSet1[i].Agencyinfo_fromSAP__c; codsIns.Frist_Storage_Agency__c = reSet1[i].Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end //add by rentx 2020-10-13 start 互相调货时,记录SAP合同号 // update tcm start if (String.isBlank(reSet1[i].Consumable_order_minor__r.ContractNo__c)) { codsIns.ContractNo_text__c= reSet1[i].ContractNo_text__c; }else { codsIns.ContractNo_text__c= reSet1[i].Consumable_order_minor__r.ContractNo__c; } // update tcm end //add by rentx 2020-10-13 end //add by rentx 2021-03-22 start // if (reSet1[i].Lose_Flag__c == true){ if (reSet1[i].hospitalSpecialOffer__c == true && reSet1[i].SummonsForDirction_det__c == '互相调货'){ codsIns.exchangeOutPattern__c = true; } //add by rentx 2021-03-22 end consumableorderdetails2Insert.add(codsIns); otherAgencyMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); //String str = '该商品在其他经销商库存'; //ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); //ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } } //发错库 未到货 reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c,Asset_Model_No__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,TracingCode__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c,SerialLotNo__c,Dealer_Arrive__c, Dealer_Shipment__c, Dealer_Saled__c,Consumable_Product__r.Asset_Model_No__c // 更新借调信息 add by gzw 2020-0-415 start ,SummonsForDirction_det__c,Transfer_Time__c,Frist_Transfer_Agency__c,Agency_Transfer__c, Dealer_Info_text__c,Intra_Trade_List_RMB__c // 更新借调信息 add by gzw 2020-0-415 start // 首次入库经销商信息 add by gzw 2020-04-27 start ,Agencyinfo_fromSAP__c,Frist_Storage_Agency__c // 首次入库经销商信息 add by gzw 2020-04-27 end //add by rentx 2020-10-13 start 互相调货时,借入方记录SAP合同号 ,ContractNo_text__c/*,ContractNo__c*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end //add by rentx 2020-10-13 end 互相调货时,借入方记录SAP合同号 ,hospitalSpecialOffer__c ,exchangeOutPattern__c ,Lose_Flag__c,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = FALSE AND Dealer_Shipment__c= FALSE AND Dealer_Saled__c = FALSE //AND Cancellation_Flag__c = FALSE AND Bar_Code__c in :BarCodeListP AND (Dealer_Info_text__c != :accountName OR (Dealer_Info_text__c = :accountName AND ((Consumable_order_minor__c != null AND (Consumable_order_minor__r.Order_Owner_WorkLocal__c != :userWorkLocation OR (Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation AND Cancellation_Flag__c = TRUE))) OR (Consumable_order_minor__c = null AND Cancellation_Flag__c = TRUE))) ) // 更新借调信息 add by gzw 2020-0-415 start order by Bar_Code__c, Transfer_Time__c desc // 更新借调信息 add by gzw 2020-0-415 end ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ if(otherAgencyMap.containsKey(reSet1[i].Bar_Code__c)){ continue; }else{ //取消明细 List barcodedetList = new List(); barcodedetList.add(reSet1[i].Bar_Code__c); barcodedetList.add(String.valueOf(reSet1[i].Sterilization_limit__c)); barcodedetList.add(reSet1[i].SerialLotNo__c); barcodedetList.add(reSet1[i].TracingCode__c); // 发错库存时,自动取消 update by gzw 2020-04-15 start //if (reSet1[i].Consumable_order_minor__c == null) { consumableorderdetails2Cancle.add(reSet1[i]); //} // 发错库存时,自动取消 update by gzw 2020-04-15 start // 更新借调信息 add by gzw 2020-0-415 start if (reSet1[i].SummonsForDirction_det__c == '互相调货' && !orderdetails2trMap.containsKey(reSet1[i].Bar_Code__c)) { orderdetails2trMap.put(reSet1[i].Bar_Code__c, reSet1[i]); } // 更新借调信息 add by gzw 2020-0-415 end consumableInventory.add(new ConsumableorderdetailsInfo(reSet1[i],barcodedetList)); Consumable_order_details2__c codsIns = new Consumable_order_details2__c(); codsIns.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery; codsIns.Intra_Trade_List_RMB__c = reSet1[i].Intra_Trade_List_RMB__c; //gzw 手动入库 默认产品单价 20230307 codsIns.Asset_Model_No__c = reSet1[i].Asset_Model_No__c; codsIns.Direct_Arrive_Product__c = true; codsIns.Sterilization_limit__c = reSet1[i].Sterilization_limit__c; codsIns.Consumable_Product__c = reSet1[i].Consumable_Product__c; codsIns.Bar_Code__c = reSet1[i].Bar_Code__c; codsIns.SerialLotNo__c = reSet1[i].SerialLotNo__c; codsIns.TracingCode__c = reSet1[i].TracingCode__c; // 更新借调信息 add by gzw 2020-0-415 start // 没有入库时,没有借调信息 codsIns.Transfer_Time__c = reSet1[i].Transfer_Time__c; codsIns.Frist_Transfer_Agency__c = reSet1[i].Frist_Transfer_Agency__c; codsIns.Agency_Transfer__c = reSet1[i].Agency_Transfer__c; // 更新借调信息 add by gzw 2020-0-415 end // 追加首次入库经销商 add by gzw 2020-04-27 start codsIns.Agencyinfo_fromSAP__c = reSet1[i].Agencyinfo_fromSAP__c; codsIns.Frist_Storage_Agency__c = reSet1[i].Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end //add by rentx 2020-10-13 start 互相调货时,借入方记录SAP合同号 // update tcm start if (String.isBlank(reSet1[i].Consumable_order_minor__r.ContractNo__c)) { codsIns.ContractNo_text__c= reSet1[i].ContractNo_text__c; }else { codsIns.ContractNo_text__c= reSet1[i].Consumable_order_minor__r.ContractNo__c; } // update tcm end //add by rentx 2020-10-13 end 互相调货时,借入方记录SAP合同号 //add by rentx 2021-03-22 start // if (reSet1[i].Lose_Flag__c == true){ if (reSet1[i].hospitalSpecialOffer__c == true && reSet1[i].SummonsForDirction_det__c == '互相调货'){ codsIns.exchangeOutPattern__c = true; } //add by rentx 2021-03-22 end consumableorderdetails2Insert.add(codsIns); otherAgencyMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } } }else{ //返品检查 //到货但产品类型与用户的类型不符 reSet1 = [SELECT Id,Name,Intra_Trade_List_RMB__c,Asset_Model_No__c, Consumable_Product__c,Consumable_Product__r.Name, Consumable_Product__r.Name__c,Consumable_Product__r.Asset_Model_No__c, Sterilization_limit__c,Deliver_date__c,Bar_Code__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name, Consumable_order_minor__c,Dealer_Arrive__c, Guarantee_period_for_products__c,CFDA_Status__c, ProductPacking_list_manual__c,Report_Product_Approbation__c, Report_Product_Expiration__c,Box_Piece__c, Rrturn_count__c, Product_Type__c //add by rentx 2020-10-14 start ,ContractNo_text__c/*,ContractNo__c*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE Bar_Code__c in :BarCodeListP AND ( not Product_Type__c like :userPro_Typestr) AND Dealer_Info_text__c = :accountName AND ((Consumable_order_minor__c != null AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation) OR Consumable_order_minor__c = null) ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '产品类型['+reSet1[i].Product_Type__c+']与用户的类型['+userPro_Type+']不符'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c //add by rentx 2020-10-14 start ,ContractNo_text__c/*,ContractNo__c*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end ,Report_Product_Expiration__c //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = FALSE AND Dealer_Shipment__c= FALSE AND Dealer_Saled__c = FALSE // gzw fix 取消产品判断为未入库 20230323 AND Cancellation_Flag__c = false AND Dealer_Returned__c = false AND Bar_Code__c in :BarCodeListP AND Dealer_Info_text__c = :accountName ORDER BY Name ];//没到货 if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '该商品尚未入库'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c,ToDueDateDays__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,Lose_Flag__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c //add by rentx 2020-10-14 start ,ContractNo_text__c/*,ContractNo__c*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end , Report_Product_Expiration__c //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Dealer_Shipment__c= FALSE AND Dealer_Saled__c = FALSE AND Bar_Code__c in :BarCodeListP AND Dealer_Returned__c = false // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start //AND Lose_Flag__c = FALSE // AND Lose_Flag__c = FALSE // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c =: userWorkLocation // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // Gzw 20201215修复,拆盒产品不判断 AND Box_Piece__c = '盒' // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end ORDER BY Name ];//没出库,没销售,就是在库 if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // String str = '该商品在库'; // if (reSet1[i].Lose_Flag__c) { // str = '该商品丢失'; // } String str = ''; if(reSet1[i].Lose_Flag__c == false){ str = '该商品在库';//没出库 ,没销售,没丢失就是在库。 } if(reSet1[i].Lose_Flag__c == true && reSet1[i].ToDueDateDays__c >= 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING, '产品'+reSet1[i].Consumable_Product__r.Name+'存在丢失记录'));//如果丢失产品就给提示。 } if (reSet1[i].Lose_Flag__c == true && reSet1[i].ToDueDateDays__c < 0) { str = '过期已销存产品,不允许返品'; } if(str != ''){ ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } // ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); // ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end } } } } //到货正确信息 reSet = [SELECT Id, Name, Intra_Trade_List_RMB__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Name__c, Consumable_Product__r.Asset_Model_No__c, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Box_Piece__c, Rrturn_count__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Dealer_Arrive__c, Guarantee_period_for_products__c, CFDA_Status__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c, Consumable_Product__r.Pro2_Dealer_ENG__c, Consumable_Product__r.Pro2_Dealer_Object__c, TracingCode__c, Agencyinfo_fromSAP__c, Frist_Storage_Agency__c, Dealer_Info_text__c //add by rentx 2020-10-14 start ,ContractNo_text__c/*,ContractNo__c*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Cancellation_Date__c = null AND Dealer_Arrive__c = false AND Product_Type__c like :userPro_Typestr AND Bar_Code__c in :BarCodeListP AND Dealer_Info_text__c = :accountName AND ((Consumable_order_minor__c != null AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation) OR Consumable_order_minor__c = null) ORDER BY Name ]; if(reSet.size()>0){ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'ErrorIdMap+++ '+ ErrorIdMap.keyset())); Map errorMap = new Map(); for (Integer i = 0; i < reSet.size(); i++) { if(ExistIdMap.containsKey(reSet[i].Bar_Code__c) || ErrorIdMap.containsKey(reSet[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ Matcher n = Pattern.compile('[0-9]').matcher(reSet[i].TracingCode__c); if(n.find()){ // gzw DB202305352696 入库管理编码验证程序调整 start if (reSet[i].TracingCode__c.length() == 5) { String tr = reSet[i].TracingCode__c; String Ctr = tr.substring(tr.length() - 3,tr.length()); String Btr = tr.substring(tr.length() - 4,tr.length()-3); String Atr = tr.substring(tr.length() - 5,tr.length()-4); if (Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find()) { String str = '管理编码有误,请检查条形码数据。'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i],str)); ErrorIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); continue; } } // String str = '管理编码中有数字,请与管理员确认是否错误。'; // ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i],str)); // ErrorIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } if(otherAgencyMap.containsKey(reSet[i].Bar_Code__c)){ for (Integer j=0; j0){ for (Integer i = 0; i < reSet.size(); i++) { if(ExistIdMap.containsKey(reSet[i].Bar_Code__c) || ErrorIdMap.containsKey(reSet[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ Matcher n = Pattern.compile('[0-9]').matcher(reSet[i].TracingCode__c); if(n.find()){// gzw DB202305352696 入库管理编码验证程序调整 start if (reSet[i].TracingCode__c.length() == 5) { String tr = reSet[i].TracingCode__c; String Ctr = tr.substring(tr.length() - 3,tr.length()); String Btr = tr.substring(tr.length() - 4,tr.length()-3); String Atr = tr.substring(tr.length() - 5,tr.length()-4); if (Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find()) { String str = '管理编码有误,请检查条形码数据。'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i],str)); ErrorIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); continue; } } // String str = '管理编码中有数字,请与管理员确认是否错误。'; // ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i],str)); // ErrorIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } ExistIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); for(String str : barMcodeMap.keySet()){ // BarCode不一致时的警告信息 if(reSet[i].Bar_Code__c != str && reSet[i].TracingCode__c == barMcodeMap.get(str)){ // 20220815 ljh SWAG-CH65B7 start // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING,'此管理编码与实际发货BarCode不一致,请核对管理编码('+ str +')的入库及库存数据。')); ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING,'条形码为('+ str +')的入库数据与发货数据不一致')); // 20220815 ljh SWAG-CH65B7 end } if(barMcodeMap.get(str) == reSet[i].TracingCode__c){ reSet[i].Bar_Code__c = str; //===================================== // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.WARNING,'入库BarCode('+ str +')和库存条码不一致。')); ExistIdMap.put(str,str); } } ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet[i])); ConsumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(reSet[i])); } } } // CHAN-BD43NK 关闭直接返品功能 追加 barcode不一致判断 reSet1 = [SELECT Id,Name,TracingCode__c,Bar_Code__c,Sale_orderName__c,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND (Dealer_Shipment__c = true OR Dealer_Saled__c = true) AND TracingCode__c in :barMcodeMap.values() AND Bar_Code__c not in :barMcodeMap.keySet() AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c =: userWorkLocation ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ for(String str : barMcodeMap.keySet()){ if(barMcodeMap.get(str) == reSet1[i].TracingCode__c){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'barcode' +str + '与出库单' + reSet1[i].Sale_orderName__c + ' 中的管理编码一致,但Barcode不同,请确认具体数据。')); ErrorIdMap.put(str,str); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } } } integer RGcnt = GoodsReturnCheck(); AllMap.putAll(ErrorIdMap); AllMap.putAll(ExistIdMap); if(RGcnt>0){ for(String str:GrList){ AllMap.put(str,str); } } //得到不存在的BarCode //return; for(Integer i = 0; i < BarCodeListP.size(); i++){ if(AllMap.containsKey(BarCodeListP[i])){ continue; }else if(otherAgencyMap.containsKey(BarCodeListP[i])){ continue; } //add by rentx 2021-01-27 start else if (coc!= null && coc.orderPattern__c == 'hospitalorder') { HosErrorList.add(BarCodeListP[i]); continue; } //add by rentx 2021-01-27 end else{ notInlist.add(BarCodeListP[i]); otherAgencyMap.put(BarCodeListP[i],BarCodeListP[i]); } } // CHAN-BD43NK 关闭直接返品功能 if(notInlist.size()>0){ if(ArrType!='ReG'){ inventoryEntryNoESetId(notInlist); if(notInStorelist.size() > 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCode号'+ notInStorelist + '不存在。')); return; } }else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCode号'+ notInlist + '不存在,无对应的出库单,请先操作产品入库。')); return; } } //add by rentx 2021-01-27 start if (HosErrorList.size() > 0) { for (String str : HosErrorList) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCode号:' + str + HosErrorMap.get(str)+'')); } } //add by rentx 2021-01-27 end }else{ //已取消产品 reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = FALSE AND Dealer_Shipment__c= FALSE AND Dealer_Saled__c = FALSE AND Dealer_Returned__c = false AND Cancellation_Date__c != null AND Bar_Code__c in :BarCodeListP AND Dealer_Info_text__c = :accountName ORDER BY Name ];//没到货 if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '该商品取消'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } //已经销售 reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Saled__c = true AND Dealer_Returned__c =false AND Dealer_Info_text__c = :accountName AND Bar_Code__c in :BarCodeListP AND Arrive_Owner_Work_Location__c =: userWorkLocation ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '该商品已经销售'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } //已经出库产品 reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Shipment__c = true AND Dealer_Returned__c =false AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c =: userWorkLocation AND Bar_Code__c in :BarCodeListP ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '该商品已经出库'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } //已经到货产品 reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,Lose_Flag__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true AND Dealer_Returned__c =false AND Bar_Code__c in :BarCodeListP AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c =: userWorkLocation ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '该商品已经到货'; if (reSet1[i].Lose_Flag__c == TRUE) { str = '该商品已经丢失'; } ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } //不属于本订单 reSet1 = [SELECT Id, Name,Consumable_Product__r.Name__c, Consumable_Product__c,Consumable_Product__r.Name, Sterilization_limit__c, Deliver_date__c,Bar_Code__c,Box_Piece__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name,Consumable_order_minor__c, recordtypeid,Consumable_order_minor__r.Arrive_Order__c,Report_Product_Expiration__c FROM Consumable_order_details2__c WHERE Consumable_order_minor__c != :ESetId AND Bar_Code__c in :BarCodeListP //AND Dealer_Info_text__c = :accountName ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '该消耗品不属于本订单'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } //到货但产品类型与用户的类型不符 reSet1 = [SELECT Id,Name,Intra_Trade_List_RMB__c,Asset_Model_No__c, Consumable_Product__c,Consumable_Product__r.Name, Consumable_Product__r.Name__c,Consumable_Product__r.Asset_Model_No__c, Sterilization_limit__c,Deliver_date__c,Bar_Code__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name, Consumable_order_minor__c,Dealer_Arrive__c, Guarantee_period_for_products__c,CFDA_Status__c, ProductPacking_list_manual__c,Report_Product_Approbation__c, Report_Product_Expiration__c,Box_Piece__c, Rrturn_count__c, Product_Type__c ,ContractNo_text__c/*,ContractNo__c*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Dealer_Info_text__c = :accountName AND ( not Product_Type__c like :userPro_Typestr) AND Consumable_order_minor__c = :ESetId AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation AND Dealer_Arrive__c = false AND Cancellation_Date__c = null AND Bar_Code__c in :BarCodeListP ORDER BY Name ]; if(reSet1.size()>0){ for (Integer i = 0; i < reSet1.size(); i++) { if(ErrorIdMap.containsKey(reSet1[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '产品类型['+reSet1[i].Product_Type__c+']与用户的类型['+userPro_Type+']不符'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet1[i],str)); ErrorIdMap.put(reSet1[i].Bar_Code__c,reSet1[i].Bar_Code__c); } } } //到货正确信息 reSet = [SELECT Id,Name,Intra_Trade_List_RMB__c,Asset_Model_No__c, Consumable_Product__c,Consumable_Product__r.Name, Consumable_Product__r.Name__c,Consumable_Product__r.Asset_Model_No__c, Sterilization_limit__c,Deliver_date__c,Bar_Code__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name, Consumable_order_minor__c,Dealer_Arrive__c, Guarantee_period_for_products__c,CFDA_Status__c, ProductPacking_list_manual__c,Report_Product_Approbation__c, Report_Product_Expiration__c,Box_Piece__c, Rrturn_count__c, TracingCode__c, Agencyinfo_fromSAP__c, Frist_Storage_Agency__c, Dealer_Info_text__c ,ContractNo_text__c/*,ContractNo__c*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Dealer_Info_text__c = :accountName AND Product_Type__c like :userPro_Typestr AND Consumable_order_minor__c = :ESetId AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation AND Dealer_Arrive__c = false AND Cancellation_Date__c = null AND Bar_Code__c in :BarCodeListP ORDER BY Name ]; if(reSet.size()>0){ Map errorMap = new Map(); for (Integer i = 0; i < reSet.size(); i++) { if(ExistIdMap.containsKey(reSet[i].Bar_Code__c) || ErrorIdMap.containsKey(reSet[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ Matcher n = Pattern.compile('[0-9]').matcher(reSet[i].TracingCode__c); if(n.find()){ // gzw DB202305352696 入库管理编码验证程序调整 start if (reSet[i].TracingCode__c.length() == 5) { String tr = reSet[i].TracingCode__c; String Ctr = tr.substring(tr.length() - 3,tr.length()); String Btr = tr.substring(tr.length() - 4,tr.length()-3); String Atr = tr.substring(tr.length() - 5,tr.length()-4); if (Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find()) { String str = '管理编码有误,请检查条形码数据。'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i],str)); ErrorIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); continue; } } // String str = '管理编码中有数字,请与管理员确认是否错误。'; // ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i],str)); // ErrorIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet[i])); ConsumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(reSet[i])); ExistIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); } } } //barcode不一致,管理编码一致 reSet = [SELECT Id, Name, Intra_Trade_List_RMB__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Name__c, Consumable_Product__r.Asset_Model_No__c, Sterilization_limit__c, Deliver_date__c, Bar_Code__c, Arrive_date__c, Send_Date__c, Box_Piece__c, Rrturn_count__c, Consumable_order_minor__r.Name, Consumable_order_minor__c, Dealer_Arrive__c, Guarantee_period_for_products__c, CFDA_Status__c, ProductPacking_list_manual__c, Report_Product_Approbation__c, Report_Product_Expiration__c, TracingCode__c ,Agencyinfo_fromSAP__c ,Frist_Storage_Agency__c ,ContractNo_text__c/*,ContractNo__c*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Cancellation_Date__c = null AND Dealer_Arrive__c = false AND TracingCode__c in :barMcodeMap.values() AND Bar_Code__c not in :barMcodeMap.keySet() AND Dealer_Info_text__c = :accountName AND ((Consumable_order_minor__c != null AND Consumable_order_minor__r.Order_Owner_WorkLocal__c = :userWorkLocation) OR Consumable_order_minor__c = null) ORDER BY Name ]; if(reSet.size()>0){ for (Integer i = 0; i < reSet.size(); i++) { if(ExistIdMap.containsKey(reSet[i].Bar_Code__c) || ErrorIdMap.containsKey(reSet[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ Matcher n = Pattern.compile('[0-9]').matcher(reSet[i].TracingCode__c); if(n.find()){ // gzw DB202305352696 入库管理编码验证程序调整 start if (reSet[i].TracingCode__c.length() == 5) { String tr = reSet[i].TracingCode__c; String Ctr = tr.substring(tr.length() - 3,tr.length()); String Btr = tr.substring(tr.length() - 4,tr.length()-3); String Atr = tr.substring(tr.length() - 5,tr.length()-4); if (Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find()) { String str = '管理编码有误,请检查条形码数据。'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i],str)); ErrorIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); continue; } } // String str = '管理编码中有数字,请与管理员确认是否错误。'; // ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(reSet[i],str)); // ErrorIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } ExistIdMap.put(reSet[i].Bar_Code__c,reSet[i].Bar_Code__c); for(String str : barMcodeMap.keySet()){ if(barMcodeMap.get(str) == reSet[i].TracingCode__c){ reSet[i].Bar_Code__c = str; ExistIdMap.put(str,str); } } ConsumableorderdetailsRecordsdummy.add(new ConsumableorderdetailsInfo(reSet[i])); ConsumableorderdetailsRecords.add(new ConsumableorderdetailsInfo(reSet[i])); } } } AllMap.putAll(ErrorIdMap); AllMap.putAll(ExistIdMap); //得到不存在的BarCode for(Integer i = 0; i < BarCodeListP.size(); i++){ if(AllMap.containsKey(BarCodeListP[i])){ continue; }else if(otherAgencyMap.containsKey(BarCodeListP[i])){ continue; } //add by rentx 2021-01-27 start else if (coc!= null && coc.orderPattern__c == 'hospitalorder') { HosErrorList.add(BarCodeListP[i]); continue; } //add by rentx 2021-01-27 end else{ notInlist.add(BarCodeListP[i]); otherAgencyMap.put(BarCodeListP[i],BarCodeListP[i]); } } if(notInlist.size()>0){ inventoryEntry(notInlist); if(notInStorelist.size() > 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCode号'+ notInStorelist + '不存在。')); return; } } } //add by rentx 2021-01-27 start 当订单为医院特价类型的订单时,如果找不到barcode,不解析,并且默认该barcode对应的明细2为非医院特价产品,直接报错 if (HosErrorList.size() > 0) { for (String str : HosErrorList) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCode号:' + str +'是非医院特价产品')); } } //add by rentx 2021-01-27 end makeArrivedSummary(); //add by rentx 20210602 start CHAN-C3K4ZQ makeRecordsView(ConsumableorderdetailsRecordsdummy); //add by rentx 20210602 end CHAN-C3K4ZQ } public void inventoryEntryNoESetId (List barCodeList){ //所有barcode解析到的Jancode List alljanCodeList = new List(); List allotCodeList = new List(); List barCode01List = new List(); List barCode241List = new List(); Map> barJancodeMap = new Map>(); Map> barOtcodeMap = new Map>(); Map> barcodeinfoMap = new Map>(); Map barcoderightMap = new Map(); notInStorelist.clear(); for(Integer i = 0; i < barCodeList.size(); i++){ Date expirationDate = null ; String serialNoorLotNo = ''; String tracingCode = ''; String productDateStr = ''; Date productionDate = null ; String expirationDateStr = ''; if(barCodeList[i].length() >= 3){ if(barCodeList[i].substring(0,2) =='01'){ String janCodeMark = ''; //生产日期 List janCode = new List(); if(barCodeList[i].length() < 16){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!')); continue; }else { //if(barCodeList[i].substring(0,2) !='01'){ // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')没有janCode,不符合要求!')); // return; //} janCodeMark = barCodeList[i].substring(2,16); try{ Decimal test = Decimal.valueOf(janCodeMark); }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')的janCode错误!')); continue; } } if(barCodeList[i].length() >= 22){ if(barCodeList[i].substring(barCodeList[i].length() - 8,barCodeList[i].length()-5)!='250'){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有管理编码!')); continue; } if( barCodeList[i].substring(16,18) =='11'){ try{ productDateStr = '20' + barCodeList[i].substring(18,20) + '-' + barCodeList[i].substring(20,22) + '-01' ; productionDate = Date.valueOf(productDateStr); }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的生产日期' + productDateStr + '错误!')); continue; } if(barCodeList[i].length() >=32){ if( barCodeList[i].substring(24,26) =='17'){ try{ if(barCodeList[i].substring(30,32)=='00'){ expirationDateStr = '20' + barCodeList[i].substring(26,28) + '-' + barCodeList[i].substring(28,30) + '-' + '01' ; expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1); }else{ expirationDateStr = '20' + barCodeList[i].substring(26,28) + '-' + barCodeList[i].substring(28,30) + '-' +barCodeList[i].substring(30,32) ; expirationDate = Date.valueOf(expirationDateStr); } }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!')); continue; } if(barCodeList[i].length() >= 42){ if(barCodeList[i].substring(32,34) =='10' || barCodeList[i].substring(32,34) =='21'){ serialNoorLotNo = barCodeList[i].substring(34,barCodeList[i].length() - 8) ; } } }else if(barCodeList[i].substring(24,26) =='10' || barCodeList[i].substring(24,26) =='21'){ serialNoorLotNo = barCodeList[i].substring(26,barCodeList[i].length() - 8) ; } } }else if(barCodeList[i].substring(16,18) =='17'){ try{ if(barCodeList[i].substring(22,24)=='00'){ expirationDateStr = '20' + barCodeList[i].substring(18,20) + '-' + barCodeList[i].substring(20,22) + '-01'; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品expirationDateStr' + expirationDateStr)); expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1); }else{ expirationDateStr = '20' + barCodeList[i].substring(18,20) + '-' + barCodeList[i].substring(20,22) + '-' +barCodeList[i].substring(22,24); expirationDate = Date.valueOf(expirationDateStr); } }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!')); continue; } if(barCodeList[i].length() >= 34){ if(barCodeList[i].substring(24,26) =='10' || barCodeList[i].substring(24,26) =='21'){ serialNoorLotNo = barCodeList[i].substring(26,barCodeList[i].length() - 8) ; } } }else if(barCodeList[i].length() >= 26){ if(barCodeList[i].substring(16,18) =='10' || barCodeList[i].substring(16,18) =='21'){ serialNoorLotNo = barCodeList[i].substring(18,barCodeList[i].length() - 8) ; } } } if(barCodeList[i].length() >= 24 && barCodeList[i].substring(barCodeList[i].length() - 8,barCodeList[i].length()-5)=='250'){ if(barCodeList[i].substring(barCodeList[i].length() - 8,barCodeList[i].length()-5)=='250'){ tracingCode = barCodeList[i].substring(barCodeList[i].length() - 5,barCodeList[i].length()); Matcher n = Pattern.compile('[0-9]').matcher(tracingCode); if(n.find()){ // gzw DB202305352696 入库管理编码验证程序调整 start if (tracingCode.length() == 5) { String tr = tracingCode; String Ctr = tr.substring(tr.length() - 3,tr.length()); String Btr = tr.substring(tr.length() - 4,tr.length()-3); String Atr = tr.substring(tr.length() - 5,tr.length()-4); if (Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find()) { String str = '管理编码有误,请检查条形码数据。'; ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')管理编码有误,请检查条形码数据。')); continue; } } // String str = '管理编码不正确,请与管理员确认是否错误。'; // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')管理编码中有数字,请与管理员确认是否错误!')); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } }else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')的tracingCode错误!')); continue; } } List barcodedetList = new List(); barcodedetList.add(barCodeList[i]); barcodedetList.add(String.valueOf(expirationDate)); barcodedetList.add(serialNoorLotNo); barcodedetList.add(tracingCode); Integer jan1 = Integer.valueOf(janCodeMark.substring(0, 1)); Integer jan2 = Integer.valueOf(janCodeMark.substring(1, 2)); Integer jan3 = Integer.valueOf(janCodeMark.substring(2, 3)); Integer jan4 = Integer.valueOf(janCodeMark.substring(3, 4)); Integer jan5 = Integer.valueOf(janCodeMark.substring(4, 5)); Integer jan6 = Integer.valueOf(janCodeMark.substring(5, 6)); Integer jan7 = Integer.valueOf(janCodeMark.substring(6, 7)); Integer jan8 = Integer.valueOf(janCodeMark.substring(7, 8)); Integer jan9 = Integer.valueOf(janCodeMark.substring(8, 9)); Integer jan10 = Integer.valueOf(janCodeMark.substring(9, 10)); Integer jan11 = Integer.valueOf(janCodeMark.substring(10, 11)); Integer jan12 = Integer.valueOf(janCodeMark.substring(11, 12)); Integer jan13 = Integer.valueOf(janCodeMark.substring(12, 13)); Integer count12 = jan2 + jan3*3 + jan4 + jan5*3 + jan6 + jan7*3 + jan8 + jan9*3 + jan10 + jan11*3 +jan12 + jan13*3; Integer count13 = jan1*3 + jan2 + jan3*3 + jan4 + jan5*3 + jan6 + jan7*3 + jan8 + jan9*3 + jan10 + jan11*3 +jan12 + jan13*3; String frost12 = (String.valueOf(count12)).substring((String.valueOf(count12)).length()-1); String frost13 = (String.valueOf(count13)).substring((String.valueOf(count13)).length()-1); //减去12位个位 frost12 = (String.valueOf(10 - Integer.valueOf(frost12))).substring((String.valueOf(10 - Integer.valueOf(frost12))).length()-1); frost13 = (String.valueOf(10 - Integer.valueOf(frost13))).substring((String.valueOf(10 - Integer.valueOf(frost13))).length()-1); janCode.add(janCodeMark.substring(1, 13) + frost12); janCode.add(janCodeMark.substring(0, 13) + frost12); janCode.add(janCodeMark.substring(1, 13) + frost13); janCode.add(janCodeMark.substring(0, 13) + frost13); alljanCodeList.addAll(janCode); Map janCodeMap = new Map(); janCodeMap.put(janCodeMark.substring(1, 13) + frost12,barCodeList[i]); janCodeMap.put(janCodeMark.substring(0, 13) + frost12,barCodeList[i]); janCodeMap.put(janCodeMark.substring(1, 13) + frost13,barCodeList[i]); janCodeMap.put(janCodeMark.substring(0, 13) + frost13,barCodeList[i]); barJancodeMap.put(barCodeList[i], janCodeMap); barcodeinfoMap.put(barCodeList[i], barcodedetList); barCode01List.add(barCodeList[i]); }else if(barCodeList[i].substring(0,3) =='241'){ if(barCodeList[i].length() > 8 && barCodeList[i].substring(barCodeList[i].length() - 8,barCodeList[i].length()-5)!='250'){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有管理编码!')); continue; } List otCodeList = new List(); Map otCodeMap = new Map(); if(barCodeList[i].length() < 7){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!')); continue; }else if(barCodeList[i].length() == 11){ String otCode4 = barCodeList[i].substring(3,7); String otCode5 = barCodeList[i].substring(3,8); String otCode6 = barCodeList[i].substring(3,9); String otCode7 = barCodeList[i].substring(3,10); String otCode8 = barCodeList[i].substring(3,11); otCodeList.add(otCode4); otCodeList.add(otCode5); otCodeList.add(otCode6); otCodeList.add(otCode7); otCodeList.add(otCode8); otCodeMap.put(otCode4,barCodeList[i]); otCodeMap.put(otCode5,barCodeList[i]); otCodeMap.put(otCode6,barCodeList[i]); otCodeMap.put(otCode7,barCodeList[i]); otCodeMap.put(otCode8,barCodeList[i]); }else if(barCodeList[i].length() >= 12){ String otCode4 = barCodeList[i].substring(3,7); String otCode5 = barCodeList[i].substring(3,8); String otCode6 = barCodeList[i].substring(3,9); String otCode7 = barCodeList[i].substring(3,10); String otCode8 = barCodeList[i].substring(3,11); String otCode9 = barCodeList[i].substring(3,12); otCodeList.add(otCode4); otCodeList.add(otCode5); otCodeList.add(otCode6); otCodeList.add(otCode7); otCodeList.add(otCode8); otCodeList.add(otCode9); otCodeMap.put(otCode4,barCodeList[i]); otCodeMap.put(otCode5,barCodeList[i]); otCodeMap.put(otCode6,barCodeList[i]); otCodeMap.put(otCode7,barCodeList[i]); otCodeMap.put(otCode8,barCodeList[i]); otCodeMap.put(otCode9,barCodeList[i]); } allotCodeList.addAll(otCodeList); barOtcodeMap.put(barCodeList[i], otCodeMap); barCode241List.add(barCodeList[i]); }else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')不符合要求!')); continue; } }else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')不符合要求!')); continue; } } //01通过检索产品是否存在 //-----------XHL--------------UpdateSTART----------------20181010------ if(alljanCodeList.size() > 0){ List product2InStore = [SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,OT_CODE__c,Product2_Jancode__c, Pro2_Dealer_ENG__c,Pro2_Dealer_Object__c FROM Product2__c WHERE Product2_Jancode__c in :alljanCodeList order by SFDA_Expiration_Date__c desc ] ; if(product2InStore.size() > 0){ // CHAN-AVSAST Map rightBar = new Map(); Map errorMap = new Map(); for(String bar: barJancodeMap.keySet() ){ Integer cou = 0; for(Product2__c produ: product2InStore){ if(barJancodeMap.get(bar).containsKey(produ.Product2_Jancode__c) && !rightBar.containsKey(bar)){ cou ++; if(EngFlag == TRUE && produ.Pro2_Dealer_ENG__c == TRUE){ consumableInventory.add(new ConsumableorderdetailsInfo(produ,barcodeinfoMap.get(bar))); consumableInventoryUse.add(new ConsumableorderdetailsInfo(produ,barcodeinfoMap.get(bar))); rightBar.put(bar, bar); }else if(ETFlag == TRUE && produ.Pro2_Dealer_Object__c == TRUE){ consumableInventory.add(new ConsumableorderdetailsInfo(produ,barcodeinfoMap.get(bar))); consumableInventoryUse.add(new ConsumableorderdetailsInfo(produ,barcodeinfoMap.get(bar))); rightBar.put(bar, bar); }else{ errorMap.put(bar, bar); } } } if(cou <= 0 ){ notInStorelist.add(bar); } } if(errorMap.size() > 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCode号['+ errorMap.values() +']产品类型['+product_Type+']与用户类型['+userPro_Type+']不符')); } } } //241通过检索产品是否存在 if(allotCodeList.size() > 0){ Map errorMap = new Map(); Map exitBarCodeMap = new Map(); List product2InStore = [SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,OT_CODE__c,Product2_Jancode__c, Pro2_Dealer_ENG__c,Pro2_Dealer_Object__c FROM Product2__c WHERE OT_CODE__c in :allotCodeList AND (not Product_Type__c like :userPro_Typestr)] ; if(product2InStore.size() > 0){ for(Product2__c produ: product2InStore){ for(String bar: barOtcodeMap.keySet() ){ if(barOtcodeMap.get(bar).containsKey(produ.OT_CODE__c)){ exitBarCodeMap.put(bar,bar); errorMap.put(bar, bar); } } } } if(errorMap.size() > 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCode号['+ errorMap.values() +']产品类型['+product_Type+']与用户['+userPro_Type+']类型不符')); } product2InStore = [SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,OT_CODE__c,Product2_Jancode__c, Pro2_Dealer_ENG__c,Pro2_Dealer_Object__c FROM Product2__c WHERE OT_CODE__c in :allotCodeList AND Product_Type__c like :userPro_Typestr] ; if(product2InStore.size() > 0){ for(Product2__c produ: product2InStore){ for(String bar: barOtcodeMap.keySet() ){ Date expirationDate = null ; String serialNoorLotNo = ''; String tracingCode = ''; String productDateStr = ''; Date productionDate = null ; String expirationDateStr = ''; if(barOtcodeMap.get(bar).containsKey(produ.OT_CODE__c)){ Integer oTcodeLength = produ.OT_CODE__c.length(); if(bar.length() >= oTcodeLength + 11){ if( bar.substring(oTcodeLength + 3,oTcodeLength + 5) =='11'){ try{ productDateStr = '20' + bar.substring(oTcodeLength + 5,oTcodeLength + 7) + '-' + bar.substring(oTcodeLength + 7,oTcodeLength + 9) + '-01' ; productionDate = Date.valueOf(productDateStr); }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + bar + ')的生产日期' + productDateStr + '错误!')); continue; } if(bar.length() >=oTcodeLength + 3 + 16){ if( bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10) =='17'){ try{ if(bar.substring(oTcodeLength + 3 + 14,oTcodeLength + 3 + 16)=='00'){ expirationDateStr = '20' + bar.substring(oTcodeLength + 3 + 10,oTcodeLength + 3 + 12) + '-' + bar.substring(oTcodeLength + 3 + 12,oTcodeLength + 3 + 14) + '-' + '01' ; expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1); }else{ expirationDateStr = '20' + bar.substring(oTcodeLength + 3 + 10,oTcodeLength + 3 + 12) + '-' + bar.substring(oTcodeLength + 3 + 12,oTcodeLength + 3 + 14) + '-' +bar.substring(oTcodeLength + 3 + 14,oTcodeLength + 3 + 16) ; expirationDate = Date.valueOf(expirationDateStr); } }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!')); continue; } if(bar.length() >= oTcodeLength + 3 + 25){ if(bar.substring(oTcodeLength + 3 + 16,oTcodeLength + 3 + 18) =='10' || bar.substring(oTcodeLength + 3 + 16,oTcodeLength + 3 + 18) =='21'){ serialNoorLotNo = bar.substring(oTcodeLength + 3 + 18,bar.length() - 8) ; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'serialNoorLotNo' + serialNoorLotNo)); } } }else if(bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10) =='10' || bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10) =='21'){ serialNoorLotNo = bar.substring(oTcodeLength + 3 + 10,bar.length() - 8) ; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'serialNoorLotNo' + serialNoorLotNo)); } } }else if(bar.substring(oTcodeLength + 3,oTcodeLength + 5) =='17'){ try{ if(bar.substring(oTcodeLength + 3 + 6,oTcodeLength + 3 + 8)=='00'){ expirationDateStr = '20' + bar.substring(oTcodeLength + 3 + 2,oTcodeLength + 3 + 4) + '-' + bar.substring(oTcodeLength + 3 + 4,oTcodeLength + 3 + 6) + '-01'; expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1); }else{ expirationDateStr = '20' + bar.substring(oTcodeLength + 3 + 2,oTcodeLength + 3 + 4) + '-' + bar.substring(oTcodeLength + 3 + 4,oTcodeLength + 3 + 6) + '-' +bar.substring(oTcodeLength + 3 + 6,oTcodeLength + 3 + 8); expirationDate = Date.valueOf(expirationDateStr); } }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!')); continue; } if(bar.length() >=oTcodeLength + 20){ if(bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10) =='10' || bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10) =='21'){ serialNoorLotNo = bar.substring(oTcodeLength + 3 + 10,bar.length() - 8) ; } } }else if(bar.length() >= oTcodeLength + 12){ if(bar.substring(oTcodeLength + 3,oTcodeLength + 5) =='10' || bar.substring(oTcodeLength + 3,oTcodeLength + 5) =='21'){ serialNoorLotNo = bar.substring(oTcodeLength + 3 + 2,bar.length() - 8) ; } } } if(bar.length() >= oTcodeLength + 3 + 8 && bar.substring(bar.length() - 8,bar.length()-5)=='250'){ if(bar.substring(bar.length() - 8,bar.length()-5)=='250'){ tracingCode = bar.substring(bar.length() - 5,bar.length()); Matcher n = Pattern.compile('[0-9]').matcher(tracingCode); if(n.find()){ // gzw DB202305352696 入库管理编码验证程序调整 start if (tracingCode.length() == 5) { String tr = tracingCode; String Ctr = tr.substring(tr.length() - 3,tr.length()); String Btr = tr.substring(tr.length() - 4,tr.length()-3); String Atr = tr.substring(tr.length() - 5,tr.length()-4); if (Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find()) { String str = '管理编码有误,请检查条形码数据。'; ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + bar + ')管理编码有误,请检查条形码数据。')); continue; } } // String str = '管理编码不正确,请与管理员确认是否错误。'; // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + bar + ')管理编码中有数字,请与管理员确认是否错误!')); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } }else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + bar + ')的tracingCode错误!')); continue; } } exitBarCodeMap.put(bar,bar); List barcodedetList = new List(); barcodedetList.add(bar); barcodedetList.add(String.valueOf(expirationDate)); barcodedetList.add(serialNoorLotNo); barcodedetList.add(tracingCode); consumableInventory.add(new ConsumableorderdetailsInfo(produ,barcodedetList)); consumableInventoryUse.add(new ConsumableorderdetailsInfo(produ,barcodedetList)); } } } } for(String bartxt :barCode241List){ if(!exitBarCodeMap.containsKey(bartxt)){ if(!errorMap.containsKey(bartxt)){ notInStorelist.add(bartxt); } } } } } public void inventoryEntry (List barCodeList){ //所有barcode解析到的Jancode List alljanCodeList = new List(); List allotCodeList = new List(); List barCode01List = new List(); List barCode241List = new List(); Map> barJancodeMap = new Map>(); Map> barOtcodeMap = new Map>(); Map> barcodeinfoMap = new Map>(); notInStorelist.clear(); notEqualBARcodeCunMap.clear(); Map orderdetailMap = new Map(); List orderdetail = [SELECT Id, Name, Consumable_order__c, Consumable_Product__c,Asset_Model_No__c FROM Consumable_Orderdetails__c WHERE Consumable_order__r.Dealer_Info__c = :accountid AND Consumable_order__c != null AND Consumable_order__c = :ESetId AND Order_Owner_WorkLocal__c = :userWorkLocation ORDER BY Name ]; for(Integer i = 0; i < orderdetail.size(); i++){ orderdetailMap.put(orderdetail[i].Consumable_Product__c, orderdetail[i].Consumable_Product__c); } for(Integer i = 0; i < barCodeList.size(); i++){ Date expirationDate = null ; String serialNoorLotNo = ''; String tracingCode = ''; String productDateStr = ''; Date productionDate = null ; String expirationDateStr = ''; if(barCodeList[i].substring(0,2) =='01'){ String janCodeMark = ''; //生产日期 List janCode = new List(); if(barCodeList[i].length() < 16){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!')); continue; }else { janCodeMark = barCodeList[i].substring(2,16); try{ Decimal test = Decimal.valueOf(janCodeMark); }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')的janCode错误!')); continue; } } if(barCodeList[i].length() >= 22){ if(barCodeList[i].substring(barCodeList[i].length() - 8,barCodeList[i].length()-5)!='250'){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有管理编码!')); continue; } if( barCodeList[i].substring(16,18) =='11'){ try{ productDateStr = '20' + barCodeList[i].substring(18,20) + '-' + barCodeList[i].substring(20,22) + '-01' ; productionDate = Date.valueOf(productDateStr); }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')的生产日期' + productDateStr + '错误!')); continue; } if(barCodeList[i].length() >=32){ if( barCodeList[i].substring(24,26) =='17'){ try{ if(barCodeList[i].substring(30,32)=='00'){ expirationDateStr = '20' + barCodeList[i].substring(26,28) + '-' + barCodeList[i].substring(28,30) + '-' + '01' ; expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1); }else{ expirationDateStr = '20' + barCodeList[i].substring(26,28) + '-' + barCodeList[i].substring(28,30) + '-' +barCodeList[i].substring(30,32) ; expirationDate = Date.valueOf(expirationDateStr); } }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!')); continue; } if(barCodeList[i].length() >= 42){ if(barCodeList[i].substring(32,34) =='10' || barCodeList[i].substring(32,34) =='21'){ serialNoorLotNo = barCodeList[i].substring(34,barCodeList[i].length() - 8) ; } } }else if(barCodeList[i].substring(24,26) =='10' || barCodeList[i].substring(24,26) =='21'){ serialNoorLotNo = barCodeList[i].substring(26,barCodeList[i].length() - 8) ; } } }else if(barCodeList[i].substring(16,18) =='17'){ try{ if(barCodeList[i].substring(22,24)=='00'){ expirationDateStr = '20' + barCodeList[i].substring(18,20) + '-' + barCodeList[i].substring(20,22) + '-01'; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品expirationDateStr' + expirationDateStr)); expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1); }else{ expirationDateStr = '20' + barCodeList[i].substring(18,20) + '-' + barCodeList[i].substring(20,22) + '-' +barCodeList[i].substring(22,24); expirationDate = Date.valueOf(expirationDateStr); } }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')的滅菌有効期限' + expirationDateStr + '错误!')); continue; } if(barCodeList[i].length() >= 34){ if(barCodeList[i].substring(24,26) =='10' || barCodeList[i].substring(24,26) =='21'){ serialNoorLotNo = barCodeList[i].substring(26,barCodeList[i].length() - 8) ; } } }else if(barCodeList[i].length() >= 26){ if(barCodeList[i].substring(16,18) =='10' || barCodeList[i].substring(16,18) =='21'){ serialNoorLotNo = barCodeList[i].substring(18,barCodeList[i].length() - 8) ; } } } if(barCodeList[i].length() >= 24 && barCodeList[i].substring(barCodeList[i].length() - 8,barCodeList[i].length()-5)=='250'){ if(barCodeList[i].substring(barCodeList[i].length() - 8,barCodeList[i].length()-5)=='250'){ tracingCode = barCodeList[i].substring(barCodeList[i].length() - 5,barCodeList[i].length()); Matcher n = Pattern.compile('[0-9]').matcher(tracingCode); if(n.find()){ // gzw DB202305352696 入库管理编码验证程序调整 start if (tracingCode.length() == 5) { String tr = tracingCode; String Ctr = tr.substring(tr.length() - 3,tr.length()); String Btr = tr.substring(tr.length() - 4,tr.length()-3); String Atr = tr.substring(tr.length() - 5,tr.length()-4); if (Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find()) { String str = '管理编码有误,请检查条形码数据。'; ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')管理编码有误,请检查条形码数据。')); continue; } } // String str = '管理编码不正确,请与管理员确认是否错误。'; // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')管理编码中有数字,请与管理员确认是否错误!')); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } }else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')的tracingCode错误!')); continue; } } List barcodedetList = new List(); barcodedetList.add(barCodeList[i]); barcodedetList.add(String.valueOf(expirationDate)); barcodedetList.add(serialNoorLotNo); barcodedetList.add(tracingCode); Integer jan1 = Integer.valueOf(janCodeMark.substring(0, 1)); Integer jan2 = Integer.valueOf(janCodeMark.substring(1, 2)); Integer jan3 = Integer.valueOf(janCodeMark.substring(2, 3)); Integer jan4 = Integer.valueOf(janCodeMark.substring(3, 4)); Integer jan5 = Integer.valueOf(janCodeMark.substring(4, 5)); Integer jan6 = Integer.valueOf(janCodeMark.substring(5, 6)); Integer jan7 = Integer.valueOf(janCodeMark.substring(6, 7)); Integer jan8 = Integer.valueOf(janCodeMark.substring(7, 8)); Integer jan9 = Integer.valueOf(janCodeMark.substring(8, 9)); Integer jan10 = Integer.valueOf(janCodeMark.substring(9, 10)); Integer jan11 = Integer.valueOf(janCodeMark.substring(10, 11)); Integer jan12 = Integer.valueOf(janCodeMark.substring(11, 12)); Integer jan13 = Integer.valueOf(janCodeMark.substring(12, 13)); Integer count12 = jan2 + jan3*3 + jan4 + jan5*3 + jan6 + jan7*3 + jan8 + jan9*3 + jan10 + jan11*3 +jan12 + jan13*3; Integer count13 = jan1*3 + jan2 + jan3*3 + jan4 + jan5*3 + jan6 + jan7*3 + jan8 + jan9*3 + jan10 + jan11*3 +jan12 + jan13*3; String frost12 = (String.valueOf(count12)).substring((String.valueOf(count12)).length()-1); String frost13 = (String.valueOf(count13)).substring((String.valueOf(count13)).length()-1); //减去12位个位4 frost12 = (String.valueOf(10 - Integer.valueOf(frost12))).substring((String.valueOf(10 - Integer.valueOf(frost12))).length()-1); frost13 = (String.valueOf(10 - Integer.valueOf(frost13))).substring((String.valueOf(10 - Integer.valueOf(frost13))).length()-1); janCode.add(janCodeMark.substring(1, 13) + frost12); janCode.add(janCodeMark.substring(0, 13) + frost12); janCode.add(janCodeMark.substring(1, 13) + frost13); janCode.add(janCodeMark.substring(0, 13) + frost13); alljanCodeList.addAll(janCode); Map janCodeMap = new Map(); janCodeMap.put(janCodeMark.substring(1, 13) + frost12,barCodeList[i]); janCodeMap.put(janCodeMark.substring(0, 13) + frost12,barCodeList[i]); janCodeMap.put(janCodeMark.substring(1, 13) + frost13,barCodeList[i]); janCodeMap.put(janCodeMark.substring(0, 13) + frost13,barCodeList[i]); barJancodeMap.put(barCodeList[i], janCodeMap); barcodeinfoMap.put(barCodeList[i], barcodedetList); barCode01List.add(barCodeList[i]); }else if(barCodeList[i].substring(0,3) =='241'){ if(barCodeList[i].length() > 8 && barCodeList[i].substring(barCodeList[i].length() - 8,barCodeList[i].length()-5)!='250'){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + barCodeList[i] + ')没有管理编码!')); continue; } List otCodeList = new List(); Map otCodeMap = new Map(); if(barCodeList[i].length() < 7){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')的位数不足16,不符合要求错误!')); continue; }else if(barCodeList[i].length() == 11){ String otCode4 = barCodeList[i].substring(3,7); String otCode5 = barCodeList[i].substring(3,8); String otCode6 = barCodeList[i].substring(3,9); String otCode7 = barCodeList[i].substring(3,10); String otCode8 = barCodeList[i].substring(3,11); otCodeList.add(otCode4); otCodeList.add(otCode5); otCodeList.add(otCode6); otCodeList.add(otCode7); otCodeList.add(otCode8); otCodeMap.put(otCode4,barCodeList[i]); otCodeMap.put(otCode5,barCodeList[i]); otCodeMap.put(otCode6,barCodeList[i]); otCodeMap.put(otCode7,barCodeList[i]); otCodeMap.put(otCode8,barCodeList[i]); }else if(barCodeList[i].length() >= 12){ String otCode4 = barCodeList[i].substring(3,7); String otCode5 = barCodeList[i].substring(3,8); String otCode6 = barCodeList[i].substring(3,9); String otCode7 = barCodeList[i].substring(3,10); String otCode8 = barCodeList[i].substring(3,11); String otCode9 = barCodeList[i].substring(3,12); otCodeList.add(otCode4); otCodeList.add(otCode5); otCodeList.add(otCode6); otCodeList.add(otCode7); otCodeList.add(otCode8); otCodeList.add(otCode9); otCodeMap.put(otCode4,barCodeList[i]); otCodeMap.put(otCode5,barCodeList[i]); otCodeMap.put(otCode6,barCodeList[i]); otCodeMap.put(otCode7,barCodeList[i]); otCodeMap.put(otCode8,barCodeList[i]); otCodeMap.put(otCode9,barCodeList[i]); } allotCodeList.addAll(otCodeList); barOtcodeMap.put(barCodeList[i], otCodeMap); barCode241List.add(barCodeList[i]); }else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + barCodeList[i] + ')没有janCode或OTcode,不符合要求!')); continue; } } //01通过检索产品是否存在 Map rightBar = new Map(); if(alljanCodeList.size() > 0){ Map exitBarCodeMap = new Map(); List product2InStore = [SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,OT_CODE__c,Product2_Jancode__c, Pro2_Dealer_ENG__c,Pro2_Dealer_Object__c, Product_Type__c FROM Product2__c WHERE Product2_Jancode__c in :alljanCodeList AND (not Product_Type__c like :userPro_Typestr) order by SFDA_Expiration_Date__c desc ] ; if(product2InStore.size() > 0){ Map errorMap = new Map(); for(Product2__c produ: product2InStore){ for(String bar: barJancodeMap.keySet() ){ if(barJancodeMap.get(bar).containsKey(produ.Product2_Jancode__c) && !rightBar.containsKey(bar)){ exitBarCodeMap.put(bar,bar); errorMap.put(bar, bar); } } } if(errorMap.size() > 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCode号['+ errorMap.values() +']产品类型['+product_Type+']与用户的类型['+userPro_Type+']不符')); } } product2InStore = [SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,OT_CODE__c,Product2_Jancode__c, Pro2_Dealer_ENG__c,Pro2_Dealer_Object__c, Product_Type__c FROM Product2__c WHERE Product2_Jancode__c in :alljanCodeList AND Product_Type__c like :userPro_Typestr order by SFDA_Expiration_Date__c desc ] ; if(product2InStore.size() > 0){ Map errorMap = new Map(); for(Product2__c produ: product2InStore){ for(String bar: barJancodeMap.keySet() ){ if(barJancodeMap.get(bar).containsKey(produ.Product2_Jancode__c) && !rightBar.containsKey(bar)){ exitBarCodeMap.put(bar,bar); if(orderdetailMap.containsKey(produ.Id)){ consumableInventory.add(new ConsumableorderdetailsInfo(produ,barcodeinfoMap.get(bar))); rightBar.put(bar, bar); }else{ consumableInventory.add(new ConsumableorderdetailsInfo(produ,barcodeinfoMap.get(bar))); rightBar.put(bar, bar); list overOrderBARcodeCunList = new list(); if(notEqualBARcodeCunMap.containsKey(produ.Id)){ overOrderBARcodeCunList = notEqualBARcodeCunMap.get(produ.Id).clone(); overOrderBARcodeCunList.add(bar); notEqualBARcodeCunMap.put(produ.Id,overOrderBARcodeCunList); }else{ overOrderBARcodeCunList.add(bar); notEqualBARcodeCunMap.put(produ.Id,overOrderBARcodeCunList); } } } } } } for(String bartxt :barCode01List){ if(!exitBarCodeMap.containsKey(bartxt)){ notInStorelist.add(bartxt); } } } //241通过检索产品是否存在 if(allotCodeList.size() > 0){ Map exitBarCodeMap = new Map(); Map errorMap = new Map(); List product2InStore = [SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,OT_CODE__c, Pro2_Dealer_Object__c,Pro2_Dealer_ENG__c FROM Product2__c WHERE OT_CODE__c in :allotCodeList AND (not Product_Type__c like :userPro_Typestr)] ; if(product2InStore.size() > 0){ for(Product2__c produ: product2InStore){ for(String bar: barOtcodeMap.keySet() ){ if(barOtcodeMap.get(bar).containsKey(produ.OT_CODE__c)){ exitBarCodeMap.put(bar,bar); errorMap.put(bar, bar); } } } } if(errorMap.size() > 0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCode号['+ errorMap.values() +']产品类型['+product_Type+']与用户['+userPro_Type+']类型不符')); } product2InStore = [SELECT Id, Name,Name__c,Intra_Trade_List_RMB__c,Asset_Model_No__c,OT_CODE__c, Pro2_Dealer_Object__c,Pro2_Dealer_ENG__c FROM Product2__c WHERE OT_CODE__c in :allotCodeList AND Product_Type__c like :userPro_Typestr] ; if(product2InStore.size() > 0){ for(Product2__c produ: product2InStore){ for(String bar: barOtcodeMap.keySet() ){ Date expirationDate = null ; String serialNoorLotNo = ''; String tracingCode = ''; String productDateStr = ''; Date productionDate = null ; String expirationDateStr = ''; Integer oTcodeLength = produ.OT_CODE__c.length(); if(bar.length() >= oTcodeLength + 11){ if( bar.substring(oTcodeLength + 3,oTcodeLength + 5) =='11'){ try{ productDateStr = '20' + bar.substring(oTcodeLength + 5,oTcodeLength + 7) + '-' + bar.substring(oTcodeLength + 7,oTcodeLength + 9) + '-01' ; productionDate = Date.valueOf(productDateStr); }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '产品BarCode(' + bar + ')的生产日期' + productDateStr + '错误!')); continue; } if(bar.length() >=oTcodeLength + 3 + 16){ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode17' + bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10))); if( bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10) =='17'){ try{ if(bar.substring(oTcodeLength + 3 + 14,oTcodeLength + 3 + 16)=='00'){ expirationDateStr = '20' + bar.substring(oTcodeLength + 3 + 10,oTcodeLength + 3 + 12) + '-' + bar.substring(oTcodeLength + 3 + 12,oTcodeLength + 3 + 14) + '-' + '01' ; expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1); }else{ expirationDateStr = '20' + bar.substring(oTcodeLength + 3 + 10,oTcodeLength + 3 + 12) + '-' + bar.substring(oTcodeLength + 3 + 12,oTcodeLength + 3 + 14) + '-' +bar.substring(oTcodeLength + 3 + 14,oTcodeLength + 3 + 16) ; expirationDate = Date.valueOf(expirationDateStr); } }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!')); continue; } if(bar.length() >= oTcodeLength + 3 + 25){ if(bar.substring(oTcodeLength + 3 + 16,oTcodeLength + 3 + 18) =='10' || bar.substring(oTcodeLength + 3 + 16,oTcodeLength + 3 + 18) =='21'){ serialNoorLotNo = bar.substring(oTcodeLength + 3 + 18,bar.length() - 8) ; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'serialNoorLotNo' + serialNoorLotNo)); } } }else if(bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10) =='10' || bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10) =='21'){ serialNoorLotNo = bar.substring(oTcodeLength + 3 + 10,bar.length() - 8) ; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'serialNoorLotNo' + serialNoorLotNo)); } } }else if(bar.substring(oTcodeLength + 3,oTcodeLength + 5) =='17'){ try{ if(bar.substring(oTcodeLength + 3 + 6,oTcodeLength + 3 + 8)=='00'){ expirationDateStr = '20' + bar.substring(oTcodeLength + 3 + 2,oTcodeLength + 3 + 4) + '-' + bar.substring(oTcodeLength + 3 + 4,oTcodeLength + 3 + 6) + '-01'; expirationDate = Date.valueOf(expirationDateStr); expirationDate = expirationDate.addMonths(1).toStartofMonth().addDays(-1); }else{ expirationDateStr = '20' + bar.substring(oTcodeLength + 3 + 2,oTcodeLength + 3 + 4) + '-' + bar.substring(oTcodeLength + 3 + 4,oTcodeLength + 3 + 6) + '-' +bar.substring(oTcodeLength + 3 + 6,oTcodeLength + 3 + 8); expirationDate = Date.valueOf(expirationDateStr); } }catch(Exception e){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + bar + ')的滅菌有効期限' + expirationDateStr + '错误!')); continue; } if(bar.length() >=oTcodeLength + 20){ if(bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10) =='10' || bar.substring(oTcodeLength + 3 + 8,oTcodeLength + 3 + 10) =='21'){ serialNoorLotNo = bar.substring(oTcodeLength + 3 + 10,bar.length() - 8) ; } } }else if(bar.length() >= oTcodeLength + 12){ if(bar.substring(oTcodeLength + 3,oTcodeLength + 5) =='10' || bar.substring(oTcodeLength + 3,oTcodeLength + 5) =='21'){ serialNoorLotNo = bar.substring(oTcodeLength + 3 + 2,bar.length() - 8) ; } } } if(bar.length() >= oTcodeLength + 3 + 8 && bar.substring(bar.length() - 8,bar.length()-5)=='250'){ if(bar.substring(bar.length() - 8,bar.length()-5)=='250'){ tracingCode = bar.substring(bar.length() - 5,bar.length()); Matcher n = Pattern.compile('[0-9]').matcher(tracingCode); if(n.find()){ // gzw DB202305352696 入库管理编码验证程序调整 start if (tracingCode.length() == 5) { String tr = tracingCode; String Ctr = tr.substring(tr.length() - 3,tr.length()); String Btr = tr.substring(tr.length() - 4,tr.length()-3); String Atr = tr.substring(tr.length() - 5,tr.length()-4); if (Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find()) { String str = '管理编码有误,请检查条形码数据。'; ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + bar + ')管理编码有误,请检查条形码数据。')); continue; } } // String str = '管理编码不正确,请与管理员确认是否错误。'; // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + bar + ')管理编码中有数字,请与管理员确认是否错误!')); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } }else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'产品BarCode(' + bar + ')的tracingCode错误!')); continue; } } List barcodedetList = new List(); barcodedetList.add(bar); barcodedetList.add(String.valueOf(expirationDate)); barcodedetList.add(serialNoorLotNo); barcodedetList.add(tracingCode); if(barOtcodeMap.get(bar).containsKey(produ.OT_CODE__c)){ exitBarCodeMap.put(bar,bar); if(orderdetailMap.containsKey(produ.Id)){ consumableInventory.add(new ConsumableorderdetailsInfo(produ,barcodedetList)); }else{ consumableInventory.add(new ConsumableorderdetailsInfo(produ,barcodedetList)); list overOrderBARcodeCunList = new list(); if(notEqualBARcodeCunMap.containsKey(produ.Id)){ overOrderBARcodeCunList = notEqualBARcodeCunMap.get(produ.Id).clone(); overOrderBARcodeCunList.add(bar); notEqualBARcodeCunMap.put(produ.Id,overOrderBARcodeCunList); }else{ overOrderBARcodeCunList.add(bar); notEqualBARcodeCunMap.put(produ.Id,overOrderBARcodeCunList); } } } } } } for(String bartxt :barCode241List){ if(!exitBarCodeMap.containsKey(bartxt)){ if(!errorMap.containsKey(bartxt)){ notInStorelist.add(bartxt); } } } } //判断产品是否一致 if(notEqualBARcodeCunMap.size() > 0){ for(String widget : notEqualBARcodeCunMap.keySet()) { if(notEqualBARcodeCunMap.get(widget).size() >0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '以下barcode产品与订货产品不一致。')); for(String barcodeListTTT : (List)notEqualBARcodeCunMap.get(widget)) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, barcodeListTTT)); } } } } } public String ConfimResult() { list overOrderproList = new list(); list overOrderBARcodeCunList = new list(); list overOrderBARcodeCunListTest = new list(); //overOrderBARcodeCunMap.clear(); for (ConsumableorderdetailsInfo ass : ConsumableorderdetailsRecords) { if(orderWantArriveCunMap.get(ass.esd.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.esd.Asset_Model_No__c) > orderProductCunMap.get(ass.esd.Asset_Model_No__c)-1){ // 获取超过定货数量的消耗品信息 overOrderBARcodeCunList = new list(); overOrderBARcodeCunList = overOrderBARcodeCunMap.get(ass.esd.Asset_Model_No__c).clone(); overOrderBARcodeCunList.add(ass.esd.Bar_Code__c); overOrderBARcodeCunMap.put(ass.esd.Asset_Model_No__c,overOrderBARcodeCunList); overOrderCunMap.put(ass.esd.Asset_Model_No__c,overOrderCunMap.get(ass.esd.Asset_Model_No__c)+1); cancellationProList.add(ass.esd.Asset_Model_No__c); }else if(orderWantArriveCunMap.get(ass.esd.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.esd.Asset_Model_No__c) == orderProductCunMap.get(ass.esd.Asset_Model_No__c)-1){ consumableorderdetailsRecordsUse.add(ass); cancellationProList.add(ass.esd.Asset_Model_No__c); }else{ consumableorderdetailsRecordsUse.add(ass); } orderWantArriveCunMap.put(ass.esd.Asset_Model_No__c,orderWantArriveCunMap.get(ass.esd.Asset_Model_No__c)+1); } for(ConsumableorderdetailsInfo ass : consumableInventory){ if (!orderWantArriveCunMap.containsKey(ass.Prod.Asset_Model_No__c)) { consumableInventoryUse.add(ass); continue; } if(orderWantArriveCunMap.get(ass.Prod.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.Prod.Asset_Model_No__c) > orderProductCunMap.get(ass.Prod.Asset_Model_No__c)-1){ //取得原有list overOrderBARcodeCunList = new list(); overOrderBARcodeCunList = overOrderBARcodeCunMap.get(ass.Prod.Asset_Model_No__c).clone(); //更新list overOrderBARcodeCunList.add(ass.barCodeNo); //更新map overOrderBARcodeCunMap.put(ass.Prod.Asset_Model_No__c,overOrderBARcodeCunList); overOrderCunMap.put(ass.Prod.Asset_Model_No__c,overOrderCunMap.get(ass.Prod.Asset_Model_No__c)+1); cancellationProList.add(ass.Prod.Asset_Model_No__c); }else if(orderWantArriveCunMap.get(ass.Prod.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.Prod.Asset_Model_No__c) == orderProductCunMap.get(ass.Prod.Asset_Model_No__c)-1){ consumableInventoryUse.add(ass); cancellationProList.add(ass.Prod.Asset_Model_No__c); }else{ consumableInventoryUse.add(ass); } orderWantArriveCunMap.put(ass.Prod.Asset_Model_No__c,orderWantArriveCunMap.get(ass.Prod.Asset_Model_No__c)+1); } for (Integer i = 0; i < productList.size(); i++) { if(overOrderBARcodeCunMap.get(productList[i]).size() > 0){ // 获取超过定货数量的消耗品信息 overOrderproList.add(productList[i]); } } if(overOrderproList.size() > 0){ return '产品' + overOrderproList + '本次到货数量和已到货数量已经超过订货数量!'; }else{ return ''; } } public void confimResultWithoutOrder() { /*list overOrderproList = new list(); list overOrderBARcodeCunList = new list(); orderProductCunMap.clear(); orderProductArrivedCunMap.clear(); orderWantArriveCunMap.clear(); //所有产品数量 List mx1 = [SELECT Asset_Model_No__c, Consumable_order__c, Consumable_count__c, Consumable_Product__r.Name FROM Consumable_Orderdetails__c WHERE Consumable_order__c in :orderId AND Consumable_Product__r.Name in : prodName AND Consumable_order__r.Dealer_Info__c = :accountid]; for (Integer i = 0; i < mx1.size(); i++) { orderProductCunMap.put(mx1[i].Consumable_order__c + mx1[i].Asset_Model_No__c,mx1[i].Consumable_count__c); orderProductArrivedCunMap.put(mx1[i].Consumable_order__c + mx1[i].Asset_Model_No__c,0); orderWantArriveCunMap.put(mx1[i].Consumable_order__c + mx1[i].Asset_Model_No__c,0); } //已到货产品数量 List mx2 = [SELECT Asset_Model_No__c, Consumable_count__c, Consumable_order_minor__c, Consumable_Product__r.Name FROM Consumable_order_details2__c WHERE recordtypeid = :System.Label.RT_ConOrderDetail2_Delivery AND Consumable_order_minor__c in :orderId AND Consumable_Product__r.Name in : prodName AND Dealer_Info_text__c = :accountName AND Dealer_Arrive__c = true]; for (Integer i = 0; i < mx2.size(); i++) { if(orderProductArrivedCunMap.containsKey(mx2[i].Consumable_order_minor__c + mx2[i].Asset_Model_No__c)){ orderProductArrivedCunMap.put(mx2[i].Consumable_order_minor__c + mx2[i].Asset_Model_No__c,orderProductArrivedCunMap.get(mx2[i].Consumable_order_minor__c + mx2[i].Asset_Model_No__c)+1); } }*/ //要到货产品数量 for (ConsumableorderdetailsInfo ass : ConsumableorderdetailsRecords) { /*if(orderWantArriveCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c) > orderProductCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c)-1){ // 获取超过定货数量的消耗品信息 overOrderproList.add('产品' + ass.esd.Asset_Model_No__c + '在订单' + ass.esd.Consumable_order_minor__r.Name + '中超过订货数量!\n'); overOrderBARcodeCunList = new list(); overOrderBARcodeCunList = overOrderBARcodeCunMap.get(ass.esd.Asset_Model_No__c).clone(); overOrderBARcodeCunList.add(ass.esd.Bar_Code__c); overOrderBARcodeCunMap.put(ass.esd.Asset_Model_No__c,overOrderBARcodeCunList); }else if(orderWantArriveCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c) + orderProductArrivedCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c) == orderProductCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c)-1){ consumableorderdetailsRecordsUse.add(ass); orderWantArriveCunMap.put(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c,orderWantArriveCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c)+1); }else{*/ consumableorderdetailsRecordsUse.add(ass); } /*orderWantArriveCunMap.put(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c,orderWantArriveCunMap.get(ass.esd.Consumable_order_minor__c + ass.esd.Asset_Model_No__c)+1); } return overOrderproList;*/ } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // 虚拟盘点单消耗品明细1创建巡回 public void addInventoryDetails1(List addList){ Map> accountGroupMap = new Map>(); Map> productMap = new Map> (); List orderIdList = new List (); // 以经销商名将要生成出库单的数据分组 for (Consumable_order_details2__c cod : addList) { List accGroupList = new List (); Map pNumMap = new Map (); Integer num = 1; if (accountGroupMap.containsKey(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c)) { accGroupList = accountGroupMap.get(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c); pNumMap = productMap.get(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c); if (pNumMap.containsKey(cod.Consumable_Product__c)) { num = pNumMap.get(cod.Consumable_Product__c) + 1; } } orderIdList.add(cod.Consumable_Inventory_order__c); pNumMap.put(cod.Consumable_Product__c, num); accGroupList.add(cod); productMap.put(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c, pNumMap); accountGroupMap.put(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c, accGroupList); System.debug('======accGroupList'+accGroupList); } System.debug('======accountGroupMap'+accountGroupMap); List orderList = [select Id, Name, Dealer_Info__r.Name, Order_Owner_WorkLocal__c from Consumable_order__c where id in : orderIdList]; // 生成各经销商出库订单List // List orderList = new List (); Map> insDetail1Map = new Map>(); for (String acc : accountGroupMap.keySet()) { Consumable_order_details2__c arriveAccount = accountGroupMap.get(acc)[0]; List prodPriceList = accountGroupMap.get(acc); Map pNumMap = new Map (); pNumMap = productMap.get(acc); List insDetail1 = New List(); for (Id id : pNumMap.keySet()) { Consumable_orderdetails__c ins = new Consumable_orderdetails__c(); //InsAfterDel.Consumable_order__c = p.id; ins.Product_Refind__c = pNumMap.get(id); ins.inventory_sum__c = pNumMap.get(id); ins.Consumable_Product__c = id; for (Consumable_order_details2__c pri : prodPriceList) { if (pri.Consumable_Product__c == id) { ins.Intra_Trade_List_RMB__c =pri.Intra_Trade_List_RMB__c; break; } } ins.Box_Piece__c = '盒'; ins.Out_unit__c = '盒'; //ins.Delivery_List_RMB__c = ass.orderdetails1.Delivery_List_RMB__c; //ins.Unitprice_To_agency__c = ass.orderdetails1.Unitprice_To_agency__c; //ins.Dealer_Custom_Price__c = ass.orderdetails1.Dealer_Custom_Price__c; ins.RecordTypeId = System.Label.RT_ConOrderDetail1_Inventory; ins.Used_date__c = Date.today(); ins.OwnerId = arriveAccount.OwnerId; insDetail1.add(ins); } System.debug('======insDetail1'+insDetail1); insDetail1Map.put(acc, insDetail1); System.debug('======insDetail1Map'+insDetail1Map); } List insDetail1List = new List (); for (Consumable_order__c setId : orderList) { // 明细1 List d1list = insDetail1Map.get(setId.Dealer_Info__r.Name + setId.Order_Owner_WorkLocal__c); Integer i = 1; for (Consumable_orderdetails__c dtl1 : d1list) { String str = ('000' + i).right(4); dtl1.Consumable_order__c = setId.Id; dtl1.Name = setId.Name + '-'+ str; insDetail1List.add(dtl1); } } System.debug('======insDetail1List'+insDetail1List); insert insDetail1List; } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end // 经销商的不同工作地调货自动生成出库单 public void addSaleOrderAuto (List addList) { Map> accountGroupMap = new Map>(); Map> productMap = new Map> (); // 以经销商名将要生成出库单的数据分组 for (Consumable_order_details2__c cod : addList) { List accGroupList = new List (); Map pNumMap = new Map (); Integer num = 1; if (accountGroupMap.containsKey(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c)) { accGroupList = accountGroupMap.get(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c); pNumMap = productMap.get(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c); if (pNumMap.containsKey(cod.Consumable_Product__c)) { num = pNumMap.get(cod.Consumable_Product__c) + 1; } } pNumMap.put(cod.Consumable_Product__c, num); accGroupList.add(cod); productMap.put(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c, pNumMap); accountGroupMap.put(cod.Dealer_Info_text__c + cod.Arrive_Owner_Work_Location__c, accGroupList); } // 生成各经销商出库订单List List orderList = new List (); Map> insDetail1Map = new Map>(); for (String acc : accountGroupMap.keySet()) { Consumable_order_details2__c arriveAccount = accountGroupMap.get(acc)[0]; Consumable_order__c autoOrder = new Consumable_order__c(); autoOrder.Name = '*'; autoOrder.Dealer_Info__c = arriveAccount.Consumable_Arrived_order__r.Dealer_Info__c; autoOrder.OwnerId = arriveAccount.OwnerId; autoOrder.Order_type__c = '传票'; autoOrder.SummonsStatus_c__c = '已完成'; autoOrder.Order_ForDealerText__c = accountName; autoOrder.SummonsForDirction__c = '互相调货'; autoOrder.RecordTypeid = System.Label.RT_ConOrder_Shipment; autoOrder.Outbound_Date__c = Date.today(); autoOrder.Order_date__c = Date.today(); autoOrder.AutoShipment__c = TRUE; orderList.add(autoOrder); List prodPriceList = accountGroupMap.get(acc); Map pNumMap = new Map (); pNumMap = productMap.get(acc); List insDetail1 = New List(); for (Id id : pNumMap.keySet()) { Consumable_orderdetails__c ins = new Consumable_orderdetails__c(); //InsAfterDel.Consumable_order__c = p.id; ins.Shipment_Count__c = pNumMap.get(id); ins.Consumable_Product__c = id; for (Consumable_order_details2__c pri : prodPriceList) { if (pri.Consumable_Product__c == id) { ins.Intra_Trade_List_RMB__c =pri.Intra_Trade_List_RMB__c; break; } } ins.Box_Piece__c = '盒'; ins.Out_unit__c = '盒'; //ins.Delivery_List_RMB__c = ass.orderdetails1.Delivery_List_RMB__c; //ins.Unitprice_To_agency__c = ass.orderdetails1.Unitprice_To_agency__c; //ins.Dealer_Custom_Price__c = ass.orderdetails1.Dealer_Custom_Price__c; ins.RecordTypeId = System.Label.RT_ConOrderDetail1_Shipment; ins.Used_date__c = Date.today(); ins.OwnerId = arriveAccount.OwnerId; insDetail1.add(ins); } insDetail1Map.put(acc, insDetail1); } insert orderList; List orderIdList = new List (); for (Consumable_order__c co : orderList) { orderIdList.add(co.Id); } orderList = new List (); orderList = [select Id, Name, Dealer_Info__r.Name, Order_Owner_WorkLocal__c from Consumable_order__c where id in : orderIdList]; // 设置明细1 和 明细2 的 订单ID List insDetail1List = new List (); List updDetail2List = new List (); for (Consumable_order__c setId : orderList) { // 明细1 List d1list = insDetail1Map.get(setId.Dealer_Info__r.Name + setId.Order_Owner_WorkLocal__c); Integer i = 1; for (Consumable_orderdetails__c dtl1 : d1list) { String str = ('000' + i).right(4); // if(str.length() == 1){ // str = '0' + str; // } dtl1.Consumable_order__c = setId.Id; dtl1.Name = setId.Name + '-'+ str; insDetail1List.add(dtl1); } // 明细2 List d2list = accountGroupMap.get(setId.Dealer_Info__r.Name + setId.Order_Owner_WorkLocal__c); for (Consumable_order_details2__c dtl2 : d2list) { dtl2.Send_Date__c = Date.today(); dtl2.Consumable_Sale_order__c = null; dtl2.Consumable_Return_order__c = null; dtl2.Consumable_ZS_order__c = setId.Id; //dtl2.Delivery_List_RMB__c = null; dtl2.Return_date__c = null; dtl2.Return_reason__c = null; dtl2.Consumable_Shipment_order__c = setId.Id; // 更新借调信息 add by gzw 2020-0-415 start dtl2.Transfer_Time__c = 1; dtl2.Agency_Transfer__c = true; dtl2.Frist_Transfer_Agency__c = dtl2.Dealer_Info_text__c; // 更新借调信息 add by gzw 2020-0-415 end updDetail2List.add(dtl2); } } insert insDetail1List; update updDetail2List; } //到货确认 public PageReference ArriveGoodsConfim() { //add by rentx 20210618 start CHAN-C3K4ZQ 跳过不必要的查询 StaticParameter.ConsumableOrderTrigger = true; //add by rentx 20210618 end CHAN-C3K4ZQ 跳过不必要的查询 cancellationProList = new List(); List ins = New List(); String resultcheck = ''; List resultcheckWithoutOrder = new List(); Savepoint sp = Database.setSavepoint(); if(ConsumableorderdetailsRecords.size()<1 && consumableInventory.size()<1){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'不存在到货明细')); return null; } if(EsetId != null && EsetId != ''){ resultcheck = ConfimResult(); if(resultcheck.length() > 0){ for(String widget : overOrderBARcodeCunMap.keySet()) { if(overOrderBARcodeCunMap.get(widget).size() >0){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, '产品' + widget + '本次到货数量超过' + overOrderBARcodeCunMap.get(widget).size() +'个订货的数量。')); for(String barcodeListTTT : (List)overOrderBARcodeCunMap.get(widget)) { ApexPages.addmessage(new ApexPages.message(ApexPages.severity.INFO, barcodeListTTT)); } } } } }else{ confimResultWithoutOrder(); } try{ Consumable_order__c orderMain = new Consumable_order__c(); List orderdetails = New List(); //到货正确信息 orderMain.Name = '*'; orderMain.Order_status__c = '批准'; orderMain.Dealer_Info__c = accountid; orderMain.Deliver_date__c = Date.today(); orderMain.Order_date__c = Date.today(); orderMain.Order_type__c = '到货'; orderMain.Order_ProType__c = userPro_Type; if(EsetId != null && EsetId != ''){ orderMain.Arrive_Order__c = coc.Id; } orderMain.RecordTypeid = System.Label.RT_ConOrder_Arrive; insert orderMain; List consumable_order = [SELECT Name FROM Consumable_order__c WHERE id =:orderMain.id]; arriveId = orderMain.id; Decimal arriveAmount =0; for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecordsUse) { Consumable_order_details2__c insDetails = new Consumable_order_details2__c(); insDetails.Id = ass.esd.Id; insDetails.Consumable_Arrived_order__c = orderMain.id; insDetails.Arrive_date__c = Date.today(); insDetails.Bar_Code__c = ass.esd.Bar_Code__c; insDetails.OwnerId = UserInfo.getUserId(); // 更新借调信息 add by gzw 2020-0-415 start if (orderdetails2trMap.containsKey(ass.esd.Bar_Code__c)) { insDetails.Transfer_Time__c = ass.esd.Transfer_Time__c == null ? 1 : ass.esd.Transfer_Time__c; insDetails.Agency_Transfer__c = true; insDetails.Frist_Transfer_Agency__c = ass.esd.Frist_Transfer_Agency__c == null ? ass.esd.Dealer_Info_text__c : ass.esd.Frist_Transfer_Agency__c; } // 更新借调信息 add by gzw 2020-0-415 end // 追加首次入库经销商 add by gzw 2020-04-27 start insDetails.Agencyinfo_fromSAP__c = ass.esd.Agencyinfo_fromSAP__c; insDetails.Frist_Storage_Agency__c = ass.esd.Frist_Storage_Agency__c == null ? ass.esd.Dealer_Info_text__c : ass.esd.Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end arriveAmount += ass.esd.Intra_Trade_List_RMB__c; orderdetails.add(insDetails); } Integer i = 1; for(ConsumableorderdetailsInfo ass : consumableInventoryUse){ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------2------')); Consumable_order_details2__c insAfterDel = new Consumable_order_details2__c(); String str = ('000' + i).right(4); // if(str.length() == 1){ // str = '0' + str; // } insAfterDel.Name = consumable_order[0].Name + '-'+ str; insAfterDel.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery; // gzw 手动入库 默认产品单价 20230307 // if(EsetId != null && EsetId != ''){ // insAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c; // }else{ // insAfterDel.Intra_Trade_List_RMB__c = 0; // } insAfterDel.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c; //gzw 手动入库 默认产品单价 20230307 insAfterDel.Asset_Model_No__c = ass.Prod.Asset_Model_No__c; if(EsetId != null && EsetId != ''){ insAfterDel.Consumable_order_minor__c = ESetId; } insAfterDel.Deliver_date__c = Date.today(); insAfterDel.Direct_Arrive_Product__c = true; //TODO待确认 insAfterDel.Sterilization_limit__c = ass.sterilizationlimitDate; insAfterDel.Consumable_Product__c = ass.Prod.id; insAfterDel.Bar_Code__c = ass.barCodeNo; insAfterDel.Used_account__c = accountid; //TODO待确认 insAfterDel.SerialLotNo__c = ass.serialNoorLotNo; insAfterDel.TracingCode__c = ass.tracingCodeNo; //insAfterDel.Dealer_Arrive__c = true; insAfterDel.Consumable_Arrived_order__c = orderMain.id; insAfterDel.Arrive_date__c = Date.today(); insAfterDel.OwnerId = UserInfo.getUserId(); // 更新借调信息 add by gzw 2020-0-415 start if (orderdetails2trMap.containsKey(ass.esd.Bar_Code__c)) { insAfterDel.Transfer_Time__c = ass.esd.Transfer_Time__c == null ? 1 : ass.esd.Transfer_Time__c; insAfterDel.Agency_Transfer__c = true; insAfterDel.Frist_Transfer_Agency__c = ass.esd.Frist_Transfer_Agency__c == null ? accountName : ass.esd.Frist_Transfer_Agency__c; } // 更新借调信息 add by gzw 2020-0-415 end // 追加首次入库经销商 add by gzw 2020-04-27 start insAfterDel.Agencyinfo_fromSAP__c = ass.esd.Agencyinfo_fromSAP__c; insAfterDel.Frist_Storage_Agency__c = ass.esd.Frist_Storage_Agency__c == null ? accountName : ass.esd.Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end arriveAmount += insAfterDel.Intra_Trade_List_RMB__c; //add by rentx 2020-10-14 strat //insAfterDel.ContractNo_text__c = /*ass.esd.ContractNo__c*/; // tcm start if (String.isBlank(ass.esd.Consumable_order_minor__r.ContractNo__c)) { insAfterDel.ContractNo_text__c= ass.esd.ContractNo_text__c; }else { insAfterDel.ContractNo_text__c= ass.esd.Consumable_order_minor__r.ContractNo__c; } // tcm end //add by rentx 2020-10-14 end i++; ins.add(insAfterDel); } orderMain.Arrive_total_amount__c = arriveAmount; update orderMain; List updateconsumableorderdetails2 = new List(); //更新明细取消时间 => 未到货取消,到货自动生成出库流程 List addSaleOrderList = new List (); for(Consumable_order_details2__c Cod : consumableorderdetails2Cancle){ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------3------')); if (Cod.Dealer_Arrive__c) { if (Cod.Dealer_Shipment__c == FALSE && Cod.Dealer_Saled__c == FALSE) { addSaleOrderList.add(Cod); } } else { Cod.Cancellation_Date__c = Date.today(); Cod.Cancellation_Flag__c = true; updateconsumableorderdetails2.add(Cod); } } if (addSaleOrderList.size() > 0) { addSaleOrderAuto(addSaleOrderList); } if(updateconsumableorderdetails2.size() > 0){ update updateconsumableorderdetails2; } List insertconsumableorderdetails2 = new List(); for(Consumable_order_details2__c Cod2 : consumableorderdetails2Insert){ //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------4------')); String str = ('000' + i).right(4); // if(str.length() == 1){ // str = '0' + str; // } Cod2.Name = consumable_order[0].Name + '-'+ str; Cod2.Consumable_order_minor__c = null; Cod2.Deliver_date__c = Date.today(); Cod2.Used_account__c = accountid; Cod2.Consumable_Arrived_order__c = orderMain.id; Cod2.Arrive_date__c = Date.today(); // 更新借调信息 add by gzw 2020-0-415 start if (orderdetails2trMap.containsKey(Cod2.Bar_Code__c)) { //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------4++++++' + Cod2.Frist_Storage_Agency__c)); Cod2.Transfer_Time__c = Cod2.Transfer_Time__c == null ? 1 : Cod2.Transfer_Time__c; Cod2.Agency_Transfer__c = true; Cod2.Frist_Transfer_Agency__c = Cod2.Frist_Transfer_Agency__c == null ? accountName : Cod2.Frist_Transfer_Agency__c; } // 更新借调信息 add by gzw 2020-0-415 end // 追加首次入库经销商 add by gzw 2020-04-27 start Cod2.Agencyinfo_fromSAP__c = Cod2.Agencyinfo_fromSAP__c; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------4------' + Cod2.Frist_Storage_Agency__c)); Cod2.Frist_Storage_Agency__c = Cod2.Frist_Storage_Agency__c == null ? accountName : Cod2.Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end insertconsumableorderdetails2.add(Cod2); i++; } // return null; if(insertconsumableorderdetails2.size() >0){ insert insertconsumableorderdetails2; } if(ins.size()>0){ insert ins; } if(orderdetails.size()>0){ ControllerUtil.updateOrderDetailsSatus(orderdetails); } //超出到货数量产品取消日期更新 List needcanceldet = new List(); if(cancellationProList.size() > 0){ needcanceldet = [SELECT Id, Cancellation_Date__c FROM Consumable_order_details2__c WHERE Asset_Model_No__c in :cancellationProList AND Consumable_order_minor__c = :ESetId AND Dealer_Arrive__c = FALSE AND Cancellation_Date__c = null ]; if(needcanceldet.size() >0){ for(Integer a = 0; a < needcanceldet.size(); a++){ needcanceldet[a].Cancellation_Date__c = Date.today(); needcanceldet[a].Cancellation_Flag__c = true; } ControllerUtil.updateOrderDetailsSatus(needcanceldet); } } List qs = New List(); qs = [SELECT Id,Name,Order_status__c,Dealer_Info__c,Deliver_date__c,ReturnGs_Upload_Date__c, Order_Reason__c,Order_date__c, Contract_application_decision__c,Order_type__c,Total_num__c, OrderNumber_arrived__c,Delivery_detail_count__c,OrderNumber_notarrive__c FROM Consumable_order__c WHERE Id =:ESetId AND Dealer_Info__c = :accountid]; if (qs.size()>0){ coc = qs[0]; } saveFLGbln = true; alertMessage = '到货完成。'; // Integer a = 1/0; }catch(Exception e){ Database.rollback(sp); ApexPages.addMessages(e); return null; } if(resultcheck.length() > 0){ return null; }else if(resultcheckWithoutOrder.size() >0){ return null; } else{ return UnabletoEdit(); // return null; } } // 返品检查,后回库 public integer GoodsReturnCheck(){ List GrListIn = ParseBarCode( barcode ); GrList = new List(); Map CheckBarcodeResult = new Map(); for( String Str : GrListIn ){ CheckBarcodeResult.put( str , 'UnFind'); } List BarcodeRetrunResult = [ SELECT Id,Name,Intra_Trade_List_RMB__c,Asset_Model_No__c, Consumable_Product__c,Consumable_Product__r.Name, Consumable_Product__r.Name__c,Consumable_Product__r.Asset_Model_No__c, Sterilization_limit__c,Deliver_date__c,Bar_Code__c, Arrive_date__c,Send_Date__c,Consumable_order_minor__r.Name, Consumable_order_minor__c,Dealer_Arrive__c, Guarantee_period_for_products__c,CFDA_Status__c, ProductPacking_list_manual__c,Report_Product_Approbation__c, Report_Product_Expiration__c,Box_Piece__c, Rrturn_count__c, Product_Type__c //add by rentx 2020-10-14 start ,ContractNo_text__c/*,ContractNo__c*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end //add by rentx 2020-10-14 end FROM Consumable_order_details2__c WHERE ((Dealer_Arrive__c = true AND( Dealer_Shipment__c = true //AND Consumable_Shipment_order__r.SummonsForDirction__c != '互相调货') or Dealer_Saled__c = true ) )) AND Dealer_Info_text__c = :accountName AND Bar_Code__c in :GrListIn AND ( not Product_Type__c like :userPro_Typestr) AND Dealer_Returned__c = false AND Arrive_Owner_Work_Location__c =: userWorkLocation ORDER BY Box_Piece__c desc,Name ]; if(BarcodeRetrunResult.size()>0){ for (Integer i = 0; i < BarcodeRetrunResult.size(); i++) { if(ErrorIdMap.containsKey(BarcodeRetrunResult[i].Bar_Code__c) || ExistIdMap.containsKey(BarcodeRetrunResult[i].Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ String str = '产品类型['+BarcodeRetrunResult[i].Product_Type__c+']与用户的类型['+userPro_Type+']不符'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(BarcodeRetrunResult[i],str)); ErrorIdMap.put(BarcodeRetrunResult[i].Bar_Code__c,BarcodeRetrunResult[i].Bar_Code__c); } } } AllMap.putAll(ErrorIdMap); BarcodeRetrunResult = [ SELECT Id, Consumable_order_minor__c, Deliver_date__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Name__c, Name, Bar_Code__c, Arrive_date__c, Dealer_Shipment__c, Lose_Flag__c, Dealer_Saled__c, Return_reason__c, Consumable_Shipment_order__c, Consumable_Shipment_order__r.Name, Send_date__c, Consumable_Sale_order__c, Consumable_Sale_order__r.Name, Used_date__c, SerialLotNo__c, TracingCode__c, Sterilization_limit__c, Consumable_ZS_order__c, Consumable_ZS_order__r.Name, Product_OutDate__c, Invoice_Date__c, recordtypeid, Consumable_Arrived_order__c, Box_Piece__c, Rrturn_count__c, Intra_Trade_List_RMB__c, OwnerId, SummonsForDirction_det__c, Order_Dealer_Info__c, HospItal_Name__c, Agencyinfo_fromSAP__c, Frist_Storage_Agency__c, Dealer_Info_text__c, Used_account__c, Transfer_Time__c, Frist_Transfer_Agency__c, Arrive_Owner_Work_Location__c, Agency_Transfer__c //add by rentx 2020-10-14 start ,ContractNo_text__c/*,ContractNo__c*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end //add by rentx 2020-10-14 end ,Report_Product_Expiration__c ,Intra_Trade_List__c FROM Consumable_order_details2__c WHERE ((Dealer_Arrive__c = true AND( Dealer_Shipment__c = true //AND Consumable_Shipment_order__r.SummonsForDirction__c != '互相调货') or Dealer_Saled__c = true // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start or (Dealer_Shipment__c = false and Dealer_Saled__c = false and Lose_Flag__c = true) // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end ) )) AND Dealer_Info_text__c = :accountName AND Bar_Code__c in :GrListIn AND Product_Type__c like :userPro_Typestr AND Dealer_Returned__c = false AND (Arrive_Owner_Work_Location__c =: userWorkLocation OR OwnerId = :System.Label.User_OlympusSystem) ORDER BY Box_Piece__c desc,Name ]; ShowGoodsofReturnList = new List(); //返品时istinct处理 if(ArrType=='ReG'){ BarcodeRetrunResult = getDistinctZSOrder(BarcodeRetrunResult); } for( Consumable_order_details2__c codc : BarcodeRetrunResult ){ if(ErrorIdMap.containsKey(codc.Bar_Code__c) || ExistIdMap.containsKey(codc.Bar_Code__c)){ // 跳过已经处理的消耗品明细 continue; }else{ Matcher n = Pattern.compile('[0-9]').matcher(codc.TracingCode__c); if(n.find()){ // gzw DB202305352696 入库管理编码验证程序调整 start if (codc.TracingCode__c.length() == 5) { String tr = codc.TracingCode__c; String Ctr = tr.substring(tr.length() - 3,tr.length()); String Btr = tr.substring(tr.length() - 4,tr.length()-3); String Atr = tr.substring(tr.length() - 5,tr.length()-4); if (Pattern.compile('[0-9]').matcher(Atr).find() || Pattern.compile('[0-9]').matcher(Ctr).find()) { String str = '管理编码有误,请检查条形码数据。'; ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(codc,str)); ErrorIdMap.put(codc.Bar_Code__c,codc.Bar_Code__c); continue; } } // String str = '管理编码中有数字,请与管理员确认是否错误。'; // ConsumableorderdetailsRecordserror.add(new ConsumableorderdetailsInfo(codc,str)); // ErrorIdMap.put(codc.Bar_Code__c,codc.Bar_Code__c); // continue; // gzw DB202305352696 入库管理编码验证程序调整 end } if( CheckBarcodeResult.containsKey( codc.Bar_Code__c )){ GrList.add(codc.Bar_Code__c); if( codc.Dealer_Shipment__c == true){ CheckBarcodeResult.put( codc.Bar_Code__c, '已出库' ); ShowGoodsofReturnList.add( new ConsumableorderdetailsInfo( codc ) ); } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // else{ // CheckBarcodeResult.put( codc.Bar_Code__c, '已销售'); // ShowGoodsofReturnList.add( new ConsumableorderdetailsInfo( codc ) ); // } else if( codc.Dealer_Saled__c == true ){ CheckBarcodeResult.put( codc.Bar_Code__c, '已销售'); ShowGoodsofReturnList.add( new ConsumableorderdetailsInfo( codc ) ); }else{ CheckBarcodeResult.put( codc.Bar_Code__c, '已丢失'); ShowGoodsofReturnList.add( new ConsumableorderdetailsInfo( codc ) ); } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end }else{ continue; } } } return BarcodeRetrunResult.size(); } // 单位为个的Barcode对应的出库单 public integer Getconsumableorderdetails2Nobox(){ consumableorderdetails2Nobox = new List(); BarcodeCntMap.clear(); consumableorderdetails2Nobox = [ SELECT Id, Consumable_order_minor__c, Deliver_date__c, Asset_Model_No__c, Consumable_Product__c, Consumable_Product__r.Name, Consumable_Product__r.Name__c, Name, Bar_Code__c, Arrive_date__c, Dealer_Shipment__c, Dealer_Saled__c, Return_reason__c, Consumable_Shipment_order__c, Send_date__c, Consumable_Sale_order__c, Used_date__c, SerialLotNo__c, TracingCode__c, Sterilization_limit__c, Consumable_ZS_order__c, Consumable_ZS_order__r.Name, Product_OutDate__c, Invoice_Date__c, recordtypeid, Consumable_Arrived_order__c, Box_Piece__c, RemoveBox_No__c, RemoveBox_date__c, Rrturn_count__c, Dealer_Info_text__c, Arrive_Owner_Work_Location__c, Intra_Trade_List_RMB__c //add by rentx 2020-10-13 start 返品时 新数据记录SAP合同号 ,ContractNo_text__c/*,ContractNo__c*/ // tcm start ,Consumable_order_minor__r.ContractNo__c // tcm end ,Report_Product_Expiration__c //add by rentx 2020-10-13 end ,Intra_Trade_List__c //gzw 手动入库 默认产品单价 20230307 FROM Consumable_order_details2__c WHERE // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // (Dealer_Shipment__c = true or Dealer_Saled__c = true) (Dealer_Shipment__c = true or Dealer_Saled__c = true or (Dealer_Shipment__c = false and Dealer_Saled__c = false and Lose_Flag__c = true)) // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end AND Dealer_Info_text__c = :accountName AND Bar_Code__c in :noboxBarcodeList AND Arrive_Owner_Work_Location__c =: userWorkLocation AND Dealer_Returned__c = false AND Box_Piece__c = '个' ORDER BY Consumable_ZS_order__c,RemoveBox_No__c]; AggregateResult[] results = [SELECT Consumable_ZS_order__c,Bar_Code__c,count(Id) recordCount FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = true // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // AND (Dealer_Shipment__c= true OR Dealer_Saled__c = true) AND (Dealer_Shipment__c= true OR Dealer_Saled__c = true or(Dealer_Shipment__c = false and Dealer_Saled__c = false and Lose_Flag__c = true)) // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end AND Dealer_Returned__c = false AND Bar_Code__c in :noboxBarcodeList AND Arrive_Owner_Work_Location__c =: userWorkLocation AND Box_Piece__c = '个' AND Dealer_Info_text__c = :accountName GROUP BY Consumable_ZS_order__c,Bar_Code__c]; for(AggregateResult ar: results){ String key = '' + ar.get('Consumable_ZS_order__c') + ar.get('Bar_Code__c'); BarcodeCntMap.put(key, Integer.valueOf(ar.get('recordCount'))); } return consumableorderdetails2Nobox.size(); } //distinct public List getDistinctZSOrder(List duplicates){ List distinctOrder = new List(); for(Consumable_order_details2__c details2 : duplicates){ Boolean found = false; for(Consumable_order_details2__c result : distinctOrder){ if(details2.Consumable_ZS_order__c == result.Consumable_ZS_order__c && details2.Bar_Code__c == result.Bar_Code__c){ found = true; break; } } if(!found){ distinctOrder.add(details2); if(details2.Box_Piece__c == '个') noboxBarcodeList.add(details2.Bar_Code__c); } } return distinctOrder; } // Update返品明细信息 public Pagereference UpdateGoodsOfReturn(){ if( ShowGoodsofReturnList==null){ GoodsReturnCheck(); } Getconsumableorderdetails2Nobox(); Savepoint sp = Database.setSavepoint(); boolean hasReturnGoods = false; boolean hasLoseGoods = false; try{ if( ShowGoodsofReturnList.size() >0 || consumableInventory.size()>0 ){ Consumable_order__c Return_Order_Sheet = new Consumable_order__c(); Return_Order_Sheet.Name ='*'; Return_Order_Sheet.Order_status__c = '批准'; Return_Order_Sheet.ReturnGs_Uploader_ID__c = UserInfo.getUserId(); Return_Order_Sheet.ReturnGs_Upload_Date__c = Date.today(); Return_Order_Sheet.Order_type__c = '返品'; Return_Order_Sheet.RecordTypeid =System.Label.Dealer_Returned_Label; Return_Order_Sheet.Order_ProType__c = userPro_Type; insert Return_Order_Sheet; return_Order_id = Return_Order_Sheet.id; List consumable_order_ret = [SELECT Name FROM Consumable_order__c WHERE id =:Return_Order_Sheet.id]; //2017-07-03 到货订单 Consumable_order__c Arrived_Order_Sheet = new Consumable_order__c(); Arrived_Order_Sheet.Name ='*'; Arrived_Order_Sheet.Order_status__c = '批准'; Arrived_Order_Sheet.Order_type__c = '到货'; Arrived_Order_Sheet.Dealer_Info__c =accountid; Arrived_Order_Sheet.RecordTypeid =System.Label.RT_ConOrder_Arrive; Arrived_Order_Sheet.Order_ProType__c = userPro_Type; insert Arrived_Order_Sheet; List consumable_order_arr = [SELECT Name FROM Consumable_order__c WHERE id =:Arrived_Order_Sheet.id]; // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // 虚拟盘点单 Consumable_order__c Inventory_Order_Sheet = new Consumable_order__c(); Inventory_Order_Sheet.Name ='*'; Inventory_Order_Sheet.Order_status__c = '批准'; Inventory_Order_Sheet.ReturnGs_Uploader_ID__c = UserInfo.getUserId(); Inventory_Order_Sheet.Inventory_date__c = Date.today(); Inventory_Order_Sheet.Dealer_Info__c =accountid; Inventory_Order_Sheet.ReturnGs_Upload_Date__c = Date.today(); Inventory_Order_Sheet.Order_type__c = '盘点'; Inventory_Order_Sheet.RecordTypeid = System.Label.RT_ConOrder_Inventory; Inventory_Order_Sheet.Order_ProType__c = userPro_Type; insert Inventory_Order_Sheet; inventory_Order_id = Inventory_Order_Sheet.id; List consumable_order_Inv = [SELECT Name FROM Consumable_order__c WHERE id =:Inventory_Order_Sheet.id]; // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end List codcList = new List(); //新规返品对应的产品明细 List codcorderdetList = new List(); //返品原因,返品数量检查 for( ConsumableorderdetailsInfo codi : ShowGoodsofReturnList ){ if (codi.esd.Box_Piece__c =='个' && ( codi.esd.Rrturn_count__c == null || String.valueof(codi.esd.Rrturn_count__c) =='' || codi.esd.Rrturn_count__c <= 0)){ continue; } if(codi.esd.Return_reason__c==null||codi.esd.Return_reason__c==''){ codi.esd.Return_reason__c.addError('请补充返品原因'); return null; } if(codi.esd.Box_Piece__c=='个' && codi.esd.Rrturn_count__c > 0){ String key = '' + codi.esd.Consumable_ZS_order__c + codi.esd.Bar_Code__c; Integer deliverycnt = BarcodeCntMap.get(key); if(codi.esd.Rrturn_count__c > deliverycnt){ codi.esd.Rrturn_count__c.addError('超出出库数量'); return null; } } } Integer tempNo=0; // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start List conOrderDetail2InList = new List(); // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start for( ConsumableorderdetailsInfo codi : ShowGoodsofReturnList ){ Consumable_order_details2__c codcorderdet = new Consumable_order_details2__c(); //单位=个 if (codi.esd.Box_Piece__c =='个' && ( codi.esd.Rrturn_count__c == null || String.valueof(codi.esd.Rrturn_count__c) =='' || codi.esd.Rrturn_count__c <= 0)){ continue; } if(codi.esd.Box_Piece__c=='个' && codi.esd.Rrturn_count__c > 0){ hasReturnGoods = true; Integer cnt = 1; for(Consumable_order_details2__c codctmp : consumableorderdetails2Nobox ){ if(codctmp.Consumable_ZS_order__c == codi.esd.Consumable_ZS_order__c && codctmp.Bar_Code__c == codi.esd.Bar_Code__c){ Consumable_order_details2__c esd = codctmp; // esd.Consumable_Return_order__c = Return_Order_Sheet.id; esd.Return_reason__c = codi.esd.Return_reason__c; esd.Return_date__c = Date.today(); // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // esd.Return_reason__c = codi.esd.Return_reason__c; // esd.Return_date__c = Date.today(); // esd.Consumable_Return_order__c = Return_Order_Sheet.id; if(codi.esd.Dealer_Saled__c == false && codi.esd.Dealer_Shipment__c == false && codi.esd.Lose_Flag__c == true){ // esd.Lose_Flag__c = false; esd.Consumable_Inventory_order__c = Inventory_Order_Sheet.id; conOrderDetail2InList.add(esd); hasLoseGoods = true; } else{ // esd.Return_date__c = Date.today(); esd.Consumable_Return_order__c = Return_Order_Sheet.id; } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end esd.ReturnGs_Uploader_ID__c = UserInfo.getUserId(); //修改返品所有人 esd.OwnerId = UserInfo.getUserId(); esd.RecordTypeId = System.Label.RT_ConOrderDetail2_Return; //Consumable_order__c coc = [select name from Consumable_order__c where Id =:Arrived_Order_Sheet.id]; codcorderdet = new Consumable_order_details2__c(); codcorderdet.Name = consumable_order_arr[0].name + '-' + String.valueOf(++tempNo).leftPad(4,'0'); codcorderdet.Consumable_order_minor__c = codi.esd.Consumable_order_minor__c; codcorderdet.Consumable_Arrived_order__c = Arrived_Order_Sheet.id; //修改到货所有人 codcorderdet.OwnerId = UserInfo.getUserId(); codcorderdet.Arrive_date__c = Date.today(); codcorderdet.Consumable_Product__c = codi.esd.Consumable_Product__c; codcorderdet.Asset_Model_No__c = codi.esd.Asset_Model_No__c; codcorderdet.Bar_Code__c = codi.esd.Bar_Code__c; codcorderdet.Deliver_date__c = codi.esd.Deliver_date__c; codcorderdet.SerialLotNo__c = codi.esd.SerialLotNo__c; codcorderdet.TracingCode__c = codi.esd.TracingCode__c; codcorderdet.Sterilization_limit__c = codi.esd.Sterilization_limit__c; //gzw 手动入库 默认产品单价 20230307 codcorderdet.Intra_Trade_List_RMB__c = (codi.esd.Intra_Trade_List_RMB__c == null || codi.esd.Intra_Trade_List_RMB__c == 0) ? codi.esd.Intra_Trade_List__c : codi.esd.Intra_Trade_List_RMB__c; codcorderdet.RemoveBox_No__c = codctmp.RemoveBox_No__c; codcorderdet.RemoveBox_date__c = codctmp.RemoveBox_date__c; codcorderdet.Box_Piece__c = codctmp.Box_Piece__c; //add by rentx 2020-10-13 start 返品时新数据记录SAP合同号 // codcorderdet.ContractNo_text__c= codctmp.ContractNo__c; // tcm start if (String.isBlank(codctmp.Consumable_order_minor__r.ContractNo__c)) { codcorderdet.ContractNo_text__c= codctmp.ContractNo_text__c; }else { codcorderdet.ContractNo_text__c= codctmp.Consumable_order_minor__r.ContractNo__c; } // tcm end //add by rentx 2020-10-13 end 返品时新数据记录SAP合同号 // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start if(hasLoseGoods){ codcorderdet.loseInventory__c = true; } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end // 追加首次入库经销商 add by gzw 2020-04-27 start // 返品时,①追加借调借出方信息 ②保留借调信息 ③保存SAP和经销商首次发货经销商 codcorderdet.Used_account__c = codi.esd.Used_account__c; codcorderdet.Transfer_Time__c = codi.esd.Transfer_Time__c; codcorderdet.Frist_Transfer_Agency__c = codi.esd.Frist_Transfer_Agency__c; codcorderdet.Agency_Transfer__c = codi.esd.Agency_Transfer__c; codcorderdet.Agencyinfo_fromSAP__c = codi.esd.Agencyinfo_fromSAP__c; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------1------' + codi.esd.Frist_Storage_Agency__c)); codcorderdet.Frist_Storage_Agency__c = codi.esd.Frist_Storage_Agency__c == null ? codi.esd.Dealer_Info_text__c : codi.esd.Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end codcorderdetList.add(codcorderdet); codcList.add( esd ); cnt++; if(cnt > codi.esd.Rrturn_count__c) break; } } } else{ hasReturnGoods = true; //单位=盒 //changeinvoiceInfo(codi.esd); //Consumable_order__c coc = [select name from Consumable_order__c where Id =:Arrived_Order_Sheet.id]; // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start codi.esd.Return_date__c = Date.today(); // codi.esd.Consumable_Return_order__c = Return_Order_Sheet.id; if(codi.esd.Dealer_Saled__c == false && codi.esd.Dealer_Shipment__c == false && codi.esd.Lose_Flag__c == true){ codi.esd.Lose_Flag__c = false; codi.esd.Return_reason__c = ''; codi.esd.Consumable_Inventory_order__c = Inventory_Order_Sheet.id; conOrderDetail2InList.add(codi.esd); hasLoseGoods = true; } else{ // codi.esd.Return_date__c = Date.today(); codi.esd.Consumable_Return_order__c = Return_Order_Sheet.id; } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end codi.esd.ReturnGs_Uploader_ID__c = UserInfo.getUserId(); // codi.esd.Consumable_Return_order__c = Return_Order_Sheet.id; //修改返品所有人 codi.esd.OwnerId = UserInfo.getUserId(); codi.esd.RecordTypeId = System.Label.RT_ConOrderDetail2_Return; codcorderdet.Name = consumable_order_arr[0].name + '-' + String.valueOf(++tempNo).leftPad(4,'0'); codcorderdet.Consumable_order_minor__c = codi.esd.Consumable_order_minor__c; codcorderdet.Consumable_Arrived_order__c = Arrived_Order_Sheet.id; //修改到货所有人 codcorderdet.OwnerId = UserInfo.getUserId(); codcorderdet.Arrive_date__c = Date.today(); codcorderdet.Consumable_Product__c = codi.esd.Consumable_Product__c; codcorderdet.Asset_Model_No__c = codi.esd.Asset_Model_No__c; codcorderdet.Bar_Code__c = codi.esd.Bar_Code__c; codcorderdet.Deliver_date__c = codi.esd.Deliver_date__c; codcorderdet.SerialLotNo__c = codi.esd.SerialLotNo__c; codcorderdet.TracingCode__c = codi.esd.TracingCode__c; codcorderdet.Sterilization_limit__c = codi.esd.Sterilization_limit__c; //gzw 手动入库 默认产品单价 20230307 codcorderdet.Intra_Trade_List_RMB__c = (codi.esd.Intra_Trade_List_RMB__c == null || codi.esd.Intra_Trade_List_RMB__c == 0) ? codi.esd.Intra_Trade_List__c : codi.esd.Intra_Trade_List_RMB__c; // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start if(hasLoseGoods){ codcorderdet.loseInventory__c = true; } // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end // 追加首次入库经销商 add by gzw 2020-04-27 start // 返品时,①追加借调借出方信息 ②保留借调信息 ③保存SAP和经销商首次发货经销商 codcorderdet.Used_account__c = codi.esd.Used_account__c; codcorderdet.Transfer_Time__c = codi.esd.Transfer_Time__c; codcorderdet.Frist_Transfer_Agency__c = codi.esd.Frist_Transfer_Agency__c; codcorderdet.Agency_Transfer__c = codi.esd.Agency_Transfer__c; codcorderdet.Agencyinfo_fromSAP__c = codi.esd.Agencyinfo_fromSAP__c; //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------2------' + codi.esd.Frist_Storage_Agency__c)); codcorderdet.Frist_Storage_Agency__c = codi.esd.Frist_Storage_Agency__c == null ? codi.esd.Dealer_Info_text__c : codi.esd.Frist_Storage_Agency__c; // 追加首次入库经销商 add by gzw 2020-04-27 end //add by rentx 2020-10-13 start 返品时新数据记录SAP合同号 // codcorderdet.ContractNo_text__c = /*codi.esd.ContractNo__c*/; // tcm start if (String.isBlank(codi.esd.Consumable_order_minor__r.ContractNo__c)) { codcorderdet.ContractNo_text__c= codi.esd.ContractNo_text__c; }else { codcorderdet.ContractNo_text__c= codi.esd.Consumable_order_minor__r.ContractNo__c; } // tcm end //add by rentx 2020-10-13 end 返品时新数据记录SAP合同号 codcorderdetList.add(codcorderdet); codcList.add( codi.esd ); } } //明细2不存在的对应的到货订单明细 2017-07-05 Integer i = 1; //for(ConsumableorderdetailsInfo ass : consumableInventoryUse){ for(ConsumableorderdetailsInfo ass : consumableInventory){ hasReturnGoods = true; Consumable_order_details2__c codcorderdetail = new Consumable_order_details2__c(); Consumable_order_details2__c retorddetail = new Consumable_order_details2__c(); String str = ('000' + i).right(4); // if(str.length() == 1){ // str = '0' + str; // } if(ass.ReturnReason==null || ass.ReturnReason==''){ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'请补充返品原因')); return null; } //到货明细 codcorderdetail.Name = consumable_order_arr[0].Name + '-'+ str; codcorderdetail.RecordTypeId = System.Label.RT_ConOrderDetail2_Delivery; codcorderdetail.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c; //gzw 手动入库 默认产品单价 20230307 codcorderdetail.Asset_Model_No__c = ass.Prod.Asset_Model_No__c; codcorderdetail.Direct_Arrive_Product__c = true; codcorderdetail.Sterilization_limit__c = ass.sterilizationlimitDate; codcorderdetail.Consumable_Product__c = ass.Prod.id; codcorderdetail.Bar_Code__c = ass.barCodeNo; codcorderdetail.SerialLotNo__c = ass.serialNoorLotNo; codcorderdetail.TracingCode__c = ass.tracingCodeNo; codcorderdetail.Consumable_Arrived_order__c = Arrived_Order_Sheet.id; codcorderdetail.Arrive_date__c = Date.today(); //add by rentx 2020-10-14 start // codcorderdetail.ContractNo_text__c = /*ass.esd.ContractNo__c*/; // tcm start if (String.isBlank(ass.esd.Consumable_order_minor__r.ContractNo__c)) { codcorderdetail.ContractNo_text__c= ass.esd.ContractNo_text__c; }else { codcorderdetail.ContractNo_text__c= ass.esd.Consumable_order_minor__r.ContractNo__c; } // tcm end //add by rentx 2020-10-14 end codcorderdetList.add(codcorderdetail); //返品明细 retorddetail.Return_reason__c = ass.ReturnReason; retorddetail.Return_date__c = Date.today(); retorddetail.ReturnGs_Uploader_ID__c = UserInfo.getUserId(); // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 start // if(ass.esd.Dealer_Saled__c == false && ass.esd.Dealer_Shipment__c == false && ass.esd.Lose_Flag__c == true){ // retorddetail.Consumable_Inventory_order__c = Inventory_Order_Sheet.id; // retorddetail.loseInventory__c = true; // } retorddetail.Consumable_Return_order__c = Return_Order_Sheet.id; // WYIN-BLZE48盘点丢失产品增加入库方式 update by vivek 2020-03-05 end retorddetail.Name = consumable_order_ret[0].Name + '-'+ str; retorddetail.RecordTypeId = System.Label.RT_ConOrderDetail2_Return; retorddetail.Intra_Trade_List_RMB__c = ass.Prod.Intra_Trade_List_RMB__c; //gzw 手动入库 默认产品单价 20230307 retorddetail.Dealer_Info_IF__c = accountid; retorddetail.Asset_Model_No__c = ass.Prod.Asset_Model_No__c; retorddetail.Direct_Arrive_Product__c = true; retorddetail.Sterilization_limit__c = ass.sterilizationlimitDate; retorddetail.Consumable_Product__c = ass.Prod.id; retorddetail.Bar_Code__c = ass.barCodeNo; retorddetail.SerialLotNo__c = ass.serialNoorLotNo; retorddetail.TracingCode__c = ass.tracingCodeNo; retorddetail.Arrive_date__c = Date.today(); retorddetail.Deliver_date__c = Date.today(); // 追加首次入库经销商 add by gzw 2020-04-27 start retorddetail.Frist_Storage_Agency__c = accountName; // 追加首次入库经销商 add by gzw 2020-04-27 end //add by rentx 2020-10-14 start // retorddetail.ContractNo_text__c = /*ass.esd.ContractNo__c*/; // tcm start if (String.isBlank(ass.esd.Consumable_order_minor__r.ContractNo__c)) { retorddetail.ContractNo_text__c= ass.esd.ContractNo_text__c; }else { retorddetail.ContractNo_text__c= ass.esd.Consumable_order_minor__r.ContractNo__c; } // tcm end //add by rentx 2020-10-14 end codcorderdetList.add(retorddetail); i++; } // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'------end------')); // return null; if(codcList.size()>0){ ControllerUtil.updateOrderDetailsSatus( codcList ); //insert codcorderdetList; } if (codcorderdetList.size()>0){ System.debug('codcorderdetList +++++ '+ codcorderdetList); insert codcorderdetList; } // WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start if(conOrderDetail2InList.size() > 0){ addInventoryDetails1(conOrderDetail2InList); } // WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start if(hasReturnGoods){ // WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start // return ToReturnGoodsPage(); if(hasLoseGoods){ return ToInventoryGoodsPage(); // return null; }else{ return ToReturnGoodsPage(); // return null; } // WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start } else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'没有需要登录的返品')); return null; } }else{ ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'没有需要登录的返品')); return null; } }catch(Exception e){ Database.rollback(sp); ApexPages.addMessages(e); return null; } } public void makeArrivedSummary(){ detailsSummary = new List(); //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'consumableInventory ' + consumableInventory)); try{ ConsumableorderdetailsInfo arriveDdetailsSummary = null; Map detailsSummaryMap = new Map(); for(ConsumableorderdetailsInfo ass : ConsumableorderdetailsRecords){ if(detailsSummaryMap.containsKey(ass.Prod.Id)){ detailsSummaryMap.get(ass.Prod.Id).arrivedCount ++; detailsSummaryMap.get(ass.Prod.Id).arriveAmount += ass.esd.Intra_Trade_List_RMB__c; }else{ arriveDdetailsSummary = new ConsumableorderdetailsInfo(ass.Prod); arriveDdetailsSummary.arrivedCount = 1; arriveDdetailsSummary.arriveAmount = ass.esd.Intra_Trade_List_RMB__c; detailsSummaryMap.put(ass.Prod.Id, arriveDdetailsSummary); } } for(ConsumableorderdetailsInfo ass : consumableInventory){ if(detailsSummaryMap.containsKey(ass.Prod.Id)){ detailsSummaryMap.get(ass.Prod.Id).arrivedCount ++; if(EsetId != null && EsetId != ''){ detailsSummaryMap.get(ass.Prod.Id).arriveAmount += ass.Prod.Intra_Trade_List_RMB__c; }else{ detailsSummaryMap.get(ass.Prod.Id).arriveAmount += 0; } }else{ arriveDdetailsSummary = new ConsumableorderdetailsInfo(ass.Prod); arriveDdetailsSummary.arrivedCount = 1; if(EsetId != null && EsetId != ''){ arriveDdetailsSummary.arriveAmount = ass.Prod.Intra_Trade_List_RMB__c; }else{ arriveDdetailsSummary.arriveAmount = 0; } detailsSummaryMap.put(ass.Prod.Id, arriveDdetailsSummary); } } for(String key : detailsSummaryMap.keySet()){ detailsSummary.add(detailsSummaryMap.get(key)); } }catch(Exception e){ //Database.rollback(sp); throw new ControllerUtil.myException('e::'+e + ' linenumber::'+e.getLineNumber()); // ApexPages.addMessages(e); // ApexPages.addMessages(e.getLineNumber() + ' 11111111111111111'); //return null; } } //跳转到返品页面 public Pagereference ToReturnGoodsPage(){ PageReference ref = new Pagereference('/'+return_Order_id); ref.setRedirect(true); return ref; } // WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 start public Pagereference ToInventoryGoodsPage(){ PageReference ref = new Pagereference('/'+inventory_Order_id); ref.setRedirect(true); return ref; } // WYIN-BPE3T4 虚拟盘点单 update by vivek 2020-05-11 end // 跳转到到货订单明细 public PageReference UnabletoEdit(){ PageReference ref = new Pagereference('/ArriveGsDetails?EsetId='+arriveId); ref.setRedirect(true); return ref; } class ConsumableorderdetailsInfo implements Comparable { public Consumable_order_details2__c esd { get; set; } public Product2__c Prod { get; set; } public String ProductName { get; set; } //public Boolean canSELECT { get; set; } public String barCodeNo { get; set; } public Date sterilizationlimitDate { get; set; } public String serialNoorLotNo { get; set; } public String tracingCodeNo { get; set; } public String ReturnReason { get; set; } public String oldConsumableCount { get; set; } public String ErrorReason { get; set; } public boolean canEdit { get; set; } public Integer intMark { get; set; } public Decimal arriveAmount { get; set; } public Decimal arrivedCount { get; set; } public String ReportProductExpirationDate {get;set;} public ConsumableorderdetailsInfo(Consumable_order_details2__c e,string str) { esd = e; Prod = e.Consumable_Product__r; oldConsumableCount = e.name; ErrorReason = str; intMark = 1; if (e.Report_Product_Expiration__c != null) { ReportProductExpirationDate = e.Report_Product_Expiration__c.format(); } } public ConsumableorderdetailsInfo(Consumable_order_details2__c e) { canEdit = false; if(e.Box_Piece__c=='盒'){ e.Rrturn_count__c = 1; canEdit = true; } esd = e; Prod = e.Consumable_Product__r; oldConsumableCount = e.name; if (e.Report_Product_Expiration__c != null) { ReportProductExpirationDate = e.Report_Product_Expiration__c.format(); } } public ConsumableorderdetailsInfo(Product2__c e,List barinfoL) { esd = new Consumable_order_details2__c(); ProductName = e.Name__c; Prod = e; barCodeNo = barinfoL[0]; if(String.isNotBlank(barinfoL[1])){ sterilizationlimitDate = Date.valueOf(barinfoL[1]); } serialNoorLotNo = barinfoL[2]; tracingCodeNo = barinfoL[3]; ReturnReason = ''; } public ConsumableorderdetailsInfo(Consumable_order_details2__c e,List barinfoL) { esd = e; Prod = e.Consumable_Product__r; barCodeNo = barinfoL[0]; if(String.isNotBlank(barinfoL[1])){ sterilizationlimitDate = Date.valueOf(barinfoL[1]); } serialNoorLotNo = barinfoL[2]; tracingCodeNo = barinfoL[3]; if (e.Report_Product_Expiration__c != null) { ReportProductExpirationDate = e.Report_Product_Expiration__c.format(); } } public ConsumableorderdetailsInfo(Product2__c e) { Prod = e; } // 排序 public Integer compareTo(Object compareTo) { return null; } } }