正在显示
17 个修改的文件
包含
380 行增加
和
0 行删除
| @@ -111,6 +111,8 @@ spec: | @@ -111,6 +111,8 @@ spec: | ||
| 111 | value: "http://allied-creation-user-dev.fjmaimaimai.com" | 111 | value: "http://allied-creation-user-dev.fjmaimaimai.com" |
| 112 | - name: ALLIED_CREATION_COOPERATION_HOST | 112 | - name: ALLIED_CREATION_COOPERATION_HOST |
| 113 | value: "http://allied-creation-cooperation-dev.fjmaimaimai.com" | 113 | value: "http://allied-creation-cooperation-dev.fjmaimaimai.com" |
| 114 | + - name: ALLIED_CREATION_MANUFACTURE_HOST | ||
| 115 | + value: "http://allied-creation-manufacture-dev.fjmaimaimai.com" | ||
| 114 | - name: ALLIED_CREATION_BASIC_HOST | 116 | - name: ALLIED_CREATION_BASIC_HOST |
| 115 | value: "http://allied-creation-basic-dev.fjmaimaimai.com" | 117 | value: "http://allied-creation-basic-dev.fjmaimaimai.com" |
| 116 | - name: SMS_SERVE_HOST | 118 | - name: SMS_SERVE_HOST |
| @@ -115,6 +115,8 @@ spec: | @@ -115,6 +115,8 @@ spec: | ||
| 115 | value: "https://allied-creation-user-prd.fjmaimaimai.com" | 115 | value: "https://allied-creation-user-prd.fjmaimaimai.com" |
| 116 | - name: ALLIED_CREATION_COOPERATION_HOST | 116 | - name: ALLIED_CREATION_COOPERATION_HOST |
| 117 | value: "https://allied-creation-cooperation-prd.fjmaimaimai.com" | 117 | value: "https://allied-creation-cooperation-prd.fjmaimaimai.com" |
| 118 | + - name: ALLIED_CREATION_MANUFACTURE_HOST | ||
| 119 | + value: "https://allied-creation-manufacture-prd.fjmaimaimai.com" | ||
| 118 | - name: ALLIED_CREATION_BASIC_HOST | 120 | - name: ALLIED_CREATION_BASIC_HOST |
| 119 | value: "https://allied-creation-basic-prd.fjmaimaimai.com" | 121 | value: "https://allied-creation-basic-prd.fjmaimaimai.com" |
| 120 | - name: SMS_SERVE_HOST | 122 | - name: SMS_SERVE_HOST |
| @@ -119,6 +119,8 @@ spec: | @@ -119,6 +119,8 @@ spec: | ||
| 119 | value: "https://allied-creation-cooperation-test.fjmaimaimai.com" | 119 | value: "https://allied-creation-cooperation-test.fjmaimaimai.com" |
| 120 | - name: ALLIED_CREATION_BASIC_HOST | 120 | - name: ALLIED_CREATION_BASIC_HOST |
| 121 | value: "https://allied-creation-basic-test.fjmaimaimai.com" | 121 | value: "https://allied-creation-basic-test.fjmaimaimai.com" |
| 122 | + - name: ALLIED_CREATION_MANUFACTURE_HOST | ||
| 123 | + value: "http://allied-creation-manufacture-test.fjmaimaimai.com" | ||
| 122 | - name: SMS_SERVE_HOST | 124 | - name: SMS_SERVE_HOST |
| 123 | value: "https://sms.fjmaimaimai.com:9897" | 125 | value: "https://sms.fjmaimaimai.com:9897" |
| 124 | - name: SUPLUS_SALE_APP | 126 | - name: SUPLUS_SALE_APP |
pkg/application/web/excelData/query/manufacture_export_employee_attendance_statics_query.go
0 → 100644
| 1 | +package query | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
| 5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +type ManufactureExportEmployeeAttendanceStaticsQuery struct { | ||
| 9 | + *allied_creation_manufacture.SearchEmployeeAttendanceStaticsRequest | ||
| 10 | + //操作人 | ||
| 11 | + Operator domain.Operator `json:"-"` | ||
| 12 | + SelectedField []string `json:"selectedField"` | ||
| 13 | +} |
pkg/application/web/excelData/query/manufacture_export_workshop_attendance_statics_query.go
0 → 100644
| 1 | +package query | ||
| 2 | + | ||
| 3 | +import ( | ||
| 4 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" | ||
| 5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture" | ||
| 6 | +) | ||
| 7 | + | ||
| 8 | +type ManufactureExportWorkshopAttendanceStaticsQuery struct { | ||
| 9 | + *allied_creation_manufacture.SearchWorkshopWorkTimeStaticsRequest | ||
| 10 | + //操作人 | ||
| 11 | + Operator domain.Operator `json:"-"` | ||
| 12 | + SelectedField []string `json:"selectedField"` | ||
| 13 | +} |
| @@ -66,6 +66,7 @@ func (srv ExcelDataService) ExportProducts(cmd *query.SearchProductQuery) (Expor | @@ -66,6 +66,7 @@ func (srv ExcelDataService) ExportProducts(cmd *query.SearchProductQuery) (Expor | ||
| 66 | return ExportProductsData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil | 66 | return ExportProductsData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil |
| 67 | } | 67 | } |
| 68 | 68 | ||
| 69 | +// ExportEmployeeProductive 导出员工产能 | ||
| 69 | func (srv ExcelDataService) ExportEmployeeProductive(cmd *query.ManufactureEmployeeProductiveQuery) (ExportEmployeeProductiveData, error) { | 70 | func (srv ExcelDataService) ExportEmployeeProductive(cmd *query.ManufactureEmployeeProductiveQuery) (ExportEmployeeProductiveData, error) { |
| 70 | creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator) | 71 | creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator) |
| 71 | result, err := creationUserGateway.SearchEmployeeProductive(allied_creation_manufacture.SearchEmployeeProductiveRequest{ | 72 | result, err := creationUserGateway.SearchEmployeeProductive(allied_creation_manufacture.SearchEmployeeProductiveRequest{ |
| @@ -83,6 +84,7 @@ func (srv ExcelDataService) ExportEmployeeProductive(cmd *query.ManufactureEmplo | @@ -83,6 +84,7 @@ func (srv ExcelDataService) ExportEmployeeProductive(cmd *query.ManufactureEmplo | ||
| 83 | return ExportEmployeeProductiveData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil | 84 | return ExportEmployeeProductiveData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil |
| 84 | } | 85 | } |
| 85 | 86 | ||
| 87 | +// ExportEmployeeProductive 导出车间产能 | ||
| 86 | func (srv ExcelDataService) ExportWorkshopProductive(cmd *query.ManufactureWorkshopProductiveQuery) (ExportWorkshopProductiveData, error) { | 88 | func (srv ExcelDataService) ExportWorkshopProductive(cmd *query.ManufactureWorkshopProductiveQuery) (ExportWorkshopProductiveData, error) { |
| 87 | creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator) | 89 | creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator) |
| 88 | result, err := creationUserGateway.SearchWorkshopProductive(allied_creation_manufacture.SearchWorkshopProductiveRequest{ | 90 | result, err := creationUserGateway.SearchWorkshopProductive(allied_creation_manufacture.SearchWorkshopProductiveRequest{ |
| @@ -96,3 +98,23 @@ func (srv ExcelDataService) ExportWorkshopProductive(cmd *query.ManufactureWorks | @@ -96,3 +98,23 @@ func (srv ExcelDataService) ExportWorkshopProductive(cmd *query.ManufactureWorks | ||
| 96 | } | 98 | } |
| 97 | return ExportWorkshopProductiveData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil | 99 | return ExportWorkshopProductiveData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil |
| 98 | } | 100 | } |
| 101 | + | ||
| 102 | +// ExportEmployeeAttendanceStatics 导出员工工时 | ||
| 103 | +func (srv ExcelDataService) ExportEmployeeAttendanceStatics(cmd *query.ManufactureExportEmployeeAttendanceStaticsQuery) (ExportEmployeeAttendanceStaticsData, error) { | ||
| 104 | + creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator) | ||
| 105 | + result, err := creationUserGateway.SearchEmployeeAttendanceStatics(*cmd.SearchEmployeeAttendanceStaticsRequest) | ||
| 106 | + if err != nil { | ||
| 107 | + return ExportEmployeeAttendanceStaticsData{}, fmt.Errorf("获取员工工时数据失败:%w", err) | ||
| 108 | + } | ||
| 109 | + return ExportEmployeeAttendanceStaticsData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil | ||
| 110 | +} | ||
| 111 | + | ||
| 112 | +// ExportWorkshopAttendanceStatics 导出车间工时 | ||
| 113 | +func (srv ExcelDataService) ExportWorkshopAttendanceStatics(cmd *query.ManufactureExportWorkshopAttendanceStaticsQuery) (ExportWorkshopAttendanceStaticsData, error) { | ||
| 114 | + creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator) | ||
| 115 | + result, err := creationUserGateway.SearchWorkshopWorkTimeStatics(*cmd.SearchWorkshopWorkTimeStaticsRequest) | ||
| 116 | + if err != nil { | ||
| 117 | + return ExportWorkshopAttendanceStaticsData{}, fmt.Errorf("获取车间工时数据失败:%w", err) | ||
| 118 | + } | ||
| 119 | + return ExportWorkshopAttendanceStaticsData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil | ||
| 120 | +} |
| @@ -91,6 +91,8 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD | @@ -91,6 +91,8 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD | ||
| 91 | {EnName: "department", CnName: "*所属部门"}, | 91 | {EnName: "department", CnName: "*所属部门"}, |
| 92 | {EnName: "enableStatus", CnName: "*用户状态"}, | 92 | {EnName: "enableStatus", CnName: "*用户状态"}, |
| 93 | {EnName: "phone", CnName: "*手机号"}, | 93 | {EnName: "phone", CnName: "*手机号"}, |
| 94 | + {EnName: "employeeType", CnName: "*员工类型"}, | ||
| 95 | + {EnName: "icCardNumber", CnName: "IC卡号"}, | ||
| 94 | {EnName: "email", CnName: "邮箱"}, | 96 | {EnName: "email", CnName: "邮箱"}, |
| 95 | } | 97 | } |
| 96 | excelData, err := excelImport.OpenExcelFromIoReader(importDataCommand.Reader) | 98 | excelData, err := excelImport.OpenExcelFromIoReader(importDataCommand.Reader) |
| @@ -112,6 +114,8 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD | @@ -112,6 +114,8 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD | ||
| 112 | Phone: strings.TrimSpace(v["phone"]), | 114 | Phone: strings.TrimSpace(v["phone"]), |
| 113 | Email: strings.TrimSpace(v["email"]), | 115 | Email: strings.TrimSpace(v["email"]), |
| 114 | EnableStatus: strings.TrimSpace(v["enableStatus"]), | 116 | EnableStatus: strings.TrimSpace(v["enableStatus"]), |
| 117 | + EmployeeType: strings.TrimSpace(v["employeeType"]), | ||
| 118 | + IcCardNumber: strings.TrimSpace(v["icCardNumber"]), | ||
| 115 | } | 119 | } |
| 116 | users = append(users, item) | 120 | users = append(users, item) |
| 117 | } | 121 | } |
| @@ -408,3 +408,151 @@ func (data ExportWorkshopProductiveData) DataListLen() int { | @@ -408,3 +408,151 @@ func (data ExportWorkshopProductiveData) DataListLen() int { | ||
| 408 | func (data ExportWorkshopProductiveData) TableTitle() []string { | 408 | func (data ExportWorkshopProductiveData) TableTitle() []string { |
| 409 | return nil | 409 | return nil |
| 410 | } | 410 | } |
| 411 | + | ||
| 412 | +//ExportEmployeeAttendanceStaticsData 导出员工产能数据 | ||
| 413 | +type ExportEmployeeAttendanceStaticsData struct { | ||
| 414 | + SourceData []allied_creation_manufacture.SearchEmployeeAttendanceStaticsItem | ||
| 415 | + SelectedField []string | ||
| 416 | +} | ||
| 417 | + | ||
| 418 | +var _ excel.ExcelMaker = (*ExportEmployeeAttendanceStaticsData)(nil) | ||
| 419 | + | ||
| 420 | +func (data ExportEmployeeAttendanceStaticsData) AllFields() []DataFieldOptions { | ||
| 421 | + return []DataFieldOptions{ | ||
| 422 | + {EnName: "signDate", CnName: "日期"}, | ||
| 423 | + {EnName: "workshopName", CnName: "车间名称"}, | ||
| 424 | + {EnName: "lineName", CnName: "线别"}, | ||
| 425 | + {EnName: "sectionName", CnName: "工段"}, | ||
| 426 | + {EnName: "userName", CnName: "姓名"}, | ||
| 427 | + {EnName: "employeeTypeDescription", CnName: "员工类型"}, | ||
| 428 | + {EnName: "attendanceTypeDescription", CnName: "类别"}, | ||
| 429 | + {EnName: "workTime", CnName: "工时"}, | ||
| 430 | + {EnName: "attendanceStatusDescription", CnName: "状态"}, | ||
| 431 | + {EnName: "orgName", CnName: "组织机构"}, | ||
| 432 | + } | ||
| 433 | +} | ||
| 434 | + | ||
| 435 | +func (data ExportEmployeeAttendanceStaticsData) DataFieldList() []excel.DataField { | ||
| 436 | + fields := []excel.DataField{} | ||
| 437 | + allFields := data.AllFields() | ||
| 438 | + for _, value2 := range allFields { | ||
| 439 | + if len(data.SelectedField) == 0 || value2.IsDefault { | ||
| 440 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
| 441 | + continue | ||
| 442 | + } | ||
| 443 | + for _, value3 := range data.SelectedField { | ||
| 444 | + if value2.EnName == value3 { | ||
| 445 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
| 446 | + } | ||
| 447 | + } | ||
| 448 | + } | ||
| 449 | + return fields | ||
| 450 | +} | ||
| 451 | + | ||
| 452 | +func (data ExportEmployeeAttendanceStaticsData) CellValue(index int, enName string) (value interface{}) { | ||
| 453 | + if index > data.DataListLen() { | ||
| 454 | + return "" | ||
| 455 | + } | ||
| 456 | + switch enName { | ||
| 457 | + case "signDate": | ||
| 458 | + return data.SourceData[index].SignDate | ||
| 459 | + case "workshopName": | ||
| 460 | + return data.SourceData[index].WorkshopName | ||
| 461 | + case "lineName": | ||
| 462 | + return data.SourceData[index].LineName | ||
| 463 | + case "sectionName": | ||
| 464 | + return data.SourceData[index].SectionName | ||
| 465 | + case "userName": | ||
| 466 | + return data.SourceData[index].ProductWorker.UserName | ||
| 467 | + case "employeeTypeDescription": | ||
| 468 | + return data.SourceData[index].EmployeeTypeDescription | ||
| 469 | + case "attendanceTypeDescription": | ||
| 470 | + return data.SourceData[index].AttendanceTypeDescription | ||
| 471 | + case "workTime": | ||
| 472 | + return fmt.Sprintf("%vh", data.SourceData[index].WorkTime) | ||
| 473 | + case "attendanceStatusDescription": | ||
| 474 | + return data.SourceData[index].AttendanceStatusDescription | ||
| 475 | + case "orgName": | ||
| 476 | + return data.SourceData[index].OrgName | ||
| 477 | + } | ||
| 478 | + return nil | ||
| 479 | +} | ||
| 480 | + | ||
| 481 | +func (data ExportEmployeeAttendanceStaticsData) DataListLen() int { | ||
| 482 | + return len(data.SourceData) | ||
| 483 | +} | ||
| 484 | + | ||
| 485 | +func (data ExportEmployeeAttendanceStaticsData) TableTitle() []string { | ||
| 486 | + return nil | ||
| 487 | +} | ||
| 488 | + | ||
| 489 | +//ExportWorkshopAttendanceStaticsData 导出车间工时统计 | ||
| 490 | +type ExportWorkshopAttendanceStaticsData struct { | ||
| 491 | + SourceData []allied_creation_manufacture.SearchWorkshopWorkTimeStaticsItem | ||
| 492 | + SelectedField []string | ||
| 493 | +} | ||
| 494 | + | ||
| 495 | +var _ excel.ExcelMaker = (*ExportWorkshopAttendanceStaticsData)(nil) | ||
| 496 | + | ||
| 497 | +func (data ExportWorkshopAttendanceStaticsData) AllFields() []DataFieldOptions { | ||
| 498 | + return []DataFieldOptions{ | ||
| 499 | + {EnName: "recordDate", CnName: "日期"}, | ||
| 500 | + {EnName: "workshopName", CnName: "车间名称"}, | ||
| 501 | + {EnName: "lineName", CnName: "线别"}, | ||
| 502 | + {EnName: "sectionName", CnName: "工段"}, | ||
| 503 | + {EnName: "eftWorkTime", CnName: "固定工时"}, | ||
| 504 | + {EnName: "edWorkTime", CnName: "临时工时"}, | ||
| 505 | + {EnName: "epWorkTime", CnName: "派遣工时"}, | ||
| 506 | + {EnName: "orgName", CnName: "组织机构"}, | ||
| 507 | + } | ||
| 508 | +} | ||
| 509 | + | ||
| 510 | +func (data ExportWorkshopAttendanceStaticsData) DataFieldList() []excel.DataField { | ||
| 511 | + fields := []excel.DataField{} | ||
| 512 | + allFields := data.AllFields() | ||
| 513 | + for _, value2 := range allFields { | ||
| 514 | + if len(data.SelectedField) == 0 || value2.IsDefault { | ||
| 515 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
| 516 | + continue | ||
| 517 | + } | ||
| 518 | + for _, value3 := range data.SelectedField { | ||
| 519 | + if value2.EnName == value3 { | ||
| 520 | + fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName}) | ||
| 521 | + } | ||
| 522 | + } | ||
| 523 | + } | ||
| 524 | + return fields | ||
| 525 | +} | ||
| 526 | + | ||
| 527 | +func (data ExportWorkshopAttendanceStaticsData) CellValue(index int, enName string) (value interface{}) { | ||
| 528 | + if index > data.DataListLen() { | ||
| 529 | + return "" | ||
| 530 | + } | ||
| 531 | + switch enName { | ||
| 532 | + case "recordDate": | ||
| 533 | + return data.SourceData[index].RecordDate | ||
| 534 | + case "workshopName": | ||
| 535 | + return data.SourceData[index].WorkshopName | ||
| 536 | + case "lineName": | ||
| 537 | + return data.SourceData[index].LineName | ||
| 538 | + case "sectionName": | ||
| 539 | + return data.SourceData[index].SectionName | ||
| 540 | + case "eftWorkTime": | ||
| 541 | + return data.SourceData[index].EftWorkTime | ||
| 542 | + case "edWorkTime": | ||
| 543 | + return data.SourceData[index].EdWorkTime | ||
| 544 | + case "epWorkTime": | ||
| 545 | + return data.SourceData[index].EptWorkTime | ||
| 546 | + case "orgName": | ||
| 547 | + return data.SourceData[index].OrgName | ||
| 548 | + } | ||
| 549 | + return nil | ||
| 550 | +} | ||
| 551 | + | ||
| 552 | +func (data ExportWorkshopAttendanceStaticsData) DataListLen() int { | ||
| 553 | + return len(data.SourceData) | ||
| 554 | +} | ||
| 555 | + | ||
| 556 | +func (data ExportWorkshopAttendanceStaticsData) TableTitle() []string { | ||
| 557 | + return nil | ||
| 558 | +} |
| @@ -30,6 +30,10 @@ type CompanyUserAddCommand struct { | @@ -30,6 +30,10 @@ type CompanyUserAddCommand struct { | ||
| 30 | UserRole []Role `json:"userRole,omitempty"` | 30 | UserRole []Role `json:"userRole,omitempty"` |
| 31 | // 头像 | 31 | // 头像 |
| 32 | Avatar string `json:"avatar" valid:"Required"` | 32 | Avatar string `json:"avatar" valid:"Required"` |
| 33 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
| 34 | + EmployeeType int `cname:"员工类型" json:"employeeType" valid:"Required"` | ||
| 35 | + // IC卡号 | ||
| 36 | + IcCardNumber string `cname:"IC卡号" json:"icCardNumber,omitempty"` | ||
| 33 | } | 37 | } |
| 34 | 38 | ||
| 35 | func (companyUserAddCommand *CompanyUserAddCommand) Valid(validation *validation.Validation) { | 39 | func (companyUserAddCommand *CompanyUserAddCommand) Valid(validation *validation.Validation) { |
| @@ -25,6 +25,10 @@ type CompanyUserUpdateCommand struct { | @@ -25,6 +25,10 @@ type CompanyUserUpdateCommand struct { | ||
| 25 | Phone string `json:"phone,omitempty"` | 25 | Phone string `json:"phone,omitempty"` |
| 26 | // 邮箱 | 26 | // 邮箱 |
| 27 | Email string `json:"email,omitempty"` | 27 | Email string `json:"email,omitempty"` |
| 28 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
| 29 | + EmployeeType int `cname:"员工类型" json:"employeeType" valid:"Required"` | ||
| 30 | + // IC卡号 | ||
| 31 | + IcCardNumber string `cname:"IC卡号" json:"icCardNumber,omitempty"` | ||
| 28 | // 关联的组织机构 | 32 | // 关联的组织机构 |
| 29 | UserOrg []Org `json:"userOrg,omitempty"` | 33 | UserOrg []Org `json:"userOrg,omitempty"` |
| 30 | // 关联的组织结构 | 34 | // 关联的组织结构 |
| @@ -141,6 +141,8 @@ func (usersService *UsersService) CompanyUserAdd(companyUserAddCommand *command. | @@ -141,6 +141,8 @@ func (usersService *UsersService) CompanyUserAdd(companyUserAddCommand *command. | ||
| 141 | Phone: companyUserAddCommand.Phone, | 141 | Phone: companyUserAddCommand.Phone, |
| 142 | Avatar: companyUserAddCommand.Avatar, | 142 | Avatar: companyUserAddCommand.Avatar, |
| 143 | Email: companyUserAddCommand.Email, | 143 | Email: companyUserAddCommand.Email, |
| 144 | + IcCardNumber: companyUserAddCommand.IcCardNumber, | ||
| 145 | + EmployeeType: companyUserAddCommand.EmployeeType, | ||
| 144 | Password: initPassword, | 146 | Password: initPassword, |
| 145 | }) | 147 | }) |
| 146 | if err != nil { | 148 | if err != nil { |
| @@ -280,6 +282,8 @@ func (usersService *UsersService) CompanyUserUpdate(companyUserUpdateCommand *co | @@ -280,6 +282,8 @@ func (usersService *UsersService) CompanyUserUpdate(companyUserUpdateCommand *co | ||
| 280 | Phone: companyUserUpdateCommand.Phone, | 282 | Phone: companyUserUpdateCommand.Phone, |
| 281 | Avatar: companyUserUpdateCommand.Avatar, | 283 | Avatar: companyUserUpdateCommand.Avatar, |
| 282 | Email: companyUserUpdateCommand.Email, | 284 | Email: companyUserUpdateCommand.Email, |
| 285 | + EmployeeType: companyUserUpdateCommand.EmployeeType, | ||
| 286 | + IcCardNumber: companyUserUpdateCommand.IcCardNumber, | ||
| 283 | }) | 287 | }) |
| 284 | if err != nil { | 288 | if err != nil { |
| 285 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) | 289 | return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error()) |
| @@ -82,6 +82,11 @@ const ( | @@ -82,6 +82,11 @@ const ( | ||
| 82 | ExportManufactureEmployeeProductive = "ExportManufactureEmployeeProductive" | 82 | ExportManufactureEmployeeProductive = "ExportManufactureEmployeeProductive" |
| 83 | // 导出车间产能统计 | 83 | // 导出车间产能统计 |
| 84 | ExportManufactureWorkshopProductive = "ExportManufactureWorkshopProductive" | 84 | ExportManufactureWorkshopProductive = "ExportManufactureWorkshopProductive" |
| 85 | + | ||
| 86 | + // 员工工时 | ||
| 87 | + ExportManufactureEmployeeAttendanceStatics = "ExportManufactureEmployeeAttendanceStatics" | ||
| 88 | + // 车间工时 | ||
| 89 | + ExportManufactureWorkshopAttendanceStatics = "ExportManufactureWorkshopAttendanceStatics" | ||
| 85 | ) | 90 | ) |
| 86 | 91 | ||
| 87 | const ( | 92 | const ( |
| @@ -22,6 +22,7 @@ func NewHttpLibAlliedCreationManufacture(operator domain.Operator) *HttpLibAllie | @@ -22,6 +22,7 @@ func NewHttpLibAlliedCreationManufacture(operator domain.Operator) *HttpLibAllie | ||
| 22 | ReadWriteTimeout: 100 * time.Second, | 22 | ReadWriteTimeout: 100 * time.Second, |
| 23 | CompanyId: operator.CompanyId, | 23 | CompanyId: operator.CompanyId, |
| 24 | OrgId: operator.OrgId, | 24 | OrgId: operator.OrgId, |
| 25 | + InOrgIds: operator.OrgIds, | ||
| 25 | UserId: operator.UserId, | 26 | UserId: operator.UserId, |
| 26 | UserBaseId: operator.UserBaseId, | 27 | UserBaseId: operator.UserBaseId, |
| 27 | }, | 28 | }, |
| @@ -224,3 +225,108 @@ type ( | @@ -224,3 +225,108 @@ type ( | ||
| 224 | QualificationRate int `json:"qualificationRate"` | 225 | QualificationRate int `json:"qualificationRate"` |
| 225 | } | 226 | } |
| 226 | ) | 227 | ) |
| 228 | + | ||
| 229 | +/*** 考勤记录 ***/ | ||
| 230 | +//SearchEmployeeAttendanceStatics 搜索员工工时统计 | ||
| 231 | +func (gateway HttpLibAlliedCreationManufacture) SearchEmployeeAttendanceStatics(param SearchEmployeeAttendanceStaticsRequest) (*SearchEmployeeAttendanceStaticsResponse, error) { | ||
| 232 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/attendances/employee-attendance-statics/search") | ||
| 233 | + method := "post" | ||
| 234 | + var data SearchEmployeeAttendanceStaticsResponse | ||
| 235 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
| 236 | + return &data, err | ||
| 237 | +} | ||
| 238 | + | ||
| 239 | +type ( | ||
| 240 | + SearchEmployeeAttendanceStaticsRequest struct { | ||
| 241 | + // 车间名称 | ||
| 242 | + WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"` | ||
| 243 | + // 生产线名称 | ||
| 244 | + LineName string `cname:"生产线名称" json:"lineName,omitempty"` | ||
| 245 | + // 工段名称 | ||
| 246 | + SectionName string `cname:"工段名称" json:"sectionName,omitempty"` | ||
| 247 | + // 姓名 | ||
| 248 | + UserName string `cname:"姓名" json:"userName,omitempty"` | ||
| 249 | + // 考勤状态 1.未审核 2:已审核 4.自动审核 | ||
| 250 | + AttendanceStatus int `cname:"考勤状态 1.未审核 2:已审核 4.自动审核" json:"attendanceStatus,omitempty"` | ||
| 251 | + // 开始时间 | ||
| 252 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
| 253 | + // 结束时间 | ||
| 254 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
| 255 | + } | ||
| 256 | + SearchEmployeeAttendanceStaticsResponse struct { | ||
| 257 | + Grid struct { | ||
| 258 | + List []SearchEmployeeAttendanceStaticsItem `json:"list"` | ||
| 259 | + Total int `json:"total"` | ||
| 260 | + } `json:"grid"` | ||
| 261 | + } | ||
| 262 | + SearchEmployeeAttendanceStaticsItem struct { | ||
| 263 | + ProductAttendanceID int `json:"productAttendanceId"` | ||
| 264 | + SignDate string `json:"signDate"` | ||
| 265 | + WorkStationID string `json:"workStationId"` | ||
| 266 | + WorkshopID int `json:"workshopId"` | ||
| 267 | + WorkshopName string `json:"workshopName"` | ||
| 268 | + LineID int `json:"lineId"` | ||
| 269 | + LineName string `json:"lineName"` | ||
| 270 | + SectionID int `json:"sectionId"` | ||
| 271 | + SectionName string `json:"sectionName"` | ||
| 272 | + ProductWorker struct { | ||
| 273 | + UserID int `json:"userId"` | ||
| 274 | + UserName string `json:"userName"` | ||
| 275 | + EmployeeType int `json:"employeeType"` | ||
| 276 | + Avatar string `json:"avatar"` | ||
| 277 | + Phone string `json:"phone"` | ||
| 278 | + } `json:"productWorker"` | ||
| 279 | + AttendanceType int `json:"attendanceType"` | ||
| 280 | + AttendanceStatus int `json:"attendanceStatus"` | ||
| 281 | + AttendanceTypeDescription string `json:"attendanceTypeDescription"` | ||
| 282 | + EmployeeTypeDescription string `json:"employeeTypeDescription"` | ||
| 283 | + AttendanceStatusDescription string `json:"attendanceStatusDescription"` | ||
| 284 | + WorkTime float64 `json:"workTime"` | ||
| 285 | + OrgName string `json:"orgName"` | ||
| 286 | + AuthFlag bool `json:"authFlag"` | ||
| 287 | + } | ||
| 288 | +) | ||
| 289 | + | ||
| 290 | +//SearchEmployeeAttendanceStatics 搜索员工工时统计 | ||
| 291 | +func (gateway HttpLibAlliedCreationManufacture) SearchWorkshopWorkTimeStatics(param SearchWorkshopWorkTimeStaticsRequest) (*SearchWorkshopWorkTimeStaticsResponse, error) { | ||
| 292 | + url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/attendances/workshop-attendance-statics/search") | ||
| 293 | + method := "post" | ||
| 294 | + var data SearchWorkshopWorkTimeStaticsResponse | ||
| 295 | + err := gateway.FastDoRequest(url, method, param, &data) | ||
| 296 | + return &data, err | ||
| 297 | +} | ||
| 298 | + | ||
| 299 | +type ( | ||
| 300 | + SearchWorkshopWorkTimeStaticsRequest struct { | ||
| 301 | + // 车间名称 | ||
| 302 | + WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"` | ||
| 303 | + // 生产线名称 | ||
| 304 | + LineName string `cname:"生产线名称" json:"lineName,omitempty"` | ||
| 305 | + // 开始时间 | ||
| 306 | + BeginTime string `cname:"开始时间" json:"beginTime"` | ||
| 307 | + // 结束时间 | ||
| 308 | + EndTime string `cname:"结束时间" json:"endTime"` | ||
| 309 | + } | ||
| 310 | + SearchWorkshopWorkTimeStaticsResponse struct { | ||
| 311 | + Grid struct { | ||
| 312 | + List []SearchWorkshopWorkTimeStaticsItem `json:"list"` | ||
| 313 | + Total int `json:"total"` | ||
| 314 | + } `json:"grid"` | ||
| 315 | + } | ||
| 316 | + SearchWorkshopWorkTimeStaticsItem struct { | ||
| 317 | + WorkshopWorkTimeRecordID int `json:"workshopWorkTimeRecordId"` | ||
| 318 | + WorkStationID string `json:"workStationId"` | ||
| 319 | + WorkshopID int `json:"workshopId"` | ||
| 320 | + WorkshopName string `json:"workshopName"` | ||
| 321 | + LineID int `json:"lineId"` | ||
| 322 | + LineName string `json:"lineName"` | ||
| 323 | + SectionID int `json:"sectionId"` | ||
| 324 | + SectionName string `json:"sectionName"` | ||
| 325 | + EftWorkTime float64 `json:"eftWorkTime"` | ||
| 326 | + EdWorkTime int `json:"edWorkTime"` | ||
| 327 | + EptWorkTime int `json:"eptWorkTime"` | ||
| 328 | + RecordDate string `json:"recordDate"` | ||
| 329 | + OrgName string `json:"orgName"` | ||
| 330 | + AuthFlag bool `json:"authFlag"` | ||
| 331 | + } | ||
| 332 | +) |
| @@ -158,6 +158,10 @@ type ( | @@ -158,6 +158,10 @@ type ( | ||
| 158 | Avatar string `json:"avatar"` | 158 | Avatar string `json:"avatar"` |
| 159 | // 邮箱 | 159 | // 邮箱 |
| 160 | Email string `json:"email"` | 160 | Email string `json:"email"` |
| 161 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
| 162 | + EmployeeType int `cname:"员工类型" json:"employeeType" valid:"Required"` | ||
| 163 | + // IC卡号 | ||
| 164 | + IcCardNumber string `cname:"IC卡号" json:"icCardNumber,omitempty"` | ||
| 161 | 165 | ||
| 162 | // 部门 | 166 | // 部门 |
| 163 | DepartmentName string `cname:"部门" json:"departmentName"` | 167 | DepartmentName string `cname:"部门" json:"departmentName"` |
| @@ -197,6 +201,10 @@ type ( | @@ -197,6 +201,10 @@ type ( | ||
| 197 | Avatar string `json:"avatar"` | 201 | Avatar string `json:"avatar"` |
| 198 | // 邮箱 | 202 | // 邮箱 |
| 199 | Email string `json:"email"` | 203 | Email string `json:"email"` |
| 204 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
| 205 | + EmployeeType int `cname:"员工类型" json:"employeeType" valid:"Required"` | ||
| 206 | + // IC卡号 | ||
| 207 | + IcCardNumber string `cname:"IC卡号" json:"icCardNumber,omitempty"` | ||
| 200 | // 运营管理扩展 | 208 | // 运营管理扩展 |
| 201 | // 部门 | 209 | // 部门 |
| 202 | DepartmentName string `cname:"部门" json:"departmentName"` | 210 | DepartmentName string `cname:"部门" json:"departmentName"` |
| @@ -418,6 +426,10 @@ type ( | @@ -418,6 +426,10 @@ type ( | ||
| 418 | CooperationCompany string `json:"cooperationCompany"` | 426 | CooperationCompany string `json:"cooperationCompany"` |
| 419 | // 共创到期时间 (yyyy-MM-dd) cooperationDeadline | 427 | // 共创到期时间 (yyyy-MM-dd) cooperationDeadline |
| 420 | CooperationDeadline string `json:"cooperationDeadline"` | 428 | CooperationDeadline string `json:"cooperationDeadline"` |
| 429 | + // 员工类型 1:固定 2:派遣 3.临时 | ||
| 430 | + EmployeeType string `json:"employeeType,omitempty"` | ||
| 431 | + // IC卡号 | ||
| 432 | + IcCardNumber string `json:"icCardNumber,omitempty"` | ||
| 421 | // 失败理由 | 433 | // 失败理由 |
| 422 | FailReason string `json:"failReason"` | 434 | FailReason string `json:"failReason"` |
| 423 | } | 435 | } |
| @@ -5,6 +5,7 @@ import ( | @@ -5,6 +5,7 @@ import ( | ||
| 5 | "fmt" | 5 | "fmt" |
| 6 | "github.com/linmadan/egglib-go/utils/json" | 6 | "github.com/linmadan/egglib-go/utils/json" |
| 7 | "strconv" | 7 | "strconv" |
| 8 | + "strings" | ||
| 8 | "time" | 9 | "time" |
| 9 | 10 | ||
| 10 | "github.com/beego/beego/v2/client/httplib" | 11 | "github.com/beego/beego/v2/client/httplib" |
| @@ -27,6 +28,7 @@ type BaseServiceGateway struct { | @@ -27,6 +28,7 @@ type BaseServiceGateway struct { | ||
| 27 | ReadWriteTimeout time.Duration | 28 | ReadWriteTimeout time.Duration |
| 28 | CompanyId int64 | 29 | CompanyId int64 |
| 29 | OrgId int64 | 30 | OrgId int64 |
| 31 | + InOrgIds []int64 | ||
| 30 | UserId int64 | 32 | UserId int64 |
| 31 | UserBaseId int64 | 33 | UserBaseId int64 |
| 32 | } | 34 | } |
| @@ -81,6 +83,9 @@ func (gateway BaseServiceGateway) FastDoRequest(url, method string, param interf | @@ -81,6 +83,9 @@ func (gateway BaseServiceGateway) FastDoRequest(url, method string, param interf | ||
| 81 | 83 | ||
| 82 | func (gateway BaseServiceGateway) DoRequest(requestParam Request, val interface{}) error { | 84 | func (gateway BaseServiceGateway) DoRequest(requestParam Request, val interface{}) error { |
| 83 | r := gateway.CreateRequest(requestParam.Url, requestParam.Method) | 85 | r := gateway.CreateRequest(requestParam.Url, requestParam.Method) |
| 86 | + if len(gateway.InOrgIds) > 0 { | ||
| 87 | + r.Header("orgIds", strings.Join(ToArrayString(gateway.InOrgIds), ",")) | ||
| 88 | + } | ||
| 84 | req, err := r.JSONBody(requestParam.Param) | 89 | req, err := r.JSONBody(requestParam.Param) |
| 85 | if err != nil { | 90 | if err != nil { |
| 86 | return err | 91 | return err |
| @@ -103,3 +108,11 @@ type Request struct { | @@ -103,3 +108,11 @@ type Request struct { | ||
| 103 | Method string | 108 | Method string |
| 104 | Param interface{} | 109 | Param interface{} |
| 105 | } | 110 | } |
| 111 | + | ||
| 112 | +func ToArrayString(inputs []int64) []string { | ||
| 113 | + result := make([]string, 0) | ||
| 114 | + for i := range inputs { | ||
| 115 | + result = append(result, strconv.Itoa(int(inputs[i]))) | ||
| 116 | + } | ||
| 117 | + return result | ||
| 118 | +} |
| @@ -2,6 +2,7 @@ package web_client | @@ -2,6 +2,7 @@ package web_client | ||
| 2 | 2 | ||
| 3 | import ( | 3 | import ( |
| 4 | "fmt" | 4 | "fmt" |
| 5 | + "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers" | ||
| 5 | "io" | 6 | "io" |
| 6 | "strings" | 7 | "strings" |
| 7 | 8 | ||
| @@ -283,6 +284,18 @@ func fileExport(controller *ExcelDataController, code string) { | @@ -283,6 +284,18 @@ func fileExport(controller *ExcelDataController, code string) { | ||
| 283 | companyUserListQuery.Operator = exportDataCommand.Operator | 284 | companyUserListQuery.Operator = exportDataCommand.Operator |
| 284 | data, err = excelService.ExportWorkshopProductive(companyUserListQuery) | 285 | data, err = excelService.ExportWorkshopProductive(companyUserListQuery) |
| 285 | filename = "导出车间产能汇总" | 286 | filename = "导出车间产能汇总" |
| 287 | + case domain.ExportManufactureEmployeeAttendanceStatics: | ||
| 288 | + companyUserListQuery := &query.ManufactureExportEmployeeAttendanceStaticsQuery{} | ||
| 289 | + controllers.Must(exportDataCommand.UnmarshalQuery(companyUserListQuery)) | ||
| 290 | + companyUserListQuery.Operator = exportDataCommand.Operator | ||
| 291 | + data, err = excelService.ExportEmployeeAttendanceStatics(companyUserListQuery) | ||
| 292 | + filename = "导出员工工时统计" | ||
| 293 | + case domain.ExportManufactureWorkshopAttendanceStatics: | ||
| 294 | + companyUserListQuery := &query.ManufactureExportWorkshopAttendanceStaticsQuery{} | ||
| 295 | + controllers.Must(exportDataCommand.UnmarshalQuery(companyUserListQuery)) | ||
| 296 | + companyUserListQuery.Operator = exportDataCommand.Operator | ||
| 297 | + data, err = excelService.ExportWorkshopAttendanceStatics(companyUserListQuery) | ||
| 298 | + filename = "导出车间工时汇总" | ||
| 286 | default: | 299 | default: |
| 287 | err = fmt.Errorf("export type :%v not exists", exportDataCommand.Code) | 300 | err = fmt.Errorf("export type :%v not exists", exportDataCommand.Code) |
| 288 | } | 301 | } |
| @@ -328,6 +341,16 @@ func (controller *ExcelDataController) ExportManufactureWorkshopProductive() { | @@ -328,6 +341,16 @@ func (controller *ExcelDataController) ExportManufactureWorkshopProductive() { | ||
| 328 | fileExport(controller, domain.ExportManufactureWorkshopProductive) | 341 | fileExport(controller, domain.ExportManufactureWorkshopProductive) |
| 329 | } | 342 | } |
| 330 | 343 | ||
| 344 | +// ExportManufactureEmployeeAttendanceStatics 导出生产制造-员工工时统计 | ||
| 345 | +func (controller *ExcelDataController) ExportManufactureEmployeeAttendanceStatics() { | ||
| 346 | + fileExport(controller, domain.ExportManufactureEmployeeAttendanceStatics) | ||
| 347 | +} | ||
| 348 | + | ||
| 349 | +// ExportManufactureWorkshopAttendanceStatics 导出生产制造-车间工时统计 | ||
| 350 | +func (controller *ExcelDataController) ExportManufactureWorkshopAttendanceStatics() { | ||
| 351 | + fileExport(controller, domain.ExportManufactureWorkshopAttendanceStatics) | ||
| 352 | +} | ||
| 353 | + | ||
| 331 | //GetExcelDataFields 获取导出excel数据的可选字段 | 354 | //GetExcelDataFields 获取导出excel数据的可选字段 |
| 332 | func (controller *ExcelDataController) GetExcelDataFields() { | 355 | func (controller *ExcelDataController) GetExcelDataFields() { |
| 333 | 356 |
| @@ -12,6 +12,9 @@ func init() { | @@ -12,6 +12,9 @@ func init() { | ||
| 12 | web.Router("/v1/web/excel/export/manufacture-employee-productive", &web_client.ExcelDataController{}, "Post:ExportManufactureEmployeeProductive") | 12 | web.Router("/v1/web/excel/export/manufacture-employee-productive", &web_client.ExcelDataController{}, "Post:ExportManufactureEmployeeProductive") |
| 13 | web.Router("/v1/web/excel/export/manufacture-workshop-productive", &web_client.ExcelDataController{}, "Post:ExportManufactureWorkshopProductive") | 13 | web.Router("/v1/web/excel/export/manufacture-workshop-productive", &web_client.ExcelDataController{}, "Post:ExportManufactureWorkshopProductive") |
| 14 | 14 | ||
| 15 | + web.Router("/v1/web/excel/export/manufacture-employee-attendance-statics", &web_client.ExcelDataController{}, "Post:ExportManufactureEmployeeAttendanceStatics") | ||
| 16 | + web.Router("/v1/web/excel/export/manufacture-workshop-attendance-statics", &web_client.ExcelDataController{}, "Post:ExportManufactureWorkshopAttendanceStatics") | ||
| 17 | + | ||
| 15 | web.Router("/v1/web/excel/import/dividends-orders", &web_client.ExcelDataController{}, "Post:ImportDividendsOrder") | 18 | web.Router("/v1/web/excel/import/dividends-orders", &web_client.ExcelDataController{}, "Post:ImportDividendsOrder") |
| 16 | web.Router("/v1/web/excel/import/dividends-returned-orders", &web_client.ExcelDataController{}, "Post:ImportDividendsReturnedOrder") | 19 | web.Router("/v1/web/excel/import/dividends-returned-orders", &web_client.ExcelDataController{}, "Post:ImportDividendsReturnedOrder") |
| 17 | 20 |
-
请 注册 或 登录 后发表评论