refactor: 合并 biz_support_unit/biz_execution_unit/biz_service_org 为 biz_org, 删除 2 张孤儿表, 改 biz_person.work_unit → org_id FK

主要改动:
- SQL: biz_support_unit → biz_org, 加 org_type, 加 business_nature; 删 biz_execution_unit, biz_service_org
- SQL: biz_project.support_unit_id/name + service_org_id/name → org_id/name/type
- SQL: biz_meeting.support_unit_name → org_name
- SQL: biz_person.work_unit → org_id (FK)
- 后端: 新 BizOrg entity/mapper/service/controller
- 后端: BizProject/BizMeeting 字段重命名
- 后端: 删 12 个 BizSupportUnit/BizExecutionUnit/BizServiceOrg Java 文件
- 后端: BizPersonImportVO.workUnit → orgName (导入时查 biz_org 取 org_id)
- 后端: BizAuthController.registerExecutor 完整实现 (原 registerSupplier stub)
- 前端: 新 admin/Orgs.vue + manager/Orgs.vue (原 SupportUnits)
- 前端: RegisterExecutor.vue (原 RegisterSupplier, 单页 2 步)
- 前端: sponsor/executor/manager 多个文件 workUnit → orgId/orgName 重命名
- 前端: 统一 supplier → executor, 业务命名 sponsor(赞助方) / executor(执行方=供应商)
- 前端: 全工程 execution → executor (company type / role / person unit_type)
This commit is contained in:
郭庆泰
2026-08-15 12:41:10 +08:00
commit cf5790229a
694 changed files with 102090 additions and 0 deletions
@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ruoyi.business.mapper.BizPersonMapper">
<resultMap type="BizPerson" id="BizPersonResult">
<id property="personId" column="person_id" />
<result property="name" column="name" />
<result property="phone" column="phone" />
<result property="orgId" column="org_id" />
<result property="orgName" column="org_name" />
<result property="orgType" column="org_type" />
<result property="department" column="department" />
<result property="position" column="position" />
<result property="role" column="role" />
<result property="status" column="status" />
<result property="userId" column="user_id" />
<result property="unitType" column="unit_type" />
<result property="accountType" column="account_type" />
<result property="parentUserId" column="parent_user_id" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
</resultMap>
<sql id="selectFields">
select person_id, name, phone, org_id, department, position, role, unit_type, status, del_flag, user_id, create_by, create_time, update_by, update_time
from biz_person
</sql>
<!-- 通用列表: LEFT JOIN biz_org 取公司名/类型, LEFT JOIN sys_user 取账号类型 -->
<sql id="selectFieldsWithAccount">
select p.person_id, p.name, p.phone, p.org_id, o.org_name, o.org_type,
p.department, p.position, p.role, p.unit_type, p.status, p.del_flag, p.user_id,
p.create_by, p.create_time, p.update_by, p.update_time,
u.account_type, u.parent_user_id, u.del_flag as user_del_flag
from biz_person p
left join biz_org o on p.org_id = o.org_id
left join sys_user u on p.user_id = u.user_id
</sql>
<select id="selectByPrimaryKey" resultMap="BizPersonResult" parameterType="String">
<include refid="selectFieldsWithAccount"/>
where p.person_id = #{personId}
</select>
<select id="selectList" resultMap="BizPersonResult" parameterType="BizPerson">
<include refid="selectFieldsWithAccount"/>
<where>
p.del_flag = '0'
<if test="unitType != null and unitType != ''"> and p.unit_type = #{unitType}</if>
<if test="name != null and name != ''"> and p.name = #{name}</if>
<if test="phone != null and phone != ''"> and p.phone = #{phone}</if>
<if test="orgId != null"> and p.org_id = #{orgId}</if>
<if test="orgType != null and orgType != ''"> and o.org_type = #{orgType}</if>
<if test="department != null and department != ''"> and p.department = #{department}</if>
<if test="position != null and position != ''"> and p.position = #{position}</if>
<if test="role != null and role != ''"> and p.role = #{role}</if>
<if test="status != null and status != ''"> and p.status = #{status}</if>
<if test="parentUserId != null"> and u.parent_user_id = #{parentUserId}</if>
</where>
order by p.person_id desc
</select>
<insert id="insert" parameterType="BizPerson">
insert into biz_person
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="personId != null and personId != ''">person_id,</if>
<if test="name != null">name,</if>
<if test="phone != null">phone,</if>
<if test="orgId != null">org_id,</if>
<if test="department != null">department,</if>
<if test="position != null">position,</if>
<if test="role != null">role,</if>
<if test="unitType != null">unit_type,</if>
<if test="status != null">status,</if>
<if test="userId != null">user_id,</if>
<if test="createBy != null and createBy != ''">create_by,</if>
create_time,
<if test="updateBy != null and updateBy != ''">update_by,</if>
update_time,
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="personId != null and personId != ''">#{personId},</if>
<if test="name != null">#{name},</if>
<if test="phone != null">#{phone},</if>
<if test="orgId != null">#{orgId},</if>
<if test="department != null">#{department},</if>
<if test="position != null">#{position},</if>
<if test="role != null">#{role},</if>
<if test="unitType != null">#{unitType},</if>
<if test="status != null">#{status},</if>
<if test="userId != null">#{userId},</if>
<if test="createBy != null and createBy != ''">#{createBy},</if>
sysdate(),
<if test="updateBy != null and updateBy != ''">#{updateBy},</if>
sysdate(),
</trim>
</insert>
<update id="updateByPrimaryKey" parameterType="BizPerson">
update biz_person
<trim prefix="SET" suffixOverrides=",">
<if test="userId != null and userId != ''">user_id = #{userId},</if>
<if test="orgId != null">org_id = #{orgId},</if>
<if test="unitType != null and unitType != ''">unit_type = #{unitType},</if>
<if test="name != null">name = #{name},</if>
<if test="phone != null">phone = #{phone},</if>
<if test="department != null">department = #{department},</if>
<if test="position != null">position = #{position},</if>
<if test="role != null">role = #{role},</if>
<if test="status != null">status = #{status},</if>
<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>
update_time = sysdate(),
</trim>
where person_id = #{personId}
</update>
<!-- 逻辑删除: 设 del_flag='1', 同时联动把关联 sys_user 子账号也逻辑删除 -->
<update id="deleteByPrimaryKey" parameterType="String">
update biz_person set del_flag='1', update_time=sysdate()
where person_id = #{personId} and del_flag='0'
</update>
<update id="deleteByPrimaryKeys" parameterType="String">
update biz_person set del_flag='1', update_time=sysdate()
where del_flag='0' and person_id in
<foreach collection="personIds" item="personId" open="(" separator="," close=")">
#{personId}
</foreach>
</update>
<!-- 联动: 把 personIds 对应的 sys_user 子账号也逻辑删除 -->
<update id="softDeleteSysUserByPersonIds" parameterType="String">
update sys_user u inner join biz_person p on u.user_id = p.user_id
set u.del_flag='1'
where u.del_flag='0' and p.del_flag='1' and p.person_id in
<foreach collection="personIds" item="personId" open="(" separator="," close=")">
#{personId}
</foreach>
</update>
<!-- sponsor 专属: 通过 biz_person.user_id 关联 sys_user, 利用 sys_user.parent_user_id 过滤主账号归属 -->
<!-- INNER JOIN 自然过滤掉 user_id=NULL 的游离 person (不算员工) -->
<select id="selectSponsorList" resultMap="BizPersonResult" parameterType="BizPerson">
<include refid="selectFieldsWithAccount"/>
<where>
p.del_flag = '0'
and u.del_flag = '0'
and p.unit_type = 'sponsor'
and u.parent_user_id = #{params.sponsorOwnerUid}
<if test="name != null and name != ''"> and p.name = #{name}</if>
<if test="phone != null and phone != ''"> and p.phone = #{phone}</if>
<if test="orgId != null"> and p.org_id = #{orgId}</if>
<if test="department != null and department != ''"> and p.department = #{department}</if>
<if test="position != null and position != ''"> and p.position = #{position}</if>
<if test="role != null and role != ''"> and p.role = #{role}</if>
<if test="status != null and status != ''"> and p.status = #{status}</if>
</where>
order by p.person_id desc
</select>
</mapper>