|
@@ -65,52 +65,79 @@ func (this *AssessmentVarietyController) Add() {
|
|
|
br.Msg = "请输入周度波动阈值"
|
|
|
return
|
|
|
}
|
|
|
-
|
|
|
- // 检验重名
|
|
|
+ disabledVariety := new(models.AssessmentVariety)
|
|
|
varietyOb := new(models.AssessmentVariety)
|
|
|
+ mappingOb := new(models.AssessmentResearcherVarietyMapping)
|
|
|
+
|
|
|
+ // 去重校验:编码唯一
|
|
|
{
|
|
|
- cond := fmt.Sprintf(` AND (%s = ? OR %s = ?)`, varietyOb.Cols().VarietyCode, varietyOb.Cols().VarietyName)
|
|
|
+ cond := fmt.Sprintf(` AND %s = ?`, varietyOb.Cols().VarietyCode)
|
|
|
pars := make([]interface{}, 0)
|
|
|
- pars = append(pars, req.VarietyCode, req.VarietyName)
|
|
|
+ pars = append(pars, req.VarietyCode)
|
|
|
exists, e := varietyOb.GetItemByCondition(cond, pars, "")
|
|
|
if e != nil && !utils.IsErrNoRow(e) {
|
|
|
br.Msg = "操作失败"
|
|
|
- br.ErrMsg = fmt.Sprintf("获取考核品种失败, %v", e)
|
|
|
+ br.ErrMsg = fmt.Sprintf("获取品种失败, %v", e)
|
|
|
return
|
|
|
}
|
|
|
+ // PS.由于删除品种需要保留历史填报数据,如果品种被删除(即禁用)那么重新启用即可
|
|
|
if exists != nil && exists.AssessmentVarietyId > 0 {
|
|
|
- if exists.VarietyCode == req.VarietyCode {
|
|
|
+ if exists.Enabled == models.AssessmentVarietyEnabled {
|
|
|
br.Msg = "品种编码已存在,请勿重复添加"
|
|
|
return
|
|
|
}
|
|
|
- if exists.VarietyName == req.VarietyName {
|
|
|
- br.Msg = "品种名称已存在,请勿重复添加"
|
|
|
- return
|
|
|
- }
|
|
|
- return
|
|
|
+ disabledVariety = exists
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- newVariety := new(models.AssessmentVariety)
|
|
|
- newVariety.VarietyCode = req.VarietyCode
|
|
|
- newVariety.VarietyName = req.VarietyName
|
|
|
- newVariety.MonthlyFluctuate = req.MonthlyFluctuate
|
|
|
- newVariety.WeeklyFluctuate = req.WeeklyFluctuate
|
|
|
- newVariety.CreateTime = time.Now().Local()
|
|
|
- newVariety.ModifyTime = time.Now().Local()
|
|
|
- if e := newVariety.Create(); e != nil {
|
|
|
- br.Msg = "操作失败"
|
|
|
- br.ErrMsg = fmt.Sprintf("新增考核品种失败, %v", e)
|
|
|
- return
|
|
|
+ var varietyId int
|
|
|
+ if disabledVariety != nil && disabledVariety.AssessmentVarietyId > 0 {
|
|
|
+ disabledVariety.VarietyName = req.VarietyName
|
|
|
+ disabledVariety.MonthlyFluctuate = req.MonthlyFluctuate
|
|
|
+ disabledVariety.WeeklyFluctuate = req.WeeklyFluctuate
|
|
|
+ disabledVariety.Enabled = models.AssessmentVarietyEnabled
|
|
|
+ disabledVariety.ModifyTime = time.Now().Local()
|
|
|
+ updateCols := []string{varietyOb.Cols().VarietyName, varietyOb.Cols().MonthlyFluctuate, varietyOb.Cols().WeeklyFluctuate, varietyOb.Cols().Enabled, varietyOb.Cols().ModifyTime}
|
|
|
+ if e := disabledVariety.Update(updateCols); e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("重新启用品种失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ varietyId = disabledVariety.AssessmentVarietyId
|
|
|
+
|
|
|
+ // 清除原有关联
|
|
|
+ cond := fmt.Sprintf(`%s = ?`, mappingOb.Cols().VarietyId)
|
|
|
+ pars := make([]interface{}, 0)
|
|
|
+ pars = append(pars, varietyId)
|
|
|
+ if e := mappingOb.RemoveByCondition(cond, pars); e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("清空品种原关联失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ newVariety := new(models.AssessmentVariety)
|
|
|
+ newVariety.VarietyCode = req.VarietyCode
|
|
|
+ newVariety.VarietyName = req.VarietyName
|
|
|
+ newVariety.MonthlyFluctuate = req.MonthlyFluctuate
|
|
|
+ newVariety.WeeklyFluctuate = req.WeeklyFluctuate
|
|
|
+ newVariety.Enabled = models.AssessmentVarietyEnabled
|
|
|
+ newVariety.CreateTime = time.Now().Local()
|
|
|
+ newVariety.ModifyTime = time.Now().Local()
|
|
|
+ if e := newVariety.Create(); e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("新增品种失败, %v", e)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ varietyId = newVariety.AssessmentVarietyId
|
|
|
}
|
|
|
|
|
|
// 关联研究员
|
|
|
mappings := make([]*models.AssessmentResearcherVarietyMapping, 0)
|
|
|
if len(req.AssessmentResearcherIds) > 0 {
|
|
|
researcherOb := new(models.AssessmentResearcher)
|
|
|
- cond := fmt.Sprintf(` AND %s = ? 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, models.AssessmentResearcherEnabled, req.AssessmentResearcherIds)
|
|
|
+ pars = append(pars, req.AssessmentResearcherIds)
|
|
|
researchers, e := researcherOb.GetItemsByCondition(cond, pars, []string{}, "")
|
|
|
if e != nil {
|
|
|
br.Msg = "获取失败"
|
|
@@ -119,14 +146,13 @@ func (this *AssessmentVarietyController) Add() {
|
|
|
}
|
|
|
for _, v := range researchers {
|
|
|
m := new(models.AssessmentResearcherVarietyMapping)
|
|
|
- m.VarietyId = newVariety.AssessmentVarietyId
|
|
|
+ m.VarietyId = varietyId
|
|
|
m.AssessmentResearcherId = v.AssessmentResearcherId
|
|
|
m.AdminId = v.AdminId
|
|
|
mappings = append(mappings, m)
|
|
|
}
|
|
|
}
|
|
|
if len(mappings) > 0 {
|
|
|
- mappingOb := new(models.AssessmentResearcherVarietyMapping)
|
|
|
if e := mappingOb.CreateMulti(mappings); e != nil {
|
|
|
br.Msg = "操作失败"
|
|
|
br.ErrMsg = fmt.Sprintf("批量新增研究员品种关联失败, %v", e)
|
|
@@ -192,6 +218,11 @@ func (this *AssessmentVarietyController) Edit() {
|
|
|
br.ErrMsg = fmt.Sprintf("获取研究员失败, %v", e)
|
|
|
return
|
|
|
}
|
|
|
+ if variety.Enabled == models.AssessmentVarietyDisabled {
|
|
|
+ br.Msg = "品种不存在,请刷新页面"
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
variety.MonthlyFluctuate = req.MonthlyFluctuate
|
|
|
variety.WeeklyFluctuate = req.WeeklyFluctuate
|
|
|
variety.ModifyTime = time.Now().Local()
|
|
@@ -217,9 +248,9 @@ func (this *AssessmentVarietyController) Edit() {
|
|
|
mappings := make([]*models.AssessmentResearcherVarietyMapping, 0)
|
|
|
if len(req.AssessmentResearcherIds) > 0 {
|
|
|
researcherOb := new(models.AssessmentResearcher)
|
|
|
- cond := fmt.Sprintf(` AND %s = ? AND %s IN (?)`, researcherOb.Cols().Enabled, researcherOb.Cols().PrimaryId)
|
|
|
+ cond := fmt.Sprintf(` AND %s IN (?)`, researcherOb.Cols().Enabled, researcherOb.Cols().PrimaryId)
|
|
|
pars := make([]interface{}, 0)
|
|
|
- pars = append(pars, models.AssessmentResearcherEnabled, req.AssessmentResearcherIds)
|
|
|
+ pars = append(pars, req.AssessmentResearcherIds)
|
|
|
researchers, e := researcherOb.GetItemsByCondition(cond, pars, []string{}, "")
|
|
|
if e != nil {
|
|
|
br.Msg = "获取失败"
|
|
@@ -294,25 +325,36 @@ func (this *AssessmentVarietyController) Remove() {
|
|
|
br.ErrMsg = fmt.Sprintf("获取品种失败, %v", e)
|
|
|
return
|
|
|
}
|
|
|
- if e = variety.Remove(); e != nil {
|
|
|
- br.Msg = "操作失败"
|
|
|
- br.ErrMsg = fmt.Sprintf("删除品种失败, %v", e)
|
|
|
+ if variety.Enabled == models.AssessmentVarietyDisabled {
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "操作成功"
|
|
|
return
|
|
|
}
|
|
|
|
|
|
- // 清空关联
|
|
|
- mappingOb := new(models.AssessmentResearcherVarietyMapping)
|
|
|
- {
|
|
|
- cond := fmt.Sprintf(`%s = ?`, mappingOb.Cols().VarietyId)
|
|
|
- pars := make([]interface{}, 0)
|
|
|
- pars = append(pars, variety.AssessmentVarietyId)
|
|
|
- if e = mappingOb.RemoveByCondition(cond, pars); e != nil {
|
|
|
- br.Msg = "操作失败"
|
|
|
- br.ErrMsg = fmt.Sprintf("清空关联失败, %v", e)
|
|
|
- return
|
|
|
- }
|
|
|
+ // 由于要保留历史填报数据,这里实际为禁用操作
|
|
|
+ updateCols := []string{varietyOb.Cols().Enabled, varietyOb.Cols().ModifyTime}
|
|
|
+ variety.Enabled = models.AssessmentVarietyDisabled
|
|
|
+ variety.ModifyTime = time.Now()
|
|
|
+ if e = variety.Update(updateCols); e != nil {
|
|
|
+ br.Msg = "操作失败"
|
|
|
+ br.ErrMsg = fmt.Sprintf("禁用品种失败, %v", e)
|
|
|
+ return
|
|
|
}
|
|
|
|
|
|
+ // 关联也不需要清理
|
|
|
+ //mappingOb := new(models.AssessmentResearcherVarietyMapping)
|
|
|
+ //{
|
|
|
+ // cond := fmt.Sprintf(`%s = ?`, mappingOb.Cols().VarietyId)
|
|
|
+ // pars := make([]interface{}, 0)
|
|
|
+ // pars = append(pars, variety.AssessmentVarietyId)
|
|
|
+ // if e = mappingOb.RemoveByCondition(cond, pars); e != nil {
|
|
|
+ // br.Msg = "操作失败"
|
|
|
+ // br.ErrMsg = fmt.Sprintf("清空关联失败, %v", e)
|
|
|
+ // return
|
|
|
+ // }
|
|
|
+ //}
|
|
|
+
|
|
|
br.Ret = 200
|
|
|
br.Success = true
|
|
|
br.Msg = "操作成功"
|
|
@@ -358,6 +400,10 @@ func (this *AssessmentVarietyController) Detail() {
|
|
|
br.ErrMsg = fmt.Sprintf("获取品种失败, %v", e)
|
|
|
return
|
|
|
}
|
|
|
+ if variety.Enabled == models.AssessmentVarietyDisabled {
|
|
|
+ br.Msg = "品种不存在,请刷新页面"
|
|
|
+ return
|
|
|
+ }
|
|
|
resp := variety.Format2Detail()
|
|
|
|
|
|
// 获取启用研究员
|
|
@@ -453,37 +499,47 @@ func (this *AssessmentVarietyController) PageList() {
|
|
|
}
|
|
|
startSize = utils.StartIndex(params.CurrentIndex, params.PageSize)
|
|
|
|
|
|
- // 列表
|
|
|
+ // 筛选项
|
|
|
varietyOb := new(models.AssessmentVariety)
|
|
|
- cond := ``
|
|
|
- pars := make([]interface{}, 0)
|
|
|
- if params.AssessmentVarietyIds != "" {
|
|
|
- var varietyIds []int
|
|
|
- arr := strings.Split(params.AssessmentVarietyIds, ",")
|
|
|
- for _, v := range arr {
|
|
|
- i, _ := strconv.Atoi(v)
|
|
|
- if i > 0 {
|
|
|
- varietyIds = append(varietyIds, i)
|
|
|
+ condVariety := ``
|
|
|
+ parsVariety := make([]interface{}, 0)
|
|
|
+ {
|
|
|
+ if params.AssessmentVarietyIds != "" {
|
|
|
+ var varietyIds []int
|
|
|
+ arr := strings.Split(params.AssessmentVarietyIds, ",")
|
|
|
+ for _, v := range arr {
|
|
|
+ i, _ := strconv.Atoi(v)
|
|
|
+ if i > 0 {
|
|
|
+ varietyIds = append(varietyIds, i)
|
|
|
+ }
|
|
|
}
|
|
|
+ if len(varietyIds) == 0 {
|
|
|
+ resp.Paging = paging.GetPaging(params.CurrentIndex, params.PageSize, 0)
|
|
|
+ br.Data = resp
|
|
|
+ br.Ret = 200
|
|
|
+ br.Success = true
|
|
|
+ br.Msg = "获取成功"
|
|
|
+ return
|
|
|
+ }
|
|
|
+ condVariety += fmt.Sprintf(" AND %s IN (?)", varietyOb.Cols().PrimaryId)
|
|
|
+ parsVariety = append(parsVariety, varietyIds)
|
|
|
}
|
|
|
- if len(varietyIds) == 0 {
|
|
|
- resp.Paging = paging.GetPaging(params.CurrentIndex, params.PageSize, 0)
|
|
|
- br.Data = resp
|
|
|
- br.Ret = 200
|
|
|
- br.Success = true
|
|
|
- br.Msg = "获取成功"
|
|
|
- return
|
|
|
+
|
|
|
+ // 仅显示启用的
|
|
|
+ if params.OnlyEnabled {
|
|
|
+ condVariety += fmt.Sprintf(` AND %s = ?`, varietyOb.Cols().Enabled)
|
|
|
+ parsVariety = append(parsVariety, models.AssessmentVarietyEnabled)
|
|
|
}
|
|
|
- cond += fmt.Sprintf(" AND %s IN (?)", varietyOb.Cols().PrimaryId)
|
|
|
- pars = append(pars, varietyIds)
|
|
|
}
|
|
|
- total, e := varietyOb.GetCountByCondition(cond, pars)
|
|
|
+
|
|
|
+ // 列表
|
|
|
+ total, e := varietyOb.GetCountByCondition(condVariety, parsVariety)
|
|
|
if e != nil {
|
|
|
br.Msg = "获取失败"
|
|
|
br.ErrMsg = fmt.Sprintf("获取研究员列表总数失败, %v", e)
|
|
|
return
|
|
|
}
|
|
|
- varieties, e := varietyOb.GetPageItemsByCondition(cond, pars, []string{}, "", startSize, params.PageSize)
|
|
|
+ varieties, e := varietyOb.GetPageItemsByCondition(condVariety, parsVariety, []string{}, "", startSize, params.PageSize)
|
|
|
if e != nil {
|
|
|
br.Msg = "获取失败"
|
|
|
br.ErrMsg = fmt.Sprintf("获取研究员失败, %v", e)
|