|
@@ -336,6 +336,10 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -336,6 +336,10 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
336
|
}
|
336
|
}
|
|
337
|
}
|
337
|
}
|
|
338
|
|
338
|
|
|
|
|
339
|
+ log.Logger.Info("查找合约数据", map[string]interface{}{
|
|
|
|
340
|
+ "cooperationContractsMap": cooperationContractsMap,
|
|
|
|
341
|
+ })
|
|
|
|
342
|
+
|
|
339
|
// 分红订单DAO初始化
|
343
|
// 分红订单DAO初始化
|
|
340
|
var dividendsOrderDao *dao.DividendsOrderDao
|
344
|
var dividendsOrderDao *dao.DividendsOrderDao
|
|
341
|
if value, err := factory.CreateDividendsOrderDao(map[string]interface{}{
|
345
|
if value, err := factory.CreateDividendsOrderDao(map[string]interface{}{
|
|
@@ -609,6 +613,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -609,6 +613,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
609
|
DividendsOrderNumber: "",
|
613
|
DividendsOrderNumber: "",
|
|
610
|
CooperationContractNumber: dividendsOrder.CooperationContractNumber,
|
614
|
CooperationContractNumber: dividendsOrder.CooperationContractNumber,
|
|
611
|
OrderGoodExpense: expense,
|
615
|
OrderGoodExpense: expense,
|
|
|
|
616
|
+ LineNumber: i,
|
|
612
|
},
|
617
|
},
|
|
613
|
},
|
618
|
},
|
|
614
|
CompanyId: importDividendsOrderCommand.CompanyId,
|
619
|
CompanyId: importDividendsOrderCommand.CompanyId,
|
|
@@ -660,6 +665,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -660,6 +665,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
660
|
DividendsOrderNumber: "",
|
665
|
DividendsOrderNumber: "",
|
|
661
|
CooperationContractNumber: dividendsOrder.CooperationContractNumber,
|
666
|
CooperationContractNumber: dividendsOrder.CooperationContractNumber,
|
|
662
|
OrderGoodExpense: expense,
|
667
|
OrderGoodExpense: expense,
|
|
|
|
668
|
+ LineNumber: i, // 记录订单产品行号
|
|
663
|
})
|
669
|
})
|
|
664
|
|
670
|
|
|
665
|
// 记录聚合行号
|
671
|
// 记录聚合行号
|
|
@@ -667,6 +673,10 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -667,6 +673,10 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
667
|
}
|
673
|
}
|
|
668
|
}
|
674
|
}
|
|
669
|
|
675
|
|
|
|
|
676
|
+ log.Logger.Info("聚合订单", map[string]interface{}{
|
|
|
|
677
|
+ "dividendsOrderCommands": dividendsOrderCommands,
|
|
|
|
678
|
+ })
|
|
|
|
679
|
+
|
|
670
|
// 聚合订单错误返回
|
680
|
// 聚合订单错误返回
|
|
671
|
if len(aggregateErrorList) > 0 {
|
681
|
if len(aggregateErrorList) > 0 {
|
|
672
|
return map[string]interface{}{
|
682
|
return map[string]interface{}{
|
|
@@ -698,7 +708,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -698,7 +708,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
698
|
row := &domain.ImportInfo{
|
708
|
row := &domain.ImportInfo{
|
|
699
|
Error: application.ThrowError(application.BUSINESS_ERROR, err.Error()), // 错误信息
|
709
|
Error: application.ThrowError(application.BUSINESS_ERROR, err.Error()), // 错误信息
|
|
700
|
LineNumbers: cmd.LineNumbers, // 错误影响的行
|
710
|
LineNumbers: cmd.LineNumbers, // 错误影响的行
|
|
701
|
- GoodLine: map[int]interface{}{},
|
711
|
+ GoodLine: map[int]string{},
|
|
702
|
}
|
712
|
}
|
|
703
|
errorDataList = append(errorDataList, row)
|
713
|
errorDataList = append(errorDataList, row)
|
|
704
|
continue
|
714
|
continue
|
|
@@ -758,7 +768,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -758,7 +768,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
758
|
row := &domain.ImportInfo{
|
768
|
row := &domain.ImportInfo{
|
|
759
|
Error: application.ThrowError(application.INTERNAL_SERVER_ERROR, fmt.Sprintf("分红订单号生成错误:%s", err)),
|
769
|
Error: application.ThrowError(application.INTERNAL_SERVER_ERROR, fmt.Sprintf("分红订单号生成错误:%s", err)),
|
|
760
|
LineNumbers: dividendsOrder.LineNumbers, // 错误影响的行
|
770
|
LineNumbers: dividendsOrder.LineNumbers, // 错误影响的行
|
|
761
|
- GoodLine: map[int]interface{}{},
|
771
|
+ GoodLine: map[int]string{},
|
|
762
|
}
|
772
|
}
|
|
763
|
errorDataList = append(errorDataList, row)
|
773
|
errorDataList = append(errorDataList, row)
|
|
764
|
continue
|
774
|
continue
|
|
@@ -770,18 +780,19 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -770,18 +780,19 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
770
|
row := &domain.ImportInfo{
|
780
|
row := &domain.ImportInfo{
|
|
771
|
Error: application.ThrowError(application.INTERNAL_SERVER_ERROR, fmt.Sprintf("订单日期转换错误:%s", err)),
|
781
|
Error: application.ThrowError(application.INTERNAL_SERVER_ERROR, fmt.Sprintf("订单日期转换错误:%s", err)),
|
|
772
|
LineNumbers: dividendsOrder.LineNumbers, // 错误影响的行
|
782
|
LineNumbers: dividendsOrder.LineNumbers, // 错误影响的行
|
|
773
|
- GoodLine: map[int]interface{}{},
|
783
|
+ GoodLine: map[int]string{},
|
|
774
|
}
|
784
|
}
|
|
775
|
errorDataList = append(errorDataList, row)
|
785
|
errorDataList = append(errorDataList, row)
|
|
776
|
continue
|
786
|
continue
|
|
777
|
}
|
787
|
}
|
|
|
|
788
|
+
|
|
778
|
orderTime := utils.TransformTimestampToTime(orderTimeInt)
|
789
|
orderTime := utils.TransformTimestampToTime(orderTimeInt)
|
|
779
|
|
790
|
|
|
780
|
// 新增订单产品
|
791
|
// 新增订单产品
|
|
781
|
var orderGoods []*domain.OrderGood
|
792
|
var orderGoods []*domain.OrderGood
|
|
782
|
var dividendsOrderAmount float64
|
793
|
var dividendsOrderAmount float64
|
|
783
|
- orderGoodErrMap := make(map[int]interface{}, 0)
|
|
|
|
784
|
- for i, orderGood := range dividendsOrder.OrderGoods {
|
794
|
+ orderGoodErrMap := make(map[int]string, 0)
|
|
|
|
795
|
+ for j, orderGood := range dividendsOrder.OrderGoods {
|
|
785
|
// 校验共创合约是否合法
|
796
|
// 校验共创合约是否合法
|
|
786
|
contractNumberExist := false
|
797
|
contractNumberExist := false
|
|
787
|
for _, cooperationContract := range cooperationContracts {
|
798
|
for _, cooperationContract := range cooperationContracts {
|
|
@@ -791,18 +802,24 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -791,18 +802,24 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
791
|
}
|
802
|
}
|
|
792
|
}
|
803
|
}
|
|
793
|
if !contractNumberExist {
|
804
|
if !contractNumberExist {
|
|
794
|
- orderGoodErrMap[dividendsOrder.OrderGoods[i].LineNumber] = application.ThrowError(application.INTERNAL_SERVER_ERROR, fmt.Sprintf("共创合约编号不存在:%s", err))
|
805
|
+ orderGoodErrMap[dividendsOrder.OrderGoods[j].LineNumber] = "订单产品关联的共创合约不存在"
|
|
|
|
806
|
+ continue
|
|
795
|
}
|
807
|
}
|
|
796
|
|
808
|
|
|
797
|
// 计算产品金额
|
809
|
// 计算产品金额
|
|
798
|
orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)).Float64()
|
810
|
orderGoodAmount, _ := decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity)).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)).Float64()
|
|
799
|
|
811
|
|
|
800
|
- // 校验共创合约激励类型是否正确
|
|
|
|
801
|
ruleMatchedFlag := false
|
812
|
ruleMatchedFlag := false
|
|
802
|
if orderGood.CooperationContractNumber != "" {
|
813
|
if orderGood.CooperationContractNumber != "" {
|
|
|
|
814
|
+ // 校验共创合约激励类型是否正确
|
|
|
|
815
|
+ log.Logger.Info("订单产品匹配的合约", map[string]interface{}{
|
|
|
|
816
|
+ "contractMatched": cooperationContractsMap[orderGood.CooperationContractNumber],
|
|
|
|
817
|
+ })
|
|
803
|
if cooperationContractsMap[orderGood.CooperationContractNumber] != nil && cooperationContractsMap[orderGood.CooperationContractNumber].IncentivesType != 1 {
|
818
|
if cooperationContractsMap[orderGood.CooperationContractNumber] != nil && cooperationContractsMap[orderGood.CooperationContractNumber].IncentivesType != 1 {
|
|
804
|
- orderGoodErrMap[dividendsOrder.OrderGoods[i].LineNumber] = application.ThrowError(application.INTERNAL_SERVER_ERROR, "退货单产品不能关联金额激励规则")
|
819
|
+ orderGoodErrMap[dividendsOrder.OrderGoods[j].LineNumber] = "分红订单不能关联金额激励规则"
|
|
|
|
820
|
+ continue
|
|
805
|
}
|
821
|
}
|
|
|
|
822
|
+
|
|
806
|
// 校验产品关联合约的激励规则是否匹配订单时间
|
823
|
// 校验产品关联合约的激励规则是否匹配订单时间
|
|
807
|
if cooperationContractsMap[orderGood.CooperationContractNumber] != nil {
|
824
|
if cooperationContractsMap[orderGood.CooperationContractNumber] != nil {
|
|
808
|
for _, incentivesRule := range cooperationContractsMap[orderGood.CooperationContractNumber].DividendsIncentivesRules {
|
825
|
for _, incentivesRule := range cooperationContractsMap[orderGood.CooperationContractNumber].DividendsIncentivesRules {
|
|
@@ -814,7 +831,8 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -814,7 +831,8 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
814
|
}
|
831
|
}
|
|
815
|
}
|
832
|
}
|
|
816
|
if !ruleMatchedFlag {
|
833
|
if !ruleMatchedFlag {
|
|
817
|
- orderGoodErrMap[dividendsOrder.OrderGoods[i].LineNumber] = application.ThrowError(application.INTERNAL_SERVER_ERROR, "订单时间无法匹配分红激励规则,请重新选择")
|
834
|
+ orderGoodErrMap[dividendsOrder.OrderGoods[j].LineNumber] = "订单时间无法匹配分红激励规则"
|
|
|
|
835
|
+ continue
|
|
818
|
}
|
836
|
}
|
|
819
|
}
|
837
|
}
|
|
820
|
|
838
|
|
|
@@ -838,9 +856,13 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -838,9 +856,13 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
838
|
// 计算分红订单金额
|
856
|
// 计算分红订单金额
|
|
839
|
dividendsOrderAmount, _ = decimal.NewFromFloat(dividendsOrderAmount).Add(decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)))).Float64()
|
857
|
dividendsOrderAmount, _ = decimal.NewFromFloat(dividendsOrderAmount).Add(decimal.NewFromFloat(orderGood.OrderGoodPrice).Mul(decimal.NewFromFloat(orderGood.OrderGoodQuantity).Sub(decimal.NewFromFloat(orderGood.OrderGoodExpense)))).Float64()
|
|
840
|
}
|
858
|
}
|
|
|
|
859
|
+
|
|
841
|
if len(orderGoodErrMap) > 0 {
|
860
|
if len(orderGoodErrMap) > 0 {
|
|
|
|
861
|
+ log.Logger.Info("校验订单产品", map[string]interface{}{
|
|
|
|
862
|
+ "orderGoodErrMap": orderGoodErrMap,
|
|
|
|
863
|
+ })
|
|
842
|
row := &domain.ImportInfo{
|
864
|
row := &domain.ImportInfo{
|
|
843
|
- Error: application.ThrowError(application.BUSINESS_ERROR, "共创合约不存在"),
|
865
|
+ Error: nil,
|
|
844
|
LineNumbers: dividendsOrder.LineNumbers, // 错误影响的行
|
866
|
LineNumbers: dividendsOrder.LineNumbers, // 错误影响的行
|
|
845
|
GoodLine: orderGoodErrMap, // 错误产品行号记录
|
867
|
GoodLine: orderGoodErrMap, // 错误产品行号记录
|
|
846
|
}
|
868
|
}
|
|
@@ -874,8 +896,9 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -874,8 +896,9 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
874
|
|
896
|
|
|
875
|
creatDividendsOrder = append(creatDividendsOrder, newDividendsOrder)
|
897
|
creatDividendsOrder = append(creatDividendsOrder, newDividendsOrder)
|
|
876
|
}
|
898
|
}
|
|
|
|
899
|
+ /******************************************************************************************************************/
|
|
877
|
|
900
|
|
|
878
|
- // 错误报告处理
|
901
|
+ /*********************************************** 错误报告处理 *******************************************************/
|
|
879
|
if len(errorDataList) <= 0 { // 成功返回
|
902
|
if len(errorDataList) <= 0 { // 成功返回
|
|
880
|
if _, err2 := dividendsOrderRepository.SaveMany(creatDividendsOrder); err2 != nil {
|
903
|
if _, err2 := dividendsOrderRepository.SaveMany(creatDividendsOrder); err2 != nil {
|
|
881
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err2.Error())
|
904
|
return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err2.Error())
|
|
@@ -887,7 +910,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -887,7 +910,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
887
|
if successDataCount == int64(rowCnt) {
|
910
|
if successDataCount == int64(rowCnt) {
|
|
888
|
return map[string]interface{}{
|
911
|
return map[string]interface{}{
|
|
889
|
"successCount": successDataCount,
|
912
|
"successCount": successDataCount,
|
|
890
|
- "fail": map[string]interface{}{},
|
913
|
+ "fail": make(map[string]interface{}),
|
|
891
|
}, nil
|
914
|
}, nil
|
|
892
|
}
|
915
|
}
|
|
893
|
} else { // 失败返回
|
916
|
} else { // 失败返回
|
|
@@ -897,7 +920,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -897,7 +920,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
897
|
if len(errorData.GoodLine) == 0 { // 订单错误
|
920
|
if len(errorData.GoodLine) == 0 { // 订单错误
|
|
898
|
for _, line := range errorData.LineNumbers {
|
921
|
for _, line := range errorData.LineNumbers {
|
|
899
|
tmpRow := &domain.FailInfo{
|
922
|
tmpRow := &domain.FailInfo{
|
|
900
|
- FailReason: "订单数据新增错误:" + errorData.Error.Error(),
|
923
|
+ FailReason: errorData.Error.Error(),
|
|
901
|
}
|
924
|
}
|
|
902
|
tmpRow.ImportDividendsOrderData = &importDividendsOrderCommand.DividendsOrderData[line]
|
925
|
tmpRow.ImportDividendsOrderData = &importDividendsOrderCommand.DividendsOrderData[line]
|
|
903
|
failureDataList = append(failureDataList, tmpRow)
|
926
|
failureDataList = append(failureDataList, tmpRow)
|
|
@@ -905,7 +928,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
@@ -905,7 +928,7 @@ func (dividendsOrderService *DividendsOrderService) ImportDividendsOrder(importD |
|
905
|
} else if len(errorData.GoodLine) > 0 { // 订单产品错误
|
928
|
} else if len(errorData.GoodLine) > 0 { // 订单产品错误
|
|
906
|
for line := range errorData.GoodLine {
|
929
|
for line := range errorData.GoodLine {
|
|
907
|
tmpRow := &domain.FailInfo{
|
930
|
tmpRow := &domain.FailInfo{
|
|
908
|
- FailReason: "订单数据新增错误:" + errorData.Error.Error(),
|
931
|
+ FailReason: errorData.GoodLine[line],
|
|
909
|
}
|
932
|
}
|
|
910
|
tmpRow.ImportDividendsOrderData = &importDividendsOrderCommand.DividendsOrderData[line]
|
933
|
tmpRow.ImportDividendsOrderData = &importDividendsOrderCommand.DividendsOrderData[line]
|
|
911
|
failureDataList = append(failureDataList, tmpRow)
|
934
|
failureDataList = append(failureDataList, tmpRow)
|