Browse Source

Merge pull request '订单管理功能开发' (#159) from feature_om into develop

Reviewed-on: http://101.201.121.115:3000/leo/LAPP_GAAS_GFrame_BACKEND/pulls/159
Reviewed-by: weichenglei <chenglei.wei@le-it.com.cn>
pull/161/head
weichenglei 3 years ago
parent
commit
5dca1793a1
13 changed files with 557 additions and 48 deletions
  1. +17
    -0
      dao/om/WorkOrder.dao.go
  2. +72
    -0
      dao/om/implments/WorkOrder.dao.impl.go
  3. +17
    -1
      models/om/om.go
  4. +1
    -1
      services/log/implments/ArtDemandLst.service.impl.go
  5. +3
    -3
      services/om/WorkOrder.service.go
  6. +19
    -0
      services/om/WorkOrderQty.service.go
  7. +4
    -2
      services/om/implments/DemandHead.service.impl.go
  8. +189
    -30
      services/om/implments/WorkOrder.service.impl.go
  9. +60
    -0
      services/om/implments/WorkOrderQty.service.impl.go
  10. +94
    -0
      services/om/implments/WorkOrderStatus.service.impl.go
  11. +6
    -6
      web/controllers/om/WorkOrder.rest.go
  12. +68
    -0
      web/controllers/om/WorkOrderQty.rest.go
  13. +7
    -5
      web/controllers/om/om.go

+ 17
- 0
dao/om/WorkOrder.dao.go View File

@ -314,6 +314,23 @@ type WorkOrderDAO interface {
*
******************************************************************************/
SelectByEndDate(string, string) ([]model.WorkOrder, error)
/******************************************************************************
*
* @Function Name : SelectByPage
*-----------------------------------------------------------------------------
*
* @Description : 按条件查询WorkOrderJoin
*
* @Return Value : 查询结果
*
* @Return Value : 执行时发生的错误
*
* @Author : 张鑫
*
* @Date : 2021-04-27
*
******************************************************************************/
SelectByPage(string, string, string, string, string, string, int, int, int) (grmi.PagingResult, error)
}
/******************************************************************************


+ 72
- 0
dao/om/implments/WorkOrder.dao.impl.go View File

@ -432,3 +432,75 @@ func (impl *WorkOrderDAOImplement) SelectByEndDate(artId string, endDate string)
}
return data, nil
}
/******************************************************************************
*
* @Reference LAPP_GAAS_GFrame_BACKEND/dao/om/WorkOrderDAO.SelectByPage
*
******************************************************************************/
func (impl *WorkOrderDAOImplement) SelectByPage(projectId, artId, start, end, workOrderId, orderType string, status,pageIndex,pageSize int) (grmi.PagingResult, error) {
data := make([]model.WorkOrderJoin, 0, 10)
parameters := []interface{}{impl.plantNr}
session := impl.session.Table(impl.meta.TableName)
statusCondition := fmt.Sprintf("%s = %s and %s = %s",
meta.WorkOrder_PlantNr.ColumnName,
meta.WorkOrderStatus_PlantNr.ColumnName,
meta.WorkOrder_WorkOrderId.ColumnName,
meta.WorkOrderStatus_WorkOrderId.ColumnName)
qtyCondition := fmt.Sprintf("%s = %s and %s = %s",
meta.WorkOrder_PlantNr.ColumnName,
meta.WorkOrderQty_PlantNr.ColumnName,
meta.WorkOrder_WorkOrderId.ColumnName,
meta.WorkOrderQty_WorkOrderId.ColumnName)
session = session.Join("LEFT", meta.WorkOrderStatus.TableName, statusCondition)
session = session.Join("LEFT", meta.WorkOrderQty.TableName, qtyCondition)
query := session
query = query.Where(fmt.Sprintf("%s = ?", meta.WorkOrder_PlantNr.ColumnName), impl.plantNr)
where := fmt.Sprintf("%s = ?", meta.WorkOrder_PlantNr.ColumnName)
if projectId != "" {
parameters = append(parameters, projectId)
query.Where(fmt.Sprintf("%s = ?", meta.WorkOrder_ProjectId.ColumnName), projectId)
where += fmt.Sprintf(" and %s = ? ", meta.WorkOrder_ProjectId.ColumnName)
}
if artId != "" {
parameters = append(parameters, artId)
query.Where(fmt.Sprintf("%s = ?", meta.WorkOrder_ArtId.ColumnName), artId)
where += fmt.Sprintf(" and %s = ? ", meta.WorkOrder_ArtId.ColumnName)
}
if start != "" {
parameters = append(parameters, start)
query.Where(fmt.Sprintf("%s >= ?", meta.WorkOrder_PlanEndTime.ColumnName), start)
where += fmt.Sprintf(" and %s >= ? ", meta.WorkOrder_PlanEndTime.ColumnName)
}
if end != "" {
parameters = append(parameters, end)
query.Where(fmt.Sprintf("%s <= ?", meta.WorkOrder_PlanEndTime.ColumnName), end)
where += fmt.Sprintf(" and %s <= ? ", meta.WorkOrder_PlanEndTime.ColumnName)
}
if status != 0 {
parameters = append(parameters, status)
query.Where(fmt.Sprintf("%s = ?", meta.WorkOrderStatus_Status.ColumnName), status)
where += fmt.Sprintf(" and %s = ? ", meta.WorkOrderStatus_Status.ColumnName)
}
if workOrderId != "" {
parameters = append(parameters, workOrderId)
query.Where(fmt.Sprintf("%s = ?", meta.WorkOrder_WorkOrderId.ColumnName), workOrderId)
where += fmt.Sprintf(" and %s = ? ", meta.WorkOrder_WorkOrderId.ColumnName)
}
if orderType != "" {
parameters = append(parameters, orderType)
query.Where(fmt.Sprintf("%s = ?", meta.WorkOrder_OrderType.ColumnName), orderType)
where += fmt.Sprintf(" and %s = ? ", meta.WorkOrder_OrderType.ColumnName)
}
count, err := session.Count(impl.meta.Indicator)
if err != nil {
return grmi.EmptyPagingResult, err
}
orderBy := " order by " + meta.WorkOrder_PlantNr.ColumnName
parameters = append(parameters, pageIndex, pageSize)
err = impl.session.Table(impl.meta.TableName).SQL(fmt.Sprintf("select %s.*,%s.*,%s.* from ", meta.WorkOrder.TableName, meta.WorkOrderStatus.TableName,meta.WorkOrderQty.TableName)+impl.meta.TableName+where+orderBy+" offset ? row fetch next ? row only", parameters...).Find(&data)
if err != nil {
return grmi.EmptyPagingResult, err
}
return grmi.PagingResult{Records: data, Count: count, PageNumber: int64(pageIndex), PageSize: int64(pageSize)}, nil
}

+ 17
- 1
models/om/om.go View File

@ -5,5 +5,21 @@ const (
DemandHeadParsedStatus
DemandHeadParsingStatus
DemandMaxTry = 10
)
type WorkOrderStatusChange struct {
WorkOrderId string `json:"workOrderId"`
Status int `json:"status"`
}
type WorkOrderJoin struct {
*WorkOrder
*WorkOrderStatus
*WorkOrderQty
}
type WorkOrderQtyChange struct {
WorkOrderId string `json:"workOrderId"`
AccomplishQty float64 `json:"accomplishQty"`
RunningQty float64 `json:"runningQty"`
}

+ 1
- 1
services/log/implments/ArtDemandLst.service.impl.go View File

@ -225,7 +225,7 @@ func (impl *ArtDemandLstServiceImplement) UpdateOne(user *models.Usertab, entity
if record == nil {
return grmi.NewBusinessError("不存在指定记录!")
}
record.DemandId = entity.DemandId
//record.DemandId = entity.DemandId
record.DemandCtrlPara1 = entity.DemandCtrlPara1
record.DemandCtrlPara2 = entity.DemandCtrlPara2
record.DemandCtrlPara3 = entity.DemandCtrlPara3


+ 3
- 3
services/om/WorkOrder.service.go View File

@ -39,7 +39,7 @@ type WorkOrderService interface {
* @Date : 2021-04-19 14:04:47
*
******************************************************************************/
InsertOne(*models.Usertab, *model.WorkOrder) error
InsertOne(*models.Usertab, *model.WorkOrderJoin) error
/******************************************************************************
*
* @Function Name : DeleteOne
@ -75,7 +75,7 @@ type WorkOrderService interface {
* @Date : 2021-04-19 14:04:47
*
******************************************************************************/
SelectOne(*models.Usertab, string) (*model.WorkOrder, error)
SelectOne(*models.Usertab, string) (*model.WorkOrderJoin, error)
/******************************************************************************
*
* @Function Name : UpdateOne
@ -94,7 +94,7 @@ type WorkOrderService interface {
* @Date : 2021-04-19 14:04:47
*
******************************************************************************/
UpdateOne(*models.Usertab, *model.WorkOrder) error
UpdateOne(*models.Usertab, *model.WorkOrderJoin) error
/******************************************************************************
*
* @Function Name : Insert


+ 19
- 0
services/om/WorkOrderQty.service.go View File

@ -173,6 +173,25 @@ type WorkOrderQtyService interface {
*
******************************************************************************/
Update(*models.Usertab, *[]model.WorkOrderQty) error
/******************************************************************************
*
* @Function Name : ChangeQty
*-----------------------------------------------------------------------------
*
* @Description : 修改多条WorkOrderQty的数量
*
* @Function Parameters : 当前访问人员信息
*
* @Function Parameters : 需要修改的WorkOrderQty列表
*
* @Return Value : 执行时发生的错误
*
* @Author : 代码生成器创建
*
* @Date : 2021-04-27
*
******************************************************************************/
ChangeQty(*models.Usertab, []model.WorkOrderQtyChange) error
}
/******************************************************************************


+ 4
- 2
services/om/implments/DemandHead.service.impl.go View File

@ -891,7 +891,8 @@ func (impl *DemandHeadServiceImplement) DealArtDemand(pid int,
DemandTime: workOrder.PlanEndTime,
DemandDate: grmi.Date(demandTime),
DemandQty: workOrderQty.PlanQty,
Status: workOrderStatus.Status,
Status: logModel.WaitReceivingStatus,
OrderStatus: workOrderStatus.Status,
QtyUomId: "",
}
err = artDemandHeadDao.InsertOne(&artDemandHead)
@ -944,7 +945,8 @@ func (impl *DemandHeadServiceImplement) DealArtDemand(pid int,
DemandTime: workOrder.PlanEndTime,
DemandDate: grmi.Date(demandTime),
DemandQty: 1,
Status: artDemandStatus,
Status: logModel.WaitReceivingStatus,
OrderStatus: artDemandStatus,
QtyUomId: "",
}
artDemandLstLi = append(artDemandLstLi, artDemandLst)


+ 189
- 30
services/om/implments/WorkOrder.service.impl.go View File

@ -6,9 +6,14 @@ import (
dal "LAPP_GAAS_GFrame_BACKEND/dao/om"
"LAPP_GAAS_GFrame_BACKEND/db"
"LAPP_GAAS_GFrame_BACKEND/grmi"
"LAPP_GAAS_GFrame_BACKEND/infra/logger"
meta "LAPP_GAAS_GFrame_BACKEND/meta/om"
baseModel "LAPP_GAAS_GFrame_BACKEND/models/base"
model "LAPP_GAAS_GFrame_BACKEND/models/om"
"LAPP_GAAS_GFrame_BACKEND/utils"
"LAPP_GAAS_GFrame_BACKEND/web/models"
"strconv"
"time"
)
/******************************************************************************
@ -120,23 +125,54 @@ func NewWorkOrderServiceImplement() *WorkOrderServiceImplement {
* @Reference LAPP_GAAS_GFrame_BACKEND/services/om/WorkOrderService.InsertOne
*
******************************************************************************/
func (impl *WorkOrderServiceImplement) InsertOne(user *models.Usertab, entity *model.WorkOrder) error {
func (impl *WorkOrderServiceImplement) InsertOne(user *models.Usertab, entity *model.WorkOrderJoin) error {
log, _ := logger.NewLogger(user.Userid, "OM")
grmi.Log(user, "/services/om/implments/WorkOrder.service.impl.go", "InsertOneWorkOrder", "插入一个WorkOrder")
engine := db.Eloquent.Master()
session := engine.NewSession()
err := session.Begin()
if err != nil {
return err
}
defer session.Close()
dao := dal.NewWorkOrderDAO(session, user.Pid, user.Userid)
record, err := dao.SelectOne(entity.WorkOrderId)
statusDao := dal.NewWorkOrderStatusDAO(session, user.Pid, user.Userid)
qtyDao := dal.NewWorkOrderQtyDAO(session, user.Pid, user.Userid)
workOrder := entity.WorkOrder
workQty := entity.WorkOrderQty
workStatus := entity.WorkOrderStatus
if workStatus.Status != baseModel.WO_STATUS_UNPLANNED && workStatus.Status != baseModel.WO_STATUS_INTERRUPT {
return grmi.NewBusinessError("创建的订单状态不合规,status:" + strconv.Itoa(entity.Status))
}
snr := new(models.Snrtab)
snr.Finr = user.Pid
workOrderId, err := snr.GetNextSnr("WorkOrder")
if err != nil {
log.Error("workOrder InsertOne get work order id failed, error: " + err.Error())
return err
}
if record != nil {
return grmi.NewBusinessError("已经存在相同主键的记录!")
workOrder.WorkOrderId = workOrderId
workQty.WorkOrderId = workOrderId
workStatus.WorkOrderId = workOrderId
err = dao.InsertOne(workOrder)
if err != nil {
log.Error("workOrder InsertOne insert workOrder failed, error: "+ err.Error())
session.Rollback()
return err
}
err = dao.InsertOne(entity)
err = statusDao.InsertOne(workStatus)
if err != nil {
log.Error("workOrder InsertOne insert workOrder status failed, error: "+ err.Error())
session.Rollback()
return err
}
err = qtyDao.InsertOne(workQty)
if err != nil {
log.Error("workOrder InsertOne insert workOrder qty failed, error: "+ err.Error())
session.Rollback()
return err
}
return nil
@ -148,22 +184,67 @@ func (impl *WorkOrderServiceImplement) InsertOne(user *models.Usertab, entity *m
*
******************************************************************************/
func (impl *WorkOrderServiceImplement) DeleteOne(user *models.Usertab, workOrderId string) error {
grmi.Log(user, "/services/om/implments/WorkOrder.service.impl.go", "DeleteOneWorkOrder", "删除一个WorkOrder")
engine := db.Eloquent.Master()
session := engine.NewSession()
err := session.Begin()
if err != nil {
return err
}
defer session.Close()
dao := dal.NewWorkOrderDAO(session, user.Pid, user.Userid)
statusDao := dal.NewWorkOrderStatusDAO(session, user.Pid, user.Userid)
qtyDao := dal.NewWorkOrderQtyDAO(session, user.Pid, user.Userid)
statusRecDao := dal.NewWorkOrderStatusRecLstDAO(session, user.Pid, user.Userid)
qtyRecDao := dal.NewWorkOrderQtyRecLstDAO(session, user.Pid, user.Userid)
record, err := dao.SelectOne(workOrderId)
if err != nil {
return err
}
if record == nil {
return grmi.NewBusinessError("不存在指定记录!")
return grmi.NewBusinessError("不存在指定workOrder记录!")
}
statusRecord, err := statusDao.SelectOne(workOrderId)
if err != nil {
return err
}
if statusRecord == nil {
return grmi.NewBusinessError("不存在指定workOrderStatus记录!")
}
qtyRecord, err := qtyDao.SelectOne(workOrderId)
if err != nil {
return err
}
if qtyRecord == nil {
return grmi.NewBusinessError("不存在指定workOrderQty记录!")
}
if statusRecord.Status != baseModel.WO_STATUS_UNPLANNED {
return grmi.NewBusinessError("该workOrder不可以删除, status:" + strconv.Itoa(statusRecord.Status))
}
err = dao.DeleteOne(workOrderId)
if err != nil {
session.Rollback()
return err
}
err = statusDao.DeleteOne(workOrderId)
if err != nil {
session.Rollback()
return err
}
err = qtyDao.DeleteOne(workOrderId)
if err != nil {
session.Rollback()
return err
}
err = qtyRecDao.DeleteWhere([]grmi.Predicate{meta.WorkOrderQtyRecLst_WorkOrderId.NewPredicate(grmi.Equal, workOrderId)})
if err != nil {
session.Rollback()
return err
}
err = statusRecDao.DeleteWhere([]grmi.Predicate{meta.WorkOrderStatusRecLst_WorkOrderId.NewPredicate(grmi.Equal, workOrderId)})
if err != nil {
session.Rollback()
return err
}
return nil
@ -174,7 +255,7 @@ func (impl *WorkOrderServiceImplement) DeleteOne(user *models.Usertab, workOrder
* @Reference LAPP_GAAS_GFrame_BACKEND/services/om/WorkOrderService.SelectOne
*
******************************************************************************/
func (impl *WorkOrderServiceImplement) SelectOne(user *models.Usertab, workOrderId string) (*model.WorkOrder, error) {
func (impl *WorkOrderServiceImplement) SelectOne(user *models.Usertab, workOrderId string) (*model.WorkOrderJoin, error) {
grmi.Log(user, "/services/om/implments/WorkOrder.service.impl.go", "SelectOneWorkOrder", "查询一个WorkOrder")
@ -182,11 +263,30 @@ func (impl *WorkOrderServiceImplement) SelectOne(user *models.Usertab, workOrder
session := engine.NewSession()
defer session.Close()
dao := dal.NewWorkOrderDAO(session, user.Pid, user.Userid)
result, err := dao.SelectOne(workOrderId)
statusDao := dal.NewWorkOrderStatusDAO(session, user.Pid, user.Userid)
qtyDao := dal.NewWorkOrderQtyDAO(session, user.Pid, user.Userid)
workOrder, err := dao.SelectOne(workOrderId)
if err != nil {
return nil, err
}
return result, nil
if workOrder == nil {
return nil, grmi.NewBusinessError("workOrder不存在")
}
workOrderStatus, err := statusDao.SelectOne(workOrderId)
if err != nil {
return nil, err
}
workOrderQty, err := qtyDao.SelectOne(workOrderId)
if err != nil {
return nil, err
}
data := &model.WorkOrderJoin{
WorkOrder: workOrder,
WorkOrderQty: workOrderQty,
WorkOrderStatus: workOrderStatus,
}
return data, nil
}
/******************************************************************************
@ -194,25 +294,57 @@ func (impl *WorkOrderServiceImplement) SelectOne(user *models.Usertab, workOrder
* @Reference LAPP_GAAS_GFrame_BACKEND/services/om/WorkOrderService.UpdateOne
*
******************************************************************************/
func (impl *WorkOrderServiceImplement) UpdateOne(user *models.Usertab, entity *model.WorkOrder) error {
func (impl *WorkOrderServiceImplement) UpdateOne(user *models.Usertab, entity *model.WorkOrderJoin) error {
grmi.Log(user, "/services/om/implments/WorkOrder.service.impl.go", "UpdateOneWorkOrder", "修改一个WorkOrder")
engine := db.Eloquent.Master()
session := engine.NewSession()
if err := session.Begin(); err != nil {
return err
}
defer session.Close()
workOrder := entity.WorkOrder
workOrderStatus := entity.WorkOrderStatus
workOrderQty := entity.WorkOrderQty
dao := dal.NewWorkOrderDAO(session, user.Pid, user.Userid)
record, err := dao.SelectOne(entity.WorkOrderId)
statusDao := dal.NewWorkOrderStatusDAO(session, user.Pid, user.Userid)
qtyDao := dal.NewWorkOrderQtyDAO(session, user.Pid, user.Userid)
workOrderRecord, err := dao.SelectOne(workOrder.WorkOrderId)
if err != nil {
return err
}
if record == nil {
if workOrderRecord == nil {
return grmi.NewBusinessError("不存在指定记录!")
}
err = dao.UpdateOne(entity)
statusRecord, err := statusDao.SelectOne(workOrder.WorkOrderId)
if err != nil {
return err
}
if statusRecord == nil {
return grmi.NewBusinessError("不存在指定的WorkOrderStatus")
}
qtyRecord, err := qtyDao.SelectOne(workOrder.WorkOrderId)
if err != nil {
return err
}
if qtyRecord == nil {
return grmi.NewBusinessError("不存在指定的WorkOrderQty")
}
if workOrderStatus.Status != statusRecord.Status {
return grmi.NewBusinessError("workOrderStatus不允许修改")
}
err = dao.UpdateOne(workOrder)
if err != nil {
session.Rollback()
return err
}
workOrderQty.WorkOrderId = qtyRecord.WorkOrderId
err = qtyDao.UpdateOne(workOrderQty)
if err != nil {
session.Rollback()
return err
}
return nil
}
@ -286,29 +418,53 @@ func (impl *WorkOrderServiceImplement) Delete(user *models.Usertab, entities *[]
func (impl *WorkOrderServiceImplement) Select(user *models.Usertab, urlParameters map[string]string) (interface{}, error) {
grmi.Log(user, "/services/om/implments/WorkOrder.service.impl.go", "SelectWorkOrder", "查询WorkOrder")
condition := DefaultConditionOfWorkOrderAndPaging
engine := db.Eloquent.Master()
session := engine.NewSession()
defer session.Close()
predicates, err := condition.BuildPredicates(urlParameters)
var projectId string
var artId string
var timeStart string
var timeEnd string
var workOrderId string
var orderType string
var statusStr string
var pageNumberStr string
var pageSizeStr string
projectId, _ = urlParameters["projectid"]
artId, _ = urlParameters["artid"]
workOrderId, _ = urlParameters["workorderid"]
timeStart, _ = urlParameters["start"]
timeEnd, _ = urlParameters["end"]
orderType, _ = urlParameters["ordertype"]
statusStr, _ = urlParameters["status"]
pageNumberStr, _ = urlParameters["pageNumber"]
pageSizeStr, _ = urlParameters["pageSize"]
status, err := strconv.Atoi(statusStr)
if err != nil {
return nil, grmi.NewBusinessError("status类型错误,error:" + err.Error())
}
_, err = time.ParseInLocation("2006-01-02 15:04:05", timeStart, utils.TimezoneLocation)
if err != nil {
return nil, err
}
_, err = time.ParseInLocation("2006-01-02 15:04:05", timeEnd, utils.TimezoneLocation)
if err != nil {
return nil, err
}
pageNumber, err := strconv.Atoi(pageNumberStr)
if err != nil {
pageNumber = 1
}
pageSize, err := strconv.Atoi(pageSizeStr)
if err != nil {
pageSize = 10
}
dao := dal.NewWorkOrderDAO(session, user.Pid, user.Userid)
if condition.Fill(urlParameters) {
result, err := dao.SelectAndPaging(condition.Paging, predicates, condition.OrderByFields)
if err != nil {
return nil, err
}
return result, nil
} else {
result, err := dao.Select(predicates, condition.OrderByFields)
if err != nil {
return nil, err
}
return result, nil
result, err := dao.SelectByPage(projectId, artId, timeStart, timeEnd, workOrderId, orderType, status, pageNumber, pageSize)
if err != nil {
return nil, err
}
return result, nil
}
/******************************************************************************
@ -341,3 +497,6 @@ func (impl *WorkOrderServiceImplement) Update(user *models.Usertab, entities *[]
}
return nil
}

+ 60
- 0
services/om/implments/WorkOrderQty.service.impl.go View File

@ -313,3 +313,63 @@ func (impl *WorkOrderQtyServiceImplement) Update(user *models.Usertab, entities
}
return nil
}
/******************************************************************************
*
* @Reference LAPP_GAAS_GFrame_BACKEND/services/om/WorkOrderQtyService.ChangeQty
*
******************************************************************************/
func (impl *WorkOrderQtyServiceImplement) ChangeQty (user *models.Usertab, li []model.WorkOrderQtyChange) error {
grmi.Log(user, "/services/om/implments/WorkOrderQty.service.impl.go", "ChangeQty", "修改多个WorkOrderQty")
engine := db.Eloquent.Master()
session := engine.NewSession()
err := session.Begin()
if err != nil {
return err
}
defer session.Close()
dao := dal.NewWorkOrderQtyDAO(session, user.Pid, user.Userid)
recDao := dal.NewWorkOrderQtyRecLstDAO(session,user.Pid, user.Userid)
for _, entity := range li {
record, err := dao.SelectOne(entity.WorkOrderId)
if err != nil {
return err
}
if record == nil {
return grmi.NewBusinessError("不存在指定记录!")
}
if entity.AccomplishQty != record.ActQty {
if entity.AccomplishQty > record.PlanQty {
return grmi.NewBusinessError("报工完成数量大于订单数量,workOrderId:" + entity.WorkOrderId)
}
if entity.RunningQty > (record.PlanQty - entity.AccomplishQty) {
return grmi.NewBusinessError("报工生成中数量大于剩余生产数量,workOrderId:" + entity.WorkOrderId)
}
maxPos, err := recDao.GetMaxPos(entity.WorkOrderId)
if err != nil {
session.Rollback()
return err
}
rec := model.WorkOrderQtyRecLst{
WorkOrderId: entity.WorkOrderId,
Pos: maxPos+1,
ActQty: record.ActQty,
}
err = recDao.InsertOne(&rec)
if err != nil {
session.Rollback()
return err
}
record.ActQty = entity.AccomplishQty
record.ActQty1 = entity.RunningQty
err = dao.UpdateOne(record)
if err != nil {
session.Rollback()
return err
}
}
}
return nil
}

+ 94
- 0
services/om/implments/WorkOrderStatus.service.impl.go View File

@ -6,9 +6,12 @@ import (
dal "LAPP_GAAS_GFrame_BACKEND/dao/om"
"LAPP_GAAS_GFrame_BACKEND/db"
"LAPP_GAAS_GFrame_BACKEND/grmi"
"LAPP_GAAS_GFrame_BACKEND/infra/logger"
meta "LAPP_GAAS_GFrame_BACKEND/meta/om"
baseModel "LAPP_GAAS_GFrame_BACKEND/models/base"
model "LAPP_GAAS_GFrame_BACKEND/models/om"
"LAPP_GAAS_GFrame_BACKEND/web/models"
"strconv"
)
/******************************************************************************
@ -101,6 +104,7 @@ func (impl *WorkOrderStatusServiceImplement) InsertOne(user *models.Usertab, ent
if record != nil {
return grmi.NewBusinessError("已经存在相同主键的记录!")
}
err = dao.InsertOne(entity)
if err != nil {
return err
@ -307,3 +311,93 @@ func (impl *WorkOrderStatusServiceImplement) Update(user *models.Usertab, entiti
}
return nil
}
/******************************************************************************
*
* @Reference LAPP_GAAS_GFrame_BACKEND/services/om/WorkOrderStatusService.ChangeStatus
*
******************************************************************************/
func (impl *WorkOrderStatusServiceImplement) ChangeStatus(user *models.Usertab, li []model.WorkOrderStatusChange) error {
grmi.Log(user, "/services/om/implments/WorkOrderStatus.service.impl.go", "ChangeStatus", "修改多个WorkOrderStatus")
log, _ := logger.NewLogger(user.Userid, "OM")
engine := db.Eloquent.Master()
session := engine.NewSession()
defer session.Close()
err := session.Begin()
if err != nil {
return err
}
dao := dal.NewWorkOrderStatusDAO(session, user.Pid, user.Userid)
recDao := dal.NewWorkOrderStatusRecLstDAO(session, user.Pid, user.Userid)
for _, entity := range li {
record, err := dao.SelectOne(entity.WorkOrderId)
if err != nil {
return err
}
if record == nil {
return grmi.NewBusinessError("不存在指定记录!")
}
switch entity.Status {
case baseModel.WO_STATUS_UNPLANNED:
return grmi.NewBusinessError("order status is already WO_STATUS_UNPLANNED, workOderId: "+ entity.WorkOrderId)
case baseModel.WO_STATUS_PLANNED:
if record.Status == baseModel.WO_STATUS_UNPLANNED {
return grmi.NewBusinessError("order status is non sequence, workOrderId:" + entity.WorkOrderId + " change status:" + strconv.Itoa(entity.Status))
}
case baseModel.WO_STATUS_LOCKED:
if record.Status == baseModel.WO_STATUS_PLANNED {
return grmi.NewBusinessError("order status is non sequence, workOrderId:" + entity.WorkOrderId + " change status:" + strconv.Itoa(entity.Status))
}
case baseModel.WO_STATUS_RELEASED:
if record.Status == baseModel.WO_STATUS_LOCKED {
return grmi.NewBusinessError("order status is non sequence, workOrderId:" + entity.WorkOrderId + " change status:" + strconv.Itoa(entity.Status))
}
case baseModel.WO_STATUS_RUNNING:
if record.Status == baseModel.WO_STATUS_RELEASED || record.Status == baseModel.WO_STATUS_INTERRUPT{
return grmi.NewBusinessError("order status is non sequence, workOrderId:" + entity.WorkOrderId + " change status:" + strconv.Itoa(entity.Status))
}
case baseModel.WO_STATUS_FINISHED:
if record.Status == baseModel.WO_STATUS_RUNNING {
return grmi.NewBusinessError("order status is non sequence, workOrderId:" + entity.WorkOrderId + " change status:" + strconv.Itoa(entity.Status))
}
case baseModel.WO_STATUS_DISPATCHED:
if record.Status == baseModel.WO_STATUS_FINISHED {
return grmi.NewBusinessError("order status is non sequence, workOrderId:" + entity.WorkOrderId + " change status:" + strconv.Itoa(entity.Status))
}
case baseModel.WO_STATUS_FROZEN:
if record.Status == baseModel.WO_STATUS_DISPATCHED {
return grmi.NewBusinessError("order status is non sequence, workOrderId:" + entity.WorkOrderId + " change status:" + strconv.Itoa(entity.Status))
}
case baseModel.WO_STATUS_CANCELED:
if record.Status == baseModel.WO_STATUS_FROZEN {
return grmi.NewBusinessError("order status is non sequence, workOrderId:" + entity.WorkOrderId + " change status:" + strconv.Itoa(entity.Status))
}
}
maxPos, err := recDao.GetMaxPos(entity.WorkOrderId)
if err != nil {
log.Debug("get max pos failed, error:" + err.Error(), record.WorkOrderId)
session.Rollback()
return err
}
rec := model.WorkOrderStatusRecLst{
WorkOrderId: record.WorkOrderId,
Pos: maxPos+1,
PrevStatus: record.Status,
}
err = recDao.InsertOne(&rec)
if err != nil {
log.Debug("insert rec status data failed, error: " + err.Error(), record.WorkOrderId)
session.Rollback()
return err
}
record.Status = entity.Status
err = dao.UpdateOne(record)
if err != nil {
log.Debug("update work order status failed, error: " + err.Error(), record.WorkOrderId)
session.Rollback()
return err
}
}
return nil
}

+ 6
- 6
web/controllers/om/WorkOrder.rest.go View File

@ -31,7 +31,7 @@ import (
* @Date : 2021-04-19 14:04:47
*
******************************************************************************/
func RegisterOneWorkOrder(party router.Party, httpMethod string, path string, method func(*models.Usertab, *model.WorkOrder) error) {
func RegisterOneWorkOrder(party router.Party, httpMethod string, path string, method func(*models.Usertab, *model.WorkOrderJoin) error) {
party.Handle(httpMethod, path, func(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
@ -42,7 +42,7 @@ func RegisterOneWorkOrder(party router.Party, httpMethod string, path string, me
var err error = nil
entity := new(model.WorkOrder)
entity := new(model.WorkOrderJoin)
if ctx.GetContentLength() > 0 {
err := ctx.ReadJSON(entity)
if err != nil {
@ -121,7 +121,7 @@ func RegisterIDOfWorkOrder(party router.Party, httpMethod string, path string, m
* @Date : 2021-04-19 14:04:47
*
******************************************************************************/
func RegisterInsertOneWorkOrder(party router.Party, path string, method func(*models.Usertab, *model.WorkOrder) error) {
func RegisterInsertOneWorkOrder(party router.Party, path string, method func(*models.Usertab, *model.WorkOrderJoin) error) {
RegisterOneWorkOrder(party, "POST", path, method)
}
@ -167,7 +167,7 @@ func RegisterDeleteOneWorkOrder(party router.Party, path string, method func(*mo
* @Date : 2021-04-19 14:04:47
*
******************************************************************************/
func RegisterSelectOneWorkOrder(party router.Party, path string, method func(*models.Usertab, string) (*model.WorkOrder, error)) {
func RegisterSelectOneWorkOrder(party router.Party, path string, method func(*models.Usertab, string) (*model.WorkOrderJoin, error)) {
party.Get(path+"/{workOrderId:string}", func(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
@ -208,7 +208,7 @@ func RegisterSelectOneWorkOrder(party router.Party, path string, method func(*mo
* @Date : 2021-04-19 14:04:47
*
******************************************************************************/
func RegisterUpdateOneWorkOrder(party router.Party, path string, method func(*models.Usertab, *model.WorkOrder) error) {
func RegisterUpdateOneWorkOrder(party router.Party, path string, method func(*models.Usertab, *model.WorkOrderJoin) error) {
RegisterOneWorkOrder(party, "PUT", path, method)
}
@ -361,4 +361,4 @@ func RegisterSelectWorkOrder(party router.Party, path string, method func(*model
func RegisterUpdateWorkOrder(party router.Party, path string, method func(*models.Usertab, *[]model.WorkOrder) error) {
RegisterMultiWorkOrder(party, "PUT", path, method)
}
}

+ 68
- 0
web/controllers/om/WorkOrderQty.rest.go View File

@ -362,3 +362,71 @@ func RegisterUpdateWorkOrderQty(party router.Party, path string, method func(*mo
RegisterMultiWorkOrderQty(party, "PUT", path, method)
}
/******************************************************************************
*
* @Function Name : RegisterChangeWorkOrderQty
*-----------------------------------------------------------------------------
*
* @Description : 为一个修改多条WorkOrderQty的方法注册路由
*
* @Function Parameters : 路由分组
*
* @Function Parameters : 路径
*
* @Function Parameters : 实际处理请求的方法
*
* @Author : 张鑫
*
* @Date : 2021-04-27
*
******************************************************************************/
func RegisterChangeWorkOrderQty(party router.Party, path string, method func(*models.Usertab, []model.WorkOrderQtyChange) error) {
RegisterChangeWorkOrderQtyHandler(party, "PUT", path, method)
}
/******************************************************************************
*
* @Function Name : RegisterChangeWorkOrderQty
*-----------------------------------------------------------------------------
*
* @Description : 为一个处理多条WorkOrderQty的方法注册路由
*
* @Function Parameters : 路由分组
*
* @Function Parameters : HTTP方法
*
* @Function Parameters : 路径
*
* @Function Parameters : 实际处理请求的方法
*
* @Author : 张鑫
*
* @Date : 2021-04-27
*
******************************************************************************/
func RegisterChangeWorkOrderQtyHandler(party router.Party, httpMethod string, path string, method func(*models.Usertab, []model.WorkOrderQtyChange) error) {
party.Handle(httpMethod, path, func(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
if !ok {
supports.Error(ctx, iris.StatusBadRequest, supports.ParseParamsFailur, nil)
return
}
entities := make([]model.WorkOrderQtyChange, 0, 10)
err := ctx.ReadJSON(&entities)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
err = method(user, entities)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
supports.Ok(ctx, supports.OptionSuccess, nil)
})
}

+ 7
- 5
web/controllers/om/om.go View File

@ -134,11 +134,11 @@ func RegisterRoutes() {
// WorkOrder的服务实例
var serviceOfWorkOrder = svr.NewWorkOrderService()
// WorkOrder插入一条
// RegisterInsertOneWorkOrder(workorder, "/insertone", serviceOfWorkOrder.InsertOne)
RegisterInsertOneWorkOrder(workorder, "/insertone", serviceOfWorkOrder.InsertOne)
// WorkOrder插入多条
// RegisterInsertWorkOrder(workorder, "/insert", serviceOfWorkOrder.Insert)
// WorkOrder删除一条
// RegisterDeleteOneWorkOrder(workorder, "/deleteone", serviceOfWorkOrder.DeleteOne)
RegisterDeleteOneWorkOrder(workorder, "/deleteone", serviceOfWorkOrder.DeleteOne)
// WorkOrder删除多条
// RegisterDeleteWorkOrder(workorder, "/delete", serviceOfWorkOrder.Delete)
// WorkOrder查询多条
@ -146,7 +146,7 @@ func RegisterRoutes() {
// WorkOrder查询一条
RegisterSelectOneWorkOrder(workorder, "/get", serviceOfWorkOrder.SelectOne)
// WorkOrder修改一条
// RegisterUpdateOneWorkOrder(workorder, "/updateone", serviceOfWorkOrder.UpdateOne)
RegisterUpdateOneWorkOrder(workorder, "/updateone", serviceOfWorkOrder.UpdateOne)
// WorkOrder修改多条
// RegisterUpdateWorkOrder(workorder, "/update", serviceOfWorkOrder.Update)
@ -205,13 +205,15 @@ func RegisterRoutes() {
// WorkOrderQty删除多条
// RegisterDeleteWorkOrderQty(workorderqty, "/delete", serviceOfWorkOrderQty.Delete)
// WorkOrderQty查询多条
RegisterSelectWorkOrderQty(workorderqty, "/query", serviceOfWorkOrderQty.Select)
//RegisterSelectWorkOrderQty(workorderqty, "/query", serviceOfWorkOrderQty.Select)
// WorkOrderQty查询一条
RegisterSelectOneWorkOrderQty(workorderqty, "/get", serviceOfWorkOrderQty.SelectOne)
//RegisterSelectOneWorkOrderQty(workorderqty, "/get", serviceOfWorkOrderQty.SelectOne)
// WorkOrderQty修改一条
// RegisterUpdateOneWorkOrderQty(workorderqty, "/updateone", serviceOfWorkOrderQty.UpdateOne)
// WorkOrderQty修改多条
// RegisterUpdateWorkOrderQty(workorderqty, "/update", serviceOfWorkOrderQty.Update)
// WorkOrderQty修改多条
RegisterChangeWorkOrderQty(workorderqty, "/change", serviceOfWorkOrderQty.ChangeQty)
// WorkOrderQtyRecLst的路由组
workorderqtyreclst := party.Party("/workorderqtyreclst")


Loading…
Cancel
Save