package controllers
|
|
import (
|
"github.com/gin-gonic/gin"
|
"gorm.io/gorm"
|
"silkserver/constvar"
|
"silkserver/controllers/request"
|
"silkserver/controllers/response"
|
"silkserver/extend/code"
|
"silkserver/extend/util"
|
"silkserver/models"
|
"strconv"
|
)
|
|
type WorkshopManageController struct {
|
}
|
|
// SaveWorkshopManage
|
//
|
// @Tags 系统设置/车间管理
|
// @Summary 保存车间管理
|
// @Produce application/json
|
// @Param Authorization header string true "token"
|
// @Param object body request.AddWorkshopManage true "参数"
|
// @Success 200 {object} util.Response "成功"
|
// @Router /api-jl/v1/system/saveWorkshopManage [post]
|
func (slf WorkshopManageController) SaveWorkshopManage(c *gin.Context) {
|
var param *request.AddWorkshopManage
|
err := c.BindJSON(¶m)
|
if err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
|
return
|
}
|
if param.StartCarNumber > param.EndCarNumber {
|
util.ResponseFormat(c, code.RequestParamError, "结束车号不能小于开始车号")
|
return
|
}
|
|
editIds := make([]uint, len(param.Details))
|
for _, detail := range param.Details {
|
if detail.StartCarNumber > detail.EndCarNumber {
|
util.ResponseFormat(c, code.RequestParamError, "分组结束车号不能小于分组开始车号")
|
return
|
}
|
if detail.EndCarNumber > param.EndCarNumber {
|
util.ResponseFormat(c, code.RequestParamError, "分组结束车号不能大于结束车号")
|
return
|
}
|
if detail.ID > 0 {
|
editIds = append(editIds, detail.ID)
|
}
|
}
|
|
info := models.WorkshopManage{
|
WorkshopNumber: param.WorkshopNumber,
|
WorkshopName: param.WorkshopName,
|
Type: constvar.Workshop,
|
GroupNumber: param.GroupNumber,
|
StartCarNumber: param.StartCarNumber,
|
EndCarNumber: param.EndCarNumber,
|
CarFlag: param.CarFlag,
|
Notes: param.Notes,
|
}
|
|
err = models.WithTransaction(func(tx *gorm.DB) error {
|
if param.ID > 0 {
|
info.ID = param.ID
|
err = models.NewWorkshopManageSearch().Save(&info)
|
if err != nil {
|
return err
|
}
|
oldDetailsList, err := models.NewWorkshopManageSearch().SetType(constvar.Group).SetWorkshopNumber(param.WorkshopNumber).SetGroupNumber(param.GroupNumber).FindNotTotal()
|
if err != nil {
|
return err
|
}
|
|
for _, oldDetails := range oldDetailsList {
|
delFlag := true
|
for _, editId := range editIds {
|
if oldDetails.ID == editId {
|
delFlag = false
|
break
|
}
|
}
|
if delFlag {
|
err = models.NewWorkshopManageSearch().SetId(int(oldDetails.ID)).Delete()
|
if err != nil {
|
return err
|
}
|
}
|
}
|
} else {
|
err = models.NewWorkshopManageSearch().Create(&info)
|
}
|
if err != nil {
|
return err
|
}
|
|
for _, detail := range param.Details {
|
detail.Type = constvar.Group
|
detail.WorkshopNumber = param.WorkshopNumber
|
detail.WorkshopName = param.WorkshopName
|
detail.ParentID = param.WorkshopNumber
|
//detail.GroupNumber = param.Workshop.GroupNumber
|
|
if detail.ID > 0 {
|
err = models.NewWorkshopManageSearch().Save(&detail)
|
} else {
|
err = models.NewWorkshopManageSearch().Create(&detail)
|
}
|
}
|
return nil
|
})
|
if err != nil {
|
util.ResponseFormat(c, code.SaveFail, "保存失败")
|
return
|
}
|
|
util.ResponseFormat(c, code.Success, "保存成功")
|
}
|
|
// GetWorkshopManageList
|
//
|
// @Tags 系统设置/车间管理
|
// @Summary 获取车间管理列表
|
// @Produce application/json
|
// @Param Authorization header string true "token"
|
// @Param object query request.GetPriceStandard true "参数"
|
// @Success 200 {object} util.ResponseList{data=[]response.WorkshopManage} "成功"
|
// @Router /api-jl/v1/system/getWorkshopManageList [post]
|
func (slf WorkshopManageController) GetWorkshopManageList(c *gin.Context) {
|
var param request.GetWorkshopManage
|
err := c.BindJSON(¶m)
|
if err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
|
return
|
}
|
workshopManageSearch := models.NewWorkshopManageSearch()
|
if param.Page > 0 && param.PageSize > 0 {
|
workshopManageSearch.SetPage(param.Page, param.PageSize)
|
}
|
workshopManageSearch.SetType(constvar.Workshop).SetWorkshopName(param.WorkshopName).SetGroupNumber(param.GroupNumber)
|
list, total, err := workshopManageSearch.SetOrder("workshop_number,group_number,start_car_number").Find()
|
if err != nil {
|
util.ResponseFormat(c, code.SelectError, "查询失败")
|
return
|
}
|
workshopNumberArr := make([]string, len(list))
|
for _, workshopManage := range list {
|
workshopNumberArr = append(workshopNumberArr, workshopManage.WorkshopNumber)
|
}
|
|
details, _ := models.NewWorkshopManageSearch().SetType(constvar.Group).SetWorkshopNumberArr(workshopNumberArr).
|
SetOrder("workshop_number,group_number,start_car_number").FindNotTotal()
|
|
var result []*response.WorkshopManage
|
for _, info := range list {
|
var infoTemp response.WorkshopManage
|
infoTemp.ID = info.ID
|
infoTemp.CreatedAt = info.CreatedAt
|
infoTemp.UpdatedAt = info.UpdatedAt
|
infoTemp.WorkshopNumber = info.WorkshopNumber
|
infoTemp.WorkshopName = info.WorkshopName
|
infoTemp.Type = info.Type
|
infoTemp.ParentID = info.ParentID
|
infoTemp.GroupNumber = info.GroupNumber
|
infoTemp.StartCarNumber = info.StartCarNumber
|
infoTemp.EndCarNumber = info.EndCarNumber
|
infoTemp.CarFlag = info.CarFlag
|
infoTemp.Notes = info.Notes
|
var detailList []models.WorkshopManage
|
for _, detail := range details {
|
if info.WorkshopNumber == detail.WorkshopNumber && info.GroupNumber == detail.GroupNumber {
|
detailList = append(detailList, *detail)
|
}
|
}
|
infoTemp.Details = detailList
|
result = append(result, &infoTemp)
|
}
|
util.ResponseFormatList(c, code.Success, result, total)
|
}
|
|
// DeleteWorkshopManage
|
//
|
// @Tags 系统设置/车间管理
|
// @Summary 删除车间管理
|
// @Produce application/json
|
// @Param id path string true "id"
|
// @Success 200 {object} util.Response "成功"
|
// @Router /api-jl/v1/system/deleteWorkshopManage/{id} [delete]
|
func (slf WorkshopManageController) DeleteWorkshopManage(c *gin.Context) {
|
id := c.Param("id")
|
if id == "" {
|
util.ResponseFormat(c, code.RequestParamError, "无效的id")
|
return
|
}
|
atoi, err := strconv.Atoi(id)
|
if err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "数据转换失败")
|
return
|
}
|
|
err = models.WithTransaction(func(tx *gorm.DB) error {
|
first, err := models.NewWorkshopManageSearch().SetId(atoi).First()
|
if err != nil {
|
return err
|
}
|
if first.Type == constvar.Group {
|
err = models.NewWorkshopManageSearch().SetId(atoi).Delete()
|
} else if first.Type == constvar.Workshop {
|
workshopManages, err := models.NewWorkshopManageSearch().SetWorkshopNumber(first.WorkshopNumber).SetGroupNumber(first.GroupNumber).FindNotTotal()
|
if err != nil {
|
return err
|
}
|
for _, detail := range workshopManages {
|
err = models.NewWorkshopManageSearch().SetId(int(detail.ID)).Delete()
|
if err != nil {
|
return err
|
}
|
}
|
}
|
return nil
|
})
|
if err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "删除失败")
|
return
|
}
|
util.ResponseFormat(c, code.Success, "删除成功")
|
}
|
|
// GetCarNumber
|
//
|
// @Tags 系统设置/车间管理
|
// @Summary 获取车辆编号
|
// @Produce application/json
|
// @Param Authorization header string true "token"
|
// @Param object body request.GetWorkshopManageCar true "参数"
|
// @Success 200 {object} util.Response{data=[]int} "成功"
|
// @Router /api-jl/v1/system/getCarNumber [post]
|
func (slf WorkshopManageController) GetCarNumber(c *gin.Context) {
|
var params request.GetWorkshopManageCar
|
err := c.BindJSON(¶ms)
|
if err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
|
return
|
}
|
all, err := models.NewWorkshopManageSearch().
|
SetType(constvar.Group).SetWorkshopNumber(params.WorkshopNumber).SetWorkshopName(params.WorkshopName).SetGroupNumber(params.GroupNumber).
|
SetOrder("workshop_number,group_number,start_car_number").FindNotTotal()
|
if err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "查找失败")
|
return
|
}
|
//carNumbers := make([]int, 0)
|
var (
|
startCarNumber = 0
|
endCarNumber = 0
|
startCarHalf = constvar.LeftHalfCar
|
endCarHalf = constvar.RightHalfCar
|
)
|
for _, manage := range all {
|
if startCarNumber == 0 {
|
startCarNumber = manage.StartCarNumber
|
startCarHalf = manage.StartCarHalf
|
endCarNumber = manage.EndCarNumber
|
endCarHalf = manage.EndCarHalf
|
continue
|
}
|
if manage.StartCarNumber < startCarNumber {
|
startCarNumber = manage.StartCarNumber
|
startCarHalf = manage.StartCarHalf
|
}
|
if manage.EndCarNumber > endCarNumber {
|
endCarNumber = manage.EndCarNumber
|
endCarHalf = manage.EndCarHalf
|
}
|
}
|
m := make(map[string]interface{})
|
m["startCarNumber"] = startCarNumber
|
m["startCarHalf"] = startCarHalf
|
m["endCarNumber"] = endCarNumber
|
m["endCarHalf"] = endCarHalf
|
util.ResponseFormat(c, code.Success, m)
|
}
|
|
// GetWorkshopManageGroup
|
//
|
// @Tags 系统设置/车间管理
|
// @Summary 获取车间组别
|
// @Produce application/json
|
// @Param Authorization header string true "token"
|
// @Param number path string true "number"
|
// @Success 200 {object} util.Response{data=map[int]int} "成功"
|
// @Router /api-jl/v1/system/getWorkshopManageGroup/{number} [get]
|
func (slf WorkshopManageController) GetWorkshopManageGroup(c *gin.Context) {
|
number := c.Param("number")
|
if number == "" {
|
util.ResponseFormat(c, code.RequestParamError, "无效的编码")
|
return
|
}
|
all, err := models.NewWorkshopManageSearch().SetType(constvar.Group).SetWorkshopNumber(number).FindNotTotal()
|
if err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "查找失败")
|
return
|
}
|
groupMap := make(map[int]int)
|
for _, manage := range all {
|
groupMap[manage.GroupNumber] = manage.GroupNumber
|
}
|
util.ResponseFormat(c, code.Success, groupMap)
|
}
|
|
// GetCarAndLevel
|
//
|
// @Tags 系统设置/车间管理
|
// @Summary 获取车辆编号和等级
|
// @Produce application/json
|
// @Param Authorization header string true "token"
|
// @Param object body request.GetWorkshopManageCar true "参数"
|
// @Success 200 {object} util.Response{data=response.CarAndLevel} "成功"
|
// @Router /api-jl/v1/system/getCarAndLevel [post]
|
func (slf WorkshopManageController) GetCarAndLevel(c *gin.Context) {
|
var params request.GetWorkshopManageCar
|
err := c.BindJSON(¶ms)
|
if err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "参数解析失败,数据类型错误")
|
return
|
}
|
workshopManageList, err := models.NewWorkshopManageSearch().
|
SetType(constvar.Group).SetWorkshopNumber(params.WorkshopNumber).SetWorkshopName(params.WorkshopName).SetGroupNumber(params.GroupNumber).
|
FindNotTotal()
|
if err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "车间分组查询失败")
|
return
|
}
|
finenessRegisterList, err := models.NewFinenessRegisterSearch().
|
SetWorkshopNumber(params.WorkshopNumber).SetWorkshopName(params.WorkshopName).SetWorkshopGroup(params.GroupNumber).SetMarket(params.MarketName).
|
First()
|
if err != nil {
|
if err == gorm.ErrRecordNotFound {
|
util.ResponseFormat(c, code.RequestParamError, "当前庄口、车间、组别下,没有纤度登记信息")
|
return
|
}
|
util.ResponseFormat(c, code.RequestParamError, "纤度登记查询失败")
|
return
|
}
|
first, err := models.NewFinenessCheckSearch().SetID(finenessRegisterList.FinenessCheckID).First()
|
if err != nil {
|
util.ResponseFormat(c, code.RequestParamError, "纤度检验查询失败")
|
return
|
}
|
var data response.CarAndLevel
|
data.Level = first.FinenessGrade
|
|
carNum := make([][]int, 0)
|
for _, workshop := range workshopManageList {
|
car := make([]int, 0)
|
i := workshop.StartCarNumber
|
for ; i <= workshop.EndCarNumber; i++ {
|
car = append(car, i)
|
}
|
if len(car) > 0 {
|
carNum = append(carNum, car)
|
}
|
}
|
data.Car = carNum
|
|
util.ResponseFormat(c, code.Success, data)
|
}
|