staff_assess_controller.go 11.0 KB
package controllers

import (
	"github.com/linmadan/egglib-go/core/application"
	"github.com/linmadan/egglib-go/web/beego"
	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/command"
	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/query"
	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/application/staff_assess/service"
	"gitlab.fjmaimaimai.com/allied-creation/performance/pkg/port/beego/middlewares"
)

type StaffAssessController struct {
	beego.BaseController
}

// 获取个人的自评反馈历史记录列表
func (c *StaffAssessController) AssessSelfMeList() {
	srv := service.NewStaffAssessServeice()
	paramReq := &query.AssessSelfListQuery{}
	err := c.BindJSON(paramReq)
	if err != nil {
		e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
		c.Response(nil, e)
		return
	}
	userReq := middlewares.GetUser(c.Ctx)
	paramReq.CompanyId = int(userReq.CompanyId)
	data, err := srv.AssessSelfList(paramReq)
	c.Response(data, err)
}

// 更具项目评估的配置,创建员工的评估任务,(调试用)
func (c *StaffAssessController) CreateStaffAssessTask() {
	srv := service.NewStaffAssessServeice()
	paramReq := &command.CreateStaffAssessTask{}
	err := c.BindJSON(paramReq)
	if err != nil {
		e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
		c.Response(nil, e)
		return
	}
	//服务调用,实际由定时任务触发
	data, err := srv.InvokCreateStaffAssessTask(paramReq)
	c.Response(data, err)
}

// 保存我邀请的员工
func (c *StaffAssessController) SaveAssessMeInviteUser() {
	srv := service.NewStaffAssessServeice()
	paramReq := &command.SaveAssessInvite{}
	err := c.BindJSON(paramReq)
	if err != nil {
		e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
		c.Response(nil, e)
		return
	}
	//TODO 获取当前用户信息
	// paramReq.CompanyId = 1
	// paramReq.UserId = 1
	userReq := middlewares.GetUser(c.Ctx)
	paramReq.TargetUserId = int(userReq.UserId)
	data, err := srv.SaveAssessInviteUser(paramReq)
	c.Response(data, err)
}

// 员工邀请的人选择列表
func (c *StaffAssessController) SelectAssessInviteUser() {
	srv := service.NewStaffAssessServeice()
	paramReq := &query.SelectAssessInviteUser{}
	err := c.BindJSON(paramReq)
	if err != nil {
		e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
		c.Response(nil, e)
		return
	}
	userReq := middlewares.GetUser(c.Ctx)
	paramReq.CompanyId = int(userReq.CompanyId)
	paramReq.TargetUserId = int(userReq.UserId)
	data, err := srv.SelectAssessInviteUserV2(paramReq)
	c.Response(data, err)
}

// 获取评估内容详情
func (c *StaffAssessController) GetAssessInfo() {
	srv := service.NewStaffAssessServeice()
	paramReq := &query.AssessInfoQuery{}
	err := c.BindJSON(paramReq)
	if err != nil {
		e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
		c.Response(nil, e)
		return
	}
	// paramReq.CompanyId = 1
	userReq := middlewares.GetUser(c.Ctx)
	paramReq.CompanyId = int(userReq.CompanyId)
	data, err := srv.GetAssessInfo(paramReq)
	c.Response(data, err)
}

// 保存评估内容详情
func (c *StaffAssessController) SaveAssessInfo() {
	srv := service.NewStaffAssessServeice()
	paramReq := &command.SaveAssessInfoCommand{}
	err := c.BindJSON(paramReq)
	if err != nil {
		e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
		c.Response(nil, e)
		return
	}
	userReq := middlewares.GetUser(c.Ctx)
	paramReq.ExecutorId = int(userReq.UserId)
	paramReq.CompanyId = int(userReq.CompanyId)
	data, err := srv.SaveAssessInfo(paramReq)
	c.Response(data, err)
}

// 获取周期列表
func (c *StaffAssessController) ListAssessCycle() {
	srv := service.NewStaffAssessServeice()
	userReq := middlewares.GetUser(c.Ctx)
	data, err := srv.ListAllAssessCycle(int(userReq.CompanyId))
	c.Response(data, err)
}

