332 lines
10 KiB
Go
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
|
||
|
}
|