feat: update MES pages and tracking docs
This commit is contained in:
169
db_backups/add_device_name_and_import_excel_20260629.sql
Normal file
169
db_backups/add_device_name_and_import_excel_20260629.sql
Normal file
@@ -0,0 +1,169 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'名称') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [名称] nvarchar(100) NULL
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_增加]
|
||||
@名称 nvarchar(50) = NULL,
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 nvarchar(50) = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 nvarchar(50) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
IF ISNULL(@公司编码, N'') = N'' BEGIN SELECT '0' AS result, N'公司编码不能为空' AS message; RETURN; END
|
||||
INSERT INTO [dbo].[基础数据_设备工位点检表] ([名称],[公司编码],[设备名称],[设备型号],[设备类型],[设备信息],[使用部门],[入账日期],[单位],[数量],[状态],[维修记录],[维保记录],[工位绑定],[主要设备],[设备标准开机工时],[特种设备],[证书有效期至])
|
||||
VALUES (@名称,@公司编码,@设备名称,@设备型号,@设备类型,@设备信息,@使用部门,TRY_CONVERT(date, NULLIF(@入账日期, N'')),@单位,@数量,@状态,@维修记录,@维保记录,@工位绑定,@主要设备,@设备标准开机工时,@特种设备,TRY_CONVERT(date, NULLIF(@证书有效期至, N'')));
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_编辑]
|
||||
@设备流水号 int = NULL,
|
||||
@名称 nvarchar(50) = NULL,
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 nvarchar(50) = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 nvarchar(50) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
UPDATE [dbo].[基础数据_设备工位点检表]
|
||||
SET [名称]=@名称,[设备名称]=@设备名称,[设备型号]=@设备型号,[设备类型]=@设备类型,[设备信息]=@设备信息,[使用部门]=@使用部门,[入账日期]=TRY_CONVERT(date, NULLIF(@入账日期, N'')),[单位]=@单位,[数量]=@数量,[状态]=@状态,[维修记录]=@维修记录,[维保记录]=@维保记录,[工位绑定]=@工位绑定,[主要设备]=@主要设备,[设备标准开机工时]=@设备标准开机工时,[特种设备]=@特种设备,[证书有效期至]=TRY_CONVERT(date, NULLIF(@证书有效期至, N''))
|
||||
WHERE [设备流水号]=@设备流水号;
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
|
||||
DECLARE @导入设备 TABLE ([名称] nvarchar(100),[公司编码] nvarchar(100),[生产用名] nvarchar(50),[型号规格] nvarchar(50),[设备信息] nvarchar(500),[使用部门] nvarchar(100),[入账日期] date,[单位] nvarchar(50),[数量] decimal(18,4),[状态] nvarchar(50));
|
||||
INSERT INTO @导入设备 VALUES (N'气泵(空压机)',N'REALLY-11',N'气泵',N'1.4MPa/YT132S-4',N'最大压力0.8Mpa',N'一楼机加车间','2006-12-31',N'台',1,N'停用');
|
||||
INSERT INTO @导入设备 VALUES (N'台钻',N'REALLY-21',N'台钻',N'JW7114',N'φ2-12mm/0.1mm',N'二楼机加车间','2007-01-01',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控加工中心',N'REALLY-6',N'加1',N'VDL-600A',N'X600/Y420/Z520/',N'一楼机加车间','2008-12-23',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'普通车床',N'REALLY-1',N'普1',N'CD6240A',N'回转直径400/转速1400/0.04mm',N'一楼机加车间','2010-12-31',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'砂轮机',N'REALLY-19',N'砂轮机',N'MQ3225',N'转速3000/砂轮直径250',N'一楼机加车间','2010-12-31',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-3',N'数2',N'CAK5085di',N'床鞍直径280',N'一楼机加车间','2011-09-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'万能外圆磨床',N'REALLY-8',N'磨2',N'MG1420E',N'0.005mm',N'一楼机加车间','2012-03-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-2',N'数1',N'CAK3665DI',N'0.01mm',N'一楼机加车间','2013-12-31',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数显鼓风干燥箱/烤箱',N'REALLY-14',N'烤箱',N'101A-0',NULL,N'二楼装配区','2014-06-05',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-4',N'数3',N'Viva T2c/500',N'0.01mm',N'一楼机加车间','2015-03-17',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'超声波清洗机',N'REALLY-16',N'清洗机',N'FRQ-20100ST',NULL,N'二楼清洗室','2015-04-12',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'抛光机',N'REALLY-44',N'抛光机',N'ZXH-Z615-1/ZXH-756',NULL,N'一楼机加车间','2015-05-17',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'激光打标机',N'REALLY-13',N'打标机',N'骄子LMK-F20',NULL,N'二楼装配区','2016-02-01',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-5',N'数4',N'Viva T2C/500',N'0.01mm',N'一楼机加车间','2018-05-11',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'锯床',N'REALLY-10',N'锯1',N'GZ4232',N'0.1mm',N'一楼机加车间','2018-08-26',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'内燃叉车',N'REALLY-33',N'油叉',N'CPCD30/3.0T',N'<3T',N'一楼机加车间','2020-04-15',N'辆',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'螺杆空压机',N'REALLY-23',N'15KW空压机',N'LU15 Pmi',N'最大压力0.8Mpa',N'一楼空压机室','2020-06-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'冷干机',N'已报废',NULL,N'PRIMAK D21',NULL,N'一楼空压机室','2020-06-29',N'台',1,N'报废');
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-25',N'数5',N'T55M含自动排屑器',N'0.01mm',N'一楼机加车间','2020-11-05',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'立卧两用数控台',N'加1#用',N'加1四轴',N'SKT13170F',N'0.05mm',N'加1设备内','2020-12-10',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'立式加工中心',N'REALLY-26',N'加3',N'VDF-850A',N'0.02mm',N'一楼机加车间','2020-12-10',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'立卧两用数控台',N'加3#用',NULL,N'SKT13200F',N'0.05mm',N'一楼机加车间','2020-12-10',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'带锯床',N'REALLY-31',N'锯2',N'B33',N'0.1mm',N'一楼机加车间','2021-02-01',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'电动攻丝机',N'RELLY-29',N'攻丝机2#',N'SW-U16-L',N'夹头范围M3-M16',N'一楼机加车间','2021-02-28',N'台',1,N'停用');
|
||||
INSERT INTO @导入设备 VALUES (N'自动数控穿孔机',N'REALLY-28',N'电火花',N'NC4030高精度线规结构',N'穿孔直径0.8-3.0mm/0.05mm',N'一楼机加车间','2021-03-03',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'立式加工中心',N'REALLY-27',N'加4',N'VDF-850A',N'0.02mm',N'一楼机加车间','2021-03-11',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'摇臂钻床',N'REALLY-30',N'钻床',N'Z3050/16',N'夹头范围3-50',N'一楼机加车间','2021-03-17',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'航车',N'起重机/吊车',N'5T吊',N'YLHC-27',N'<5T',N'一楼机加车间','2021-04-05',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'电动叉车',N'REALLY-34',N'1.5T电叉',N'CDD-1525/CPCZ1.5T',N'<1.5T',N'二楼机加车间','2021-04-05',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'普通车床',N'REALLY-32',N'普2',N'CDE6150A',N'0.03mm',N'一楼机加车间','2021-09-02',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-36',N'数7',N'T55S',N'0.01mm',N'一楼机加车间','2022-04-03',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控车床',N'REALLY-37',N'数8',N'T55S',N'0.01mm',N'一楼机加车间','2022-04-03',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'洗地机',N'RELLY-38',N'洗地机',N'YZ-X2',NULL,N'一楼机加车间','2022-04-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'自动上下料设备',N'REALLY-39',N'数8机械人',N'HY2119/HY-JCSXL1-2',NULL,N'一楼机加车间','2022-06-22',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'加工中心',N'REALLY-40',N'加5',N'V11L',N'0.02mm',N'一楼机加车间','2022-12-09',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'转台',N'加5#用',N'加5四轴',N'HR-255N-K',N'0.05mm',N'一楼机加车间','2022-12-22',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'旋转接头',N'数7#数#8用',NULL,N'YQXJ56M-20',N'0.1mm',N'一楼机加车间','2023-02-06',N'台',2,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'中实三爪液压卡盘',N'数7#数#8用',N'液压卡盘',N'CL-06A5',NULL,N'一楼机加车间','2023-02-14',N'台',2,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'套丝机',N'RELLY-41',N'套丝机',N'SQ-50B1',NULL,N'一楼机加车间','2023-03-12',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'线号机',N'REALLY-17',N'线号机',N'LM-550B/LM550E',NULL,N'二楼装配车间','2023-04-22',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'高频加热炉',N'REALLY-42',N'高频加热',N'TGG-35KW进品版',NULL,N'二楼装配车间','2023-08-06',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'普通车床',N'REALLY-43',N'普3',N'CW6163E/1000',N'0.03mm',N'一楼机加车间','2023-08-14',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'光栅尺数显系统',N'普3#用',N'普3数显',N'Z向1100mm,X向570mm',NULL,N'一楼机加车间','2023-08-16',N'套',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'卧式加工中心',N'REALLY-45',N'卧加1',N'HCN-6000L',N'0.01mm',N'一楼机加车间','2023-11-27',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'姊妹刀功能软件',N'数7#数#8用',N'对刀仪',N'6FC5800-OAM78-OYB0',NULL,N'一楼机加车间','2023-12-03',N'套',2,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'自动料仓',N'机器人用',N'机器人料仓',N'配机械手定制件',NULL,N'一楼机加车间','2024-01-28',N'套',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'电动悬挂起重机(欧式)',N'REALLY-46',N'普车吊',N'LX2.8T-7.3M/LD2-70/YJ',N'<1.5T',N'一楼机加车间','2024-06-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'电动悬挂起重机(欧式)',N'REALLY-47',N'装配吊',N'LX2.8T-7M/LD2-40/OR6',N'<1.5T',N'二楼车间装配区','2024-06-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'多功能除渣除油一体机',N'REALLY-50',N'除渣除油机',N'FGB-4',NULL,N'一楼机加车间','2024-06-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'桥式悬挂起重机',N'REALLY-49',N'原料吊',N'LX2-7m/LD2-70Y/YK',N'<1.5T',N'一楼车间库房区','2024-06-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'切割剥皮两用机',N'REALLY-60',N'割管机',N'QB-51',NULL,N'二楼车间清洗间','2024-09-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'缩管机',N'REALLY-61',N'缩管机',N'KM-91C8-323',NULL,N'二楼车间清洗间','2024-09-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'冷冻式干燥机',N'REALLY-59',N'冷干机',N'AD2-10',NULL,N'一楼三坐标室','2024-11-25',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'工业脉冲集尘机',N'REALLY-52',N'磨床除尘机',N'FMCJC-2200',NULL,N'一楼机加车间','2024-11-25',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'闪链云智能物',N'REALLY-58',N'刀具柜',N'智能刀具柜主柜88货道+40侧边格/SCCM-03',NULL,N'一楼机加车间','2024-11-25',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'小锯床',N'REALLY-63',N'小带锯',N'DLY-18F1',N'切割范围45°φ100mm/90°180mm',N'二楼车间装配区','2024-11-25',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'车床桁架机械手',N'REALLY-51',N'数5机械手',N'CNPR-B02/CNPR-3000-B',NULL,N'一楼机加车间','2024-11-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'二氧焊机',N'REALLY-55',N'二氧焊机',N'YM-350FR2',NULL,N'一楼车间打磨间','2024-11-29',N'台',1,N'停用');
|
||||
INSERT INTO @导入设备 VALUES (N'弯管机',N'REALLY-62',N'弯管机',N'DW38NC',NULL,N'二楼车间装配区','2024-11-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'数控机床(多主轴车削中心)',N'REALLY-57',N'数9',N'DUAL TURN200/DT200',N'0.01mm',N'一楼机加车间','2024-12-10',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'外圆磨床',N'REALLY-53',N'磨1',N'M1332B/1000',N'0.005mm',N'一楼机加车间','2024-12-25',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'气动压力机',N'REALLY-64',N'压力机1',N'大双柱63型 推力200KG',NULL,N'二楼车间装配','2024-12-03',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'气动压力机',N'REALLY-65',N'压力机2',N'大双柱63型 推力200KG',NULL,N'二楼车间装配','2024-12-03',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'气动压力机',N'REALLY-66',N'压力机3',N'大双柱63型 推力200KG',NULL,N'二楼车间装配','2024-12-03',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'卡套预装机+模具四套',N'REALLY-67',N'卡套预装机',N'KC-A01',NULL,N'二楼车间装配区','2025-01-01',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'单臂移动式焊烟净化器',N'REALLY-56',N'焊烟净化器',N'LW1201L-030AF(LW-C-M1201-030A1)',N'3000m³/小时',N'一楼车间打磨间','2025-02-13',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'冷干机',N'REALLY-24(注:替换原冷干机)',N'冷干机',N'FX45-230/1/50-CN',NULL,N'一楼空压机室','2025-02-07',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'管型预绝缘端子压接机',N'REALLY-68',N'端子机1',N'MD-E(0.5-4平方)',N'压接端子范围0.5-4mm²',N'二楼装配车间','2025-08-29',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'OTUT端子压接机2#',N'REALLY-69',N'端子机2',N'MD-180S/MD-180TUT',N'截面积0.33-0.82mm²',N'二楼装配车间','2025-09-04',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'车床桁架机械手',N'REALLY-70',N'数7机械手',N'CNPR-B02/SX-621',NULL,N'一楼机加车间','2025-08-31',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'氩弧焊机',N'REALLY-71',N'氩弧焊机',N'WSE-315',N'使用焊丝规格φ1.0-3.0mm/电流范围20-315A',N'一楼焊接区','2014-06-03',N'台',1,N'停用');
|
||||
INSERT INTO @导入设备 VALUES (N'车床桁架机械手',N'REALLY-74',N'数9机械手',N'CNPR-B02/SX-620',N'0.1mm',N'一楼机加车间','2025-08-31',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'电动悬挂起重机(欧式)',N'REALLY-72',N'阀类吊',N'LX2.8T-6M',N'最大起重2.8T/链长6M',N'二楼阀类测试区','2025-12-04',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'马扎克数控车床',N'REALLY-73',N'数6',N'QTE200/500L',N'12工位刀塔/加工φ290/行程500',N'一楼机加车间','2026-01-10',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'马扎克加工中心',N'REALLY-75',N'加2',N'FF400V/30L',N'X500/Y400/Z400',N'一楼机加车间','2026-02-10',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'电动攻丝机',N'RELLY-54',N'攻丝机1#',N'M3-M20(YZ-20C)',N'夹头范围M3-M20',N'一楼机加车间','2025-12-01',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'手动液压叉车',N'REALLY-76',N'手动搬运车',N'黄色AC540 2.5T',N'最大承重2.5T',N'一楼机加车间','2025-12-11',N'辆',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'455铜铝型材切割机(全自动)',N'REALLY-77',N'自动切割机',N'455铜铝型材切割机',N'最大切割行程100',N'一楼机加车间','2026-03-09',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-78',N'数5用',N'YWJC-LD300',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-79',N'数7用',N'YWJC-LD300',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-80',N'数8用',N'YWJC-LD300',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-81',N'数6用',N'YWJC-LD300',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-82',N'加2用',N'YWJC-LD1100',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-83',N'加3用',N'YWJC-LD1100',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-84',N'加5用',N'YWJC-LD1100',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-85',N'卧加用',N'YWJC-LD1500',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'油雾收集器',N'REALLY-86',N'数9用',N'YWJC-LD600',NULL,N'一楼机加车间',NULL,N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'无尘环保带锯床',N'REALLY-87',N'小带锯2#',N'DLY-18F1',N'45°切割范围φ100',N'一楼机打磨间','2026-05-20',N'台',1,NULL);
|
||||
INSERT INTO @导入设备 VALUES (N'车床桁架机械手',N'REALLY-88',N'数6机械手',N'CNPR-B03',NULL,N'一楼机加车间',NULL,N'套',1,NULL);
|
||||
|
||||
MERGE [dbo].[基础数据_设备工位点检表] AS target
|
||||
USING @导入设备 AS source
|
||||
ON ISNULL(target.[公司编码], N'') = ISNULL(source.[公司编码], N'') AND ISNULL(source.[公司编码], N'') <> N''
|
||||
WHEN MATCHED THEN UPDATE SET
|
||||
target.[名称]=source.[名称], target.[设备名称]=source.[生产用名], target.[设备型号]=source.[型号规格], target.[设备信息]=source.[设备信息], target.[使用部门]=source.[使用部门], target.[入账日期]=source.[入账日期], target.[单位]=source.[单位], target.[数量]=source.[数量], target.[状态]=source.[状态]
|
||||
WHEN NOT MATCHED BY TARGET THEN
|
||||
INSERT ([名称],[公司编码],[设备名称],[设备型号],[设备信息],[使用部门],[入账日期],[单位],[数量],[状态])
|
||||
VALUES (source.[名称],source.[公司编码],source.[生产用名],source.[型号规格],source.[设备信息],source.[使用部门],source.[入账日期],source.[单位],source.[数量],source.[状态]);
|
||||
GO
|
||||
|
||||
SELECT COUNT(*) AS [设备信息导入后总数] FROM [dbo].[基础数据_设备工位点检表];
|
||||
GO
|
||||
43
db_backups/add_settlement_workhours_menu_20260627.sql
Normal file
43
db_backups/add_settlement_workhours_menu_20260627.sql
Normal file
@@ -0,0 +1,43 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
DECLARE @NewMenuId INT;
|
||||
|
||||
SELECT @NewMenuId = MAX(id)
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
WHERE title = N'结算工时'
|
||||
OR componet = '/ProductionManagement/SettlementWorkhours/index';
|
||||
|
||||
IF @NewMenuId IS NULL
|
||||
BEGIN
|
||||
SELECT @NewMenuId = ISNULL(MAX(id), 0) + 1
|
||||
FROM [dbo].[登录基础数据_二级菜单];
|
||||
END;
|
||||
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
(id, pid, path, componet, redirect, name, title, icon, 账号代码, 模块代码, 是否启用, AddData, DeleteData, EditData, SearchData)
|
||||
SELECT
|
||||
@NewMenuId AS id,
|
||||
3 AS pid,
|
||||
'SettlementWorkhours/index' AS path,
|
||||
'/ProductionManagement/SettlementWorkhours/index' AS componet,
|
||||
'' AS redirect,
|
||||
'SettlementWorkhours' AS name,
|
||||
N'结算工时' AS title,
|
||||
ISNULL(NULLIF(w.icon, ''), 'DimensionsSummaryReport') AS icon,
|
||||
w.账号代码,
|
||||
w.模块代码,
|
||||
ISNULL(w.是否启用, 1) AS 是否启用,
|
||||
w.AddData,
|
||||
w.DeleteData,
|
||||
w.EditData,
|
||||
w.SearchData
|
||||
FROM [dbo].[登录基础数据_二级菜单] w
|
||||
WHERE w.title = N'工时查询'
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] existing
|
||||
WHERE existing.title = N'结算工时'
|
||||
AND existing.账号代码 = w.账号代码
|
||||
);
|
||||
GO
|
||||
85
db_backups/add_timely_kit_tracking_result_menu_20260629.sql
Normal file
85
db_backups/add_timely_kit_tracking_result_menu_20260629.sql
Normal file
@@ -0,0 +1,85 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @Title nvarchar(100) = N'及时齐套跟踪结果';
|
||||
DECLARE @Path nvarchar(300) = N'TimelyKitTrackingResult/index';
|
||||
DECLARE @Component nvarchar(300) = N'/PlanManagement/TimelyKitTrackingResult/index';
|
||||
DECLARE @Name nvarchar(100) = N'TimelyKitTrackingResult';
|
||||
DECLARE @SourcePath nvarchar(300) = N'PlanShell/index';
|
||||
DECLARE @SourceComponent nvarchar(300) = N'/PlanManagement/PlanShell/index';
|
||||
|
||||
IF OBJECT_ID(N'dbo.登录基础数据_二级菜单', N'U') IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'未找到表 dbo.登录基础数据_二级菜单。', 16, 1);
|
||||
RETURN;
|
||||
END;
|
||||
|
||||
DECLARE @IdIsIdentity bit = ISNULL(COLUMNPROPERTY(OBJECT_ID(N'dbo.登录基础数据_二级菜单'), N'id', 'IsIdentity'), 0);
|
||||
|
||||
IF @IdIsIdentity = 1
|
||||
BEGIN
|
||||
;WITH SourceRows AS (
|
||||
SELECT
|
||||
src.[账号代码],
|
||||
src.[pid],
|
||||
src.[icon]
|
||||
FROM [dbo].[登录基础数据_二级菜单] src
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'计划用表')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] existing
|
||||
WHERE existing.[账号代码] = src.[账号代码]
|
||||
AND (existing.[path] = @Path OR existing.[componet] = @Component OR existing.[title] = @Title)
|
||||
)
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [是否启用])
|
||||
SELECT [pid], @Path, @Component, NULL, @Name, @Title, [icon], [账号代码], 1
|
||||
FROM SourceRows;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
;WITH SourceRows AS (
|
||||
SELECT
|
||||
ROW_NUMBER() OVER (ORDER BY src.[账号代码], src.[id]) AS rn,
|
||||
src.[账号代码],
|
||||
src.[pid],
|
||||
src.[icon]
|
||||
FROM [dbo].[登录基础数据_二级菜单] src
|
||||
WHERE src.[是否启用] = 1
|
||||
AND (src.[path] = @SourcePath OR src.[componet] = @SourceComponent OR src.[title] = N'计划用表')
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[登录基础数据_二级菜单] existing
|
||||
WHERE existing.[账号代码] = src.[账号代码]
|
||||
AND (existing.[path] = @Path OR existing.[componet] = @Component OR existing.[title] = @Title)
|
||||
)
|
||||
),
|
||||
BaseId AS (
|
||||
SELECT ISNULL(MAX([id]), 0) AS maxId
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
)
|
||||
INSERT INTO [dbo].[登录基础数据_二级菜单]
|
||||
([id], [pid], [path], [componet], [redirect], [name], [title], [icon], [账号代码], [是否启用])
|
||||
SELECT BaseId.maxId + SourceRows.rn, SourceRows.[pid], @Path, @Component, NULL, @Name, @Title, SourceRows.[icon], SourceRows.[账号代码], 1
|
||||
FROM SourceRows
|
||||
CROSS JOIN BaseId;
|
||||
END;
|
||||
|
||||
UPDATE [dbo].[登录基础数据_二级菜单]
|
||||
SET
|
||||
[path] = @Path,
|
||||
[componet] = @Component,
|
||||
[name] = @Name,
|
||||
[title] = @Title,
|
||||
[模块代码] = [id],
|
||||
[是否启用] = 1
|
||||
WHERE [title] = @Title OR [componet] = @Component;
|
||||
|
||||
SELECT [id], [pid], [path], [componet], [name], [title], [icon], [账号代码], [是否启用]
|
||||
FROM [dbo].[登录基础数据_二级菜单]
|
||||
WHERE [path] = @Path OR [componet] = @Component OR [title] = @Title
|
||||
ORDER BY [账号代码], [id];
|
||||
231
db_backups/create_settlement_workhours_query_20260627.sql
Normal file
231
db_backups/create_settlement_workhours_query_20260627.sql
Normal file
@@ -0,0 +1,231 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'[dbo].[生产管理_结算工时_查询]', N'P') IS NULL
|
||||
EXEC(N'CREATE PROCEDURE [dbo].[生产管理_结算工时_查询] AS BEGIN SET NOCOUNT ON; END')
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_结算工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工位 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL,
|
||||
@数据条数 INT = 100
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 结算任务 AS (
|
||||
SELECT
|
||||
AID,
|
||||
订单编号,
|
||||
物料编号,
|
||||
物料描述
|
||||
FROM [dbo].[MES_接口_生产计划]
|
||||
WHERE 单据状态 IS NULL
|
||||
),
|
||||
基础数据 AS (
|
||||
SELECT TOP (CASE WHEN ISNULL(@数据条数, 0) <= 0 THEN 100 ELSE @数据条数 END)
|
||||
v.TaskAID,
|
||||
v.开始时间,
|
||||
v.操作内容,
|
||||
v.操作类别,
|
||||
v.操作人,
|
||||
v.加工工时,
|
||||
v.操作数值,
|
||||
v.订单合同号,
|
||||
v.订单号,
|
||||
v.订单行号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
v.工序名称,
|
||||
v.工位名称,
|
||||
p.物料编号,
|
||||
p.物料描述
|
||||
FROM [dbo].[View_生产工时视图] v
|
||||
INNER JOIN 结算任务 p ON p.AID = v.TaskAID
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR v.开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR v.开始时间 < DATEADD(DAY, 1, @结束日期))
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 = @订单号)
|
||||
AND (@工位 IS NULL OR @工位 = '' OR v.工位名称 LIKE '%' + @工位 + '%')
|
||||
AND ISNULL(v.加工工时, 0) > 0
|
||||
AND (ISNULL(v.操作内容, '') IN ('报工', '辅助结束') OR ISNULL(v.操作类别, '') IN ('报工', '辅助结束'))
|
||||
ORDER BY v.开始时间 DESC
|
||||
),
|
||||
明细键 AS (
|
||||
SELECT DISTINCT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间
|
||||
FROM 基础数据
|
||||
),
|
||||
操作人明细 AS (
|
||||
SELECT
|
||||
k.TaskAID,
|
||||
k.开始时间,
|
||||
LTRIM(RTRIM(s.value)) AS 操作人
|
||||
FROM 明细键 k
|
||||
INNER JOIN [dbo].[View_生产工时视图全部] v2
|
||||
ON v2.TaskAID = k.TaskAID
|
||||
AND v2.开始时间 >= CONVERT(DATETIME, k.开始时间, 120)
|
||||
AND v2.开始时间 < DATEADD(SECOND, 1, CONVERT(DATETIME, k.开始时间, 120))
|
||||
CROSS APPLY STRING_SPLIT(REPLACE(REPLACE(ISNULL(v2.操作人, ''), N',', ','), N'、', ','), ',') s
|
||||
WHERE ISNULL(v2.加工工时, 0) <= 0
|
||||
AND NULLIF(LTRIM(RTRIM(s.value)), '') IS NOT NULL
|
||||
),
|
||||
操作人拼接 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
开始时间,
|
||||
STRING_AGG(操作人, ',') AS 操作人
|
||||
FROM (
|
||||
SELECT DISTINCT TaskAID, 开始时间, 操作人
|
||||
FROM 操作人明细
|
||||
) x
|
||||
GROUP BY TaskAID, 开始时间
|
||||
),
|
||||
结算明细 AS (
|
||||
SELECT
|
||||
ISNULL(b.物料编号, b.产品编码) AS 物料编号,
|
||||
ISNULL(b.物料描述, b.产品名称) AS 物料描述,
|
||||
b.订单号,
|
||||
b.工位名称,
|
||||
b.TaskAID,
|
||||
b.工序名称,
|
||||
b.订单行号,
|
||||
ISNULL(o.操作人, '') AS 操作人,
|
||||
CASE
|
||||
WHEN ISNULL(b.操作内容, '') LIKE '%辅助%' OR ISNULL(b.操作类别, '') LIKE '%辅助%' THEN '辅助结束'
|
||||
ELSE '报工'
|
||||
END AS 操作类型,
|
||||
CAST(ISNULL(b.加工工时, 0) / 60.0 / 60.0 AS DECIMAL(18, 4)) AS 工时小时,
|
||||
ISNULL(b.操作数值, 0) AS 完成数
|
||||
FROM 基础数据 b
|
||||
LEFT JOIN 操作人拼接 o
|
||||
ON o.TaskAID = b.TaskAID
|
||||
AND o.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
),
|
||||
订单工位汇总基础 AS (
|
||||
SELECT
|
||||
物料编号,
|
||||
物料描述,
|
||||
订单号,
|
||||
工位名称,
|
||||
MAX(工序名称) AS 工序名称,
|
||||
MAX(订单行号) AS 工序顺序,
|
||||
COUNT(*) AS 记录数,
|
||||
SUM(CASE WHEN 操作类型 = '报工' THEN 工时小时 ELSE 0 END) AS 报工工时,
|
||||
SUM(CASE WHEN 操作类型 = '辅助结束' THEN 工时小时 ELSE 0 END) AS 主辅工时,
|
||||
SUM(CASE WHEN 操作类型 = '报工' THEN 完成数 ELSE 0 END) AS 报工完成数,
|
||||
SUM(CASE WHEN 操作类型 = '辅助结束' THEN 完成数 ELSE 0 END) AS 辅助完成数,
|
||||
SUM(工时小时) AS 合计工时
|
||||
FROM 结算明细 j
|
||||
GROUP BY 物料编号, 物料描述, 订单号, 工位名称
|
||||
),
|
||||
订单工位操作人 AS (
|
||||
SELECT
|
||||
物料编号,
|
||||
订单号,
|
||||
ISNULL(工位名称, '') AS 工位名称,
|
||||
STRING_AGG(操作人, ',') AS 操作人
|
||||
FROM (
|
||||
SELECT DISTINCT
|
||||
j.物料编号,
|
||||
j.订单号,
|
||||
ISNULL(j.工位名称, '') AS 工位名称,
|
||||
LTRIM(RTRIM(s.value)) AS 操作人
|
||||
FROM 结算明细 j
|
||||
CROSS APPLY STRING_SPLIT(REPLACE(REPLACE(ISNULL(j.操作人, ''), N',', ','), N'、', ','), ',') s
|
||||
WHERE NULLIF(LTRIM(RTRIM(s.value)), '') IS NOT NULL
|
||||
) x
|
||||
GROUP BY 物料编号, 订单号, ISNULL(工位名称, '')
|
||||
),
|
||||
订单工位汇总 AS (
|
||||
SELECT
|
||||
b.物料编号,
|
||||
b.物料描述,
|
||||
b.订单号,
|
||||
b.工位名称,
|
||||
b.工序名称,
|
||||
b.工序顺序,
|
||||
b.记录数,
|
||||
b.报工工时,
|
||||
b.主辅工时,
|
||||
b.报工完成数,
|
||||
b.辅助完成数,
|
||||
b.合计工时,
|
||||
ISNULL(o.操作人, '') AS 操作人
|
||||
FROM 订单工位汇总基础 b
|
||||
LEFT JOIN 订单工位操作人 o
|
||||
ON o.物料编号 = b.物料编号
|
||||
AND o.订单号 = b.订单号
|
||||
AND o.工位名称 = ISNULL(b.工位名称, '')
|
||||
),
|
||||
物料汇总 AS (
|
||||
SELECT
|
||||
物料编号,
|
||||
物料描述,
|
||||
SUM(记录数) AS 记录数,
|
||||
SUM(报工工时) AS 报工工时,
|
||||
SUM(主辅工时) AS 主辅工时,
|
||||
SUM(报工完成数) AS 报工完成数,
|
||||
SUM(辅助完成数) AS 辅助完成数,
|
||||
SUM(合计工时) AS 合计工时
|
||||
FROM 订单工位汇总
|
||||
GROUP BY 物料编号, 物料描述
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
物料编号 AS materialCode,
|
||||
物料描述 AS materialDesc,
|
||||
ISNULL(物料描述, '') + ' ' + ISNULL(物料编号, '') AS taskDescription,
|
||||
'' AS productionOrderNo,
|
||||
'' AS station,
|
||||
CAST(报工工时 AS VARCHAR(20)) AS reportWorkHours,
|
||||
CAST(主辅工时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(报工完成数 AS VARCHAR(20)) AS reportFinishQty,
|
||||
CAST(辅助完成数 AS VARCHAR(20)) AS auxiliaryFinishQty,
|
||||
CAST(合计工时 AS VARCHAR(20)) AS totalWorkHours,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN (报工工时 - 0 * 报工完成数) / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS clampingTime,
|
||||
CAST(0 AS VARCHAR(20)) AS programTime,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN 报工工时 / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS settlementReportPieceHours,
|
||||
CAST(CASE WHEN 辅助完成数 > 0 THEN 主辅工时 / 辅助完成数 ELSE 0 END AS VARCHAR(20)) AS settlementAuxiliaryPieceHours,
|
||||
'' AS operatorNames,
|
||||
CAST(记录数 AS VARCHAR(20)) AS recordCount
|
||||
FROM 物料汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
物料编号 AS materialCode,
|
||||
物料描述 AS materialDesc,
|
||||
ISNULL(物料描述, '') + ' ' + ISNULL(物料编号, '')
|
||||
+ CASE WHEN NULLIF(ISNULL(工序名称, ''), '') IS NULL THEN '' ELSE ' ' + 工序名称 END
|
||||
+ CASE WHEN 工序顺序 IS NULL THEN '' ELSE ' 序' + CAST(工序顺序 AS VARCHAR(20)) END AS taskDescription,
|
||||
ISNULL(订单号, '') AS productionOrderNo,
|
||||
ISNULL(工位名称, '') AS station,
|
||||
CAST(报工工时 AS VARCHAR(20)) AS reportWorkHours,
|
||||
CAST(主辅工时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(报工完成数 AS VARCHAR(20)) AS reportFinishQty,
|
||||
CAST(辅助完成数 AS VARCHAR(20)) AS auxiliaryFinishQty,
|
||||
CAST(合计工时 AS VARCHAR(20)) AS totalWorkHours,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN (报工工时 - 0 * 报工完成数) / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS clampingTime,
|
||||
CAST(0 AS VARCHAR(20)) AS programTime,
|
||||
CAST(CASE WHEN 报工完成数 > 0 THEN 报工工时 / 报工完成数 ELSE 0 END AS VARCHAR(20)) AS settlementReportPieceHours,
|
||||
CAST(CASE WHEN 辅助完成数 > 0 THEN 主辅工时 / 辅助完成数 ELSE 0 END AS VARCHAR(20)) AS settlementAuxiliaryPieceHours,
|
||||
ISNULL(操作人, '') AS operatorNames,
|
||||
CAST(记录数 AS VARCHAR(20)) AS recordCount
|
||||
FROM 订单工位汇总
|
||||
|
||||
ORDER BY materialCode, [Level], productionOrderNo, station
|
||||
END
|
||||
GO
|
||||
410
db_backups/create_timely_kit_tracking_result_20260629.sql
Normal file
410
db_backups/create_timely_kit_tracking_result_20260629.sql
Normal file
@@ -0,0 +1,410 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID(N'dbo.生产管理_及时齐套跟踪结果_查询', N'P') IS NULL
|
||||
BEGIN
|
||||
EXEC(N'CREATE PROCEDURE [dbo].[生产管理_及时齐套跟踪结果_查询] AS BEGIN SET NOCOUNT ON; END');
|
||||
END
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_及时齐套跟踪结果_查询]
|
||||
@订单号 int = 0,
|
||||
@物料类型 nvarchar(50) = N'',
|
||||
@合同号 nvarchar(50) = N'',
|
||||
@产品编码 nvarchar(50) = N'',
|
||||
@产品名称 nvarchar(50) = N'',
|
||||
@工序名称 nvarchar(50) = N'',
|
||||
@计划开始 nvarchar(50) = N'',
|
||||
@计划完成 nvarchar(50) = N'',
|
||||
@排产状态 nvarchar(50) = N'全部',
|
||||
@指派对象 nvarchar(50) = N'全部',
|
||||
@计划号 nvarchar(50) = N'',
|
||||
@发货状态 nvarchar(50) = N'全部',
|
||||
@齐套 nvarchar(50) = N'全部',
|
||||
@检验状态 nvarchar(50) = N'',
|
||||
@发料状态 nvarchar(50) = N'全部',
|
||||
@自制件属性 nvarchar(50) = N'全部'
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH SAP缺件源 AS (
|
||||
SELECT
|
||||
s.DocEntry,
|
||||
s.Project COLLATE DATABASE_DEFAULT AS Project,
|
||||
s.[行号],
|
||||
s.ItemCode COLLATE DATABASE_DEFAULT AS ItemCode,
|
||||
s.U_Name COLLATE DATABASE_DEFAULT AS U_Name,
|
||||
ISNULL(s.[属性] COLLATE DATABASE_DEFAULT, N'') AS 属性,
|
||||
ISNULL(s.[未发货数量], 0) AS 未发货数量,
|
||||
ISNULL(s.[在制采购], 0) AS 在制采购,
|
||||
s.[采购员] COLLATE DATABASE_DEFAULT AS 采购员,
|
||||
s.[采购预计交货日期],
|
||||
ISNULL(s.[采购未清数量], 0) AS 采购未清数量,
|
||||
ISNULL(s.[到货草稿], 0) AS 到货草稿
|
||||
FROM [SAP].[SBO_YL].[dbo].[VIEW_Jijiankukc] AS s
|
||||
WHERE ISNULL(s.[未发货数量], 0) > 0
|
||||
),
|
||||
SAP缺件 AS (
|
||||
SELECT TOP (2000)
|
||||
src.*
|
||||
FROM (
|
||||
SELECT
|
||||
SAP缺件源.*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY
|
||||
SAP缺件源.DocEntry,
|
||||
SAP缺件源.Project,
|
||||
SAP缺件源.ItemCode,
|
||||
SAP缺件源.属性
|
||||
ORDER BY
|
||||
SAP缺件源.[未发货数量] DESC,
|
||||
SAP缺件源.[行号]
|
||||
) AS rn
|
||||
FROM SAP缺件源
|
||||
) AS src
|
||||
WHERE src.rn = 1
|
||||
),
|
||||
查询结果 AS (
|
||||
SELECT
|
||||
ISNULL(v.[计划号], N'') AS [计划号],
|
||||
ISNULL(v.[合同号], N'') AS [合同号],
|
||||
v.[订单编号] AS [订单号],
|
||||
v.[物料编号] AS [产品编码],
|
||||
v.[物料描述] AS [产品名称],
|
||||
v.[计划数量订单],
|
||||
v.[入库数量],
|
||||
v.[计划完成] AS [要求完工日期],
|
||||
v.[要求发货日期],
|
||||
CASE
|
||||
WHEN ISNULL(v.[发货状态], 0) = 1 THEN N'已发货'
|
||||
ELSE N'未发货'
|
||||
END AS [发货状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[齐套], 0) = 1 THEN N'是'
|
||||
ELSE N'否'
|
||||
END AS [齐套],
|
||||
CASE
|
||||
WHEN ISNULL(v.[拣配状态], 0) = 1 THEN N'已拣配'
|
||||
ELSE N'未拣配'
|
||||
END AS [拣配状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[发料状态], N'') = N'1' THEN N'发料齐套'
|
||||
WHEN ISNULL(v.[发料状态], N'') = N'2' THEN N'发料缺件'
|
||||
ELSE N'未发料'
|
||||
END AS [发料状态],
|
||||
CASE
|
||||
WHEN ISNULL(v.[任务状态], 0) IN (2, 4) OR v.[开工时间] > '1900-01-01' THEN N'已开工'
|
||||
ELSE N'待执行'
|
||||
END AS [装配开工],
|
||||
v.[完成数量],
|
||||
CASE
|
||||
WHEN final_check.[计划号] IS NOT NULL THEN N'是'
|
||||
ELSE N'否'
|
||||
END AS [终检],
|
||||
CASE WHEN ISNULL(v.[生产工艺], 0) = 1 THEN N'是' ELSE N'否' END AS [生产工艺],
|
||||
CASE WHEN ISNULL(v.[排产状态], 0) = 1 THEN N'已排产' ELSE N'未排产' END AS [排产状态],
|
||||
ISNULL(v.[自制件属性], N'') AS [自制件属性],
|
||||
v.[计划开始时间] AS [预计齐套时间],
|
||||
sap.ItemCode AS [缺件物料编码],
|
||||
sap.U_Name AS [缺件物料名称],
|
||||
sap.[未发货数量] AS [缺件数量],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'外购' ELSE sap.[属性] END AS [缺件属性],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN ISNULL(CONVERT(nvarchar(50), NULLIF(sap.[到货草稿], 0)), N'')
|
||||
ELSE ISNULL(CONVERT(nvarchar(50), detail_order.[订单编号]), N'')
|
||||
END AS [缺件生产订单号],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'' ELSE ISNULL(current_step.[当前序], N'') END AS [进度],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN
|
||||
N'采购员:' + ISNULL(NULLIF(sap.[采购员], N''), N'-') +
|
||||
N' / 未清数量:' + CONVERT(nvarchar(30), sap.[采购未清数量]) +
|
||||
N' / 到货草稿:' + CONVERT(nvarchar(30), sap.[到货草稿]) +
|
||||
N' / 质检状态:' + ISNULL(purchase_check.[质检状态], N'未完成')
|
||||
ELSE ISNULL(route.[工艺路线], N'')
|
||||
END AS [工艺路线],
|
||||
CASE
|
||||
WHEN sap.[属性] = N'' THEN sap.[采购预计交货日期]
|
||||
ELSE route.[预计完成时间]
|
||||
END AS [预计完成时间],
|
||||
CASE WHEN sap.[属性] = N'' THEN N'' ELSE ISNULL(route.[工艺路线明细], N'[]') END AS [工艺路线明细],
|
||||
sap.[采购员],
|
||||
sap.[采购未清数量],
|
||||
sap.[到货草稿],
|
||||
ISNULL(purchase_check.[质检状态], CASE WHEN sap.[属性] = N'' THEN N'未完成' ELSE N'' END) AS [质检状态],
|
||||
sap.DocEntry AS [SAP单据],
|
||||
sap.[行号] AS [SAP行号]
|
||||
FROM SAP缺件 AS sap
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) m.*
|
||||
FROM [dbo].[View_生产订单_MES] AS m
|
||||
WHERE m.[物料类型] = N'pit_Resource'
|
||||
AND ISNULL(m.[排产状态], 0) = 1
|
||||
AND m.[订单编号] = sap.DocEntry
|
||||
ORDER BY m.[订单行号]
|
||||
) AS v
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) m.*
|
||||
FROM [dbo].[View_生产订单_MES] AS m
|
||||
WHERE m.[物料类型] = N'pit_Resource'
|
||||
AND ISNULL(m.[排产状态], 0) = 1
|
||||
AND m.[订单编号] <> v.[订单编号]
|
||||
AND (
|
||||
(sap.[属性] = N'机加件' AND m.[物料编号] = sap.ItemCode)
|
||||
OR (sap.[属性] LIKE N'%装配%' AND m.[物料编号] = sap.ItemCode AND ISNULL(m.[合同号], N'') = ISNULL(sap.Project, N''))
|
||||
)
|
||||
ORDER BY m.[订单编号] DESC, m.[订单行号]
|
||||
) AS detail_order
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) q.[计划号]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[质检类型] = N'终检'
|
||||
AND q.[计划号] = v.[订单编号]
|
||||
) AS final_check
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
MAX(p.[计划完成时间]) AS [预计完成时间],
|
||||
STUFF((
|
||||
SELECT N'、' + p2.[工序名称] +
|
||||
CASE WHEN ISNULL(p2.[指派对象], N'') = N'' THEN N'' ELSE N'(' + p2.[指派对象] + N')' END
|
||||
FROM [dbo].[View_生产订单_MES] AS p2
|
||||
WHERE p2.[订单编号] = detail_order.[订单编号]
|
||||
AND p2.[物料类型] = N'pit_Resource'
|
||||
ORDER BY p2.[订单行号]
|
||||
FOR XML PATH(N''), TYPE
|
||||
).value(N'.', N'nvarchar(max)'), 1, 1, N'') AS [工艺路线],
|
||||
(
|
||||
SELECT
|
||||
p2.[订单行号],
|
||||
p2.[工序名称],
|
||||
p2.[指派对象],
|
||||
p2.[计划开始时间],
|
||||
p2.[计划完成时间],
|
||||
ISNULL(p2.[进度], 0) AS [进度],
|
||||
ISNULL(p2.[完成数量], 0) AS [完成数量],
|
||||
ISNULL(p2.[收料数量], 0) AS [收料数量],
|
||||
ISNULL(p2.[加工状态], 0) AS [加工状态],
|
||||
p2.[开工时间],
|
||||
ISNULL(check_qty.[收检合格数], 0) AS [收检合格数],
|
||||
ISNULL(check_qty.[收检不合格数], 0) AS [收检不合格数]
|
||||
FROM [dbo].[View_生产订单_MES] AS p2
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
SUM(ISNULL(q.[合格数], 0)) AS [收检合格数],
|
||||
SUM(ISNULL(q.[不合格数], 0)) AS [收检不合格数]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[TaskAID] = p2.[TaskAID]
|
||||
AND q.[质检类型] = N'收检'
|
||||
) AS check_qty
|
||||
WHERE p2.[订单编号] = detail_order.[订单编号]
|
||||
AND p2.[物料类型] = N'pit_Resource'
|
||||
ORDER BY p2.[订单行号]
|
||||
FOR JSON PATH
|
||||
) AS [工艺路线明细]
|
||||
FROM [dbo].[View_生产订单_MES] AS p
|
||||
WHERE p.[订单编号] = detail_order.[订单编号]
|
||||
AND p.[物料类型] = N'pit_Resource'
|
||||
) AS route
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1)
|
||||
pending.[订单行号],
|
||||
pending.[工序名称],
|
||||
pending.[加工状态],
|
||||
pending.[进度],
|
||||
pending.[完成数量],
|
||||
pending.[计划数量],
|
||||
pending.[开工时间]
|
||||
FROM [dbo].[View_生产订单_MES] AS pending
|
||||
WHERE pending.[订单编号] = detail_order.[订单编号]
|
||||
AND pending.[物料类型] = N'pit_Resource'
|
||||
AND NOT (
|
||||
ISNULL(pending.[进度], 0) >= 100
|
||||
OR (ISNULL(pending.[计划数量], 0) > 0 AND ISNULL(pending.[完成数量], 0) >= ISNULL(pending.[计划数量], 0))
|
||||
)
|
||||
ORDER BY pending.[订单行号]
|
||||
) AS pending
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) prev.[工序名称]
|
||||
FROM [dbo].[View_生产订单_MES] AS prev
|
||||
WHERE prev.[订单编号] = detail_order.[订单编号]
|
||||
AND prev.[物料类型] = N'pit_Resource'
|
||||
AND prev.[订单行号] < pending.[订单行号]
|
||||
ORDER BY prev.[订单行号] DESC
|
||||
) AS prev_step
|
||||
OUTER APPLY (
|
||||
SELECT TOP (1) last_step.[工序名称]
|
||||
FROM [dbo].[View_生产订单_MES] AS last_step
|
||||
WHERE last_step.[订单编号] = detail_order.[订单编号]
|
||||
AND last_step.[物料类型] = N'pit_Resource'
|
||||
ORDER BY last_step.[订单行号] DESC
|
||||
) AS last_step
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
CASE
|
||||
WHEN detail_order.[订单编号] IS NULL THEN N''
|
||||
WHEN pending.[订单行号] IS NULL THEN ISNULL(last_step.[工序名称], N'') + N'毕'
|
||||
WHEN ISNULL(pending.[进度], 0) > 0
|
||||
OR ISNULL(pending.[完成数量], 0) > 0
|
||||
OR ISNULL(pending.[加工状态], 0) IN (2, 3, 4, 5, 6)
|
||||
OR pending.[开工时间] > '1900-01-01'
|
||||
THEN ISNULL(pending.[工序名称], N'') + N'中'
|
||||
WHEN prev_step.[工序名称] IS NULL THEN N''
|
||||
ELSE prev_step.[工序名称] + N'毕待' + ISNULL(pending.[工序名称], N'')
|
||||
END AS [当前序]
|
||||
) AS current_step
|
||||
OUTER APPLY (
|
||||
SELECT
|
||||
CASE
|
||||
WHEN sap.[属性] <> N'' THEN N''
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[质量检验_质检任务_SAP] AS task
|
||||
OUTER APPLY (
|
||||
SELECT SUM(ISNULL(q.[检验数量], 0)) AS [已检验数量]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[检测类型编号] = 5
|
||||
AND q.[计划号] = task.[订单编号]
|
||||
AND q.[行号] = task.[行号]
|
||||
AND q.[订单类型] = task.[订单类型]
|
||||
) AS checked_qty
|
||||
WHERE sap.[到货草稿] > 0
|
||||
AND task.[订单类型] = N'20'
|
||||
AND task.[订单编号] = sap.[到货草稿]
|
||||
AND ISNULL(task.[入库数量], 0) > 0
|
||||
)
|
||||
AND NOT EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[质量检验_质检任务_SAP] AS task
|
||||
OUTER APPLY (
|
||||
SELECT SUM(ISNULL(q.[检验数量], 0)) AS [已检验数量]
|
||||
FROM [dbo].[YL_质量检验_质检记录] AS q
|
||||
WHERE q.[检测类型编号] = 5
|
||||
AND q.[计划号] = task.[订单编号]
|
||||
AND q.[行号] = task.[行号]
|
||||
AND q.[订单类型] = task.[订单类型]
|
||||
) AS checked_qty
|
||||
WHERE sap.[到货草稿] > 0
|
||||
AND task.[订单类型] = N'20'
|
||||
AND task.[订单编号] = sap.[到货草稿]
|
||||
AND (
|
||||
ISNULL(task.[入库数量], 0) <= 0
|
||||
OR ISNULL(checked_qty.[已检验数量], 0) < ISNULL(task.[入库数量], 0)
|
||||
)
|
||||
) THEN N'已完成'
|
||||
ELSE N'未完成'
|
||||
END AS [质检状态]
|
||||
) AS purchase_check
|
||||
WHERE
|
||||
v.[订单编号] IS NOT NULL
|
||||
AND (@订单号 <= 0 OR v.[订单编号] = @订单号)
|
||||
AND (@计划号 = N'' OR ISNULL(v.[计划号], N'') = @计划号)
|
||||
AND (@合同号 = N'' OR ISNULL(v.[合同号], N'') LIKE N'%' + @合同号 + N'%')
|
||||
AND (@产品编码 = N'' OR ISNULL(v.[物料编号], N'') LIKE N'%' + @产品编码 + N'%')
|
||||
AND (@产品名称 = N'' OR ISNULL(v.[物料描述], N'') LIKE N'%' + @产品名称 + N'%')
|
||||
AND (@工序名称 = N'' OR EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产订单_MES] AS fp
|
||||
WHERE fp.[订单编号] = v.[订单编号]
|
||||
AND fp.[工序名称] = @工序名称
|
||||
))
|
||||
AND (@计划开始 = N'' OR v.[计划开始时间] >= TRY_CONVERT(datetime, @计划开始))
|
||||
AND (@计划完成 = N'' OR v.[计划开始时间] <= TRY_CONVERT(datetime, @计划完成))
|
||||
AND (@排产状态 = N'全部' OR @排产状态 = N'' OR
|
||||
(@排产状态 = N'已完成' AND ISNULL(v.[排产状态], 0) = 1) OR
|
||||
(@排产状态 = N'未完成' AND ISNULL(v.[排产状态], 0) = 0)
|
||||
)
|
||||
AND (@指派对象 = N'全部' OR @指派对象 = N'' OR EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产订单_MES] AS ap
|
||||
WHERE ap.[订单编号] = v.[订单编号]
|
||||
AND ap.[指派对象] IN (SELECT LTRIM(RTRIM(value)) FROM STRING_SPLIT(@指派对象, N','))
|
||||
))
|
||||
AND (@发货状态 = N'全部' OR @发货状态 = N'' OR
|
||||
(@发货状态 = N'已发货' AND ISNULL(v.[发货状态], N'0') = N'1') OR
|
||||
(@发货状态 = N'未发货' AND ISNULL(v.[发货状态], N'0') <> N'1')
|
||||
)
|
||||
AND (@齐套 = N'全部' OR @齐套 = N'' OR
|
||||
(@齐套 = N'是' AND ISNULL(v.[齐套], 0) = 1) OR
|
||||
(@齐套 = N'否' AND ISNULL(v.[齐套], 0) <> 1)
|
||||
)
|
||||
AND (@发料状态 = N'全部' OR @发料状态 = N'' OR
|
||||
(@发料状态 = N'发料齐套' AND ISNULL(v.[发料状态], N'0') = N'1') OR
|
||||
(@发料状态 = N'发料缺件' AND ISNULL(v.[发料状态], N'0') = N'2') OR
|
||||
(@发料状态 = N'未发料' AND ISNULL(v.[发料状态], N'0') NOT IN (N'1', N'2'))
|
||||
)
|
||||
AND (@自制件属性 = N'全部' OR @自制件属性 = N'' OR
|
||||
(@自制件属性 = N'机加' AND (sap.[属性] = N'机加件' OR v.[自制件属性] = N'机加件')) OR
|
||||
(@自制件属性 = N'装配' AND (sap.[属性] LIKE N'%装配%' OR v.[自制件属性] LIKE N'%装配%'))
|
||||
)
|
||||
AND (@检验状态 = N'' OR (sap.[属性] = N'' AND ISNULL(purchase_check.[质检状态], N'') = @检验状态))
|
||||
)
|
||||
SELECT TOP (1000)
|
||||
[计划号],
|
||||
[合同号],
|
||||
[订单号],
|
||||
[产品编码],
|
||||
[产品名称],
|
||||
[计划数量订单],
|
||||
[入库数量],
|
||||
[要求完工日期],
|
||||
[要求发货日期],
|
||||
[发货状态],
|
||||
[齐套],
|
||||
[拣配状态],
|
||||
[发料状态],
|
||||
[装配开工],
|
||||
[完成数量],
|
||||
[终检],
|
||||
[生产工艺],
|
||||
[排产状态],
|
||||
[自制件属性],
|
||||
[预计齐套时间],
|
||||
[缺件物料编码],
|
||||
[缺件物料名称],
|
||||
[缺件数量],
|
||||
[缺件属性],
|
||||
[缺件生产订单号],
|
||||
[进度],
|
||||
[工艺路线],
|
||||
[预计完成时间],
|
||||
[工艺路线明细],
|
||||
[采购员],
|
||||
[采购未清数量],
|
||||
[到货草稿],
|
||||
[质检状态],
|
||||
[SAP单据],
|
||||
[SAP行号]
|
||||
FROM (
|
||||
SELECT
|
||||
查询结果.*,
|
||||
ROW_NUMBER() OVER (
|
||||
PARTITION BY
|
||||
[订单号],
|
||||
CASE
|
||||
WHEN ISNULL([缺件生产订单号], N'') <> N'' THEN [缺件生产订单号]
|
||||
ELSE [缺件物料编码] + N':' + CONVERT(nvarchar(30), [SAP行号])
|
||||
END
|
||||
ORDER BY [缺件数量] DESC, [SAP单据], [SAP行号]
|
||||
) AS rn
|
||||
FROM 查询结果
|
||||
) AS dedup
|
||||
WHERE rn = 1
|
||||
ORDER BY
|
||||
[预计齐套时间],
|
||||
[订单号],
|
||||
[缺件生产订单号],
|
||||
[缺件物料编码];
|
||||
END
|
||||
GO
|
||||
76
db_backups/fix_device_add_company_code_message_20260629.sql
Normal file
76
db_backups/fix_device_add_company_code_message_20260629.sql
Normal file
@@ -0,0 +1,76 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_增加]
|
||||
@名称 nvarchar(50) = NULL,
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 nvarchar(50) = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 nvarchar(50) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF ISNULL(@公司编码, N'') = N''
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'公司编码不能为空' AS message;
|
||||
RETURN;
|
||||
END
|
||||
|
||||
INSERT INTO [dbo].[基础数据_设备工位点检表] (
|
||||
[名称],
|
||||
[公司编码],
|
||||
[设备名称],
|
||||
[设备型号],
|
||||
[设备类型],
|
||||
[设备信息],
|
||||
[使用部门],
|
||||
[入账日期],
|
||||
[单位],
|
||||
[数量],
|
||||
[状态],
|
||||
[维修记录],
|
||||
[维保记录],
|
||||
[工位绑定],
|
||||
[主要设备],
|
||||
[设备标准开机工时],
|
||||
[特种设备],
|
||||
[证书有效期至]
|
||||
)
|
||||
VALUES (
|
||||
@名称,
|
||||
@公司编码,
|
||||
@设备名称,
|
||||
@设备型号,
|
||||
@设备类型,
|
||||
@设备信息,
|
||||
@使用部门,
|
||||
TRY_CONVERT(date, NULLIF(@入账日期, N'')),
|
||||
@单位,
|
||||
@数量,
|
||||
@状态,
|
||||
@维修记录,
|
||||
@维保记录,
|
||||
@工位绑定,
|
||||
@主要设备,
|
||||
@设备标准开机工时,
|
||||
@特种设备,
|
||||
TRY_CONVERT(date, NULLIF(@证书有效期至, N''))
|
||||
);
|
||||
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
96
db_backups/fix_device_excel_import_dates_20260629.sql
Normal file
96
db_backups/fix_device_excel_import_dates_20260629.sql
Normal file
@@ -0,0 +1,96 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
DECLARE @导入设备日期 TABLE ([公司编码] nvarchar(100), [入账日期] date);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-11', '2007-01-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-21', '2007-01-02');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-6', '2008-12-24');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-1', '2011-01-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-19', '2011-01-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-3', '2011-09-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-8', '2012-03-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-2', '2014-01-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-14', '2014-06-06');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-4', '2015-03-18');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-16', '2015-04-13');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-44', '2015-05-18');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-13', '2016-02-02');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-5', '2018-05-12');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-10', '2018-08-27');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-33', '2020-04-16');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-23', '2020-06-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'已报废', '2020-06-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-25', '2020-11-06');
|
||||
INSERT INTO @导入设备日期 VALUES (N'加1#用', '2020-12-11');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-26', '2020-12-11');
|
||||
INSERT INTO @导入设备日期 VALUES (N'加3#用', '2020-12-11');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-31', '2021-02-02');
|
||||
INSERT INTO @导入设备日期 VALUES (N'RELLY-29', '2021-03-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-28', '2021-03-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-27', '2021-03-12');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-30', '2021-03-18');
|
||||
INSERT INTO @导入设备日期 VALUES (N'起重机/吊车', '2021-04-06');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-34', '2021-04-06');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-32', '2021-09-03');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-36', '2022-04-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-37', '2022-04-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'RELLY-38', '2022-04-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-39', '2022-06-23');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-40', '2022-12-10');
|
||||
INSERT INTO @导入设备日期 VALUES (N'加5#用', '2022-12-23');
|
||||
INSERT INTO @导入设备日期 VALUES (N'数7#数#8用', '2023-02-07');
|
||||
INSERT INTO @导入设备日期 VALUES (N'数7#数#8用', '2023-02-15');
|
||||
INSERT INTO @导入设备日期 VALUES (N'RELLY-41', '2023-03-13');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-17', '2023-04-23');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-42', '2023-08-07');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-43', '2023-08-15');
|
||||
INSERT INTO @导入设备日期 VALUES (N'普3#用', '2023-08-17');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-45', '2023-11-28');
|
||||
INSERT INTO @导入设备日期 VALUES (N'数7#数#8用', '2023-12-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'机器人用', '2024-01-29');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-46', '2024-06-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-47', '2024-06-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-50', '2024-06-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-49', '2024-06-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-60', '2024-09-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-61', '2024-09-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-59', '2024-11-26');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-52', '2024-11-26');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-58', '2024-11-26');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-63', '2024-11-26');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-51', '2024-11-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-55', '2024-11-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-62', '2024-11-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-57', '2024-12-11');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-53', '2024-12-26');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-64', '2024-12-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-65', '2024-12-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-66', '2024-12-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-67', '2025-01-02');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-56', '2025-02-14');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-24(注:替换原冷干机)', '2025-02-08');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-68', '2025-08-30');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-69', '2025-09-05');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-70', '2025-09-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-71', '2014-06-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-74', '2025-09-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-72', '2025-12-04');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-73', '2026-01-10');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-75', '2026-02-10');
|
||||
INSERT INTO @导入设备日期 VALUES (N'RELLY-54', '2025-12-01');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-76', '2025-12-11');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-77', '2026-03-09');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-78', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-79', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-80', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-81', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-82', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-83', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-84', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-85', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-86', NULL);
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-87', '2026-05-20');
|
||||
INSERT INTO @导入设备日期 VALUES (N'REALLY-88', NULL);
|
||||
UPDATE target SET target.[入账日期] = source.[入账日期]
|
||||
FROM [dbo].[基础数据_设备工位点检表] target INNER JOIN @导入设备日期 source ON target.[公司编码] = source.[公司编码];
|
||||
SELECT COUNT(*) AS [设备信息日期修正后总数] FROM [dbo].[基础数据_设备工位点检表];
|
||||
GO
|
||||
120
db_backups/fix_device_information_date_edit_20260629.sql
Normal file
120
db_backups/fix_device_information_date_edit_20260629.sql
Normal file
@@ -0,0 +1,120 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_增加]
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 nvarchar(50) = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 nvarchar(50) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF ISNULL(@公司编码, N'') = N''
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'公司编码不能为空' AS message;
|
||||
RETURN;
|
||||
END
|
||||
|
||||
INSERT INTO [dbo].[基础数据_设备工位点检表] (
|
||||
[公司编码],
|
||||
[设备名称],
|
||||
[设备型号],
|
||||
[设备类型],
|
||||
[设备信息],
|
||||
[使用部门],
|
||||
[入账日期],
|
||||
[单位],
|
||||
[数量],
|
||||
[状态],
|
||||
[维修记录],
|
||||
[维保记录],
|
||||
[工位绑定],
|
||||
[主要设备],
|
||||
[设备标准开机工时],
|
||||
[特种设备],
|
||||
[证书有效期至]
|
||||
)
|
||||
VALUES (
|
||||
@公司编码,
|
||||
@设备名称,
|
||||
@设备型号,
|
||||
@设备类型,
|
||||
@设备信息,
|
||||
@使用部门,
|
||||
TRY_CONVERT(date, NULLIF(@入账日期, N'')),
|
||||
@单位,
|
||||
@数量,
|
||||
@状态,
|
||||
@维修记录,
|
||||
@维保记录,
|
||||
@工位绑定,
|
||||
@主要设备,
|
||||
@设备标准开机工时,
|
||||
@特种设备,
|
||||
TRY_CONVERT(date, NULLIF(@证书有效期至, N''))
|
||||
);
|
||||
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_编辑]
|
||||
@设备流水号 int = NULL,
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 nvarchar(50) = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 nvarchar(50) = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
UPDATE [dbo].[基础数据_设备工位点检表]
|
||||
SET
|
||||
[设备名称] = @设备名称,
|
||||
[设备型号] = @设备型号,
|
||||
[设备类型] = @设备类型,
|
||||
[设备信息] = @设备信息,
|
||||
[使用部门] = @使用部门,
|
||||
[入账日期] = TRY_CONVERT(date, NULLIF(@入账日期, N'')),
|
||||
[单位] = @单位,
|
||||
[数量] = @数量,
|
||||
[状态] = @状态,
|
||||
[维修记录] = @维修记录,
|
||||
[维保记录] = @维保记录,
|
||||
[工位绑定] = @工位绑定,
|
||||
[主要设备] = @主要设备,
|
||||
[设备标准开机工时] = @设备标准开机工时,
|
||||
[特种设备] = @特种设备,
|
||||
[证书有效期至] = TRY_CONVERT(date, NULLIF(@证书有效期至, N''))
|
||||
WHERE [设备流水号] = @设备流水号;
|
||||
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,208 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
筛选明细 AS (
|
||||
SELECT *
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
WHERE 操作类别编号 = 6
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
b.TaskAID,
|
||||
b.订单合同号 AS 合同号,
|
||||
b.订单号,
|
||||
b.产品编码,
|
||||
b.产品名称,
|
||||
b.工序名称,
|
||||
b.工时类型,
|
||||
b.计划数量,
|
||||
b.工位名称 AS 指派对象,
|
||||
ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(b.有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
b.异常说明,
|
||||
b.工序说明,
|
||||
b.操作类别
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
),
|
||||
操作人报工数量 AS (
|
||||
SELECT 操作人, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期报工数量 AS (
|
||||
SELECT 操作人, 工作日期, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, 工作日期, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, 工作日期, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人, 工作日期
|
||||
),
|
||||
操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 操作人汇总 s
|
||||
LEFT JOIN 操作人报工数量 q ON q.操作人 = s.操作人
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
s.工作日期 AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 日期汇总 s
|
||||
LEFT JOIN 日期报工数量 q ON q.操作人 = s.操作人 AND q.工作日期 = s.工作日期
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(TaskAID AS VARCHAR(50)) AS TaskAID
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level], startTime
|
||||
END
|
||||
|
||||
@@ -0,0 +1,192 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
订单合同号 AS 合同号,
|
||||
订单号,
|
||||
产品编码,
|
||||
产品名称,
|
||||
工序名称,
|
||||
工时类型,
|
||||
计划数量,
|
||||
工位名称 AS 指派对象,
|
||||
CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN 操作数值
|
||||
WHEN 操作类别 = '异常' THEN -操作数值
|
||||
ELSE 0
|
||||
END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
异常说明,
|
||||
工序说明,
|
||||
操作类别
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(总工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 操作人汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level]
|
||||
END
|
||||
|
||||
@@ -0,0 +1,209 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
筛选明细 AS (
|
||||
SELECT *
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
where 操作类别编号 = 6
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
b.TaskAID,
|
||||
b.订单合同号 AS 合同号,
|
||||
b.订单号,
|
||||
b.产品编码,
|
||||
b.产品名称,
|
||||
b.工序名称,
|
||||
b.工时类型,
|
||||
b.计划数量,
|
||||
b.工位名称 AS 指派对象,
|
||||
ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(b.有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
b.异常说明,
|
||||
b.工序说明,
|
||||
b.操作类别
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
),
|
||||
操作人报工数量 AS (
|
||||
SELECT 操作人, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期报工数量 AS (
|
||||
SELECT 操作人, 工作日期, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, 工作日期, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, 工作日期, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人, 工作日期
|
||||
),
|
||||
操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 操作人汇总 s
|
||||
LEFT JOIN 操作人报工数量 q ON q.操作人 = s.操作人
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
s.工作日期 AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 日期汇总 s
|
||||
LEFT JOIN 日期报工数量 q ON q.操作人 = s.操作人 AND q.工作日期 = s.工作日期
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(TaskAID AS VARCHAR(50)) AS TaskAID
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level], startTime
|
||||
END
|
||||
|
||||
@@ -0,0 +1,209 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
筛选明细 AS (
|
||||
SELECT *
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM 筛选明细
|
||||
WHERE TaskAID IS NOT NULL
|
||||
AND 开始时间 IS NOT NULL
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
b.TaskAID,
|
||||
b.订单合同号 AS 合同号,
|
||||
b.订单号,
|
||||
b.产品编码,
|
||||
b.产品名称,
|
||||
b.工序名称,
|
||||
b.工时类型,
|
||||
b.计划数量,
|
||||
b.工位名称 AS 指派对象,
|
||||
ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(b.有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
b.异常说明,
|
||||
b.工序说明,
|
||||
b.操作类别
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
),
|
||||
操作人报工数量 AS (
|
||||
SELECT 操作人, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期报工数量 AS (
|
||||
SELECT 操作人, 工作日期, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, 工作日期, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, 工作日期, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人, 工作日期
|
||||
),
|
||||
操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 操作人汇总 s
|
||||
LEFT JOIN 操作人报工数量 q ON q.操作人 = s.操作人
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
s.工作日期 AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 日期汇总 s
|
||||
LEFT JOIN 日期报工数量 q ON q.操作人 = s.操作人 AND q.工作日期 = s.工作日期
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(TaskAID AS VARCHAR(50)) AS TaskAID
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level], startTime
|
||||
END
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '作业者工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*12 AS 指派对象, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 指派对象, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
;WITH 筛选明细 AS (
|
||||
SELECT *
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
WHERE 操作类别编号 = 6
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
ISNULL(b.订单合同号, '') AS 合同号,
|
||||
ISNULL(b.订单号, '') AS 订单号,
|
||||
ISNULL(b.产品编码, '') AS 产品编码,
|
||||
ISNULL(b.产品名称, '') AS 产品名称,
|
||||
ISNULL(b.工序名称, '') AS 工序名称,
|
||||
ISNULL(b.工位名称, '') AS 指派对象,
|
||||
CAST(ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS VARCHAR(20)) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(b.总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
ORDER BY b.操作人, b.开始时间
|
||||
END
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '作业者工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*12 AS 指派对象, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 指派对象, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
ISNULL(订单合同号, '') AS 合同号,
|
||||
ISNULL(订单号, '') AS 订单号,
|
||||
ISNULL(产品编码, '') AS 产品编码,
|
||||
ISNULL(产品名称, '') AS 产品名称,
|
||||
ISNULL(工序名称, '') AS 工序名称,
|
||||
ISNULL(工位名称, '') AS 指派对象,
|
||||
CASE WHEN 操作类别 IN ('报工', '辅助结束', '加班', '异常', '开始加工') THEN CAST(操作数值 AS VARCHAR(20)) ELSE '0' END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), 结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
ORDER BY 操作人, 开始时间
|
||||
END
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '作业者工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*12 AS 指派对象, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 指派对象, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
;WITH 筛选明细 AS (
|
||||
SELECT *
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
ISNULL(b.订单合同号, '') AS 合同号,
|
||||
ISNULL(b.订单号, '') AS 订单号,
|
||||
ISNULL(b.产品编码, '') AS 产品编码,
|
||||
ISNULL(b.产品名称, '') AS 产品名称,
|
||||
ISNULL(b.工序名称, '') AS 工序名称,
|
||||
ISNULL(b.工位名称, '') AS 指派对象,
|
||||
CAST(ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS VARCHAR(20)) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(b.总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
ORDER BY b.操作人, b.开始时间
|
||||
END
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[工时统计_作业者工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '作业者工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*12 AS 指派对象, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 指派对象, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
;WITH 筛选明细 AS (
|
||||
SELECT *
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM 筛选明细
|
||||
WHERE TaskAID IS NOT NULL
|
||||
AND 开始时间 IS NOT NULL
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
ISNULL(b.订单合同号, '') AS 合同号,
|
||||
ISNULL(b.订单号, '') AS 订单号,
|
||||
ISNULL(b.产品编码, '') AS 产品编码,
|
||||
ISNULL(b.产品名称, '') AS 产品名称,
|
||||
ISNULL(b.工序名称, '') AS 工序名称,
|
||||
ISNULL(b.工位名称, '') AS 指派对象,
|
||||
CAST(ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS VARCHAR(20)) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(b.总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
ORDER BY b.操作人, b.开始时间
|
||||
END
|
||||
|
||||
@@ -0,0 +1,298 @@
|
||||
/*
|
||||
过程异常管控并行审批调整
|
||||
目标:
|
||||
1. sp_创建流程_简化版 支持前端传入多个审批人,审批人ID/审批人姓名使用英文逗号分隔。
|
||||
2. 多个审批人写入同一个步骤序号的多个 processing 节点,所有审批人可同时看到待办。
|
||||
3. sp_获取待处理任务 兼容同一步骤多行节点,也兼容旧过程已写入的逗号分隔审批人ID。
|
||||
4. sp_处理审批 中任意一个审批人同意后,当前流程直接完成,并关闭同一步骤其他待处理节点。
|
||||
说明:本脚本仅定义存储过程,不插入业务数据。
|
||||
*/
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[sp_创建流程_简化版]
|
||||
@流程标题 NVARCHAR(200),
|
||||
@流程描述 NVARCHAR(MAX),
|
||||
@优先级 NVARCHAR(20) = N'normal',
|
||||
@发起人ID NVARCHAR(100),
|
||||
@发起人姓名 NVARCHAR(100),
|
||||
@审批人ID NVARCHAR(MAX),
|
||||
@审批人姓名 NVARCHAR(MAX),
|
||||
@新流程ID INT = 0,
|
||||
@已关联计划号 NVARCHAR(100) = N'',
|
||||
@零件名称 NVARCHAR(100) = N'',
|
||||
@零件编号 NVARCHAR(100) = N'',
|
||||
@工序名称 NVARCHAR(100) = N''
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @结果 INT = 0;
|
||||
DECLARE @消息 NVARCHAR(500) = N'';
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
DECLARE @审批人IDXml XML;
|
||||
DECLARE @审批人姓名Xml XML;
|
||||
|
||||
SET @审批人IDXml = CAST(
|
||||
N'<i>' +
|
||||
REPLACE(REPLACE(REPLACE(REPLACE(ISNULL(@审批人ID, N''), N'&', N'&'), N'<', N'<'), N'>', N'>'), N',', N'</i><i>') +
|
||||
N'</i>' AS XML
|
||||
);
|
||||
|
||||
SET @审批人姓名Xml = CAST(
|
||||
N'<i>' +
|
||||
REPLACE(REPLACE(REPLACE(REPLACE(ISNULL(@审批人姓名, N''), N'&', N'&'), N'<', N'<'), N'>', N'>'), N',', N'</i><i>') +
|
||||
N'</i>' AS XML
|
||||
);
|
||||
|
||||
DECLARE @审批人表 TABLE (
|
||||
序号 INT IDENTITY(1, 1) PRIMARY KEY,
|
||||
审批人ID NVARCHAR(100),
|
||||
审批人姓名 NVARCHAR(100)
|
||||
);
|
||||
|
||||
DECLARE @审批人ID表 TABLE (
|
||||
序号 INT IDENTITY(1, 1) PRIMARY KEY,
|
||||
审批人ID NVARCHAR(100)
|
||||
);
|
||||
|
||||
DECLARE @审批人姓名表 TABLE (
|
||||
序号 INT IDENTITY(1, 1) PRIMARY KEY,
|
||||
审批人姓名 NVARCHAR(100)
|
||||
);
|
||||
|
||||
INSERT INTO @审批人ID表 (审批人ID)
|
||||
SELECT NULLIF(LTRIM(RTRIM(T.C.value(N'.', N'NVARCHAR(100)'))), N'')
|
||||
FROM @审批人IDXml.nodes(N'/i') AS T(C);
|
||||
|
||||
INSERT INTO @审批人姓名表 (审批人姓名)
|
||||
SELECT NULLIF(LTRIM(RTRIM(T.C.value(N'.', N'NVARCHAR(100)'))), N'')
|
||||
FROM @审批人姓名Xml.nodes(N'/i') AS T(C);
|
||||
|
||||
INSERT INTO @审批人表 (审批人ID, 审批人姓名)
|
||||
SELECT I.审批人ID, ISNULL(N.审批人姓名, I.审批人ID)
|
||||
FROM @审批人ID表 I
|
||||
LEFT JOIN @审批人姓名表 N ON N.序号 = I.序号
|
||||
WHERE I.审批人ID IS NOT NULL;
|
||||
|
||||
IF NOT EXISTS (SELECT 1 FROM @审批人表)
|
||||
BEGIN
|
||||
INSERT INTO @审批人表 (审批人ID, 审批人姓名)
|
||||
VALUES (@发起人ID, @发起人姓名);
|
||||
END;
|
||||
|
||||
INSERT INTO [dbo].[流程表] (
|
||||
流程标题,
|
||||
流程描述,
|
||||
优先级,
|
||||
状态,
|
||||
发起人ID,
|
||||
发起人姓名,
|
||||
当前节点,
|
||||
当前步骤,
|
||||
总步骤数,
|
||||
已关联计划号,
|
||||
零件名称,
|
||||
零件编号,
|
||||
工序名称,
|
||||
创建时间,
|
||||
更新时间
|
||||
)
|
||||
VALUES (
|
||||
@流程标题,
|
||||
@流程描述,
|
||||
ISNULL(NULLIF(@优先级, N''), N'normal'),
|
||||
N'processing',
|
||||
@发起人ID,
|
||||
@发起人姓名,
|
||||
N'异常审批',
|
||||
1,
|
||||
1,
|
||||
ISNULL(@已关联计划号, N''),
|
||||
ISNULL(@零件名称, N''),
|
||||
ISNULL(@零件编号, N''),
|
||||
ISNULL(@工序名称, N''),
|
||||
GETDATE(),
|
||||
GETDATE()
|
||||
);
|
||||
|
||||
SET @新流程ID = SCOPE_IDENTITY();
|
||||
|
||||
INSERT INTO [dbo].[流程节点表] (
|
||||
流程ID,
|
||||
节点名称,
|
||||
审批人ID,
|
||||
审批人姓名,
|
||||
步骤序号,
|
||||
状态,
|
||||
是否转办
|
||||
)
|
||||
SELECT
|
||||
@新流程ID,
|
||||
N'异常审批',
|
||||
审批人ID,
|
||||
审批人姓名,
|
||||
1,
|
||||
N'processing',
|
||||
0
|
||||
FROM @审批人表;
|
||||
|
||||
SET @结果 = 1;
|
||||
SET @消息 = N'流程创建成功,流程ID: ' + CAST(@新流程ID AS NVARCHAR(20));
|
||||
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION;
|
||||
SET @结果 = 0;
|
||||
SET @消息 = N'错误: ' + ERROR_MESSAGE();
|
||||
END CATCH;
|
||||
|
||||
SELECT @结果 AS 结果, @消息 AS 消息, @新流程ID AS 新流程ID;
|
||||
END;
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[sp_获取待处理任务]
|
||||
@审批人ID NVARCHAR(100)
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT
|
||||
p.流程ID,
|
||||
p.流程标题,
|
||||
p.流程描述,
|
||||
p.优先级,
|
||||
p.状态,
|
||||
p.发起人姓名 AS 申请人,
|
||||
p.创建时间 AS 申请时间,
|
||||
p.已关联计划号,
|
||||
p.零件名称,
|
||||
p.零件编号,
|
||||
p.工序名称,
|
||||
pn.节点ID,
|
||||
pn.节点名称 AS 当前节点,
|
||||
pn.是否转办
|
||||
FROM [dbo].[流程节点表] pn
|
||||
INNER JOIN [dbo].[流程表] p ON p.流程ID = pn.流程ID
|
||||
WHERE pn.状态 = N'processing'
|
||||
AND p.状态 = N'processing'
|
||||
AND (
|
||||
pn.审批人ID = @审批人ID
|
||||
OR CHARINDEX(N',' + @审批人ID + N',', N',' + REPLACE(ISNULL(pn.审批人ID, N''), N',', N',') + N',') > 0
|
||||
)
|
||||
ORDER BY p.更新时间 DESC, p.创建时间 DESC;
|
||||
END;
|
||||
GO
|
||||
|
||||
CREATE OR ALTER PROCEDURE [dbo].[sp_处理审批]
|
||||
@流程ID INT,
|
||||
@节点ID INT,
|
||||
@审批人ID NVARCHAR(100),
|
||||
@审批人姓名 NVARCHAR(100),
|
||||
@处理结果 NVARCHAR(20),
|
||||
@审批意见 NVARCHAR(MAX) = N'',
|
||||
@成功 BIT = 0
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
SET @成功 = 0;
|
||||
|
||||
BEGIN TRY
|
||||
BEGIN TRANSACTION;
|
||||
|
||||
DECLARE @当前步骤 INT;
|
||||
|
||||
SELECT @当前步骤 = 步骤序号
|
||||
FROM [dbo].[流程节点表]
|
||||
WHERE 节点ID = @节点ID
|
||||
AND 流程ID = @流程ID
|
||||
AND 状态 = N'processing';
|
||||
|
||||
IF @当前步骤 IS NULL
|
||||
BEGIN
|
||||
RAISERROR(N'待处理节点不存在或已处理。', 16, 1);
|
||||
END;
|
||||
|
||||
INSERT INTO [dbo].[审批记录表] (
|
||||
流程ID,
|
||||
节点ID,
|
||||
审批人ID,
|
||||
审批人姓名,
|
||||
处理结果,
|
||||
审批意见
|
||||
)
|
||||
VALUES (
|
||||
@流程ID,
|
||||
@节点ID,
|
||||
@审批人ID,
|
||||
@审批人姓名,
|
||||
@处理结果,
|
||||
ISNULL(@审批意见, N'')
|
||||
);
|
||||
|
||||
IF @处理结果 = N'approved'
|
||||
BEGIN
|
||||
UPDATE [dbo].[流程节点表]
|
||||
SET 状态 = N'approved'
|
||||
WHERE 流程ID = @流程ID
|
||||
AND 步骤序号 = @当前步骤
|
||||
AND 状态 = N'processing';
|
||||
|
||||
UPDATE [dbo].[流程表]
|
||||
SET 状态 = N'completed',
|
||||
当前节点 = N'已完成',
|
||||
更新时间 = GETDATE()
|
||||
WHERE 流程ID = @流程ID;
|
||||
|
||||
IF COL_LENGTH(N'dbo.流程表', N'完成人') IS NOT NULL
|
||||
BEGIN
|
||||
EXEC sp_executesql
|
||||
N'UPDATE [dbo].[流程表] SET 完成人 = @p审批人姓名 WHERE 流程ID = @p流程ID',
|
||||
N'@p审批人姓名 NVARCHAR(100), @p流程ID INT',
|
||||
@p审批人姓名 = @审批人姓名,
|
||||
@p流程ID = @流程ID;
|
||||
END;
|
||||
|
||||
IF COL_LENGTH(N'dbo.流程表', N'完成时间') IS NOT NULL
|
||||
BEGIN
|
||||
EXEC sp_executesql
|
||||
N'UPDATE [dbo].[流程表] SET 完成时间 = GETDATE() WHERE 流程ID = @p流程ID',
|
||||
N'@p流程ID INT',
|
||||
@p流程ID = @流程ID;
|
||||
END;
|
||||
END
|
||||
ELSE IF @处理结果 = N'rejected'
|
||||
BEGIN
|
||||
UPDATE [dbo].[流程节点表]
|
||||
SET 状态 = N'rejected'
|
||||
WHERE 流程ID = @流程ID
|
||||
AND 步骤序号 = @当前步骤
|
||||
AND 状态 = N'processing';
|
||||
|
||||
UPDATE [dbo].[流程表]
|
||||
SET 状态 = N'rejected',
|
||||
当前节点 = N'已拒绝',
|
||||
更新时间 = GETDATE()
|
||||
WHERE 流程ID = @流程ID;
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
UPDATE [dbo].[流程节点表]
|
||||
SET 状态 = @处理结果
|
||||
WHERE 节点ID = @节点ID;
|
||||
END;
|
||||
|
||||
SET @成功 = 1;
|
||||
COMMIT TRANSACTION;
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
IF @@TRANCOUNT > 0 ROLLBACK TRANSACTION;
|
||||
SET @成功 = 0;
|
||||
THROW;
|
||||
END CATCH;
|
||||
|
||||
SELECT @成功 AS 成功;
|
||||
END;
|
||||
GO
|
||||
190
db_backups/update_device_information_maintenance_20260629.sql
Normal file
190
db_backups/update_device_information_maintenance_20260629.sql
Normal file
@@ -0,0 +1,190 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'公司编码') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [公司编码] nvarchar(100) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'设备信息') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [设备信息] nvarchar(500) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'使用部门') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [使用部门] nvarchar(100) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'入账日期') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [入账日期] date NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'单位') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [单位] nvarchar(50) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'数量') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [数量] decimal(18, 4) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'状态') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [状态] nvarchar(50) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'维修记录') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [维修记录] nvarchar(1000) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'维保记录') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [维保记录] nvarchar(1000) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'工位绑定') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [工位绑定] nvarchar(1000) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'主要设备') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [主要设备] nvarchar(10) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'设备标准开机工时') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [设备标准开机工时] decimal(18, 4) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'特种设备') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [特种设备] nvarchar(10) NULL
|
||||
GO
|
||||
IF COL_LENGTH(N'dbo.基础数据_设备工位点检表', N'证书有效期至') IS NULL
|
||||
ALTER TABLE [dbo].[基础数据_设备工位点检表] ADD [证书有效期至] date NULL
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_查询]
|
||||
@设备名称_check bit = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备类型_check bit = NULL,
|
||||
@设备类型 int = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT
|
||||
a.*,
|
||||
d.[词条名称] AS [设备类型名称]
|
||||
FROM [dbo].[基础数据_设备工位点检表] a
|
||||
LEFT JOIN [dbo].[YL_基础表_数据字典] d ON a.[设备类型] = d.[AID]
|
||||
WHERE (@设备名称_check IS NULL OR @设备名称_check = 0 OR a.[设备名称] LIKE N'%' + ISNULL(@设备名称, N'') + N'%')
|
||||
AND (@设备类型_check IS NULL OR @设备类型_check = 0 OR a.[设备类型] = CONVERT(nvarchar(50), @设备类型))
|
||||
ORDER BY
|
||||
CASE
|
||||
WHEN a.[证书有效期至] IS NOT NULL AND a.[证书有效期至] < CONVERT(date, GETDATE()) THEN 0
|
||||
WHEN a.[证书有效期至] IS NOT NULL AND a.[证书有效期至] <= DATEADD(day, 30, CONVERT(date, GETDATE())) THEN 1
|
||||
ELSE 2
|
||||
END,
|
||||
a.[证书有效期至],
|
||||
a.[设备流水号] DESC;
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_增加]
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 date = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 date = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
IF ISNULL(@公司编码, N'') = N''
|
||||
BEGIN
|
||||
SELECT '0' AS result, N'公司编码不能为空' AS message;
|
||||
RETURN;
|
||||
END
|
||||
|
||||
INSERT INTO [dbo].[基础数据_设备工位点检表] (
|
||||
[公司编码],
|
||||
[设备名称],
|
||||
[设备型号],
|
||||
[设备类型],
|
||||
[设备信息],
|
||||
[使用部门],
|
||||
[入账日期],
|
||||
[单位],
|
||||
[数量],
|
||||
[状态],
|
||||
[维修记录],
|
||||
[维保记录],
|
||||
[工位绑定],
|
||||
[主要设备],
|
||||
[设备标准开机工时],
|
||||
[特种设备],
|
||||
[证书有效期至]
|
||||
)
|
||||
VALUES (
|
||||
@公司编码,
|
||||
@设备名称,
|
||||
@设备型号,
|
||||
@设备类型,
|
||||
@设备信息,
|
||||
@使用部门,
|
||||
@入账日期,
|
||||
@单位,
|
||||
@数量,
|
||||
@状态,
|
||||
@维修记录,
|
||||
@维保记录,
|
||||
@工位绑定,
|
||||
@主要设备,
|
||||
@设备标准开机工时,
|
||||
@特种设备,
|
||||
@证书有效期至
|
||||
);
|
||||
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[设备管理_设备信息_编辑]
|
||||
@设备流水号 int = NULL,
|
||||
@公司编码 nvarchar(100) = NULL,
|
||||
@设备名称 nvarchar(50) = NULL,
|
||||
@设备型号 nvarchar(50) = NULL,
|
||||
@设备类型 nvarchar(50) = NULL,
|
||||
@设备信息 nvarchar(500) = NULL,
|
||||
@使用部门 nvarchar(100) = NULL,
|
||||
@入账日期 date = NULL,
|
||||
@单位 nvarchar(50) = NULL,
|
||||
@数量 decimal(18, 4) = NULL,
|
||||
@状态 nvarchar(50) = NULL,
|
||||
@维修记录 nvarchar(1000) = NULL,
|
||||
@维保记录 nvarchar(1000) = NULL,
|
||||
@工位绑定 nvarchar(1000) = NULL,
|
||||
@主要设备 nvarchar(10) = NULL,
|
||||
@设备标准开机工时 decimal(18, 4) = NULL,
|
||||
@特种设备 nvarchar(10) = NULL,
|
||||
@证书有效期至 date = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
UPDATE [dbo].[基础数据_设备工位点检表]
|
||||
SET
|
||||
[设备名称] = @设备名称,
|
||||
[设备型号] = @设备型号,
|
||||
[设备类型] = @设备类型,
|
||||
[设备信息] = @设备信息,
|
||||
[使用部门] = @使用部门,
|
||||
[入账日期] = @入账日期,
|
||||
[单位] = @单位,
|
||||
[数量] = @数量,
|
||||
[状态] = @状态,
|
||||
[维修记录] = @维修记录,
|
||||
[维保记录] = @维保记录,
|
||||
[工位绑定] = @工位绑定,
|
||||
[主要设备] = @主要设备,
|
||||
[设备标准开机工时] = @设备标准开机工时,
|
||||
[特种设备] = @特种设备,
|
||||
[证书有效期至] = @证书有效期至
|
||||
WHERE [设备流水号] = @设备流水号;
|
||||
|
||||
SELECT '1' AS result;
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,290 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER OFF
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_作业者工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@工时类型 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 人员班组 AS (
|
||||
SELECT
|
||||
LTRIM(RTRIM(Personnel_Name)) AS Personnel_Name,
|
||||
MAX(NULLIF(LTRIM(RTRIM(班组)), '')) AS 班组
|
||||
FROM [YL_MESDB].[dbo].[登录基础数据_人员信息]
|
||||
WHERE Personnel_Name IS NOT NULL
|
||||
GROUP BY LTRIM(RTRIM(Personnel_Name))
|
||||
),
|
||||
工时基础 AS (
|
||||
SELECT
|
||||
v.*,
|
||||
ISNULL(p.班组, '未分类') AS 工时类型,
|
||||
CASE
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.加工工时, 0) > 0 THEN ISNULL(v.加工工时, 0)
|
||||
WHEN v.操作类别 IN ('报工', '辅助结束') AND ISNULL(v.总时长, 0) > 0 AND ISNULL(v.加工工时, 0) = 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 LIKE '%加班%' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '开始加工' AND ISNULL(v.总时长, 0) > 0 THEN ISNULL(v.总时长, 0)
|
||||
WHEN v.操作类别 = '异常' THEN -ISNULL(v.总时长, 0)
|
||||
ELSE 0
|
||||
END AS 有效工时秒
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
LEFT JOIN 人员班组 p ON LTRIM(RTRIM(v.操作人)) = p.Personnel_Name
|
||||
),
|
||||
筛选明细 AS (
|
||||
SELECT *
|
||||
FROM 工时基础
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 结束时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND (@工时类型 IS NULL OR @工时类型 = '' OR 工时类型 = @工时类型)
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
),
|
||||
报工明细 AS (
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
b.TaskAID,
|
||||
b.订单合同号 AS 合同号,
|
||||
b.订单号,
|
||||
b.产品编码,
|
||||
b.产品名称,
|
||||
b.工序名称,
|
||||
b.工时类型,
|
||||
b.计划数量,
|
||||
b.工位名称 AS 指派对象,
|
||||
CASE
|
||||
WHEN ISNULL(b.工位名称, '') LIKE '%装配%' THEN 0
|
||||
ELSE ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END)
|
||||
END AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(b.有效工时秒 / 60.0 / 60.0 AS DECIMAL(10,2)) AS 工时小时,
|
||||
b.异常说明,
|
||||
b.工序说明,
|
||||
b.操作类别
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
),
|
||||
操作人报工数量 AS (
|
||||
SELECT 操作人, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期报工数量 AS (
|
||||
SELECT 操作人, 工作日期, SUM(报工数量) AS 报工数量
|
||||
FROM (
|
||||
SELECT 操作人, 工作日期, TaskAID, 开始时间, MAX(报工数量) AS 报工数量
|
||||
FROM 报工明细
|
||||
WHERE TaskAID IS NOT NULL AND 开始时间 IS NOT NULL AND 开始时间 != ''
|
||||
GROUP BY 操作人, 工作日期, TaskAID, 开始时间
|
||||
) x
|
||||
GROUP BY 操作人, 工作日期
|
||||
),
|
||||
操作人汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 总工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
操作人,
|
||||
CONVERT(VARCHAR(10), 开始时间, 120) AS 工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
CAST(SUM(有效工时秒) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 工时小时
|
||||
FROM 筛选明细
|
||||
GROUP BY 操作人, CONVERT(VARCHAR(10), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
'' AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.总工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 操作人汇总 s
|
||||
LEFT JOIN 操作人报工数量 q ON q.操作人 = s.操作人
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
s.操作人 AS operator,
|
||||
s.工作日期 AS dateLabel,
|
||||
CAST(s.报工次数 AS VARCHAR(20)) AS reportCount,
|
||||
CAST(ISNULL(q.报工数量, 0) AS VARCHAR(20)) AS reportQty,
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(NULL AS DECIMAL(19,6)) AS 计划数量,
|
||||
'' AS 工时类型,
|
||||
'' AS 指派对象,
|
||||
'' AS startTime,
|
||||
'' AS endTime,
|
||||
'' AS 异常说明,
|
||||
'' AS 工序说明,
|
||||
'' AS 操作类别,
|
||||
CAST(s.工时小时 AS VARCHAR(20)) AS workHours,
|
||||
'' AS TaskAID
|
||||
FROM 日期汇总 s
|
||||
LEFT JOIN 日期报工数量 q ON q.操作人 = s.操作人 AND q.工作日期 = s.工作日期
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
操作人 AS operator,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS reportCount,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(合同号, '') AS contractNo,
|
||||
ISNULL(订单号, '') AS orderNo,
|
||||
ISNULL(产品编码, '') AS productCode,
|
||||
ISNULL(产品名称, '') AS productName,
|
||||
ISNULL(工序名称, '') AS processName,
|
||||
计划数量 AS 计划数量,
|
||||
ISNULL(工时类型, '') AS 工时类型,
|
||||
ISNULL(指派对象, '') AS 指派对象,
|
||||
ISNULL(开始时间, '') AS startTime,
|
||||
ISNULL(结束时间, '') AS endTime,
|
||||
ISNULL(异常说明, '') AS 异常说明,
|
||||
ISNULL(工序说明, '') AS 工序说明,
|
||||
ISNULL(操作类别, '') AS 操作类别,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(TaskAID AS VARCHAR(50)) AS TaskAID
|
||||
FROM 报工明细
|
||||
|
||||
ORDER BY operator, dateLabel, [Level], startTime
|
||||
END
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[工时统计_作业者工时_查询_导出]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@操作人 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@工序名称 NVARCHAR(50) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
SELECT '作业者工时统计_' + REPLACE(REPLACE(REPLACE(CONVERT(NVARCHAR(19), GETDATE(), 21), ':', ''), '-', ''), ' ', '-') AS tablename, '15' AS tabletype
|
||||
|
||||
SELECT 256*12 AS 操作人, 256*15 AS 工作日期, 256*20 AS 合同号, 256*12 AS 订单号, 256*40 AS 产品编码,
|
||||
256*25 AS 产品名称, 256*15 AS 工序名称, 256*12 AS 指派对象, 256*10 AS 报工数量, 256*20 AS 开始时间, 256*20 AS 结束时间, 256*12 AS '工时(h)'
|
||||
|
||||
SELECT 0 AS 操作人, 0 AS 工作日期, 0 AS 合同号, 0 AS 订单号, 0 AS 产品编码,
|
||||
0 AS 产品名称, 0 AS 工序名称, 0 AS 指派对象, 0 AS 报工数量, 0 AS 开始时间, 0 AS 结束时间, 0 AS '工时(h)'
|
||||
|
||||
;WITH 筛选明细 AS (
|
||||
SELECT *
|
||||
FROM [dbo].[View_生产工时视图]
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR 结束时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR 开始时间 <= @结束日期)
|
||||
AND 操作人 IS NOT NULL AND 操作人 != ''
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR 订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@操作人 IS NULL OR @操作人 = '' OR 操作人 LIKE '%' + @操作人 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR 产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@工序名称 IS NULL OR @工序名称 = '' OR 工序名称 LIKE '%' + @工序名称 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR 订单号 LIKE '%' + @订单号 + '%')
|
||||
AND ISNULL(阶段标识, 0) != -1
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 NOT IN ('异常') THEN ISNULL(操作数值, 0)
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE 0
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
)
|
||||
SELECT
|
||||
b.操作人,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
ISNULL(b.订单合同号, '') AS 合同号,
|
||||
ISNULL(b.订单号, '') AS 订单号,
|
||||
ISNULL(b.产品编码, '') AS 产品编码,
|
||||
ISNULL(b.产品名称, '') AS 产品名称,
|
||||
ISNULL(b.工序名称, '') AS 工序名称,
|
||||
ISNULL(b.工位名称, '') AS 指派对象,
|
||||
CAST(CASE
|
||||
WHEN ISNULL(b.工位名称, '') LIKE '%装配%' THEN 0
|
||||
ELSE ISNULL(q.报工数量, CASE
|
||||
WHEN b.操作类别 NOT IN ('异常') THEN ISNULL(b.操作数值, 0)
|
||||
WHEN b.操作类别 = '异常' THEN -ISNULL(b.操作数值, 0)
|
||||
ELSE 0
|
||||
END)
|
||||
END AS VARCHAR(20)) AS 报工数量,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间,
|
||||
CONVERT(VARCHAR(19), b.结束时间, 120) AS 结束时间,
|
||||
CAST(CAST(b.总时长 / 60.0 / 60.0 AS DECIMAL(10,2)) AS VARCHAR(20)) AS '工时(h)'
|
||||
FROM 筛选明细 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
ORDER BY b.操作人, b.开始时间
|
||||
END
|
||||
GO
|
||||
253
db_backups/update_workhours_query_detail_20260627.sql
Normal file
253
db_backups/update_workhours_query_detail_20260627.sql
Normal file
@@ -0,0 +1,253 @@
|
||||
USE [YL_MESDB]
|
||||
GO
|
||||
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
ALTER PROCEDURE [dbo].[生产管理_工时查询_工序工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL,
|
||||
@数据条数 INT = 100
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
;WITH 基础数据 AS (
|
||||
SELECT TOP (CASE WHEN ISNULL(@数据条数, 0) <= 0 THEN 100 ELSE @数据条数 END)
|
||||
v.开始时间,
|
||||
v.结束时间,
|
||||
v.操作内容,
|
||||
v.操作类别,
|
||||
v.操作描述,
|
||||
v.加工工时,
|
||||
v.操作数值,
|
||||
v.订单号,
|
||||
v.订单行号,
|
||||
v.订单合同号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
v.工序名称,
|
||||
v.TaskAID,
|
||||
v.工位名称,
|
||||
CASE
|
||||
WHEN ISNULL(v.操作内容, '') LIKE '%辅助%' OR ISNULL(v.操作类别, '') LIKE '%辅助%' THEN '调机'
|
||||
WHEN ISNULL(v.操作内容, '') LIKE '%报工%' OR ISNULL(v.操作类别, '') LIKE '%报工%' THEN '正常'
|
||||
ELSE ISNULL(NULLIF(v.操作内容, ''), v.操作类别)
|
||||
END AS 报工类型,
|
||||
p.标准工时 AS 工艺工时
|
||||
FROM [dbo].[View_生产工时视图] v
|
||||
LEFT JOIN [dbo].[车间生产管理工艺_零件生产工艺_工艺库] p
|
||||
ON v.订单号 = p.订单编号
|
||||
AND v.订单行号 = p.工艺顺序
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR v.开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR v.开始时间 < DATEADD(DAY, 1, @结束日期))
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 = @订单号)
|
||||
AND (ISNULL(v.操作内容, '') IN ('报工', '辅助结束') OR ISNULL(v.操作类别, '') IN ('报工', '辅助结束'))
|
||||
AND ISNULL(v.加工工时, 0) > 0
|
||||
ORDER BY v.开始时间 DESC
|
||||
),
|
||||
明细键 AS (
|
||||
SELECT DISTINCT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间
|
||||
FROM 基础数据
|
||||
),
|
||||
TaskStart报工数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
CONVERT(VARCHAR(19), 开始时间, 120) AS 开始时间,
|
||||
MAX(CASE
|
||||
WHEN 操作类别 = '异常' THEN -ISNULL(操作数值, 0)
|
||||
ELSE ISNULL(操作数值, 0)
|
||||
END) AS 报工数量
|
||||
FROM [dbo].[View_生产工时视图全部]
|
||||
GROUP BY TaskAID, CONVERT(VARCHAR(19), 开始时间, 120)
|
||||
),
|
||||
TaskStart扩展 AS (
|
||||
SELECT
|
||||
k.TaskAID,
|
||||
k.开始时间,
|
||||
CASE
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
WHERE v.TaskAID = k.TaskAID
|
||||
AND CONVERT(VARCHAR(19), v.开始时间, 120) = k.开始时间
|
||||
AND ISNULL(v.操作描述, '') LIKE '%白班%'
|
||||
) THEN '白班'
|
||||
WHEN EXISTS (
|
||||
SELECT 1
|
||||
FROM [dbo].[View_生产工时视图全部] v
|
||||
WHERE v.TaskAID = k.TaskAID
|
||||
AND CONVERT(VARCHAR(19), v.开始时间, 120) = k.开始时间
|
||||
AND ISNULL(v.操作描述, '') LIKE '%夜班%'
|
||||
) THEN '夜班'
|
||||
ELSE ''
|
||||
END AS 班次,
|
||||
(
|
||||
SELECT STRING_AGG(x.操作人, ',')
|
||||
FROM (
|
||||
SELECT DISTINCT LTRIM(RTRIM(v2.操作人)) AS 操作人
|
||||
FROM [dbo].[View_生产工时视图全部] v2
|
||||
WHERE v2.TaskAID = k.TaskAID
|
||||
AND CONVERT(VARCHAR(19), v2.开始时间, 120) = k.开始时间
|
||||
AND ISNULL(v2.加工工时, 0) <= 0
|
||||
AND NULLIF(LTRIM(RTRIM(ISNULL(v2.操作人, ''))), '') IS NOT NULL
|
||||
) x
|
||||
) AS 操作人
|
||||
FROM 明细键 k
|
||||
),
|
||||
明细数据 AS (
|
||||
SELECT
|
||||
b.TaskAID,
|
||||
ISNULL(b.产品名称, '') + ' ' + ISNULL(b.产品编码, '') + ' ' + ISNULL(b.工序名称, '') + ' 序' + CAST(ISNULL(b.订单行号, 0) AS VARCHAR(50)) AS 任务描述,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
e.班次,
|
||||
e.操作人,
|
||||
b.订单号 AS 生产订单号,
|
||||
b.报工类型,
|
||||
qv.报工数量,
|
||||
b.工位名称 AS 工位名称,
|
||||
CAST(ISNULL(b.加工工时, 0) / 60.0 / 60.0 AS DECIMAL(10, 2)) AS 工时小时,
|
||||
CAST(ISNULL(b.加工工时, 0) / 60.0 AS DECIMAL(10, 2)) AS 工时分钟,
|
||||
'' AS 程序时间,
|
||||
CASE
|
||||
WHEN qv.报工数量 > 0 THEN CAST((ISNULL(b.加工工时, 0) / 60.0) / qv.报工数量 AS DECIMAL(10, 2))
|
||||
ELSE CAST(ISNULL(b.工艺工时, 0) AS DECIMAL(10, 2))
|
||||
END AS 单件工时,
|
||||
b.工艺工时,
|
||||
CONVERT(VARCHAR(19), b.开始时间, 120) AS 开始时间
|
||||
FROM 基础数据 b
|
||||
LEFT JOIN TaskStart报工数量 q
|
||||
ON q.TaskAID = b.TaskAID
|
||||
AND q.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
LEFT JOIN TaskStart扩展 e
|
||||
ON e.TaskAID = b.TaskAID
|
||||
AND e.开始时间 = CONVERT(VARCHAR(19), b.开始时间, 120)
|
||||
CROSS APPLY (
|
||||
SELECT CASE
|
||||
WHEN ISNULL(b.工位名称, '') LIKE '%装配%' THEN 0
|
||||
ELSE ISNULL(q.报工数量, ISNULL(b.操作数值, 0))
|
||||
END AS 报工数量
|
||||
) qv
|
||||
),
|
||||
去重数量 AS (
|
||||
SELECT
|
||||
TaskAID,
|
||||
工作日期,
|
||||
开始时间,
|
||||
MAX(报工数量) AS 报工数量
|
||||
FROM 明细数据
|
||||
GROUP BY TaskAID, 工作日期, 开始时间
|
||||
),
|
||||
Task数量汇总 AS (
|
||||
SELECT TaskAID, SUM(报工数量) AS 报工数量
|
||||
FROM 去重数量
|
||||
GROUP BY TaskAID
|
||||
),
|
||||
日期数量汇总 AS (
|
||||
SELECT TaskAID, 工作日期, SUM(报工数量) AS 报工数量
|
||||
FROM 去重数量
|
||||
GROUP BY TaskAID, 工作日期
|
||||
),
|
||||
Task汇总 AS (
|
||||
SELECT
|
||||
m.TaskAID,
|
||||
MAX(m.任务描述) AS 任务描述,
|
||||
COUNT(*) AS 报工次数,
|
||||
ISNULL(q.报工数量, 0) AS 报工数量,
|
||||
SUM(m.工时小时) AS 工时小时,
|
||||
SUM(m.工时分钟) AS 工时分钟,
|
||||
MAX(m.工艺工时) AS 工艺工时
|
||||
FROM 明细数据 m
|
||||
LEFT JOIN Task数量汇总 q ON q.TaskAID = m.TaskAID
|
||||
GROUP BY m.TaskAID, q.报工数量
|
||||
),
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
m.TaskAID,
|
||||
MAX(m.任务描述) AS 任务描述,
|
||||
m.工作日期,
|
||||
COUNT(*) AS 报工次数,
|
||||
ISNULL(q.报工数量, 0) AS 报工数量,
|
||||
SUM(m.工时小时) AS 工时小时,
|
||||
SUM(m.工时分钟) AS 工时分钟,
|
||||
MAX(m.工艺工时) AS 工艺工时
|
||||
FROM 明细数据 m
|
||||
LEFT JOIN 日期数量汇总 q ON q.TaskAID = m.TaskAID AND q.工作日期 = m.工作日期
|
||||
GROUP BY m.TaskAID, m.工作日期, q.报工数量
|
||||
)
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
TaskAID,
|
||||
任务描述 AS taskDescription,
|
||||
'' AS dateLabel,
|
||||
'' AS shift,
|
||||
'' AS operatorNames,
|
||||
'' AS productionOrderNo,
|
||||
'' AS reportType,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS station,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS actualWorkHours,
|
||||
'' AS programTime,
|
||||
CAST(CASE WHEN 报工数量 > 0 THEN 工时分钟 / 报工数量 ELSE ISNULL(工艺工时, 0) END AS VARCHAR(20)) AS pieceWorkHours,
|
||||
CAST(ISNULL(工艺工时, 0) AS VARCHAR(20)) AS processWorkHours,
|
||||
'' AS startTime,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount
|
||||
FROM Task汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
TaskAID,
|
||||
任务描述 AS taskDescription,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS shift,
|
||||
'' AS operatorNames,
|
||||
'' AS productionOrderNo,
|
||||
'' AS reportType,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
'' AS station,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS actualWorkHours,
|
||||
'' AS programTime,
|
||||
CAST(CASE WHEN 报工数量 > 0 THEN 工时分钟 / 报工数量 ELSE ISNULL(工艺工时, 0) END AS VARCHAR(20)) AS pieceWorkHours,
|
||||
CAST(ISNULL(工艺工时, 0) AS VARCHAR(20)) AS processWorkHours,
|
||||
'' AS startTime,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount
|
||||
FROM 日期汇总
|
||||
|
||||
UNION ALL
|
||||
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
TaskAID,
|
||||
任务描述 AS taskDescription,
|
||||
工作日期 AS dateLabel,
|
||||
班次 AS shift,
|
||||
ISNULL(操作人, '') AS operatorNames,
|
||||
ISNULL(生产订单号, '') AS productionOrderNo,
|
||||
ISNULL(报工类型, '') AS reportType,
|
||||
CAST(报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
ISNULL(工位名称, '') AS station,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS workHours,
|
||||
CAST(工时小时 AS VARCHAR(20)) AS actualWorkHours,
|
||||
程序时间 AS programTime,
|
||||
CAST(单件工时 AS VARCHAR(20)) AS pieceWorkHours,
|
||||
CAST(ISNULL(工艺工时, 0) AS VARCHAR(20)) AS processWorkHours,
|
||||
开始时间 AS startTime,
|
||||
'' AS reportCount
|
||||
FROM 明细数据
|
||||
|
||||
ORDER BY TaskAID, dateLabel, [Level], startTime
|
||||
END
|
||||
GO
|
||||
@@ -0,0 +1,238 @@
|
||||
|
||||
CREATE PROCEDURE [dbo].[生产管理_工时查询_工序工时_查询]
|
||||
@合同号 NVARCHAR(50) = NULL,
|
||||
@产品编码 NVARCHAR(100) = NULL,
|
||||
@订单号 NVARCHAR(50) = NULL,
|
||||
@开始日期 DATE = NULL,
|
||||
@结束日期 DATE = NULL,
|
||||
@数据条数 int = 100
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
-- 获取班次信息
|
||||
DECLARE @白班开始时间 TIME = '07:45:00'
|
||||
DECLARE @白班结束时间 TIME = '16:30:00'
|
||||
DECLARE @夜班开始时间 TIME = '16:30:00'
|
||||
DECLARE @夜班结束时间 TIME = '00:40:00'
|
||||
|
||||
;WITH 基础数据 AS (
|
||||
SELECT top (@数据条数)
|
||||
v.开始时间,
|
||||
v.结束时间,
|
||||
v.操作内容,
|
||||
v.加工工时,
|
||||
v.操作数值,
|
||||
v.订单号,
|
||||
v.订单行号,
|
||||
v.订单合同号,
|
||||
v.产品编码,
|
||||
v.产品名称,
|
||||
v.工序名称,
|
||||
v.TaskAID,
|
||||
v.工位名称,
|
||||
-- 根据时间判断班次
|
||||
CASE
|
||||
WHEN CAST(v.开始时间 AS TIME) >= @白班开始时间
|
||||
AND CAST(v.开始时间 AS TIME) < @白班结束时间 THEN '白班'
|
||||
WHEN CAST(v.开始时间 AS TIME) >= @夜班开始时间
|
||||
OR CAST(v.开始时间 AS TIME) < @夜班结束时间 THEN '夜班'
|
||||
ELSE '其他'
|
||||
END AS 计算班次,
|
||||
-- 标记实际工时和辅助工时
|
||||
CASE WHEN v.操作内容 = '报工' THEN v.加工工时 ELSE 0 END AS 实际加工工时,
|
||||
CASE WHEN v.操作内容 = '辅助结束' THEN v.加工工时 ELSE 0 END AS 辅助加工工时,
|
||||
-- 标记报工数量和辅助数量
|
||||
CASE WHEN v.操作内容 = '报工' THEN v.操作数值 ELSE 0 END AS 实际报工数量,
|
||||
CASE WHEN v.操作内容 = '辅助结束' THEN v.操作数值 ELSE 0 END AS 辅助报工数量,
|
||||
-- 关联工艺库获取标准工时(工艺工时)
|
||||
p.标准工时 AS 工艺工时
|
||||
FROM View_生产工时视图 v
|
||||
LEFT JOIN 车间生产管理工艺_零件生产工艺_工艺库 p
|
||||
ON v.订单号 = p.订单编号
|
||||
AND v.订单行号 = p.工艺顺序
|
||||
WHERE (@开始日期 IS NULL OR @开始日期 = '' OR v.开始时间 >= @开始日期)
|
||||
AND (@结束日期 IS NULL OR @结束日期 = '' OR v.结束时间 >= @结束日期)
|
||||
AND (@合同号 IS NULL OR @合同号 = '' OR v.订单合同号 LIKE '%' + @合同号 + '%')
|
||||
AND (@产品编码 IS NULL OR @产品编码 = '' OR v.产品编码 LIKE '%' + @产品编码 + '%')
|
||||
AND (@订单号 IS NULL OR @订单号 = '' OR v.订单号 = @订单号)
|
||||
-- 去掉报工时间为0的数据(实际加工工时或辅助加工工时不为0)
|
||||
AND (CASE WHEN v.操作内容 = '报工' THEN v.加工工时 ELSE 0 END > 0
|
||||
OR CASE WHEN v.操作内容 = '辅助结束' THEN v.加工工时 ELSE 0 END > 0)
|
||||
),
|
||||
-- 获取每个TaskAID对应的任务描述(取第一条记录)
|
||||
Task描述 AS (
|
||||
SELECT DISTINCT
|
||||
TaskAID,
|
||||
-- 任务描述:产品名称 + 产品编码 + 工序名称
|
||||
ISNULL(产品名称, '') + ' ' + ISNULL(产品编码, '') + ' ' + ISNULL(工序名称, '') + ' 序'+ CAST(订单行号 AS VARCHAR(50)) AS 任务描述
|
||||
FROM 基础数据
|
||||
),
|
||||
-- 第一层:按TaskAID汇总
|
||||
TaskAID汇总 AS (
|
||||
SELECT
|
||||
b.TaskAID,
|
||||
t.任务描述,
|
||||
'' AS 工作日期,
|
||||
'' AS 班次,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(实际报工数量) AS 实际报工数量,
|
||||
SUM(辅助报工数量) AS 辅助报工数量,
|
||||
CAST(SUM(实际加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 实际工时小时,
|
||||
CAST(SUM(辅助加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 辅助工时小时,
|
||||
-- 计算平均实际工时(实际加工工时/实际报工数量)
|
||||
CASE
|
||||
WHEN SUM(实际报工数量) > 0
|
||||
THEN CAST((SUM(实际加工工时) / 60.0 / 60.0) / SUM(实际报工数量) AS DECIMAL(10,2))
|
||||
ELSE 0
|
||||
END AS 平均实际工时,
|
||||
-- 计算平均辅助工时(辅助加工工时/辅助报工数量)
|
||||
CASE
|
||||
WHEN SUM(辅助报工数量) > 0
|
||||
THEN CAST((SUM(辅助加工工时) / 60.0 / 60.0) / SUM(辅助报工数量) AS DECIMAL(10,2))
|
||||
ELSE 0
|
||||
END AS 平均辅助工时,
|
||||
-- 工艺工时(取第一条记录的工艺工时)
|
||||
MAX(b.工艺工时) AS 工艺工时
|
||||
FROM 基础数据 b
|
||||
LEFT JOIN Task描述 t ON b.TaskAID = t.TaskAID
|
||||
GROUP BY b.TaskAID, t.任务描述
|
||||
),
|
||||
-- 第二层:按TaskAID和日期汇总
|
||||
日期汇总 AS (
|
||||
SELECT
|
||||
b.TaskAID,
|
||||
t.任务描述,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
'' AS 班次,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(实际报工数量) AS 实际报工数量,
|
||||
SUM(辅助报工数量) AS 辅助报工数量,
|
||||
CAST(SUM(实际加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 实际工时小时,
|
||||
CAST(SUM(辅助加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 辅助工时小时,
|
||||
-- 计算平均实际工时(实际加工工时/实际报工数量)
|
||||
CASE
|
||||
WHEN SUM(实际报工数量) > 0
|
||||
THEN CAST((SUM(实际加工工时) / 60.0 / 60.0) / SUM(实际报工数量) AS DECIMAL(10,2))
|
||||
ELSE 0
|
||||
END AS 平均实际工时,
|
||||
-- 计算平均辅助工时(辅助加工工时/辅助报工数量)
|
||||
CASE
|
||||
WHEN SUM(辅助报工数量) > 0
|
||||
THEN CAST((SUM(辅助加工工时) / 60.0 / 60.0) / SUM(辅助报工数量) AS DECIMAL(10,2))
|
||||
ELSE 0
|
||||
END AS 平均辅助工时,
|
||||
-- 工艺工时(取该日期第一条记录的工艺工时)
|
||||
MAX(b.工艺工时) AS 工艺工时
|
||||
FROM 基础数据 b
|
||||
LEFT JOIN Task描述 t ON b.TaskAID = t.TaskAID
|
||||
GROUP BY b.TaskAID, t.任务描述, CONVERT(VARCHAR(10), b.开始时间, 120)
|
||||
),
|
||||
-- 第三层:按TaskAID、日期和班次汇总
|
||||
班次汇总 AS (
|
||||
SELECT
|
||||
b.TaskAID,
|
||||
t.任务描述,
|
||||
CONVERT(VARCHAR(10), b.开始时间, 120) AS 工作日期,
|
||||
b.计算班次,
|
||||
b.工位名称,
|
||||
COUNT(*) AS 报工次数,
|
||||
SUM(实际报工数量) AS 实际报工数量,
|
||||
SUM(辅助报工数量) AS 辅助报工数量,
|
||||
CAST(SUM(实际加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 实际工时小时,
|
||||
CAST(SUM(辅助加工工时) / 60.0 / 60.0 AS DECIMAL(10,1)) AS 辅助工时小时,
|
||||
-- 计算平均实际工时(实际加工工时/实际报工数量)
|
||||
CASE
|
||||
WHEN SUM(实际报工数量) > 0
|
||||
THEN CAST((SUM(实际加工工时) / 60.0 / 60.0) / SUM(实际报工数量) AS DECIMAL(10,2))
|
||||
ELSE 0
|
||||
END AS 平均实际工时,
|
||||
-- 计算平均辅助工时(辅助加工工时/辅助报工数量)
|
||||
CASE
|
||||
WHEN SUM(辅助报工数量) > 0
|
||||
THEN CAST((SUM(辅助加工工时) / 60.0 / 60.0) / SUM(辅助报工数量) AS DECIMAL(10,2))
|
||||
ELSE 0
|
||||
END AS 平均辅助工时,
|
||||
-- 工艺工时(取该班次第一条记录的工艺工时)
|
||||
MAX(b.工艺工时) AS 工艺工时
|
||||
FROM 基础数据 b
|
||||
LEFT JOIN Task描述 t ON b.TaskAID = t.TaskAID
|
||||
GROUP BY b.TaskAID, t.任务描述, CONVERT(VARCHAR(10), b.开始时间, 120), b.计算班次, b.工位名称
|
||||
)
|
||||
|
||||
-- 第一层:TaskAID汇总
|
||||
SELECT
|
||||
1 AS [Level],
|
||||
TaskAID,
|
||||
任务描述 AS taskDescription,
|
||||
'' AS dateLabel,
|
||||
'' AS shift,
|
||||
'' AS 工位名称,
|
||||
CAST(实际报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
CAST(实际工时小时 AS VARCHAR(20)) AS actualWorkHours,
|
||||
CAST(辅助工时小时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(平均实际工时 AS VARCHAR(20)) AS avgActualWorkHours,
|
||||
CAST(平均辅助工时 AS VARCHAR(20)) AS avgAuxiliaryWorkHours,
|
||||
CAST(ISNULL(工艺工时, 0) AS VARCHAR(20)) AS processWorkHours, -- 工艺工时
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount
|
||||
FROM TaskAID汇总
|
||||
WHERE 实际工时小时 > 0 OR 辅助工时小时 > 0
|
||||
|
||||
UNION ALL
|
||||
|
||||
-- 第二层:日期汇总
|
||||
SELECT
|
||||
2 AS [Level],
|
||||
TaskAID,
|
||||
任务描述 AS taskDescription,
|
||||
工作日期 AS dateLabel,
|
||||
'' AS shift,
|
||||
'' AS 工位名称,
|
||||
CAST(实际报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
CAST(实际工时小时 AS VARCHAR(20)) AS actualWorkHours,
|
||||
CAST(辅助工时小时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(平均实际工时 AS VARCHAR(20)) AS avgActualWorkHours,
|
||||
CAST(平均辅助工时 AS VARCHAR(20)) AS avgAuxiliaryWorkHours,
|
||||
CAST(ISNULL(工艺工时, 0) AS VARCHAR(20)) AS processWorkHours, -- 工艺工时
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount
|
||||
FROM 日期汇总
|
||||
WHERE 实际工时小时 > 0 OR 辅助工时小时 > 0
|
||||
|
||||
UNION ALL
|
||||
|
||||
-- 第三层:班次汇总
|
||||
SELECT
|
||||
3 AS [Level],
|
||||
TaskAID,
|
||||
任务描述 AS taskDescription,
|
||||
工作日期 AS dateLabel,
|
||||
计算班次 AS shift,
|
||||
工位名称 AS 工位名称,
|
||||
CAST(实际报工数量 AS VARCHAR(20)) AS reportQty,
|
||||
CAST(实际工时小时 AS VARCHAR(20)) AS actualWorkHours,
|
||||
CAST(辅助工时小时 AS VARCHAR(20)) AS auxiliaryWorkHours,
|
||||
CAST(平均实际工时 AS VARCHAR(20)) AS avgActualWorkHours,
|
||||
CAST(平均辅助工时 AS VARCHAR(20)) AS avgAuxiliaryWorkHours,
|
||||
CAST(ISNULL(工艺工时, 0) AS VARCHAR(20)) AS processWorkHours, -- 工艺工时
|
||||
'' AS contractNo,
|
||||
'' AS orderNo,
|
||||
'' AS productCode,
|
||||
'' AS productName,
|
||||
'' AS processName,
|
||||
CAST(报工次数 AS VARCHAR(20)) AS reportCount
|
||||
FROM 班次汇总
|
||||
WHERE 实际工时小时 > 0 OR 辅助工时小时 > 0
|
||||
|
||||
ORDER BY TaskAID, dateLabel, shift, [Level]
|
||||
END
|
||||
|
||||
Reference in New Issue
Block a user