// 获取周期里的考核日期
func (c *StaffAssessController) ListAssessCycleDay() {
	srv := service.NewStaffAssessServeice()
	paramReq := &query.ListAssessCycleDay{}
	err := c.BindJSON(paramReq)
	if err != nil {
		e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
		c.Response(nil, e)
		return
	}
	userReq := middlewares.GetUser(c.Ctx)
	paramReq.CompanyId = int(userReq.CompanyId)
	data, err := srv.ListAllAssessCycleDay(paramReq)
	c.Response(data, err)
}

// 根据周期里的考核日期,获取员工填写评估内容列表
func (c *StaffAssessController) ListAssessContentCycleDay() {
	srv := service.NewStaffAssessServeice()
	paramReq := &query.ListAssessContentCycleDay{}
	err := c.BindJSON(paramReq)
	if err != nil {
		e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
		c.Response(nil, e)
		return
	}
	userReq := middlewares.GetUser(c.Ctx)
	paramReq.CompanyId = int(userReq.CompanyId)
	paramReq.OperaterId = int(userReq.UserId)
	data, err := srv.ListUserAssessContentCycleDay(paramReq)
	c.Response(data, err)
}

// 根据周期里的考核日期,获取员工填写评估内容列表的评估项
func (c *StaffAssessController) ListAssessContentIndicator() {
	srv := service.NewStaffAssessServeice()
	paramReq := &query.ListAssessContentCycleDay{}
	err := c.BindJSON(paramReq)
	if err != nil {
		e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
		c.Response(nil, e)
		return
	}
	userReq := middlewares.GetUser(c.Ctx)
	paramReq.CompanyId = int(userReq.CompanyId)
	paramReq.OperaterId = int(userReq.UserId)
	data, err := srv.QueryPerformanceIndicator(paramReq)
	c.Response(data, err)
}

// 根据周期里的考核日期,获取员工填写评估内容列表,导出为xlsx文件
func (c *StaffAssessController) ExportAssessContentCycleDay() {
	srv := service.NewStaffAssessServeice()
	paramReq := &query.ExportAssessContentCycleDay{}
	err := c.BindJSON(paramReq)
	if err != nil {
		e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
		c.Response(nil, e)
		return
	}
	userReq := middlewares.GetUser(c.Ctx)
	paramReq.CompanyId = int(userReq.CompanyId)
	paramReq.OperaterId = int(userReq.UserId)
	data, err := srv.ExportUserAssess(paramReq)
	if err != nil {
		c.Response(nil, err)
		return
	}
	c.Ctx.Output.Header("Content-Disposition", "attachment;filename=每日绩效汇总")
	c.Ctx.Output.Header("Content-Description", "FileTransfer")
	c.Ctx.Output.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
	c.Ctx.Output.Header("Content-Transfer-Encoding", "binary")
	c.Ctx.Output.Header("Expires", "0")
	data.Write(c.Ctx.ResponseWriter)
}

// SaveAssessCache 保存评估内容(缓存)
func (c *StaffAssessController) SaveAssessCache() {
	cacheService := service.NewStaffAssessCacheService()
	in := &command.SaveAssessCacheCommand{}
	if err := c.Unmarshal(in); err != nil {
		c.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
	} else {
		c.Response(cacheService.SaveAssessCache(in))
	}
}

// QuerySummary 员工绩效-项目管理-查询总览
func (c *StaffAssessController) QuerySummary() {
	srv := service.NewStaffAssessServeice()
	in := &query.SummaryCommand{}
	if err := c.Unmarshal(in); err != nil {
		c.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
	} else {
		if user := middlewares.GetUser(c.Ctx); user != nil {
			in.CompanyId = int(user.CompanyId)
			in.OperatorId = int(user.UserId)
		}
		c.Response(srv.QuerySummary(in))
	}
}

