| | |
| | | public without sharing class LexOutboundorderImportController { |
| | | //经销商产品分类 |
| | | public static String agencyProType { get; set; } |
| | | private static String sqlagencyProType; |
| | | public static Blob csvFileBody { get; set; } |
| | | public static string csvAsString { get; set; } |
| | | public static String[] csvFileLines { get; set; } |
| | | public static List<ConsumableorderdetailsInfo> orderRecords { get; set; } |
| | | public static List<String[]> csvRecordStr { get; set; } |
| | | public static Map<String, String> hospitalconMap { get; set; } |
| | | public static Map<String, String> product2conMap { get; set; } |
| | | public static Map<String, String> hospitalSysMap { get; set; } |
| | | public static Map<String, String> secondAgencyMap { get; set; } |
| | | private static String accountid { get; set; } |
| | | private static String accountName { get; set; } |
| | | private static Integer messageCount; |
| | | public static boolean saveFLGbln { get; set; } |
| | | private static List<String> barcodeList { get; set; } |
| | | private static List<String> barcodePieceList { get; set; } |
| | | public static Map<String, Integer> barcodePieceMap { get; set; } |
| | | public static boolean errorflg { get; set; } |
| | | public static String errorMessage { get; set; } |
| | | private static String userWorkLocation { get; set; } |
| | | public static String errorMsg { get; set; } |
| | | //经销商产品分类 |
| | | public static String agencyProType { get; set; } |
| | | private static String sqlagencyProType; |
| | | public static Blob csvFileBody { get; set; } |
| | | public static string csvAsString { get; set; } |
| | | public static String[] csvFileLines { get; set; } |
| | | public static List<ConsumableorderdetailsInfo> orderRecords { get; set; } |
| | | public static List<String[]> csvRecordStr { get; set; } |
| | | public static Map<String, String> hospitalconMap { get; set; } |
| | | public static Map<String, String> product2conMap { get; set; } |
| | | public static Map<String, String> hospitalSysMap { get; set; } |
| | | public static Map<String, String> secondAgencyMap { get; set; } |
| | | private static String accountid { get; set; } |
| | | private static String accountName { get; set; } |
| | | private static Integer messageCount; |
| | | public static boolean saveFLGbln { get; set; } |
| | | private static List<String> barcodeList { get; set; } |
| | | private static List<String> barcodePieceList { get; set; } |
| | | public static Map<String, Integer> barcodePieceMap { get; set; } |
| | | public static boolean errorflg { get; set; } |
| | | public static String errorMessage { get; set; } |
| | | private static String userWorkLocation { get; set; } |
| | | public static String errorMsg { get; set; } |
| | | |
| | | @AuraEnabled |
| | | public static ResponseBodyLWC init() { |
| | | ResponseBodyLWC res = new ResponseBodyLWC(); |
| | | Map<String, object> data = new Map<String, object>(); |
| | | res.entity = data; |
| | | messageCount = 0; |
| | | errorflg = false; |
| | | errorMessage = null; |
| | | User useracc = [ |
| | | SELECT accountid, Work_Location__c, UserPro_Type__c |
| | | FROM user |
| | | WHERE id = :UserInfo.getUserId() |
| | | ]; |
| | | accountid = Useracc.accountid; |
| | | userWorkLocation = Useracc.Work_Location__c; |
| | | agencyProType = Useracc.UserPro_Type__c; |
| | | if (String.isBlank(Useracc.UserPro_Type__c)) { |
| | | agencyProType = 'ET'; |
| | | @AuraEnabled |
| | | public static ResponseBodyLWC init() { |
| | | ResponseBodyLWC res = new ResponseBodyLWC(); |
| | | Map<String, object> data = new Map<String, object>(); |
| | | res.entity = data; |
| | | messageCount = 0; |
| | | errorflg = false; |
| | | errorMessage = null; |
| | | User useracc = [SELECT accountid, Work_Location__c, UserPro_Type__c FROM user WHERE id = :UserInfo.getUserId()]; |
| | | 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 FROM account WHERE id = :accountid]; |
| | | accountName = accountInfo.name; |
| | | |
| | | data.put('accountid', accountid); |
| | | data.put('userWorkLocation', userWorkLocation); |
| | | data.put('agencyProType', agencyProType); |
| | | data.put('accountName', accountName); |
| | | data.put('sqlagencyProType', sqlagencyProType); |
| | | res.status = 'Success'; |
| | | res.code = 200; |
| | | res.msg = ''; |
| | | System.debug('res:' + res); |
| | | return res; |
| | | } |
| | | sqlagencyProType = '%' + agencyProType + '%'; |
| | | Account accountInfo = [SELECT Name FROM account WHERE id = :accountid]; |
| | | accountName = accountInfo.name; |
| | | |
| | | data.put('accountid', accountid); |
| | | data.put('userWorkLocation', userWorkLocation); |
| | | data.put('agencyProType', agencyProType); |
| | | data.put('accountName', accountName); |
| | | data.put('sqlagencyProType', sqlagencyProType); |
| | | res.status = 'Success'; |
| | | res.code = 200; |
| | | res.msg = ''; |
| | | System.debug('res:' + res); |
| | | return res; |
| | | } |
| | | @AuraEnabled |
| | | public static ResponseBodyLWC importCSVFile( |
| | | String base64DataLwc, |
| | | String sqlagencyProTypeLwc, |
| | | String userWorkLocationLwc, |
| | | String accountNameLwc |
| | | ) { |
| | | System.debug('enter importCSVFile'); |
| | | ResponseBodyLWC res = new ResponseBodyLWC(); |
| | | Map<String, object> data = new Map<String, object>(); |
| | | res.entity = data; |
| | | |
| | | @AuraEnabled |
| | | public static ResponseBodyLWC importCSVFile( |
| | | String base64DataLwc, |
| | | String sqlagencyProTypeLwc, |
| | | String userWorkLocationLwc, |
| | | String accountNameLwc |
| | | ) { |
| | | System.debug('enter importCSVFile'); |
| | | ResponseBodyLWC res = new ResponseBodyLWC(); |
| | | Map<String, object> data = new Map<String, object>(); |
| | | res.entity = data; |
| | | errorMsg = ''; |
| | | sqlagencyProType = sqlagencyProTypeLwc; |
| | | userWorkLocation = userWorkLocationLwc; |
| | | accountName = accountNameLwc; |
| | | String base64Data = EncodingUtil.urlDecode(base64DataLwc, 'UTF-8'); |
| | | csvFileBody = EncodingUtil.base64Decode(base64Data); |
| | | product2conMap = new Map<String, String>(); |
| | | |
| | | errorMsg = ''; |
| | | sqlagencyProType = sqlagencyProTypeLwc; |
| | | userWorkLocation = userWorkLocationLwc; |
| | | accountName = accountNameLwc; |
| | | String base64Data = EncodingUtil.urlDecode(base64DataLwc, 'UTF-8'); |
| | | csvFileBody = EncodingUtil.base64Decode(base64Data); |
| | | product2conMap = new Map<String, String>(); |
| | | |
| | | messageCount = 0; |
| | | errormessage = null; |
| | | saveFLGbln = false; |
| | | csvRecordStr = new List<String[]>(); |
| | | barcodeList = new List<String>(); |
| | | barcodePieceMap = new Map<String, Integer>(); |
| | | barcodePieceList = new List<String>(); |
| | | orderRecords = new List<ConsumableorderdetailsInfo>(); |
| | | hospitalconMap = new Map<String, String>(); |
| | | if (csvFileBody == null) { |
| | | errorflg = true; |
| | | saveFLGbln = true; |
| | | // errormessage = '读取内容为空。'; |
| | | return new ResponseBodyLWC('Error', 500, '读取内容为空。', ''); |
| | | } else { |
| | | //产品数据查找 |
| | | map<string, string> orderNameMap = new Map<string, string>(); |
| | | try { |
| | | csvAsString = csvFileBody.toString(); |
| | | csvFileLines = csvAsString.split('\n'); |
| | | for (Integer i = 0; i < csvFileLines.size(); i++) { |
| | | string[] csvRecordData = csvFileLines[i].split(','); |
| | | if (String.isNotBlank(csvRecordData[6])) { |
| | | barcodeList.add(csvRecordData[6]); |
| | | if (String.valueOf(csvRecordData[9]) == '个') { |
| | | barcodePieceList.add(csvRecordData[6]); |
| | | barcodePieceMap.put( |
| | | csvRecordData[6], |
| | | Integer.valueOf(csvRecordData[7]) |
| | | ); |
| | | messageCount = 0; |
| | | errormessage = null; |
| | | saveFLGbln = false; |
| | | csvRecordStr = new List<String[]>(); |
| | | barcodeList = new List<String>(); |
| | | barcodePieceMap = new Map<String, Integer>(); |
| | | barcodePieceList = new List<String>(); |
| | | orderRecords = new List<ConsumableorderdetailsInfo>(); |
| | | hospitalconMap = new Map<String, String>(); |
| | | if (csvFileBody == null) { |
| | | errorflg = true; |
| | | saveFLGbln = true; |
| | | // errormessage = '读取内容为空。'; |
| | | return new ResponseBodyLWC('Error', 500, '读取内容为空。', ''); |
| | | } else { |
| | | //产品数据查找 |
| | | map<string, string> orderNameMap = new Map<string, string>(); |
| | | try { |
| | | csvAsString = csvFileBody.toString(); |
| | | csvFileLines = csvAsString.split('\n'); |
| | | for (Integer i = 0; i < csvFileLines.size(); i++) { |
| | | string[] csvRecordData = csvFileLines[i].split(','); |
| | | if (String.isNotBlank(csvRecordData[6])) { |
| | | barcodeList.add(csvRecordData[6]); |
| | | if (String.valueOf(csvRecordData[9]) == '个') { |
| | | barcodePieceList.add(csvRecordData[6]); |
| | | barcodePieceMap.put(csvRecordData[6], Integer.valueOf(csvRecordData[7])); |
| | | } |
| | | } |
| | | String[] csvRecordDataStr = new String[13]; |
| | | for (Integer j = 0; j < csvRecordData.size(); j++) { |
| | | csvRecordDataStr[j] = csvRecordData[j]; |
| | | } |
| | | if (i == 0) { |
| | | csvRecordDataStr[12] = '产品'; |
| | | } else { |
| | | csvRecordDataStr[12] = ''; |
| | | } |
| | | csvRecordStr.add(csvRecordDataStr); |
| | | } |
| | | Map<String, String> productBarcodeMap = new Map<String, String>(); |
| | | List<Consumable_order_details2__c> cOrderDet = [ |
| | | SELECT Id, Bar_Code__c, Name, Consumable_Product__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 Lose_Flag__c = FALSE |
| | | AND Bar_Code__c IN :barcodeList |
| | | AND Product_Type__c LIKE :sqlagencyProType |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | AND Dealer_Info_text__c = :accountName |
| | | ]; |
| | | for (Consumable_order_details2__c pdinfo : cOrderDet) { |
| | | productBarcodeMap.put(pdinfo.Bar_Code__c, pdinfo.Consumable_Product__c); |
| | | } |
| | | for (String[] csvlistStr : csvRecordStr) { |
| | | if (productBarcodeMap.containsKey(csvlistStr[6])) { |
| | | csvlistStr[12] = productBarcodeMap.get(csvlistStr[6]); |
| | | } else { |
| | | } |
| | | } |
| | | //检索存在拆盒产品数量 |
| | | Map<String, Integer> exitpieceBarcodeMap = new Map<String, Integer>(); |
| | | AggregateResult[] pieceOrderDet = [ |
| | | SELECT count(Id) cnt, Bar_Code__c |
| | | FROM Consumable_order_details2__c |
| | | WHERE |
| | | Dealer_Arrive__c = TRUE |
| | | AND Dealer_Shipment__c = FALSE |
| | | AND Dealer_Saled__c = FALSE |
| | | AND Lose_Flag__c = FALSE |
| | | AND Bar_Code__c IN :barcodePieceList |
| | | AND Product_Type__c LIKE :sqlagencyProType |
| | | AND Dealer_Info_text__c = :accountName |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | AND Box_Piece__c = '个' |
| | | GROUP BY Bar_Code__c |
| | | ]; |
| | | for (AggregateResult ar : pieceOrderDet) { |
| | | exitpieceBarcodeMap.put(String.valueOf(ar.get('Bar_Code__c')), Integer.valueOf(ar.get('cnt'))); |
| | | } |
| | | for (String bc : barcodePieceList) { |
| | | if (!exitpieceBarcodeMap.containsKey(bc)) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, 'Barcode ' + bc + ' 不存在或单位错误,请确认。') |
| | | // ); |
| | | errorMsg += 'Barcode ' + bc + ' 不存在或单位错误,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else if (exitpieceBarcodeMap.containsKey(bc) && exitpieceBarcodeMap.get(bc) < barcodePieceMap.get(bc)) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'Barcode ' + bc + ' 库存不足,请确认。')); |
| | | errorMsg += 'Barcode ' + bc + ' 库存不足,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | //ApexPages.addMessages(e); |
| | | errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';'; |
| | | //return new ResponseBodyLWC('Error', 500, e.getMessage()+e.getStackTraceString(), ''); |
| | | } |
| | | } |
| | | String[] csvRecordDataStr = new String[13]; |
| | | for (Integer j = 0; j < csvRecordData.size(); j++) { |
| | | csvRecordDataStr[j] = csvRecordData[j]; |
| | | } |
| | | if (i == 0) { |
| | | csvRecordDataStr[12] = '产品'; |
| | | } else { |
| | | csvRecordDataStr[12] = ''; |
| | | } |
| | | csvRecordStr.add(csvRecordDataStr); |
| | | } |
| | | Map<String, String> productBarcodeMap = new Map<String, String>(); |
| | | List<Consumable_order_details2__c> cOrderDet = [ |
| | | SELECT Id, Bar_Code__c, Name, Consumable_Product__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 Lose_Flag__c = FALSE |
| | | AND Bar_Code__c IN :barcodeList |
| | | AND Product_Type__c LIKE :sqlagencyProType |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | AND Dealer_Info_text__c = :accountName |
| | | ]; |
| | | for (Consumable_order_details2__c pdinfo : cOrderDet) { |
| | | productBarcodeMap.put( |
| | | pdinfo.Bar_Code__c, |
| | | pdinfo.Consumable_Product__c |
| | | ); |
| | | } |
| | | for (String[] csvlistStr : csvRecordStr) { |
| | | if (productBarcodeMap.containsKey(csvlistStr[6])) { |
| | | csvlistStr[12] = productBarcodeMap.get(csvlistStr[6]); |
| | | } else { |
| | | } |
| | | } |
| | | //检索存在拆盒产品数量 |
| | | Map<String, Integer> exitpieceBarcodeMap = new Map<String, Integer>(); |
| | | AggregateResult[] pieceOrderDet = [ |
| | | SELECT count(Id) cnt, Bar_Code__c |
| | | FROM Consumable_order_details2__c |
| | | WHERE |
| | | Dealer_Arrive__c = TRUE |
| | | AND Dealer_Shipment__c = FALSE |
| | | AND Dealer_Saled__c = FALSE |
| | | AND Lose_Flag__c = FALSE |
| | | AND Bar_Code__c IN :barcodePieceList |
| | | AND Product_Type__c LIKE :sqlagencyProType |
| | | AND Dealer_Info_text__c = :accountName |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | AND Box_Piece__c = '个' |
| | | GROUP BY Bar_Code__c |
| | | ]; |
| | | for (AggregateResult ar : pieceOrderDet) { |
| | | exitpieceBarcodeMap.put( |
| | | String.valueOf(ar.get('Bar_Code__c')), |
| | | Integer.valueOf(ar.get('cnt')) |
| | | ); |
| | | } |
| | | for (String bc : barcodePieceList) { |
| | | if (!exitpieceBarcodeMap.containsKey(bc)) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, 'Barcode ' + bc + ' 不存在或单位错误,请确认。') |
| | | // ); |
| | | errorMsg += 'Barcode ' + bc + ' 不存在或单位错误,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else if ( |
| | | exitpieceBarcodeMap.containsKey(bc) && |
| | | exitpieceBarcodeMap.get(bc) < barcodePieceMap.get(bc) |
| | | ) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage(new ApexPages.message(ApexPages.severity.ERROR, 'Barcode ' + bc + ' 库存不足,请确认。')); |
| | | errorMsg += 'Barcode ' + bc + ' 库存不足,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | //ApexPages.addMessages(e); |
| | | errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';'; |
| | | //return new ResponseBodyLWC('Error', 500, e.getMessage()+e.getStackTraceString(), ''); |
| | | } |
| | | getorderinfo(); |
| | | dataInfoconfim(); |
| | | getorderdet2info(csvRecordStr); |
| | | if (saveFLGbln == false) { |
| | | getorderdetinfo(csvRecordStr); |
| | | } |
| | | data.put('orderRecords', orderRecords); |
| | | data.put('saveFLGbln', saveFLGbln); |
| | | data.put('csvRecordStr', csvRecordStr); |
| | | data.put('barcodeList', barcodeList); |
| | | data.put('secondAgencyMap', secondAgencyMap); |
| | | data.put('hospitalSysMap', hospitalSysMap); |
| | | res.status = 'Success'; |
| | | res.code = 200; |
| | | res.msg = errorMsg; |
| | | return res; |
| | | } |
| | | } |
| | | |
| | | public static void getorderinfo() { |
| | | map<string, string> orderNameMap = new Map<string, string>(); |
| | | try { |
| | | csvAsString = csvFileBody.toString(); |
| | | csvFileLines = csvAsString.split('\n'); |
| | | for (Integer i = 1; i < csvFileLines.size(); i++) { |
| | | Consumable_order__c cocObj = new Consumable_order__c(); |
| | | string[] csvRecordData = csvFileLines[i].split(','); |
| | | if (orderNameMap.containsKey(csvRecordData[0])) |
| | | continue; |
| | | cocObj.Name = csvRecordData[0]; |
| | | if (String.isNotBlank(csvRecordData[1])) { |
| | | cocObj.SummonsForDirction__c = csvRecordData[1]; |
| | | } else { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '出货目的为空,请确认。') |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | csvRecordData[0] + |
| | | '出货目的为空,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } |
| | | cocObj.Order_Attachment__c = csvRecordData[2]; |
| | | cocObj.Order_Indication__c = csvRecordData[3]; |
| | | cocObj.Order_ForCustomerText__c = csvRecordData[4]; |
| | | cocObj.Invoice_Note__c = csvRecordData[5]; |
| | | if (String.isBlank(csvRecordData[11])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + cocObj.Name + '的产品中,存在出库日期为空,请确认。') |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | cocObj.Name + |
| | | '的产品中,存在出库日期为空,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else { |
| | | cocObj.Outbound_Date__c = Date.parse(csvRecordData[11].trim()); |
| | | } |
| | | if (String.isNotEmpty(csvRecordData[2])) { |
| | | hospitalconMap.put(csvRecordData[2].trim(), csvRecordData[0].trim()); |
| | | } |
| | | orderNameMap.put(csvRecordData[0], csvRecordData[0]); |
| | | orderRecords.add(new ConsumableorderdetailsInfo(cocObj)); |
| | | } |
| | | } catch (Exception e) { |
| | | //return new ResponseBodyLWC('Error', 500, e.getMessage(), ''); |
| | | errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';'; |
| | | } |
| | | } |
| | | |
| | | public static void dataInfoconfim() { |
| | | //确认医院信息 |
| | | hospitalSysMap = new Map<String, String>(); |
| | | secondAgencyMap = new Map<String, String>(); |
| | | for (ConsumableorderdetailsInfo ass : orderRecords) { |
| | | if ( |
| | | (ass.order.SummonsForDirction__c == '销售给二级经销商' || |
| | | ass.order.SummonsForDirction__c == '直接销售给医院' || |
| | | ass.order.SummonsForDirction__c == '医院试用') && |
| | | (String.isBlank(ass.hospitalName) || |
| | | String.isBlank(ass.hospitalCode) || |
| | | String.isBlank(ass.order.Order_ForCustomerText__c)) |
| | | ) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '医院相关信息不能空,请确认。') |
| | | // ); |
| | | errorMsg += |
| | | '出库单' + |
| | | ass.order.Name + |
| | | '医院相关信息不能空,请确认。<br />'; |
| | | messageCount++; |
| | | saveFLGbln = true; |
| | | //return null; |
| | | } |
| | | if (ass.order.SummonsForDirction__c == '销售给二级经销商') { |
| | | if (String.isBlank(ass.agencyName)) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '经销商信息不能空,请确认。') |
| | | // ); |
| | | errorMsg += |
| | | '出库单' + |
| | | ass.order.Name + |
| | | '经销商信息不能空,请确认。<br />'; |
| | | messageCount++; |
| | | saveFLGbln = true; |
| | | } |
| | | } |
| | | if (ass.order.SummonsForDirction__c == '直接销售给医院') { |
| | | if (String.isNotBlank(ass.agencyName)) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '不需要二级经销商,请确认。') |
| | | // ); |
| | | errorMsg += |
| | | '出库单' + |
| | | ass.order.Name + |
| | | '不需要二级经销商,请确认。<br />'; |
| | | messageCount++; |
| | | saveFLGbln = true; |
| | | } |
| | | } |
| | | if (ass.order.SummonsForDirction__c == '互相调货') { |
| | | if (String.isBlank(ass.agencyName)) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '经销商信息不能空,请确认。') |
| | | // ); |
| | | errorMsg += |
| | | '出库单' + |
| | | ass.order.Name + |
| | | '经销商信息不能空,请确认。<br />'; |
| | | messageCount++; |
| | | saveFLGbln = true; |
| | | } |
| | | if ( |
| | | String.isNotBlank(ass.hospitalName) || |
| | | String.isNotBlank(ass.hospitalCode) || |
| | | String.isNotBlank(ass.order.Order_ForCustomerText__c) |
| | | ) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '不需要医院相关信息,请确认。') |
| | | // ); |
| | | errorMsg += |
| | | '出库单' + |
| | | ass.order.Name + |
| | | '不需要医院相关信息,请确认。<br />'; |
| | | messageCount++; |
| | | saveFLGbln = true; |
| | | } |
| | | } |
| | | } |
| | | System.debug('accountName = ' + accountName); |
| | | List<Agency_Hospital_Link__c> hospitalInfo = [ |
| | | SELECT Hospital__c, Hospital__r.Management_Code__c, Hospital__r.Name |
| | | FROM Agency_Hospital_Link__c |
| | | WHERE Agency__r.Name = :accountName |
| | | ]; |
| | | List<Dealer_elationship__c> secondAgencyInfo = [ |
| | | SELECT Dealer_subordinate__c, Dealer_subordinate__r.Name |
| | | FROM Dealer_elationship__c |
| | | WHERE Dealer_principal__r.Name = :accountName |
| | | ]; |
| | | for (Agency_Hospital_Link__c hpinfo : hospitalInfo) { |
| | | hospitalSysMap.put( |
| | | hpinfo.Hospital__r.Management_Code__c, |
| | | hpinfo.Hospital__c |
| | | ); |
| | | } |
| | | for (Dealer_elationship__c safo : secondAgencyInfo) { |
| | | secondAgencyMap.put( |
| | | safo.Dealer_subordinate__r.Name, |
| | | safo.Dealer_subordinate__c |
| | | ); |
| | | } |
| | | //出库单信息验证 |
| | | System.debug('hospitalconMap = ' + hospitalconMap); |
| | | System.debug('hospitalSysMap = ' + hospitalSysMap); |
| | | for (String widget : hospitalconMap.keySet()) { |
| | | if (!hospitalSysMap.containsKey(widget)) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // hospitalconMap.get(widget) + |
| | | // ' 的医院编码' + |
| | | // widget + |
| | | // ' 不存在或者不是本经销商负责的医院,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | hospitalconMap.get(widget) + |
| | | ' 的医院编码' + |
| | | widget + |
| | | ' 不存在或者不是本经销商负责的医院,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static void getorderdet2info(List<String[]> csvRecordStr) { |
| | | barcodeList = new List<String>(); |
| | | try { |
| | | for (Integer i = 1; i < csvRecordStr.size(); i++) { |
| | | Consumable_Order_details2__c cod2Obj = new Consumable_Order_details2__c(); |
| | | string[] csvRecordData = csvRecordStr[i]; |
| | | cod2Obj.TracingCode__c = csvRecordData[0]; |
| | | cod2Obj.Bar_Code__c = csvRecordData[6]; |
| | | if (String.isNotBlank(csvRecordData[6])) { |
| | | barcodeList.add(csvRecordData[6]); |
| | | } |
| | | if (String.isBlank(csvRecordData[9])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // cod2Obj.TracingCode__c + |
| | | // '的barcode ' + |
| | | // cod2Obj.Bar_Code__c + |
| | | // ' 不存在出库单位,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | cod2Obj.TracingCode__c + |
| | | '的barcode ' + |
| | | cod2Obj.Bar_Code__c + |
| | | ' 不存在出库单位,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else if ( |
| | | String.valueOf(csvRecordData[9]) != '盒' && |
| | | String.valueOf(csvRecordData[9]) != '个' |
| | | ) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // cod2Obj.TracingCode__c + |
| | | // '的barcode ' + |
| | | // cod2Obj.Bar_Code__c + |
| | | // ' 出库单位不正确,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | cod2Obj.TracingCode__c + |
| | | '的barcode ' + |
| | | cod2Obj.Bar_Code__c + |
| | | ' 出库单位不正确,请确认。'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else { |
| | | cod2Obj.Box_Piece__c = csvRecordData[9]; |
| | | } |
| | | if (String.isBlank(csvRecordData[8])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价为空,请确认。') |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | cod2Obj.TracingCode__c + |
| | | '产品出货单价为空,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else if (String.isNotBlank(csvRecordData[8])) { |
| | | if ( |
| | | Decimal.valueOf(csvRecordData[8]) == 0 && |
| | | (String.valueOf(csvRecordData[1]) == '直接销售给医院' || |
| | | String.valueOf(csvRecordData[1]) == '销售给二级经销商') |
| | | ) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // cod2Obj.TracingCode__c + |
| | | // '产品出货单价不能为0,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | cod2Obj.TracingCode__c + |
| | | '产品出货单价不能为0,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else { |
| | | cod2Obj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]); |
| | | } |
| | | } |
| | | if (String.isBlank(csvRecordData[6])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // cod2Obj.TracingCode__c + |
| | | // '的产品中,存在barcode为空,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | cod2Obj.TracingCode__c + |
| | | '的产品中,存在barcode为空,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else if (String.isBlank(csvRecordData[12])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // cod2Obj.TracingCode__c + |
| | | // '的barcode ' + |
| | | // cod2Obj.Bar_Code__c + |
| | | // ' 不存在或不是在库产品,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | cod2Obj.TracingCode__c + |
| | | '的barcode ' + |
| | | cod2Obj.Bar_Code__c + |
| | | ' 不存在或不是在库产品,请确认。'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } |
| | | cod2Obj.Return_reason__c = csvRecordData[12]; |
| | | if (String.isBlank(csvRecordData[11])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // cod2Obj.TracingCode__c + |
| | | // '的产品中,存在出库日期为空,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | cod2Obj.TracingCode__c + |
| | | '的产品中,存在出库日期为空,请确认。'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else { |
| | | cod2Obj.Send_Date__c = Date.parse(csvRecordData[11].trim()); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | //return new ResponseBodyLWC('Error', 500, e.getMessage(), ''); |
| | | errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';'; |
| | | } |
| | | } |
| | | |
| | | public static void getorderdetinfo(List<String[]> csvRecordStr) { |
| | | map<string, string> orderdetMap = new Map<string, string>(); |
| | | try { |
| | | for (Integer i = 1; i < csvRecordStr.size(); i++) { |
| | | Consumable_Orderdetails__c codObj = new Consumable_Orderdetails__c(); |
| | | string[] csvRecordData = csvRecordStr[i]; |
| | | if (orderdetMap.containsKey(csvRecordData[0] + csvRecordData[12])) |
| | | continue; |
| | | codObj.Remarks__c = csvRecordData[0]; |
| | | if (String.isBlank(csvRecordData[7])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '产品出货数量为空,请确认。') |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | csvRecordData[0] + |
| | | '产品出货数量为空,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else if ( |
| | | Decimal.valueOf(csvRecordData[7]) > 1 && |
| | | String.valueOf(csvRecordData[9]) == '盒' |
| | | ) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // csvRecordData[0] + |
| | | // '存在单位是盒,产品出货数量大于1,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | csvRecordData[0] + |
| | | '存在单位是盒,产品出货数量大于1,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else { |
| | | codObj.Shipment_Count__c = Decimal.valueOf(csvRecordData[7]); |
| | | } |
| | | codObj.Box_Piece__c = csvRecordData[9]; |
| | | if (String.isNotBlank(csvRecordData[8])) { |
| | | codObj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]); |
| | | } else { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '产品出货单价为空,请确认。') |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | csvRecordData[0] + |
| | | '出库单 ' + |
| | | csvRecordData[0] + |
| | | '产品出货单价为空,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } |
| | | //if(String.isNotBlank(csvRecordData[10])){ |
| | | // codObj.Unitprice_To_agency__c = Decimal.valueOf(csvRecordData[10]); |
| | | //} |
| | | codObj.Lose_reason__c = csvRecordData[12]; |
| | | codObj.Used_date__c = Date.parse(csvRecordData[11].trim()); |
| | | product2conMap.put(csvRecordData[12].trim(), csvRecordData[12].trim()); |
| | | orderdetMap.put( |
| | | csvRecordData[0] + csvRecordData[12], |
| | | csvRecordData[0] + csvRecordData[12] |
| | | ); |
| | | //orderdetRecords.add(new ConsumableorderdetailsInfo(codObj)); |
| | | } |
| | | } catch (Exception e) { |
| | | //return new ResponseBodyLWC('Error', 500, e.getMessage(), ''); |
| | | errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';'; |
| | | } |
| | | } |
| | | |
| | | @AuraEnabled |
| | | public static ResponseBodyLWC dataImport( |
| | | List<String[]> csvRecordStrLwc, |
| | | String orderRecordsLwc, |
| | | String sqlagencyProTypeLwc, |
| | | String userWorkLocationLwc, |
| | | String accountNameLwc, |
| | | String accountidLwc, |
| | | String agencyProTypeLwc, |
| | | Map<String, String> secondAgencyMapLwc, |
| | | Map<String, String> hospitalSysMapLwc |
| | | ) { |
| | | List<ConsumableorderdetailsInfo> orderdetRecords = new List<ConsumableorderdetailsInfo>(); |
| | | List<ConsumableorderdetailsInfo> orderdet2BoxRecords = new List<ConsumableorderdetailsInfo>(); |
| | | List<ConsumableorderdetailsInfo> orderdet2PieceRecords = new List<ConsumableorderdetailsInfo>(); |
| | | product2conMap = new Map<String, String>(); |
| | | ResponseBodyLWC res = new ResponseBodyLWC(); |
| | | Map<String, object> data = new Map<String, object>(); |
| | | res.entity = data; |
| | | |
| | | csvRecordStr = csvRecordStrLwc; |
| | | orderRecords = (List<ConsumableorderdetailsInfo>) JSON.deserialize( |
| | | orderRecordsLwc, |
| | | List<ConsumableorderdetailsInfo>.class |
| | | ); |
| | | System.debug('orderRecords = ' + orderRecords); |
| | | sqlagencyProType = sqlagencyProTypeLwc; |
| | | userWorkLocation = userWorkLocationLwc; |
| | | accountName = accountNameLwc; |
| | | secondAgencyMap = secondAgencyMapLwc; |
| | | hospitalSysMap = hospitalSysMapLwc; |
| | | accountid = accountidLwc; |
| | | agencyProType = agencyProTypeLwc; |
| | | System.debug('agencyProType = ' + agencyProType); |
| | | |
| | | errorMsg = ''; |
| | | System.debug('csvRecordStr = ' + csvRecordStr); |
| | | orderdetRecords = getorderdetList(csvRecordStr); |
| | | orderdet2BoxRecords = getorderdet2BoxList(csvRecordStr); |
| | | orderdet2PieceRecords = getorderdet2pieceList(csvRecordStr); |
| | | System.debug('orderdetRecords = ' + orderdetRecords); |
| | | System.debug('orderdet2BoxRecords = ' + orderdet2BoxRecords); |
| | | System.debug('orderdet2PieceRecords = ' + orderdet2PieceRecords); |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | Map<String, String> orderInfoMap = new Map<String, String>(); |
| | | List<Consumable_order__c> coc = new List<Consumable_order__c>(); |
| | | for (ConsumableorderdetailsInfo ass : orderRecords) { |
| | | ass.order.Order_type__c = '传票'; |
| | | ass.order.SummonsStatus_c__c = '已完成'; |
| | | ass.order.Order_ProType__c = agencyProType; |
| | | ass.order.Dealer_Info__c = accountid; |
| | | ass.order.Order_ForHospital__c = hospitalSysMap.get(ass.hospitalCode); |
| | | if (secondAgencyMap.containsKey(ass.agencyName)) { |
| | | ass.order.Order_ForDealer__c = secondAgencyMap.get(ass.agencyName); |
| | | } else { |
| | | ass.order.Order_ForDealerText__c = ass.agencyName; |
| | | } |
| | | ass.order.RecordTypeId = System.Label.RT_ConOrder_Sale; |
| | | coc.add(ass.order); |
| | | } |
| | | System.debug('coc = ' + coc); |
| | | if (coc.size() > 0) { |
| | | insert coc; |
| | | } |
| | | for (Consumable_order__c order : coc) { |
| | | orderInfoMap.put(order.Name, order.Id); |
| | | } |
| | | List<Consumable_Orderdetails__c> cod = new List<Consumable_Orderdetails__c>(); |
| | | for (String field : orderInfoMap.keySet()) { |
| | | Integer i = 1; |
| | | for (ConsumableorderdetailsInfo ass : orderdetRecords) { |
| | | if (ass.orderName == field) { |
| | | String str = string.valueOf(i); |
| | | if (str.length() == 1) { |
| | | str = '0' + str; |
| | | getorderinfo(); |
| | | dataInfoconfim(); |
| | | getorderdet2info(csvRecordStr); |
| | | if (saveFLGbln == false) { |
| | | getorderdetinfo(csvRecordStr); |
| | | } |
| | | ass.orderdetails1.Name = ass.orderName + '-' + str; |
| | | ass.orderdetails1.Consumable_order__c = orderInfoMap.get( |
| | | ass.orderName |
| | | ); |
| | | ass.orderdetails1.Consumable_Product__c = ass.productName; |
| | | ass.orderdetails1.RecordTypeId = System.Label.RT_ConOrderDetail1_Sale; |
| | | cod.add(ass.orderdetails1); |
| | | i++; |
| | | } |
| | | data.put('orderRecords', orderRecords); |
| | | data.put('saveFLGbln', saveFLGbln); |
| | | data.put('csvRecordStr', csvRecordStr); |
| | | data.put('barcodeList', barcodeList); |
| | | data.put('secondAgencyMap', secondAgencyMap); |
| | | data.put('hospitalSysMap', hospitalSysMap); |
| | | res.status = 'Success'; |
| | | res.code = 200; |
| | | res.msg = errorMsg; |
| | | return res; |
| | | } |
| | | } |
| | | System.debug('cod = ' + cod); |
| | | if (cod.size() > 0) { |
| | | insert cod; |
| | | } |
| | | //盒的数据检索 |
| | | List<Consumable_Order_details2__c> cod2List = new List<Consumable_Order_details2__c>(); |
| | | List<Consumable_order_details2__c> cOrderDet = [ |
| | | SELECT Id, Bar_Code__c, Name, Consumable_Product__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 Lose_Flag__c = FALSE |
| | | AND Bar_Code__c IN :barcodeList |
| | | AND Product_Type__c LIKE :sqlagencyProType |
| | | AND Dealer_Info_text__c = :accountName |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | AND Box_Piece__c = '盒' |
| | | ]; |
| | | for (ConsumableorderdetailsInfo ass : orderdet2BoxRecords) { |
| | | Integer idx = 0; |
| | | for (Consumable_order_details2__c codtest : cOrderDet) { |
| | | Consumable_Order_details2__c cod2 = new Consumable_Order_details2__c(); |
| | | if (codtest.Bar_Code__c == ass.orderdetails2.Bar_Code__c) { |
| | | cod2 = codtest; |
| | | cod2.Consumable_Sale_order__c = orderInfoMap.get(ass.orderName); |
| | | cod2.Consumable_ZS_order__c = orderInfoMap.get(ass.orderName); |
| | | cod2.Used_date__c = ass.orderdetails2.Used_date__c; |
| | | cod2.Send_Date__c = ass.orderdetails2.Send_Date__c; |
| | | //cod2.Unitprice_To_agency__c = ass.orderdetails2.Unitprice_To_agency__c; |
| | | cod2.Delivery_List_RMB__c = ass.orderdetails2.Delivery_List_RMB__c; |
| | | cod2List.add(cod2); |
| | | cOrderDet.remove(idx); |
| | | break; |
| | | } |
| | | idx++; |
| | | } |
| | | } |
| | | } |
| | | |
| | | //个的数据检索 |
| | | List<Consumable_order_details2__c> cOrderDetPiece = [ |
| | | SELECT |
| | | Id, |
| | | Bar_Code__c, |
| | | RemoveBox_No__c, |
| | | Name, |
| | | Consumable_Product__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 Lose_Flag__c = FALSE |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | AND Bar_Code__c IN :barcodePieceList |
| | | AND Product_Type__c LIKE :sqlagencyProType |
| | | AND Dealer_Info_text__c = :accountName |
| | | AND Box_Piece__c = '个' |
| | | ORDER BY Bar_Code__c, RemoveBox_No__c DESC |
| | | ]; |
| | | for (ConsumableorderdetailsInfo ass : orderdet2PieceRecords) { |
| | | Decimal idy = 1; |
| | | for (Integer idx = 0; idx < cOrderDetPiece.size(); idx++) { |
| | | Consumable_Order_details2__c cod2 = new Consumable_Order_details2__c(); |
| | | if ( |
| | | cOrderDetPiece[idx].Bar_Code__c == ass.orderdetails2.Bar_Code__c && |
| | | idy <= ass.pieceCount |
| | | ) { |
| | | cod2 = cOrderDetPiece[idx].Clone(); |
| | | cod2.Id = cOrderDetPiece[idx].Id; |
| | | cod2.Consumable_Sale_order__c = orderInfoMap.get(ass.orderName); |
| | | cod2.Consumable_ZS_order__c = orderInfoMap.get(ass.orderName); |
| | | cod2.Used_date__c = ass.orderdetails2.Used_date__c; |
| | | cod2.Send_Date__c = ass.orderdetails2.Send_Date__c; |
| | | //cod2.Unitprice_To_agency__c = ass.orderdetails2.Unitprice_To_agency__c; |
| | | cod2.Delivery_List_RMB__c = ass.orderdetails2.Delivery_List_RMB__c; |
| | | cod2List.add(cod2); |
| | | cOrderDetPiece[idx].Bar_Code__c = ''; |
| | | idy++; |
| | | //break; |
| | | } |
| | | public static void getorderinfo() { |
| | | map<string, string> orderNameMap = new Map<string, string>(); |
| | | try { |
| | | csvAsString = csvFileBody.toString(); |
| | | csvFileLines = csvAsString.split('\n'); |
| | | for (Integer i = 1; i < csvFileLines.size(); i++) { |
| | | Consumable_order__c cocObj = new Consumable_order__c(); |
| | | string[] csvRecordData = csvFileLines[i].split(','); |
| | | if (orderNameMap.containsKey(csvRecordData[0])) |
| | | continue; |
| | | cocObj.Name = csvRecordData[0]; |
| | | if (String.isNotBlank(csvRecordData[1])) { |
| | | cocObj.SummonsForDirction__c = csvRecordData[1]; |
| | | } else { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '出货目的为空,请确认。') |
| | | // ); |
| | | errorMsg += '出库单 ' + csvRecordData[0] + '出货目的为空,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } |
| | | cocObj.Order_Attachment__c = csvRecordData[2]; |
| | | cocObj.Order_Indication__c = csvRecordData[3]; |
| | | cocObj.Order_ForCustomerText__c = csvRecordData[4]; |
| | | cocObj.Invoice_Note__c = csvRecordData[5]; |
| | | if (String.isBlank(csvRecordData[11])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + cocObj.Name + '的产品中,存在出库日期为空,请确认。') |
| | | // ); |
| | | errorMsg += '出库单 ' + cocObj.Name + '的产品中,存在出库日期为空,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else { |
| | | cocObj.Outbound_Date__c = Date.parse(csvRecordData[11].trim()); |
| | | } |
| | | if (String.isNotEmpty(csvRecordData[2])) { |
| | | hospitalconMap.put(csvRecordData[2].trim(), csvRecordData[0].trim()); |
| | | } |
| | | orderNameMap.put(csvRecordData[0], csvRecordData[0]); |
| | | orderRecords.add(new ConsumableorderdetailsInfo(cocObj)); |
| | | } |
| | | } catch (Exception e) { |
| | | //return new ResponseBodyLWC('Error', 500, e.getMessage(), ''); |
| | | errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';'; |
| | | } |
| | | } |
| | | if (cod2List.size() > 0) { |
| | | update cod2List; |
| | | } |
| | | errorflg = true; |
| | | //errorMessage = '保存完成。'; |
| | | saveFLGbln = true; |
| | | } |
| | | |
| | | res.status = 'Success'; |
| | | res.code = 200; |
| | | res.msg = errorMsg; |
| | | return res; |
| | | } catch (Exception e) { |
| | | Database.rollback(sp); |
| | | // ApexPages.addMessages(e); |
| | | // return null; |
| | | return new ResponseBodyLWC( |
| | | 'Error', |
| | | 500, |
| | | e.getMessage() + e.getStackTraceString(), |
| | | '' |
| | | ); |
| | | public static void dataInfoconfim() { |
| | | //确认医院信息 |
| | | hospitalSysMap = new Map<String, String>(); |
| | | secondAgencyMap = new Map<String, String>(); |
| | | for (ConsumableorderdetailsInfo ass : orderRecords) { |
| | | if ( |
| | | (ass.order.SummonsForDirction__c == '销售给二级经销商' || |
| | | ass.order.SummonsForDirction__c == '直接销售给医院' || |
| | | ass.order.SummonsForDirction__c == '医院试用') && |
| | | (String.isBlank(ass.hospitalName) || |
| | | String.isBlank(ass.hospitalCode) || |
| | | String.isBlank(ass.order.Order_ForCustomerText__c)) |
| | | ) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '医院相关信息不能空,请确认。') |
| | | // ); |
| | | errorMsg += '出库单' + ass.order.Name + '医院相关信息不能空,请确认。<br />'; |
| | | messageCount++; |
| | | saveFLGbln = true; |
| | | //return null; |
| | | } |
| | | if (ass.order.SummonsForDirction__c == '销售给二级经销商') { |
| | | if (String.isBlank(ass.agencyName)) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '经销商信息不能空,请确认。') |
| | | // ); |
| | | errorMsg += '出库单' + ass.order.Name + '经销商信息不能空,请确认。<br />'; |
| | | messageCount++; |
| | | saveFLGbln = true; |
| | | } |
| | | } |
| | | if (ass.order.SummonsForDirction__c == '直接销售给医院') { |
| | | if (String.isNotBlank(ass.agencyName)) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '不需要二级经销商,请确认。') |
| | | // ); |
| | | errorMsg += '出库单' + ass.order.Name + '不需要二级经销商,请确认。<br />'; |
| | | messageCount++; |
| | | saveFLGbln = true; |
| | | } |
| | | } |
| | | if (ass.order.SummonsForDirction__c == '互相调货') { |
| | | if (String.isBlank(ass.agencyName)) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '经销商信息不能空,请确认。') |
| | | // ); |
| | | errorMsg += '出库单' + ass.order.Name + '经销商信息不能空,请确认。<br />'; |
| | | messageCount++; |
| | | saveFLGbln = true; |
| | | } |
| | | if ( |
| | | String.isNotBlank(ass.hospitalName) || |
| | | String.isNotBlank(ass.hospitalCode) || |
| | | String.isNotBlank(ass.order.Order_ForCustomerText__c) |
| | | ) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单' + ass.order.Name + '不需要医院相关信息,请确认。') |
| | | // ); |
| | | errorMsg += '出库单' + ass.order.Name + '不需要医院相关信息,请确认。<br />'; |
| | | messageCount++; |
| | | saveFLGbln = true; |
| | | } |
| | | } |
| | | } |
| | | System.debug('accountName = ' + accountName); |
| | | List<Agency_Hospital_Link__c> hospitalInfo = [ |
| | | SELECT Hospital__c, Hospital__r.Management_Code__c, Hospital__r.Name |
| | | FROM Agency_Hospital_Link__c |
| | | WHERE Agency__r.Name = :accountName |
| | | ]; |
| | | List<Dealer_elationship__c> secondAgencyInfo = [ |
| | | SELECT Dealer_subordinate__c, Dealer_subordinate__r.Name |
| | | FROM Dealer_elationship__c |
| | | WHERE Dealer_principal__r.Name = :accountName |
| | | ]; |
| | | for (Agency_Hospital_Link__c hpinfo : hospitalInfo) { |
| | | hospitalSysMap.put(hpinfo.Hospital__r.Management_Code__c, hpinfo.Hospital__c); |
| | | } |
| | | for (Dealer_elationship__c safo : secondAgencyInfo) { |
| | | secondAgencyMap.put(safo.Dealer_subordinate__r.Name, safo.Dealer_subordinate__c); |
| | | } |
| | | //出库单信息验证 |
| | | System.debug('hospitalconMap = ' + hospitalconMap); |
| | | System.debug('hospitalSysMap = ' + hospitalSysMap); |
| | | for (String widget : hospitalconMap.keySet()) { |
| | | if (!hospitalSysMap.containsKey(widget)) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // hospitalconMap.get(widget) + |
| | | // ' 的医院编码' + |
| | | // widget + |
| | | // ' 不存在或者不是本经销商负责的医院,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += |
| | | '出库单 ' + |
| | | hospitalconMap.get(widget) + |
| | | ' 的医院编码' + |
| | | widget + |
| | | ' 不存在或者不是本经销商负责的医院,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | public static List<ConsumableorderdetailsInfo> getorderdetList( |
| | | List<String[]> csvRecordStr |
| | | ) { |
| | | List<ConsumableorderdetailsInfo> orderdetRecords = new List<ConsumableorderdetailsInfo>(); |
| | | map<string, Decimal> orderdetMap = new Map<string, Decimal>(); |
| | | try { |
| | | for (Integer i = 1; i < csvRecordStr.size(); i++) { |
| | | Consumable_Orderdetails__c codObj = new Consumable_Orderdetails__c(); |
| | | string[] csvRecordData = csvRecordStr[i]; |
| | | if ( |
| | | orderdetMap.containsKey( |
| | | csvRecordData[0] + csvRecordData[12] + csvRecordData[9] |
| | | ) |
| | | ) { |
| | | orderdetMap.put( |
| | | csvRecordData[0] + csvRecordData[12] + csvRecordData[9], |
| | | orderdetMap.get( |
| | | csvRecordData[0] + csvRecordData[12] + csvRecordData[9] |
| | | ) + Decimal.valueOf(csvRecordData[7]) |
| | | ); |
| | | continue; |
| | | } else { |
| | | orderdetMap.put( |
| | | csvRecordData[0] + csvRecordData[12] + csvRecordData[9], |
| | | Decimal.valueOf(csvRecordData[7]) |
| | | ); |
| | | public static void getorderdet2info(List<String[]> csvRecordStr) { |
| | | barcodeList = new List<String>(); |
| | | try { |
| | | for (Integer i = 1; i < csvRecordStr.size(); i++) { |
| | | Consumable_Order_details2__c cod2Obj = new Consumable_Order_details2__c(); |
| | | string[] csvRecordData = csvRecordStr[i]; |
| | | cod2Obj.TracingCode__c = csvRecordData[0]; |
| | | cod2Obj.Bar_Code__c = csvRecordData[6]; |
| | | if (String.isNotBlank(csvRecordData[6])) { |
| | | barcodeList.add(csvRecordData[6]); |
| | | } |
| | | if (String.isBlank(csvRecordData[9])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // cod2Obj.TracingCode__c + |
| | | // '的barcode ' + |
| | | // cod2Obj.Bar_Code__c + |
| | | // ' 不存在出库单位,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的barcode ' + cod2Obj.Bar_Code__c + ' 不存在出库单位,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else if (String.valueOf(csvRecordData[9]) != '盒' && String.valueOf(csvRecordData[9]) != '个') { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // cod2Obj.TracingCode__c + |
| | | // '的barcode ' + |
| | | // cod2Obj.Bar_Code__c + |
| | | // ' 出库单位不正确,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的barcode ' + cod2Obj.Bar_Code__c + ' 出库单位不正确,请确认。'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else { |
| | | cod2Obj.Box_Piece__c = csvRecordData[9]; |
| | | } |
| | | if (String.isBlank(csvRecordData[8])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价为空,请确认。') |
| | | // ); |
| | | errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价为空,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else if (String.isNotBlank(csvRecordData[8])) { |
| | | if ( |
| | | Decimal.valueOf(csvRecordData[8]) == 0 && |
| | | (String.valueOf(csvRecordData[1]) == '直接销售给医院' || |
| | | String.valueOf(csvRecordData[1]) == '销售给二级经销商') |
| | | ) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // cod2Obj.TracingCode__c + |
| | | // '产品出货单价不能为0,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '产品出货单价不能为0,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else { |
| | | cod2Obj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]); |
| | | } |
| | | } |
| | | if (String.isBlank(csvRecordData[6])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // cod2Obj.TracingCode__c + |
| | | // '的产品中,存在barcode为空,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的产品中,存在barcode为空,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else if (String.isBlank(csvRecordData[12])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // cod2Obj.TracingCode__c + |
| | | // '的barcode ' + |
| | | // cod2Obj.Bar_Code__c + |
| | | // ' 不存在或不是在库产品,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的barcode ' + cod2Obj.Bar_Code__c + ' 不存在或不是在库产品,请确认。'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } |
| | | cod2Obj.Return_reason__c = csvRecordData[12]; |
| | | if (String.isBlank(csvRecordData[11])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // cod2Obj.TracingCode__c + |
| | | // '的产品中,存在出库日期为空,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += '出库单 ' + cod2Obj.TracingCode__c + '的产品中,存在出库日期为空,请确认。'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else { |
| | | cod2Obj.Send_Date__c = Date.parse(csvRecordData[11].trim()); |
| | | } |
| | | } |
| | | } catch (Exception e) { |
| | | //return new ResponseBodyLWC('Error', 500, e.getMessage(), ''); |
| | | errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';'; |
| | | } |
| | | codObj.Remarks__c = csvRecordData[0]; |
| | | codObj.Shipment_Count__c = Decimal.valueOf(csvRecordData[7]); |
| | | codObj.Box_Piece__c = csvRecordData[9]; |
| | | if (String.isNotBlank(csvRecordData[8])) { |
| | | codObj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]); |
| | | } |
| | | codObj.Lose_reason__c = csvRecordData[12]; |
| | | if (String.isNotBlank(csvRecordData[11])) { |
| | | codObj.Used_date__c = Date.parse(csvRecordData[11].trim()); |
| | | } |
| | | product2conMap.put(csvRecordData[12].trim(), csvRecordData[12].trim()); |
| | | orderdetRecords.add(new ConsumableorderdetailsInfo(codObj)); |
| | | } |
| | | for (ConsumableorderdetailsInfo ass : orderdetRecords) { |
| | | if ( |
| | | orderdetMap.containsKey( |
| | | ass.orderName + ass.productName + ass.orderdetails1.Box_Piece__c |
| | | ) |
| | | ) { |
| | | ass.orderdetails1.Shipment_Count__c = orderdetMap.get( |
| | | ass.orderName + ass.productName + ass.orderdetails1.Box_Piece__c |
| | | ); |
| | | } |
| | | } |
| | | System.debug('orderdetRecords = ' + orderdetRecords); |
| | | return orderdetRecords; |
| | | } catch (Exception e) { |
| | | // ApexPages.addMessages(e); |
| | | // return null; |
| | | errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';'; |
| | | System.debug('orderdetRecords = null ' + e.getLineNumber()); |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | public static List<ConsumableorderdetailsInfo> getorderdet2BoxList( |
| | | List<String[]> csvRecordStr |
| | | ) { |
| | | barcodeList = new List<String>(); |
| | | List<ConsumableorderdetailsInfo> orderdet2BoxRecords = new List<ConsumableorderdetailsInfo>(); |
| | | try { |
| | | for (Integer i = 1; i < csvRecordStr.size(); i++) { |
| | | string[] csvRecordData = csvRecordStr[i]; |
| | | if (String.valueOf(csvRecordData[9]) == '盒') { |
| | | Consumable_Order_details2__c cod2Obj = new Consumable_Order_details2__c(); |
| | | cod2Obj.TracingCode__c = csvRecordData[0]; |
| | | cod2Obj.Bar_Code__c = csvRecordData[6]; |
| | | if (String.isNotBlank(csvRecordData[6])) { |
| | | barcodeList.add(csvRecordData[6]); |
| | | } |
| | | cod2Obj.Box_Piece__c = csvRecordData[9]; |
| | | if (String.isNotBlank(csvRecordData[8])) { |
| | | cod2Obj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]); |
| | | } |
| | | //if(String.isNotBlank(csvRecordData[10])){ |
| | | // cod2Obj.Unitprice_To_agency__c = Decimal.valueOf(csvRecordData[10]); |
| | | //} |
| | | cod2Obj.Return_reason__c = csvRecordData[12]; |
| | | if ( |
| | | String.valueOf(csvRecordData[1]) == '销售给二级经销商' || |
| | | String.valueOf(csvRecordData[1]) == '直接销售给医院' |
| | | ) { |
| | | cod2Obj.Used_date__c = Date.parse(csvRecordData[11].trim()); |
| | | } else { |
| | | cod2Obj.Send_Date__c = Date.parse(csvRecordData[11].trim()); |
| | | } |
| | | orderdet2BoxRecords.add(new ConsumableorderdetailsInfo(cod2Obj)); |
| | | public static void getorderdetinfo(List<String[]> csvRecordStr) { |
| | | map<string, string> orderdetMap = new Map<string, string>(); |
| | | try { |
| | | for (Integer i = 1; i < csvRecordStr.size(); i++) { |
| | | Consumable_Orderdetails__c codObj = new Consumable_Orderdetails__c(); |
| | | string[] csvRecordData = csvRecordStr[i]; |
| | | if (orderdetMap.containsKey(csvRecordData[0] + csvRecordData[12])) |
| | | continue; |
| | | codObj.Remarks__c = csvRecordData[0]; |
| | | if (String.isBlank(csvRecordData[7])) { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '产品出货数量为空,请确认。') |
| | | // ); |
| | | errorMsg += '出库单 ' + csvRecordData[0] + '产品出货数量为空,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else if (Decimal.valueOf(csvRecordData[7]) > 1 && String.valueOf(csvRecordData[9]) == '盒') { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message( |
| | | // ApexPages.severity.ERROR, |
| | | // '出库单 ' + |
| | | // csvRecordData[0] + |
| | | // '存在单位是盒,产品出货数量大于1,请确认。' |
| | | // ) |
| | | // ); |
| | | errorMsg += '出库单 ' + csvRecordData[0] + '存在单位是盒,产品出货数量大于1,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } else { |
| | | codObj.Shipment_Count__c = Decimal.valueOf(csvRecordData[7]); |
| | | } |
| | | codObj.Box_Piece__c = csvRecordData[9]; |
| | | if (String.isNotBlank(csvRecordData[8])) { |
| | | codObj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]); |
| | | } else { |
| | | if (messageCount >= 100) |
| | | break; |
| | | // ApexPages.addmessage( |
| | | // new ApexPages.message(ApexPages.severity.ERROR, '出库单 ' + csvRecordData[0] + '产品出货单价为空,请确认。') |
| | | // ); |
| | | errorMsg += '出库单 ' + csvRecordData[0] + '出库单 ' + csvRecordData[0] + '产品出货单价为空,请确认。<br />'; |
| | | saveFLGbln = true; |
| | | messageCount++; |
| | | } |
| | | //if(String.isNotBlank(csvRecordData[10])){ |
| | | // codObj.Unitprice_To_agency__c = Decimal.valueOf(csvRecordData[10]); |
| | | //} |
| | | codObj.Lose_reason__c = csvRecordData[12]; |
| | | codObj.Used_date__c = Date.parse(csvRecordData[11].trim()); |
| | | product2conMap.put(csvRecordData[12].trim(), csvRecordData[12].trim()); |
| | | orderdetMap.put(csvRecordData[0] + csvRecordData[12], csvRecordData[0] + csvRecordData[12]); |
| | | //orderdetRecords.add(new ConsumableorderdetailsInfo(codObj)); |
| | | } |
| | | } catch (Exception e) { |
| | | //return new ResponseBodyLWC('Error', 500, e.getMessage(), ''); |
| | | errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';'; |
| | | } |
| | | } |
| | | return orderdet2BoxRecords; |
| | | } catch (Exception e) { |
| | | // ApexPages.addMessages(e); |
| | | // return null; |
| | | errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';'; |
| | | return null; |
| | | } |
| | | } |
| | | |
| | | public static List<ConsumableorderdetailsInfo> getorderdet2pieceList( |
| | | List<String[]> csvRecordStr |
| | | ) { |
| | | barcodePieceList = new List<String>(); |
| | | List<ConsumableorderdetailsInfo> orderdet2PieceRecords = new List<ConsumableorderdetailsInfo>(); |
| | | try { |
| | | for (Integer i = 1; i < csvRecordStr.size(); i++) { |
| | | string[] csvRecordData = csvRecordStr[i]; |
| | | if (String.valueOf(csvRecordData[9]) == '个') { |
| | | Consumable_Order_details2__c cod2Obj = new Consumable_Order_details2__c(); |
| | | cod2Obj.TracingCode__c = csvRecordData[0]; |
| | | cod2Obj.Bar_Code__c = csvRecordData[6]; |
| | | if (String.isNotBlank(csvRecordData[6])) { |
| | | barcodePieceList.add(csvRecordData[6]); |
| | | } |
| | | cod2Obj.Box_Piece__c = csvRecordData[9]; |
| | | if (String.isNotBlank(csvRecordData[8])) { |
| | | cod2Obj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]); |
| | | } |
| | | cod2Obj.Return_reason__c = csvRecordData[12]; |
| | | if ( |
| | | String.valueOf(csvRecordData[1]) == '销售给二级经销商' || |
| | | String.valueOf(csvRecordData[1]) == '直接销售给医院' |
| | | ) { |
| | | cod2Obj.Used_date__c = Date.parse(csvRecordData[11].trim()); |
| | | } else { |
| | | cod2Obj.Send_Date__c = Date.parse(csvRecordData[11].trim()); |
| | | } |
| | | cod2Obj.Rrturn_count__c = Decimal.valueOf(csvRecordData[7]); |
| | | orderdet2PieceRecords.add(new ConsumableorderdetailsInfo(cod2Obj)); |
| | | @AuraEnabled |
| | | public static ResponseBodyLWC dataImport( |
| | | List<String[]> csvRecordStrLwc, |
| | | String orderRecordsLwc, |
| | | String sqlagencyProTypeLwc, |
| | | String userWorkLocationLwc, |
| | | String accountNameLwc, |
| | | String accountidLwc, |
| | | String agencyProTypeLwc, |
| | | Map<String, String> secondAgencyMapLwc, |
| | | Map<String, String> hospitalSysMapLwc |
| | | ) { |
| | | List<ConsumableorderdetailsInfo> orderdetRecords = new List<ConsumableorderdetailsInfo>(); |
| | | List<ConsumableorderdetailsInfo> orderdet2BoxRecords = new List<ConsumableorderdetailsInfo>(); |
| | | List<ConsumableorderdetailsInfo> orderdet2PieceRecords = new List<ConsumableorderdetailsInfo>(); |
| | | product2conMap = new Map<String, String>(); |
| | | ResponseBodyLWC res = new ResponseBodyLWC(); |
| | | Map<String, object> data = new Map<String, object>(); |
| | | res.entity = data; |
| | | |
| | | csvRecordStr = csvRecordStrLwc; |
| | | orderRecords = (List<ConsumableorderdetailsInfo>) JSON.deserialize(orderRecordsLwc, List<ConsumableorderdetailsInfo>.class); |
| | | System.debug('orderRecords = ' + orderRecords); |
| | | sqlagencyProType = sqlagencyProTypeLwc; |
| | | userWorkLocation = userWorkLocationLwc; |
| | | accountName = accountNameLwc; |
| | | secondAgencyMap = secondAgencyMapLwc; |
| | | hospitalSysMap = hospitalSysMapLwc; |
| | | accountid = accountidLwc; |
| | | agencyProType = agencyProTypeLwc; |
| | | System.debug('agencyProType = ' + agencyProType); |
| | | |
| | | errorMsg = ''; |
| | | System.debug('csvRecordStr = ' + csvRecordStr); |
| | | orderdetRecords = getorderdetList(csvRecordStr); |
| | | orderdet2BoxRecords = getorderdet2BoxList(csvRecordStr); |
| | | orderdet2PieceRecords = getorderdet2pieceList(csvRecordStr); |
| | | System.debug('orderdetRecords = ' + orderdetRecords); |
| | | System.debug('orderdet2BoxRecords = ' + orderdet2BoxRecords); |
| | | System.debug('orderdet2PieceRecords = ' + orderdet2PieceRecords); |
| | | Savepoint sp = Database.setSavepoint(); |
| | | try { |
| | | Map<String, String> orderInfoMap = new Map<String, String>(); |
| | | List<Consumable_order__c> coc = new List<Consumable_order__c>(); |
| | | for (ConsumableorderdetailsInfo ass : orderRecords) { |
| | | ass.order.Order_type__c = '传票'; |
| | | ass.order.SummonsStatus_c__c = '已完成'; |
| | | ass.order.Order_ProType__c = agencyProType; |
| | | ass.order.Dealer_Info__c = accountid; |
| | | ass.order.Order_ForHospital__c = hospitalSysMap.get(ass.hospitalCode); |
| | | if (secondAgencyMap.containsKey(ass.agencyName)) { |
| | | ass.order.Order_ForDealer__c = secondAgencyMap.get(ass.agencyName); |
| | | } else { |
| | | ass.order.Order_ForDealerText__c = ass.agencyName; |
| | | } |
| | | ass.order.RecordTypeId = System.Label.RT_ConOrder_Sale; |
| | | coc.add(ass.order); |
| | | } |
| | | System.debug('coc = ' + coc); |
| | | if (coc.size() > 0) { |
| | | insert coc; |
| | | } |
| | | for (Consumable_order__c order : coc) { |
| | | orderInfoMap.put(order.Name, order.Id); |
| | | } |
| | | List<Consumable_Orderdetails__c> cod = new List<Consumable_Orderdetails__c>(); |
| | | for (String field : orderInfoMap.keySet()) { |
| | | Integer i = 1; |
| | | for (ConsumableorderdetailsInfo ass : orderdetRecords) { |
| | | if (ass.orderName == field) { |
| | | String str = string.valueOf(i); |
| | | if (str.length() == 1) { |
| | | str = '0' + str; |
| | | } |
| | | ass.orderdetails1.Name = ass.orderName + '-' + str; |
| | | ass.orderdetails1.Consumable_order__c = orderInfoMap.get(ass.orderName); |
| | | ass.orderdetails1.Consumable_Product__c = ass.productName; |
| | | ass.orderdetails1.RecordTypeId = System.Label.RT_ConOrderDetail1_Sale; |
| | | cod.add(ass.orderdetails1); |
| | | i++; |
| | | } |
| | | } |
| | | } |
| | | System.debug('cod = ' + cod); |
| | | if (cod.size() > 0) { |
| | | insert cod; |
| | | } |
| | | //盒的数据检索 |
| | | List<Consumable_Order_details2__c> cod2List = new List<Consumable_Order_details2__c>(); |
| | | List<Consumable_order_details2__c> cOrderDet = [ |
| | | SELECT Id, Bar_Code__c, Name, Consumable_Product__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 Lose_Flag__c = FALSE |
| | | AND Bar_Code__c IN :barcodeList |
| | | AND Product_Type__c LIKE :sqlagencyProType |
| | | AND Dealer_Info_text__c = :accountName |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | AND Box_Piece__c = '盒' |
| | | ]; |
| | | for (ConsumableorderdetailsInfo ass : orderdet2BoxRecords) { |
| | | Integer idx = 0; |
| | | for (Consumable_order_details2__c codtest : cOrderDet) { |
| | | Consumable_Order_details2__c cod2 = new Consumable_Order_details2__c(); |
| | | if (codtest.Bar_Code__c == ass.orderdetails2.Bar_Code__c) { |
| | | cod2 = codtest; |
| | | cod2.Consumable_Sale_order__c = orderInfoMap.get(ass.orderName); |
| | | cod2.Consumable_ZS_order__c = orderInfoMap.get(ass.orderName); |
| | | cod2.Used_date__c = ass.orderdetails2.Used_date__c; |
| | | cod2.Send_Date__c = ass.orderdetails2.Send_Date__c; |
| | | //cod2.Unitprice_To_agency__c = ass.orderdetails2.Unitprice_To_agency__c; |
| | | cod2.Delivery_List_RMB__c = ass.orderdetails2.Delivery_List_RMB__c; |
| | | cod2List.add(cod2); |
| | | cOrderDet.remove(idx); |
| | | break; |
| | | } |
| | | idx++; |
| | | } |
| | | } |
| | | |
| | | //个的数据检索 |
| | | List<Consumable_order_details2__c> cOrderDetPiece = [ |
| | | SELECT Id, Bar_Code__c, RemoveBox_No__c, Name, Consumable_Product__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 Lose_Flag__c = FALSE |
| | | AND Arrive_Owner_Work_Location__c = :userWorkLocation |
| | | AND Bar_Code__c IN :barcodePieceList |
| | | AND Product_Type__c LIKE :sqlagencyProType |
| | | AND Dealer_Info_text__c = :accountName |
| | | AND Box_Piece__c = '个' |
| | | ORDER BY Bar_Code__c, RemoveBox_No__c DESC |
| | | ]; |
| | | for (ConsumableorderdetailsInfo ass : orderdet2PieceRecords) { |
| | | Decimal idy = 1; |
| | | for (Integer idx = 0; idx < cOrderDetPiece.size(); idx++) { |
| | | Consumable_Order_details2__c cod2 = new Consumable_Order_details2__c(); |
| | | if (cOrderDetPiece[idx].Bar_Code__c == ass.orderdetails2.Bar_Code__c && idy <= ass.pieceCount) { |
| | | cod2 = cOrderDetPiece[idx].Clone(); |
| | | cod2.Id = cOrderDetPiece[idx].Id; |
| | | cod2.Consumable_Sale_order__c = orderInfoMap.get(ass.orderName); |
| | | cod2.Consumable_ZS_order__c = orderInfoMap.get(ass.orderName); |
| | | cod2.Used_date__c = ass.orderdetails2.Used_date__c; |
| | | cod2.Send_Date__c = ass.orderdetails2.Send_Date__c; |
| | | //cod2.Unitprice_To_agency__c = ass.orderdetails2.Unitprice_To_agency__c; |
| | | cod2.Delivery_List_RMB__c = ass.orderdetails2.Delivery_List_RMB__c; |
| | | cod2List.add(cod2); |
| | | cOrderDetPiece[idx].Bar_Code__c = ''; |
| | | idy++; |
| | | //break; |
| | | } |
| | | } |
| | | } |
| | | if (cod2List.size() > 0) { |
| | | update cod2List; |
| | | } |
| | | errorflg = true; |
| | | //errorMessage = '保存完成。'; |
| | | saveFLGbln = true; |
| | | |
| | | res.status = 'Success'; |
| | | res.code = 200; |
| | | res.msg = errorMsg; |
| | | return res; |
| | | } catch (Exception e) { |
| | | Database.rollback(sp); |
| | | // ApexPages.addMessages(e); |
| | | // return null; |
| | | return new ResponseBodyLWC('Error', 500, e.getMessage() + e.getStackTraceString(), ''); |
| | | } |
| | | } |
| | | return orderdet2PieceRecords; |
| | | } catch (Exception e) { |
| | | // ApexPages.addMessages(e); |
| | | // return null; |
| | | errorMsg += e.getMessage(); |
| | | return null; |
| | | } |
| | | } |
| | | @TestVisible |
| | | class ConsumableorderdetailsInfo implements Comparable { |
| | | @AuraEnabled |
| | | public Consumable_order__c order { get; set; } |
| | | @AuraEnabled |
| | | public Consumable_orderdetails__c orderdetails1 { get; set; } |
| | | @AuraEnabled |
| | | public Consumable_order_details2__c orderdetails2 { get; set; } |
| | | @AuraEnabled |
| | | public String orderName { get; set; } |
| | | @AuraEnabled |
| | | public String hospitalCode { get; set; } |
| | | @AuraEnabled |
| | | public String hospitalName { get; set; } |
| | | @AuraEnabled |
| | | public String agencyName { get; set; } |
| | | @AuraEnabled |
| | | public String productName { get; set; } |
| | | @AuraEnabled |
| | | public Decimal pieceCount { get; set; } |
| | | // 取到的订单信息 |
| | | public ConsumableorderdetailsInfo(Consumable_order__c e) { |
| | | order = e; |
| | | hospitalCode = e.Order_Attachment__c; |
| | | hospitalName = e.Order_Indication__c; |
| | | agencyName = e.Invoice_Note__c; |
| | | e.Order_Attachment__c = ''; |
| | | e.Order_Indication__c = ''; |
| | | e.Invoice_Note__c = ''; |
| | | |
| | | public static List<ConsumableorderdetailsInfo> getorderdetList(List<String[]> csvRecordStr) { |
| | | List<ConsumableorderdetailsInfo> orderdetRecords = new List<ConsumableorderdetailsInfo>(); |
| | | map<string, Decimal> orderdetMap = new Map<string, Decimal>(); |
| | | try { |
| | | for (Integer i = 1; i < csvRecordStr.size(); i++) { |
| | | Consumable_Orderdetails__c codObj = new Consumable_Orderdetails__c(); |
| | | string[] csvRecordData = csvRecordStr[i]; |
| | | if (orderdetMap.containsKey(csvRecordData[0] + csvRecordData[12] + csvRecordData[9])) { |
| | | orderdetMap.put( |
| | | csvRecordData[0] + csvRecordData[12] + csvRecordData[9], |
| | | orderdetMap.get(csvRecordData[0] + csvRecordData[12] + csvRecordData[9]) + Decimal.valueOf(csvRecordData[7]) |
| | | ); |
| | | continue; |
| | | } else { |
| | | orderdetMap.put(csvRecordData[0] + csvRecordData[12] + csvRecordData[9], Decimal.valueOf(csvRecordData[7])); |
| | | } |
| | | codObj.Remarks__c = csvRecordData[0]; |
| | | codObj.Shipment_Count__c = Decimal.valueOf(csvRecordData[7]); |
| | | codObj.Box_Piece__c = csvRecordData[9]; |
| | | if (String.isNotBlank(csvRecordData[8])) { |
| | | codObj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]); |
| | | } |
| | | codObj.Lose_reason__c = csvRecordData[12]; |
| | | if (String.isNotBlank(csvRecordData[11])) { |
| | | codObj.Used_date__c = Date.parse(csvRecordData[11].trim()); |
| | | } |
| | | product2conMap.put(csvRecordData[12].trim(), csvRecordData[12].trim()); |
| | | orderdetRecords.add(new ConsumableorderdetailsInfo(codObj)); |
| | | } |
| | | for (ConsumableorderdetailsInfo ass : orderdetRecords) { |
| | | if (orderdetMap.containsKey(ass.orderName + ass.productName + ass.orderdetails1.Box_Piece__c)) { |
| | | ass.orderdetails1.Shipment_Count__c = orderdetMap.get(ass.orderName + ass.productName + ass.orderdetails1.Box_Piece__c); |
| | | } |
| | | } |
| | | System.debug('orderdetRecords = ' + orderdetRecords); |
| | | return orderdetRecords; |
| | | } catch (Exception e) { |
| | | // ApexPages.addMessages(e); |
| | | // return null; |
| | | errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';'; |
| | | System.debug('orderdetRecords = null ' + e.getLineNumber()); |
| | | return null; |
| | | } |
| | | } |
| | | // 取到的订单明细 |
| | | public ConsumableorderdetailsInfo(Consumable_orderdetails__c e) { |
| | | orderdetails1 = e; |
| | | orderName = e.Remarks__c; |
| | | productName = e.Lose_reason__c; |
| | | e.Lose_reason__c = ''; |
| | | e.Remarks__c = ''; |
| | | |
| | | public static List<ConsumableorderdetailsInfo> getorderdet2BoxList(List<String[]> csvRecordStr) { |
| | | barcodeList = new List<String>(); |
| | | List<ConsumableorderdetailsInfo> orderdet2BoxRecords = new List<ConsumableorderdetailsInfo>(); |
| | | try { |
| | | for (Integer i = 1; i < csvRecordStr.size(); i++) { |
| | | string[] csvRecordData = csvRecordStr[i]; |
| | | if (String.valueOf(csvRecordData[9]) == '盒') { |
| | | Consumable_Order_details2__c cod2Obj = new Consumable_Order_details2__c(); |
| | | cod2Obj.TracingCode__c = csvRecordData[0]; |
| | | cod2Obj.Bar_Code__c = csvRecordData[6]; |
| | | if (String.isNotBlank(csvRecordData[6])) { |
| | | barcodeList.add(csvRecordData[6]); |
| | | } |
| | | cod2Obj.Box_Piece__c = csvRecordData[9]; |
| | | if (String.isNotBlank(csvRecordData[8])) { |
| | | cod2Obj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]); |
| | | } |
| | | //if(String.isNotBlank(csvRecordData[10])){ |
| | | // cod2Obj.Unitprice_To_agency__c = Decimal.valueOf(csvRecordData[10]); |
| | | //} |
| | | cod2Obj.Return_reason__c = csvRecordData[12]; |
| | | if (String.valueOf(csvRecordData[1]) == '销售给二级经销商' || String.valueOf(csvRecordData[1]) == '直接销售给医院') { |
| | | cod2Obj.Used_date__c = Date.parse(csvRecordData[11].trim()); |
| | | } else { |
| | | cod2Obj.Send_Date__c = Date.parse(csvRecordData[11].trim()); |
| | | } |
| | | orderdet2BoxRecords.add(new ConsumableorderdetailsInfo(cod2Obj)); |
| | | } |
| | | } |
| | | return orderdet2BoxRecords; |
| | | } catch (Exception e) { |
| | | // ApexPages.addMessages(e); |
| | | // return null; |
| | | errorMsg += e.getMessage() + ' ' + e.getLineNumber() + ';'; |
| | | return null; |
| | | } |
| | | } |
| | | // 取到的产品明细 |
| | | public ConsumableorderdetailsInfo(Consumable_order_details2__c e) { |
| | | orderdetails2 = e; |
| | | orderName = e.TracingCode__c; |
| | | productName = e.Return_reason__c; |
| | | pieceCount = e.Rrturn_count__c; |
| | | e.TracingCode__c = ''; |
| | | e.Return_reason__c = ''; |
| | | e.Rrturn_count__c = null; |
| | | |
| | | public static List<ConsumableorderdetailsInfo> getorderdet2pieceList(List<String[]> csvRecordStr) { |
| | | barcodePieceList = new List<String>(); |
| | | List<ConsumableorderdetailsInfo> orderdet2PieceRecords = new List<ConsumableorderdetailsInfo>(); |
| | | try { |
| | | for (Integer i = 1; i < csvRecordStr.size(); i++) { |
| | | string[] csvRecordData = csvRecordStr[i]; |
| | | if (String.valueOf(csvRecordData[9]) == '个') { |
| | | Consumable_Order_details2__c cod2Obj = new Consumable_Order_details2__c(); |
| | | cod2Obj.TracingCode__c = csvRecordData[0]; |
| | | cod2Obj.Bar_Code__c = csvRecordData[6]; |
| | | if (String.isNotBlank(csvRecordData[6])) { |
| | | barcodePieceList.add(csvRecordData[6]); |
| | | } |
| | | cod2Obj.Box_Piece__c = csvRecordData[9]; |
| | | if (String.isNotBlank(csvRecordData[8])) { |
| | | cod2Obj.Delivery_List_RMB__c = Decimal.valueOf(csvRecordData[8]); |
| | | } |
| | | cod2Obj.Return_reason__c = csvRecordData[12]; |
| | | if (String.valueOf(csvRecordData[1]) == '销售给二级经销商' || String.valueOf(csvRecordData[1]) == '直接销售给医院') { |
| | | cod2Obj.Used_date__c = Date.parse(csvRecordData[11].trim()); |
| | | } else { |
| | | cod2Obj.Send_Date__c = Date.parse(csvRecordData[11].trim()); |
| | | } |
| | | cod2Obj.Rrturn_count__c = Decimal.valueOf(csvRecordData[7]); |
| | | orderdet2PieceRecords.add(new ConsumableorderdetailsInfo(cod2Obj)); |
| | | } |
| | | } |
| | | return orderdet2PieceRecords; |
| | | } catch (Exception e) { |
| | | // ApexPages.addMessages(e); |
| | | // return null; |
| | | errorMsg += e.getMessage(); |
| | | return null; |
| | | } |
| | | } |
| | | public Integer compareTo(Object compareTo) { |
| | | return null; |
| | | @TestVisible |
| | | class ConsumableorderdetailsInfo implements Comparable { |
| | | @AuraEnabled |
| | | public Consumable_order__c order { get; set; } |
| | | @AuraEnabled |
| | | public Consumable_orderdetails__c orderdetails1 { get; set; } |
| | | @AuraEnabled |
| | | public Consumable_order_details2__c orderdetails2 { get; set; } |
| | | @AuraEnabled |
| | | public String orderName { get; set; } |
| | | @AuraEnabled |
| | | public String hospitalCode { get; set; } |
| | | @AuraEnabled |
| | | public String hospitalName { get; set; } |
| | | @AuraEnabled |
| | | public String agencyName { get; set; } |
| | | @AuraEnabled |
| | | public String productName { get; set; } |
| | | @AuraEnabled |
| | | public Decimal pieceCount { get; set; } |
| | | // 取到的订单信息 |
| | | public ConsumableorderdetailsInfo(Consumable_order__c e) { |
| | | order = e; |
| | | hospitalCode = e.Order_Attachment__c; |
| | | hospitalName = e.Order_Indication__c; |
| | | agencyName = e.Invoice_Note__c; |
| | | e.Order_Attachment__c = ''; |
| | | e.Order_Indication__c = ''; |
| | | e.Invoice_Note__c = ''; |
| | | } |
| | | // 取到的订单明细 |
| | | public ConsumableorderdetailsInfo(Consumable_orderdetails__c e) { |
| | | orderdetails1 = e; |
| | | orderName = e.Remarks__c; |
| | | productName = e.Lose_reason__c; |
| | | e.Lose_reason__c = ''; |
| | | e.Remarks__c = ''; |
| | | } |
| | | // 取到的产品明细 |
| | | public ConsumableorderdetailsInfo(Consumable_order_details2__c e) { |
| | | orderdetails2 = e; |
| | | orderName = e.TracingCode__c; |
| | | productName = e.Return_reason__c; |
| | | pieceCount = e.Rrturn_count__c; |
| | | e.TracingCode__c = ''; |
| | | e.Return_reason__c = ''; |
| | | e.Rrturn_count__c = null; |
| | | } |
| | | public Integer compareTo(Object compareTo) { |
| | | return null; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |