|
|
@ -8,41 +8,50 @@ import ( |
|
|
|
omMeta "LAPP_ACURA_MOM_BACKEND/meta/om" |
|
|
|
jitModel "LAPP_ACURA_MOM_BACKEND/models/jit" |
|
|
|
omModel "LAPP_ACURA_MOM_BACKEND/models/om" |
|
|
|
"errors" |
|
|
|
"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 PackingRecordQuery_PackOrderSummary struct { |
|
|
|
PackOrderId string `json:"PackingRecordQuery-PackOrderId"` // 包装单号
|
|
|
|
Status int `json:"PackingRecordQuery-Status"` // 状态
|
|
|
|
PackTime *grmi.DateTime `json:"PackingRecordQuery-PackTime"` // 打包时间
|
|
|
|
LastUser string `json:"PackingRecordQuery-LastUser"` // 操作人
|
|
|
|
} |
|
|
|
|
|
|
|
type SeatQuery_SeatSummary struct { |
|
|
|
SerialOrderId string `json:"SeatQuery-SerialOrderId"` // 座椅条码
|
|
|
|
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"` // 派生关联的包装单
|
|
|
|
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"` // 包装单关联的座椅
|
|
|
|
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"` // 座椅条码
|
|
|
|
SerialOrderId string `json:"ProductFamilyInventoryQuery-SerialOrderId"` // 座椅条码
|
|
|
|
} |
|
|
|
|
|
|
|
type wrapper_SerialOrder struct { |
|
|
@ -51,6 +60,13 @@ type wrapper_SerialOrder struct { |
|
|
|
jitModel.PackOrderItemLst `xorm:"extends"` |
|
|
|
} |
|
|
|
|
|
|
|
func (serialOrder *wrapper_SerialOrder) QualityCheckTime() *grmi.DateTime { |
|
|
|
if serialOrder.QualityCheck != "" { |
|
|
|
return &serialOrder.SerialOrder.QualityCheckTime |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
type wrapper_PackOrder struct { |
|
|
|
jitModel.PackOrder `xorm:"extends"` |
|
|
|
jitModel.PackOrderStatus `xorm:"extends"` |
|
|
@ -98,6 +114,19 @@ func (shipOrder *wrapper_ShipOrder) ShipTime() *grmi.DateTime { |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
type wrapper_PackOrder_Lite struct { |
|
|
|
jitModel.PackOrder `xorm:"extends"` |
|
|
|
jitModel.PackOrderStatus `xorm:"extends"` |
|
|
|
} |
|
|
|
|
|
|
|
func (packOrder *wrapper_PackOrder_Lite) PackTime() *grmi.DateTime { |
|
|
|
|
|
|
|
if packOrder.PackOrderStatus.Status == 80 { |
|
|
|
return &packOrder.PackOrder.CloseTime |
|
|
|
} |
|
|
|
return nil |
|
|
|
} |
|
|
|
|
|
|
|
/****************************************************************************** |
|
|
|
* |
|
|
|
* @Struct Name : CustomizedQueryServiceImplement |
|
|
@ -305,7 +334,7 @@ func (impl *CustomizedQueryServiceImplement) ProductFamilyInventoryQuery(user *g |
|
|
|
|
|
|
|
for _, packTemplateIdGroup := range productFamilyKeyMapping { |
|
|
|
for _, packTemplateId := range packTemplateIdGroup { |
|
|
|
if productFamilyId != "" && packTemplateId != packTemplateId { |
|
|
|
if productFamilyId != "" && packTemplateId != productFamilyId { |
|
|
|
continue |
|
|
|
} |
|
|
|
productFamilyStatistics := ProductFamilyInventoryQuery_ProductFamilyStatistics{ |
|
|
@ -345,8 +374,8 @@ func (impl *CustomizedQueryServiceImplement) ProductFamilyInventoryQuery(user *g |
|
|
|
if packOrder.IsInventory() { |
|
|
|
inventoryQuantity = float64(len(seats)) |
|
|
|
} |
|
|
|
packTemplateIdLst, ok := productFamilyKeyMapping[packOrder.ProductFamilyKey] |
|
|
|
// 没找到派生
|
|
|
|
packTemplateIds, ok := productFamilyKeyMapping[packOrder.ProductFamilyKey] |
|
|
|
if !ok { |
|
|
|
continue |
|
|
|
} |
|
|
@ -360,7 +389,7 @@ func (impl *CustomizedQueryServiceImplement) ProductFamilyInventoryQuery(user *g |
|
|
|
ShipType: shipOrder.ShipType, |
|
|
|
Seats: seats, |
|
|
|
} |
|
|
|
for _, packTemplateId := range packTemplateIds { |
|
|
|
for _, packTemplateId := range packTemplateIdLst { |
|
|
|
// 没找到模板
|
|
|
|
productFamilyStatistics, ok := productFamilyStatisticsMapping[packTemplateId] |
|
|
|
if !ok { |
|
|
@ -396,8 +425,8 @@ func (impl *CustomizedQueryServiceImplement) ProductFamilyInventoryQuery(user *g |
|
|
|
if packOrder.IsInventory() { |
|
|
|
inventoryQuantity = float64(len(seats)) |
|
|
|
} |
|
|
|
packTemplateIdLst, ok := productFamilyKeyMapping[packOrder.ProductFamilyKey] |
|
|
|
// 没找到派生
|
|
|
|
packTemplateIds, ok := productFamilyKeyMapping[packOrder.ProductFamilyKey] |
|
|
|
if !ok { |
|
|
|
continue |
|
|
|
} |
|
|
@ -408,7 +437,7 @@ func (impl *CustomizedQueryServiceImplement) ProductFamilyInventoryQuery(user *g |
|
|
|
PackTime: packOrder.PackTime(), |
|
|
|
Seats: seats, |
|
|
|
} |
|
|
|
for _, packTemplateId := range packTemplateIds { |
|
|
|
for _, packTemplateId := range packTemplateIdLst { |
|
|
|
// 没找到模板
|
|
|
|
productFamilyStatistics, ok := productFamilyStatisticsMapping[packTemplateId] |
|
|
|
if !ok { |
|
|
@ -436,21 +465,169 @@ func (impl *CustomizedQueryServiceImplement) ProductFamilyInventoryQuery(user *g |
|
|
|
* @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) { |
|
|
|
func (impl *CustomizedQueryServiceImplement) SeatQuery(user *global.User, serialOrderId string, status string) (result []SeatQuery_SeatSummary, err error) { |
|
|
|
|
|
|
|
serialOrderId = strings.TrimSpace(serialOrderId) |
|
|
|
status = strings.TrimSpace(status) |
|
|
|
status = strings.ToLower(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, "") |
|
|
|
switch status { |
|
|
|
case "": |
|
|
|
break |
|
|
|
case "packed": |
|
|
|
break |
|
|
|
case "ok": |
|
|
|
break |
|
|
|
default: |
|
|
|
errors.New("状态查询条件错误") |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
shipOrders, packOrderGroups, serialOrderGroups, productFamilyKeyMapping, err := impl.querySerialOrdersWithMapping(user, session, "") |
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
return nil, nil |
|
|
|
productFamilyStatisticsMapping := make(map[string]*ProductFamilyInventoryQuery_ProductFamilyStatistics) |
|
|
|
|
|
|
|
result = make([]SeatQuery_SeatSummary, 0, 1000) |
|
|
|
for _, packTemplateIdGroup := range productFamilyKeyMapping { |
|
|
|
for _, packTemplateId := range packTemplateIdGroup { |
|
|
|
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 { |
|
|
|
if status == "packed" && packOrder.PackOrderStatus.Status != 80 { |
|
|
|
continue |
|
|
|
} |
|
|
|
// 没找到座椅
|
|
|
|
serialOrderGroup, ok := serialOrderGroups[packOrder.PackOrder.PackOrderId] |
|
|
|
if !ok { |
|
|
|
continue |
|
|
|
} |
|
|
|
delete(serialOrderGroups, packOrder.PackOrder.PackOrderId) |
|
|
|
var packTemplateIds string |
|
|
|
packTemplateIdLst, ok := productFamilyKeyMapping[packOrder.ProductFamilyKey] |
|
|
|
if ok { |
|
|
|
packTemplateIds = strings.Join(packTemplateIdLst, ",") |
|
|
|
} |
|
|
|
for _, serialOrder := range serialOrderGroup { |
|
|
|
if (serialOrderId == "" || serialOrderId == serialOrder.SerialOrder.SerialOrderId) && (status != "ok" || serialOrder.SerialOrder.QualityCheck == "OK") { |
|
|
|
result = append(result, SeatQuery_SeatSummary{ |
|
|
|
SerialOrderId: serialOrder.SerialOrder.SerialOrderId, |
|
|
|
QualityCheckTime: serialOrder.QualityCheckTime(), |
|
|
|
PackOrderId: packOrder.PackOrder.PackOrderId, |
|
|
|
PackTime: packOrder.PackTime(), |
|
|
|
ProductFamilies: packTemplateIds, |
|
|
|
ShipOrderId: shipOrder.ShipOrder.ShipOrderId, |
|
|
|
ShipTime: shipOrder.ShipTime(), |
|
|
|
ShipType: shipOrder.ShipType, |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
packOrderGroup, ok := packOrderGroups[""] // 未关联发运单的包装单
|
|
|
|
if ok { |
|
|
|
for _, packOrder := range packOrderGroup { |
|
|
|
if status == "packed" && packOrder.PackOrderStatus.Status != 80 { |
|
|
|
continue |
|
|
|
} |
|
|
|
// 没找到座椅
|
|
|
|
serialOrderGroup, ok := serialOrderGroups[packOrder.PackOrder.PackOrderId] |
|
|
|
if !ok { |
|
|
|
continue |
|
|
|
} |
|
|
|
delete(serialOrderGroups, packOrder.PackOrder.PackOrderId) |
|
|
|
|
|
|
|
var packTemplateIds string |
|
|
|
packTemplateIdLst, ok := productFamilyKeyMapping[packOrder.ProductFamilyKey] |
|
|
|
if ok { |
|
|
|
packTemplateIds = strings.Join(packTemplateIdLst, ",") |
|
|
|
} |
|
|
|
for _, serialOrder := range serialOrderGroup { |
|
|
|
if (serialOrderId == "" || serialOrderId == serialOrder.SerialOrder.SerialOrderId) && (status != "ok" || serialOrder.SerialOrder.QualityCheck == "OK") { |
|
|
|
result = append(result, SeatQuery_SeatSummary{ |
|
|
|
SerialOrderId: serialOrder.SerialOrder.SerialOrderId, |
|
|
|
QualityCheckTime: serialOrder.QualityCheckTime(), |
|
|
|
PackOrderId: packOrder.PackOrder.PackOrderId, |
|
|
|
PackTime: packOrder.PackTime(), |
|
|
|
ProductFamilies: packTemplateIds, |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
if status != "packed" { |
|
|
|
serialOrderGroup, ok := serialOrderGroups[""] // 未关联发运单的包装单
|
|
|
|
if ok { |
|
|
|
for _, serialOrder := range serialOrderGroup { |
|
|
|
if (serialOrderId == "" || serialOrderId == serialOrder.SerialOrder.SerialOrderId) && (status != "ok" || serialOrder.SerialOrder.QualityCheck == "OK") { |
|
|
|
result = append(result, SeatQuery_SeatSummary{ |
|
|
|
SerialOrderId: serialOrder.SerialOrder.SerialOrderId, |
|
|
|
QualityCheckTime: serialOrder.QualityCheckTime(), |
|
|
|
}) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
/****************************************************************************** |
|
|
|
* |
|
|
|
* @Reference LAPP_ACURA_MOM_BACKEND/services/report/CustomizedQueryService.PackingRecordQuery |
|
|
|
* |
|
|
|
******************************************************************************/ |
|
|
|
func (impl *CustomizedQueryServiceImplement) PackingRecordQuery(user *global.User, serialOrderId string) (result []PackingRecordQuery_PackOrderSummary, err error) { |
|
|
|
|
|
|
|
serialOrderId = strings.TrimSpace(serialOrderId) |
|
|
|
|
|
|
|
engine := db.Eloquent.Master() |
|
|
|
engine.ShowSQL(true) |
|
|
|
session := engine.NewSession() |
|
|
|
|
|
|
|
packOrders := make([]wrapper_PackOrder_Lite, 0, 1000) |
|
|
|
{ |
|
|
|
query := session.Table(omMeta.SerialOrder.TableName) |
|
|
|
query = query.Select(fmt.Sprintf("%s.*", jitMeta.PackOrder.TableName)) |
|
|
|
query = query.Select(fmt.Sprintf("%s.*", jitMeta.PackOrderStatus.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.Join("LEFT OUTER", jitMeta.PackOrder.TableName, fmt.Sprintf("%s = %s and %s = %s", jitMeta.PackOrderItemLst_PlantNr.ColumnName, jitMeta.PackOrder_PlantNr.ColumnName, jitMeta.PackOrderItemLst_PackOrderId.ColumnName, jitMeta.PackOrder_PackOrderId.ColumnName)) |
|
|
|
query = query.Join("LEFT OUTER", jitMeta.PackOrderStatus.TableName, fmt.Sprintf("%s = %s and %s = %s", jitMeta.PackOrderItemLst_PlantNr.ColumnName, jitMeta.PackOrderStatus_PlantNr.ColumnName, jitMeta.PackOrderItemLst_PackOrderId.ColumnName, jitMeta.PackOrderStatus_PackOrderId.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)) |
|
|
|
query = query.Where(fmt.Sprintf("%s = ?", omMeta.SerialOrder_SerialOrderId.ColumnName), serialOrderId) |
|
|
|
err = query.Find(&packOrders) |
|
|
|
if err != nil { |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
result = make([]PackingRecordQuery_PackOrderSummary, 0, 1000) |
|
|
|
for _, packOrder := range packOrders { |
|
|
|
result = append(result, PackingRecordQuery_PackOrderSummary{ |
|
|
|
PackOrderId: packOrder.PackOrder.PackOrderId, |
|
|
|
Status: packOrder.PackOrderStatus.Status, |
|
|
|
PackTime: packOrder.PackTime(), |
|
|
|
LastUser: packOrder.PackOrder.LastUser, |
|
|
|
}) |
|
|
|
} |
|
|
|
return |
|
|
|
} |