428 lines
14 KiB
Transact-SQL
428 lines
14 KiB
Transact-SQL
DROP PROCEDURE IF EXISTS uspTantargyfelosztasImport
|
|
GO
|
|
|
|
CREATE PROCEDURE uspTantargyfelosztasImport
|
|
@pIntezmenyId int
|
|
,@pTanevId int
|
|
,@pUserId int
|
|
,@pImportJson nvarchar(max)
|
|
,@pIsTorles bit
|
|
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE
|
|
@tableNameList nvarchar(2000) = 'T_TANTARGY_OSSZES,T_OSZTALYCSOPORT_OSSZES'
|
|
,@actualJson nvarchar(max) = ''
|
|
,@lastChangedDateTime datetime = GETDATE()
|
|
|
|
--Ha törlés van, akkor a kapcsolódások törlésével kell kezdenünk!
|
|
IF (@pIsTorles = 1) BEGIN
|
|
--Foglalkozás kapcsolatainak törlése
|
|
UPDATE oo SET
|
|
oo.C_FOGLALKOZASID = NULL
|
|
,oo.SERIAL = oo.SERIAL + 1
|
|
,oo.LASTCHANGED = @lastChangedDateTime
|
|
,oo.MODIFIER = @pUserId
|
|
FROM T_ORARENDIORA_OSSZES oo
|
|
WHERE oo.C_INTEZMENYID = @pIntezmenyId
|
|
AND oo.C_TANEVID = @pTanevId
|
|
AND oo.TOROLT = 'F'
|
|
AND EXISTS (
|
|
SELECT TOP 1 ID
|
|
FROM T_FOGLALKOZAS_OSSZES fg
|
|
WHERE fg.ID = oo.C_FOGLALKOZASID
|
|
AND fg.C_INTEZMENYID = @pIntezmenyId
|
|
AND fg.C_TANEVID = @pTanevId
|
|
AND fg.TOROLT = 'F'
|
|
AND fg.C_IMPORTALT = 'T'
|
|
)
|
|
|
|
UPDATE tao SET
|
|
tao.C_FOGLALKOZASID = NULL
|
|
,tao.SERIAL = tao.SERIAL + 1
|
|
,tao.LASTCHANGED = @lastChangedDateTime
|
|
,tao.MODIFIER = @pUserId
|
|
FROM T_TANITASIORA_OSSZES tao
|
|
WHERE tao.C_INTEZMENYID = @pIntezmenyId
|
|
AND tao.C_TANEVID = @pTanevId
|
|
AND tao.TOROLT = 'F'
|
|
AND EXISTS (
|
|
SELECT TOP 1 ID
|
|
FROM T_FOGLALKOZAS_OSSZES fg
|
|
WHERE fg.ID = tao.C_FOGLALKOZASID
|
|
AND fg.C_INTEZMENYID = @pIntezmenyId
|
|
AND fg.C_TANEVID = @pTanevId
|
|
AND fg.TOROLT = 'F'
|
|
AND fg.C_IMPORTALT = 'T'
|
|
)
|
|
|
|
END
|
|
|
|
--NOTE: A törlés azért false, mert a T_TANTARGY_OSSZES és a T_OSZTALYCSOPORT_OSSZES view-ból nem törlünk importnál!
|
|
EXECUTE uspDynamicImportJsonSplit @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @pImportJson, @pIsTorles = 0, @pIsSubTable = 0, @pTableNameList = @tableNameList
|
|
|
|
--NOTE: Osztály temp tábla incializálása
|
|
CREATE TABLE #OsztalyTempTable (
|
|
ID int
|
|
,C_KETTANNYELVU char(1)
|
|
,C_NEMZETISEGI char(1)
|
|
,C_NYELVIELOKESZITO char(1)
|
|
,C_SPORT char(1)
|
|
|
|
,C_ALINTEZMENYID int
|
|
,C_ALTANEVID int
|
|
,TOROLT char(1)
|
|
,SERIAL int
|
|
,LASTCHANGED datetime
|
|
,CREATED datetime
|
|
,MODIFIER int
|
|
,CREATOR int
|
|
,ELOZOTANEVIREKORDID int
|
|
,Operation int
|
|
)
|
|
|
|
INSERT INTO #OsztalyTempTable
|
|
SELECT
|
|
ocs.ID
|
|
,o.C_KETTANNYELVU
|
|
,o.C_NEMZETISEGI
|
|
,o.C_NYELVIELOKESZITO
|
|
,o.C_SPORT
|
|
|
|
,o.C_ALINTEZMENYID
|
|
,o.C_ALTANEVID
|
|
,o.TOROLT
|
|
,o.SERIAL
|
|
,o.LASTCHANGED
|
|
,o.CREATED
|
|
,o.MODIFIER
|
|
,o.CREATOR
|
|
,o.ELOZOTANEVIREKORDID
|
|
,o.Operation
|
|
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_OSZTALY_OSSZES')
|
|
WITH (
|
|
ID int '$.ID'
|
|
,C_KETTANNYELVU char(1) '$.C_KETTANNYELVU'
|
|
,C_NEMZETISEGI char(1) '$.C_NEMZETISEGI'
|
|
,C_NYELVIELOKESZITO char(1) '$.C_NYELVIELOKESZITO'
|
|
,C_SPORT char(1) '$.C_SPORT'
|
|
|
|
,C_ALINTEZMENYID int '$.C_INTEZMENYID'
|
|
,C_ALTANEVID int '$.C_TANEVID'
|
|
,TOROLT char(1) '$.TOROLT'
|
|
,SERIAL int '$.SERIAL'
|
|
,LASTCHANGED datetime '$.LASTCHANGED'
|
|
,CREATED datetime '$.CREATED'
|
|
,MODIFIER int '$.MODIFIER'
|
|
,CREATOR int '$.CREATOR'
|
|
,ELOZOTANEVIREKORDID int '$.ELOZOTANEVIREKORDID'
|
|
,Operation int '$.Operation'
|
|
|
|
,OsztalyCsoportNev nvarchar(255) '$.OsztalyCsoportNev'
|
|
) o
|
|
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON
|
|
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
|
|
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
|
|
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ocs.C_NEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(o.OsztalyCsoportNev)
|
|
AND ocs.C_INTEZMENYID = @pIntezmenyId
|
|
AND ocs.C_TANEVID = @pTanevId
|
|
AND ocs.TOROLT = 'F'
|
|
AND o.ID IS NULL
|
|
|
|
--NOTE: Csoport temp tábla incializálása
|
|
CREATE TABLE #CsoportTempTable (
|
|
ID int
|
|
,C_TIPUSA int
|
|
,C_OSZTALYBONTASID int
|
|
|
|
,C_ALINTEZMENYID int
|
|
,C_ALTANEVID int
|
|
,TOROLT char(1)
|
|
,SERIAL int
|
|
,LASTCHANGED datetime
|
|
,CREATED datetime
|
|
,MODIFIER int
|
|
,CREATOR int
|
|
,ELOZOTANEVIREKORDID int
|
|
,Operation int
|
|
)
|
|
|
|
INSERT INTO #CsoportTempTable
|
|
SELECT
|
|
ocs.ID
|
|
,cs.C_TIPUSA
|
|
,ob.ID
|
|
|
|
,cs.C_ALINTEZMENYID
|
|
,cs.C_ALTANEVID
|
|
,cs.TOROLT
|
|
,cs.SERIAL
|
|
,cs.LASTCHANGED
|
|
,cs.CREATED
|
|
,cs.MODIFIER
|
|
,cs.CREATOR
|
|
,cs.ELOZOTANEVIREKORDID
|
|
,cs.Operation
|
|
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_CSOPORT_OSSZES')
|
|
WITH (
|
|
ID int '$.ID'
|
|
,C_TIPUSA int '$.C_TIPUSA'
|
|
,C_OSZTALYBONTASID int '$.C_OSZTALYBONTASID'
|
|
|
|
,C_ALINTEZMENYID int '$.C_INTEZMENYID'
|
|
,C_ALTANEVID int '$.C_TANEVID'
|
|
,TOROLT char(1) '$.TOROLT'
|
|
,SERIAL int '$.SERIAL'
|
|
,LASTCHANGED datetime '$.LASTCHANGED'
|
|
,CREATED datetime '$.CREATED'
|
|
,MODIFIER int '$.MODIFIER'
|
|
,CREATOR int '$.CREATOR'
|
|
,ELOZOTANEVIREKORDID int '$.ELOZOTANEVIREKORDID'
|
|
,Operation int '$.Operation'
|
|
|
|
,OsztalyCsoportNev nvarchar(255) '$.OsztalyCsoportNev'
|
|
,OsztalybontasNev nvarchar(255) '$.OsztalybontasNev'
|
|
) cs
|
|
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON
|
|
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
|
|
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
|
|
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ocs.C_NEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(cs.OsztalyCsoportNev)
|
|
AND ocs.C_INTEZMENYID = @pIntezmenyId
|
|
AND ocs.C_TANEVID = @pTanevId
|
|
AND ocs.TOROLT = 'F'
|
|
AND cs.ID IS NULL
|
|
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ob ON
|
|
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
|
|
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
|
|
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ob.C_NEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(cs.OsztalybontasNev)
|
|
AND ob.C_INTEZMENYID = @pIntezmenyId
|
|
AND ob.C_TANEVID = @pTanevId
|
|
AND ob.TOROLT = 'F'
|
|
AND cs.ID IS NULL
|
|
|
|
--NOTE: Foglalkozas temp tábla incializálása
|
|
CREATE TABLE #FoglalkozasTempTable (
|
|
ID int
|
|
,C_TANARID int
|
|
,C_TANTARGYID int
|
|
,C_OSZTALYCSOPORTID int
|
|
,C_FOGLALKOZASTIPUSA int
|
|
,C_ORASZAM numeric(10,2)
|
|
,C_NEV nvarchar(255)
|
|
,C_ERTEKELESKELL char(1)
|
|
,C_MULASZTASKELL char(1)
|
|
,C_TANARFELVEHETI char(1)
|
|
,C_TULORASZAM numeric(10,2)
|
|
,C_ISOSSZEVONTORA char(1)
|
|
,C_ISNEMZETISEGI char(1)
|
|
,C_MEGBIZASIORASZAM numeric(10,2)
|
|
|
|
,C_IMPORTALT char(1)
|
|
,C_INTEZMENYID int
|
|
,C_TANEVID int
|
|
,TOROLT char(1)
|
|
,SERIAL int
|
|
,LASTCHANGED datetime
|
|
,CREATED datetime
|
|
,MODIFIER int
|
|
,CREATOR int
|
|
,ELOZOTANEVIREKORDID int
|
|
,Operation int
|
|
)
|
|
|
|
INSERT INTO #FoglalkozasTempTable
|
|
SELECT
|
|
fg.ID
|
|
,fg.C_TANARID
|
|
,tt.ID
|
|
,ocs.ID
|
|
,fg.C_FOGLALKOZASTIPUSA
|
|
,fg.C_ORASZAM
|
|
,fg.C_NEV
|
|
,fg.C_ERTEKELESKELL
|
|
,fg.C_MULASZTASKELL
|
|
,fg.C_TANARFELVEHETI
|
|
,fg.C_TULORASZAM
|
|
,fg.C_ISOSSZEVONTORA
|
|
,fg.C_ISNEMZETISEGI
|
|
,fg.C_MEGBIZASIORASZAM
|
|
|
|
,fg.C_IMPORTALT
|
|
,fg.C_INTEZMENYID
|
|
,fg.C_TANEVID
|
|
,fg.TOROLT
|
|
,fg.SERIAL
|
|
,fg.LASTCHANGED
|
|
,fg.CREATED
|
|
,fg.MODIFIER
|
|
,fg.CREATOR
|
|
,fg.ELOZOTANEVIREKORDID
|
|
,fg.Operation
|
|
FROM OPENJSON(@pImportJson, N'lax $.ImportJson.T_FOGLALKOZAS_OSSZES')
|
|
WITH (
|
|
ID int '$.ID'
|
|
,C_TANARID int '$.C_TANARID'
|
|
,C_FOGLALKOZASTIPUSA int '$.C_FOGLALKOZASTIPUSA'
|
|
,C_ORASZAM numeric(10,2) '$.C_ORASZAM'
|
|
,C_NEV nvarchar(255) '$.C_NEV'
|
|
,C_ERTEKELESKELL char(1) '$.C_ERTEKELESKELL'
|
|
,C_MULASZTASKELL char(1) '$.C_MULASZTASKELL'
|
|
,C_TANARFELVEHETI char(1) '$.C_TANARFELVEHETI'
|
|
,C_TULORASZAM numeric(10,2) '$.C_TULORASZAM'
|
|
,C_ISOSSZEVONTORA char(1) '$.C_ISOSSZEVONTORA'
|
|
,C_ISNEMZETISEGI char(1) '$.C_ISNEMZETISEGI'
|
|
,C_MEGBIZASIORASZAM numeric(10,2) '$.C_MEGBIZASIORASZAM'
|
|
|
|
,C_IMPORTALT char(1) '$.C_IMPORTALT'
|
|
,C_INTEZMENYID int '$.C_INTEZMENYID'
|
|
,C_TANEVID int '$.C_TANEVID'
|
|
,TOROLT char(1) '$.TOROLT'
|
|
,SERIAL int '$.SERIAL'
|
|
,LASTCHANGED datetime '$.LASTCHANGED'
|
|
,CREATED datetime '$.CREATED'
|
|
,MODIFIER int '$.MODIFIER'
|
|
,CREATOR int '$.CREATOR'
|
|
,ELOZOTANEVIREKORDID int '$.ELOZOTANEVIREKORDID'
|
|
,Operation int '$.Operation'
|
|
|
|
,TantargyNev nvarchar(255) '$.TantargyNev'
|
|
,OsztalyCsoportNev nvarchar(255) '$.OsztalyCsoportNev'
|
|
) fg
|
|
LEFT JOIN T_TANTARGY_OSSZES tt ON
|
|
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
|
|
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
|
|
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(tt.C_NEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(fg.TantargyNev)
|
|
AND tt.C_INTEZMENYID = @pIntezmenyId
|
|
AND tt.C_TANEVID = @pTanevId
|
|
AND tt.TOROLT = 'F'
|
|
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON
|
|
--NOTE: A leküldött adat már teljesen jól formázott, de a db-ben lehetnek rossz adatok. Az összehasonlításhoz ezt csináljuk:
|
|
-- Kisbetűsítjük -> Lecseréljük a NO BREAK SPACE-eket, SPACE-ekre -> Lecseréljük az összes többszörös szóközt egyre -> Trimmelünk
|
|
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(LOWER(ocs.C_NEV),CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) = LOWER(fg.OsztalyCsoportNev)
|
|
AND ocs.C_INTEZMENYID = @pIntezmenyId
|
|
AND ocs.C_TANEVID = @pTanevId
|
|
AND ocs.TOROLT = 'F'
|
|
|
|
--Osztályok beszúrása
|
|
SET @actualJson = ' { "ImportJson":{ "T_OSZTALY_OSSZES":' + (
|
|
SELECT
|
|
o.ID
|
|
,o.C_KETTANNYELVU
|
|
,o.C_NEMZETISEGI
|
|
,o.C_NYELVIELOKESZITO
|
|
,o.C_SPORT
|
|
|
|
,o.C_ALINTEZMENYID
|
|
,o.C_ALTANEVID
|
|
,o.TOROLT
|
|
,o.SERIAL
|
|
,o.LASTCHANGED
|
|
,o.CREATED
|
|
,o.MODIFIER
|
|
,o.CREATOR
|
|
,o.ELOZOTANEVIREKORDID
|
|
,o.Operation
|
|
|
|
-- Default NA értékek beállítása
|
|
,5484 AS C_AGAZAT
|
|
,6108 AS C_RESZSZAKKEPESITES
|
|
,5527 AS C_SZAKKEPESITES
|
|
,6084 AS C_SZAKMACSOPORT
|
|
,7920 AS C_AGAZATUJSZKTTIPUSID
|
|
,8122 AS C_SZAKMAIRANYTIPUSID
|
|
,7946 AS C_SZAKMATIPUSID
|
|
,8493 AS C_SZAKIRANYNKTTIPUSID
|
|
,8464 AS C_SZAKKEPESITESNKTTIPUSID
|
|
,8459 AS C_TANULMANYITERULETNKTTIPUSID
|
|
FROM #OsztalyTempTable AS o
|
|
FOR JSON PATH,INCLUDE_NULL_VALUES
|
|
)
|
|
|
|
SET @actualJson = @actualJson + ' } }'
|
|
|
|
--NOTE: A törlés azért false, mert a T_OSZTALY_OSSZES view-ból nem törlünk importnál!
|
|
EXECUTE uspDynamicImport @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 1
|
|
|
|
--Csoportok beszúrása
|
|
SET @actualJson = ' { "ImportJson":{ "T_CSOPORT_OSSZES":' + (
|
|
SELECT
|
|
cs.ID
|
|
,cs.C_TIPUSA
|
|
,cs.C_OSZTALYBONTASID
|
|
|
|
,cs.C_ALINTEZMENYID
|
|
,cs.C_ALTANEVID
|
|
,cs.TOROLT
|
|
,cs.SERIAL
|
|
,cs.LASTCHANGED
|
|
,cs.CREATED
|
|
,cs.MODIFIER
|
|
,cs.CREATOR
|
|
,cs.ELOZOTANEVIREKORDID
|
|
,cs.Operation
|
|
FROM #CsoportTempTable AS cs
|
|
FOR JSON PATH,INCLUDE_NULL_VALUES
|
|
)
|
|
|
|
SET @actualJson = @actualJson + ' } }'
|
|
|
|
--NOTE: A törlés azért false, mert a T_CSOPORT_OSSZES view-ból nem törlünk importnál!
|
|
EXECUTE uspDynamicImport @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = 0, @pIsSubTable = 1
|
|
|
|
--Frissítjük az osztálybontott csoportok adatait az osztály adataival
|
|
UPDATE ocs
|
|
SET
|
|
ocs.C_EVFOLYAMTIPUSA = ocsParent.C_EVFOLYAMTIPUSA
|
|
,ocs.C_FELADATELLATASIHELYID = ocsParent.C_FELADATELLATASIHELYID
|
|
,ocs.SERIAL = ocs.SERIAL + 1
|
|
,ocs.LASTCHANGED = GETDATE()
|
|
,ocs.MODIFIER = @pUserId
|
|
FROM T_OSZTALYCSOPORT_OSSZES ocs
|
|
INNER JOIN #CsoportTempTable cs ON ocs.ID = cs.ID AND cs.C_OSZTALYBONTASID IS NOT NULL
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocsParent ON cs.C_OSZTALYBONTASID = ocsParent.ID
|
|
WHERE ocs.C_INTEZMENYID = @pIntezmenyId
|
|
AND ocs.C_TANEVID = @pTanevId
|
|
AND ocs.TOROLT = 'F'
|
|
|
|
--Foglalkozások beszúrása
|
|
SET @actualJson = ' { "ImportJson":{ "T_FOGLALKOZAS_OSSZES":' + (
|
|
SELECT
|
|
fg.ID
|
|
,fg.C_TANARID
|
|
,fg.C_TANTARGYID
|
|
,fg.C_OSZTALYCSOPORTID
|
|
,fg.C_FOGLALKOZASTIPUSA
|
|
,fg.C_ORASZAM
|
|
,fg.C_NEV
|
|
,fg.C_ERTEKELESKELL
|
|
,fg.C_MULASZTASKELL
|
|
,fg.C_TANARFELVEHETI
|
|
,fg.C_TULORASZAM
|
|
,fg.C_ISOSSZEVONTORA
|
|
,fg.C_ISNEMZETISEGI
|
|
,fg.C_MEGBIZASIORASZAM
|
|
|
|
,fg.C_IMPORTALT
|
|
,fg.C_INTEZMENYID
|
|
,fg.C_TANEVID
|
|
,fg.TOROLT
|
|
,fg.SERIAL
|
|
,fg.LASTCHANGED
|
|
,fg.CREATED
|
|
,fg.MODIFIER
|
|
,fg.CREATOR
|
|
,fg.ELOZOTANEVIREKORDID
|
|
,fg.Operation
|
|
FROM #FoglalkozasTempTable AS fg
|
|
FOR JSON PATH,INCLUDE_NULL_VALUES
|
|
)
|
|
|
|
SET @actualJson = @actualJson + ' } }'
|
|
|
|
EXECUTE uspDynamicImport @pIntezmenyId = @pIntezmenyId, @pTanevId = @pTanevId, @pUserId = @pUserId, @pImportJson = @actualJson, @pIsTorles = @pIsTorles, @pIsSubTable = 0
|
|
END
|
|
|
|
GO
|
|
|