Browse Source

Merge pull request 'feature_CustomizedQuery' (#153) from feature_CustomizedQuery into develop

Reviewed-on: http://101.201.121.115:3000/leo/LAPP_Acura_MES_Backend/pulls/153
pull/155/head
zhangxin 3 years ago
parent
commit
68c6087fdb
3 changed files with 265 additions and 31 deletions
  1. +22
    -1
      services/report/CustomizedQuery.service.go
  2. +207
    -30
      services/report/implments/CustomizedQuery.service.impl.go
  3. +36
    -0
      web/controllers/report/CustomizedQuery.rest.go

+ 22
- 1
services/report/CustomizedQuery.service.go View File

@ -67,7 +67,28 @@ type CustomizedQueryService interface {
* @Date : 2022-03-08 17:58
*
******************************************************************************/
SeatQuery(*global.User, string, string) ([]impl.SeatQuery_PackOrderSummary, error)
SeatQuery(*global.User, string, string) ([]impl.SeatQuery_SeatSummary, error)
/******************************************************************************
*
* @Function Name : PackingRecordQuery
*-----------------------------------------------------------------------------
*
* @Description : 打包记录查询
*
* @Function Parameters : 当前访问人员信息
*
* @Function Parameters : 工单条码
*
* @Return Value : 查询结果
*
* @Return Value : 执行时发生的错误
*
* @Author : chenglei.wei@le-it.com.cn
*
* @Date : 2022-03-08 17:58
*
******************************************************************************/
PackingRecordQuery(*global.User, string) ([]impl.PackingRecordQuery_PackOrderSummary, error)
}
/******************************************************************************


+ 207
- 30
services/report/implments/CustomizedQuery.service.impl.go View File

@ -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
}

+ 36
- 0
web/controllers/report/CustomizedQuery.rest.go View File

@ -29,6 +29,7 @@ func RegisterRouteMappingOfCustomizedQuery(party router.Party) {
var service = svr.NewCustomizedQueryService()
RegisterRouteOfProductFamilyInventoryQueryInCustomizedQuery(party, service)
RegisterRouteMappingOfSeatQueryInCustomizedQuery(party, service)
RegisterRouteMappingOfPackingRecordQueryInCustomizedQuery(party, service)
}
/******************************************************************************
@ -113,3 +114,38 @@ func RegisterRouteMappingOfSeatQueryInCustomizedQuery(party router.Party, servic
supports.Ok(ctx, supports.OptionSuccess, result)
})
}
/******************************************************************************
*
* @Function Name : RegisterRouteMappingOfPackingRecordQueryInCustomizedQuery
*-----------------------------------------------------------------------------
*
* @Description : 注册自定义查询中打包记录查询的路由
*
* @Function Parameters : 路由分组
*
* @Author : chenglei.wei@le-it.com.cn
*
* @Date : 2022-03-10 17:38
*
******************************************************************************/
func RegisterRouteMappingOfPackingRecordQueryInCustomizedQuery(party router.Party, service svr.CustomizedQueryService) {
party.Get("/packingrecordquery", func(ctx iris.Context) {
user, ok := jwts.ParseToken(ctx)
if !ok {
return
}
urlParameters := ctx.URLParams()
var serialOrderId string
if serialOrderId, ok = urlParameters["serialorderid"]; !ok {
serialOrderId = ""
}
result, err := service.PackingRecordQuery(user, serialOrderId)
if err != nil {
supports.Error(ctx, iris.StatusBadRequest, err.Error(), nil)
return
}
supports.Ok(ctx, supports.OptionSuccess, result)
})
}

Loading…
Cancel
Save