package xy import ( "encoding/json" "eta/eta_hub/models" "eta/eta_hub/models/system" "eta/eta_hub/models/xy" "eta/eta_hub/utils" "fmt" "strconv" "time" ) // AssessmentFormController 研究员填报 type AssessmentFormController struct { BaseAuthXyController } // Check // @Title 校验用户是否需要填报 // @Description 校验用户是否需要填报 // @Success 200 {object} xy.AssessmentCheckResp // @router /user/check [post] func (c *AssessmentFormController) Check() { br := new(xy.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() var req xy.AssessmentCheckReq if e := json.Unmarshal(c.Ctx.Input.RequestBody, &req); e != nil { br.Msg = "参数有误" br.ErrMsg = fmt.Sprintf("参数解析失败, %v", e) return } var resp xy.AssessmentCheckResp resp.SubmitAuth = true br.Data = resp // 找到系统账户 adminIfo, err := system.GetUserByAdminName(req.Loginid) if err != nil { msg := `获取失败` errMsg := "获取失败,Err:" + err.Error() if utils.IsErrNoRow(err) { msg = `找不到系统账户` errMsg = msg } br.Msg = msg br.ErrMsg = errMsg return } // 根据账号获取是否配置研究员信息 researcherObj := new(models.AssessmentResearcher) cond := fmt.Sprintf(` AND %s = ? AND %s = 1 `, researcherObj.Cols().AdminId, researcherObj.Cols().Enabled) pars := make([]interface{}, 0) pars = append(pars, adminIfo.AdminId) researcherItem, err := researcherObj.GetItemByCondition(cond, pars, "") if err != nil { if !utils.IsErrNoRow(err) { br.Msg = `获取失败` br.ErrMsg = "获取失败,Err:" + err.Error() return } br.ReturnCode = "S" br.Status = "S" br.Msg = "获取成功" return } // 根据研究员ID获取配置的品种数量 varietyMappingObj := new(models.AssessmentResearcherVarietyMapping) cond = fmt.Sprintf(` AND %s = ? `, varietyMappingObj.Cols().AssessmentResearcherId) pars = make([]interface{}, 0) pars = append(pars, researcherItem.AssessmentResearcherId) count, err := varietyMappingObj.GetCountByCondition(cond, pars) if err != nil { br.Msg = `获取失败` br.ErrMsg = "获取失败,Err:" + err.Error() return } if count > 0 { resp.DataAuth = true } br.Data = resp br.ReturnCode = "S" br.Status = "S" br.Msg = "获取成功" } // Detail // @Title 填报单详情 // @Description 填报单详情 // @Success 200 string "获取成功" // @router /forms/detail [post] func (c *AssessmentFormController) Detail() { br := new(xy.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() var req xy.AssessmentFormQueryReq if e := json.Unmarshal(c.Ctx.Input.RequestBody, &req); e != nil { br.Msg = "参数有误" br.ErrMsg = fmt.Sprintf("参数解析失败, %v", e) return } if req.Loginid == "" { br.Msg = "参数有误" return } // 找到系统账户 adminIfo, err := system.GetUserByAdminName(req.Loginid) if err != nil { msg := `获取失败` errMsg := "获取失败,Err:" + err.Error() if utils.IsErrNoRow(err) { msg = `找不到系统账户` errMsg = msg } br.Msg = msg br.ErrMsg = errMsg return } var startTime, endTime time.Time if req.StartTime == "" { br.Msg = "开始日期为空" return } else { startTime, err = time.ParseInLocation(utils.FormatDate, req.StartTime, time.Local) if err != nil { br.Msg = "开始时间异常" br.Msg = "开始时间异常,Err:" + err.Error() return } } if req.EndTime == "" { endTime = time.Now() } startWeekTime, _, _ := utils.GetAssessmentWeekAndFriday(startTime) endWeekTime, _, _ := utils.GetAssessmentWeekAndFriday(endTime) if startWeekTime != endWeekTime { br.Msg = `开始日期和结束日期不在同一周` br.ErrMsg = `开始日期和结束日期不在同一周` return } resp := new(models.AssessmentFormViewResp) // 根据单号获取填报单 formOb := new(models.AssessmentForm) cond := fmt.Sprintf(` AND %s = ? AND %s = ? `, formOb.Cols().ResearcherAdminId, formOb.Cols().WeekTime) pars := make([]interface{}, 0) pars = append(pars, adminIfo.AdminId, startWeekTime) list, e := formOb.GetItemsByCondition(cond, pars, []string{}, "") if e != nil { br.Msg = "获取失败" br.ErrMsg = fmt.Sprintf("获取本周填报单总数失败, %v", e) return } if len(list) > 0 { resp.DataId = list[0].FormCode resp.OutNo = list[0].OutNo resp.Status = list[0].Status resp.OutStatus = list[0].OutStatus } resp.Head = models.AssessmentFormDetail{ ResearcherName: "研究员名称", VarietyCode: "品种编码", VarietyName: "品种名称", WeekTime: "周度", BaseDate: "价格基准日期", MonthlyPriceForecast: "月度涨跌", WeeklyUpForecast: "周度上行风险", WeeklyDownForecast: "周度下行风险", SubmitTime: "提交时间", CreateTime: "创建时间", ModifyTime: "修改时间", } resp.List = make([]*models.AssessmentFormDetail, 0) for _, v := range list { resp.List = append(resp.List, v.Format2Detail()) } br.Data = resp br.ReturnCode = "S" br.Status = "S" //br.Success = true br.Msg = "获取成功" } // UpdateOutStatus // @Title 更新填报单 // @Description 更新填报单 // @Success 200 string "获取成功" // @router /forms/update [post] func (c *AssessmentFormController) UpdateOutStatus() { br := new(xy.BaseResponse).Init() defer func() { c.Data["json"] = br c.ServeJSON() }() br.Data = `` var req xy.UpdateAssessmentFormReq if e := json.Unmarshal(c.Ctx.Input.RequestBody, &req); e != nil { br.Msg = "参数有误" br.ErrMsg = fmt.Sprintf("参数解析失败, %v", e) return } if req.DataId == "" { br.Msg = "数据ID异常" return } if req.ReportId == "" { br.Msg = "周报ID异常" return } if req.Status == "" { br.Msg = "status异常" return } status, err := strconv.Atoi(req.Status) if err != nil { br.Msg = "status异常" br.ErrMsg = "status异常,err:" + err.Error() return } if !utils.IsCheckInList([]int{0, 1}, status) { br.Msg = "status异常" return } // 根据单号获取填报单 formOb := new(models.AssessmentForm) cond := fmt.Sprintf(` AND %s = ?`, formOb.Cols().FormCode) pars := make([]interface{}, 0) pars = append(pars, req.DataId) list, e := formOb.GetItemsByCondition(cond, pars, []string{}, "") if e != nil { br.Msg = "获取失败" br.ErrMsg = fmt.Sprintf("获取本周填报单总数失败, %v", e) return } if len(list) <= 0 { br.Msg = "数据不存在" return } if list[0].Status != 1 { br.Msg = "填报单未提交" return } err = formOb.UpdateOutStatusByFormCode(req.DataId, req.ReportId, status) if err != nil { br.Msg = "更新失败" br.ErrMsg = fmt.Sprintf("更新失败, %v", err) return } br.Data = `` br.ReturnCode = "S" br.Status = "S" //br.Success = true br.Msg = "获取成功" }