// 定义字段映射
const FieldKeysMap = {
	"STK_MisDelivery": "FID,FEntity_FEntryID,FBillNo,FStockLocId.FF102029.fname,FMaterialId.fnumber,FBOXNO_LT,FQty,FInventoryQty,FENCHASENUM_LT,FFabricOrderNo_LT,FInventoryQty,FAuxPropId.FF101501.FDATAVALUE,Flot.FNumber,FWorkCenterId.fname,FDate,FEntryNote,FPickingPeople_LT.fname,FSTOCKERID.fname,FWorkDeptId_LT.fname,FDeptId.FName,FPickerId.FName",
	"SP_PickMtrl": "FID,FEntity_FEntryID,FBillNo,FStockLocId.FF102029.fname,FMaterialId.fnumber,FBOXNO_LT,FActualQty,FInventoryQty,FENCHASENUM_LT,FFabricOrderNo_LT,FInventoryQty,FAuxPropId.FF101501.FDATAVALUE,Flot.FNumber,FWorkCenterId.fname,FEntrtyMemo,FDate,FPickerId.fname,FSTOCKERID.fname,FStockActualQty,FWorkShopId.fname,FPickingPeople_LT.FName",
	"LT_PRD_PMCWorkBench": "FID,FEntity_FEntryID,FBillNo,FStockLocId.FF102029.fname,FMaterialId.fnumber,FBOXNO_LT,FActualQty,FInventoryQty,FENCHASENUM_LT,FFabricOrderNo,FInventoryQty,FAuxPropId.FF101501.FDATAVALUE,Flot.FNumber,FWorkCenterId_LT.fname,FEntrtyMemo,FDate,FApplicantId.fname,FSTOCKERID.fname,FStockActualQty,FWorkShopId.fname",
	"PUR_MRB": "FID,FPURMRBENTRY_FEntryID,FBillNo,FStockLocId.FF102029.fname,FMaterialId.fnumber,FBOXNO_LT,FInventoryQty,FENCHASENUM_LT,FInventoryQty,FAuxPropId.FF101501.FDATAVALUE,Flot.FNumber,FDate,FSTOCKERID.fname,FStockId.FNumber,FRMREALQTY,FFabricOrderNo,FPURCHASERID.fname",
	"STK_OEMInStockRETURN": "FID,FBillEntry_FEntryID,FBillNo,FStockLocId.FF102029.fname,FMaterialId.fnumber,FBoxNo,FInventoryQty,FENCHASENUM_LT,FAuxPropId.FF101501.FDATAVALUE,Flot.FNumber,FDate,FSTOCKERID.fname,FStockId.FNumber,FQty,FFabricOrderNo,FNoteEntry",
	"SAL_OUTSTOCK": "FID,FEntity_FEntryID,FBillNo,FStockLocId.FF102029.fname,FMaterialId.fnumber,FBoxNumber,FInventoryQty_LT,FENCHASENUM_LT,FAuxPropId.FF101501.FDATAVALUE,Flot.FNumber,FDate,FSTOCKERID.fname,FStockId.FNumber,FRealQty,FFABRICORDERNO_LT,FEntrynote",
	"LT_STK_StockCount":"FID,FEntity_FEntryID,FBillNo,FIsCheck,FCheckTag,FStockId.fnumber,FStockId.FName,FStockLocId.FF102029.fname,FMaterialId.fnumber,FEnchaseNo,FBoxNo,FCheckNum,FAccountNum"

};

