fix: 优化人员管理和三码校验记录页面业务逻辑

This commit is contained in:
XingCheng3
2026-06-16 14:48:03 +08:00
parent f06d02e95d
commit 3ed5f66667
6 changed files with 999 additions and 344 deletions

View File

@@ -0,0 +1,565 @@
USE [AMES_PDC]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_部门关系_增加节点]
@ int = null,
@ nvarchar(100) = null,
@ int out
AS
BEGIN
SET NOCOUNT ON
IF ISNULL(@, '') = ''
BEGIN
SELECT 0 AS result, N'部门名称不能为空' AS msg
RETURN
END
IF ISNULL(@, 0) <> 0
AND NOT EXISTS (SELECT 1 FROM _基础表_部门 WHERE = @)
BEGIN
SELECT 0 AS result, N'上级部门不存在' AS msg
RETURN
END
BEGIN TRY
BEGIN TRAN
INSERT INTO [_部门关系]([], )
SELECT ISNULL(@, 0), ISNULL(MAX(), 0) + 1
FROM _部门关系
WHERE = ISNULL(@, 0)
SET @ = SCOPE_IDENTITY()
INSERT INTO _基础表_部门 (, )
VALUES(@, @)
COMMIT TRAN
SELECT 1 AS result, N'添加成功' AS msg
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK TRAN
SELECT 0 AS result, ERROR_MESSAGE() AS msg
END CATCH
END
GO
ALTER PROCEDURE [dbo].[_部门关系_修改节点]
@ int,
@ nvarchar(100)
AS
BEGIN
SET NOCOUNT ON
IF ISNULL(@, '') = ''
BEGIN
SELECT 0 AS result, N'部门名称不能为空' AS msg
RETURN
END
IF NOT EXISTS (SELECT 1 FROM _基础表_部门 WHERE = @)
BEGIN
SELECT 0 AS result, N'部门不存在' AS msg
RETURN
END
UPDATE _基础表_部门
SET [] = @
WHERE [] = @
SELECT 1 AS result, N'编辑成功' AS msg
END
GO
ALTER PROCEDURE [dbo].[_部门关系_删除节点]
@ int = null
AS
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT 1 FROM _部门关系 WHERE = @)
BEGIN
SELECT 0 AS result, N'部门不存在' AS msg
RETURN
END
IF EXISTS (SELECT 1 FROM _部门关系 WHERE = @)
BEGIN
SELECT 0 AS result, N'该部门存在下级部门,请先删除或调整下级部门' AS msg
RETURN
END
IF EXISTS (
SELECT 1
FROM _人员名单
WHERE = @
AND ISNULL(, 0) = 0
AND ISNULL(, 1) = 1
)
BEGIN
SELECT 0 AS result, N'该部门下存在在职人员,请先移动、离职或删除人员' AS msg
RETURN
END
BEGIN TRY
BEGIN TRAN
DELETE FROM _基础表_部门 WHERE [] = @
DELETE FROM [_部门关系] WHERE [] = @
COMMIT TRAN
SELECT 1 AS result, N'删除成功' AS msg
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK TRAN
SELECT 0 AS result, ERROR_MESSAGE() AS msg
END CATCH
END
GO
ALTER PROCEDURE [dbo].[_人员名单_增加数据_MESWORK]
@ int = null,
@ int = null,
@ int = null,
@ int = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ datetime = null,
@ datetime = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ nvarchar(10) = null,
@ int = null
AS
BEGIN
SET NOCOUNT ON
DECLARE @ int
IF ISNULL(@, '') = ''
BEGIN
SELECT 0 AS result, N'姓名不能为空' AS msg
RETURN
END
IF ISNULL(@, '') = ''
BEGIN
SELECT 0 AS result, N'工号不能为空' AS msg
RETURN
END
IF TRY_CONVERT(int, @) IS NULL
BEGIN
SELECT 0 AS result, N'工号格式不正确' AS msg
RETURN
END
IF NOT EXISTS (SELECT 1 FROM _基础表_部门 WHERE = @)
BEGIN
SELECT 0 AS result, N'所属部门不存在,请重新选择部门' AS msg
RETURN
END
IF EXISTS (SELECT 1 FROM _人员名单 WHERE = TRY_CONVERT(int, @))
BEGIN
SELECT 0 AS result, N'工号已存在,不能重复新增' AS msg
RETURN
END
BEGIN TRY
BEGIN TRAN
INSERT INTO [dbo].[_人员名单](
[], [], , , , , ,
, , , , , , )
VALUES(
TRY_CONVERT(int, @), @, @, @, @, @, @,
@, @, @, @, @, @, @)
SET @ = SCOPE_IDENTITY()
INSERT INTO [dbo].[_部门与人员](, , )
VALUES(@, @, @)
COMMIT TRAN
SELECT 1 AS result, N'添加成功' AS msg
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK TRAN
SELECT 0 AS result, ERROR_MESSAGE() AS msg
END CATCH
END
GO
ALTER PROCEDURE [dbo].[_人员名单_修改数据_MESWORK]
@ int = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ int = null,
@ int = null,
@ int = null,
@ nvarchar(50) = null,
@ int = null,
@ int = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ datetime = null,
@ datetime = null,
@ nvarchar(50) = null,
@ nvarchar(50) = null,
@ nvarchar(10) = null,
@ nvarchar(50) = null
AS
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT 1 FROM _人员名单 WHERE = @)
BEGIN
SELECT 0 AS result, N'人员不存在' AS msg
RETURN
END
IF ISNULL(@, '') = ''
BEGIN
SELECT 0 AS result, N'姓名不能为空' AS msg
RETURN
END
IF ISNULL(@, '') = ''
BEGIN
SELECT 0 AS result, N'工号不能为空' AS msg
RETURN
END
IF TRY_CONVERT(int, @) IS NULL
BEGIN
SELECT 0 AS result, N'工号格式不正确' AS msg
RETURN
END
IF EXISTS (
SELECT 1
FROM _人员名单
WHERE = TRY_CONVERT(int, @)
AND <> @
)
BEGIN
SELECT 0 AS result, N'工号已存在,不能重复保存' AS msg
RETURN
END
IF(@ = 'NAN') SET @ = null
IF(@ = 'NAN') SET @ = null
IF(@ = 'NAN') SET @ = null
IF(@ = 'NAN') SET @ = null
BEGIN TRY
BEGIN TRAN
UPDATE [dbo].[_人员名单]
SET = TRY_CONVERT(int, @),
= @,
= @,
= @,
= TRY_CONVERT(int, @),
= TRY_CONVERT(int, @),
= @,
= @,
= @,
= @,
= @,
= @,
= TRY_CONVERT(int, @)
WHERE = @
UPDATE [dbo].[_部门与人员]
SET = @
WHERE = @
COMMIT TRAN
SELECT 1 AS result, N'编辑成功' AS msg
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK TRAN
SELECT 0 AS result, ERROR_MESSAGE() AS msg
END CATCH
END
GO
ALTER PROCEDURE [dbo].[_人员名单_移动数据_MESWORK]
@ int = null,
@ int = null
AS
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT 1 FROM _人员名单 WHERE = @)
BEGIN
SELECT 0 AS result, N'人员不存在' AS msg
RETURN
END
IF NOT EXISTS (SELECT 1 FROM _基础表_部门 WHERE = @)
BEGIN
SELECT 0 AS result, N'目标部门不存在' AS msg
RETURN
END
BEGIN TRY
BEGIN TRAN
UPDATE [dbo].[_人员名单]
SET = @
WHERE = @
UPDATE [dbo].[_部门与人员]
SET = @
WHERE = @
COMMIT TRAN
SELECT 1 AS result, N'移组成功' AS msg
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK TRAN
SELECT 0 AS result, ERROR_MESSAGE() AS msg
END CATCH
END
GO
ALTER PROCEDURE [dbo].[_人员名单_删除数据_MESWORK]
@ int = null
AS
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT 1 FROM _人员名单 WHERE = @)
BEGIN
SELECT 0 AS result, N'人员不存在' AS msg
RETURN
END
UPDATE _人员名单
SET = 1,
= 2
WHERE = @
DELETE FROM _人员与角色
WHERE = @
SELECT 1 AS result, N'删除成功' AS msg
END
GO
ALTER PROCEDURE [dbo].[_人员_离职操作]
@ int
AS
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT 1 FROM _人员名单 WHERE = @)
BEGIN
SELECT 0 AS result, N'人员不存在' AS msg
RETURN
END
IF EXISTS (SELECT 1 FROM _人员名单 WHERE = @ AND ISNULL(, 1) = 2)
BEGIN
SELECT 0 AS result, N'该员工已离职' AS msg
RETURN
END
UPDATE _人员名单
SET = 2
WHERE = @
SELECT 1 AS result, N'离职成功' AS msg
END
GO
CREATE OR ALTER PROCEDURE [dbo].[_人员_复职操作]
@ int
AS
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT 1 FROM _人员名单 WHERE = @)
BEGIN
SELECT 0 AS result, N'人员不存在' AS msg
RETURN
END
IF EXISTS (SELECT 1 FROM _人员名单 WHERE = @ AND ISNULL(, 0) <> 0)
BEGIN
SELECT 0 AS result, N'该员工已被删除,不能复职' AS msg
RETURN
END
IF EXISTS (SELECT 1 FROM _人员名单 WHERE = @ AND ISNULL(, 1) = 1)
BEGIN
SELECT 0 AS result, N'该员工已是在职状态' AS msg
RETURN
END
UPDATE _人员名单
SET = 1,
= 0
WHERE = @
SELECT 1 AS result, N'复职成功' AS msg
END
GO
ALTER PROCEDURE [dbo].[_离职人员_删除数据]
@ nvarchar(50) = null
AS
BEGIN
SET NOCOUNT ON
DECLARE @ int
SELECT @ =
FROM _人员名单
WHERE = @
IF @ IS NULL
BEGIN
SELECT 0 AS result, N'人员不存在' AS msg
RETURN
END
IF EXISTS (
SELECT 1
FROM _人员名单
WHERE = @
AND ISNULL(, 1) <> 2
)
BEGIN
SELECT 0 AS result, N'只能删除离职人员' AS msg
RETURN
END
BEGIN TRY
BEGIN TRAN
DELETE FROM _人员与角色 WHERE = @
DELETE FROM _部门与人员 WHERE = @
DELETE FROM _人员名单 WHERE = @
COMMIT TRAN
SELECT 1 AS result, N'删除成功' AS msg
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0 ROLLBACK TRAN
SELECT 0 AS result, ERROR_MESSAGE() AS msg
END CATCH
END
GO
ALTER PROCEDURE [dbo].[_项目角色员工综合_增加数据]
@ int = null,
@ int = null,
@ int = null
AS
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT 1 FROM _人员名单 WHERE = @)
BEGIN
SELECT 0 AS result, N'人员不存在' AS msg
RETURN
END
IF EXISTS (
SELECT 1
FROM _人员名单
WHERE = @
AND (ISNULL(, 0) <> 0 OR ISNULL(, 1) <> 1)
)
BEGIN
SELECT 0 AS result, N'该员工不是在职状态,不能分配角色' AS msg
RETURN
END
IF NOT EXISTS (SELECT 1 FROM _项目角色 WHERE = @)
BEGIN
SELECT 0 AS result, N'角色不存在' AS msg
RETURN
END
IF EXISTS (SELECT 1 FROM _人员与角色 WHERE = @ AND = @)
BEGIN
SELECT 0 AS result, N'该员工已分配该角色,不能重复新增' AS msg
RETURN
END
INSERT INTO [_人员与角色](, , )
VALUES(@, @, GETDATE())
SELECT 1 AS result, N'增加成功' AS msg
END
GO
ALTER PROCEDURE [dbo].[_项目角色员工综合_修改数据]
@ int = null,
@ int = null,
@ int = null
AS
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT 1 FROM _人员与角色 WHERE = @)
BEGIN
SELECT 0 AS result, N'人员角色关系不存在' AS msg
RETURN
END
IF NOT EXISTS (SELECT 1 FROM _项目角色 WHERE = @)
BEGIN
SELECT 0 AS result, N'角色不存在' AS msg
RETURN
END
IF EXISTS (
SELECT 1
FROM _人员与角色
WHERE = @
AND = @
AND <> @
)
BEGIN
SELECT 0 AS result, N'该员工已分配该角色,不能重复保存' AS msg
RETURN
END
UPDATE [_人员与角色]
SET [] = @,
= GETDATE()
WHERE [] = @
SELECT 1 AS result, N'修改成功' AS msg
END
GO
ALTER PROCEDURE [dbo].[_项目角色员工综合_删除数据]
@ int = null
AS
BEGIN
SET NOCOUNT ON
IF NOT EXISTS (SELECT 1 FROM _人员与角色 WHERE = @)
BEGIN
SELECT 0 AS result, N'人员角色关系不存在或已删除' AS msg
RETURN
END
DELETE FROM _人员与角色
WHERE = @
SELECT 1 AS result, N'删除成功' AS msg
END
GO