作者 tangxvhui

日常保存

@@ -36,3 +36,8 @@ func (attendanceService *AttendanceService) WorkshopWorkTimeRecordStatics(cmd *c @@ -36,3 +36,8 @@ func (attendanceService *AttendanceService) WorkshopWorkTimeRecordStatics(cmd *c
36 } 36 }
37 return struct{}{}, nil 37 return struct{}{}, nil
38 } 38 }
  39 +
  40 +//导入工时数据
  41 +func (attendanceService *AttendanceService) ImportDataAttendance() error {
  42 + return nil
  43 +}
@@ -157,3 +157,11 @@ func CreateProductMaterialRepository(options map[string]interface{}) (domain.Pro @@ -157,3 +157,11 @@ func CreateProductMaterialRepository(options map[string]interface{}) (domain.Pro
157 } 157 }
158 return repository.NewProductMaterialRepository(transactionContext) 158 return repository.NewProductMaterialRepository(transactionContext)
159 } 159 }
  160 +
  161 +func CreateRewardStandardRepository(options map[string]interface{}) (domain.RewardStandardRepository, error) {
  162 + var transactionContext *pg.TransactionContext
  163 + if value, ok := options["transactionContext"]; ok {
  164 + transactionContext = value.(*pg.TransactionContext)
  165 + }
  166 + return repository.NewRewardStandardRepository(transactionContext)
  167 +}
  1 +package command
  2 +
  3 +import (
  4 + "fmt"
  5 + "reflect"
  6 + "strings"
  7 +
  8 + "github.com/beego/beego/v2/core/validation"
  9 +)
  10 +
  11 +type SaveRewardStandardCommand struct {
  12 + Id int `json:"id"` //奖惩标准 id
  13 + WorkshopId int `json:"workshopId" valid:"Required"` //车间id
  14 + LineId int `json:"lineId" valid:"Required"` //生产线ID
  15 + SectionId int `json:"sectionId" valid:"Required"` //工段ID
  16 + Remark string `json:"remark"` //备注
  17 + TargetType int `json:"targetType" valid:"Required"` //指标类别 1:产效 2:合格率 3:安全事故 4:质量事故 5:异物次数
  18 + TargeVal1 string `json:"targeVal1"` //填写的指标值1
  19 + TargeVal2 string `json:"targeVal2"` //填写的指标值2
  20 + TargeVal3 string `json:"targeVal3"` //填写的指标值3
  21 + TargeVal4 string `json:"targeVal4"` //填写的指标值4
  22 +}
  23 +
  24 +func (removeProductCommand *SaveRewardStandardCommand) Valid(validation *validation.Validation) {
  25 +
  26 +}
  27 +
  28 +func (removeProductCommand *SaveRewardStandardCommand) ValidateCommand() error {
  29 + valid := validation.Validation{}
  30 + b, err := valid.Valid(removeProductCommand)
  31 + if err != nil {
  32 + return err
  33 + }
  34 + if !b {
  35 + elem := reflect.TypeOf(removeProductCommand).Elem()
  36 + for _, validErr := range valid.Errors {
  37 + field, isExist := elem.FieldByName(validErr.Field)
  38 + if isExist {
  39 + return fmt.Errorf(strings.Replace(validErr.Message, validErr.Field, field.Tag.Get("cname"), -1))
  40 + } else {
  41 + return fmt.Errorf(validErr.Message)
  42 + }
  43 + }
  44 + }
  45 + return nil
  46 +}
  1 +package dto
  2 +
  3 +type RewardStandardInfo struct {
  4 + Id int `json:"id"` //奖惩标准id
  5 + CompanyId int `json:"companyId"` //企业id
  6 + OrgId int `json:"orgId"` //组织ID
  7 + WorkshopId int `json:"workshopId"` //车间id
  8 + WorkshopName string `json:"workshopName"` //
  9 + LineId int `json:"lineId"` //生产线ID
  10 + LineName string `json:"lineName"` //
  11 + SectionId int `json:"sectionId"` //工段ID
  12 + SectionName string `json:"sectionName"` //
  13 + Remark string `json:"remark"` //备注
  14 + TargetType int `json:"targetType"` //指标类别 1:产效 2:合格率 3:安全事故 4:质量事故 5:异物次数
  15 + TargeVal1 string `json:"targeVal1"` //填写的指标值1
  16 + TargeVal2 string `json:"targeVal2"` //填写的指标值2
  17 + TargeVal3 string `json:"targeVal3"` //填写的指标值3
  18 + TargeVal4 string `json:"targeVal4"` //填写的指标值4
  19 +
  20 +}
  1 +package query
  2 +
  3 +type GetRewardStandard struct {
  4 + Id int `json:"id"`
  5 +}
  1 +package service
  2 +
  3 +import (
  4 + "time"
  5 +
  6 + "github.com/linmadan/egglib-go/core/application"
  7 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/application/factory"
  8 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/application/rewardStandard/command"
  9 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/application/rewardStandard/dto"
  10 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/application/rewardStandard/query"
  11 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/domain"
  12 +)
  13 +
  14 +type RewardStandardService struct{}
  15 +
  16 +func NewProductService(options map[string]interface{}) *RewardStandardService {
  17 + newService := &RewardStandardService{}
  18 + return newService
  19 +}
  20 +
  21 +//SaveRewardStandard 保存奖惩标准数据
  22 +func (srv RewardStandardService) SaveRewardStandard(operateInfo domain.OperateInfo, param *command.SaveRewardStandardCommand) (*command.SaveRewardStandardCommand, error) {
  23 + if err := param.ValidateCommand(); err != nil {
  24 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  25 + }
  26 + transactionContext, err := factory.CreateTransactionContext(nil)
  27 + if err != nil {
  28 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  29 + }
  30 + if err := transactionContext.StartTransaction(); err != nil {
  31 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  32 + }
  33 + defer func() {
  34 + transactionContext.RollbackTransaction()
  35 + }()
  36 +
  37 + rewardStandardRepo, _ := factory.CreateRewardStandardRepository(map[string]interface{}{
  38 + "transactionContext": transactionContext,
  39 + })
  40 +
  41 + _, dataList, err := rewardStandardRepo.Find(map[string]interface{}{
  42 + "limit": 1,
  43 + "workshopId": param.WorkshopId,
  44 + "lineId": param.LineId,
  45 + "sectionId": param.SectionId,
  46 + "targetType": param.TargetType,
  47 + })
  48 + if err != nil {
  49 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  50 + }
  51 + if len(dataList) > 0 {
  52 + if dataList[0].Id != param.Id {
  53 + return nil, application.ThrowError(application.BUSINESS_ERROR, "当前指标已存在")
  54 + }
  55 + }
  56 + var rewardStandardData *domain.RewardStandard
  57 + if param.Id > 0 {
  58 + rewardStandardData, err = rewardStandardRepo.FindOne(map[string]interface{}{
  59 + "id": param.Id,
  60 + })
  61 + if err != nil {
  62 + return nil, application.ThrowError(application.BUSINESS_ERROR, "指标数据不存在"+err.Error())
  63 + }
  64 + if rewardStandardData.CompanyId != operateInfo.CompanyId {
  65 + return nil, application.ThrowError(application.BUSINESS_ERROR, "指标数据填写错误")
  66 + }
  67 +
  68 + } else {
  69 + rewardStandardData = &domain.RewardStandard{
  70 + CreatedAt: time.Now(),
  71 + }
  72 + }
  73 +
  74 + workShopRepo, _ := factory.CreateWorkshopRepository(map[string]interface{}{
  75 + "transactionContext": transactionContext,
  76 + })
  77 + //获取车间数据
  78 + workShopData, err := workShopRepo.FindOne(map[string]interface{}{
  79 + "workshopId": param.WorkshopId,
  80 + })
  81 + if err != nil {
  82 + return nil, application.ThrowError(application.ARG_ERROR, "车间数据不能存在"+err.Error())
  83 + }
  84 + if workShopData.CompanyId != operateInfo.CompanyId {
  85 + return nil, application.ThrowError(application.ARG_ERROR, "车间数据填写错误")
  86 + }
  87 +
  88 + productLineData, err := workShopData.FindLine(param.LineId)
  89 + if err != nil {
  90 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  91 + }
  92 + productSection, err := productLineData.FindSection(param.SectionId)
  93 + if err != nil {
  94 + return nil, application.ThrowError(application.ARG_ERROR, err.Error())
  95 + }
  96 + rewardStandardData.UpdatedAt = time.Now()
  97 + rewardStandardData.ProductSection = *productSection
  98 + rewardStandardData.ProductLine = productLineData.SimpleProductLine()
  99 + rewardStandardData.Workshop = workShopData.SimpleWorkshop()
  100 + rewardStandardData.Remark = param.Remark
  101 + err = rewardStandardData.UpdateTarge(
  102 + param.TargetType,
  103 + param.TargeVal1,
  104 + param.TargeVal2,
  105 + param.TargeVal3,
  106 + param.TargeVal4)
  107 + if err != nil {
  108 + return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
  109 + }
  110 + _, err = rewardStandardRepo.Save(rewardStandardData)
  111 + if err != nil {
  112 + return nil, application.ThrowError(application.INTERNAL_SERVER_ERROR, err.Error())
  113 + }
  114 + if err := transactionContext.CommitTransaction(); err != nil {
  115 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  116 + }
  117 + return nil, nil
  118 +}
  119 +
  120 +//GetRewardStandard 根据id获取奖惩标准数据
  121 +func (srv RewardStandardService) GetRewardStandard(param *query.GetRewardStandard) (*dto.RewardStandardInfo, error) {
  122 + transactionContext, err := factory.CreateTransactionContext(nil)
  123 + if err != nil {
  124 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  125 + }
  126 + if err := transactionContext.StartTransaction(); err != nil {
  127 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  128 + }
  129 + defer func() {
  130 + transactionContext.RollbackTransaction()
  131 + }()
  132 +
  133 + rewardStandardRepo, _ := factory.CreateRewardStandardRepository(map[string]interface{}{
  134 + "transactionContext": transactionContext,
  135 + })
  136 + rewardStandardData, err := rewardStandardRepo.FindOne(map[string]interface{}{
  137 + "id": param.Id,
  138 + })
  139 + if err != nil {
  140 + return nil, application.ThrowError(application.BUSINESS_ERROR, "指标数据不存在"+err.Error())
  141 + }
  142 + if err := transactionContext.CommitTransaction(); err != nil {
  143 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  144 + }
  145 +
  146 + result := dto.RewardStandardInfo{
  147 + Id: rewardStandardData.Id,
  148 + WorkshopId: rewardStandardData.Workshop.WorkshopId,
  149 + WorkshopName: rewardStandardData.Workshop.WorkshopName,
  150 + LineId: rewardStandardData.ProductLine.LineId,
  151 + LineName: rewardStandardData.ProductLine.LineName,
  152 + SectionId: rewardStandardData.ProductSection.SectionId,
  153 + SectionName: rewardStandardData.ProductSection.SectionName,
  154 + Remark: rewardStandardData.Remark,
  155 + TargetType: rewardStandardData.TargetType,
  156 + TargeVal1: rewardStandardData.TargeVal1,
  157 + TargeVal2: rewardStandardData.TargeVal2,
  158 + TargeVal3: rewardStandardData.TargeVal3,
  159 + TargeVal4: rewardStandardData.TargeVal4,
  160 + }
  161 + return &result, nil
  162 +}
  163 +
  164 +//DeleteRewardStandard 根据id删除奖惩标准
  165 +func (srv RewardStandardService) DeleteRewardStandard(param *query.GetRewardStandard) (*domain.RewardStandard, error) {
  166 + transactionContext, err := factory.CreateTransactionContext(nil)
  167 + if err != nil {
  168 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  169 + }
  170 + if err := transactionContext.StartTransaction(); err != nil {
  171 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  172 + }
  173 + defer func() {
  174 + transactionContext.RollbackTransaction()
  175 + }()
  176 +
  177 + rewardStandardRepo, _ := factory.CreateRewardStandardRepository(map[string]interface{}{
  178 + "transactionContext": transactionContext,
  179 + })
  180 + rewardStandardData, err := rewardStandardRepo.FindOne(map[string]interface{}{
  181 + "id": param.Id,
  182 + })
  183 + if err != nil {
  184 + return nil, application.ThrowError(application.BUSINESS_ERROR, "指标数据不存在"+err.Error())
  185 + }
  186 + if err := transactionContext.CommitTransaction(); err != nil {
  187 + return nil, application.ThrowError(application.TRANSACTION_ERROR, err.Error())
  188 + }
  189 + return rewardStandardData, nil
  190 +}