export function getSearchParam(condition) {
	let FilterString = [{ //其他出库
			"Left": "(",
			"FieldName": "FDocumentStatus",
			"Compare": "105",
			"Value": "A",
			"Right": "",
			"Logic": 1
		},
		// {//审核中
		// 	"Left": "",
		// 	"FieldName": "FDocumentStatus",
		// 	"Compare": "105",
		// 	"Value": "B",
		// 	"Right": "",
		// 	"Logic": 1
		// },
		{
			"Left": "",
			"FieldName": "FDocumentStatus",
			"Compare": "105",
			"Value": "D",
			"Right": ")",
			"Logic": 0
		}, {
			"Left": "",
			"FieldName": "FStockOrgId.FNumber",
			"Compare": "67",
			"Value": condition.FStockOrgId,
			"Right": "",
			"Logic": 0
		},
		{
			"FieldName": "FBillNo",
			"Compare": "17",
			"Value": condition.billNo,
			"Left": "",
			"Right": "",
			"Logic": 0
		},
		{
			"Left": "",
			"FieldName": "FStockId.FName",
			"Compare": "17",
			"Value": "面料",
			"Right": "",
			"Logic": 0
		},
		{
			"FieldName": "FDate",
			"Compare": "39",
			"Value": condition.range[0],
			"Left": "(",
			"Right": "",
			"Logic": "0"
		},
		{
			"FieldName": "FDate",
			"Compare": "16",
			"Value": condition.range[1],
			"Left": "",
			"Right": ")",
			"Logic": "0"
		}
	]
	let FieldKeys =
		"FID,FWorkCenterId.fname,FPickingPeople_LT.fname,FSTOCKERID.fname,FBillNo,FDate,FNote,FStockOrgId"
	console.log(condition.FBillType)
	if (condition.FBillType == "d43d7e5b9def82fc11e3e582178e4360") { //领料
		FilterString.push({
			"Left": "",
			"FieldName": "FBillType",
			"Compare": "105",
			"Value": condition.FBillType,
			"Right": "",
			"Logic": 0
		});
		console.log('aaaa')
		FieldKeys =
			"FID,FWorkCenterId_LT.fname,FApplicantId.fname,FSTOCKERID.fname,FBillNo,FDate,FDescription,FStockOrgId"
	}
	if (condition.FormId == "STK_MisDelivery") { //其他出库
		FilterString.push({
			"Left": "",
			"FieldName": "FStockDirect",
			"Compare": "29",
			"Value": "GENERAL",
			"Right": "",
			"Logic": 0
		});
		FieldKeys =
			"FID,FWorkCenterId.fname,FPickingPeople_LT.fname,FSTOCKERID.fname,FBillNo,FDate,FNote,FStockOrgId,FDeptId.FName,FPickerId.FName"
	}
	if (condition.FormId == "SP_PickMtrl" && condition.FBillType !== 'B') { //简单生产领料单
		FilterString.push({
			"Left": "",
			"FieldName": "FCollectStatus_LT",
			"Compare": "106",
			"Value": "B",
			"Right": "",
			"Logic": 0
		});
		FieldKeys =
			"FID,FWorkCenterId.fname,FPickerId.fname,FSTOCKERID.fname,FBillNo,FDate,FDescription,FStockOrgId,FPickingPeople_LT.FName,FCollectStatus_LT"
	}
	if (condition.FormId == "SP_PickMtrl" && condition.FBillType == 'B') { //简单生产领料单(智能)
		FilterString.push({
			"Left": "",
			"FieldName": "FCollectStatus_LT",
			"Compare": "105",
			"Value": "B",
			"Right": "",
			"Logic": 0
		});
		FieldKeys =
			"FID,FWorkCenterId.fname,FPickerId.fname,FSTOCKERID.fname,FBillNo,FDate,FDescription,FStockOrgId,FPickingPeople_LT.FName,FCollectStatus_LT"
	}
	if (condition.FormId == "PUR_MRB") { //采购退料单
		FieldKeys =
			"FID,FSupplierID.fname,FPURCHASERID.fname,FPURCHASEDEPTID.fname,FSTOCKERID.fname,FBillNo,FDate,FStockOrgId"
	}
	if (condition.FormId == "STK_OEMInStockRETURN") {
		FieldKeys =
			"FID,FCustId.FName,FDeptId_LT.FName,FBillNo,FSTOCKERID.fname,FDate,FNote,FStockOrgId"
	}
	if (condition.FormId == "SAL_OUTSTOCK") { //销售出库
		FieldKeys =
			"FID,FBillNo,FCustomerID.FName,FSalesManID.FName,FSaleDeptID.FName,FSTOCKERID.fname,FDate"
	}
	if (condition.FormId == "LT_STK_StockCount") { //仓位盘点
		FilterString.push({
			"Left": "",
			"FieldName": "FBillTypeID",
			"Compare": "105",
			"Value": condition.FBillType,
			"Right": "",
			"Logic": 0
		});
		FieldKeys =
			// "FID,FBillNo,FCustomerID.FName,FSalesManID.FName,FSaleDeptID.FName,FSTOCKERID.fname,FDate"
			"FID,FBillNo,FDate,FCreatorId.FName,FCreateDate"
	}
	console.log(FieldKeys)
	console.log(FilterString)

	return {
		"parameters": [{
			"FormId": condition.FormId,
			"FieldKeys": FieldKeys,
			"FilterString": FilterString
		}]
	}
}

