Bläddra i källkod

fix: 研究员考核-修复禁用问题

hsun 15 timmar sedan
förälder
incheckning
d9df06abf3

+ 17 - 13
controllers/assessment/assessment_form.go

@@ -45,9 +45,9 @@ func (this *AssessmentFormController) CheckAdd() {
 	var researcherId int
 	{
 		researcherOb := new(models.AssessmentResearcher)
-		cond := fmt.Sprintf(` AND %s = ?`, researcherOb.Cols().AdminId)
+		cond := fmt.Sprintf(` AND %s = ? AND %s = ?`, researcherOb.Cols().AdminId, researcherOb.Cols().Enabled)
 		pars := make([]interface{}, 0)
-		pars = append(pars, sysUser.AdminId)
+		pars = append(pars, sysUser.AdminId, models.AssessmentResearcherEnabled)
 		item, e := researcherOb.GetItemByCondition(cond, pars, "")
 		if e != nil && !utils.IsErrNoRow(e) {
 			br.Msg = "获取失败"
@@ -138,9 +138,9 @@ func (this *AssessmentFormController) WeekBase() {
 	researcher := new(models.AssessmentResearcher)
 	{
 		researcherOb := new(models.AssessmentResearcher)
-		cond := fmt.Sprintf(` AND %s = ?`, researcherOb.Cols().AdminId)
+		cond := fmt.Sprintf(` AND %s = ? AND %s = ?`, researcherOb.Cols().AdminId, researcherOb.Cols().Enabled)
 		pars := make([]interface{}, 0)
-		pars = append(pars, sysUser.AdminId)
+		pars = append(pars, sysUser.AdminId, models.AssessmentResearcherEnabled)
 		item, e := researcherOb.GetItemByCondition(cond, pars, "")
 		if e != nil {
 			if utils.IsErrNoRow(e) {
@@ -225,6 +225,9 @@ func (this *AssessmentFormController) WeekBase() {
 		if variety == nil {
 			continue
 		}
+		if variety.Enabled != models.AssessmentVarietyEnabled {
+			continue
+		}
 		t := new(models.AssessmentFormDetail)
 		t.FormCode = formCode
 		t.ResearcherId = researcher.AssessmentResearcherId
@@ -350,9 +353,9 @@ func (this *AssessmentFormController) PageList() {
 	researcher := new(models.AssessmentResearcher)
 	{
 		researcherOb := new(models.AssessmentResearcher)
-		cond := fmt.Sprintf(` AND %s = ?`, researcherOb.Cols().AdminId)
+		cond := fmt.Sprintf(` AND %s = ? AND %s = ?`, researcherOb.Cols().AdminId, researcherOb.Cols().Enabled)
 		pars := make([]interface{}, 0)
-		pars = append(pars, sysUser.AdminId)
+		pars = append(pars, sysUser.AdminId, models.AssessmentResearcherEnabled)
 		item, e := researcherOb.GetItemByCondition(cond, pars, "")
 		if e != nil && !utils.IsErrNoRow(e) {
 			br.Msg = "获取失败"
@@ -466,7 +469,7 @@ func (this *AssessmentFormController) PageList() {
 		br.ErrMsg = fmt.Sprintf("获取研究员列表总数失败, %v", e)
 		return
 	}
-	orderRule := fmt.Sprintf(`%s ASC, %s DESC`, formOb.Cols().Status, formOb.Cols().SubmitTime) // 排序规则:未提交在最前面,然后按提交时间降序
+	orderRule := fmt.Sprintf(`%s ASC, %s DESC, %s DESC`, formOb.Cols().Status, formOb.Cols().CreateTime, formOb.Cols().SubmitTime) // 排序规则:未提交在最前面,然后按提交时间降序
 	list, e := formOb.GetPageItemsByCondition(condList, parsList, []string{}, orderRule, startSize, params.PageSize)
 	if e != nil {
 		br.Msg = "获取失败"
@@ -976,12 +979,11 @@ func (this *AssessmentFormController) ResultStatistic() {
 		br.Msg = "开始时间格式有误"
 		return
 	}
-	ed, e := time.Parse(utils.FormatDate, params.EndTime)
+	endDate, e := time.Parse(utils.FormatDate, params.EndTime)
 	if e != nil {
 		br.Msg = "结束时间格式有误"
 		return
 	}
-	parEndDate := ed.AddDate(0, 0, 28).Format(utils.FormatDate) // 实际填报单和数据的取值范围为结束日期+4周
 	resp := make([]*models.AssessmentFormResultStatisticItem, 0)
 
 	var researcherIds []int
@@ -998,13 +1000,13 @@ func (this *AssessmentFormController) ResultStatistic() {
 		return
 	}
 
-	// 获取研究员在[开始日期至结束日期+4周]的填报单
+	// 获取研究员在[开始日期至结束日期]的填报单
 	forms := make([]*models.AssessmentForm, 0)
 	{
 		formOb := new(models.AssessmentForm)
 		cond := fmt.Sprintf(` AND %s = ? AND %s IN (?) AND (%s BETWEEN ? AND ?)`, formOb.Cols().Status, formOb.Cols().ResearcherId, formOb.Cols().BaseDate)
 		pars := make([]interface{}, 0)
-		pars = append(pars, models.AssessmentFormStatusSubmitted, researcherIds, params.StartTime, parEndDate)
+		pars = append(pars, models.AssessmentFormStatusSubmitted, researcherIds, params.StartTime, endDate.Format(utils.FormatDate))
 		list, e := formOb.GetItemsByCondition(cond, pars, []string{}, "")
 		if e != nil {
 			br.Msg = "获取失败"
@@ -1034,6 +1036,7 @@ func (this *AssessmentFormController) ResultStatistic() {
 		if existRespKey[k] {
 			continue
 		}
+		existRespKey[k] = true
 		t := new(models.AssessmentFormResultStatisticItem)
 		t.ResearcherId = v.ResearcherId
 		t.ResearcherAdminId = v.ResearcherAdminId
@@ -1044,13 +1047,14 @@ func (this *AssessmentFormController) ResultStatistic() {
 		resp = append(resp, t)
 	}
 
-	// 并查询对应时间的品种数据
+	// 查询[开始日期至结束日期+4周]的品种数据
+	endMonthDate := endDate.AddDate(0, 0, 28).Format(utils.FormatDate)
 	varietyData := make([]*models.AssessmentVarietyData, 0)
 	{
 		dataOb := new(models.AssessmentVarietyData)
 		cond := fmt.Sprintf(` AND %s IN (?) AND (%s BETWEEN ? AND ?)`, dataOb.Cols().VarietyId, dataOb.Cols().WeekDate)
 		pars := make([]interface{}, 0)
-		pars = append(pars, varietyIds, params.StartTime, parEndDate)
+		pars = append(pars, varietyIds, params.StartTime, endMonthDate)
 		list, e := dataOb.GetItemsByCondition(cond, pars, []string{}, "")
 		if e != nil {
 			br.Msg = "获取失败"

+ 4 - 0
controllers/assessment/assessment_researcher.go

@@ -85,6 +85,10 @@ func (this *AssessmentResearcherController) Add() {
 		br.ErrMsg = fmt.Sprintf("获取系统用户失败, %v", e)
 		return
 	}
+	if sysAdmin == nil || sysAdmin.AdminId <= 0 {
+		br.Msg = "该用户不存在,请重新选择"
+		return
+	}
 	if sysAdmin.Enabled != 1 {
 		br.Msg = "该用户被禁用,请重新选择"
 		return

+ 17 - 4
controllers/assessment/assessment_variety.go

@@ -9,6 +9,7 @@ import (
 	"github.com/rdlucklib/rdluck_tools/paging"
 	"github.com/tealeg/xlsx"
 	"os"
+	"path/filepath"
 	"strconv"
 	"strings"
 	"time"
@@ -215,7 +216,7 @@ func (this *AssessmentVarietyController) Edit() {
 			return
 		}
 		br.Msg = "操作失败"
-		br.ErrMsg = fmt.Sprintf("获取研究员失败, %v", e)
+		br.ErrMsg = fmt.Sprintf("获取品种失败, %v", e)
 		return
 	}
 	if variety.Enabled == models.AssessmentVarietyDisabled {
@@ -248,7 +249,7 @@ func (this *AssessmentVarietyController) Edit() {
 	mappings := make([]*models.AssessmentResearcherVarietyMapping, 0)
 	if len(req.AssessmentResearcherIds) > 0 {
 		researcherOb := new(models.AssessmentResearcher)
-		cond := fmt.Sprintf(` AND %s IN (?)`, researcherOb.Cols().Enabled, researcherOb.Cols().PrimaryId)
+		cond := fmt.Sprintf(` AND %s IN (?)`, researcherOb.Cols().PrimaryId)
 		pars := make([]interface{}, 0)
 		pars = append(pars, req.AssessmentResearcherIds)
 		researchers, e := researcherOb.GetItemsByCondition(cond, pars, []string{}, "")
@@ -638,12 +639,21 @@ func (this *AssessmentVarietyController) ImportData() {
 		return
 	}
 
-	file, _, e := this.GetFile("VarietyData")
+	file, header, e := this.GetFile("VarietyData")
 	if e != nil {
 		br.Msg = "导入失败"
 		br.ErrMsg = fmt.Sprintf("获取文件失败, %v", e)
 		return
 	}
+
+	// 文件格式校验
+	ext := strings.ToLower(filepath.Ext(header.Filename))
+	if ext != ".xlsx" && ext != ".xls" {
+		br.Msg = "文件格式有误,请上传Excel文件"
+		_ = file.Close()
+		return
+	}
+
 	path := "./static/assessment_variety_" + time.Now().Format(utils.FormatDateTimeUnSpace) + ".xlsx"
 	defer func() {
 		_ = file.Close()
@@ -672,7 +682,10 @@ func (this *AssessmentVarietyController) ImportData() {
 	varietyDateExist := make(map[string]bool) // [品种-日期]用于校验品种是否和日期一一对应
 	{
 		varietyOb := new(models.AssessmentVariety)
-		list, e := varietyOb.GetItemsByCondition(``, make([]interface{}, 0), []string{}, "")
+		cond := fmt.Sprintf(` AND %s = ?`, varietyOb.Cols().Enabled)
+		pars := make([]interface{}, 0)
+		pars = append(pars, models.AssessmentVarietyEnabled)
+		list, e := varietyOb.GetItemsByCondition(cond, pars, []string{}, "")
 		if e != nil {
 			br.Msg = "导入失败"
 			br.ErrMsg = fmt.Sprintf("获取品种列表失败, %v", e)

+ 1 - 1
services/assessment_form.go

@@ -541,7 +541,7 @@ func SyncAssessmentResearcher(adminId int) (err error) {
 	if researcher == nil || researcher.AssessmentResearcherId <= 0 {
 		return
 	}
-	// 只有研究员状态是启用状态时,才同步系统用状态
+	// 只有研究员状态是启用状态时,才同步系统用状态
 	var updateEnabled bool
 	if researcher.Enabled == models.AssessmentResearcherEnabled {
 		updateEnabled = true