liu
9 天以前 a5f66f55b2c176e8504b8a077e00acfe2dfb4b00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
-- ============================================================
-- 生产核算(成品部门 / 白盒部门)配置与结构补充脚本
-- 数据库:product-inventory-management-new-pro
-- 说明:本地库结构落后于代码,production_product_main 缺少
--       报工结果/审核相关列,这里补齐;并新增核算配置表与演示数据。
-- ============================================================
SET NAMES utf8mb4;
 
-- ------------------------------------------------------------
-- 1. 补充 production_product_main 缺失列(报工结果 / 审核 / 补修理工时)
-- ------------------------------------------------------------
ALTER TABLE `production_product_main`
    ADD COLUMN `report_type`     int          NULL COMMENT '报工结果类型:0合格,1轻微返工,2严重返工,3报废' AFTER `status`,
    ADD COLUMN `audit_status`    int          NULL DEFAULT 1 COMMENT '审核状态:0待审核,1审核通过,2审核不通过' AFTER `report_type`,
    ADD COLUMN `audit_remark`    varchar(255) NULL COMMENT '审核意见' AFTER `audit_status`,
    ADD COLUMN `repair_work_hour` decimal(10,2) NULL DEFAULT 0 COMMENT '补修理工时' AFTER `work_hour`;
 
-- 已存在报工数据默认视为:审核通过、合格
UPDATE `production_product_main` SET `report_type` = 0 WHERE `report_type` IS NULL;
UPDATE `production_product_main` SET `audit_status` = 1 WHERE `audit_status` IS NULL;
 
