public without sharing class LexInventoryController { // page public static Integer pagesize { get; set; } public static Integer pageToken { get; set; } public static String sortField { get; set; } public static String sortOrder { get; set; } public static Integer totalcount { get; set; } //分页使用数据 public static String fileName { get; set; } public static Integer size { get; set; } public static Integer noOfRecords { get; set; } public static List codPageRecords { get; set; } // 丢失和巡回的,画面显示用 public static ApexPages.StandardSetController setCon { get; set; } @AuraEnabled public static List setConDetails2 { get; set; } public static Map pandiandetailsMap = new Map(); /*****************検索用******************/ public static String barcode { get; set; } public static Boolean done { get; set; } /*****************画面表示Bean******************/ //页面主数据显示用 // private static List consumableorderdetailsRecords; public static List consumableorderdetailsRecords; //盘点到的产品 public static List reSet = new List(); public static List showcod2nid = new List(); //public List pandiandetailsList { get; set; } public static List> pandiandetailsListShow { get; set; } //寻回明细 public static List consumableorderdetailsRecordserrordummy; // 丢失和巡回的,实际炒作用 @AuraEnabled public static List> consumableorderdetailsRecordsview { get; set; } // 产品单位的List public static List InsListUp = new List(); public static List consumableorderdetailsviewRecords; public static Integer consumableorderdetailsCount { get { return consumableorderdetailsRecords == null ? 0 : consumableorderdetailsRecords.size(); } } //list notexitlist = new list(); public static Map reFindProduct = new Map(); //排序用 // public static String sortKey; // public static String preSortKey; // public static Boolean sortOrderAsc; // public static String[] sortOrder; //private Set carCodeListLose = new Set(); //ProductCount_Res 有,BarCodeListP 没有 /*****************经销商ID******************/ private static String accountid = null; private static String accountName = null; // 盘点 ID private static String eSetId = ''; // 登录者工作地 private static String userWorkLocation; //经销商用户产品分类(ET、ENG) public static String agencyProType { get; set; } public static String sqlagencyProType; //判断操作人员是否盘点 public static Boolean iSinventory = false; public LexInventoryController() { size = Integer.valueOf(System.Label.orderdetLimitsize); consumableorderdetailsRecords = new List(); done = false; consumableorderdetailsRecordsview = new List>(); consumableorderdetailsRecordserrordummy = new List(); codPageRecords = new List(); //codPageRecordsShow = new List(); } private static void initStandardController() { // init standard controller List showcod2 = [ SELECT Id, Name, Consumable_Product__c, Bar_Code__c, Consumable_Product__r.Name__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, Bar_Code_search__c FROM Consumable_order_details2__c WHERE Id IN :pandiandetailsMap.keySet() ORDER BY Name DESC ]; setConDetails2 = showcod2; System.debug('setConDetails2===>' + setConDetails2); // setCon = new ApexPages.StandardSetController(showcod2); // // sets the number of records in each page set // setCon.setPageSize(size); // noOfRecords = setCon.getResultSize(); } public static List cod2s() { return setConDetails2; } //Changes the size of pagination public static PageReference refreshPageSize() { setCon.setPageSize(size); //showcod2nid = cod2s(); makepagerecords(); return null; } public static List makepagerecords() { showcod2nid = cod2s(); codPageRecords = new List(); for (Consumable_order_details2__c cod2 : showcod2nid) { codPageRecords.add(new ConsumableorderdetailsInfo(cod2, pandiandetailsMap.get(cod2.Id))); } System.debug('===>codPageRecords1' + codPageRecords); return codPageRecords; } // 画面初始化 @AuraEnabled public static ResponseBodyLWC init() { ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; consumableorderdetailsRecordsview = new List>(); setConDetails2 = new List(); String url = '在库调整一览'; fileName = EncodingUtil.urlEncode(url, 'UTF-8'); List showcod2 = [ SELECT Id, Name, Consumable_Product__c, Bar_Code__c, Consumable_Product__r.Name__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, Bar_Code_search__c FROM Consumable_order_details2__c WHERE Id IN :pandiandetailsMap.keySet() ORDER BY Name ]; System.debug('pandiandetailsMap====>' + pandiandetailsMap); initStandardController(); makepagerecords(); // sortKey = '1'; // preSortKey = '1'; // sortOrderAsc = false; // sortOrder = new String[1]; // sortOrder = new String[]{' ',' ','↓'}; String userId = UserInfo.getUserId(); //String userId = '00510000006k82X'; //String userId = '00510000005QO75'; user Useracc = [SELECT Accountid, Work_Location__c, UserPro_Type__c FROM user WHERE id = :userId]; accountid = Useracc.Accountid; userWorkLocation = Useracc.Work_Location__c; agencyProType = Useracc.UserPro_Type__c; if (String.isBlank(Useracc.UserPro_Type__c)) { agencyProType = 'ET'; } sqlagencyProType = '%' + agencyProType + '%'; Account accountInfo = [SELECT Name, Dealer_discount__c FROM account WHERE id = :accountid]; accountName = accountInfo.Name; consumableorderdetailsRecords = new List(); Map midMap = new Map(); List boxRecords = new List(); Map newMidBoxMap = new Map(); Map newMidPieceMap = new Map(); //DB202302357027 消耗品追溯系统无法正常使用——盘点页面操作即报错 fy start //开始制作表头数据 // List productCount_Unfull_bak = [select Id, Name,Name__c, // SFDA_Status__c,Packing_list_manual__c, // Asset_Model_No__c // from Product2__c // //where Estimation_Entry_Possibility__c = '○' // where Product_Type__c like : sqlagencyProType // ]; // for(integer i = 0;i < productCount_Unfull_bak.size() ; i++){ // midMap.put(productCount_Unfull_bak[i].Id, productCount_Unfull_bak[i]); // } //查询库存 追加返品库存 List ProductCount_Res = [ SELECT Id, Name, Consumable_Product__c, Bar_Code__c, Consumable_Product__r.Name__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c 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 Lose_Flag__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code__c != NULL AND Product_Type__c LIKE :sqlagencyProType AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Dealer_Info_text__c = :accountName ]; //DB202302357027 消耗品追溯系统无法正常使用——盘点页面操作即报错 fy start //开始制作表头数据 Set Product2cIdSet = new Set(); for (Consumable_order_details2__c con_or_d2item : ProductCount_Res) { Product2cIdSet.add(con_or_d2item.Consumable_Product__c); } List productCount_Unfull_bak = [ SELECT Id, Name, Name__c, SFDA_Status__c, Packing_list_manual__c, Asset_Model_No__c FROM Product2__c //where Estimation_Entry_Possibility__c = '○' WHERE Id IN :Product2cIdSet AND Product_Type__c LIKE :sqlagencyProType ]; for (integer i = 0; i < productCount_Unfull_bak.size(); i++) { midMap.put(productCount_Unfull_bak[i].Id, productCount_Unfull_bak[i]); } system.debug('productCount_Unfull_bak' + productCount_Unfull_bak.size()); // String erro='productCount_Unfull_bak:'+productCount_Unfull_bak.size(); // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, erro)); //DB202302357027 消耗品追溯系统无法正常使用——盘点页面操作即报错 fy end // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'ProductCount_Res ' + ProductCount_Res.size())); for (Integer i = 0; i < ProductCount_Res.size(); i++) { //然后循环CountDel做Box和piece2个map if (MidMap.containsKey(ProductCount_Res[i].Consumable_Product__c) && ProductCount_Res[i].Box_Piece__c == '盒') { if (newMidBoxMap.containsKey(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c)) { ConsumableorderdetailsInfo Jstage = newMidBoxMap.get( ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c ) .clone(); Jstage.countid = Jstage.countid + 1; if (ProductCount_Res[i].Isoverdue__c == 1) { Jstage.limitCount = Jstage.limitCount + 1; } Jstage.boxPiece = ProductCount_Res[i].Box_Piece__c; newMidBoxMap.put(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c, Jstage); } else { ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo( MidMap.get(ProductCount_Res[i].Consumable_Product__c) ); Jstage.countid = Jstage.countid + 1; if (ProductCount_Res[i].Isoverdue__c == 1) { Jstage.limitCount = Jstage.limitCount + 1; } Jstage.boxPiece = ProductCount_Res[i].Box_Piece__c; newMidBoxMap.put(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c, Jstage); } } else if (MidMap.containsKey(ProductCount_Res[i].Consumable_Product__c) && ProductCount_Res[i].Box_Piece__c == '个') { if (newMidPieceMap.containsKey(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c)) { ConsumableorderdetailsInfo Jstage = newMidPieceMap.get( ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c ) .clone(); Jstage.countid = Jstage.countid + 1; if (ProductCount_Res[i].Isoverdue__c == 1) { Jstage.limitCount = Jstage.limitCount + 1; } Jstage.boxPiece = ProductCount_Res[i].Box_Piece__c; newMidPieceMap.put(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c, Jstage); } else { ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo( MidMap.get(ProductCount_Res[i].Consumable_Product__c) ); Jstage.countid = Jstage.countid + 1; if (ProductCount_Res[i].Isoverdue__c == 1) { Jstage.limitCount = Jstage.limitCount + 1; } Jstage.boxPiece = ProductCount_Res[i].Box_Piece__c; newMidPieceMap.put(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c, Jstage); } } } for (ConsumableorderdetailsInfo bss : newMidBoxMap.values()) { bss.overlimitCount = bss.countid - bss.limitCount; boxRecords.add(bss); } boxRecords.sort(); for (ConsumableorderdetailsInfo bss : newMidPieceMap.values()) { bss.overlimitCount = bss.countid - bss.limitCount; } for (ConsumableorderdetailsInfo bss : boxRecords) { consumableorderdetailsRecords.add(bss); if (newMidPieceMap.containsKey(bss.Prod.Id + '个')) { consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); //newMidPieceMap移除已经添加的Piece newMidPieceMap.remove(bss.Prod.Id + '个'); } } for (ConsumableorderdetailsInfo bss : newMidPieceMap.values()) { consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); } //consumableorderdetailsCount = consumableorderdetailsRecords.size(); listCut(); data.put('ConsumableorderdetailsRecordsview', JSON.serialize(ConsumableorderdetailsRecordsview)); data.put('userWorkLocation', userWorkLocation); data.put('agencyProType', agencyProType); data.put('accountName', accountName); data.put('accountid', accountid); data.put('consumableorderdetailsRecords', JSON.serialize(consumableorderdetailsRecords)); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } private static void listCut() { //拆分暂用list 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 (consumableorderdetailsRecords.size() > 1000) { for (Integer i = 0; i < consumableorderdetailsRecords.size(); i++) { if (i < 1000) { c = consumableorderdetailsRecords.get(i); ConsumableorderdetailsRecordsbreak.add(c); } else { c = consumableorderdetailsRecords.get(i); ConsumableorderdetailsRecordsbreakover.add(c); } } consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreak); consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreakover); } else { consumableorderdetailsRecordsview.add(consumableorderdetailsRecords); } } //========20160311======ADD_Start================================ // 将页面或取得BarCode去掉重复的,转换成List //========20160311======ADD_Start================================ public static List ParseBarCode(String Code) { Map barcodeCountMap = new Map(); String[] Cache = new List{}; Cache = Code.split('\n'); List Buff = new List(); for (String A : Cache) { A = A.trim().toUpperCase(); if (barcodeCountMap.containsKey(A)) { barcodeCountMap.put(A, barcodeCountMap.get(A) + 1); } else { barcodeCountMap.put(A, 1); } Buff.add(A + barcodeCountMap.get(A)); } return Buff; } //test // @AuraEnabled // public static ResponseBodyLWC searchConsumableorderdetails(String sqlagencyProType,String userWorkLocation,String accountName,String barcode,List consumableorderdetailsRecordsLWC){ // return new ResponseBodyLWC('Error',500, 'test', ''); // } //========20160311======ADD_End================================== // BarCode录入 @AuraEnabled public static ResponseBodyLWC searchConsumableorderdetails( String agencyProType, String userWorkLocation, String accountName, String barcode, String consumableorderdetailsRecordsLWC, Integer pageSizeLWC, Integer pageTokenLWC, String sortFieldLWC, String sortOrderLWC ) { pageSize = pageSizeLWC; pageToken = pageTokenLWC; sortField = sortFieldLWC; sortOrder = sortOrderLWC; System.debug('===>consumableorderdetailsRecordsLWC' + consumableorderdetailsRecordsLWC); List consumableorderdetailsRecords = (List) JSON.deserialize( consumableorderdetailsRecordsLWC, List.class ); // ConsumableorderdetailsInfo[] consumableorderdetailsRecords=(List)JSON.deserialize(consumableorderdetailsRecordsLWC,List.class); system.debug('=====>consumableorderdetailsRecordsLWC' + consumableorderdetailsRecordsLWC); ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; sqlagencyProType = '%' + agencyProType + '%'; System.debug('sqlagencyProType==>' + sqlagencyProType); System.debug('accountName==>' + accountName); System.debug('userWorkLocation==>' + userWorkLocation); /* BarCodelist做成 */ //FIXME barcodeSet 做成,ProductCount_ResSet 做成 List pandiandetailsList = new List(); pandiandetailsListShow = new List>(); done = false; List BarCodeListP = ParseBarCode(barcode); System.debug('BarCodeListP===>' + BarCodeListP); //查询库存 追加返品库存 List ProductCount_Res = [ SELECT Id, Name, Consumable_Product__c, Bar_Code__c, Consumable_Product__r.Name__c, Dealer_Info_text__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, Bar_Code_search__c 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 Lose_Flag__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code__c != NULL AND Product_Type__c LIKE :sqlagencyProType AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Dealer_Info_text__c = :accountName ]; System.debug('ProductCount_Res==>' + ProductCount_Res); reFindProduct.clear(); Map barCodeListAdjustMap = new Map(); //barCodeListLoseMap.clear(); Set carCodeListLose = new Set(); List consumableorderdetailsRecordsAdjust = new List(); Map proIdNotinpage = new Map(); List reFindProductList = new List(); codPageRecords = new List(); consumableorderdetailsRecordserrordummy = new List(); List reFindProductaddtopage = new List(); pandiandetailsMap.clear(); reSet = new List(); /* 判断BarCode是否为空 */ if (barcode == null || barcode == '') { //先取出所有丢失产品 for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { // 20200509 gzw add 盘点数量初始化 ass.Pandian = 0; // 20200509 gzw add 盘点数量初始化 if (ass.check == true) { //ass.Diff = ass.countid - ass.Pandian; for (integer i = 0; i < ProductCount_Res.size(); i++) { System.debug('Pro==>' + ProductCount_Res[i].Consumable_Product__c); System.debug('ProId==>' + ass.Prod.Id); System.debug('ass.boxPiece ==>' + ass.boxPiece); System.debug('boxPiece ==>' + ProductCount_Res[i].Box_Piece__c); if (ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id && ass.boxPiece == ProductCount_Res[i].Box_Piece__c) { if (carCodeListLose.contains(ProductCount_Res[i].Bar_Code__c)) { continue; } else { //consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'丢失')); //pandiandetailsMap.put(ProductCount_Res[i].Id, '丢失'); ////barCodeListLoseMap.put(ProductCount_Res[i].Id, new ConsumableorderdetailsInfo(ProductCount_Res[i])); carCodeListLose.add(ProductCount_Res[i].Bar_Code__c); } } } } } //已经出库的产品 List reSet1 = [ SELECT Id, Name, Consumable_Product__c, Bar_Code__c, Consumable_Product__r.Name__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, Bar_Code_search__c, Dealer_Info_text__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND (Dealer_Shipment__c = TRUE OR Dealer_Saled__c = TRUE) AND Dealer_Returned__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code__c IN :carCodeListLose AND Dealer_Info_text__c = :accountName ORDER BY Name ]; Map needreturnMap = new Map(); for (Consumable_order_details2__c cod2 : reSet1) { needreturnMap.put(cod2.Bar_Code__c, cod2); } // 经销商之间或者同一经销商不同工作地调货 reSet1 = [ SELECT Id, Name, Consumable_Product__c, Bar_Code__c, Consumable_Product__r.Name__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, Bar_Code_search__c, Dealer_Info_text__c 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 :carCodeListLose AND (Dealer_Info_text__c != :accountName OR (Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c != :userWorkLocation)) ORDER BY Name ]; Map otherAgProMap = new Map(); for (Consumable_order_details2__c cod2 : reSet1) { otherAgProMap.put(cod2.Bar_Code__c, cod2); } carCodeListLose.clear(); for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (ass.check == true) { ass.Diff = ass.countid - ass.Pandian; for (integer i = 0; i < ProductCount_Res.size(); i++) { if (ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id && ass.boxPiece == ProductCount_Res[i].Box_Piece__c) { if (carCodeListLose.contains(ProductCount_Res[i].Bar_Code_search__c)) { continue; } else { if (needreturnMap.containsKey(ProductCount_Res[i].Bar_Code__c)) { consumableorderdetailsRecordserrordummy.add( new ConsumableorderdetailsInfo(ProductCount_Res[i], '该产品未返品') ); pandiandetailsMap.put(ProductCount_Res[i].Id, '该产品未返品'); carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c); continue; } if (otherAgProMap.containsKey(ProductCount_Res[i].Bar_Code__c)) { consumableorderdetailsRecordserrordummy.add( new ConsumableorderdetailsInfo( ProductCount_Res[i], '该产品归属于' + otherAgProMap.get(ProductCount_Res[i].Bar_Code__c).Dealer_Info_text__c + '的库存。' ) ); pandiandetailsMap.put( ProductCount_Res[i].Id, '该产品归属于' + otherAgProMap.get(ProductCount_Res[i].Bar_Code__c).Dealer_Info_text__c + '的库存。' ); carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c); continue; } if (ProductCount_Res[i].Isoverdue__c == 0) { consumableorderdetailsRecordserrordummy.add( new ConsumableorderdetailsInfo(ProductCount_Res[i], '该产品已经过有效期,请销存。') ); pandiandetailsMap.put(ProductCount_Res[i].Id, '该产品已经过有效期,请销存。'); carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c); ass.Diff--; continue; } consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i], '丢失')); pandiandetailsMap.put(ProductCount_Res[i].Id, '丢失'); carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c); } } } } else { ass.Pandian = 0; ass.Diff = 0; } } List showcod2 = new List(); if (pandiandetailsMap.keySet().size() > 0) { showcod2 = [ SELECT Id, Name, Consumable_Product__c, Bar_Code__c, Consumable_Product__r.Name__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, Bar_Code_search__c FROM Consumable_order_details2__c WHERE Id IN :pandiandetailsMap.keySet() ORDER BY Name ]; } initStandardController(); showcod2nid = cod2s(); for (Consumable_order_details2__c cod2 : showcod2nid) { codPageRecords.add(new ConsumableorderdetailsInfo(cod2, pandiandetailsMap.get(cod2.Id))); } iSinventory = true; if (codPageRecords.size() > 0) done = true; consumableorderdetailsRecordserrordummy.clear(); //pandiandetailsList = new list(); pandiandetailsList = [ SELECT Id, Bar_Code__c, Consumable_Product__r.Name__c, Box_Piece__c, Lose_reason__c FROM Consumable_order_details2__c WHERE Id IN :pandiandetailsMap.keySet() ORDER BY Name ]; for (Consumable_order_details2__c codDet : pandiandetailsList) { codDet.Lose_reason__c = pandiandetailsMap.get(codDet.Id); } List pandiandetailsListMid = new List(); for (Consumable_order_details2__c cod2 : pandiandetailsList) { pandiandetailsListMid.add(cod2); if (pandiandetailsListMid.size() == 1000) { pandiandetailsListShow.add(pandiandetailsListMid); pandiandetailsListMid = new List(); } } if (pandiandetailsListMid.size() > 0) { pandiandetailsListShow.add(pandiandetailsListMid); } //分页 PaginatedAccounts paginatedAccounts = new PaginatedAccounts(); totalCount = codPageRecords.size(); paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null; paginatedAccounts.recordStart = pageToken + 1; paginatedAccounts.pageNumber = pageToken / pageSize + 1; Integer recordEnd = pageSize * paginatedAccounts.pageNumber; paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount; paginatedAccounts.totalRecords = totalCount; Integer startIdx; Integer endIdx; List pageCodeRecords = new List(); startIdx = pageToken; endIdx = startIdx + pageSize; if (endIdx > codPageRecords.size()) { endIdx = codPageRecords.size(); } for (Integer i = startIdx; i < endIdx; i++) { pageCodeRecords.add(codPageRecords.get(i)); } data.put('paginatedAccounts', paginatedAccounts); data.put('pageCodeRecords', pageCodeRecords); //end data.put('codPageRecords', JSON.serialize(codPageRecords)); data.put('consumableorderdetailsRecords', JSON.serialize(consumableorderdetailsRecords)); data.put('consumableorderdetailsRecordsview', JSON.serialize(consumableorderdetailsRecordsview)); data.put('pandiandetailsMap', pandiandetailsMap); System.debug('iSinventory===>' + iSinventory); System.debug('codPageRecords===>' + codPageRecords); data.put('iSinventory', JSON.serialize(iSinventory)); data.put('reSet1', reSet1); System.debug('reSet1===>' + reSet1); res.code = 200; res.status = 'Success1'; return res; } //CHAN-B7J4NB 只有一个时,盘点不到 //init(); //CHAN-B7J4NB Map showproductIdMap = new Map(); for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { showproductIdMap.put(ass.prod.Id + ass.boxPiece, ass.prod.Id + ass.boxPiece); } // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'BarCodeListP' + BarCodeListP)); /***************************************************************************/ // BarCode的检索 所有在库 reSet = [ SELECT Id, Consumable_Product__c, Consumable_Product__r.Name__c, Box_Piece__c, Bar_Code_search__c, Isoverdue__c FROM Consumable_order_details2__c WHERE Bar_Code_search__c IN :BarCodeListP AND Dealer_Arrive__c = TRUE AND Dealer_Shipment__c = FALSE AND Dealer_Saled__c = FALSE AND Dealer_Returned__c = FALSE AND Lose_Flag__c = FALSE AND Cancellation_Date__c = NULL AND Bar_Code__c != NULL AND Product_Type__c LIKE :sqlagencyProType AND Arrive_Owner_Work_Location__c = :userWorkLocation AND Dealer_Info_text__c = :accountName ORDER BY Name ]; System.debug('reSet===>' + reSet); Map pandianProdIdCountMap = new Map(); // ProdId 単位 // 20200509 add gzw 记录需要销存数量 Map pandianoverdueCountMap = new Map(); // ProdId 単位 // 20200509 add gzw 记录需要销存数量 Map barCodeListPandianMap = new Map(); // 明細バーコード 単位 //盘点到的明细 for (Consumable_order_details2__c rs : reSet) { //BarCodeListPandian.add(rs.Bar_Code_search__c); for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (rs.Consumable_Product__c == ass.Prod.Id && rs.Box_Piece__c == ass.boxPiece) { ass.check = true; } } barCodeListPandianMap.put(rs.Bar_Code_search__c, new ConsumableorderdetailsInfo(rs)); if (rs.Isoverdue__c == 0) { consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(rs, '该产品已经过有效期,请销存。')); pandiandetailsMap.put(rs.Id, '该产品已经过有效期,请销存。'); if (pandianoverdueCountMap.containsKey(rs.Consumable_product__c + rs.Box_Piece__c) == false) { pandianoverdueCountMap.put(rs.Consumable_Product__c + rs.Box_Piece__c, 1); } else { pandianoverdueCountMap.put( rs.Consumable_Product__c + rs.Box_Piece__c, pandianoverdueCountMap.get(rs.Consumable_Product__c + rs.Box_Piece__c) + 1 ); } continue; } if (pandianProdIdCountMap.containsKey(rs.Consumable_product__c + rs.Box_Piece__c) == false) { pandianProdIdCountMap.put(rs.Consumable_Product__c + rs.Box_Piece__c, 1); } else { pandianProdIdCountMap.put( rs.Consumable_Product__c + rs.Box_Piece__c, pandianProdIdCountMap.get(rs.Consumable_Product__c + rs.Box_Piece__c) + 1 ); } } // 经销商之间或者同一经销商不同工作地调货 List reSet1 = [ SELECT Id, Name, Consumable_Product__c, Bar_Code__c, Consumable_Product__r.Name__c, Dealer_Shipment__c, Dealer_Saled__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, Dealer_Arrive__c, Bar_Code_search__c, Dealer_Info_text__c FROM Consumable_order_details2__c WHERE (Dealer_Arrive__c = TRUE OR Dealer_Shipment__c = TRUE OR Dealer_Saled__c = TRUE) AND Dealer_Returned__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code_search__c IN :BarCodeListP AND (Dealer_Info_text__c != :accountName OR (Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c != :userWorkLocation)) ORDER BY Name ]; Map otherAgProMap = new Map(); for (Consumable_order_details2__c cod2 : reSet1) { otherAgProMap.put(cod2.Bar_Code__c, cod2); } // 需要入库的产品 for (Consumable_order_details2__c cod2 : reSet1) { for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (cod2.Consumable_Product__c == ass.Prod.Id && cod2.Box_Piece__c == ass.boxPiece) { ass.check = true; } } if (!showproductIdMap.containsKey(cod2.Consumable_product__c + cod2.Box_Piece__c)) { reFindProductList.add(cod2); proIdNotinpage.put(cod2.Consumable_Product__c, cod2.Box_Piece__c); } if ( !barCodeListPandianMap.containsKey(cod2.Bar_Code_search__c) && otherAgProMap.containsKey(cod2.Bar_Code__c) && (otherAgProMap.get(cod2.Bar_Code__c).Dealer_Saled__c == true || otherAgProMap.get(cod2.Bar_Code__c).Dealer_Shipment__c == true) ) { consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(cod2, '无此产品的库存,请入库。')); pandiandetailsMap.put(cod2.Id, '无此产品的库存,请入库。'); } } //寻回明细 List productAdjust = new List(); productAdjust = [ SELECT Id, Name, Consumable_Product__c, Bar_Code__c, Consumable_Product__r.Name__c, Lose_reason__c, Asset_Model_No__c, Box_Piece__c, Bar_Code_search__c, Isoverdue__c FROM Consumable_order_details2__c WHERE Bar_Code_search__c IN :BarCodeListP AND Bar_Code__c != NULL AND Lose_Flag__c = TRUE AND Product_Type__c LIKE :sqlagencyProType AND Dealer_Info_text__c = :accountName AND Arrive_Owner_Work_Location__c = :userWorkLocation ORDER BY Name ]; for (Consumable_order_details2__c rs : productAdjust) { // 过期库存销存 20200427 gzw add srart if (rs.Isoverdue__c == 0 || rs.Lose_reason__c == '过期库存销存') { consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(rs, '过期或者销存产品,无法寻回入库')); pandiandetailsMap.put(rs.Id, '过期或者销存产品,无法寻回入库'); carCodeListLose.add(rs.Bar_Code_search__c); continue; } // 过期库存销存 20200427 gzw add end for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (rs.Consumable_Product__c == ass.Prod.Id && rs.Box_Piece__c == ass.boxPiece) { ass.check = true; } } if (!showproductIdMap.containsKey(rs.Consumable_product__c + rs.Box_Piece__c)) { reFindProductList.add(rs); proIdNotinpage.put(rs.Consumable_Product__c, rs.Box_Piece__c); } if (barCodeListAdjustMap.containsKey(rs.Bar_Code_search__c)) { continue; } else { barCodeListAdjustMap.put(rs.Bar_Code_search__c, new ConsumableorderdetailsInfo(rs)); consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(rs, '寻回')); pandiandetailsMap.put(rs.Id, '寻回'); consumableorderdetailsRecordsAdjust.add(new ConsumableorderdetailsInfo(rs)); } } if (reFindProductList.size() > 0) { Map midMap = new Map(); List boxRecords = new List(); Map newMidBoxMap = new Map(); Map newMidPieceMap = new Map(); List product_Refind = [ SELECT Id, Name, Name__c, SFDA_Status__c, Packing_list_manual__c, Asset_Model_No__c FROM Product2__c WHERE Id IN :proIdNotinpage.keySet() ]; for (Product2__c pro : product_Refind) { midMap.put(pro.Id, pro); } for (Integer i = 0; i < reFindProductList.size(); i++) { //然后循环CountDel做Box和piece2个map if (MidMap.containsKey(reFindProductList[i].Consumable_Product__c) && reFindProductList[i].Box_Piece__c == '盒') { if (newMidBoxMap.containsKey(reFindProductList[i].Consumable_Product__c + reFindProductList[i].Box_Piece__c)) { ConsumableorderdetailsInfo Jstage = newMidBoxMap.get( reFindProductList[i].Consumable_Product__c + reFindProductList[i].Box_Piece__c ) .clone(); Jstage.countid = 0; if (reFindProductList[i].Isoverdue__c == 1) { Jstage.limitCount = 0; } Jstage.boxPiece = reFindProductList[i].Box_Piece__c; newMidBoxMap.put(reFindProductList[i].Consumable_Product__c + reFindProductList[i].Box_Piece__c, Jstage); } else { ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo( MidMap.get(reFindProductList[i].Consumable_Product__c) ); Jstage.countid = 0; if (reFindProductList[i].Isoverdue__c == 1) { Jstage.limitCount = 0; } Jstage.boxPiece = reFindProductList[i].Box_Piece__c; newMidBoxMap.put(reFindProductList[i].Consumable_Product__c + reFindProductList[i].Box_Piece__c, Jstage); } } else if (MidMap.containsKey(reFindProductList[i].Consumable_Product__c) && reFindProductList[i].Box_Piece__c == '个') { if (newMidPieceMap.containsKey(reFindProductList[i].Consumable_Product__c + reFindProductList[i].Box_Piece__c)) { ConsumableorderdetailsInfo Jstage = newMidPieceMap.get( reFindProductList[i].Consumable_product__c + reFindProductList[i].Box_Piece__c ) .clone(); Jstage.countid = 0; if (reFindProductList[i].Isoverdue__c == 1) { Jstage.limitCount = 0; } Jstage.boxPiece = reFindProductList[i].Box_Piece__c; newMidPieceMap.put(reFindProductList[i].Consumable_Product__c + reFindProductList[i].Box_Piece__c, Jstage); } else { ConsumableorderdetailsInfo Jstage = new ConsumableorderdetailsInfo( MidMap.get(reFindProductList[i].Consumable_Product__c) ); Jstage.countid = 0; if (reFindProductList[i].Isoverdue__c == 1) { Jstage.limitCount = 0; } Jstage.boxPiece = reFindProductList[i].Box_Piece__c; newMidPieceMap.put(reFindProductList[i].Consumable_Product__c + reFindProductList[i].Box_Piece__c, Jstage); } } } for (ConsumableorderdetailsInfo bss : newMidBoxMap.values()) { bss.check = true; bss.overlimitCount = bss.countid - bss.limitCount; boxRecords.add(bss); } boxRecords.sort(); for (ConsumableorderdetailsInfo bss : newMidPieceMap.values()) { bss.check = true; bss.overlimitCount = bss.countid - bss.limitCount; } for (ConsumableorderdetailsInfo bss : boxRecords) { consumableorderdetailsRecords.add(bss); if (newMidPieceMap.containsKey(bss.Prod.Id + '个')) { consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); //newMidPieceMap移除已经添加的Piece newMidPieceMap.remove(bss.Prod.Id + '个'); } } for (ConsumableorderdetailsInfo bss : newMidPieceMap.values()) { consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); } } //先取出未盘点到的产品 for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (ass.check == true) { for (integer i = 0; i < ProductCount_Res.size(); i++) { if (ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id && ass.boxPiece == ProductCount_Res[i].Box_Piece__c) { if (barCodeListPandianMap.get(ProductCount_Res[i].Bar_Code_search__c) != null) { continue; } else { carCodeListLose.add(ProductCount_Res[i].Bar_Code__c); ////barCodeListLoseMap.put(ProductCount_Res[i].Id, new ConsumableorderdetailsInfo(ProductCount_Res[i])); //consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i],'丢失')); //pandiandetailsMap.put(ProductCount_Res[i].Id, '丢失'); } } } } } //已经出库的产品 List reSet2 = [ SELECT Id, Name, Consumable_Product__c, Bar_Code__c, Consumable_Product__r.Name__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, Bar_Code_search__c, Dealer_Info_text__c FROM Consumable_order_details2__c WHERE Dealer_Arrive__c = TRUE AND (Dealer_Shipment__c = TRUE OR Dealer_Saled__c = TRUE) AND Dealer_Returned__c = FALSE AND Cancellation_Flag__c = FALSE AND Bar_Code_search__c IN :BarCodeListP AND Dealer_Info_text__c = :accountName ORDER BY Name ]; Map needreturnMap = new Map(); for (Consumable_order_details2__c cod2 : reSet2) { needreturnMap.put(cod2.Bar_Code__c, cod2); } //// 经销商之间或者同一经销商不同工作地调货 //List reSet1 = [SELECT Id, Name,Consumable_Product__c, // Bar_Code__c,Consumable_Product__r.Name__c,Dealer_Shipment__c,Dealer_Saled__c, // Asset_Model_No__c,Isoverdue__c,Box_Piece__c,Dealer_Arrive__c, // Bar_Code_search__c,Dealer_Info_text__c // FROM Consumable_order_details2__c // WHERE (Dealer_Arrive__c = TRUE // or Dealer_Shipment__c= TRUE // or Dealer_Saled__c = TRUE) // AND Dealer_Returned__c = FALSE // AND Cancellation_Flag__c = FALSE // AND Bar_Code_search__c in :BarCodeListP // AND (Dealer_Info_text__c != :accountName // OR (Dealer_Info_text__c = :accountName // AND Arrive_Owner_Work_Location__c != :userWorkLocation) // ) // ORDER BY Name ]; //Map otherAgProMap = new Map(); //for(Consumable_order_details2__c cod2 :reSet1){ // otherAgProMap.put(cod2.Bar_Code__c,cod2); //} carCodeListLose.clear(); //未盘点到的产品 for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (ass.check == true) { for (integer i = 0; i < ProductCount_Res.size(); i++) { if (ProductCount_Res[i].Consumable_Product__c == ass.Prod.Id && ass.boxPiece == ProductCount_Res[i].Box_Piece__c) { if (barCodeListPandianMap.containsKey(ProductCount_Res[i].Bar_Code_search__c)) { continue; } if (ProductCount_Res[i].Isoverdue__c == 0) { consumableorderdetailsRecordserrordummy.add( new ConsumableorderdetailsInfo(ProductCount_Res[i], '该产品已经过有效期,请销存。') ); pandiandetailsMap.put(ProductCount_Res[i].Id, '该产品已经过有效期,请销存。'); if ( pandianoverdueCountMap.containsKey( ProductCount_Res[i].Consumable_product__c + ProductCount_Res[i].Box_Piece__c ) == false ) { pandianoverdueCountMap.put(ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c, 1); } else { pandianoverdueCountMap.put( ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c, pandianoverdueCountMap.get( ProductCount_Res[i].Consumable_Product__c + ProductCount_Res[i].Box_Piece__c ) + 1 ); } continue; } consumableorderdetailsRecordserrordummy.add(new ConsumableorderdetailsInfo(ProductCount_Res[i], '丢失')); pandiandetailsMap.put(ProductCount_Res[i].Id, '丢失'); } } // 同时存在其他经销商库存产品 for (Consumable_order_details2__c cod2 : reSet1) { if (cod2.Consumable_Product__c == ass.Prod.Id && ass.boxPiece == cod2.Box_Piece__c) { if ( barCodeListPandianMap.containsKey(cod2.Bar_Code_search__c) && otherAgProMap.containsKey(cod2.Bar_Code__c) && otherAgProMap.get(cod2.Bar_Code__c).Dealer_Saled__c == false && otherAgProMap.get(cod2.Bar_Code__c).Dealer_Shipment__c == false ) { consumableorderdetailsRecordserrordummy.add( new ConsumableorderdetailsInfo( cod2, '该产品归属于' + otherAgProMap.get(cod2.Bar_Code__c).Dealer_Info_text__c + '的库存。' ) ); pandiandetailsMap.put( cod2.Id, '该产品归属于' + otherAgProMap.get(cod2.Bar_Code__c).Dealer_Info_text__c + '的库存。' ); continue; } } } // 需要返品的产品 for (Consumable_order_details2__c cod2 : reSet2) { if (cod2.Consumable_Product__c == ass.Prod.Id && ass.boxPiece == cod2.Box_Piece__c) { if (needreturnMap.containsKey(cod2.Bar_Code__c)) { consumableorderdetailsRecordserrordummy.add( new ConsumableorderdetailsInfo(cod2, '该产品目前出库状态,请返品。') ); pandiandetailsMap.put(cod2.Id, '该产品目前出库状态,请返品。'); continue; } } } } } //更新主明细单 if (barCodeListPandianMap.size() > 0) { for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (ass.check == true) { integer countSum = 0; if (pandianProdIdCountMap.containsKey(ass.Prod.Id + ass.boxPiece)) { countSum = pandianProdIdCountMap.get(ass.Prod.Id + ass.boxPiece); } integer overdueSum = 0; if (pandianoverdueCountMap.containsKey(ass.Prod.Id + ass.boxPiece)) { overdueSum = pandianoverdueCountMap.get(ass.Prod.Id + ass.boxPiece); } ass.Pandian = countSum; ass.Diff = ass.countid - countSum - overdueSum; ass.refind = 0; } } } else { for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { if (ass.check == true) { integer overdueSum = 0; if (pandianoverdueCountMap.containsKey(ass.Prod.Id + ass.boxPiece)) { overdueSum = pandianoverdueCountMap.get(ass.Prod.Id + ass.boxPiece); } ass.Diff = ass.countid - ass.Pandian - overdueSum; } } } //寻回做成 for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { for (ConsumableorderdetailsInfo adjust : consumableorderdetailsRecordsAdjust) { if (ass.Prod.Name__c == adjust.Prod.Name__c && ass.boxPiece == adjust.orderdetails2.Box_Piece__c) { if (reFindProduct.containsKey(adjust.orderdetails2.Bar_Code_search__c)) { continue; } else { ass.Pandian++; ass.refind++; reFindProduct.put(adjust.orderdetails2.Bar_Code_search__c, adjust.orderdetails2.Bar_Code_search__c); } } } } if (pandiandetailsMap.keySet().size() > 0) { List showcod2 = [ SELECT Id, Name, Consumable_Product__c, Bar_Code__c, Consumable_Product__r.Name__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, Bar_Code_search__c FROM Consumable_order_details2__c WHERE Id IN :pandiandetailsMap.keySet() ORDER BY Name ]; initStandardController(); showcod2nid = cod2s(); } for (Consumable_order_details2__c cod2 : showcod2nid) { codPageRecords.add(new ConsumableorderdetailsInfo(cod2, pandiandetailsMap.get(cod2.Id))); } if (codPageRecords.size() > 0) done = true; iSinventory = true; consumableorderdetailsRecordserrordummy.clear(); pandiandetailsList = [ SELECT Id, Bar_Code__c, Consumable_Product__r.Name__c, Box_Piece__c, Lose_reason__c FROM Consumable_order_details2__c WHERE Id IN :pandiandetailsMap.keySet() ORDER BY Name ]; for (Consumable_order_details2__c codDet : pandiandetailsList) { codDet.Lose_reason__c = pandiandetailsMap.get(codDet.Id); } List pandiandetailsListMid = new List(); for (Consumable_order_details2__c cod2 : pandiandetailsList) { pandiandetailsListMid.add(cod2); if (pandiandetailsListMid.size() == 1000) { pandiandetailsListShow.add(pandiandetailsListMid); pandiandetailsListMid = new List(); } } if (pandiandetailsListMid.size() > 0) { pandiandetailsListShow.add(pandiandetailsListMid); } //分页 PaginatedAccounts paginatedAccounts = new PaginatedAccounts(); totalCount = codPageRecords.size(); paginatedAccounts.nextPageToken = (pageToken + pageSize < totalCount) ? pageToken + pageSize : null; paginatedAccounts.recordStart = pageToken + 1; paginatedAccounts.pageNumber = pageToken / pageSize + 1; Integer recordEnd = pageSize * paginatedAccounts.pageNumber; paginatedAccounts.recordEnd = totalCount >= recordEnd ? recordEnd : totalCount; paginatedAccounts.totalRecords = totalCount; Integer startIdx; Integer endIdx; List pageCodeRecords = new List(); startIdx = pageToken; endIdx = startIdx + pageSize; if (endIdx > codPageRecords.size()) { endIdx = codPageRecords.size(); } for (Integer i = startIdx; i < endIdx; i++) { pageCodeRecords.add(codPageRecords.get(i)); } data.put('paginatedAccounts', paginatedAccounts); data.put('pageCodeRecords', pageCodeRecords); //end System.debug('=====>codPageRecords2' + codPageRecords); System.debug('=====>consumableorderdetailsRecords' + consumableorderdetailsRecords); data.put('codPageRecords', JSON.serialize(codPageRecords)); data.put('consumableorderdetailsRecords', JSON.serialize(consumableorderdetailsRecords)); System.debug('iSinventory===>' + iSinventory); data.put('iSinventory', JSON.serialize(iSinventory)); System.debug('pandiandetailsMap===>' + pandiandetailsMap); data.put('pandiandetailsMap', pandiandetailsMap); data.put('reSet', reSet); data.put('consumableorderdetailsRecordsview', JSON.serialize(consumableorderdetailsRecordsview)); System.debug('=====>consumableorderdetailsRecordsview' + consumableorderdetailsRecordsview); res.code = 200; res.status = 'Sucess'; return res; } // 保存按钮 @AuraEnabled public static ResponseBodyLWC save( Boolean iSinventory, String consumableorderdetailsRecordsLWC, String accountid, String agencyProType, Map pandiandetailsMap, List reSet ) { List consumableorderdetailsRecords = (List) JSON.deserialize( consumableorderdetailsRecordsLWC, List.class ); agencyProType = agencyProType; accountid = accountid; pandiandetailsMap = pandiandetailsMap; reSet = reSet; System.debug('pandiandetailsMap===>' + pandiandetailsMap); ResponseBodyLWC res = new ResponseBodyLWC(); Map data = new Map(); res.entity = data; // 跳过明细2不必要更新 StaticParameter.EscapeConsumableOrderDetail2Trigger = true; if (!iSinventory) { return new ResponseBodyLWC('Error', 500, '请先录入BarCode', ''); // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'请先点【BarCode录入】')); // return null; } integer Lo = 0; for (ConsumableorderdetailsInfo header : consumableorderdetailsRecords) { if (header.check == true) { Lo++; } } if (Lo == 0) { iSinventory = false; // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR,'请选择要盘点的明细')); // return null; return new ResponseBodyLWC('Error', 500, '请选择要盘点的明细', ''); } for (ConsumableorderdetailsInfo header : consumableorderdetailsRecords) { if (header.check == true) { //ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, header.prod.Name__c + ' '+header.prod.Name__c)); //return null; if ((header.DiffReason == '' || header.DiffReason == null) && header.Diff > 0) { return new ResponseBodyLWC('Error', 500, header.prod.Name__c + '请输入差异原因', ''); // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, header.prod.Name__c + '请输入差异原因')); // return null; } else if ((header.DiffReason != '' && header.DiffReason != null) && header.Diff == 0) { // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, '无丢失产品,不需要填写差异原因')); // return null; return new ResponseBodyLWC('Error', 500, header.prod.Name__c + '无丢失产品,不需要填写差异原因', ''); } } } Integer orderDetNo = 1; Savepoint sp = Database.setSavepoint(); Consumable_order__c Po = new Consumable_order__c(); Po.Name = '*'; Po.Order_status__c = '批准'; Po.Inventory_date__c = Date.today(); Po.Order_type__c = '盘点'; Po.Dealer_Info__c = accountid; Po.Order_ProType__c = agencyProType; Po.RecordTypeid = System.Label.RT_ConOrder_Inventory; try { insert Po; eSetId = Po.id; List Consumable_order = [SELECT Name FROM Consumable_order__c WHERE id = :Po.id]; List InsList = new List(); List InsListUp = new List(); List updListAdjust = new List(); Map ErrorName = new Map(); Map CheckTF = new Map(); for (ConsumableorderdetailsInfo header : consumableorderdetailsRecords) { if (header.check == true) { Consumable_orderdetails__c insPan = new Consumable_orderdetails__c(); insPan = new Consumable_orderdetails__c(); String str = string.valueOf(orderDetNo); if (str.length() == 1) { str = '0' + str; } insPan.Name = Consumable_order[0].Name + '-' + str; insPan.Consumable_Product__c = header.ProdId; ErrorName.put(insPan.Consumable_Product__c, header.DiffReason); CheckTF.put(insPan.Consumable_product__c, true); insPan.Consumable_order__c = Po.Id; insPan.Lose_reason__c = header.DiffReason; insPan.Diff__c = header.Diff; insPan.Product_Refind__c = header.refind; insPan.inventory_sum__c = header.Pandian; insPan.Count_Sum__c = header.countid; insPan.RecordTypeId = System.Label.RT_ConOrderDetail1_Inventory; orderDetNo++; InsList.add(insPan); } } if (InsList.size() > 0) { insert InsList; } List showcod2 = [ SELECT Id, Name, Consumable_Product__c, Bar_Code__c, Consumable_Product__r.Name__c, Asset_Model_No__c, Isoverdue__c, Box_Piece__c, Bar_Code_search__c FROM Consumable_order_details2__c WHERE Id IN :pandiandetailsMap.keySet() ORDER BY Name ]; for (Consumable_order_details2__c cod : showcod2) { Consumable_order_details2__c InsDetail = new Consumable_order_details2__c(); InsDetail.Id = cod.Id; InsDetail.Consumable_Inventory_order__c = po.Id; InsDetail.Inventory_date__c = Date.today(); // 20210224 gzw CHAN-BXF3PG start // if(pandiandetailsMap.get(cod.Id) == '丢失' ){ if (pandiandetailsMap.get(cod.Id) == '丢失' && CheckTF.containsKey(cod.Consumable_product__c)) { // 20210224 gzw CHAN-BXF3PG end InsDetail.Lose_reason__c = ErrorName.get(cod.Consumable_product__c); InsDetail.Lose_Flag__c = true; } else if (pandiandetailsMap.get(cod.Id) == '寻回') { InsDetail.Lose_reason__c = ''; InsDetail.Lose_Flag__c = false; } else { continue; } InsListUp.add(InsDetail); } for (Consumable_order_details2__c rs : reSet) { rs.Inventory_date__c = Date.today(); } if (reSet.size() > 0) { update reSet; } if (InsListUp.size() > 0) { ControllerUtil.updateOrderDetailsSatus(InsListUp); // Commented By DTT - Li Jun for testing 20230407 } } catch (Exception e) { Database.rollback(sp); // ApexPages.addMessages(ex); return new ResponseBodyLWC('Error', 500, e.getMessage() + e.getLineNumber(), ''); // return null; } // FIXME impliment BarCodeListAdjust /************************************************************************************************/ // return ProS(); data.put('eSetId', eSetId); data.put('InsListUp', InsListUp); res.status = 'Success'; res.code = 200; System.debug('res = ' + res); return res; } //盘点一览 public PageReference ProS() { // 返回盘点一览 PageReference ref = new Pagereference('/apex/InventoryList?eSetId=' + eSetId); ref.setRedirect(true); return ref; } //CSV出力 public PageReference doClick() { Pagereference pr = page.InventoryCSV; return pr; } //分页Bean public class PaginatedAccounts { @AuraEnabled public Integer nextPageToken; @AuraEnabled public Integer pageNumber { get; set; } @AuraEnabled public Integer totalRecords { get; set; } @AuraEnabled public Integer recordStart { get; set; } @AuraEnabled public Integer recordEnd { get; set; } } // Data Bean @TestVisible class ConsumableorderdetailsInfo implements Comparable { @AuraEnabled public Boolean check { get; set; } @AuraEnabled public Consumable_orderdetails__c orderdetails1 { get; set; } @AuraEnabled public Consumable_order_details2__c orderdetails2 { get; set; } @AuraEnabled public Product2__c Prod { get; set; } @AuraEnabled public Decimal countid { get; set; } @AuraEnabled public String ProdId { get; set; } @AuraEnabled public Decimal Pandian { get; set; } @AuraEnabled public Decimal Diff { get; set; } @AuraEnabled public Decimal refind { get; set; } @AuraEnabled public String DiffReason { get; set; } @AuraEnabled public Boolean canSelect { get; set; } @AuraEnabled public Boolean sortBy { get; set; } @AuraEnabled public Decimal limitCount { get; set; } @AuraEnabled public Decimal overlimitCount { get; set; } @AuraEnabled public String boxPiece { get; set; } public ConsumableorderdetailsInfo(Consumable_order_details2__c e, string str) { orderdetails2 = e; Prod = e.Consumable_Product__r; //e.Lose_reason__c = str; DiffReason = str; } // 已存在消耗品明细用 public ConsumableorderdetailsInfo(Consumable_order_details2__c e) { check = false; orderdetails2 = e; Prod = e.Consumable_Product__r; canSelect = true; } public ConsumableorderdetailsInfo(Product2__c e) { check = false; //orderdetails1 = new Consumable_orderdetails__c(); Prod = e; canSelect = true; ProdId = string.valueOf(e.id); countid = 0; Pandian = 0; refind = 0; Diff = 0; limitCount = 0; overlimitCount = 0; } // 排序 public Integer compareTo(Object compareTo) { ConsumableorderdetailsInfo compareToesd = (ConsumableorderdetailsInfo) compareTo; Integer returnValue = 0; if (countid > compareToesd.countid) { returnValue = -1; } else if (countid < compareToesd.countid) { returnValue = 1; } return returnValue; } } }