作者 唐旭辉

Merge branch 'dev' into test

@@ -235,9 +235,12 @@ func (service OrderInfoService) CreateNewOrder(cmd command.CreateOrderCommand) ( @@ -235,9 +235,12 @@ func (service OrderInfoService) CreateNewOrder(cmd command.CreateOrderCommand) (
235 }); err != nil { 235 }); err != nil {
236 return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()) 236 return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error())
237 } 237 }
238 - 238 + goodNames := []string{}
  239 + for _, v := range cmd.Goods {
  240 + goodNames = append(goodNames, v.GoodName)
  241 + }
239 if ok, err := orderBaseDao.CheckOrderExist(cmd.CompanyId, cmd.OrderCode, cmd.DeliveryCode, 242 if ok, err := orderBaseDao.CheckOrderExist(cmd.CompanyId, cmd.OrderCode, cmd.DeliveryCode,
240 - cmd.PartnerCategory, cmd.PartnerId, 0); err != nil { 243 + cmd.PartnerCategory, cmd.PartnerId, 0, goodNames); err != nil {
241 return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()) 244 return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error())
242 } else if ok { 245 } else if ok {
243 return nil, lib.ThrowError(lib.BUSINESS_ERROR, "订单已存在") 246 return nil, lib.ThrowError(lib.BUSINESS_ERROR, "订单已存在")
@@ -447,8 +450,13 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand) @@ -447,8 +450,13 @@ func (service OrderInfoService) UpdateOrderData(cmd command.UpdateOrderCommand)
447 // return nil, lib.ThrowError(lib.BUSINESS_ERROR, "订单号已存在") 450 // return nil, lib.ThrowError(lib.BUSINESS_ERROR, "订单号已存在")
448 // } 451 // }
449 // } 452 // }
  453 + goodNames := []string{}
  454 + for _, v := range cmd.Goods {
  455 + goodNames = append(goodNames, v.GoodName)
  456 + }
