public without sharing class LexInventoryController {
|
// page
|
public static Integer pagesize { get; set; }
|
public static Integer pageToken { get; set; }
|
public static String sortField { get; set; }
|
public static String sortOrder { get; set; }
|
|
public static Integer totalcount { get; set; }
|
//分页使用数据
|
public static String fileName { get; set; }
|
public static Integer size { get; set; }
|
public static Integer noOfRecords { get; set; }
|
public static List<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 static List<ConsumableorderdetailsInfo> consumableorderdetailsviewRecords;
|
|
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;
|
|
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>();
|
}
|
|
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;
|
}
|
|
// 画面初始化
|
@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', '');
|
// }
|
//========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;
|
}
|
}
|
} 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;
|
}
|
}
|
}
|