From 52177a1d16cf22a928936368cb3c6c4b46ad356e Mon Sep 17 00:00:00 2001
From: muzexing <muzexing@qq.com>
Date: 星期四, 04 七月 2024 20:39:03 +0800
Subject: [PATCH] 出库/入库打印 修改bug
---
service/month_forms.go | 106 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 105 insertions(+), 1 deletions(-)
diff --git a/service/month_forms.go b/service/month_forms.go
index 2073e9d..9f1aed5 100644
--- a/service/month_forms.go
+++ b/service/month_forms.go
@@ -1,10 +1,13 @@
package service
import (
+ "encoding/json"
"fmt"
+ "github.com/shopspring/decimal"
"github.com/xuri/excelize/v2"
"strconv"
"time"
+ "wms/constvar"
"wms/models"
"wms/pkg/logx"
"wms/request"
@@ -111,7 +114,6 @@
}
titleStyle, err := f.NewStyle(style)
if err != nil {
- fmt.Println(err)
return
}
f.SetCellStyle("Sheet1", "A1", "R2", titleStyle)
@@ -179,3 +181,105 @@
return fileName, nil
}
+
+func GetCurrentStats(date string, productIds []string) (statRecords []*models.MonthStats, err error) {
+ //鏈湀鏈熷垵鏁伴噺/涓婃湀缁撲綑鏁伴噺
+ groupSumList, err := models.NewLocationProductAmountSearch().SetProductIds(productIds).GroupSum("product_id", "amount")
+ productIds = make([]string, 0, len(groupSumList))
+ for _, groupSum := range groupSumList {
+ productIds = append(productIds, groupSum.Class)
+ }
+ products, err := models.NewMaterialSearch().SetFields("id, name, unit, weight, more_unit, more_unit_value").SetIDs(productIds).FindNotTotal()
+ if err != nil {
+ logx.Errorf("MonthStats GetCurrentStats get products err:%v", err)
+ return
+ }
+ productMap := models.MaterialMap(products)
+
+ //鎸夐厤缃彇寮�濮嬫椂闂村拰缁撴潫鏃堕棿
+ beginTime, endTime, err := NewSystemConfigService().GetInventoryCutOffTime()
+ if err != nil {
+ logx.Errorf("MonthStats GetCurrentStats get GetInventoryCutOffTime err:%v", err)
+ return
+ }
+ inputMap, err := GetStatsByOperationType(beginTime, endTime, constvar.BaseOperationTypeIncoming)
+ if err != nil {
+ logx.Errorf("MonthStats GetStatsByOperationType input err:%v", err)
+ return
+ }
+
+ outputMap, err := GetStatsByOperationType(beginTime, endTime, constvar.BaseOperationTypeOutgoing)
+ if err != nil {
+ logx.Errorf("MonthStats GetStatsByOperationType output err:%v", err)
+ return
+ }
+
+ for _, groupSum := range groupSumList {
+ productId := groupSum.Class
+ if productMap[productId] == nil {
+ continue
+ }
+ product := productMap[productId]
+ amount := groupSum.Sum
+ record := models.MonthStats{
+ ProductId: productId,
+ ProductName: product.Name,
+ Unit: product.Unit,
+ Weight: product.Weight.Mul(amount),
+ Date: date,
+ }
+
+ var (
+ moreUnits string
+ inputMoreUnits string
+ outputMoreUnits string
+ )
+ if *product.MoreUnit {
+ moreValueArr := make([]models.UnitItems, 0, len(product.MoreUnitList))
+ inputMoreValueArr := make([]models.UnitItems, 0, len(product.MoreUnitList))
+ outputMoreValueArr := make([]models.UnitItems, 0, len(product.MoreUnitList))
+ if !amount.IsZero() {
+ moreValueArr = CreateMoreUnit(amount, product.MoreUnitList)
+ }
+ if !inputMap[productId].IsZero() {
+ inputMoreValueArr = CreateMoreUnit(inputMap[productId], product.MoreUnitList)
+ }
+
+ if !outputMap[productId].IsZero() {
+ outputMoreValueArr = CreateMoreUnit(outputMap[productId], product.MoreUnitList)
+ }
+ bys, _ := json.Marshal(moreValueArr)
+ moreUnits = string(bys)
+ bys, _ = json.Marshal(inputMoreValueArr)
+ inputMoreUnits = string(bys)
+ bys, _ = json.Marshal(outputMoreValueArr)
+ outputMoreUnits = string(bys)
+ }
+
+ record.InputAmount = inputMap[productId]
+ record.InputMoreUnits = inputMoreUnits
+ record.OutputAmount = outputMap[productId]
+ record.OutputMoreUnits = outputMoreUnits
+ record.EndAmount = amount
+ record.EndMoreUnits = moreUnits
+ statRecords = append(statRecords, &record)
+ }
+
+ return
+}
+
+func GetStatsByOperationType(beginTime, endTime time.Time, operationType constvar.BaseOperationType) (m map[string]decimal.Decimal, err error) {
+ operationIds, err := models.NewOperationSearch().SetBaseOperationType(operationType).SetFields("id").SetTimeBetween(beginTime, endTime).FindIds()
+ if err != nil {
+ return
+ }
+ groupSumList, err := models.NewOperationDetailsSearch().SetOperationIds(operationIds).SetFields("product_id, amount").GroupSum("product_id", "amount")
+ if err != nil {
+ return
+ }
+ m = make(map[string]decimal.Decimal, len(groupSumList))
+ for _, v := range groupSumList {
+ m[v.Class] = v.Sum
+ }
+ return
+}
--
Gitblit v1.8.0