-- ------------------------------------------------------------
-- 2. 新增核算配置表
-- ------------------------------------------------------------
DROP TABLE IF EXISTS `production_costing_dept`;
CREATE TABLE `production_costing_dept` (
    `id`          bigint       NOT NULL AUTO_INCREMENT COMMENT '主键',
    `dept_id`     bigint       NULL COMMENT '部门ID(sys_dept.dept_id)',
    `dept_type`   int          NULL COMMENT '部门类型:1成品部门,2白盒部门',
    `remark`      varchar(255) NULL COMMENT '备注',
    `create_user` bigint       NULL COMMENT '创建人',
    `create_time` datetime     NULL COMMENT '创建时间',
    `update_user` bigint       NULL COMMENT '修改人',
    `update_time` datetime     NULL COMMENT '修改时间',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '生产核算-部门类型配置';
 
DROP TABLE IF EXISTS `production_costing_standard`;
CREATE TABLE `production_costing_standard` (
    `id`                bigint        NOT NULL AUTO_INCREMENT COMMENT '主键',
    `dept_type`         int           NULL COMMENT '部门类型:1成品,2白盒',
    `process_id`        bigint        NULL COMMENT '工序ID(technology_operation.id)',
    `product_model_id`  bigint        NULL COMMENT '型号ID(product_model.id),白盒必填',
    `standard_quantity` decimal(18,4) NULL COMMENT '标准数量',
    `unit`              varchar(50)   NULL COMMENT '单位',
    `remark`            varchar(255)  NULL COMMENT '备注',
    `create_user`       bigint        NULL COMMENT '创建人',
    `create_time`       datetime      NULL COMMENT '创建时间',
    `update_user`       bigint        NULL COMMENT '修改人',
    `update_time`       datetime      NULL COMMENT '修改时间',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '生产核算-标准数量配置';
 
DROP TABLE IF EXISTS `production_costing_factor`;
CREATE TABLE `production_costing_factor` (
    `id`            bigint        NOT NULL AUTO_INCREMENT COMMENT '主键',
    `process_id`    bigint        NULL COMMENT '工序ID(technology_operation.id)',
    `staff_id`      bigint        NULL COMMENT '员工ID(sys_user.user_id)',
    `staff_name`    varchar(255)  NULL COMMENT '员工姓名',
    `violin_factor` decimal(18,4) NULL DEFAULT 1 COMMENT '小提琴折算率(基准)',
    `viola_factor`  decimal(18,4) NULL COMMENT '大提琴折算率',
    `bass_factor`   decimal(18,4) NULL COMMENT '贝斯折算率',
    `remark`        varchar(255)  NULL COMMENT '备注',
    `create_user`   bigint        NULL COMMENT '创建人',
    `create_time`   datetime      NULL COMMENT '创建时间',
    `update_user`   bigint        NULL COMMENT '修改人',
    `update_time`   datetime      NULL COMMENT '修改时间',
    PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '生产核算-折算率配置(工序+员工)';
 
-- ------------------------------------------------------------
-- 3. 演示数据(便于本地查看效果)
-- ------------------------------------------------------------
-- 3.1 新增部门:成品部门 / 白盒部门
INSERT INTO `sys_dept` (`dept_id`, `parent_id`, `ancestors`, `dept_name`, `order_num`, `status`, `del_flag`, `create_by`, `create_time`)
VALUES (220, 100, '0,100', '成品部门', 1, '0', '0', 'admin', NOW()),
       (221, 100, '0,100', '白盒部门', 2, '0', '0', 'admin', NOW());
 
-- 3.2 把演示工序归入对应部门(成品:冷工艺27/硫化28;白盒:收线25/切割2)
UPDATE `technology_operation` SET `dept_id` = 220 WHERE `id` IN (27, 28);
UPDATE `technology_operation` SET `dept_id` = 221 WHERE `id` IN (2, 25);
 
-- 3.3 部门类型配置
INSERT INTO `production_costing_dept` (`dept_id`, `dept_type`, `remark`, `create_time`)
VALUES (220, 1, '成品部门', NOW()),
       (221, 2, '白盒部门', NOW());
 
-- 3.4 标准数量配置
--     成品:按工序
--     白盒:按工序 + 型号
INSERT INTO `production_costing_standard` (`dept_type`, `process_id`, `product_model_id`, `standard_quantity`, `unit`, `remark`, `create_time`)
VALUES (1, 27, NULL, 10, 'm', '冷工艺标准数量', NOW()),
       (1, 28, NULL, 20, 'm', '硫化标准数量', NOW()),
       (2, 25, 251, 5, 'kg/km', '收线-铝合金线', NOW()),
       (2, 25, 256, 2, 'm', '收线-铝合金绞线', NOW()),
       (2, 2, 246, 4, 'kg/km', '切割-铝合金线', NOW());
 
-- 3.5 折算率配置(工序 + 员工)
INSERT INTO `production_costing_factor` (`process_id`, `staff_id`, `staff_name`, `violin_factor`, `viola_factor`, `bass_factor`, `remark`, `create_time`)
VALUES (27, 1, '管理员账号', 1, 3, 6, '冷工艺-折算率', NOW()),
       (28, 1, '管理员账号', 1, 2, 4, '硫化-折算率', NOW());
 
-- 3.6 乐器演示数据(小提琴/大提琴/贝斯),用于展示成品部门折算效果
INSERT INTO `product` (`id`, `parent_id`, `product_name`, `create_user`, `dept_id`)
VALUES (510, 276, '小提琴', 1, 220),
       (511, 276, '大提琴', 1, 220),
       (512, 276, '贝斯', 1, 220);
 
INSERT INTO `product_model` (`id`, `product_id`, `model`, `unit`, `create_user`, `dept_id`)
VALUES (5001, 510, 'VIOLIN-STD', '把', 1, 220),
       (5002, 511, 'CELLO-STD', '把', 1, 220),
       (5003, 512, 'BASS-STD', '把', 1, 220);
 
-- 报工链:订单 -> 工艺路线工序 -> 工单 -> 报工 -> 产出
INSERT INTO `production_order` (`id`, `product_model_id`, `technology_routing_id`, `nps_no`, `quantity`, `create_user`, `dept_id`)
VALUES (5000, 5001, 0, 'DEMO-ORDER-1', 100, 1, 220);
 
INSERT INTO `production_order_routing_operation` (`id`, `production_order_id`, `technology_routing_operation_id`, `technology_operation_id`, `operation_name`, `product_model_id`, `type`, `create_user`, `dept_id`)
VALUES (5000, 5000, 0, 27, '冷工艺', 5001, 1, 1, 220);
 
INSERT INTO `production_operation_task` (`id`, `production_order_routing_operation_id`, `technology_routing_operation_id`, `work_order_no`, `status`, `production_order_id`, `create_user`, `dept_id`)
VALUES (5000, 5000, 0, 'DEMO-WO-1', 4, 5000, 1, 220);
 
INSERT INTO `production_product_main` (`id`, `product_no`, `user_id`, `user_name`, `production_operation_task_id`, `status`, `dept_id`, `create_time`, `create_user`, `report_type`, `audit_status`)
VALUES (5000, 'BG-DEMO-001', 1, '管理员账号', 5000, 4, 220, '2026-09-15 10:00:00', 1, 0, 1);
 
INSERT INTO `production_product_output` (`production_product_main_id`, `product_model_id`, `quantity`, `scrap_qty`, `create_user`, `dept_id`)
VALUES (5000, 5001, 20, 0, 1, 220),
       (5000, 5002, 10, 0, 1, 220),
       (5000, 5003, 5, 0, 1, 220);