/**============================================================================
* 业务锁整套流程
*/
public BusinessLock(businessName: string): Promise<boolean> {
//promise
return new Promise<boolean>(async resolve => {
//先加锁
let firstAddLock: any = await this.AddLock(businessName);
if (firstAddLock.status == 'success') {
// //加锁成功
this.businessLockNo = firstAddLock.info;
resolve(true);
} else {
//加锁失败,进行查锁
let queryLock: any = await this.QueryLock();
if (queryLock.status == 'success') {
//查锁成功,判断是否为本人加的锁
let lockInfo: any = queryLock.info;
if (lockInfo.LockState == 2) {
//本人加的锁,锁号更新,并且弹出对话框,询问是否重新加锁
UI.Confirm(
'编辑入库单已在其它页面锁定,是否在当前页面重新加锁?',
'业务锁',
{
confirmButtonText: '确定',
cancelButtonText: '取消'
}
)
.then(async () => {
//解锁然后重新加锁
this.businessLockNo = lockInfo.LockBusiNo;
let unLockInfo: any = await this.UnLock();
if (unLockInfo.status == 'success') {
let addLockInfo: any = await this.AddLock(businessName);
if (addLockInfo.status == 'success') {
//加锁成功,业务锁流程完毕
this.businessLockNo = addLockInfo.info;
resolve(true);
} else {
UI.ShowException(addLockInfo.info);
resolve(false);
}
} else {
//解锁失败,直接返回
resolve(false);
}
})
.catch(() => {
resolve(false);
});
} else {
//非本人加的锁,直接提示加锁的异常信息
UI.ShowException(firstAddLock.info);
resolve(false);
}
} else {
//查锁失败,直接返回
resolve(false);
}
}
});
}
/**
* 加锁
*/
public AddLock(businessName: string): Promise<any> {
return new Promise<any>(async resolve => {
try {
let addLockInfo: any = await this.lockMgr.LockBusiness(
'药品出库',
this.billNo,
sj.globalVar.UserID,
sj.globalVar.StationID,
businessName,
this.businessLockNo ? this.businessLockNo : ''
);
resolve({ status: 'success', info: addLockInfo });
} catch (error) {
resolve({ status: 'error', info: error });
}
});
}
/**
* 查锁是否为本人加的
*/
public QueryLock(): Promise<any> {
return new Promise<any>(async resolve => {
//已经被锁定,则判断该锁是不是本人加的锁
try {
let queryLockInfo: any = await this.lockMgr.QueryLockBusiness(
'药品出库',
this.billNo,
sj.globalVar.UserID,
sj.globalVar.StationID,
this.businessLockNo,
true,
sj.globalVar.UnitID
);
resolve({ status: 'success', info: queryLockInfo });
} catch (error) {
UI.ShowException(error);
resolve({ status: 'error' });
}
});
}
/**
* 解锁
*/
public UnLock(): Promise<any> {
return new Promise<any>(async resolve => {
//已经被锁定,则判断该锁是不是本人加的锁
try {
if (this.businessLockNo) {
let unLockInfo: any = await this.lockMgr.UnLockBusiness(
'药品出库',
this.billNo,
sj.globalVar.UserID,
sj.globalVar.StationID,
this.businessLockNo,
true
);
//解锁成功清空锁号
this.businessLockNo = '';
resolve({ status: 'success', info: unLockInfo });
}
resolve({ status: 'success' });
} catch (error) {
UI.ShowException(error);
resolve({ status: 'error' });
}
});
}