| | |
| | | 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; } |
| | | // 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<ConsumableorderdetailsInfo> codPageRecords { get; set; } // 丢失和巡回的,画面显示用 |
| | | public static ApexPages.StandardSetController setCon { get; set; } |
| | | @AuraEnabled |
| | | public static List<Consumable_order_details2__c> setConDetails2 { get; set; } |
| | | public static Map<Id, String> pandiandetailsMap = new Map<Id, String>(); |
| | | /*****************検索用******************/ |
| | | public static String barcode { get; set; } |
| | | public static Boolean done { get; set; } |
| | | /*****************画面表示Bean******************/ |
| | | //页面主数据显示用 |
| | | // private static List<ConsumableorderdetailsInfo> consumableorderdetailsRecords; |
| | | public static List<ConsumableorderdetailsInfo> consumableorderdetailsRecords; |
| | | //盘点到的产品 |
| | | public static List<Consumable_order_details2__c> reSet = new List<Consumable_order_details2__c>(); |
| | | public static List<Consumable_order_details2__c> showcod2nid = new List<Consumable_order_details2__c>(); |
| | | 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<ConsumableorderdetailsInfo> codPageRecords { get; set; } // 丢失和巡回的,画面显示用 |
| | | public static ApexPages.StandardSetController setCon { get; set; } |
| | | @AuraEnabled |
| | | public static List<Consumable_order_details2__c> setConDetails2 { get; set; } |
| | | public static Map<Id, String> pandiandetailsMap = new Map<Id, String>(); |
| | | /*****************検索用******************/ |
| | | public static String barcode { get; set; } |
| | | public static Boolean done { get; set; } |
| | | /*****************画面表示Bean******************/ |
| | | //页面主数据显示用 |
| | | // private static List<ConsumableorderdetailsInfo> consumableorderdetailsRecords; |
| | | public static List<ConsumableorderdetailsInfo> consumableorderdetailsRecords; |
| | | //盘点到的产品 |
| | | public static List<Consumable_order_details2__c> reSet = new List<Consumable_order_details2__c>(); |
| | | public static List<Consumable_order_details2__c> showcod2nid = new List<Consumable_order_details2__c>(); |
| | | |
| | | //public List<Consumable_order_details2__c> pandiandetailsList { get; set; } |
| | | public static List<List<Consumable_order_details2__c>> pandiandetailsListShow { get; set; } |
| | | //寻回明细 |
| | | public static List<ConsumableorderdetailsInfo> consumableorderdetailsRecordserrordummy; // 丢失和巡回的,实际炒作用 |
| | | @AuraEnabled |
| | | public static List<List<ConsumableorderdetailsInfo>> consumableorderdetailsRecordsview { get; set; } // 产品单位的List |
| | | public static List<Consumable_order_details2__c> InsListUp = new List<Consumable_order_details2__c>(); |
| | | //public List<Consumable_order_details2__c> pandiandetailsList { get; set; } |
| | | public static List<List<Consumable_order_details2__c>> pandiandetailsListShow { |
| | | get; |
| | | set; |
| | | } |
| | | //寻回明细 |
| | | public static List<ConsumableorderdetailsInfo> consumableorderdetailsRecordserrordummy; // 丢失和巡回的,实际炒作用 |
| | | @AuraEnabled |
| | | public static List<List<ConsumableorderdetailsInfo>> consumableorderdetailsRecordsview { |
| | | get; |
| | | set; |
| | | } // 产品单位的List |
| | | public static List<Consumable_order_details2__c> InsListUp = new List<Consumable_order_details2__c>(); |
| | | |
| | | public static List<ConsumableorderdetailsInfo> consumableorderdetailsviewRecords; |
| | | public static List<ConsumableorderdetailsInfo> consumableorderdetailsviewRecords; |
| | | |
| | | public static Integer consumableorderdetailsCount { |
| | | get { |
| | | return consumableorderdetailsRecords == null ? 0 : consumableorderdetailsRecords.size(); |
| | | } |
| | | public static Integer consumableorderdetailsCount { |
| | | get { |
| | | return consumableorderdetailsRecords == null |
| | | ? 0 |
| | | : consumableorderdetailsRecords.size(); |
| | | } |
| | | //list<String> notexitlist = new list<String>(); |
| | | public static Map<String, String> reFindProduct = new Map<String, String>(); |
| | | //排序用 |
| | | // public static String sortKey; |
| | | // public static String preSortKey; |
| | | // public static Boolean sortOrderAsc; |
| | | // public static String[] sortOrder; |
| | | //private Set<String> carCodeListLose = new Set<String>(); //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; |
| | | } |
| | | //list<String> notexitlist = new list<String>(); |
| | | public static Map<String, String> reFindProduct = new Map<String, String>(); |
| | | //排序用 |
| | | // public static String sortKey; |
| | | // public static String preSortKey; |
| | | // public static Boolean sortOrderAsc; |
| | | // public static String[] sortOrder; |
| | | //private Set<String> carCodeListLose = new Set<String>(); //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<ConsumableorderdetailsInfo>(); |
| | | done = false; |
| | | public LexInventoryController() { |
| | | size = Integer.valueOf(System.Label.orderdetLimitsize); |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | done = false; |
| | | |
| | | consumableorderdetailsRecordsview = new List<List<ConsumableorderdetailsInfo>>(); |
| | | consumableorderdetailsRecordserrordummy = new List<ConsumableorderdetailsInfo>(); |
| | | codPageRecords = new List<ConsumableorderdetailsInfo>(); |
| | | //codPageRecordsShow = new List<ConsumableorderdetailsInfo>(); |
| | | consumableorderdetailsRecordsview = new List<List<ConsumableorderdetailsInfo>>(); |
| | | consumableorderdetailsRecordserrordummy = new List<ConsumableorderdetailsInfo>(); |
| | | codPageRecords = new List<ConsumableorderdetailsInfo>(); |
| | | //codPageRecordsShow = new List<ConsumableorderdetailsInfo>(); |
| | | } |
| | | |
| | | private static void initStandardController() { |
| | | // init standard controller |
| | | List<Consumable_order_details2__c> 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<Consumable_order_details2__c> cod2s() { |
| | | return setConDetails2; |
| | | } |
| | | //Changes the size of pagination |
| | | public static PageReference refreshPageSize() { |
| | | setCon.setPageSize(size); |
| | | //showcod2nid = cod2s(); |
| | | makepagerecords(); |
| | | return null; |
| | | } |
| | | |
| | | public static List<ConsumableorderdetailsInfo> makepagerecords() { |
| | | showcod2nid = cod2s(); |
| | | codPageRecords = new List<ConsumableorderdetailsInfo>(); |
| | | for (Consumable_order_details2__c cod2 : showcod2nid) { |
| | | codPageRecords.add( |
| | | new ConsumableorderdetailsInfo(cod2, pandiandetailsMap.get(cod2.Id)) |
| | | ); |
| | | } |
| | | System.debug('===>codPageRecords1' + codPageRecords); |
| | | return codPageRecords; |
| | | } |
| | | |
| | | private static void initStandardController() { |
| | | // init standard controller |
| | | List<Consumable_order_details2__c> 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(); |
| | | // 画面初始化 |
| | | @AuraEnabled |
| | | public static ResponseBodyLWC init() { |
| | | ResponseBodyLWC res = new ResponseBodyLWC(); |
| | | Map<String, object> data = new Map<String, object>(); |
| | | res.entity = data; |
| | | |
| | | consumableorderdetailsRecordsview = new List<List<ConsumableorderdetailsInfo>>(); |
| | | setConDetails2 = new List<Consumable_order_details2__c>(); |
| | | String url = '在库调整一览'; |
| | | fileName = EncodingUtil.urlEncode(url, 'UTF-8'); |
| | | List<Consumable_order_details2__c> 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'; |
| | | } |
| | | |
| | | public static List<Consumable_order_details2__c> cod2s() { |
| | | return setConDetails2; |
| | | } |
| | | //Changes the size of pagination |
| | | public static PageReference refreshPageSize() { |
| | | setCon.setPageSize(size); |
| | | //showcod2nid = cod2s(); |
| | | makepagerecords(); |
| | | return null; |
| | | } |
| | | |
| | | public static List<ConsumableorderdetailsInfo> makepagerecords() { |
| | | showcod2nid = cod2s(); |
| | | codPageRecords = new List<ConsumableorderdetailsInfo>(); |
| | | 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<String, object> data = new Map<String, object>(); |
| | | res.entity = data; |
| | | |
| | | consumableorderdetailsRecordsview = new List<List<ConsumableorderdetailsInfo>>(); |
| | | setConDetails2 = new List<Consumable_order_details2__c>(); |
| | | String url = '在库调整一览'; |
| | | fileName = EncodingUtil.urlEncode(url, 'UTF-8'); |
| | | List<Consumable_order_details2__c> 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<ConsumableorderdetailsInfo>(); |
| | | Map<String, Product2__c> midMap = new Map<String, Product2__c>(); |
| | | List<ConsumableorderdetailsInfo> boxRecords = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, ConsumableorderdetailsInfo> newMidBoxMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | Map<String, ConsumableorderdetailsInfo> newMidPieceMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | //DB202302357027 消耗品追溯系统无法正常使用——盘点页面操作即报错 fy start |
| | | //开始制作表头数据 |
| | | // List<Product2__c> 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<Consumable_order_details2__c> 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<Id> Product2cIdSet = new Set<Id>(); |
| | | for (Consumable_order_details2__c con_or_d2item : ProductCount_Res) { |
| | | Product2cIdSet.add(con_or_d2item.Consumable_Product__c); |
| | | } |
| | | List<Product2__c> 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<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsbreak = new List<ConsumableorderdetailsInfo>(); |
| | | List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsbreakover = new List<ConsumableorderdetailsInfo>(); |
| | | ConsumableorderdetailsInfo c = null; |
| | | ConsumableorderdetailsRecordsbreak.clear(); |
| | | ConsumableorderdetailsRecordsbreakover.clear(); |
| | | consumableorderdetailsRecordsview.clear(); |
| | | //选择产品view |
| | | ConsumableorderdetailsRecordsbreak = new List<ConsumableorderdetailsInfo>(); |
| | | ConsumableorderdetailsRecordsbreakover = new List<ConsumableorderdetailsInfo>(); |
| | | 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<String> ParseBarCode(String Code) { |
| | | Map<String, Integer> barcodeCountMap = new Map<String, Integer>(); |
| | | String[] Cache = new List<String>{}; |
| | | Cache = Code.split('\n'); |
| | | List<String> Buff = new List<String>(); |
| | | 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<ConsumableorderdetailsInfo> consumableorderdetailsRecordsLWC){ |
| | | // return new ResponseBodyLWC('Error',500, 'test', ''); |
| | | sqlagencyProType = '%' + agencyProType + '%'; |
| | | Account accountInfo = [ |
| | | SELECT Name, Dealer_discount__c |
| | | FROM account |
| | | WHERE id = :accountid |
| | | ]; |
| | | accountName = accountInfo.Name; |
| | | consumableorderdetailsRecords = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, Product2__c> midMap = new Map<String, Product2__c>(); |
| | | List<ConsumableorderdetailsInfo> boxRecords = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, ConsumableorderdetailsInfo> newMidBoxMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | Map<String, ConsumableorderdetailsInfo> newMidPieceMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | //DB202302357027 消耗品追溯系统无法正常使用——盘点页面操作即报错 fy start |
| | | //开始制作表头数据 |
| | | // List<Product2__c> 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]); |
| | | // } |
| | | //========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<ConsumableorderdetailsInfo> consumableorderdetailsRecords = (List<ConsumableorderdetailsInfo>) JSON.deserialize( |
| | | consumableorderdetailsRecordsLWC, |
| | | List<ConsumableorderdetailsInfo>.class |
| | | ); |
| | | // ConsumableorderdetailsInfo[] consumableorderdetailsRecords=(List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetailsRecordsLWC,List<ConsumableorderdetailsInfo>.class); |
| | | system.debug('=====>consumableorderdetailsRecordsLWC' + consumableorderdetailsRecordsLWC); |
| | | ResponseBodyLWC res = new ResponseBodyLWC(); |
| | | Map<String, object> data = new Map<String, object>(); |
| | | res.entity = data; |
| | | |
| | | sqlagencyProType = '%' + agencyProType + '%'; |
| | | System.debug('sqlagencyProType==>' + sqlagencyProType); |
| | | System.debug('accountName==>' + accountName); |
| | | System.debug('userWorkLocation==>' + userWorkLocation); |
| | | |
| | | /* BarCodelist做成 */ |
| | | //FIXME barcodeSet 做成,ProductCount_ResSet 做成 |
| | | List<Consumable_order_details2__c> pandiandetailsList = new List<Consumable_order_details2__c>(); |
| | | pandiandetailsListShow = new List<List<Consumable_order_details2__c>>(); |
| | | done = false; |
| | | List<String> BarCodeListP = ParseBarCode(barcode); |
| | | System.debug('BarCodeListP===>' + BarCodeListP); |
| | | //查询库存 追加返品库存 |
| | | List<Consumable_order_details2__c> 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<String, ConsumableorderdetailsInfo> barCodeListAdjustMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | //barCodeListLoseMap.clear(); |
| | | Set<String> carCodeListLose = new Set<String>(); |
| | | List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsAdjust = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, String> proIdNotinpage = new Map<String, String>(); |
| | | List<Consumable_order_details2__c> reFindProductList = new List<Consumable_order_details2__c>(); |
| | | codPageRecords = new List<ConsumableorderdetailsInfo>(); |
| | | consumableorderdetailsRecordserrordummy = new List<ConsumableorderdetailsInfo>(); |
| | | List<ConsumableorderdetailsInfo> reFindProductaddtopage = new List<ConsumableorderdetailsInfo>(); |
| | | pandiandetailsMap.clear(); |
| | | reSet = new List<Consumable_order_details2__c>(); |
| | | /* 判断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<Consumable_order_details2__c> 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<String, Consumable_order_details2__c> needreturnMap = new Map<String, Consumable_order_details2__c>(); |
| | | 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<String, Consumable_order_details2__c> otherAgProMap = new Map<String, Consumable_order_details2__c>(); |
| | | 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<Consumable_order_details2__c> showcod2 = new List<Consumable_order_details2__c>(); |
| | | 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<Consumable_order_details2__c>(); |
| | | 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<Consumable_order_details2__c> pandiandetailsListMid = new List<Consumable_order_details2__c>(); |
| | | for (Consumable_order_details2__c cod2 : pandiandetailsList) { |
| | | pandiandetailsListMid.add(cod2); |
| | | if (pandiandetailsListMid.size() == 1000) { |
| | | pandiandetailsListShow.add(pandiandetailsListMid); |
| | | pandiandetailsListMid = new List<Consumable_order_details2__c>(); |
| | | } |
| | | } |
| | | 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<ConsumableorderdetailsInfo> pageCodeRecords = new List<ConsumableorderdetailsInfo>(); |
| | | 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<String, String> showproductIdMap = new Map<String, String>(); |
| | | 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<String, Integer> pandianProdIdCountMap = new Map<String, Integer>(); // ProdId 単位 |
| | | // 20200509 add gzw 记录需要销存数量 |
| | | Map<String, Integer> pandianoverdueCountMap = new Map<String, Integer>(); // ProdId 単位 |
| | | // 20200509 add gzw 记录需要销存数量 |
| | | Map<String, ConsumableorderdetailsInfo> barCodeListPandianMap = new Map<String, ConsumableorderdetailsInfo>(); // 明細バーコード 単位 |
| | | //盘点到的明细 |
| | | 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<Consumable_order_details2__c> 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<String, Consumable_order_details2__c> otherAgProMap = new Map<String, Consumable_order_details2__c>(); |
| | | 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<Consumable_order_details2__c> productAdjust = new List<Consumable_order_details2__c>(); |
| | | 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<String, Product2__c> midMap = new Map<String, Product2__c>(); |
| | | List<ConsumableorderdetailsInfo> boxRecords = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, ConsumableorderdetailsInfo> newMidBoxMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | Map<String, ConsumableorderdetailsInfo> newMidPieceMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | List<Product2__c> 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<Consumable_order_details2__c> 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<String, Consumable_order_details2__c> needreturnMap = new Map<String, Consumable_order_details2__c>(); |
| | | for (Consumable_order_details2__c cod2 : reSet2) { |
| | | needreturnMap.put(cod2.Bar_Code__c, cod2); |
| | | } |
| | | //// 经销商之间或者同一经销商不同工作地调货 |
| | | //List<Consumable_order_details2__c> 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<String,Consumable_order_details2__c> otherAgProMap = new Map<String,Consumable_order_details2__c>(); |
| | | //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; |
| | | } |
| | | } |
| | | //查询库存 追加返品库存 |
| | | List<Consumable_order_details2__c> 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<Id> Product2cIdSet = new Set<Id>(); |
| | | for (Consumable_order_details2__c con_or_d2item : ProductCount_Res) { |
| | | Product2cIdSet.add(con_or_d2item.Consumable_Product__c); |
| | | } |
| | | List<Product2__c> 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 { |
| | | 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; |
| | | } |
| | | } |
| | | 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 |
| | | ); |
| | | } |
| | | |
| | | //寻回做成 |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | | } 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 |
| | | ); |
| | | } |
| | | if (pandiandetailsMap.keySet().size() > 0) { |
| | | List<Consumable_order_details2__c> 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<Consumable_order_details2__c> pandiandetailsListMid = new List<Consumable_order_details2__c>(); |
| | | for (Consumable_order_details2__c cod2 : pandiandetailsList) { |
| | | pandiandetailsListMid.add(cod2); |
| | | if (pandiandetailsListMid.size() == 1000) { |
| | | pandiandetailsListShow.add(pandiandetailsListMid); |
| | | pandiandetailsListMid = new List<Consumable_order_details2__c>(); |
| | | } |
| | | } |
| | | 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<ConsumableorderdetailsInfo> pageCodeRecords = new List<ConsumableorderdetailsInfo>(); |
| | | 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<Id, String> pandiandetailsMap, |
| | | List<Consumable_order_details2__c> reSet |
| | | ) { |
| | | List<ConsumableorderdetailsInfo> consumableorderdetailsRecords = (List<ConsumableorderdetailsInfo>) JSON.deserialize( |
| | | consumableorderdetailsRecordsLWC, |
| | | List<ConsumableorderdetailsInfo>.class |
| | | 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 + '个') |
| | | ); |
| | | agencyProType = agencyProType; |
| | | accountid = accountid; |
| | | pandiandetailsMap = pandiandetailsMap; |
| | | reSet = reSet; |
| | | System.debug('pandiandetailsMap===>' + pandiandetailsMap); |
| | | //newMidPieceMap移除已经添加的Piece |
| | | newMidPieceMap.remove(bss.Prod.Id + '个'); |
| | | } |
| | | } |
| | | for (ConsumableorderdetailsInfo bss : newMidPieceMap.values()) { |
| | | consumableorderdetailsRecords.add(newMidPieceMap.get(bss.Prod.Id + '个')); |
| | | } |
| | | //consumableorderdetailsCount = consumableorderdetailsRecords.size(); |
| | | listCut(); |
| | | |
| | | ResponseBodyLWC res = new ResponseBodyLWC(); |
| | | Map<String, object> data = new Map<String, object>(); |
| | | 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; |
| | | 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<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsbreak = new List<ConsumableorderdetailsInfo>(); |
| | | List<ConsumableorderdetailsInfo> ConsumableorderdetailsRecordsbreakover = new List<ConsumableorderdetailsInfo>(); |
| | | ConsumableorderdetailsInfo c = null; |
| | | ConsumableorderdetailsRecordsbreak.clear(); |
| | | ConsumableorderdetailsRecordsbreakover.clear(); |
| | | consumableorderdetailsRecordsview.clear(); |
| | | //选择产品view |
| | | ConsumableorderdetailsRecordsbreak = new List<ConsumableorderdetailsInfo>(); |
| | | ConsumableorderdetailsRecordsbreakover = new List<ConsumableorderdetailsInfo>(); |
| | | 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); |
| | | } |
| | | integer Lo = 0; |
| | | for (ConsumableorderdetailsInfo header : consumableorderdetailsRecords) { |
| | | if (header.check == true) { |
| | | Lo++; |
| | | } |
| | | consumableorderdetailsRecordsview.add(ConsumableorderdetailsRecordsbreak); |
| | | consumableorderdetailsRecordsview.add( |
| | | ConsumableorderdetailsRecordsbreakover |
| | | ); |
| | | } else { |
| | | consumableorderdetailsRecordsview.add(consumableorderdetailsRecords); |
| | | } |
| | | } |
| | | //========20160311======ADD_Start================================ |
| | | // 将页面或取得BarCode去掉重复的,转换成List |
| | | //========20160311======ADD_Start================================ |
| | | public static List<String> ParseBarCode(String Code) { |
| | | Map<String, Integer> barcodeCountMap = new Map<String, Integer>(); |
| | | String[] Cache = new List<String>{}; |
| | | Cache = Code.split('\n'); |
| | | List<String> Buff = new List<String>(); |
| | | 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<ConsumableorderdetailsInfo> 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<ConsumableorderdetailsInfo> consumableorderdetailsRecords = (List<ConsumableorderdetailsInfo>) JSON.deserialize( |
| | | consumableorderdetailsRecordsLWC, |
| | | List<ConsumableorderdetailsInfo>.class |
| | | ); |
| | | // ConsumableorderdetailsInfo[] consumableorderdetailsRecords=(List<ConsumableorderdetailsInfo>)JSON.deserialize(consumableorderdetailsRecordsLWC,List<ConsumableorderdetailsInfo>.class); |
| | | system.debug( |
| | | '=====>consumableorderdetailsRecordsLWC' + |
| | | consumableorderdetailsRecordsLWC |
| | | ); |
| | | ResponseBodyLWC res = new ResponseBodyLWC(); |
| | | Map<String, object> data = new Map<String, object>(); |
| | | res.entity = data; |
| | | |
| | | sqlagencyProType = '%' + agencyProType + '%'; |
| | | System.debug('sqlagencyProType==>' + sqlagencyProType); |
| | | System.debug('accountName==>' + accountName); |
| | | System.debug('userWorkLocation==>' + userWorkLocation); |
| | | |
| | | /* BarCodelist做成 */ |
| | | //FIXME barcodeSet 做成,ProductCount_ResSet 做成 |
| | | List<Consumable_order_details2__c> pandiandetailsList = new List<Consumable_order_details2__c>(); |
| | | pandiandetailsListShow = new List<List<Consumable_order_details2__c>>(); |
| | | done = false; |
| | | List<String> BarCodeListP = ParseBarCode(barcode); |
| | | System.debug('BarCodeListP===>' + BarCodeListP); |
| | | //查询库存 追加返品库存 |
| | | List<Consumable_order_details2__c> 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<String, ConsumableorderdetailsInfo> barCodeListAdjustMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | //barCodeListLoseMap.clear(); |
| | | Set<String> carCodeListLose = new Set<String>(); |
| | | List<ConsumableorderdetailsInfo> consumableorderdetailsRecordsAdjust = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, String> proIdNotinpage = new Map<String, String>(); |
| | | List<Consumable_order_details2__c> reFindProductList = new List<Consumable_order_details2__c>(); |
| | | codPageRecords = new List<ConsumableorderdetailsInfo>(); |
| | | consumableorderdetailsRecordserrordummy = new List<ConsumableorderdetailsInfo>(); |
| | | List<ConsumableorderdetailsInfo> reFindProductaddtopage = new List<ConsumableorderdetailsInfo>(); |
| | | pandiandetailsMap.clear(); |
| | | reSet = new List<Consumable_order_details2__c>(); |
| | | /* 判断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); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | 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 + '无丢失产品,不需要填写差异原因', ''); |
| | | } |
| | | |
| | | //已经出库的产品 |
| | | List<Consumable_order_details2__c> 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<String, Consumable_order_details2__c> needreturnMap = new Map<String, Consumable_order_details2__c>(); |
| | | 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<String, Consumable_order_details2__c> otherAgProMap = new Map<String, Consumable_order_details2__c>(); |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | | 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__c> Consumable_order = [SELECT Name FROM Consumable_order__c WHERE id = :Po.id]; |
| | | List<Consumable_orderdetails__c> InsList = new List<Consumable_orderdetails__c>(); |
| | | List<Consumable_order_details2__c> InsListUp = new List<Consumable_order_details2__c>(); |
| | | List<Consumable_order_details2__c> updListAdjust = new List<Consumable_order_details2__c>(); |
| | | Map<String, String> ErrorName = new Map<String, String>(); |
| | | Map<String, Boolean> CheckTF = new Map<String, Boolean>(); |
| | | 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 ( |
| | | 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 (InsList.size() > 0) { |
| | | insert InsList; |
| | | } |
| | | List<Consumable_order_details2__c> 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; |
| | | 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; |
| | | } |
| | | InsListUp.add(InsDetail); |
| | | consumableorderdetailsRecordserrordummy.add( |
| | | new ConsumableorderdetailsInfo(ProductCount_Res[i], '丢失') |
| | | ); |
| | | pandiandetailsMap.put(ProductCount_Res[i].Id, '丢失'); |
| | | carCodeListLose.add(ProductCount_Res[i].Bar_Code_search__c); |
| | | } |
| | | } |
| | | 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; |
| | | } |
| | | } else { |
| | | ass.Pandian = 0; |
| | | ass.Diff = 0; |
| | | } |
| | | // 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; |
| | | } |
| | | List<Consumable_order_details2__c> showcod2 = new List<Consumable_order_details2__c>(); |
| | | 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<Consumable_order_details2__c>(); |
| | | 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<Consumable_order_details2__c> pandiandetailsListMid = new List<Consumable_order_details2__c>(); |
| | | for (Consumable_order_details2__c cod2 : pandiandetailsList) { |
| | | pandiandetailsListMid.add(cod2); |
| | | if (pandiandetailsListMid.size() == 1000) { |
| | | pandiandetailsListShow.add(pandiandetailsListMid); |
| | | pandiandetailsListMid = new List<Consumable_order_details2__c>(); |
| | | } |
| | | } |
| | | 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<ConsumableorderdetailsInfo> pageCodeRecords = new List<ConsumableorderdetailsInfo>(); |
| | | 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; |
| | | } |
| | | |
| | | //盘点一览 |
| | | public PageReference ProS() { |
| | | // 返回盘点一览 |
| | | PageReference ref = new Pagereference('/apex/InventoryList?eSetId=' + eSetId); |
| | | ref.setRedirect(true); |
| | | return ref; |
| | | //CHAN-B7J4NB 只有一个时,盘点不到 |
| | | //init(); |
| | | //CHAN-B7J4NB |
| | | Map<String, String> showproductIdMap = new Map<String, String>(); |
| | | for (ConsumableorderdetailsInfo ass : consumableorderdetailsRecords) { |
| | | showproductIdMap.put( |
| | | ass.prod.Id + ass.boxPiece, |
| | | ass.prod.Id + ass.boxPiece |
| | | ); |
| | | } |
| | | //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; } |
| | | // 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<String, Integer> pandianProdIdCountMap = new Map<String, Integer>(); // ProdId 単位 |
| | | // 20200509 add gzw 记录需要销存数量 |
| | | Map<String, Integer> pandianoverdueCountMap = new Map<String, Integer>(); // ProdId 単位 |
| | | // 20200509 add gzw 记录需要销存数量 |
| | | Map<String, ConsumableorderdetailsInfo> barCodeListPandianMap = new Map<String, ConsumableorderdetailsInfo>(); // 明細バーコード 単位 |
| | | //盘点到的明细 |
| | | 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 |
| | | ); |
| | | } |
| | | } |
| | | |
| | | // 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; |
| | | // 经销商之间或者同一经销商不同工作地调货 |
| | | List<Consumable_order_details2__c> 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<String, Consumable_order_details2__c> otherAgProMap = new Map<String, Consumable_order_details2__c>(); |
| | | 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<Consumable_order_details2__c> productAdjust = new List<Consumable_order_details2__c>(); |
| | | 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 |
| | | ]; |
| | | |
| | | // 已存在消耗品明细用 |
| | | public ConsumableorderdetailsInfo(Consumable_order_details2__c e) { |
| | | check = false; |
| | | orderdetails2 = e; |
| | | Prod = e.Consumable_Product__r; |
| | | canSelect = true; |
| | | 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; |
| | | } |
| | | 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; |
| | | } |
| | | 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<String, Product2__c> midMap = new Map<String, Product2__c>(); |
| | | List<ConsumableorderdetailsInfo> boxRecords = new List<ConsumableorderdetailsInfo>(); |
| | | Map<String, ConsumableorderdetailsInfo> newMidBoxMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | Map<String, ConsumableorderdetailsInfo> newMidPieceMap = new Map<String, ConsumableorderdetailsInfo>(); |
| | | List<Product2__c> 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; |
| | | } |
| | | return returnValue; |
| | | 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<Consumable_order_details2__c> 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<String, Consumable_order_details2__c> needreturnMap = new Map<String, Consumable_order_details2__c>(); |
| | | for (Consumable_order_details2__c cod2 : reSet2) { |
| | | needreturnMap.put(cod2.Bar_Code__c, cod2); |
| | | } |
| | | //// 经销商之间或者同一经销商不同工作地调货 |
| | | //List<Consumable_order_details2__c> 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<String,Consumable_order_details2__c> otherAgProMap = new Map<String,Consumable_order_details2__c>(); |
| | | //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<Consumable_order_details2__c> 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<Consumable_order_details2__c> pandiandetailsListMid = new List<Consumable_order_details2__c>(); |
| | | for (Consumable_order_details2__c cod2 : pandiandetailsList) { |
| | | pandiandetailsListMid.add(cod2); |
| | | if (pandiandetailsListMid.size() == 1000) { |
| | | pandiandetailsListShow.add(pandiandetailsListMid); |
| | | pandiandetailsListMid = new List<Consumable_order_details2__c>(); |
| | | } |
| | | } |
| | | 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<ConsumableorderdetailsInfo> pageCodeRecords = new List<ConsumableorderdetailsInfo>(); |
| | | 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<Id, String> pandiandetailsMap, |
| | | List<Consumable_order_details2__c> reSet |
| | | ) { |
| | | List<ConsumableorderdetailsInfo> consumableorderdetailsRecords = (List<ConsumableorderdetailsInfo>) JSON.deserialize( |
| | | consumableorderdetailsRecordsLWC, |
| | | List<ConsumableorderdetailsInfo>.class |
| | | ); |
| | | agencyProType = agencyProType; |
| | | accountid = accountid; |
| | | pandiandetailsMap = pandiandetailsMap; |
| | | reSet = reSet; |
| | | System.debug('pandiandetailsMap===>' + pandiandetailsMap); |
| | | |
| | | ResponseBodyLWC res = new ResponseBodyLWC(); |
| | | Map<String, object> data = new Map<String, object>(); |
| | | 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__c> Consumable_order = [ |
| | | SELECT Name |
| | | FROM Consumable_order__c |
| | | WHERE id = :Po.id |
| | | ]; |
| | | List<Consumable_orderdetails__c> InsList = new List<Consumable_orderdetails__c>(); |
| | | List<Consumable_order_details2__c> InsListUp = new List<Consumable_order_details2__c>(); |
| | | List<Consumable_order_details2__c> updListAdjust = new List<Consumable_order_details2__c>(); |
| | | Map<String, String> ErrorName = new Map<String, String>(); |
| | | Map<String, Boolean> CheckTF = new Map<String, Boolean>(); |
| | | 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<Consumable_order_details2__c> 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; |
| | | } |
| | | } |
| | | } |