智慧车间雾端业务数据清理方案

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

智慧车间雾端业务数据清理方案

【应用场景】

智慧车间云雾端运行一段时间之后,雾端业务数据已经同步到云端,就可以清除一些雾端数据,以节省磁盘空间。

一方面,系统提供了“日志清除控制列表”,用于配置需要清除的日志、流水类非业务型数据,并通过执行计划“车间日志自动清理”进行定期清除。

另一方面,对于业务类数据,如工序汇报、投入物料类的单据,则可以通过配置数据库存储过程进行清除。


【注意事项】

该实现方案以Sql Server数据库为例,及到业务数据的清理,为避免误操作,需要先对数据库进行备份,以便恢复。


【实现步骤】

<1>执行如下存储过程:

--删除指定时间段内的业务数据
create procedure sp_sfcClearClosedMODatas(@datefrom datetime, @dateto datetime)
as  
begin

--查询满足删除条件的工单分录Id
SELECT MOEA.FENTRYID 
INTO T_TMP_CLOSEDMOENTRY 
FROM T_PRD_MO MO 
INNER JOIN T_PRD_MOENTRY_A MOEA ON MOEA.FID=MO.FID
WHERE MO.FDATE BETWEEN @datefrom AND @dateto
AND MOEA.FSTATUS IN ('6','7');

--满足删除条件的工序汇报Id和分录Id
SELECT RE.FID,RE.FENTRYID
INTO T_TMP_DELETERPT
FROM T_SFC_OPTRPTENTRY RE
INNER JOIN T_TMP_CLOSEDMOENTRY MO ON MO.FENTRYID=RE.FMOENTRYID;

--删除工序汇报
DELETE FROM T_SFC_OPTRPT
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETERPT WHERE T_TMP_DELETERPT.FID = T_SFC_OPTRPT.FID);

DELETE FROM T_SFC_OPTRPT_L
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETERPT WHERE T_TMP_DELETERPT.FID = T_SFC_OPTRPT_L.FID);

DELETE FROM T_SFC_OPTRPTENTRY
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETERPT WHERE T_TMP_DELETERPT.FENTRYID = T_SFC_OPTRPTENTRY.FENTRYID);

DELETE FROM T_SFC_OPTRPTENTRY_A
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETERPT WHERE T_TMP_DELETERPT.FENTRYID = T_SFC_OPTRPTENTRY_A.FENTRYID);

DELETE FROM T_SFC_OPTRPTENTRY_B
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETERPT WHERE T_TMP_DELETERPT.FENTRYID = T_SFC_OPTRPTENTRY_B.FENTRYID);

DELETE FROM T_SFC_OPTRPTENTRY_C
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETERPT WHERE T_TMP_DELETERPT.FENTRYID = T_SFC_OPTRPTENTRY_C.FENTRYID);

DELETE FROM T_SFC_OPTRPTENTRY_L
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETERPT WHERE T_TMP_DELETERPT.FENTRYID = T_SFC_OPTRPTENTRY_L.FENTRYID);

DELETE FROM T_SFC_OPTRPTDETAIL
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETERPT WHERE T_TMP_DELETERPT.FENTRYID = T_SFC_OPTRPTDETAIL.FENTRYID);

DELETE FROM T_SFC_OPTRPTENTRYEMPS
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETERPT WHERE T_TMP_DELETERPT.FENTRYID = T_SFC_OPTRPTENTRYEMPS.FENTRYID);

DELETE FROM T_SFC_OPTRPTENTRYPRDSERIAL
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETERPT WHERE T_TMP_DELETERPT.FENTRYID = T_SFC_OPTRPTENTRYPRDSERIAL.FENTRYID);

--满足删除条件的投入物料Id
SELECT M.FID
INTO T_TMP_DELETEINPUTMATERIAL
FROM T_SFC_INPUTMATERIAL M
INNER JOIN T_TMP_DELETERPT RPT ON RPT.FENTRYID=M.FOPTRPTENTRYID;

--删除投入物料
DELETE FROM T_SFC_INPUTMATERIAL
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETEINPUTMATERIAL WHERE T_TMP_DELETEINPUTMATERIAL.FID = T_SFC_INPUTMATERIAL.FID);

DELETE FROM T_SFC_INPUTMATERIALENTRY
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETEINPUTMATERIAL WHERE T_TMP_DELETEINPUTMATERIAL.FID = T_SFC_INPUTMATERIALENTRY.FID);

--删除仪表采集值查询
SELECT M.FID
INTO T_TMP_DELETEMETERGATHER
FROM T_SFC_METERGATHERQUERY M
WHERE M.FGATHERTIME BETWEEN @datefrom AND @dateto ;

DELETE FROM T_SFC_METERGATHERQUERY
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETEMETERGATHER WHERE T_TMP_DELETEMETERGATHER.FID = T_SFC_METERGATHERQUERY.FID);

DELETE FROM T_SFC_METERGATHERQUERY_L
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETEMETERGATHER WHERE T_TMP_DELETEMETERGATHER.FID = T_SFC_METERGATHERQUERY_L.FID);

--删除仪表采集值历史
SELECT M.FID,ME.FENTRYID
INTO T_TMP_DELETEMETERGATHERHIS
FROM T_SFC_METERGATHERHIS M
INNER JOIN T_SFC_METERGATHERHISENTRY ME ON ME.FID=M.FID
WHERE M.FCREATEDATE BETWEEN @datefrom AND @dateto ;

DELETE FROM T_SFC_METERGATHERHIS
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETEMETERGATHERHIS WHERE T_TMP_DELETEMETERGATHERHIS.FID = T_SFC_METERGATHERHIS.FID);

DELETE FROM T_SFC_METERGATHERHISENTRY
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETEMETERGATHERHIS WHERE T_TMP_DELETEMETERGATHERHIS.FENTRYID = T_SFC_METERGATHERHISENTRY.FENTRYID);

DELETE FROM T_SFC_METERGATHERHISENTRY_L
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETEMETERGATHERHIS WHERE T_TMP_DELETEMETERGATHERHIS.FENTRYID = T_SFC_METERGATHERHISENTRY_L.FENTRYID);

--删除设备集成日志
SELECT L.FID
INTO T_TMP_DELETEDEVICELOG
FROM T_SFC_DEVICESYNLOG L
WHERE L.FRUNTIME BETWEEN @datefrom AND @dateto ;

DELETE FROM T_SFC_DEVICESYNLOG
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETEDEVICELOG WHERE T_TMP_DELETEDEVICELOG.FID = T_SFC_DEVICESYNLOG.FID);

DELETE FROM T_SFC_DEVICESYNLOGENTRY
WHERE EXISTS(SELECT 1 FROM T_TMP_DELETEDEVICELOG WHERE T_TMP_DELETEDEVICELOG.FID = T_SFC_DEVICESYNLOGENTRY.FID);

--删除消息队列关联单据表
DELETE FROM T_SFC_MSGQUEUEBILLLINK
WHERE FEXECUTETIME BETWEEN @datefrom AND @dateto ;

--删除上机日志
DELETE FROM T_BAS_OPERATELOGBK
WHERE FDATETIME BETWEEN @datefrom AND @dateto ;

--删除临时表
DROP TABLE T_TMP_CLOSEDMOENTRY;
DROP TABLE T_TMP_DELETERPT;
DROP TABLE T_TMP_DELETEINPUTMATERIAL;
DROP TABLE T_TMP_DELETEMETERGATHER;
DROP TABLE T_TMP_DELETEMETERGATHERHIS;
DROP TABLE T_TMP_DELETEDEVICELOG;

end
go


<2>备份数据库,然后按照时间段进行数据清理

格式:EXEC sp_sfcClearClosedMODatas '起始日期yyyy-MM-dd','结束日期yyyy-MM-dd'

例如,删除2021年1月1号到2021年12月31号的数据:

EXEC sp_sfcClearClosedMODatas '2021-01-01','2021-12-31'


智慧车间雾端业务数据清理方案

【应用场景】智慧车间云雾端运行一段时间之后,雾端业务数据已经同步到云端,就可以清除一些雾端数据,以节省磁盘空间。一方面,系统提供了...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息