@@ -14,6 +14,12 @@ type ProductLine struct { @@ -14,6 +14,12 @@ type ProductLine struct {
14 Removed int `json:"removed,omitempty"` 14 Removed int `json:"removed,omitempty"`
15 } 15 }
16 16
  17 +//输出简化的模型
  18 +type SimpleProductLine struct {
  19 + LineId int `json:"lineId"` // 生产线ID
  20 + LineName string `json:"lineName"` // 生产线名称
  21 +}
  22 +
17 // 查询生产线 23 // 查询生产线
18 func (productLine *ProductLine) FindSection(sectionId int) (*ProductSection, error) { 24 func (productLine *ProductLine) FindSection(sectionId int) (*ProductSection, error) {
19 for i := range productLine.ProductSections { 25 for i := range productLine.ProductSections {
@@ -37,3 +43,11 @@ func (productLine *ProductLine) GetProductSections(removed int) []*ProductSectio @@ -37,3 +43,11 @@ func (productLine *ProductLine) GetProductSections(removed int) []*ProductSectio
37 } 43 }
38 return result 44 return result
39 } 45 }
  46 +
  47 +//SimpleProductLine 输出简化的模型
  48 +func (productLine *ProductLine) SimpleProductLine() SimpleProductLine {
  49 + return SimpleProductLine{
  50 + LineId: productLine.LineId,
  51 + LineName: productLine.LineName,
  52 + }
  53 +}
  1 +package domain
  2 +
  3 +//RewardStandard 奖惩规则
  4 +type RewardRule struct {
  5 +}
  1 +package domain
  2 +
  3 +import (
  4 + "errors"
  5 + "strconv"
  6 + "time"
  7 +)
  8 +
  9 +//RewardStandard 奖惩标准
  10 +type RewardStandard struct {
  11 + Id int `json:"id"` //奖惩标准id
  12 + CompanyId int `json:"companyId"` //企业id
  13 + OrgId int `json:"orgId"` //组织ID
  14 + Workshop SimpleWorkshop `json:"workshop"` //车间id
  15 + ProductLine SimpleProductLine `json:"productLine"` //生产线
  16 + ProductSection ProductSection `json:"ProductSection"` //工段
  17 + Remark string `json:"remark"` //备注
  18 + TargetType int `json:"targetType"` //指标类别 1:产效 2:合格率 3:安全事故 4:质量事故 5:异物次数
  19 + TargeVal1 string `json:"targeVal1"` //填写的指标值1
  20 + TargeVal2 string `json:"targeVal2"` //填写的指标值2
  21 + TargeVal3 string `json:"targeVal3"` //填写的指标值3
  22 + TargeVal4 string `json:"targeVal4"` //填写的指标值4
  23 + CreatedAt time.Time `json:"createdAt"` //创建时间
  24 + UpdatedAt time.Time `json:"updatedAt"` //更新时间
  25 + DeletedAt *time.Time `json:"-"` //删除时间
  26 +}
  27 +
  28 +/*
  29 +填写的指标值描述
  30 +产效=> 功: 大于等于 x kg/小时;过:小于 x kg/小时
  31 +合格率=> 功:大于等于 x% ;过:小于 x%
  32 +安全事故 => 功:小于等于 x 次 或者 损失小于等于 x 元;过:大于 x 次 或 损失大于 x 元
  33 +质量事故 => 功:小于等于 x 次 或者 损失 小于等于 x 元;过:大于 x 次 或者 损失大于 x 元
  34 +异物次数 => 功:发现金属小于等于 x 次 或者 发现非金属小于等于 x 次
  35 + 过:发现金属大于 x 次 或 发现非金数大于 x 次
  36 +
  37 +*/
  38 +
  39 +type RewardStandardRepository interface {
  40 + Save(param *RewardStandard) (*RewardStandard, error)
  41 + Remove(param *RewardStandard) (*RewardStandard, error)
  42 + FindOne(queryOptions map[string]interface{}) (*RewardStandard, error)
  43 + Find(queryOptions map[string]interface{}) (int64, []*RewardStandard, error)
  44 +}
  45 +
  46 +//指标类别 1:产效 2:合格率 3:安全事故 4:质量事故 5:异物次数
  47 +const (
  48 + TargetType1 int = 1
  49 + TargetType2 int = 2
  50 + TargetType3 int = 3
  51 + TargetType4 int = 4
  52 + TargetType5 int = 5
  53 +)
  54 +
  55 +//UpdateTarge 更新指标内容
  56 +func (m *RewardStandard) UpdateTarge(targetType int, targeVal1 string, targeVal2 string, targeVal3 string, targeVal4 string) error {
  57 + switch targetType {
  58 + case TargetType1, TargetType2:
  59 + if len(targeVal1) == 0 || len(targeVal2) == 0 {
  60 + return errors.New("功过指标内容不能为空")
  61 + }
  62 + _, err := strconv.Atoi(targeVal1)
  63 + if err != nil {
  64 + return errors.New("功过指标内容需要为整数")
  65 + }
  66 + _, err = strconv.Atoi(targeVal2)
  67 + if err != nil {
  68 + return errors.New("功过指标内容需要为整数")
  69 + }
  70 + m.TargetType = targetType
  71 + m.TargeVal1 = targeVal1
  72 + m.TargeVal2 = targeVal2
  73 + m.TargeVal3 = ""
  74 + m.TargeVal4 = ""
  75 + case TargetType3, TargetType4, TargetType5:
  76 + if len(targeVal1) == 0 || len(targeVal2) == 0 || len(targeVal3) == 0 || len(targeVal4) == 0 {
  77 + return errors.New("功过指标内容不能为空")
  78 + }
  79 + _, err := strconv.Atoi(targeVal1)
  80 + if err != nil {
  81 + return errors.New("功过指标内容需要为整数")
  82 + }
  83 + _, err = strconv.Atoi(targeVal2)
  84 + if err != nil {
  85 + return errors.New("功过指标内容需要为整数")
  86 + }
  87 + _, err = strconv.Atoi(targeVal3)
  88 + if err != nil {
  89 + return errors.New("功过指标内容需要为整数")
  90 + }
  91 + _, err = strconv.Atoi(targeVal4)
  92 + if err != nil {
  93 + return errors.New("功过指标内容需要为整数")
  94 + }
  95 + m.TargetType = targetType
  96 + m.TargeVal1 = targeVal1
  97 + m.TargeVal2 = targeVal2
  98 + m.TargeVal3 = targeVal3
  99 + m.TargeVal4 = targeVal4
  100 + default:
  101 + return errors.New("指标类型填写错误")
  102 +
  103 + }
  104 + return nil
  105 +}
  106 +
  107 +func (m *RewardStandard) TargetTypeName() string {
  108 + switch m.TargetType {
  109 + case TargetType1:
  110 + return "产效"
  111 + case TargetType2:
  112 + return "合格率"
  113 + case TargetType3:
  114 + return "安全事故"
  115 + case TargetType4:
  116 + return "质量事故"
  117 + case TargetType5:
  118 + return "异物次数"
  119 + }
  120 + return ""
  121 +}
