源数据表
CREATE TABLE `bus_print_field` (
`id` varchar(64) NOT NULL,
`name` varchar(255) NOT NULL COMMENT '字段名称',
`type` tinyint(2) NOT NULL COMMENT '字段类型 0头部 1顶部 2表格 3底部',
`sort` int(11) DEFAULT '1' COMMENT '排序',
`is_bold` tinyint(2) DEFAULT '0' COMMENT '是否加粗 1是 0否 默认0',
`is_show` tinyint(2) DEFAULT '1' COMMENT '是否显示 1是 0否 默认1',
`is_sort` tinyint(2) DEFAULT '1' COMMENT '是否支持排序 1是 0否 默认1',
`font_size` int(11) DEFAULT '14' COMMENT '字号(单位px)',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`version` int(11) DEFAULT NULL COMMENT '版本',
`remarks` varchar(200) DEFAULT NULL COMMENT '备注',
`del_flag` tinyint(2) DEFAULT '0' COMMENT '删除标志 0正常1删除',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='打印字段表';
各公司自己的字段配置表
CREATE TABLE `bus_print_field_setting` (
`id` varchar(64) NOT NULL,
`company_id` varchar(64) NOT NULL COMMENT '公司id',
`bus_print_field_id` varchar(64) NOT NULL COMMENT '字段源ID',
`name` varchar(255) NOT NULL COMMENT '字段名称',
`type` tinyint(2) NOT NULL COMMENT '字段类型 1顶部 2表格 3底部',
`sort` int(11) DEFAULT '1' COMMENT '排序',
`is_bold` tinyint(2) DEFAULT '0' COMMENT '是否加粗 1是 0否 默认0',
`is_show` tinyint(2) DEFAULT '1' COMMENT '是否显示 1是 0否 默认1',
`is_sort` tinyint(2) DEFAULT '1' COMMENT '是否支持排序 1是 0否 默认1',
`font_size` int(11) DEFAULT '14' COMMENT '字号(单位px)',
`create_by` varchar(64) DEFAULT NULL COMMENT '创建人',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT NULL COMMENT '更新人',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`version` int(11) DEFAULT NULL COMMENT '版本',
`remarks` varchar(200) DEFAULT NULL COMMENT '备注',
`del_flag` tinyint(2) DEFAULT '0' COMMENT '删除标志 0正常1删除',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='打印字段配置表';
查询在源数据中 但是不在某公司下的字段
<select id="getNoList" resultType="com.sm.qh.busprint.entity.BusPrintField">
select b.*, c.id as cid
from bus_print_field b left join bus_print_field_setting c
on c.bus_print_field_id = b.id
and c.company_id = #{companyId}
and c.del_flag = 0
where c.id is NULL
and b.del_flag = 0
</select>
上一步查出来的字段 插入到公司自己的子段中,插入前做已有判断
<insert id="updateField">
insert into bus_print_field_setting
(id, company_id, bus_print_field_id, name, type, sort, is_bold, is_show, is_sort, font_size)
<foreach collection="list" item="item" index="index" separator="UNION ALL">
select
(select REPLACE(UUID(), '-', '') as id),
#{busPrintFieldSetting.companyId},
#{item.id},
#{item.name},
#{item.type},
#{item.sort},
#{item.isBold},
#{item.isShow},
#{item.isSort},
#{item.fontSize}
from DUAL
where not exists
(select a.id from bus_print_field_setting a where a.bus_print_field_id = #{item.id} and a.company_id = #{busPrintFieldSetting.companyId} and a.del_flag = 0)
</foreach>
</insert>