|
|
@ -0,0 +1,456 @@ |
|
|
|
package implments |
|
|
|
|
|
|
|
import ( |
|
|
|
"LAPP_ACURA_MOM_BACKEND/db" |
|
|
|
"LAPP_ACURA_MOM_BACKEND/global" |
|
|
|
"LAPP_ACURA_MOM_BACKEND/grmi" |
|
|
|
jitMeta "LAPP_ACURA_MOM_BACKEND/meta/jit" |
|
|
|
omMeta "LAPP_ACURA_MOM_BACKEND/meta/om" |
|
|
|
jitModel "LAPP_ACURA_MOM_BACKEND/models/jit" |
|
|
|
omModel "LAPP_ACURA_MOM_BACKEND/models/om" |
|
|
|
"fmt" |
|
|
|
"github.com/go-xorm/xorm" |
|
|
|
"sort" |
|
|
|
"strings" |
|
|
|
) |
|
|
|
|
|
|
|
type SeatQuery_PackOrderSummary struct { |
|
|
|
PackOrderId string `json:"SeatQuery_PackOrderId"` // 包装单号
|
|
|
|
QualityCheckTime grmi.DateTime `json:"SeatQuery_QualityCheckTime"` // 目检时间
|
|
|
|
PackTime grmi.DateTime `json:"SeatQuery_PackTime"` // 打包时间
|
|
|
|
ShipOrderId string `json:"SeatQuery_ShipOrderId"` // 发运单号
|
|
|
|
ShipTime grmi.DateTime `json:"SeatQuery_ShipTime"` // 发运时间
|
|
|
|
ShipType string `json:"SeatQuery_ShipType` // 发运模式
|
|
|
|
ProductFamilies string `json:"SeatQuery_ProductFamilies"` // 座椅关联的派生
|
|
|
|
} |
|
|
|
|
|
|
|
type ProductFamilyInventoryQuery_ProductFamilyStatistics struct { |
|
|
|
ProductFamilyId string `json:"ProductFamilyInventoryQuery_ProductFamilyId"` // 派生号
|
|
|
|
InventoryQuantity float64 `json:"ProductFamilyInventoryQuery_InventoryQuantity"` // 库存数量
|
|
|
|
PackOrders []ProductFamilyInventoryQuery_PackOrderSummary `json:"ProductFamilyInventoryQuery_PackOrders"` // 派生关联的包装单
|
|
|
|
} |
|
|
|
|
|
|
|
type ProductFamilyInventoryQuery_PackOrderSummary struct { |
|
|
|
InventoryQuantity float64 `json:"ProductFamilyInventoryQuery_InventoryQuantity"` // 库存数量
|
|
|
|
PackOrderId string `json:"ProductFamilyInventoryQuery_PackOrderId"` // 包装单号
|
|
|
|
PackStatus int `json:"ProductFamilyInventoryQuery_PackStatus"` // 包装状态
|
|
|
|
PackTime *grmi.DateTime `json:"ProductFamilyInventoryQuery_PackTime"` // 包装时间
|
|
|
|
ShipOrderId string `json:"ProductFamilyInventoryQuery_ShipOrderId"` // 发运单号
|
|
|
|
ShipTime *grmi.DateTime `json:"ProductFamilyInventoryQuery_ShipTime"` // 发运时间
|
|
|
|
ShipType string `json:"ProductFamilyInventoryQuery_ShipType"` // 发运模式
|
|
|
|
Seats []ProductFamilyInventoryQuery_SeatSummary `json:"ProductFamilyInventoryQuery_Seats"` // 包装单关联的座椅
|
|
|
|
} |
|
|
|
|
|
|
|
type ProductFamilyInventoryQuery_SeatSummary struct { |
|
|
|
SerialOrderId string `json:"ProductFamilyInventoryQuery_SerialOrderId"` // 座椅条码
|
|
|
|
} |
|
|
|
|
|
|
|
type wrapper_SerialOrder struct { |
|
|
|
omModel.SerialOrder `xorm:"extends"` |
|
|
|
omModel.SerialOrderStatus `xorm:"extends"` |
|
|
|
jitModel.PackOrderItemLst `xorm:"extends"` |
|
|
|
} |
|
|
|
|
|
|
|
type wrapper_PackOrder struct { |
|
|
|
jitModel.PackOrder `xorm:"extends"` |
|
|
|
jitModel.PackOrderStatus `xorm:"extends"` |
|
|
|
jitModel.ShipOrderDataLst `xorm:"extends"` |
|
|
|
ProductFamilyKey string `xorm:"-"` |
|
|
|
} |
|
|
|
|
|
|
|
func (packOrder *wrapper_PackOrder) PackStatus() int { |
|
|
|
|
|
|
|
if packOrder.PackOrderStatus.Status == 80 { |
|
|
|
if packOrder.PackOrderStatus.ShipStatus < 80 { |
|
|
|
return 1 |
|
|
|
} else if packOrder.PackOrderStatus.ShipStatus == 80 { |
|
|
|
return 2 |
|
|
|
} else { |
|
|
|
return 3 |
|
|
|
} |
|
|
|
} |
|
|
|
return 0 |
|
|
|
} |
|
|
|
|
|
|
|
func (packOrder *wrapper_PackOrder) PackTime() *grmi.DateTime { |
|
|
|
|
|
|
|
if packOrder.PackOrderStatus.Status == 80 { |
|
|
|
return &packOrder.PackOrder.CloseTime |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
func (packOrder *wrapper_PackOrder) IsInventory() bool { |
|
|
|
|
|
|
|
return packOrder.PackOrderStatus.Status == 80 && packOrder.PackOrderStatus.ShipStatus < 80 |
|
|
|
} |
|
|
|
|
|
|
|
type wrapper_ShipOrder struct { |
|
|
|
jitModel.ShipOrder `xorm:"extends"` |
|
|
|
jitModel.ShipOrderStatus `xorm:"extends"` |
|
|
|
} |
|
|
|
|
|
|
|
func (shipOrder *wrapper_ShipOrder) ShipTime() *grmi.DateTime { |
|
|
|
|
|
|
|
if shipOrder.ShipOrderStatus.Status == 80 { |
|
|
|
return &shipOrder.ShipOrder.CloseTime |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
/****************************************************************************** |
|
|
|
* |
|
|
|
* @Struct Name : CustomizedQueryServiceImplement |
|
|
|
*----------------------------------------------------------------------------- |
|
|
|
* |
|
|
|
* @Description : CustomizedQuery的服务实现 |
|
|
|
* |
|
|
|
* |
|
|
|
* @Author : chenglei.wei@le-it.com.cn |
|
|
|
* |
|
|
|
* @Date : 2022-03-09 10:44 |
|
|
|
* |
|
|
|
******************************************************************************/ |
|
|
|
type CustomizedQueryServiceImplement struct { |
|
|
|
} |
|
|
|
|
|
|
|
/****************************************************************************** |
|
|
|
* |
|
|
|
* @Function Name : NewCustomizedQueryServiceImplement |
|
|
|
*----------------------------------------------------------------------------- |
|
|
|
* |
|
|
|
* @Description : 创建一个CustomizedQueryServiceImplement实例 |
|
|
|
* |
|
|
|
* @Return Value : CustomizedQueryServiceImplement实例 |
|
|
|
* |
|
|
|
* @Author : chenglei.wei@le-it.com.cn |
|
|
|
* |
|
|
|
* @Date : 2022-03-09 11:02 |
|
|
|
* |
|
|
|
******************************************************************************/ |
|
|
|
func NewCustomizedQueryServiceImplement() *CustomizedQueryServiceImplement { |
|
|
|
return &CustomizedQueryServiceImplement{} |
|
|
|
} |
|
|
|
|
|
|
|
func (impl *CustomizedQueryServiceImplement) querySerialOrdersWithMapping(user *global.User, session *xorm.Session, projectId string) (shipOrders []wrapper_ShipOrder, packOrderGroups map[string][]*wrapper_PackOrder, serialOrderGroups map[string][]*wrapper_SerialOrder, productFamilyKeyMapping map[string][]string, err error) { |
|
|
|
|
|
|
|
// 查询座椅-座椅状态-包装单项
|
|
|
|
serialOrders := make([]wrapper_SerialOrder, 0, 1000) |
|
|
|
{ |
|
|
|
query := session.Table(omMeta.SerialOrder.TableName) |
|
|
|
query = query.Join("INNER", omMeta.SerialOrderStatus.TableName, fmt.Sprintf("%s = %s and %s = %s", omMeta.SerialOrder_PlantNr.ColumnName, omMeta.SerialOrderStatus_PlantNr.ColumnName, omMeta.SerialOrder_SerialOrderId.ColumnName, omMeta.SerialOrderStatus_SerialOrderId.ColumnName)) |
|
|
|
query = query.Join("LEFT OUTER", jitMeta.PackOrderItemLst.TableName, fmt.Sprintf("%s = %s and %s = %s", omMeta.SerialOrder_PlantNr.ColumnName, jitMeta.PackOrderItemLst_PlantNr.ColumnName, omMeta.SerialOrder_SerialOrderId.ColumnName, jitMeta.PackOrderItemLst_SerialOrderId.ColumnName)) |
|
|
|
query = query.Where(fmt.Sprintf("%s = ?", omMeta.SerialOrder_PlantNr.ColumnName), user.PlantNr) |
|
|
|
query = query.Where(fmt.Sprintf("%s <> 'PRE'", omMeta.SerialOrder_OrderType.ColumnName)) |
|
|
|
query = query.Where(fmt.Sprintf("%s <> 1", omMeta.SerialOrder_GenerateFlag.ColumnName)) |
|
|
|
if projectId != "" { |
|
|
|
query = query.Where(fmt.Sprintf("%s = ?", omMeta.SerialOrder_ProjectId.ColumnName), projectId) |
|
|
|
} |
|
|
|
err = query.Find(&serialOrders) |
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
// 查询包装单-包装单状态-发运单项
|
|
|
|
packOrders := make([]wrapper_PackOrder, 0, 1000) |
|
|
|
{ |
|
|
|
query := session.Table(jitMeta.PackOrder.TableName) |
|
|
|
query = query.Join("INNER", jitMeta.PackOrderStatus.TableName, fmt.Sprintf("%s = %s and %s = %s", jitMeta.PackOrder_PlantNr.ColumnName, jitMeta.PackOrderStatus_PlantNr.ColumnName, jitMeta.PackOrder_PackOrderId.ColumnName, jitMeta.PackOrderStatus_PackOrderId.ColumnName)) |
|
|
|
query = query.Join("LEFT OUTER", jitMeta.ShipOrderDataLst.TableName, fmt.Sprintf("%s = %s and %s = %s", jitMeta.PackOrder_PlantNr.ColumnName, jitMeta.ShipOrderDataLst_PlantNr.ColumnName, jitMeta.PackOrder_PackOrderId.ColumnName, jitMeta.ShipOrderDataLst_PackOrderId.ColumnName)) |
|
|
|
query = query.Where(fmt.Sprintf("%s = ?", jitMeta.PackOrder_PlantNr.ColumnName), user.PlantNr) |
|
|
|
if projectId != "" { |
|
|
|
query = query.Where(fmt.Sprintf("%s = ?", jitMeta.PackOrder_ProjectId.ColumnName), projectId) |
|
|
|
} |
|
|
|
err = query.Find(&packOrders) |
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
// 查询发运单-发运单状态
|
|
|
|
allShipOrders := make([]wrapper_ShipOrder, 0, 1000) |
|
|
|
{ |
|
|
|
query := session.Table(jitMeta.ShipOrder.TableName) |
|
|
|
query = query.Join("INNER", jitMeta.ShipOrderStatus.TableName, fmt.Sprintf("%s = %s and %s = %s", jitMeta.ShipOrder_PlantNr.ColumnName, jitMeta.ShipOrderStatus_PlantNr.ColumnName, jitMeta.ShipOrder_ShipOrderId.ColumnName, jitMeta.ShipOrderStatus_ShipOrderId.ColumnName)) |
|
|
|
query = query.Where(fmt.Sprintf("%s = ?", jitMeta.ShipOrder_PlantNr.ColumnName), user.PlantNr) |
|
|
|
if projectId != "" { |
|
|
|
query = query.Where(fmt.Sprintf("%s = ?", jitMeta.ShipOrder_ProjectId.ColumnName), projectId) |
|
|
|
} |
|
|
|
err = query.Find(&allShipOrders) |
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 合并正式发运单和预发运单
|
|
|
|
shipOrderMapping := make(map[string]wrapper_ShipOrder) |
|
|
|
|
|
|
|
for _, shipOrder := range shipOrders { |
|
|
|
if shipOrder.ShipType == "ADVANCE" { |
|
|
|
shipOrderMapping[shipOrder.ShipOrder.ShipOrderId] = shipOrder |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for _, shipOrder := range shipOrders { |
|
|
|
if shipOrder.ShipType == "FORMAL" { |
|
|
|
if _, ok := shipOrderMapping[shipOrder.ShipOrder.SourceId]; ok { |
|
|
|
delete(shipOrderMapping, shipOrder.ShipOrder.SourceId) |
|
|
|
} |
|
|
|
shipOrderMapping[shipOrder.ShipOrder.ShipOrderId] = shipOrder |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
shipOrders = make([]wrapper_ShipOrder, 0, 100) |
|
|
|
for _, shipOrder := range shipOrderMapping { |
|
|
|
shipOrders = append(shipOrders, shipOrder) |
|
|
|
} |
|
|
|
|
|
|
|
// 查询包装单模板项
|
|
|
|
templateItems := make([]jitModel.PackTemplateItemLst, 0, 10) |
|
|
|
{ |
|
|
|
query := session.Table(jitMeta.PackTemplateItemLst.TableName) |
|
|
|
query = query.Select(fmt.Sprintf("%s.*", jitMeta.PackTemplateItemLst.TableName)) |
|
|
|
query = query.Join("INNER", jitMeta.PackTemplate.TableName, fmt.Sprintf("%s = %s and %s = %s", jitMeta.PackTemplateItemLst_PlantNr.ColumnName, jitMeta.PackTemplate_PlantNr.ColumnName, jitMeta.PackTemplateItemLst_PackTemplateId.ColumnName, jitMeta.PackTemplate_PackTemplateId.ColumnName)) |
|
|
|
query = query.Where(fmt.Sprintf("%s = ?", jitMeta.PackTemplate_PlantNr.ColumnName), user.PlantNr) |
|
|
|
query = query.Where(fmt.Sprintf("%s = 1", jitMeta.PackTemplate_EnabledToggle.ColumnName)) |
|
|
|
if projectId != "" { |
|
|
|
query = query.Where(fmt.Sprintf("%s = ?", jitMeta.PackTemplate_ProjectId.ColumnName), projectId) |
|
|
|
} |
|
|
|
err = query.Find(&templateItems) |
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
// 按包装单模板分组包装单模板项
|
|
|
|
templateItemGroups := make(map[string][]*jitModel.PackTemplateItemLst) |
|
|
|
for i := 0; i < len(templateItems); i++ { |
|
|
|
templateItem := templateItems[i] |
|
|
|
group, ok := templateItemGroups[templateItem.PackTemplateId] |
|
|
|
if !ok { |
|
|
|
group = make([]*jitModel.PackTemplateItemLst, 0, 10) |
|
|
|
} |
|
|
|
templateItemGroups[templateItem.PackTemplateId] = append(group, &templateItems[i]) |
|
|
|
} |
|
|
|
// 计算系统中现有派生
|
|
|
|
productFamilyKeyMapping = make(map[string][]string) |
|
|
|
for packTemplateId, group := range templateItemGroups { |
|
|
|
parts := make([]string, 0, 10) |
|
|
|
for _, templateItem := range group { |
|
|
|
parts = append(parts, templateItem.PartId) |
|
|
|
} |
|
|
|
sort.Strings(parts) |
|
|
|
productFamilyKey := strings.Join(parts, ",") |
|
|
|
packTemplateIdGroup, ok := productFamilyKeyMapping[productFamilyKey] |
|
|
|
if !ok { |
|
|
|
packTemplateIdGroup = make([]string, 0, 10) |
|
|
|
} |
|
|
|
productFamilyKeyMapping[productFamilyKey] = append(packTemplateIdGroup, packTemplateId) |
|
|
|
} |
|
|
|
// 按发运单分组包装单, key为"" 为没有关联到发运单的包装单(不应该出现)
|
|
|
|
packOrderGroups = make(map[string][]*wrapper_PackOrder) |
|
|
|
for i := 0; i < len(packOrders); i++ { |
|
|
|
packOrder := packOrders[i] |
|
|
|
group, ok := packOrderGroups[packOrder.ShipOrderId] |
|
|
|
if !ok { |
|
|
|
group = make([]*wrapper_PackOrder, 0, 10) |
|
|
|
} |
|
|
|
group = append(group, &packOrders[i]) |
|
|
|
packOrderGroups[packOrder.ShipOrderId] = group |
|
|
|
} |
|
|
|
// 按包装单分组座椅, key为"" 为没有关联到包装单的座椅
|
|
|
|
serialOrderGroups = make(map[string][]*wrapper_SerialOrder) |
|
|
|
for i := 0; i < len(serialOrders); i++ { |
|
|
|
serialOrder := serialOrders[i] |
|
|
|
group, ok := serialOrderGroups[serialOrder.PackOrderId] |
|
|
|
if !ok { |
|
|
|
group = make([]*wrapper_SerialOrder, 0, 10) |
|
|
|
} |
|
|
|
group = append(group, &serialOrders[i]) |
|
|
|
serialOrderGroups[serialOrder.PackOrderId] = group |
|
|
|
} |
|
|
|
// 计算包装单的派生
|
|
|
|
for i := 0; i < len(packOrders); i++ { |
|
|
|
if serialOrderGroup, ok := serialOrderGroups[packOrders[i].PackOrder.PackOrderId]; ok { |
|
|
|
parts := make([]string, 0, 10) |
|
|
|
for _, serialOrder := range serialOrderGroup { |
|
|
|
parts = append(parts, serialOrder.PartId) |
|
|
|
} |
|
|
|
sort.Strings(parts) |
|
|
|
packOrders[i].ProductFamilyKey = strings.Join(parts, ",") |
|
|
|
} |
|
|
|
} |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
/****************************************************************************** |
|
|
|
* |
|
|
|
* @Reference LAPP_ACURA_MOM_BACKEND/services/report/CustomizedQueryService.ProductFamilyInventoryQuery |
|
|
|
* |
|
|
|
******************************************************************************/ |
|
|
|
func (impl *CustomizedQueryServiceImplement) ProductFamilyInventoryQuery(user *global.User, productFamilyId string, projectId string, serialOrderId string) (result []ProductFamilyInventoryQuery_ProductFamilyStatistics, err error) { |
|
|
|
|
|
|
|
productFamilyId = strings.TrimSpace(productFamilyId) |
|
|
|
projectId = strings.TrimSpace(projectId) |
|
|
|
serialOrderId = strings.TrimSpace(serialOrderId) |
|
|
|
|
|
|
|
engine := db.Eloquent.Master() |
|
|
|
session := engine.NewSession() |
|
|
|
engine.ShowSQL(true) |
|
|
|
|
|
|
|
shipOrders, packOrderGroups, serialOrderGroups, productFamilyKeyMapping, err := impl.querySerialOrdersWithMapping(user, session, projectId) |
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
productFamilyStatisticsMapping := make(map[string]*ProductFamilyInventoryQuery_ProductFamilyStatistics) |
|
|
|
|
|
|
|
for _, packTemplateIdGroup := range productFamilyKeyMapping { |
|
|
|
for _, packTemplateId := range packTemplateIdGroup { |
|
|
|
if productFamilyId != "" && packTemplateId != packTemplateId { |
|
|
|
continue |
|
|
|
} |
|
|
|
productFamilyStatistics := ProductFamilyInventoryQuery_ProductFamilyStatistics{ |
|
|
|
ProductFamilyId: packTemplateId, |
|
|
|
PackOrders: make([]ProductFamilyInventoryQuery_PackOrderSummary, 0, 10), |
|
|
|
} |
|
|
|
productFamilyStatisticsMapping[packTemplateId] = &productFamilyStatistics |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
for _, shipOrder := range shipOrders { |
|
|
|
packOrderGroup, ok := packOrderGroups[shipOrder.ShipOrder.ShipOrderId] |
|
|
|
if !ok { |
|
|
|
continue |
|
|
|
} |
|
|
|
delete(packOrderGroups, shipOrder.ShipOrder.ShipOrderId) |
|
|
|
for _, packOrder := range packOrderGroup { |
|
|
|
// 没找到座椅
|
|
|
|
serialOrderGroup, ok := serialOrderGroups[packOrder.PackOrder.PackOrderId] |
|
|
|
if !ok { |
|
|
|
continue |
|
|
|
} |
|
|
|
delete(serialOrderGroups, packOrder.PackOrder.PackOrderId) |
|
|
|
seats := make([]ProductFamilyInventoryQuery_SeatSummary, 0, 10) |
|
|
|
for _, serialOrder := range serialOrderGroup { |
|
|
|
if serialOrderId == "" || serialOrderId == serialOrder.SerialOrder.SerialOrderId { |
|
|
|
seats = append(seats, ProductFamilyInventoryQuery_SeatSummary{ |
|
|
|
SerialOrderId: serialOrder.SerialOrder.SerialOrderId, |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
// 没有匹配的座椅
|
|
|
|
if len(seats) <= 0 { |
|
|
|
continue |
|
|
|
} |
|
|
|
var inventoryQuantity float64 = 0 |
|
|
|
if packOrder.IsInventory() { |
|
|
|
inventoryQuantity = float64(len(seats)) |
|
|
|
} |
|
|
|
// 没找到派生
|
|
|
|
packTemplateIds, ok := productFamilyKeyMapping[packOrder.ProductFamilyKey] |
|
|
|
if !ok { |
|
|
|
continue |
|
|
|
} |
|
|
|
packOrderSummary := ProductFamilyInventoryQuery_PackOrderSummary{ |
|
|
|
PackOrderId: packOrder.PackOrder.PackOrderId, |
|
|
|
InventoryQuantity: inventoryQuantity, |
|
|
|
PackStatus: packOrder.PackStatus(), |
|
|
|
PackTime: packOrder.PackTime(), |
|
|
|
ShipOrderId: shipOrder.ShipOrder.ShipOrderId, |
|
|
|
ShipTime: shipOrder.ShipTime(), |
|
|
|
ShipType: shipOrder.ShipType, |
|
|
|
Seats: seats, |
|
|
|
} |
|
|
|
for _, packTemplateId := range packTemplateIds { |
|
|
|
// 没找到模板
|
|
|
|
productFamilyStatistics, ok := productFamilyStatisticsMapping[packTemplateId] |
|
|
|
if !ok { |
|
|
|
continue |
|
|
|
} |
|
|
|
productFamilyStatisticsMapping[packTemplateId].InventoryQuantity += inventoryQuantity |
|
|
|
productFamilyStatisticsMapping[packTemplateId].PackOrders = append(productFamilyStatistics.PackOrders, packOrderSummary) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
packOrderGroup, ok := packOrderGroups[""] // 未关联发运单的包装单
|
|
|
|
if ok { |
|
|
|
for _, packOrder := range packOrderGroup { |
|
|
|
// 没找到座椅
|
|
|
|
serialOrderGroup, ok := serialOrderGroups[packOrder.PackOrder.PackOrderId] |
|
|
|
if !ok { |
|
|
|
continue |
|
|
|
} |
|
|
|
delete(serialOrderGroups, packOrder.PackOrder.PackOrderId) |
|
|
|
seats := make([]ProductFamilyInventoryQuery_SeatSummary, 0, 10) |
|
|
|
for _, serialOrder := range serialOrderGroup { |
|
|
|
if serialOrderId == "" || serialOrderId == serialOrder.SerialOrder.SerialOrderId { |
|
|
|
seats = append(seats, ProductFamilyInventoryQuery_SeatSummary{ |
|
|
|
SerialOrderId: serialOrder.SerialOrder.SerialOrderId, |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
// 没有匹配的座椅
|
|
|
|
if len(seats) <= 0 { |
|
|
|
continue |
|
|
|
} |
|
|
|
var inventoryQuantity float64 = 0 |
|
|
|
if packOrder.IsInventory() { |
|
|
|
inventoryQuantity = float64(len(seats)) |
|
|
|
} |
|
|
|
// 没找到派生
|
|
|
|
packTemplateIds, ok := productFamilyKeyMapping[packOrder.ProductFamilyKey] |
|
|
|
if !ok { |
|
|
|
continue |
|
|
|
} |
|
|
|
packOrderSummary := ProductFamilyInventoryQuery_PackOrderSummary{ |
|
|
|
PackOrderId: packOrder.PackOrder.PackOrderId, |
|
|
|
InventoryQuantity: inventoryQuantity, |
|
|
|
PackStatus: packOrder.PackStatus(), |
|
|
|
PackTime: packOrder.PackTime(), |
|
|
|
Seats: seats, |
|
|
|
} |
|
|
|
for _, packTemplateId := range packTemplateIds { |
|
|
|
// 没找到模板
|
|
|
|
productFamilyStatistics, ok := productFamilyStatisticsMapping[packTemplateId] |
|
|
|
if !ok { |
|
|
|
continue |
|
|
|
} |
|
|
|
productFamilyStatisticsMapping[packTemplateId].InventoryQuantity += inventoryQuantity |
|
|
|
productFamilyStatisticsMapping[packTemplateId].PackOrders = append(productFamilyStatistics.PackOrders, packOrderSummary) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
result = make([]ProductFamilyInventoryQuery_ProductFamilyStatistics, 0, 1) |
|
|
|
for _, productFamilyStatistics := range productFamilyStatisticsMapping { |
|
|
|
// 如果按座椅查询,则需要过滤到没有座椅的空的派生
|
|
|
|
if serialOrderId == "" || len(productFamilyStatistics.PackOrders) > 0 { |
|
|
|
result = append(result, *productFamilyStatistics) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
/****************************************************************************** |
|
|
|
* |
|
|
|
* @Reference LAPP_ACURA_MOM_BACKEND/services/report/CustomizedQueryService.SeatQuery |
|
|
|
* |
|
|
|
******************************************************************************/ |
|
|
|
func (impl *CustomizedQueryServiceImplement) SeatQuery(user *global.User, serialOrderId string, status string) (result []SeatQuery_PackOrderSummary, err error) { |
|
|
|
|
|
|
|
serialOrderId = strings.TrimSpace(serialOrderId) |
|
|
|
status = strings.TrimSpace(status) |
|
|
|
|
|
|
|
engine := db.Eloquent.Master() |
|
|
|
engine.ShowSQL(true) |
|
|
|
session := engine.NewSession() |
|
|
|
|
|
|
|
//shipOrders, packOrderGroups, serialOrderGroups, productFamilyKeyMapping, err := impl.querySerialOrdersWithMapping(user, session, "")
|
|
|
|
_, _, _, _, err = impl.querySerialOrdersWithMapping(user, session, "") |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
return nil, nil |
|
|
|
} |