export function getBillDetailListParam(condition) {
	console.log(condition)
	let FieldKeys = FieldKeysMap[condition.FormId]
	if (condition.FormId == "SP_PickMtrl" && condition.FBillType == 'B') {
		FieldKeys =
			"FID,FSumEntity_FEntryID,FBillNo,FSTOCKERID.fname,FSumStockLocId.FF102029.fname,FSumMaterialId.fnumber,FSumBoxNo_LT,FSumActualQty,FSumEnchaseNum_LT,FSumAuxPropId.FF101501.FNumber,FSumLot.FNumber,FWorkCenterId.fname,FDate,FPickerId.fname,FWorkShopId.fname,FPickingPeople_LT.FName"
	}

	return {
		"parameters": [{
			"FormId": condition.FormId,
			"FieldKeys": FieldKeys,
			"FilterString": [{
				"Left": "",
				"FieldName": "FID",
				"Compare": "338",
				"Value": condition.selectedFID,
				"Right": "",
				"Logic": 0
			}],
		}]
	}

}
// 定义一个函数来创建库存查询请求数据
export function createInventoryQueryRequest(value) {
	return {
		parameters: [{
			FormId: "STK_Inventory",
			FieldKeys: "fID",
			FilterString: [{
					Left: "",
					FieldName: "FStockLocId.FF102029.FName",
					Compare: "67",
					Value: value,
					Right: "",
					Logic: 0
				},
				{
					Left: "",
					FieldName: "FBaseQty",
					Compare: "21",
					Value: "0",
					Right: "",
					Logic: 0
				}
			]
		}]
	};
}

function getActualQtyKey(FormId) {
	const keyMap = {
		'LT_PRD_PMCWorkBench': 'FActualQty',
		'SP_PickMtrl': 'FActualQty',
		'STK_MisDelivery': 'FQty',
		'PUR_MRB': 'FRMREALQTY',
		'SAL_OUTSTOCK': 'FRealQty',
	};
	return keyMap[FormId] || 'FQty';
}

function getFInventoryQtyKey(FormId) {
	const keyMap = {
		'SAL_OUTSTOCK': 'FInventoryQty.LT',
	};
	return keyMap[FormId] || 'FInventoryQty';
}

function getStockLocIdKey(FormId) {
	const keyMap = {
		'SAL_OUTSTOCK': 'FName',
	};
	return keyMap[FormId] || 'FNumber';
}

function getEntityKey(FormId) {
	const keyMap = {
		'STK_OEMInStockRETURN': 'FBillEntry',
	};
	return keyMap[FormId] || 'FEntity';
}

function createEntityObject(item, actualQtyKey, entityKey, InventoryQtyKey, StockLocIdKey) {
	return {
		"FEntryID": item[entityKey + ".FEntryID"],
		[InventoryQtyKey]: item[InventoryQtyKey],
		"FAuxPropId": {
			"FAUXPROPID__FF101501": {
				"FNumber": item["FAuxPropId.FF101501.FDATAVALUE"]
			}
		},
		"FStockLocId": {
			"FSTOCKLOCID__FF102029": {
				[StockLocIdKey]: item["FStockLocId.FF102029.fname"]
			}
		},
		"FLot": {
			"FNumber": item["Flot.FNumber"]
		},
		"FENCHASENUM_LT": item["FENCHASENUM.LT"],
		[actualQtyKey]: item[actualQtyKey] // 使用动态键名
	};
}

