import {
	calc
} from '@/common/calc'

import {
	Decimal
} from 'decimal.js'; //引入



export function getTreeDataSource(dataList) {
	let items = [];

	let parentList = dataList.filter(r => r.parentPackingNumber == null || r
		.parentPackingNumber == '');
	let childList = dataList.filter(r => r.parentPackingNumber != '' && r.parentPackingNumber != null);

	parentList.forEach(detail => {
		var item = items.find(r =>
			r.itemCode == detail.itemCode)
		if (item == undefined) {
			item = createItemInfo(detail);
			let newDetail = createDetailInfo(detail); //
			item.subList.push(newDetail);
			items.push(item)
		} else {
			item.qty = calc.add(item.qty, detail.qty)
			let newDetail = createDetailInfo(detail); //
			item.subList.push(newDetail);
		}
	})

	if (childList.length > 0) {
		items.forEach(r =>
			r.subList.forEach(s => {
				s.packList = childList.filter(c => c.parentPackingNumber == s.packingNumber)
				s.packList.forEach(pac => {
					pac.scaned = false;
					pac.scanDate = new Date();
				})
			})
		)
	}
	return items;
}
export function getThreeDataSource(data) {
	let items = []
	// let obj ={
	// 	...data.subList[0]
	// }
	// console.log(12)
	// data.subList.forEach((item)=>{
	// 	item.threeList = [{
	// 		fromLocationCode:item.fromLocationCode,
	// 		batch:item.batch,
	// 		handleQty:0,
	// 		qty:item.qty,
	// 		inventoryStatus:item.inventoryStatus,
	// 		toLocationCode:item.toLocationCode,
	// 	}]
	// 	item.packList=[{
	// 		scaned : false,
	// 		scanDate: new Date()
	// 	}]
	// })
	// obj.subList = data.subList
	// items.push(obj)
	// return items;
	data.subList.forEach((item)=>{
		item.subList = [{
			fromLocationCode:item.fromLocationCode,
			batch:item.batch,
			handleQty:0,
			qty:item.qty,
			inventoryStatus:item.inventoryStatus,
			toLocationCode:item.toLocationCode,
			// packList:[{
			// 		scaned : false,
			// 		scanDate: new Date()
			// 	}]
		}]

	})
	items = data.subList
	return items;
}



export function getDataSource(subList) {
	let items = [];
	subList.forEach(detail => {
		var item = items.find(r =>
			r.itemCode == detail.itemCode && r.batch == detail.batch )
		if (item == undefined) {
			item = createItemInfo(detail);
			let newDetail = createDetailInfo(detail); //
			item.subList.push(newDetail);
			items.push(item)
		} else {
			item.qty = calc.add(item.qty, detail.qty)
			let newDetail = createDetailInfo(detail); //
			item.subList.push(newDetail);
		}
	})
	return items;
}

export function createItemInfo(detail) {
	let item = {
		itemCode: detail.itemCode,
		itemName: detail.itemName,
		packQty: Number(detail.packQty) || undefined,
		packUnit: detail.packUnit,
		qty: Number(detail.qty),
		handleQty: 0,
		uom: detail.uom,
		subList: []
	}
	return item;
}

export function createDetailInfo(data) {
	data.scaned = false;
	data.scanDate = new Date();
	let detail = data;
	detail.packList = [];
	return detail;
}

//根据明细创建记录
export function createRecordInfo(detail, balance) {
	var record = {}
	// let record = JSON.parse(JSON.stringify(detail));
	//克隆对象,深度克隆,防止双向绑定同一个变量
	Object.assign(record, detail)
	detail.scaned = true;
	detail.balance = balance;
	detail.recommendInventoryStatus = detail.inventoryStatus;
	detail.inventoryStatus = balance.inventoryStatus;
	record.qty = Number(balance.qty);
	return record;
}

//计算实际数量
export function calcHandleQty(detailSource) {
	console.log(999,detailSource)
	for (let item of detailSource) {
		item.handleQty = new Decimal(0).toNumber();
		item.qty = new Decimal(0).toNumber();
		for (let detail of item.subList) {
			if (detail != undefined) {
				if (detail.scaned) {
					item.handleQty = calc.add(item.handleQty, detail.handleQty);
				}
				item.qty = calc.add(item.qty, detail.qty);
			}
		}
	}
}
//计算计划外入库实际数量和任务数量
export function calcHandleQtyPlanOut(detailSource) {
	console.log(999,detailSource)
	for (let item of detailSource) {
		item.handleQty = new Decimal(0).toNumber();
		item.qty = new Decimal(0).toNumber();
		for (let detail of item.subList) {
			if (detail != undefined) {
				if (detail.scaned) {
					item.handleQty = calc.add(item.handleQty, detail.handleQty);
				}
				console.log(detail.isRecommend)
				if(detail.isRecommend){
				item.qty = calc.add(item.qty, detail.qty);
				}
			}
		}
	}
}
//计算推荐和扫描的不是用一个的数量
export function calcHandleNewQty(detailSource) {
	for (let item of detailSource) {
		item.handleQty = new Decimal(0).toNumber();
		// item.qty = new Decimal(0).toNumber();
		for (let detail of item.subList) {
			if (detail ) {
				if (!detail.isRecommend && detail.scaned) {
					item.handleQty = calc.add(item.handleQty, detail.handleQty);
				}
				// if (!detail.isRecommend ) {
				// 	item.qty = calc.add(item.qty, detail.qty);
				// }
				
			}
		}
	}
}




export function calcTreeHandleQty(detailSource) {
	for (let item of detailSource) {
		item.handleQty = new Decimal(0).toNumber();

		for (let detail of item.subList) {
			if (detail) {
				if (detail.packList&&detail.packList.length > 0) {
					detail.handleQty = new Decimal(0).toNumber();
					for (let pack of detail.packList) {
						if (pack && pack.scaned) {
							detail.handleQty = calc.add(detail.handleQty, pack.handleQty);
						}
					}
				}else{
					detail.handleQty = new Decimal(0).toNumber();
				}
				if(detail.handleQty){
					item.handleQty = calc.add(item.handleQty, detail.handleQty);
				}
			}
		}
	}
}





export function getScanCount(subList) {
	let items = subList.filter(r => {
		if (r.scaned) {
			return r;
		}
	})
	let scanCount = items != null ? items.length : 0;
	return scanCount;
}