|
|
package BaseOrganizationService
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
"dsBaseRpc/Const"
|
|
|
"dsBaseRpc/Const/ErrorConst"
|
|
|
"dsBaseRpc/RpcService/BaseClass/BaseClassDao"
|
|
|
"dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationDao"
|
|
|
"dsBaseRpc/RpcService/BaseOrganization/BaseOrganizationProto"
|
|
|
"dsBaseRpc/RpcService/BaseOrganizationManager/BaseOrganizationManagerDao"
|
|
|
"dsBaseRpc/RpcService/BaseRolePerson/BaseRolePersonDao"
|
|
|
"dsBaseRpc/RpcService/BaseTeacher/BaseTeacherDao"
|
|
|
"dsBaseRpc/RpcService/BaseTeacher/BaseTeacherProto"
|
|
|
GovAreaDao2 "dsBaseRpc/RpcService/GovArea/GovAreaDao"
|
|
|
"dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonDao"
|
|
|
"dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonService"
|
|
|
"dsBaseRpc/Utils/CommonUtil"
|
|
|
"dsBaseRpc/Utils/DateUtil"
|
|
|
"dsBaseRpc/Utils/DbUtil"
|
|
|
"dsBaseRpc/Utils/LogUtil"
|
|
|
"dsBaseRpc/Utils/PinYinUtil"
|
|
|
"dsBaseRpc/Utils/SqlKit"
|
|
|
"dsBaseRpc/models"
|
|
|
"errors"
|
|
|
"fmt"
|
|
|
)
|
|
|
|
|
|
type Rpc struct{} //服务对象
|
|
|
|
|
|
//选择单条
|
|
|
func (s *Rpc) GetBaseOrganization(ctx context.Context, in *BaseOrganizationProto.ModelArg) (*BaseOrganizationProto.Reply, error) {
|
|
|
//异常处理
|
|
|
defer func() {
|
|
|
if err := recover(); err != nil {
|
|
|
fmt.Printf("%s\n", err)
|
|
|
}
|
|
|
}()
|
|
|
//rpc响应
|
|
|
var reply BaseOrganizationProto.Reply
|
|
|
//使用通用方法获取单条记录
|
|
|
list := SqlKit.QueryByIds([]string{in.OrgId}, "t_base_organization")
|
|
|
if len(list) > 0 {
|
|
|
//扩展一下附设班信息
|
|
|
fsbArray, err := BaseOrganizationDao.GetFsb(in.OrgId)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行GetFsb时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
list[0]["fsb"] = fsbArray
|
|
|
}
|
|
|
//将结果序列化
|
|
|
reply.Success = true
|
|
|
reply.Count = 1
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
reply.List = CommonUtil.SerializeToString(list)
|
|
|
return &reply, nil
|
|
|
}
|
|
|
|
|
|
//增加
|
|
|
func (s *Rpc) AddBaseOrganization(ctx context.Context, in *BaseOrganizationProto.ModelArg) (*BaseOrganizationProto.Reply, error) {
|
|
|
//异常处理
|
|
|
defer func() {
|
|
|
if err := recover(); err != nil {
|
|
|
fmt.Printf("%s\n", err)
|
|
|
}
|
|
|
}()
|
|
|
//rpc响应
|
|
|
var reply BaseOrganizationProto.Reply
|
|
|
//是不是部门
|
|
|
isBuMen := false
|
|
|
|
|
|
//1:教育局,2:学校,7:教辅单位,8:大学区,不在1,2,7,8中,应该就是指部门
|
|
|
if in.OrgType == 1 || in.OrgType == 2 || in.OrgType == 7 || in.OrgType == 8 {
|
|
|
//1、检查非空
|
|
|
if len(in.OrgCode) == 0 {
|
|
|
reply.Success = false
|
|
|
reply.Message = "代码为空,不能创建!"
|
|
|
return &reply, nil
|
|
|
}
|
|
|
//2、检查AreaCode是否存在,不存在需要提示
|
|
|
exist, err := GovAreaDao2.ExistAreaCode(in.AreaCode)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行ExistAreaCode时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
if !exist {
|
|
|
reply.Success = false
|
|
|
reply.Message = "区域代码不存在,不能创建!"
|
|
|
return &reply, nil
|
|
|
}
|
|
|
} else {
|
|
|
isBuMen = true
|
|
|
}
|
|
|
|
|
|
//3、指定的org_code是否存在
|
|
|
//如果添加的是单位,那么bureauId是空
|
|
|
//如果添加的是部门,那么bureauId不是空
|
|
|
exist, err := BaseOrganizationDao.IsExistOrgCode(in.OrgCode, in.BureauId, in.OrgType, "")
|
|
|
if err != nil {
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行IsExistOrgCode时发生严重错误:"+err.Error())
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
return &reply, err
|
|
|
}
|
|
|
if exist {
|
|
|
reply.Success = false
|
|
|
if isBuMen {
|
|
|
reply.Message = "部门代码已存在,无法创建!"
|
|
|
} else {
|
|
|
reply.Message = "单位代码已存在,无法创建!"
|
|
|
}
|
|
|
return &reply, err
|
|
|
}
|
|
|
|
|
|
//4、检查机构名称是否存在,否则在导入人员时,不知道向哪个单位下进行导入
|
|
|
exist, err = BaseOrganizationDao.IsExistOrgName(in.OrgName, in.BureauId, in.OrgType, "")
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行IsExistOrgName时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
if exist {
|
|
|
reply.Success = false
|
|
|
if isBuMen {
|
|
|
reply.Message = "部门名称已存在,不能创建!"
|
|
|
} else {
|
|
|
reply.Message = "单位名称已存在,不能创建!"
|
|
|
}
|
|
|
return &reply, err
|
|
|
}
|
|
|
//5、调用dao
|
|
|
areaCode := in.AreaCode
|
|
|
//如果是部门,没有给我区域码,我就取它父亲的区域码,不给areaCode,那么in.BureauId就一定要有啊
|
|
|
if len(areaCode) == 0 {
|
|
|
areaCode, _, _, _, _, err = BaseOrganizationDao.GetBureauAdministrativeDivision(in.BureauId)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = err.Error()
|
|
|
return &reply, err
|
|
|
}
|
|
|
}
|
|
|
model := new(models.TBaseOrganization)
|
|
|
model.OrgId = CommonUtil.GetUUID()
|
|
|
//是市,还是区?
|
|
|
model.ProvinceCode, model.CityCode, model.DistrictCode = BaseOrganizationDao.GetGovAreaInfo(areaCode)
|
|
|
//组织机构类型 1:教育局 2:学校 3:部门 4:院 5:系 6:专业 7:教辅单位,8:大学区
|
|
|
model.OrgType = in.OrgType
|
|
|
switch model.OrgType {
|
|
|
case 1, 2, 7, 8:
|
|
|
model.ParentId = Const.ZeroGuid //默认是一组0的GUID号
|
|
|
model.BureauId = model.OrgId //默认是自己的单位号
|
|
|
break
|
|
|
default:
|
|
|
model.ParentId = in.ParentId
|
|
|
model.BureauId = in.BureauId
|
|
|
break
|
|
|
}
|
|
|
model.OrgCode = in.OrgCode
|
|
|
model.OrgName = in.OrgName
|
|
|
model.AreaCode = in.AreaCode
|
|
|
model.EduAssistType = in.EduAssistType
|
|
|
//主校ID不传默认是一堆0
|
|
|
if in.MainSchoolId == "" {
|
|
|
model.MainSchoolId = model.BureauId
|
|
|
} else {
|
|
|
//否则听传入的
|
|
|
model.MainSchoolId = in.MainSchoolId
|
|
|
}
|
|
|
//没有是否分校标识
|
|
|
if in.IsBranchSchool == 0 {
|
|
|
//指教育局,教辅单位或部门时
|
|
|
model.MainSchoolType = 100
|
|
|
} else if in.IsBranchSchool == -1 { //不是分校,普通学校
|
|
|
model.MainSchoolType = 1
|
|
|
} else {
|
|
|
//分校,
|
|
|
model.MainSchoolType = 3
|
|
|
//设置它的父校ID和修改父校的主分校标识
|
|
|
_, err = BaseOrganizationDao.UpdateMainSchoolTypeById(model.MainSchoolId, 2)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = err.Error()
|
|
|
return &reply, err
|
|
|
}
|
|
|
}
|
|
|
model.Xxbxlxm = in.Xxbxlxm
|
|
|
model.Szdcxlxm = in.Szdcxlxm
|
|
|
model.Xxjbzm = in.Xxjbzm
|
|
|
model.Fzr = in.Fzr
|
|
|
model.Fddbr = in.Fddbr
|
|
|
model.Fddbrdh = in.Fddbrdh
|
|
|
model.Address = in.Address
|
|
|
model.Lxdh = in.Lxdh
|
|
|
model.OrgLng = in.OrgLng
|
|
|
model.OrgLat = in.OrgLat
|
|
|
model.SortId = in.SortId
|
|
|
model.ManagerAreaCode = in.ManagerAreaCode
|
|
|
//如果不传递排序号
|
|
|
if in.SortId == 0 {
|
|
|
model.SortId, err = BaseOrganizationDao.MaxOrgSortId(in.ParentId)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行MaxOrgSortId时发生严重错误:"+err.Error())
|
|
|
return nil, err
|
|
|
}
|
|
|
//如果添加了一个部门,排序号是9999,那么再增加一个,不写排序号,就应该是10000,但前端要求不能大于9999,所以~
|
|
|
if model.SortId > 9999 {
|
|
|
model.SortId = 9999
|
|
|
}
|
|
|
}
|
|
|
model.BUse = 1
|
|
|
|
|
|
_, err = BaseOrganizationDao.AddBaseOrganization(*model)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行AddBaseOrganization时发生严重错误:"+err.Error())
|
|
|
return nil, err
|
|
|
}
|
|
|
//保存附设班信息
|
|
|
BaseOrganizationDao.UpdateFsb(model.BureauId, in.FsbIds)
|
|
|
// *********************************************************************//
|
|
|
// 组织机构类型 1:教育局 2:学校 3:部门 4:院 5:系 6:专业 7:教辅单位,8:大学区
|
|
|
// 如果是学校,教辅单位,大学区的话,需要生成管理员账号
|
|
|
// *********************************************************************//
|
|
|
if CommonUtil.IsContainInt32([]int32{2, 7, 8}, model.OrgType) {
|
|
|
err = UpdateManager(model.OrgId, 1)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行updateManager时发生严重错误:"+err.Error())
|
|
|
return nil, err
|
|
|
}
|
|
|
}
|
|
|
//记录日志
|
|
|
err = BaseOrganizationDao.ActionLog([]models.TBaseOrganization{*model}, Const.ActionInsert, in.ActionPersonId, in.ActionIpAddress)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行ActionLog时发生严重错误:"+err.Error())
|
|
|
return nil, err
|
|
|
}
|
|
|
//是否传递了部门管理员 ,黄海添加于2020-06-04
|
|
|
if len(in.OrgManagerIds) > 0 {
|
|
|
err = BaseOrganizationManagerDao.UpdateOrgManager(model.OrgId, in.OrgManagerIds)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行UpdateOrgManager时发生严重错误:"+err.Error())
|
|
|
return nil, err
|
|
|
}
|
|
|
}
|
|
|
//返回信息
|
|
|
reply.Success = true
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
return &reply, err
|
|
|
}
|
|
|
|
|
|
//删除
|
|
|
func (s *Rpc) DeleteBaseOrganization(ctx context.Context, in *BaseOrganizationProto.DeleteIdsArg) (*BaseOrganizationProto.Reply, error) {
|
|
|
//异常处理
|
|
|
defer func() {
|
|
|
if err := recover(); err != nil {
|
|
|
fmt.Printf("%s\n", err)
|
|
|
}
|
|
|
}()
|
|
|
//rpc响应
|
|
|
var reply BaseOrganizationProto.Reply
|
|
|
|
|
|
//遍历每一个单位+部门进行检查
|
|
|
for i := range in.Ids {
|
|
|
//判断部门下是不是有可用的人员
|
|
|
var inTeacher BaseTeacherProto.QueryArg
|
|
|
inTeacher.Page = 1
|
|
|
inTeacher.Limit = 1
|
|
|
inTeacher.OrgId = in.Ids[i]
|
|
|
inTeacher.Xm = ""
|
|
|
_, count, err := BaseTeacherDao.PageBaseTeacher(&inTeacher)
|
|
|
if err != nil {
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行PageBaseTeacher时发生严重错误:"+err.Error())
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
return &reply, err
|
|
|
}
|
|
|
if count > 0 {
|
|
|
reply.Success = false
|
|
|
//判断是单位还是部门
|
|
|
if BaseOrganizationDao.IsBuMen(inTeacher.OrgId) {
|
|
|
reply.Message = "部门下存在教工数据,无法删除!"
|
|
|
} else {
|
|
|
reply.Message = "单位下存在教工数据,无法删除!"
|
|
|
}
|
|
|
return &reply, err
|
|
|
}
|
|
|
//判断部门下是不是有可用的子部门
|
|
|
_, count, err = BaseOrganizationDao.GetChildOrg(in.Ids[i])
|
|
|
if err != nil {
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行GetChildOrg时发生严重错误:"+err.Error())
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
return &reply, err
|
|
|
}
|
|
|
if count > 0 {
|
|
|
reply.Success = false
|
|
|
//判断是单位还是部门
|
|
|
if BaseOrganizationDao.IsBuMen(inTeacher.OrgId) {
|
|
|
reply.Message = "部门下存在子部门,无法删除!"
|
|
|
} else {
|
|
|
reply.Message = "单位下存在子部门,无法删除!"
|
|
|
}
|
|
|
return &reply, err
|
|
|
}
|
|
|
//判断是不是有可用的班级
|
|
|
exist, err := BaseClassDao.ExistClass(in.Ids[i])
|
|
|
if err != nil {
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行ExistClass时发生严重错误:"+err.Error())
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
return &reply, err
|
|
|
}
|
|
|
if exist {
|
|
|
reply.Success = false
|
|
|
//判断是单位还是部门
|
|
|
if BaseOrganizationDao.IsBuMen(inTeacher.OrgId) {
|
|
|
reply.Message = "部门下存在班级,无法删除!"
|
|
|
} else {
|
|
|
reply.Message = "单位下存在班级,无法删除!"
|
|
|
}
|
|
|
return &reply, err
|
|
|
}
|
|
|
}
|
|
|
//记录日志
|
|
|
ms, err := BaseOrganizationDao.GetByIds(in.Ids)
|
|
|
if err != nil {
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行FindModelsByIds时发生严重错误:"+err.Error())
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
return &reply, err
|
|
|
}
|
|
|
err = BaseOrganizationDao.ActionLog(ms, Const.ActionDelete, in.ActionPersonId, in.ActionIpAddress)
|
|
|
if err != nil {
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行ActionLog时发生严重错误:"+err.Error())
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
return &reply, err
|
|
|
}
|
|
|
//删除部门管理员
|
|
|
err = BaseOrganizationManagerDao.DeleteOrgManagerByOrgIds(in.Ids)
|
|
|
//错误处理
|
|
|
if err != nil {
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行DeleteOrgManagerByOrgIds时发生严重错误:"+err.Error())
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
return &reply, err
|
|
|
}
|
|
|
//调用通用删除命令进行删除
|
|
|
err = SqlKit.DeleteIds("t_base_organization", in.Ids)
|
|
|
//错误处理
|
|
|
if err != nil {
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行DeleteBaseOrganization时发生严重错误:"+err.Error())
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
return &reply, err
|
|
|
}
|
|
|
//对此单位管理员设置为不可用,包括三个内容,t_base_teacher,t_sys_loginperson,t_base_role_person
|
|
|
err = BaseOrganizationDao.DisableBureauManager(in.Ids)
|
|
|
if err != nil {
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行DisableBureauManager时发生严重错误:"+err.Error())
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
return &reply, err
|
|
|
}
|
|
|
reply.Success = true
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
return &reply, err
|
|
|
}
|
|
|
|
|
|
//修改
|
|
|
func (s *Rpc) UpdateBaseOrganization(ctx context.Context, in *BaseOrganizationProto.ModelArg) (*BaseOrganizationProto.Reply, error) {
|
|
|
//异常处理
|
|
|
defer func() {
|
|
|
if err := recover(); err != nil {
|
|
|
fmt.Printf("%s\n", err)
|
|
|
}
|
|
|
}()
|
|
|
//rpc响应
|
|
|
var reply BaseOrganizationProto.Reply
|
|
|
//1、指定的org_code是否存在
|
|
|
list := SqlKit.QueryByIds([]string{in.OrgId}, "t_base_organization")
|
|
|
if list == nil || len(list) == 0 {
|
|
|
reply.Success = false
|
|
|
reply.Message = "输入的OrgId无法找到对应的单位ID!"
|
|
|
return &reply, nil
|
|
|
}
|
|
|
//根据OrgId换取回bureau_id 黄海修改于2020-07-16
|
|
|
bureauId := list[0]["bureau_id"].(string)
|
|
|
exist, err := BaseOrganizationDao.IsExistOrgCode(in.OrgCode, bureauId, in.OrgType, in.OrgId)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = ""
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行IsExistOrgCode时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
|
|
|
if exist {
|
|
|
reply.Success = false
|
|
|
if BaseOrganizationDao.IsBuMen(in.OrgId) {
|
|
|
reply.Message = "部门代码已存在,无法修改!"
|
|
|
} else {
|
|
|
reply.Message = "单位代码已存在,无法修改!"
|
|
|
}
|
|
|
|
|
|
return &reply, err
|
|
|
}
|
|
|
//2、检查机构名称是否存在,否则在导入人员时,不知道向哪个单位下进行导入
|
|
|
exist, err = BaseOrganizationDao.IsExistOrgName(in.OrgName, bureauId, in.OrgType, in.OrgId)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行IsExistOrgName时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
if exist {
|
|
|
reply.Success = false
|
|
|
if BaseOrganizationDao.IsBuMen(in.OrgId) {
|
|
|
reply.Message = "部门名称已存在,无法修改!"
|
|
|
} else {
|
|
|
reply.Message = "单位名称已存在,无法修改!"
|
|
|
}
|
|
|
return &reply, err
|
|
|
}
|
|
|
//3、修改
|
|
|
model := new(models.TBaseOrganization)
|
|
|
model.OrgId = in.OrgId
|
|
|
model.OrgCode = in.OrgCode
|
|
|
model.OrgName = in.OrgName
|
|
|
model.ParentId = in.ParentId
|
|
|
model.BureauId = bureauId
|
|
|
model.OrgType = in.OrgType
|
|
|
model.EduAssistType = in.EduAssistType
|
|
|
model.MainSchoolId = in.MainSchoolId
|
|
|
model.ManagerAreaCode = in.ManagerAreaCode
|
|
|
//如果需要修改AreaCode
|
|
|
if in.AreaCode != "" {
|
|
|
model.AreaCode = in.AreaCode
|
|
|
}
|
|
|
//如果没有是否分校标识时,
|
|
|
if in.IsBranchSchool == 0 {
|
|
|
model.MainSchoolType = 99
|
|
|
} else if in.IsBranchSchool == -1 {
|
|
|
//普通学校
|
|
|
model.MainSchoolType = 1
|
|
|
//查看它有没有父校?
|
|
|
mainSchoolId := list[0]["main_school_id"]
|
|
|
if mainSchoolId != "" {
|
|
|
//如果有父校,父校ID是不是还有其它孩子
|
|
|
count, err := BaseOrganizationDao.GetChildSchoolCount(mainSchoolId.(string))
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行GetChildSchoolCount时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
if count == 1 {
|
|
|
//都没有,需要修改父校ID为普通校
|
|
|
_, err = BaseOrganizationDao.UpdateMainSchoolTypeById(list[0]["main_school_id"].(string), 1)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = err.Error()
|
|
|
return &reply, err
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
} else if in.IsBranchSchool == 1 { //分校
|
|
|
//分校
|
|
|
model.MainSchoolType = 3
|
|
|
//设置它的父校ID和修改父校的主分校标识
|
|
|
_, err = BaseOrganizationDao.UpdateMainSchoolTypeById(model.MainSchoolId, 2)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行UpdateMainSchoolTypeById时发生严重错误:"+err.Error())
|
|
|
return nil, err
|
|
|
}
|
|
|
}
|
|
|
model.Xxbxlxm = in.Xxbxlxm
|
|
|
model.Szdcxlxm = in.Szdcxlxm
|
|
|
model.Xxjbzm = in.Xxjbzm
|
|
|
model.Fzr = in.Fzr
|
|
|
model.Fddbr = in.Fddbr
|
|
|
model.Fddbrdh = in.Fddbrdh
|
|
|
model.Address = in.Address
|
|
|
model.Lxdh = in.Lxdh
|
|
|
model.OrgLng = in.OrgLng
|
|
|
model.OrgLat = in.OrgLat
|
|
|
model.SortId = in.SortId
|
|
|
model.BUse = in.BUse
|
|
|
_, err = BaseOrganizationDao.UpdateBaseOrganization(*model, in.ForceUpdateFields)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行UpdateBaseOrganization时发生严重错误:"+err.Error())
|
|
|
return nil, err
|
|
|
}
|
|
|
//保存附设班信息
|
|
|
BaseOrganizationDao.UpdateFsb(model.BureauId, in.FsbIds)
|
|
|
|
|
|
//是否传递了部门管理员 ,黄海添加于2020-06-04
|
|
|
if len(in.OrgManagerIds) > 0 && len(in.OrgManagerIds[0]) > 0 {
|
|
|
err = BaseOrganizationManagerDao.UpdateOrgManager(model.OrgId, in.OrgManagerIds)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行UpdateOrgManager时发生严重错误:"+err.Error())
|
|
|
return nil, err
|
|
|
}
|
|
|
} else {
|
|
|
//删除部门领导
|
|
|
BaseOrganizationManagerDao.DeleteOrgManagerByOrgIds([]string{in.OrgId})
|
|
|
}
|
|
|
//记录日志
|
|
|
ms, err := BaseOrganizationDao.GetByIds([]string{in.OrgId})
|
|
|
if err != nil {
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行FindModelsByIds时发生严重错误:"+err.Error())
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
return &reply, err
|
|
|
}
|
|
|
err = BaseOrganizationDao.ActionLog(ms, Const.ActionUpdate, in.ActionPersonId, in.ActionIpAddress)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlUpdateError, "执行ActionLog时发生严重错误:"+err.Error())
|
|
|
return nil, err
|
|
|
}
|
|
|
reply.Success = true
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
return &reply, nil
|
|
|
}
|
|
|
|
|
|
//分页查询显示
|
|
|
func (s *Rpc) PageBaseOrganization(ctx context.Context, in *BaseOrganizationProto.QueryArg) (*BaseOrganizationProto.Reply, error) {
|
|
|
//异常处理
|
|
|
defer func() {
|
|
|
if err := recover(); err != nil {
|
|
|
fmt.Printf("%s\n", err)
|
|
|
}
|
|
|
}()
|
|
|
//rpc响应
|
|
|
var reply BaseOrganizationProto.Reply
|
|
|
//检查传入的area_code是否存在
|
|
|
exist, err := GovAreaDao2.ExistAreaCode(in.AreaCode)
|
|
|
//错误处理
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行ExistAreaCode时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
if !exist {
|
|
|
reply.Success = false
|
|
|
reply.Message = "传入的区域代码不存在!"
|
|
|
return &reply, nil
|
|
|
}
|
|
|
list, count, err := BaseOrganizationDao.PageBaseOrganization(in)
|
|
|
//错误处理
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行PageBaseOrganization时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
if list != nil {
|
|
|
reply.Count = count
|
|
|
reply.Success = true
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
reply.List = CommonUtil.SerializeToString(list)
|
|
|
return &reply, nil
|
|
|
} else {
|
|
|
reply.Count = 0
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseBlankResult
|
|
|
reply.List = Const.BlankArrayString
|
|
|
return &reply, nil
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//一次查询多个
|
|
|
func (s *Rpc) GetMultipleBaseOrganization(ctx context.Context, in *BaseOrganizationProto.MultipleQueryArg) (*BaseOrganizationProto.Reply, error) {
|
|
|
//异常处理
|
|
|
defer func() {
|
|
|
if err := recover(); err != nil {
|
|
|
fmt.Printf("%s\n", err)
|
|
|
}
|
|
|
}()
|
|
|
//rpc响应
|
|
|
var reply BaseOrganizationProto.Reply
|
|
|
|
|
|
list, count, err := BaseOrganizationDao.GetMultipleBaseOrganization(in.Ids)
|
|
|
//错误处理
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行GetMultipleBaseOrganization时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
if list != nil {
|
|
|
reply.Count = count
|
|
|
reply.Success = true
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
reply.List = CommonUtil.SerializeToString(list)
|
|
|
return &reply, nil
|
|
|
} else {
|
|
|
reply.Count = 0
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseBlankResult
|
|
|
reply.List = Const.BlankArrayString
|
|
|
return &reply, nil
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//通过单位ID,获取单位及单位下所有的部门信息,组装成结构体返回,用于构建树
|
|
|
func (s *Rpc) GetBureauOrgTree(ctx context.Context, in *BaseOrganizationProto.ModelArg) (*BaseOrganizationProto.Reply, error) {
|
|
|
//异常处理
|
|
|
defer func() {
|
|
|
if err := recover(); err != nil {
|
|
|
fmt.Printf("%s\n", err)
|
|
|
}
|
|
|
}()
|
|
|
//rpc响应
|
|
|
var reply BaseOrganizationProto.Reply
|
|
|
//调用Dao层方法获取数据
|
|
|
list, count, err := BaseOrganizationDao.GetBureauOrgTree(in.BureauId)
|
|
|
//错误处理
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行GetBureauOrgTree时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
if list != nil {
|
|
|
//返回结果
|
|
|
reply.Count = count
|
|
|
reply.Success = true
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
reply.List = CommonUtil.SerializeToString(list)
|
|
|
return &reply, nil
|
|
|
} else {
|
|
|
//返回结果
|
|
|
reply.Count = 0
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseBlankResult
|
|
|
reply.List = Const.BlankArrayString
|
|
|
return &reply, nil
|
|
|
}
|
|
|
}
|
|
|
|
|
|
//根据一个或多个部门ID获取部门领导
|
|
|
func (s *Rpc) GetOrgManager(ctx context.Context, in *BaseOrganizationProto.MultipleQueryArg) (*BaseOrganizationProto.Reply, error) {
|
|
|
//异常处理
|
|
|
defer func() {
|
|
|
if err := recover(); err != nil {
|
|
|
fmt.Printf("%s\n", err)
|
|
|
}
|
|
|
}()
|
|
|
//rpc响应
|
|
|
var reply BaseOrganizationProto.Reply
|
|
|
//调用Dao层方法获取数据
|
|
|
list, count, err := BaseOrganizationDao.GetOrgManager(in.Ids)
|
|
|
//错误处理
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行GetOrgManager时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
if list != nil {
|
|
|
//返回结果
|
|
|
reply.Count = count
|
|
|
reply.Success = true
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
reply.List = CommonUtil.SerializeToString(list)
|
|
|
return &reply, nil
|
|
|
} else {
|
|
|
//返回结果
|
|
|
reply.Count = 0
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
reply.List = Const.BlankArrayString
|
|
|
return &reply, nil
|
|
|
}
|
|
|
}
|
|
|
|
|
|
/***************************************************************************************************/
|
|
|
/**
|
|
|
功能:维护教育局、单位、学校管理员
|
|
|
作者:黄海
|
|
|
时间:2020-05-30
|
|
|
*/
|
|
|
func UpdateManager(bureauId string, bUse int32) error {
|
|
|
//使用通用方法获取单条记录
|
|
|
list := SqlKit.QueryByIds([]string{bureauId}, "t_base_organization")
|
|
|
if list == nil || len(list) == 0 {
|
|
|
return errors.New("无法找到指定的单位ID")
|
|
|
}
|
|
|
bureauName := list[0]["org_name"].(string)
|
|
|
orgType := int32(list[0]["org_type"].(float64))
|
|
|
//组织机构类型 1:教育局 2:学校 3:部门 4:院 5:系 6:专业 7:教辅单位,8:大学区
|
|
|
//1、维护t_base_teacher
|
|
|
//检查这个单位的管理员,是不是已经创建,如果不存在则创建,如果存在, 修改可用状态为1
|
|
|
exist, personId := BaseRolePersonDao.VirtualManagerExist(bureauId)
|
|
|
//如果不存在
|
|
|
if !exist {
|
|
|
//(1)插入基本人员信息
|
|
|
model := new(models.TBaseTeacher)
|
|
|
personId = CommonUtil.GetUUID()
|
|
|
model.PersonId = personId
|
|
|
model.IdentityId = 1
|
|
|
model.Xm = bureauName + "管理员"
|
|
|
model.Xmpy = PinYinUtil.PinYin("管理员")
|
|
|
model.Cym = model.Xm
|
|
|
model.Xbm = "男"
|
|
|
model.Csrq = DateUtil.ConvertDate("1977-10-11")
|
|
|
model.Mzm = "1"
|
|
|
model.Zzmmm = "13"
|
|
|
model.Sfzjlxm = "4"
|
|
|
model.Sfzjh = "220223197805221125"
|
|
|
model.Xlm = "90"
|
|
|
model.Xwm = "0"
|
|
|
model.Zcm = "5"
|
|
|
model.Bzlbm = "9"
|
|
|
model.Cjny = DateUtil.ConvertDate("1999-09-01")
|
|
|
model.StageId = "Z"
|
|
|
model.SubjectId = "99"
|
|
|
model.Gwzym = "80"
|
|
|
model.Lxdh = "18888888888"
|
|
|
model.Dzxx = "xx@dsideal.com"
|
|
|
model.BUse = 1
|
|
|
var db = DbUtil.Engine
|
|
|
var session = db.NewSession()
|
|
|
_, err := BaseTeacherDao.AddBaseTeacher(session, *model)
|
|
|
if err != nil {
|
|
|
session.Rollback()
|
|
|
return err
|
|
|
}
|
|
|
//生成人员的组织机构数据
|
|
|
_, _, _, err = BaseTeacherDao.AddTeacherOrgInfo(session, []string{personId}, bureauId, 1, 1)
|
|
|
if err != nil {
|
|
|
session.Rollback()
|
|
|
return err
|
|
|
}
|
|
|
//(2)生成登录名和密码
|
|
|
accountArray := SysLoginpersonService.GenerateLoginAccount(1, 1)
|
|
|
modelLoginPerson := new(models.TSysLoginperson)
|
|
|
modelLoginPerson.Id = CommonUtil.GetUUID()
|
|
|
modelLoginPerson.LoginName = accountArray[0].LoginName
|
|
|
modelLoginPerson.Pwd = accountArray[0].Pwd
|
|
|
modelLoginPerson.OriginalPwd = accountArray[0].OriginalPwd
|
|
|
modelLoginPerson.IdentityId = 1
|
|
|
modelLoginPerson.PersonId = personId
|
|
|
modelLoginPerson.PersonName = model.Xm
|
|
|
modelLoginPerson.BUse = 1
|
|
|
_, err = SysLoginpersonDao.AddSysLoginPerson(session, *modelLoginPerson)
|
|
|
if err != nil {
|
|
|
session.Rollback()
|
|
|
return err
|
|
|
}
|
|
|
session.Commit()
|
|
|
|
|
|
//(3)、t_base_role
|
|
|
modelBaseRolePerson := new(models.TBaseRolePerson)
|
|
|
modelBaseRolePerson.Id = CommonUtil.GetUUID()
|
|
|
var RoleId string
|
|
|
if orgType == 2 {
|
|
|
//学校
|
|
|
RoleId = Const.SchoolManager
|
|
|
} else {
|
|
|
RoleId = Const.EduOrgManager
|
|
|
}
|
|
|
modelBaseRolePerson.RoleId = RoleId
|
|
|
modelBaseRolePerson.IdentityId = 1
|
|
|
modelBaseRolePerson.PersonId = model.PersonId
|
|
|
modelBaseRolePerson.RuleId = bureauId //具体管辖是哪个省、市、区或大学区ID,单位ID
|
|
|
modelBaseRolePerson.BUse = 1
|
|
|
_, err = BaseRolePersonDao.AddBaseRolePerson(*modelBaseRolePerson)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
} else {
|
|
|
//存在,则需要修改bUse
|
|
|
_, err := BaseRolePersonDao.UpdateManagerStatus(bureauId, bUse)
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
}
|
|
|
return nil
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:启用教育局
|
|
|
作者:黄海
|
|
|
时间:2020-06-08
|
|
|
*/
|
|
|
func (s *Rpc) SetEnableEdu(ctx context.Context, in *BaseOrganizationProto.MultipleQueryArg) (*BaseOrganizationProto.Reply, error) {
|
|
|
//异常处理
|
|
|
defer func() {
|
|
|
if err := recover(); err != nil {
|
|
|
fmt.Printf("%s\n", err)
|
|
|
}
|
|
|
}()
|
|
|
//rpc响应
|
|
|
var reply BaseOrganizationProto.Reply
|
|
|
//设置为启用状态
|
|
|
err := BaseOrganizationDao.SetEduStatus(in.Ids, 1)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行SetEnableEdu时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
//返回结果
|
|
|
reply.Count = int32(len(in.Ids))
|
|
|
reply.Success = true
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
return &reply, nil
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
功能:禁用教育局
|
|
|
作者:黄海
|
|
|
时间:2020-06-08
|
|
|
*/
|
|
|
func (s *Rpc) SetDisableEdu(ctx context.Context, in *BaseOrganizationProto.MultipleQueryArg) (*BaseOrganizationProto.Reply, error) {
|
|
|
//异常处理
|
|
|
defer func() {
|
|
|
if err := recover(); err != nil {
|
|
|
fmt.Printf("%s\n", err)
|
|
|
}
|
|
|
}()
|
|
|
//rpc响应
|
|
|
var reply BaseOrganizationProto.Reply
|
|
|
//设置为禁用状态
|
|
|
err := BaseOrganizationDao.SetEduStatus(in.Ids, -1)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行SetDisableEdu时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
//返回结果
|
|
|
reply.Count = int32(len(in.Ids))
|
|
|
reply.Success = true
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
return &reply, nil
|
|
|
}
|
|
|
|
|
|
//根据单位名称的关键字和管理员的人员ID查询单位列表
|
|
|
func (s *Rpc) ListOrgInfoByOrgKeyWord(ctx context.Context, in *BaseOrganizationProto.ListOrgArg) (*BaseOrganizationProto.Reply, error) {
|
|
|
//异常处理
|
|
|
defer func() {
|
|
|
if err := recover(); err != nil {
|
|
|
fmt.Printf("%s\n", err)
|
|
|
}
|
|
|
}()
|
|
|
//rpc响应
|
|
|
var reply BaseOrganizationProto.Reply
|
|
|
//获取关键字单位
|
|
|
list, err := BaseOrganizationDao.ListOrgInfoByOrgKeyWord(in.PersonId, in.OrgKeyWord)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行ListOrgInfoByOrgKeyWord时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
//返回结果
|
|
|
reply.Count = int32(len(list))
|
|
|
reply.Success = true
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
reply.List = CommonUtil.SerializeToString(list)
|
|
|
return &reply, nil
|
|
|
}
|
|
|
|
|
|
//根据市的行政区划码获取教育局列表
|
|
|
func (s *Rpc) ListEduByCityCode(ctx context.Context, in *BaseOrganizationProto.CityCodeArg) (*BaseOrganizationProto.Reply, error) {
|
|
|
//异常处理
|
|
|
defer func() {
|
|
|
if err := recover(); err != nil {
|
|
|
fmt.Printf("%s\n", err)
|
|
|
}
|
|
|
}()
|
|
|
//rpc响应
|
|
|
var reply BaseOrganizationProto.Reply
|
|
|
//获取关键字单位
|
|
|
list, err := BaseOrganizationDao.ListEduByCityCode(in.CityCode)
|
|
|
if err != nil {
|
|
|
reply.Success = false
|
|
|
reply.Message = Const.DataBaseActionError
|
|
|
LogUtil.Error(ErrorConst.SqlQueryError, "执行ListEduByCityCode时发生严重错误:"+err.Error())
|
|
|
return &reply, err
|
|
|
}
|
|
|
//返回结果
|
|
|
reply.Count = int32(len(list))
|
|
|
reply.Success = true
|
|
|
reply.Message = Const.SuccessDataBaseAction
|
|
|
return &reply, nil
|
|
|
}
|