function createEntityObject2(item) {
	return {
		"FEntryID": item["FSumEntity.FEntryID"],
		"FSumAuxPropId": {
			"FSUMAUXPROPID__FF101501": {
				"FNumber": item["FSumAuxPropId.FF101501.FDATAVALUE"]
			}
		},
		"FSumStockLocId": {
			"FSUMSTOCKLOCID__FF102029": {
				"FNumber": item["FSumStockLocId.FF102029.fname"]
			}
		},
		"FSumLot": {
			"FNumber": item["FSumLot.FNumber"]
		},
		"FSumEnchaseNum_LT": item["FSumEnchaseNum.LT"],
		"FSumActualQty": item["FSumActualQty"]
	};
}

export function getSaveParam(FormId, data, indexList) {
	const targetFID = data;
	const actualQtyKey = getActualQtyKey(FormId);
	const InventoryQtyKey = getFInventoryQtyKey(FormId);
	const entityKey = getEntityKey(FormId);
	const StockLocIdKey = getStockLocIdKey(FormId);
	const FEntityObjects = indexList
		.filter(item => item.FID === targetFID)
		.map(item => createEntityObject(item, actualQtyKey, entityKey, InventoryQtyKey, StockLocIdKey));

	const needUpdateFields = [
		InventoryQtyKey,
		"FAuxPropId",
		"FStockLocId",
		"FIsScanFabric",
		"FLot",
		"FENCHASENUM_LT",
		actualQtyKey // 直接添加到数组中
	];

	return {
		"parameters": [
			FormId,
			{
				"NeedUpDateFields": needUpdateFields,
				"NeedReturnFields": ["FID"],
				"IsDeleteEntry": "true",
				"SubSystemId": "",
				"IsVerifyBaseDataField": "false",
				"IsEntryBatchFill": "true",
				"ValidateFlag": "true",
				"NumberSearch": "true",
				"IsAutoAdjustField": "false",
				"InterationFlags": "",
				"IgnoreInterationFlag": "",
				"IsControlPrecision": "false",
				"ValidateRepeatJson": "false",
				"Model": {
					"FID": targetFID,
					"FIsScanFabric": true,
					[entityKey]: FEntityObjects
				}
			}
		]
	};
}
export function get2SaveParam(FormId, data, indexList) {
	const targetFID = data;
	// const actualQtyKey = getActualQtyKey(FormId);
	// const InventoryQtyKey = getFInventoryQtyKey(FormId);
	const entityKey = getEntityKey(FormId);
	// const StockLocIdKey = getStockLocIdKey(FormId);
	const FEntityObjects = indexList
		.filter(item => item.FID === targetFID)
		.map(item => createEntityObject2(item));

	const needUpdateFields = [
		// InventoryQtyKey,
		"FSumAuxPropId",
		"FSumStockLocId",
		"FIsScanFabric",
		"FSumLot",
		"FSumEnchaseNum_LT",
		"FSumActualQty" // 直接添加到数组中
	];

	return {
		"parameters": [
			FormId,
			{
				"NeedUpDateFields": needUpdateFields,
				"NeedReturnFields": ["FID"],
				"IsDeleteEntry": "true",
				"SubSystemId": "",
				"IsVerifyBaseDataField": "false",
				"IsEntryBatchFill": "true",
				"ValidateFlag": "true",
				"NumberSearch": "true",
				"IsAutoAdjustField": "false",
				"InterationFlags": "",
				"IgnoreInterationFlag": "",
				"IsControlPrecision": "false",
				"ValidateRepeatJson": "false",
				"Model": {
					"FID": targetFID,
					"FIsScanFabric": true,
					"FSumEntity": FEntityObjects
				}
			}
		]
	};

}
export function getSubmitParam(FormId, data) {
	const params = {
		"parameters": [
			FormId,
			{
				"CreateOrgId": 0,
				"Numbers": [],
				"Ids": data.toString(),
				"SelectedPostId": 0,
				"UseOrgId": 0,
				"NetworkCtrl": "",
				"IgnoreInterationFlag": ""
			}
		]
	};
	console.log(params);
	return params;
}
export function getAuditParam(FormId, data) {
	const params = {
		"parameters": [
			FormId,
			{
				"CreateOrgId": 0,
				"Numbers": [],
				"Ids": data.toString(),
				"InterationFlags": "",
				"UseOrgId": 0,
				"NetworkCtrl": "",
				"IsVerifyProcInst": "true",
				"IgnoreInterationFlag": "",
				"UseBatControlTimes": "false"
			}
		]
	}
	console.log(params)
	return params
}