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<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 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 + '%';
|
|
|
|
|
/* 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 );
|
//查询库存 追加返品库存
|
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 ];
|
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++){
|
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
|
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;
|
}
|
}
|
}
|