// QueryMemberSummary 员工绩效-综合管理-成员列表统计
func (c *StaffAssessController) QueryMemberSummary() {
	srv := service.NewStaffAssessServeice()
	in := &query.MemberSummaryListCommand{}
	if err := c.Unmarshal(in); err != nil {
		c.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
	} else {
		if user := middlewares.GetUser(c.Ctx); user != nil {
			in.CompanyId = int(user.CompanyId)
			in.OperatorId = int(user.UserId)
		}
		c.Response(srv.QueryMemberSummary(in))
	}
}

// QueryMemberPerformanceIndicator 员工绩效-综合管理-绩效导出指标
func (c *StaffAssessController) QueryMemberPerformanceIndicator() {
	srv := service.NewStaffAssessServeice()
	in := &query.MemberPerformanceIndicatorCommand{}
	if err := c.Unmarshal(in); err != nil {
		c.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
	} else {
		if user := middlewares.GetUser(c.Ctx); user != nil {
			in.CompanyId = int(user.CompanyId)
			in.OperatorId = int(user.UserId)

		}
		c.Response(srv.QueryMemberPerformanceIndicator(in))
	}
}

// ExportPerformanceIndicator 导出表格-员工绩效-综合管理-绩效导出指标-
func (c *StaffAssessController) ExportPerformanceIndicator() {
	srv := service.NewStaffAssessServeice()
	in := &query.ExportPerformanceIndicatorCommand{}
	if err := c.Unmarshal(in); err != nil {
		c.Response(nil, application.ThrowError(application.ARG_ERROR, err.Error()))
	} else {
		if user := middlewares.GetUser(c.Ctx); user != nil {
			in.CompanyId = int(user.CompanyId)
			in.OperatorId = int(user.UserId)
		}
		f, err := srv.ExportPerformanceIndicator(in)
		if err != nil {
			c.Response(nil, err)
			return
		}
		fileName := "个人绩效指标"
		c.Ctx.Output.Header("Content-Disposition", "attachment;filename="+fileName)
		c.Ctx.Output.Header("Content-Description", "FileTransfer")
		c.Ctx.Output.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
		c.Ctx.Output.Header("Content-Transfer-Encoding", "binary")
		c.Ctx.Output.Header("Expires", "0")
		f.Write(c.Ctx.ResponseWriter)
	}
}

// 员工绩效-项目管理-矩阵分析
func (c *StaffAssessController) AnalysisData() {
	srv := service.NewStaffAssessServeice()
	paramReq := &query.ListAssessContentCycleDay{}
	err := c.BindJSON(paramReq)
	if err != nil {
		e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
		c.Response(nil, e)
		return
	}
	userReq := middlewares.GetUser(c.Ctx)
	paramReq.CompanyId = int(userReq.CompanyId)
	paramReq.OperaterId = int(userReq.UserId)
	data, err := srv.AnalysisData(paramReq)
	c.Response(data, err)
}

// 根据周期里的考核日期,获取员工填写评估内容列表,导出为xlsx文件
func (c *StaffAssessController) ExportUserAssess2() {
	srv := service.NewStaffAssessServeice()
	paramReq := &query.ExportUserAssess2Commad{}
	err := c.BindJSON(paramReq)
	if err != nil {
		e := application.ThrowError(application.ARG_ERROR, "json 解析错误"+err.Error())
		c.Response(nil, e)
		return
	}
	userReq := middlewares.GetUser(c.Ctx)
	paramReq.CompanyId = int(userReq.CompanyId)
	paramReq.OperatorId = int(userReq.UserId)
	data, err := srv.ExportUserAssess2V2(paramReq)
	if err != nil {
		c.Response(nil, err)
		return
	}
	fileName := "个人绩效评估等级统计表"
	c.Ctx.Output.Header("Content-Disposition", "attachment;filename="+fileName)
	c.Ctx.Output.Header("Content-Description", "FileTransfer")
	c.Ctx.Output.Header("Content-Type", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
	c.Ctx.Output.Header("Content-Transfer-Encoding", "binary")
	c.Ctx.Output.Header("Expires", "0")
	data.Write(c.Ctx.ResponseWriter)
}