450 //检查delivery_code是否重复 457 //检查delivery_code是否重复
451 - if ok, err := orderBaseDao.CheckOrderExist(cmd.CompanyId, cmd.OrderCode, cmd.DeliveryCode, cmd.PartnerCategory, cmd.PartnerId, cmd.Id); err != nil { 458 + if ok, err := orderBaseDao.CheckOrderExist(cmd.CompanyId, cmd.OrderCode, cmd.DeliveryCode,
  459 + cmd.PartnerCategory, cmd.PartnerId, cmd.Id, goodNames); err != nil {
452 return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()) 460 return nil, lib.ThrowError(lib.TRANSACTION_ERROR, err.Error())
453 } else if ok { 461 } else if ok {
454 return nil, lib.ThrowError(lib.BUSINESS_ERROR, "订单已存在") 462 return nil, lib.ThrowError(lib.BUSINESS_ERROR, "订单已存在")
@@ -1056,10 +1064,13 @@ func (service OrderInfoService) CreateNewOrderByImport(createOrderCommands []*co @@ -1056,10 +1064,13 @@ func (service OrderInfoService) CreateNewOrderByImport(createOrderCommands []*co
1056 errorDataList = append(errorDataList, row) 1064 errorDataList = append(errorDataList, row)
1057 continue 1065 continue
1058 } 1066 }
1059 - 1067 + goodNames := []string{}
  1068 + for _, v := range cmd.Goods {
  1069 + goodNames = append(goodNames, v.GoodName)
  1070 + }
1060 // 批量校验订单 1071 // 批量校验订单
1061 if ok, err := orderBaseDao.CheckOrderExist(cmd.CompanyId, cmd.OrderCode, cmd.DeliveryCode, 1072 if ok, err := orderBaseDao.CheckOrderExist(cmd.CompanyId, cmd.OrderCode, cmd.DeliveryCode,
1062 - cmd.PartnerCategory, cmd.PartnerId, 0); err != nil { 1073 + cmd.PartnerCategory, cmd.PartnerId, 0, goodNames); err != nil {
1063 row := &domain.ImportInfo{ 1074 row := &domain.ImportInfo{
1064 Error: lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()), 1075 Error: lib.ThrowError(lib.TRANSACTION_ERROR, err.Error()),
1065 LineNumbers: cmd.LineNumbers, // 错误影响的行 1076 LineNumbers: cmd.LineNumbers, // 错误影响的行
@@ -28,16 +28,19 @@ func NewOrderBaseDao(transactionContext *transaction.TransactionContext) (*Order @@ -28,16 +28,19 @@ func NewOrderBaseDao(transactionContext *transaction.TransactionContext) (*Order
28 //@orderCode 订单号 28 //@orderCode 订单号
29 //@deliveryCode 发货单号 29 //@deliveryCode 发货单号
30 //@partnerCategoryCode 合伙人类型编号 30 //@partnerCategoryCode 合伙人类型编号
  31 +//@goodNames 货品名称列表
31 func (dao OrderBaseDao) CheckOrderExist(companyId int64, orderCode string, 32 func (dao OrderBaseDao) CheckOrderExist(companyId int64, orderCode string,
32 - deliveryCode string, partnerCategory int64, partnerId int64, notId int64) (bool, error) { 33 + deliveryCode string, partnerCategory int64, partnerId int64, notId int64, goodNames []string) (bool, error) {
33 tx := dao.transactionContext.GetDB() 34 tx := dao.transactionContext.GetDB()
34 query := tx.Model(&models.OrderBase{}). 35 query := tx.Model(&models.OrderBase{}).
  36 + Join("JOIN order_good ON order_base.id=order_good.order_id").
35 Where("company_id=?", companyId). 37 Where("company_id=?", companyId).
36 Where("order_code=?", orderCode). 38 Where("order_code=?", orderCode).
37 Where("delivery_code=?", deliveryCode). 39 Where("delivery_code=?", deliveryCode).
38 Where("partner_id=?", partnerId). 40 Where("partner_id=?", partnerId).
39 Where(`partner_category @>'{"id":?}'`, partnerCategory). 41 Where(`partner_category @>'{"id":?}'`, partnerCategory).
40 - Where("id<>?", notId) 42 + Where("id<>?", notId).
  43 + WhereIn("order_good.good_name in(?)", goodNames)
41 ok, err := query.Exists() 44 ok, err := query.Exists()
42 return ok, err 45 return ok, err
43 } 46 }
@@ -709,7 +709,7 @@ func (c *OrderInfoController) ImportOrderFromExcel() { @@ -709,7 +709,7 @@ func (c *OrderInfoController) ImportOrderFromExcel() {
709 // c.ResponseError(errors.New("json数据解析失败")) 709 // c.ResponseError(errors.New("json数据解析失败"))
710 //} 710 //}
711 711
712 - if typeCode != "PARTNER_ORDER_IMPORT" { 712 + if typeCode != "PARTNER_ORDER_FILE" {
713 c.ResponseError(errors.New("类型编码错误")) 713 c.ResponseError(errors.New("类型编码错误"))
714 } 714 }
715 715
@@ -987,6 +987,9 @@ func (c *OrderInfoController) ImportOrderFromExcel() { @@ -987,6 +987,9 @@ func (c *OrderInfoController) ImportOrderFromExcel() {
987 // 创建订单服务 987 // 创建订单服务
988 orderSrv := orderService.NewOrderInfoService(nil) 988 orderSrv := orderService.NewOrderInfoService(nil)
989 989
  990 + // 合伙人检索错误
  991 + partnerDataList := make([]interface{}, 0)
  992 +
990 // 聚合订单产品 993 // 聚合订单产品
991 var orderCommands = make(map[string]*orderCmd.CreateOrderCommand, 0) 994 var orderCommands = make(map[string]*orderCmd.CreateOrderCommand, 0)
992 for i, row := range rows { 995 for i, row := range rows {
@@ -1028,27 +1031,35 @@ func (c *OrderInfoController) ImportOrderFromExcel() { @@ -1028,27 +1031,35 @@ func (c *OrderInfoController) ImportOrderFromExcel() {
1028 1031
1029 // 获取partnerId 1032 // 获取partnerId
1030 var partnerInfo *domain.PartnerInfo 1033 var partnerInfo *domain.PartnerInfo
1031 - partnerInfo, err = orderSrv.GetPartnerIdByCodeAndCategory(orderQuery.GetPartnerIdQuery{ 1034 + orderQueryData := orderQuery.GetPartnerIdQuery{
1032 Code: row[4], 1035 Code: row[4],
1033 PartnerCategory: 0, 1036 PartnerCategory: 0,
1034 CompanyId: companyId, 1037 CompanyId: companyId,
1035 - })  
1036 - if err != nil {  
1037 - 1038 + }
  1039 + // 1: 事业合伙、2: 业务合伙、3: 研发合伙、4: 业务-产品应用合伙
  1040 + switch row[6] {
  1041 + case "事业合伙":
  1042 + orderQueryData.PartnerCategory = 1
  1043 + case "业务合伙":
  1044 + orderQueryData.PartnerCategory = 2
  1045 + case "研发合伙":
  1046 + orderQueryData.PartnerCategory = 3
  1047 + case "业务-产品应用合伙":
  1048 + orderQueryData.PartnerCategory = 4
  1049 + default:
  1050 + orderQueryData.PartnerCategory = 0
  1051 + }
  1052 + partnerInfo, err = orderSrv.GetPartnerIdByCodeAndCategory(orderQueryData)
  1053 + if err != nil || partnerInfo == nil { // 检索合伙人错误
  1054 + var tmpRow []string
  1055 + tmpRow = append(tmpRow, err.Error()) // 错误信息
  1056 + s := strconv.Itoa(i + 1)
  1057 + tmpRow = append(tmpRow, s) // 行号
  1058 + tmpRow = append(tmpRow, row...) // 错误行数据
  1059 + partnerDataList = append(partnerDataList, tmpRow)
1038 } 1060 }
1039 if partnerInfo != nil { 1061 if partnerInfo != nil {
1040 orderCommands[hashString].PartnerId = partnerInfo.Partner.Id 1062 orderCommands[hashString].PartnerId = partnerInfo.Partner.Id
1041 - // 1: 事业合伙、2: 业务合伙、3: 研发合伙、4: 业务-产品应用合伙  
1042 - switch row[6] {  
1043 - case "事业合伙":  
1044 - partnerInfo.PartnerCategory = 1  
1045 - case "业务合伙":  
1046 - partnerInfo.PartnerCategory = 2  
1047 - case "研发合伙":  
1048 - partnerInfo.PartnerCategory = 3  
1049 - case "业务-产品应用合伙":  
1050 - partnerInfo.PartnerCategory = 4  
1051 - }  
1052 } 1063 }
1053 } else { 1064 } else {
1054 //产品相关,8: 产品名称, 9: 数量, 10: 单价, 11: 合伙人分红比例 1065 //产品相关,8: 产品名称, 9: 数量, 10: 单价, 11: 合伙人分红比例
@@ -1070,6 +1081,17 @@ func (c *OrderInfoController) ImportOrderFromExcel() { @@ -1070,6 +1081,17 @@ func (c *OrderInfoController) ImportOrderFromExcel() {
1070 } 1081 }
1071 } 1082 }
1072 } 1083 }
  1084 + if len(partnerDataList) > 0 {
  1085 + ret = map[string]interface{}{
  1086 + "successCount": 0,
  1087 + "fail": map[string]interface{}{
  1088 + "tableHeader": tableHeader,
  1089 + "tableData": partnerDataList,
  1090 + },
  1091 + }
  1092 + c.ResponseData(ret)
  1093 + return
  1094 + }
1073 1095
1074 // 产品数量校验 1096 // 产品数量校验
1075 productNumberError := make([]interface{}, 0) 1097 productNumberError := make([]interface{}, 0)