@@ -39,6 +39,13 @@ type Workshop struct { @@ -39,6 +39,13 @@ type Workshop struct {
39 Ext *Ext `json:"ext,omitempty"` 39 Ext *Ext `json:"ext,omitempty"`
40 } 40 }
41 41
  42 +type SimpleWorkshop struct {
  43 + // 车间ID
  44 + WorkshopId int `json:"workshopId"`
  45 + // 车间名称
  46 + WorkshopName string `json:"workshopName"`
  47 +}
  48 +
42 type WorkshopRepository interface { 49 type WorkshopRepository interface {
43 Save(workshop *Workshop) (*Workshop, error) 50 Save(workshop *Workshop) (*Workshop, error)
44 Remove(workshop *Workshop) (*Workshop, error) 51 Remove(workshop *Workshop) (*Workshop, error)
@@ -301,3 +308,11 @@ func (workshop *Workshop) CloneSample() *Workshop { @@ -301,3 +308,11 @@ func (workshop *Workshop) CloneSample() *Workshop {
301 WorkshopName: workshop.WorkshopName, 308 WorkshopName: workshop.WorkshopName,
302 } 309 }
303 } 310 }
  311 +
  312 +//SimpleWorkshop 输出简化的模型
  313 +func (workShop *Workshop) SimpleWorkshop() SimpleWorkshop {
  314 + return SimpleWorkshop{
  315 + WorkshopId: workShop.WorkshopId,
  316 + WorkshopName: workShop.WorkshopName,
  317 + }
  318 +}
  1 +package models
  2 +
  3 +import (
  4 + "time"
  5 +
  6 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/domain"
  7 +)
  8 +
  9 +//RewardStandard 奖惩标准
  10 +type RewardStandard struct {
  11 + tableName string `pg:"manufacture.reward_standard,alias:reward_standard"`
  12 + Id int `pg:"pk:id"` //奖惩标准 id
  13 + Workshop domain.SimpleWorkshop //车间id
  14 + ProductLine domain.SimpleProductLine //生产线
  15 + ProductSection domain.ProductSection //工段
  16 + Remark string //备注
  17 + TargetType int //指标类别 1:产效 2:合格率 3:安全事故 4:质量事故 5:异物次数
  18 + TargeVal1 string //填写的指标值1
  19 + TargeVal2 string //填写的指标值2
  20 + TargeVal3 string //填写的指标值3
  21 + TargeVal4 string //填写的指标值4
  22 + CreatedAt time.Time //创建时间
  23 + UpdatedAt time.Time //更新时间
  24 + DeletedAt *time.Time //删除时间
  25 +}
  1 +package repository
  2 +
  3 +import (
  4 + "fmt"
  5 + "time"
  6 +
  7 + "github.com/go-pg/pg/v10"
  8 + pgTransaction "github.com/linmadan/egglib-go/transaction/pg"
  9 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/domain"
  10 + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-manufacture/pkg/infrastructure/pg/models"
  11 +)
  12 +
  13 +type RewardStandardRepository struct {
  14 + transactionContext *pgTransaction.TransactionContext
  15 +}
  16 +
  17 +var _ domain.RewardStandardRepository = (*RewardStandardRepository)(nil)
  18 +
  19 +func NewRewardStandardRepository(transactionContext *pgTransaction.TransactionContext) (*RewardStandardRepository, error) {
  20 + if transactionContext == nil {
  21 + return nil, fmt.Errorf("transactionContext参数不能为nil")
  22 + } else {
  23 + return &RewardStandardRepository{
  24 + transactionContext: transactionContext,
  25 + }, nil
  26 + }
  27 +}
  28 +
  29 +// func (repo *RewardStandardRepository) nextIdentify() (int64, error) {
  30 +// IdWorker, err := snowflake.NewIdWorker(1)
  31 +// if err != nil {
  32 +// return 0, err
  33 +// }
  34 +// id, err := IdWorker.NextId()
  35 +// return id, err
  36 +// }
  37 +
  38 +func (repo *RewardStandardRepository) Save(param *domain.RewardStandard) (*domain.RewardStandard, error) {
  39 + m := models.RewardStandard{
  40 + Id: param.Id,
  41 + Workshop: param.Workshop,
  42 + ProductLine: param.ProductLine,
  43 + ProductSection: param.ProductSection,
  44 + Remark: param.Remark,
  45 + TargetType: param.TargetType,
  46 + TargeVal1: param.TargeVal1,
  47 + TargeVal2: param.TargeVal2,
  48 + TargeVal3: param.TargeVal3,
  49 + TargeVal4: param.TargeVal4,
  50 + CreatedAt: param.CreatedAt,
  51 + UpdatedAt: param.UpdatedAt,
  52 + DeletedAt: param.DeletedAt,
  53 + }
  54 + tx := repo.transactionContext.PgTx
  55 + if param.Id == 0 {
  56 + _, err := tx.Model(&m).Insert()
  57 + if err != nil {
  58 + return nil, err
  59 + }
  60 + param.Id = m.Id
  61 + } else {
  62 + _, err := tx.Model(&m).WherePK().Update()
  63 + if err != nil {
  64 + return nil, err
  65 + }
  66 + }
  67 +
  68 + return param, nil
  69 +}
  70 +
  71 +func (repo *RewardStandardRepository) Remove(param *domain.RewardStandard) (*domain.RewardStandard, error) {
  72 + tx := repo.transactionContext.PgTx
  73 + m := new(models.RewardStandard)
  74 + m.Id = param.Id
  75 + nowTime := time.Now()
  76 + param.DeletedAt = &nowTime
  77 + _, err := tx.Model(m).
  78 + WherePK().Set("deleted_at=?", nowTime).
  79 + Update()
  80 + if err != nil {
  81 + return param, err
  82 + }
  83 +
  84 + return nil, nil
  85 +}
  86 +
  87 +func (repo *RewardStandardRepository) FindOne(queryOptions map[string]interface{}) (*domain.RewardStandard, error) {
  88 + tx := repo.transactionContext.PgTx
  89 + m := new(models.RewardStandard)
  90 + query := tx.Model(m).Where("deleted_at isnull")
  91 + if v, ok := queryOptions["id"]; ok {
  92 + query.Where("id=?", v)
  93 + }
  94 + err := query.First()
  95 + if err != nil {
  96 + if err == pg.ErrNoRows {
  97 + return nil, domain.ErrorNotFound
  98 + } else {
  99 + return nil, err
  100 + }
  101 + }
  102 + result := repo.TransformToDomain(m)
  103 + return result, nil
  104 +}
  105 +
  106 +func (repo *RewardStandardRepository) Find(queryOptions map[string]interface{}) (int64, []*domain.RewardStandard, error) {
  107 + tx := repo.transactionContext.PgTx
  108 + m := []models.RewardStandard{}
  109 + query := tx.Model(&m).
  110 + Where("deleted_at isnull").
  111 + Limit(20)
  112 + if v, ok := queryOptions["limit"].(int); ok {
  113 + query.Limit(v)
  114 + }
  115 +
  116 + if v, ok := queryOptions["offset"].(int); ok {
  117 + query.Offset(v)
  118 + }
  119 +
  120 + if v, ok := queryOptions["workshopId"]; ok {
  121 + query.Where("work_shop->>'workshopId'='?'", v)
  122 + }
  123 + if v, ok := queryOptions["lineId"]; ok {
  124 + query.Where("product_line->>lineId='?'", v)
  125 + }
  126 + if v, ok := queryOptions["sectionId"]; ok {
  127 + query.Where("product_section->>sectionId='?'", v)
  128 + }
  129 +
  130 + if v, ok := queryOptions["targetType"]; ok {
  131 + query.Where("target_type=?", v)
  132 + }
  133 +
  134 + cnt, err := query.SelectAndCount()
  135 + if err != nil {
  136 + return 0, nil, err
  137 + }
  138 +
  139 + var listData []*domain.RewardStandard
  140 + for i := range m {
  141 + temp := repo.TransformToDomain(&m[i])
  142 + listData = append(listData, temp)
  143 + }
  144 + return int64(cnt), listData, nil
  145 +}
  146 +
  147 +func (repo *RewardStandardRepository) TransformToDomain(param *models.RewardStandard) *domain.RewardStandard {
  148 + return &domain.RewardStandard{
  149 + Id: param.Id,
  150 + Workshop: param.Workshop,
  151 + ProductLine: param.ProductLine,
  152 + ProductSection: param.ProductSection,
  153 + Remark: param.Remark,
  154 + TargetType: param.TargetType,
  155 + TargeVal1: param.TargeVal1,
  156 + TargeVal2: param.TargeVal2,
  157 + TargeVal3: param.TargeVal3,
  158 + TargeVal4: param.TargeVal4,
  159 + CreatedAt: param.CreatedAt,
  160 + UpdatedAt: param.UpdatedAt,
  161 + DeletedAt: param.DeletedAt,
  162 + }
  163 +}