erp_server/app/admin/apis/dispatchmanage/dispatch.go
2023-09-16 11:11:36 +08:00

332 lines
10 KiB
Go

package dispatchmanage
import (
"errors"
"github.com/codinl/go-logger"
"github.com/gin-gonic/gin"
model "go-admin/app/admin/models"
orm "go-admin/common/global"
"go-admin/tools/app"
"net/http"
"time"
)
func ErpDispatchTaskCreate(c *gin.Context) {
req := struct {
Sn string `json:"sn"`
FromStoreId uint32 `json:"from_store_id"`
ToStoreId uint32 `json:"to_store_id"`
MakerId uint32 `json:"maker_id"`
}{}
if err := c.ShouldBindJSON(&req); err != nil {
logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
fromStore, err := model.GetStore(req.FromStoreId)
if err != nil {
logger.Error("from store err:", err)
app.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
toStore, err := model.GetStore(req.ToStoreId)
if err != nil {
logger.Error("to store err:", err)
app.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
userInfo, err := model.GetUserInfo(req.MakerId)
if err != nil {
logger.Error("user info err:", err)
app.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
dispatchTask := &model.ErpDispatchTask{
Sn: model.NewErpDispatchTaskSn(),
FromStoreId: fromStore.ID,
FromStoreName: fromStore.Name,
ToStoreId: toStore.ID,
ToStoreName: toStore.Name,
MakerId: userInfo.Uid,
MakerName: userInfo.ShopAssistantName,
MakerTime: time.Now(),
AuditorId: 0,
AuditorName: "",
AuditorTime: time.Time{},
State: 1,
}
err = orm.Eloquent.Create(dispatchTask).Error
if err != nil {
logger.Error("create commodity err:", err)
app.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
app.OK(c, dispatchTask, "")
return
}
func ErpDispatchTaskList(c *gin.Context) {
req := &model.DispatchTaskListReq{}
if err := c.ShouldBindJSON(&req); err != nil {
logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
resp, err := req.List()
if err != nil {
logger.Error("erp dispatch task list err:", err)
app.Error(c, http.StatusInternalServerError, err, "获取失败")
return
}
app.OK(c, resp, "")
return
}
func ErpDispatchTaskDetail(c *gin.Context) {
req := struct {
ErpDispatchTaskId uint32 `json:"erp_dispatch_task_id"`
}{}
if err := c.ShouldBindJSON(&req); err != nil {
logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
var dispatchTask model.ErpDispatchTask
qs := orm.Eloquent.Table("erp_dispatch_task")
if req.ErpDispatchTaskId != 0 {
qs = qs.Where("id=?", req.ErpDispatchTaskId)
}
err := qs.Find(&dispatchTask).Error
if err != nil {
logger.Error("erp commodity err:", err)
app.Error(c, http.StatusInternalServerError, err, "获取失败")
return
}
var erpDispatchTaskCommodities []model.ErpDispatchTaskCommodity
err = orm.Eloquent.Table("erp_dispatch_task_commodity").Where("dispatch_task_id=?", dispatchTask.ID).Find(&erpDispatchTaskCommodities).Error
if err != nil {
logger.Error("erp dispatch task commodities err:", err)
app.Error(c, http.StatusInternalServerError, err, "获取失败")
return
}
dispatchTask.TaskCommodities = erpDispatchTaskCommodities
app.OK(c, dispatchTask, "")
return
}
func ErpDispatchTaskDel(c *gin.Context) {
req := struct {
ErpDispatchTaskId uint32 `json:"erp_dispatch_task_id"`
}{}
if err := c.ShouldBindJSON(&req); err != nil {
logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
err := orm.Eloquent.Table("erp_dispatch_task").Where("id=?", req.ErpDispatchTaskId).Delete(&model.ErpDispatchTask{}).Error
if err != nil {
logger.Error("erp commodity err:", err)
app.Error(c, http.StatusInternalServerError, err, "获取失败")
return
}
app.OK(c, nil, "删除成功")
return
}
func ErpDispatchTaskEdit(c *gin.Context) {
req := struct {
Id uint32 `json:"id" binding:"required"`
Sn string `json:"sn"`
FromStoreId uint32 `json:"from_store_id"`
ToStoreId uint32 `json:"to_store_id"`
MakerId uint32 `json:"maker_id"`
TaskCommodities []model.ErpDispatchTaskCommodity `json:"task_commodities"`
}{}
if err := c.ShouldBindJSON(&req); err != nil {
logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
var dispatchTaskOrigin model.ErpDispatchTask
err := orm.Eloquent.Table("erp_dispatch_task").Where("id=?", req.Id).Find(&dispatchTaskOrigin).Error
if err != nil {
logger.Error("erp commodity err:", err)
app.Error(c, http.StatusInternalServerError, err, "编辑失败")
return
}
dispatchTask := &model.ErpDispatchTask{
Sn: dispatchTaskOrigin.Sn,
FromStoreId: req.FromStoreId,
FromStoreName: dispatchTaskOrigin.FromStoreName,
ToStoreId: req.ToStoreId,
ToStoreName: dispatchTaskOrigin.ToStoreName,
MakerId: req.MakerId,
MakerName: dispatchTaskOrigin.MakerName,
MakerTime: dispatchTaskOrigin.MakerTime,
AuditorId: dispatchTaskOrigin.AuditorId,
AuditorName: dispatchTaskOrigin.AuditorName,
AuditorTime: dispatchTaskOrigin.AuditorTime,
State: dispatchTaskOrigin.State,
}
dispatchTask.ID = req.Id
if req.FromStoreId != dispatchTaskOrigin.FromStoreId {
fromStore, err := model.GetStore(req.FromStoreId)
if err != nil {
logger.Error("from store err:", err)
app.Error(c, http.StatusInternalServerError, err, "编辑失败")
return
}
dispatchTask.FromStoreName = fromStore.Name
}
if req.ToStoreId != dispatchTaskOrigin.ToStoreId {
toStore, err := model.GetStore(req.ToStoreId)
if err != nil {
logger.Error("to store err:", err)
app.Error(c, http.StatusInternalServerError, err, "编辑失败")
return
}
dispatchTask.ToStoreName = toStore.Name
}
if req.MakerId != dispatchTaskOrigin.MakerId {
userInfo, err := model.GetUserInfo(req.MakerId)
if err != nil {
logger.Error("user info err:", err)
app.Error(c, http.StatusInternalServerError, err, "编辑失败")
return
}
dispatchTask.MakerName = userInfo.ShopAssistantName
}
begin := orm.Eloquent.Begin()
err = begin.Table("erp_dispatch_task_commodity").Where("dispatch_task_id=?", dispatchTask.ID).
Delete(&model.ErpDispatchTaskCommodity{}).Error
if err != nil {
begin.Rollback()
logger.Error("erp dispatch task commodity del err:", err)
app.Error(c, http.StatusInternalServerError, err, "编辑失败")
}
err = begin.Save(dispatchTask).Error
if err != nil {
begin.Rollback()
logger.Error("erp dispatch task commodity save err:", err)
app.Error(c, http.StatusInternalServerError, err, "编辑失败")
}
err = begin.Create(&req.TaskCommodities).Error
if err != nil {
begin.Rollback()
logger.Error("create task commodities err:", err)
app.Error(c, http.StatusInternalServerError, err, "编辑失败")
}
err = begin.Commit().Error
if err != nil {
begin.Rollback()
logger.Error("commit err:", err)
app.Error(c, http.StatusInternalServerError, err, "编辑失败")
}
dispatchTask.TaskCommodities = req.TaskCommodities
app.OK(c, dispatchTask, "")
return
}
func ErpDispatchTaskDeliver(c *gin.Context) {
req := struct {
ErpDispatchTaskId uint32 `json:"erp_dispatch_task_id"`
ExpressNo string `json:"express_no"`
Remark string `json:"remark"`
}{}
if err := c.ShouldBindJSON(&req); err != nil {
logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
//var dispatchTaskOrigin model.ErpDispatchTask
err := orm.Eloquent.Table("erp_dispatch_task").Where("id=?", req.ErpDispatchTaskId).Updates(map[string]interface{}{
"state": 3,
"express_no": req.ExpressNo,
"remark": req.Remark,
}).Error
if err != nil {
logger.Error("erp commodity err:", err)
app.Error(c, http.StatusInternalServerError, err, "编辑失败")
return
}
var dispatchTask model.ErpDispatchTask
qs := orm.Eloquent.Table("erp_dispatch_task")
if req.ErpDispatchTaskId != 0 {
qs = qs.Where("id=?", req.ErpDispatchTaskId)
}
err = qs.Find(&dispatchTask).Error
if err != nil {
logger.Error("erp commodity err:", err)
app.Error(c, http.StatusInternalServerError, err, "获取失败")
return
}
var erpDispatchTaskCommodities []model.ErpDispatchTaskCommodity
err = orm.Eloquent.Table("erp_dispatch_task_commodity").Where("dispatch_task_id=?", dispatchTask.ID).Find(&erpDispatchTaskCommodities).Error
if err != nil {
logger.Error("erp dispatch task commodities err:", err)
app.Error(c, http.StatusInternalServerError, err, "获取失败")
return
}
dispatchTask.TaskCommodities = erpDispatchTaskCommodities
app.OK(c, dispatchTask, "")
return
}
func ErpDispatchTaskAuditor(c *gin.Context) {
req := struct {
ErpDispatchTaskId uint32 `json:"erp_dispatch_task_id"`
AuditorId uint32 `json:"auditor_id"`
}{}
if err := c.ShouldBindJSON(&req); err != nil {
logger.Error(err)
app.Error(c, http.StatusBadRequest, errors.New("para err"), "参数错误")
return
}
userInfo, err := model.GetUserInfo(req.AuditorId)
if err != nil {
logger.Error("user info err:", err)
app.Error(c, http.StatusInternalServerError, err, "创建失败")
return
}
err = orm.Eloquent.Table("erp_dispatch_task").Where("id=?", req.ErpDispatchTaskId).Updates(map[string]interface{}{
"state": 2,
"auditor_id": req.AuditorId,
"auditor_name": userInfo.ShopAssistantName,
"auditor_time": time.Now(),
}).Error
if err != nil {
logger.Error("erp commodity err:", err)
app.Error(c, http.StatusInternalServerError, err, "编辑失败")
return
}
var dispatchTask model.ErpDispatchTask
qs := orm.Eloquent.Table("erp_dispatch_task")
if req.ErpDispatchTaskId != 0 {
qs = qs.Where("id=?", req.ErpDispatchTaskId)
}
err = qs.Find(&dispatchTask).Error
if err != nil {
logger.Error("erp commodity err:", err)
app.Error(c, http.StatusInternalServerError, err, "获取失败")
return
}
app.OK(c, dispatchTask, "")
return
}