feat(shipment): 添加混装功能模块
- 在 shipment 结构体中新增 Mixed 类型字段 - 创建 mixed 包及其相关结构体定义 - 实现混装列表查询、生成等功能接口 - 添加混装箱体和产品的数据模型及操作方法 - 集成客户端调用逻辑并实现 RPC 接口 - 定义混装相关的参数结构体和返回值类型
This commit is contained in:
59
erp/shipment/mixed.go
Normal file
59
erp/shipment/mixed.go
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
package shipment
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"git.kumo.work/shama/service/client"
|
||||||
|
mixed2 "git.kumo.work/shama/service/erp/shipment/mixed"
|
||||||
|
"git.kumo.work/shama/service/lib/bean"
|
||||||
|
)
|
||||||
|
|
||||||
|
type mixed struct {
|
||||||
|
Mixed mixed2.Mixed
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArgsMixedList struct {
|
||||||
|
Page bean.Page
|
||||||
|
Search MixedSearch
|
||||||
|
}
|
||||||
|
type MixedSearch struct {
|
||||||
|
InvoiceSerial string // 出运发票号
|
||||||
|
CreatedStaffIds []int64 // 业务员筛选
|
||||||
|
}
|
||||||
|
type ReplyMixedList struct {
|
||||||
|
List []MixedItem `json:"list"`
|
||||||
|
Total int64 `json:"total"`
|
||||||
|
}
|
||||||
|
type MixedItem struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
ShipmentId int64 `json:"shipmentId"`
|
||||||
|
InvoiceSerial string `json:"invoiceSerial"`
|
||||||
|
CreatedStaffId int64 `json:"createdStaffId"`
|
||||||
|
CreatedAt *time.Time `json:"createdAt"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// List @TITLE 列表
|
||||||
|
func (m *mixed) List(ctx context.Context, args ArgsMixedList) (reply ReplyMixedList, err error) {
|
||||||
|
xClient, err := client.GetClient(m)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = xClient.Call(ctx, "List", args, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArgsMixedGen struct {
|
||||||
|
ShipmentId int64 // 订舱单id
|
||||||
|
StaffId int64 // 业务员id
|
||||||
|
}
|
||||||
|
|
||||||
|
// Gen @TITLE 生成
|
||||||
|
func (m *mixed) Gen(ctx context.Context, args ArgsMixedGen) error {
|
||||||
|
xClient, err := client.GetClient(m)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
reply := 0
|
||||||
|
return xClient.Call(ctx, "Gen", args, &reply)
|
||||||
|
}
|
||||||
112
erp/shipment/mixed/box.go
Normal file
112
erp/shipment/mixed/box.go
Normal file
@@ -0,0 +1,112 @@
|
|||||||
|
package mixed
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"git.kumo.work/shama/service/client"
|
||||||
|
"github.com/shopspring/decimal"
|
||||||
|
)
|
||||||
|
|
||||||
|
type box struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
type BoxItem struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
Serial string `json:"serial"`
|
||||||
|
CustomSerial string `json:"customSerial"`
|
||||||
|
Po string `json:"po"`
|
||||||
|
BlEngName string `json:"blEngName"`
|
||||||
|
InnerNum int64 `json:"innerNum"`
|
||||||
|
OuterBoxCount int64 `json:"outerBoxCount"`
|
||||||
|
Length decimal.Decimal `json:"length"`
|
||||||
|
Width decimal.Decimal `json:"width"`
|
||||||
|
Height decimal.Decimal `json:"height"`
|
||||||
|
Volume decimal.Decimal `json:"volume"`
|
||||||
|
TotalVolume decimal.Decimal `json:"totalVolume"`
|
||||||
|
OuterNum int64 `json:"outerNum"`
|
||||||
|
Products []BoxProduct `json:"products"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type BoxProduct struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
ShipmentProductId int64 `json:"shipmentProductId"`
|
||||||
|
Serial string `json:"serial"`
|
||||||
|
CustomSerial string `json:"customSerial"`
|
||||||
|
Po string `json:"po"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
BlEngName string `json:"blEngName"`
|
||||||
|
ShipmentCount int64 `json:"shipmentCount"`
|
||||||
|
OuterNum int64 `json:"outerNum"`
|
||||||
|
OuterBoxCount int64 `json:"outerBoxCount"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// All @TITLE 获取全部混装
|
||||||
|
func (b *box) All(ctx context.Context, mixedId int64) (reply []BoxItem, err error) {
|
||||||
|
xClient, err := client.GetClient(b)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = xClient.Call(ctx, "All", mixedId, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArgsBoxAdd struct {
|
||||||
|
MixedId int64 // 混装单id
|
||||||
|
BoxAdd
|
||||||
|
}
|
||||||
|
|
||||||
|
type BoxAdd struct {
|
||||||
|
Serial string // 货号
|
||||||
|
CustomSerial string // 客户货号
|
||||||
|
Po string // PO
|
||||||
|
BlEngName string // 提单英文名
|
||||||
|
InnerNum int64 // 内盒入数
|
||||||
|
OuterBoxCount int64 // 箱数
|
||||||
|
Length decimal.Decimal // 长
|
||||||
|
Width decimal.Decimal // 宽
|
||||||
|
Height decimal.Decimal // 高
|
||||||
|
Volume decimal.Decimal // 体积
|
||||||
|
TotalVolume decimal.Decimal // 总体积
|
||||||
|
OuterNum int64 // 外箱入数
|
||||||
|
Products []BoxProductItem // 箱内商品
|
||||||
|
}
|
||||||
|
|
||||||
|
type BoxProductItem struct {
|
||||||
|
ShipmentProductId int64 // 订舱产品id
|
||||||
|
OuterNum int64 // 外箱入数
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add @TITLE 添加费用
|
||||||
|
func (b *box) Add(ctx context.Context, args ArgsBoxAdd) (err error) {
|
||||||
|
xClient, err := client.GetClient(b)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
reply := 0
|
||||||
|
return xClient.Call(ctx, "Add", args, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
|
type ArgsBoxEdit struct {
|
||||||
|
BoxId int64 // 混装单id
|
||||||
|
BoxAdd
|
||||||
|
}
|
||||||
|
|
||||||
|
// Edit @TITLE 编辑
|
||||||
|
func (b *box) Edit(ctx context.Context, args ArgsBoxEdit) (err error) {
|
||||||
|
xClient, err := client.GetClient(b)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
reply := 0
|
||||||
|
return xClient.Call(ctx, "Edit", args, &reply)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Delete @TITLE 删除
|
||||||
|
func (b *box) Delete(ctx context.Context, boxId int64) (err error) {
|
||||||
|
xClient, err := client.GetClient(b)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
reply := 0
|
||||||
|
return xClient.Call(ctx, "Delete", boxId, &reply)
|
||||||
|
}
|
||||||
6
erp/shipment/mixed/mixed.go
Normal file
6
erp/shipment/mixed/mixed.go
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
package mixed
|
||||||
|
|
||||||
|
type Mixed struct {
|
||||||
|
Box box
|
||||||
|
Product product
|
||||||
|
}
|
||||||
55
erp/shipment/mixed/product.go
Normal file
55
erp/shipment/mixed/product.go
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
package mixed
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"git.kumo.work/shama/service/client"
|
||||||
|
"github.com/shopspring/decimal"
|
||||||
|
)
|
||||||
|
|
||||||
|
type product struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
type ProductItem struct {
|
||||||
|
Id int64 `json:"id"`
|
||||||
|
MixedFlag int64 `json:"mixedFlag"`
|
||||||
|
Serial string `json:"serial"`
|
||||||
|
CustomSerial string `json:"customSerial"`
|
||||||
|
Po string `json:"po"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
BlEngName string `json:"blEngName"`
|
||||||
|
ShipmentCount int64 `json:"shipmentCount"`
|
||||||
|
InnerNum *int64 `json:"innerNum"`
|
||||||
|
InnerBoxCount *int64 `json:"innerBoxCount"`
|
||||||
|
OuterNum *int64 `json:"outerNum"`
|
||||||
|
OuterBoxCount int64 `json:"outerBoxCount"`
|
||||||
|
CustomsSerial string `json:"customsSerial"`
|
||||||
|
CustomsName string `json:"customsName"`
|
||||||
|
CustomsDetail string `json:"customsDetail"`
|
||||||
|
CustomsMeasureUnit string `json:"customsMeasureUnit"`
|
||||||
|
ShipmentCountUnit string `json:"shipmentCountUnit"`
|
||||||
|
CustomsGrossWeight decimal.Decimal `json:"customsGrossWeight"`
|
||||||
|
TotalCustomsGrossWeight decimal.Decimal `json:"totalCustomsGrossWeight"`
|
||||||
|
CustomsNetWeight decimal.Decimal `json:"customsNetWeight"`
|
||||||
|
TotalCustomsNetWeight decimal.Decimal `json:"totalCustomsNetWeight"`
|
||||||
|
DomesticSupply string `json:"domesticSupply"`
|
||||||
|
FactoryName string `json:"factoryName"`
|
||||||
|
SalePrice decimal.Decimal `json:"salePrice"`
|
||||||
|
SaleAmount decimal.Decimal `json:"saleAmount"`
|
||||||
|
CustomsPrice decimal.Decimal `json:"customsPrice"`
|
||||||
|
CustomsAmount decimal.Decimal `json:"customsAmount"`
|
||||||
|
OuterLength *decimal.Decimal `json:"outerLength"`
|
||||||
|
OuterWidth *decimal.Decimal `json:"outerWidth"`
|
||||||
|
OuterHeight *decimal.Decimal `json:"outerHeight"`
|
||||||
|
OuterVolume *decimal.Decimal `json:"outerVolume"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// All @TITLE 获取全部产品
|
||||||
|
func (p *product) All(ctx context.Context, mixedId int64) (reply []ProductItem, err error) {
|
||||||
|
xClient, err := client.GetClient(p)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
err = xClient.Call(ctx, "All", mixedId, &reply)
|
||||||
|
return
|
||||||
|
}
|
||||||
@@ -11,4 +11,5 @@ type Shipment struct {
|
|||||||
Customs customs
|
Customs customs
|
||||||
ExchangeSettlement exchangeSettlement
|
ExchangeSettlement exchangeSettlement
|
||||||
Modify modify
|
Modify modify
|
||||||
|
Mixed mixed
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user