feat:完善项目
This commit is contained in:
@ -113,6 +113,25 @@ func (c *Equipment) List(parentID uint64, title string, page, pageSize int) (*ba
|
||||
}, nil
|
||||
}
|
||||
|
||||
// Tree 树状列表
|
||||
func (c *Equipment) Tree() ([]*EquipmentInfo, error) {
|
||||
mManageEquipment := model.NewManageEquipment()
|
||||
|
||||
out := make([]*model2.ManageEquipment, 0)
|
||||
|
||||
where := []*model2.ModelWhereOrder{
|
||||
&model2.ModelWhereOrder{
|
||||
Order: model2.NewOrder("parent_id", model2.OrderModeToAsc),
|
||||
},
|
||||
}
|
||||
if err := model2.ScanFields(mManageEquipment.ManageEquipment, &out, []string{"id", "parent_id", "code", "title"},
|
||||
where...); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return c.tree(mManageEquipment.ManageEquipment, out, 0), nil
|
||||
}
|
||||
|
||||
// Select 筛选信息
|
||||
func (c *Equipment) Select(parentID uint64) ([]*EquipmentBasic, error) {
|
||||
mManageEquipment := model.NewManageEquipment()
|
||||
|
@ -19,6 +19,7 @@ type (
|
||||
EquipmentMaterialInfo struct {
|
||||
*model.ManageMaterialBasic
|
||||
basic.CommonIDString
|
||||
MaterialID string `json:"material_id"`
|
||||
}
|
||||
EquipmentMaterialBindParams struct {
|
||||
EquipmentID uint64
|
||||
@ -43,6 +44,7 @@ func (c *EquipmentMaterial) List(equipmentID uint64) ([]*EquipmentMaterialInfo,
|
||||
list = append(list, &EquipmentMaterialInfo{
|
||||
CommonIDString: basic.CommonIDString{ID: mManageEquipmentMaterial.GetEncodeID()},
|
||||
ManageMaterialBasic: v,
|
||||
MaterialID: (&model2.Model{ID: v.MaterialID}).GetEncodeID(),
|
||||
})
|
||||
}
|
||||
return list, nil
|
||||
|
@ -20,6 +20,7 @@ type (
|
||||
}
|
||||
)
|
||||
|
||||
// List 列表信息
|
||||
func (c *MaterialPurchase) List(orderNo, supplierName, materialTitle string, page, pageSize int) (*basic.PageDataResponse, error) {
|
||||
mManageMaterialPurchase := model.NewManageMaterialPurchase()
|
||||
|
||||
@ -53,11 +54,12 @@ func (c *MaterialPurchase) List(orderNo, supplierName, materialTitle string, pag
|
||||
}
|
||||
|
||||
// Launch 采购发起
|
||||
func (c *MaterialPurchase) Launch(materialSupplierID uint64, price float64, number int, remark string) error {
|
||||
func (c *MaterialPurchase) Launch(materialID, supplierID uint64, price, number float64, remark string) error {
|
||||
mManageMaterialPurchase := model.NewManageMaterialPurchase()
|
||||
mManageMaterialPurchase.UID = c.UID
|
||||
mManageMaterialPurchase.OrderNo = lib.OrderNo()
|
||||
mManageMaterialPurchase.MaterialSupplierID = materialSupplierID
|
||||
mManageMaterialPurchase.MaterialID = materialID
|
||||
mManageMaterialPurchase.SupplierID = supplierID
|
||||
mManageMaterialPurchase.Price = price
|
||||
mManageMaterialPurchase.Number = number
|
||||
mManageMaterialPurchase.Remark = remark
|
||||
|
@ -16,6 +16,7 @@ type (
|
||||
MaterialSupplerBasic struct {
|
||||
basic.CommonIDString
|
||||
*model.ManageMaterialSupplierBasic
|
||||
Stock float64 `json:"stock"`
|
||||
}
|
||||
)
|
||||
|
||||
@ -36,9 +37,15 @@ func (c *MaterialSuppler) Select(materialID uint64) ([]*MaterialSupplerBasic, er
|
||||
for _, v := range out {
|
||||
mManageMaterSupplier.SetID(v.ID)
|
||||
|
||||
stock := v.Stock - v.FrozenStock
|
||||
|
||||
if stock < 0 {
|
||||
stock = 0
|
||||
}
|
||||
list = append(list, &MaterialSupplerBasic{
|
||||
CommonIDString: basic.CommonIDString{ID: mManageMaterSupplier.GetEncodeID()},
|
||||
ManageMaterialSupplierBasic: v,
|
||||
Stock: stock,
|
||||
})
|
||||
}
|
||||
return list, nil
|
||||
|
@ -19,7 +19,7 @@ func (c *MaterialWarehouse) List() (*basic.PageDataResponse, error) {
|
||||
}
|
||||
|
||||
// Launch 入库发起
|
||||
func (c *MaterialWarehouse) Launch(materialPurchaseID uint64, number int, remark string) error {
|
||||
func (c *MaterialWarehouse) Launch(materialPurchaseID uint64, number float64, remark string) error {
|
||||
mManageMaterialPurchase := model.NewManageMaterialPurchase()
|
||||
mManageMaterialPurchase.ID = materialPurchaseID
|
||||
|
||||
|
@ -49,6 +49,7 @@ type (
|
||||
Remark string // 备注信息
|
||||
Supplier *InstanceLaunchParamsForSupplier
|
||||
Material []*InstanceLaunchParamsForMaterial
|
||||
Purchase []*InstanceLaunchParamsForPurchase
|
||||
Distribution *InstanceLaunchParamsForDistribution
|
||||
}
|
||||
// InstanceLaunchParamsForSupplier 供应商信息
|
||||
@ -61,10 +62,22 @@ type (
|
||||
SupplierID uint64 // 供应商ID
|
||||
Number float64 // 需要数量
|
||||
}
|
||||
// InstanceLaunchParamsForPurchase 采购信息
|
||||
InstanceLaunchParamsForPurchase struct {
|
||||
ID uint64 // 器材ID
|
||||
SupplierID uint64 // 供应商ID
|
||||
Price float64 // 采购单价
|
||||
Number float64 // 采购数量
|
||||
}
|
||||
// InstanceLaunchParamsForDistribution 配送信息
|
||||
InstanceLaunchParamsForDistribution struct {
|
||||
Name, Mobile, Address string
|
||||
}
|
||||
// InstanceExamineParams 审核参数信息
|
||||
InstanceExamineParams struct {
|
||||
Material []*InstanceLaunchParamsForMaterial
|
||||
Purchase []*InstanceLaunchParamsForPurchase
|
||||
}
|
||||
)
|
||||
|
||||
func (c *Instance) publish(kind int, reviewer []string) {
|
||||
@ -83,6 +96,70 @@ func (c *Instance) publish(kind int, reviewer []string) {
|
||||
})
|
||||
}
|
||||
|
||||
func (c *Instance) material(tx *gorm.DB, material []*InstanceLaunchParamsForMaterial, workID uint64) error {
|
||||
// 工单器材信息
|
||||
workMaterials := make([]*model2.WorkMaterial, 0)
|
||||
|
||||
for _, v := range material {
|
||||
if v.ID <= 0 || v.SupplierID <= 0 || v.Number <= 0 {
|
||||
return errors.New("操作错误,器材参数不完全")
|
||||
}
|
||||
workMaterials = append(workMaterials, &model2.WorkMaterial{
|
||||
MaterialID: v.ID, MaterialSupplierID: v.SupplierID, MaterialNumber: v.Number,
|
||||
})
|
||||
}
|
||||
// 处理库存信息
|
||||
if len(workMaterials) > 0 {
|
||||
mManageMaterialSupplier := model.NewManageMaterialSupplier()
|
||||
|
||||
now := time.Now()
|
||||
|
||||
for _, v := range workMaterials {
|
||||
v.WorkID = workID
|
||||
|
||||
if err := model2.UpdatesWhere(mManageMaterialSupplier.ManageMaterialSupplier, map[string]interface{}{
|
||||
"frozen_stock": gorm.Expr("frozen_stock + ?", v.MaterialNumber), "updated_at": now,
|
||||
}, []*model2.ModelWhere{
|
||||
model2.NewWhere("material_id", v.MaterialID),
|
||||
model2.NewWhere("supplier_id", v.MaterialSupplierID),
|
||||
}, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
mWorkMaterial := model.NewWorkMaterial()
|
||||
|
||||
if err := model2.Creates(mWorkMaterial.WorkMaterial, &workMaterials, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
/// purchase 采购操作
|
||||
func (c *Instance) purchase(tx *gorm.DB, purchase []*InstanceLaunchParamsForPurchase) error {
|
||||
mManageMaterialPurchase := model.NewManageMaterialPurchase()
|
||||
|
||||
_purchase := make([]*model2.ManageMaterialPurchase, 0)
|
||||
|
||||
for _, v := range purchase {
|
||||
_purchase = append(_purchase, &model2.ManageMaterialPurchase{
|
||||
UID: c.UID,
|
||||
OrderNo: lib.OrderNo(),
|
||||
MaterialID: v.ID,
|
||||
SupplierID: v.SupplierID,
|
||||
Price: v.Price,
|
||||
Number: v.Number,
|
||||
Remark: "工单采购",
|
||||
})
|
||||
}
|
||||
if len(_purchase) > 0 {
|
||||
if err := model2.Creates(mManageMaterialPurchase.ManageMaterialPurchase, _purchase, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// List 列表信息
|
||||
func (c *Instance) List(materialID uint64, kind, page, pageSize int) (*basic.PageDataResponse, error) {
|
||||
mWorkInstance := model.NewWorkInstance()
|
||||
@ -259,24 +336,12 @@ func (c *Instance) Launch(params *InstanceLaunchParams) error {
|
||||
|
||||
// 工单流程信息
|
||||
mWorkProgress := model.NewWorkProgress()
|
||||
// 工单器材信息
|
||||
workMaterials := make([]*model2.WorkMaterial, 0)
|
||||
|
||||
if mWorkInstance.Kind == model2.WorkInstanceKindForOutside {
|
||||
if params.Supplier.SupplierID <= 0 {
|
||||
return errors.New("操作错误,承修单位不存在")
|
||||
}
|
||||
mWorkInstance.SupplierID = params.Supplier.SupplierID
|
||||
// 内修模块,同步器材库存信息
|
||||
} else if mWorkInstance.Kind == model2.WorkInstanceKindForWithin && params.IsAssist <= 0 {
|
||||
for _, v := range params.Material {
|
||||
if v.ID <= 0 || v.SupplierID <= 0 || v.Number <= 0 {
|
||||
return errors.New("操作错误,器材参数不完全")
|
||||
}
|
||||
workMaterials = append(workMaterials, &model2.WorkMaterial{
|
||||
MaterialID: v.ID, MaterialSupplierID: v.SupplierID, MaterialNumber: v.Number,
|
||||
})
|
||||
}
|
||||
}
|
||||
// 查询工单进度流程
|
||||
// TODO:工单流程
|
||||
@ -302,8 +367,6 @@ func (c *Instance) Launch(params *InstanceLaunchParams) error {
|
||||
mWorkInstance.Status = model2.WorkInstanceStatusForOngoing
|
||||
mWorkInstance.Schedule = nextWorkSchedule.ID
|
||||
}
|
||||
now := time.Now()
|
||||
|
||||
return orm.GetDB().Transaction(func(tx *gorm.DB) error {
|
||||
if err = model2.Create(mWorkInstance.WorkInstance, tx); err != nil {
|
||||
return err
|
||||
@ -318,25 +381,14 @@ func (c *Instance) Launch(params *InstanceLaunchParams) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// 处理库存信息
|
||||
if len(workMaterials) > 0 {
|
||||
mManageMaterialSupplier := model.NewManageMaterialSupplier()
|
||||
|
||||
for _, v := range workMaterials {
|
||||
v.WorkID = mWorkInstance.ID
|
||||
|
||||
if err = model2.UpdatesWhere(mManageMaterialSupplier.ManageMaterialSupplier, map[string]interface{}{
|
||||
"frozen_stock": gorm.Expr("frozen_stock + ?", v.MaterialNumber), "updated_at": now,
|
||||
}, []*model2.ModelWhere{
|
||||
model2.NewWhere("material_id", v.MaterialID),
|
||||
model2.NewWhere("supplier_id", v.MaterialSupplierID),
|
||||
}, tx); err != nil {
|
||||
return err
|
||||
}
|
||||
// 内修模块信息
|
||||
if mWorkInstance.Kind == model2.WorkInstanceKindForWithin && params.IsAssist <= 0 {
|
||||
// 物料信息
|
||||
if err = c.material(tx, params.Material, mWorkInstance.ID); err != nil {
|
||||
return err
|
||||
}
|
||||
mWorkMaterial := model.NewWorkMaterial()
|
||||
|
||||
if err = model2.Creates(mWorkMaterial.WorkMaterial, &workMaterials, tx); err != nil {
|
||||
// 采购信息
|
||||
if err = c.purchase(tx, params.Purchase); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@ -349,7 +401,7 @@ func (c *Instance) Launch(params *InstanceLaunchParams) error {
|
||||
}
|
||||
|
||||
// Examine 审核操作
|
||||
func (c *Instance) Examine(id uint64, status int, remark string, isAssist int) error {
|
||||
func (c *Instance) Examine(id uint64, status int, remark string, isAssist int, params *InstanceExamineParams) error {
|
||||
_status := model2.WorkProgressStatus(status)
|
||||
|
||||
if _status != model2.WorkProgressStatusForAgree && _status != model2.WorkProgressStatusForRefuse {
|
||||
@ -384,8 +436,7 @@ func (c *Instance) Examine(id uint64, status int, remark string, isAssist int) e
|
||||
} else if !isAuth {
|
||||
return errors.New("操作错误,无权限审批")
|
||||
}
|
||||
|
||||
if err = orm.GetDB().Transaction(func(tx *gorm.DB) error {
|
||||
return orm.GetDB().Transaction(func(tx *gorm.DB) error {
|
||||
// 工单流程记录
|
||||
mWorkProgress := model.NewWorkProgress()
|
||||
mWorkProgress.UID = c.UID
|
||||
@ -438,15 +489,23 @@ func (c *Instance) Examine(id uint64, status int, remark string, isAssist int) e
|
||||
return err
|
||||
}
|
||||
}
|
||||
// 处理器材信息
|
||||
if mWorkInstance.Kind == model2.WorkInstanceKindForWithin && isAssist <= 0 {
|
||||
// 物料信息
|
||||
if err = c.material(tx, params.Material, id); err != nil {
|
||||
return err
|
||||
}
|
||||
// 采购信息
|
||||
if err = c.purchase(tx, params.Purchase); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
// 推送通知
|
||||
if nextScheduleInfo != nil {
|
||||
go c.publish(int(mWorkInstance.Kind), nextScheduleInfo.Reviewer)
|
||||
}
|
||||
return nil
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
// Delete 删除操作
|
||||
|
Reference in New Issue
Block a user