package controllers import ( "github.com/gin-gonic/gin" "gorm.io/gorm" "silkserver/constvar" "silkserver/controllers/request" "silkserver/extend/code" "silkserver/extend/util" "silkserver/models" "silkserver/pkg/structx" ) type YieldRegisterController struct { } // SaveYieldRegister // // @Tags 生产管理/产量登记表 // @Summary 保存产量登记表 // @Produce application/json // @Param object body request.YieldRegisterInfo true "参数" // @Success 200 {object} util.Response "成功" // @Router /api-jl/v1/fineness/saveYieldRegister [post] func (slf YieldRegisterController) SaveYieldRegister(c *gin.Context) { var params request.YieldRegisterInfo var yield models.YieldRegister err := c.BindJSON(¶ms) if err != nil { util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") return } err = structx.AssignTo(params, &yield) if err != nil { util.ResponseFormat(c, code.RequestParamError, "数据转换失败") return } circles := make([]*models.YieldRegisterCircle, 0) for _, circle := range yield.Circles { for _, circleInfo := range params.Circles { if circle.CarNumber == circleInfo.CarNumber && circle.Circle == circleInfo.Circle { for _, number := range circleInfo.PieceNumbers { data := *circle data.PieceNumber = number.PieceNumber data.Value = number.Value circles = append(circles, &data) } } } } yield.Circles = circles if yield.ID > 0 { //更新 err = models.WithTransaction(func(db *gorm.DB) error { err = models.NewYieldRegisterItemSearch().SetOrm(db).SetYieldRegisterId(yield.ID).Delete() if err != nil { return err } err = models.NewYieldRegisterCircleSearch().SetOrm(db).SetYieldRegisterId(yield.ID).Delete() if err != nil { return err } err = models.NewYieldRegisterSearch().SetOrm(db).Save(&yield) return err }) if err != nil { util.ResponseFormat(c, code.RequestParamError, "保存失败") return } } else { //保存 count, _ := models.NewYieldRegisterSearch().SetNumber(yield.Number).Count() if count > 0 { util.ResponseFormat(c, code.RequestParamError, "编码已存在") return } err = models.NewYieldRegisterSearch().Create(&yield) if err != nil { util.ResponseFormat(c, code.RequestParamError, "保存失败") return } } util.ResponseFormat(c, code.Success, "保存成功") } // GetYieldRegisterList // // @Tags 生产管理/产量登记表 // @Summary 获取产量登记表 // @Produce application/json // @Param object body request.GetYieldRegisterList true "参数" // @Success 200 {object} util.ResponseList{data=[]models.YieldRegister} "成功" // @Router /api-jl/v1/fineness/getYieldRegisterList [post] func (slf YieldRegisterController) GetYieldRegisterList(c *gin.Context) { var params request.GetYieldRegisterList err := c.BindJSON(¶ms) if err != nil { util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") return } list, total, err := models.NewYieldRegisterSearch().SetPage(params.Page, params.PageSize).Find() if err != nil { util.ResponseFormat(c, code.RequestParamError, "查询失败") return } all, err := models.NewDictSearch().SetDictTypes([]constvar.DictType{constvar.DictTypeMarket, constvar.DictTypeWorkshop}).FindAll() if err != nil { util.ResponseFormat(c, code.RequestParamError, "查询失败") return } for _, register := range list { for _, dict := range all { if register.MarketId == dict.ID { register.MarketName = dict.Name } if register.WorkshopNumber == dict.Number { register.WorkshopName = dict.Name } } } util.ResponseFormatList(c, code.Success, list, total) } // GetYieldRegisterInfo // // @Tags 生产管理/产量登记表 // @Summary 获取产量登记表详情 // @Produce application/json // @Param object body request.GetYieldRegisterList true "参数" // @Success 200 {object} util.Response{data=request.YieldRegisterInfo} "成功" // @Router /api-jl/v1/fineness/getYieldRegisterInfo [post] func (slf YieldRegisterController) GetYieldRegisterInfo(c *gin.Context) { var params request.GetYieldRegisterList err := c.BindJSON(¶ms) if err != nil { util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") return } register, err := models.NewYieldRegisterSearch().SetPreload(true).SetNumber(params.Number).First() if err != nil { util.ResponseFormat(c, code.RequestParamError, "查询失败") return } var data request.YieldRegisterInfo err = structx.AssignTo(register, &data) if err != nil { util.ResponseFormat(c, code.RequestParamError, "数据转换失败") return } circleInfos := make([]request.YieldRegisterCircleInfo, 0) flagMap := make(map[int]bool) for _, circle := range data.Circles { //防止重复 num := circle.CarNumber*10000 + circle.Circle*100 if flagMap[num] { continue } ci := circle for _, registerCircle := range register.Circles { if circle.CarNumber == registerCircle.CarNumber && circle.Circle == registerCircle.Circle { var pi request.PieceInfo pi.PieceNumber = registerCircle.PieceNumber pi.Value = registerCircle.Value ci.PieceNumbers = append(ci.PieceNumbers, pi) } } flagMap[num] = true circleInfos = append(circleInfos, ci) } data.Circles = circleInfos util.ResponseFormat(c, code.Success, data) } // DeleteYieldRegister // // @Tags 生产管理/产量登记表 // @Summary 删除产量登记表记录 // @Produce application/json // @Param number path string true "number" // @Success 200 {object} util.Response "成功" // @Router /api-jl/v1/fineness/deleteYieldRegister/{number} [delete] func (slf YieldRegisterController) DeleteYieldRegister(c *gin.Context) { number := c.Param("number") if number == "" { util.ResponseFormat(c, code.RequestParamError, "无效的编码") return } err := models.NewYieldRegisterSearch().SetNumber(number).Delete() if err != nil { util.ResponseFormat(c, code.RequestParamError, "删除失败") return } util.ResponseFormat(c, code.Success, "删除成功") } // ChangeYieldRegister // // @Tags 生产管理/产量登记表 // @Summary 切换产量登记表 // @Produce application/json // @Param object body request.ChangeYieldRegister true "参数" // @Success 200 {object} util.Response{data=models.YieldRegister} "成功" // @Router /api-jl/v1/fineness/changeYieldRegister [post] func (slf YieldRegisterController) ChangeYieldRegister(c *gin.Context) { var params request.ChangeYieldRegister err := c.BindJSON(¶ms) if err != nil { util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误") return } first, err := models.NewYieldRegisterSearch().SetGroupNumber(params.GroupNumber).SetCreateTime(params.CreateTime). SetMarketId(params.MarketId).SetWorkshopNumber(params.WorkshopNumber).SetSpec(params.Spec).SetPreload(true).First() if err != nil { util.ResponseFormat(c, code.RequestParamError, "查询失败") return } util.ResponseFormat(c, code.Success, first) }