作者 yangfu

feat: 批量添加用户修改

... ... @@ -111,6 +111,8 @@ spec:
value: "http://allied-creation-user-dev.fjmaimaimai.com"
- name: ALLIED_CREATION_COOPERATION_HOST
value: "http://allied-creation-cooperation-dev.fjmaimaimai.com"
- name: ALLIED_CREATION_MANUFACTURE_HOST
value: "http://allied-creation-manufacture-dev.fjmaimaimai.com"
- name: ALLIED_CREATION_BASIC_HOST
value: "http://allied-creation-basic-dev.fjmaimaimai.com"
- name: SMS_SERVE_HOST
... ...
... ... @@ -115,6 +115,8 @@ spec:
value: "https://allied-creation-user-prd.fjmaimaimai.com"
- name: ALLIED_CREATION_COOPERATION_HOST
value: "https://allied-creation-cooperation-prd.fjmaimaimai.com"
- name: ALLIED_CREATION_MANUFACTURE_HOST
value: "https://allied-creation-manufacture-prd.fjmaimaimai.com"
- name: ALLIED_CREATION_BASIC_HOST
value: "https://allied-creation-basic-prd.fjmaimaimai.com"
- name: SMS_SERVE_HOST
... ...
... ... @@ -119,6 +119,8 @@ spec:
value: "https://allied-creation-cooperation-test.fjmaimaimai.com"
- name: ALLIED_CREATION_BASIC_HOST
value: "https://allied-creation-basic-test.fjmaimaimai.com"
- name: ALLIED_CREATION_MANUFACTURE_HOST
value: "http://allied-creation-manufacture-test.fjmaimaimai.com"
- name: SMS_SERVE_HOST
value: "https://sms.fjmaimaimai.com:9897"
- name: SUPLUS_SALE_APP
... ...
package query
import (
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture"
)
type ManufactureExportEmployeeAttendanceStaticsQuery struct {
*allied_creation_manufacture.SearchEmployeeAttendanceStaticsRequest
//操作人
Operator domain.Operator `json:"-"`
SelectedField []string `json:"selectedField"`
}
... ...
package query
import (
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway/allied_creation_manufacture"
)
type ManufactureExportWorkshopAttendanceStaticsQuery struct {
*allied_creation_manufacture.SearchWorkshopWorkTimeStaticsRequest
//操作人
Operator domain.Operator `json:"-"`
SelectedField []string `json:"selectedField"`
}
... ...
... ... @@ -66,6 +66,7 @@ func (srv ExcelDataService) ExportProducts(cmd *query.SearchProductQuery) (Expor
return ExportProductsData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil
}
// ExportEmployeeProductive 导出员工产能
func (srv ExcelDataService) ExportEmployeeProductive(cmd *query.ManufactureEmployeeProductiveQuery) (ExportEmployeeProductiveData, error) {
creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator)
result, err := creationUserGateway.SearchEmployeeProductive(allied_creation_manufacture.SearchEmployeeProductiveRequest{
... ... @@ -83,6 +84,7 @@ func (srv ExcelDataService) ExportEmployeeProductive(cmd *query.ManufactureEmplo
return ExportEmployeeProductiveData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil
}
// ExportEmployeeProductive 导出车间产能
func (srv ExcelDataService) ExportWorkshopProductive(cmd *query.ManufactureWorkshopProductiveQuery) (ExportWorkshopProductiveData, error) {
creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator)
result, err := creationUserGateway.SearchWorkshopProductive(allied_creation_manufacture.SearchWorkshopProductiveRequest{
... ... @@ -96,3 +98,23 @@ func (srv ExcelDataService) ExportWorkshopProductive(cmd *query.ManufactureWorks
}
return ExportWorkshopProductiveData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil
}
// ExportEmployeeAttendanceStatics 导出员工工时
func (srv ExcelDataService) ExportEmployeeAttendanceStatics(cmd *query.ManufactureExportEmployeeAttendanceStaticsQuery) (ExportEmployeeAttendanceStaticsData, error) {
creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator)
result, err := creationUserGateway.SearchEmployeeAttendanceStatics(*cmd.SearchEmployeeAttendanceStaticsRequest)
if err != nil {
return ExportEmployeeAttendanceStaticsData{}, fmt.Errorf("获取员工工时数据失败:%w", err)
}
return ExportEmployeeAttendanceStaticsData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil
}
// ExportWorkshopAttendanceStatics 导出车间工时
func (srv ExcelDataService) ExportWorkshopAttendanceStatics(cmd *query.ManufactureExportWorkshopAttendanceStaticsQuery) (ExportWorkshopAttendanceStaticsData, error) {
creationUserGateway := allied_creation_manufacture.NewHttpLibAlliedCreationManufacture(cmd.Operator)
result, err := creationUserGateway.SearchWorkshopWorkTimeStatics(*cmd.SearchWorkshopWorkTimeStaticsRequest)
if err != nil {
return ExportWorkshopAttendanceStaticsData{}, fmt.Errorf("获取车间工时数据失败:%w", err)
}
return ExportWorkshopAttendanceStaticsData{SourceData: result.Grid.List, SelectedField: cmd.SelectedField}, nil
}
... ...
... ... @@ -91,6 +91,8 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD
{EnName: "department", CnName: "*所属部门"},
{EnName: "enableStatus", CnName: "*用户状态"},
{EnName: "phone", CnName: "*手机号"},
{EnName: "employeeType", CnName: "*员工类型"},
{EnName: "icCardNumber", CnName: "IC卡号"},
{EnName: "email", CnName: "邮箱"},
}
excelData, err := excelImport.OpenExcelFromIoReader(importDataCommand.Reader)
... ... @@ -112,6 +114,8 @@ func (srv ExcelDataService) ImportCompanyUser(importDataCommand *command.ImportD
Phone: strings.TrimSpace(v["phone"]),
Email: strings.TrimSpace(v["email"]),
EnableStatus: strings.TrimSpace(v["enableStatus"]),
EmployeeType: strings.TrimSpace(v["employeeType"]),
IcCardNumber: strings.TrimSpace(v["icCardNumber"]),
}
users = append(users, item)
}
... ...
... ... @@ -408,3 +408,151 @@ func (data ExportWorkshopProductiveData) DataListLen() int {
func (data ExportWorkshopProductiveData) TableTitle() []string {
return nil
}
//ExportEmployeeAttendanceStaticsData 导出员工产能数据
type ExportEmployeeAttendanceStaticsData struct {
SourceData []allied_creation_manufacture.SearchEmployeeAttendanceStaticsItem
SelectedField []string
}
var _ excel.ExcelMaker = (*ExportEmployeeAttendanceStaticsData)(nil)
func (data ExportEmployeeAttendanceStaticsData) AllFields() []DataFieldOptions {
return []DataFieldOptions{
{EnName: "signDate", CnName: "日期"},
{EnName: "workshopName", CnName: "车间名称"},
{EnName: "lineName", CnName: "线别"},
{EnName: "sectionName", CnName: "工段"},
{EnName: "userName", CnName: "姓名"},
{EnName: "employeeTypeDescription", CnName: "员工类型"},
{EnName: "attendanceTypeDescription", CnName: "类别"},
{EnName: "workTime", CnName: "工时"},
{EnName: "attendanceStatusDescription", CnName: "状态"},
{EnName: "orgName", CnName: "组织机构"},
}
}
func (data ExportEmployeeAttendanceStaticsData) DataFieldList() []excel.DataField {
fields := []excel.DataField{}
allFields := data.AllFields()
for _, value2 := range allFields {
if len(data.SelectedField) == 0 || value2.IsDefault {
fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName})
continue
}
for _, value3 := range data.SelectedField {
if value2.EnName == value3 {
fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName})
}
}
}
return fields
}
func (data ExportEmployeeAttendanceStaticsData) CellValue(index int, enName string) (value interface{}) {
if index > data.DataListLen() {
return ""
}
switch enName {
case "signDate":
return data.SourceData[index].SignDate
case "workshopName":
return data.SourceData[index].WorkshopName
case "lineName":
return data.SourceData[index].LineName
case "sectionName":
return data.SourceData[index].SectionName
case "userName":
return data.SourceData[index].ProductWorker.UserName
case "employeeTypeDescription":
return data.SourceData[index].EmployeeTypeDescription
case "attendanceTypeDescription":
return data.SourceData[index].AttendanceTypeDescription
case "workTime":
return fmt.Sprintf("%vh", data.SourceData[index].WorkTime)
case "attendanceStatusDescription":
return data.SourceData[index].AttendanceStatusDescription
case "orgName":
return data.SourceData[index].OrgName
}
return nil
}
func (data ExportEmployeeAttendanceStaticsData) DataListLen() int {
return len(data.SourceData)
}
func (data ExportEmployeeAttendanceStaticsData) TableTitle() []string {
return nil
}
//ExportWorkshopAttendanceStaticsData 导出车间工时统计
type ExportWorkshopAttendanceStaticsData struct {
SourceData []allied_creation_manufacture.SearchWorkshopWorkTimeStaticsItem
SelectedField []string
}
var _ excel.ExcelMaker = (*ExportWorkshopAttendanceStaticsData)(nil)
func (data ExportWorkshopAttendanceStaticsData) AllFields() []DataFieldOptions {
return []DataFieldOptions{
{EnName: "recordDate", CnName: "日期"},
{EnName: "workshopName", CnName: "车间名称"},
{EnName: "lineName", CnName: "线别"},
{EnName: "sectionName", CnName: "工段"},
{EnName: "eftWorkTime", CnName: "固定工时"},
{EnName: "edWorkTime", CnName: "临时工时"},
{EnName: "epWorkTime", CnName: "派遣工时"},
{EnName: "orgName", CnName: "组织机构"},
}
}
func (data ExportWorkshopAttendanceStaticsData) DataFieldList() []excel.DataField {
fields := []excel.DataField{}
allFields := data.AllFields()
for _, value2 := range allFields {
if len(data.SelectedField) == 0 || value2.IsDefault {
fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName})
continue
}
for _, value3 := range data.SelectedField {
if value2.EnName == value3 {
fields = append(fields, excel.DataField{EnName: value2.EnName, CnName: value2.CnName})
}
}
}
return fields
}
func (data ExportWorkshopAttendanceStaticsData) CellValue(index int, enName string) (value interface{}) {
if index > data.DataListLen() {
return ""
}
switch enName {
case "recordDate":
return data.SourceData[index].RecordDate
case "workshopName":
return data.SourceData[index].WorkshopName
case "lineName":
return data.SourceData[index].LineName
case "sectionName":
return data.SourceData[index].SectionName
case "eftWorkTime":
return data.SourceData[index].EftWorkTime
case "edWorkTime":
return data.SourceData[index].EdWorkTime
case "epWorkTime":
return data.SourceData[index].EptWorkTime
case "orgName":
return data.SourceData[index].OrgName
}
return nil
}
func (data ExportWorkshopAttendanceStaticsData) DataListLen() int {
return len(data.SourceData)
}
func (data ExportWorkshopAttendanceStaticsData) TableTitle() []string {
return nil
}
... ...
... ... @@ -30,6 +30,10 @@ type CompanyUserAddCommand struct {
UserRole []Role `json:"userRole,omitempty"`
// 头像
Avatar string `json:"avatar" valid:"Required"`
// 员工类型 1:固定 2:派遣 3.临时
EmployeeType int `cname:"员工类型" json:"employeeType" valid:"Required"`
// IC卡号
IcCardNumber string `cname:"IC卡号" json:"icCardNumber,omitempty"`
}
func (companyUserAddCommand *CompanyUserAddCommand) Valid(validation *validation.Validation) {
... ...
... ... @@ -25,6 +25,10 @@ type CompanyUserUpdateCommand struct {
Phone string `json:"phone,omitempty"`
// 邮箱
Email string `json:"email,omitempty"`
// 员工类型 1:固定 2:派遣 3.临时
EmployeeType int `cname:"员工类型" json:"employeeType" valid:"Required"`
// IC卡号
IcCardNumber string `cname:"IC卡号" json:"icCardNumber,omitempty"`
// 关联的组织机构
UserOrg []Org `json:"userOrg,omitempty"`
// 关联的组织结构
... ...
... ... @@ -141,6 +141,8 @@ func (usersService *UsersService) CompanyUserAdd(companyUserAddCommand *command.
Phone: companyUserAddCommand.Phone,
Avatar: companyUserAddCommand.Avatar,
Email: companyUserAddCommand.Email,
IcCardNumber: companyUserAddCommand.IcCardNumber,
EmployeeType: companyUserAddCommand.EmployeeType,
Password: initPassword,
})
if err != nil {
... ... @@ -280,6 +282,8 @@ func (usersService *UsersService) CompanyUserUpdate(companyUserUpdateCommand *co
Phone: companyUserUpdateCommand.Phone,
Avatar: companyUserUpdateCommand.Avatar,
Email: companyUserUpdateCommand.Email,
EmployeeType: companyUserUpdateCommand.EmployeeType,
IcCardNumber: companyUserUpdateCommand.IcCardNumber,
})
if err != nil {
return nil, application.ThrowError(application.BUSINESS_ERROR, err.Error())
... ...
... ... @@ -82,6 +82,11 @@ const (
ExportManufactureEmployeeProductive = "ExportManufactureEmployeeProductive"
// 导出车间产能统计
ExportManufactureWorkshopProductive = "ExportManufactureWorkshopProductive"
// 员工工时
ExportManufactureEmployeeAttendanceStatics = "ExportManufactureEmployeeAttendanceStatics"
// 车间工时
ExportManufactureWorkshopAttendanceStatics = "ExportManufactureWorkshopAttendanceStatics"
)
const (
... ...
... ... @@ -22,6 +22,7 @@ func NewHttpLibAlliedCreationManufacture(operator domain.Operator) *HttpLibAllie
ReadWriteTimeout: 100 * time.Second,
CompanyId: operator.CompanyId,
OrgId: operator.OrgId,
InOrgIds: operator.OrgIds,
UserId: operator.UserId,
UserBaseId: operator.UserBaseId,
},
... ... @@ -224,3 +225,108 @@ type (
QualificationRate int `json:"qualificationRate"`
}
)
/*** 考勤记录 ***/
//SearchEmployeeAttendanceStatics 搜索员工工时统计
func (gateway HttpLibAlliedCreationManufacture) SearchEmployeeAttendanceStatics(param SearchEmployeeAttendanceStaticsRequest) (*SearchEmployeeAttendanceStaticsResponse, error) {
url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/attendances/employee-attendance-statics/search")
method := "post"
var data SearchEmployeeAttendanceStaticsResponse
err := gateway.FastDoRequest(url, method, param, &data)
return &data, err
}
type (
SearchEmployeeAttendanceStaticsRequest struct {
// 车间名称
WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"`
// 生产线名称
LineName string `cname:"生产线名称" json:"lineName,omitempty"`
// 工段名称
SectionName string `cname:"工段名称" json:"sectionName,omitempty"`
// 姓名
UserName string `cname:"姓名" json:"userName,omitempty"`
// 考勤状态 1.未审核 2:已审核 4.自动审核
AttendanceStatus int `cname:"考勤状态 1.未审核 2:已审核 4.自动审核" json:"attendanceStatus,omitempty"`
// 开始时间
BeginTime string `cname:"开始时间" json:"beginTime"`
// 结束时间
EndTime string `cname:"结束时间" json:"endTime"`
}
SearchEmployeeAttendanceStaticsResponse struct {
Grid struct {
List []SearchEmployeeAttendanceStaticsItem `json:"list"`
Total int `json:"total"`
} `json:"grid"`
}
SearchEmployeeAttendanceStaticsItem struct {
ProductAttendanceID int `json:"productAttendanceId"`
SignDate string `json:"signDate"`
WorkStationID string `json:"workStationId"`
WorkshopID int `json:"workshopId"`
WorkshopName string `json:"workshopName"`
LineID int `json:"lineId"`
LineName string `json:"lineName"`
SectionID int `json:"sectionId"`
SectionName string `json:"sectionName"`
ProductWorker struct {
UserID int `json:"userId"`
UserName string `json:"userName"`
EmployeeType int `json:"employeeType"`
Avatar string `json:"avatar"`
Phone string `json:"phone"`
} `json:"productWorker"`
AttendanceType int `json:"attendanceType"`
AttendanceStatus int `json:"attendanceStatus"`
AttendanceTypeDescription string `json:"attendanceTypeDescription"`
EmployeeTypeDescription string `json:"employeeTypeDescription"`
AttendanceStatusDescription string `json:"attendanceStatusDescription"`
WorkTime float64 `json:"workTime"`
OrgName string `json:"orgName"`
AuthFlag bool `json:"authFlag"`
}
)
//SearchEmployeeAttendanceStatics 搜索员工工时统计
func (gateway HttpLibAlliedCreationManufacture) SearchWorkshopWorkTimeStatics(param SearchWorkshopWorkTimeStaticsRequest) (*SearchWorkshopWorkTimeStaticsResponse, error) {
url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/attendances/workshop-attendance-statics/search")
method := "post"
var data SearchWorkshopWorkTimeStaticsResponse
err := gateway.FastDoRequest(url, method, param, &data)
return &data, err
}
type (
SearchWorkshopWorkTimeStaticsRequest struct {
// 车间名称
WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"`
// 生产线名称
LineName string `cname:"生产线名称" json:"lineName,omitempty"`
// 开始时间
BeginTime string `cname:"开始时间" json:"beginTime"`
// 结束时间
EndTime string `cname:"结束时间" json:"endTime"`
}
SearchWorkshopWorkTimeStaticsResponse struct {
Grid struct {
List []SearchWorkshopWorkTimeStaticsItem `json:"list"`
Total int `json:"total"`
} `json:"grid"`
}
SearchWorkshopWorkTimeStaticsItem struct {
WorkshopWorkTimeRecordID int `json:"workshopWorkTimeRecordId"`
WorkStationID string `json:"workStationId"`
WorkshopID int `json:"workshopId"`
WorkshopName string `json:"workshopName"`
LineID int `json:"lineId"`
LineName string `json:"lineName"`
SectionID int `json:"sectionId"`
SectionName string `json:"sectionName"`
EftWorkTime float64 `json:"eftWorkTime"`
EdWorkTime int `json:"edWorkTime"`
EptWorkTime int `json:"eptWorkTime"`
RecordDate string `json:"recordDate"`
OrgName string `json:"orgName"`
AuthFlag bool `json:"authFlag"`
}
)
... ...
... ... @@ -158,6 +158,10 @@ type (
Avatar string `json:"avatar"`
// 邮箱
Email string `json:"email"`
// 员工类型 1:固定 2:派遣 3.临时
EmployeeType int `cname:"员工类型" json:"employeeType" valid:"Required"`
// IC卡号
IcCardNumber string `cname:"IC卡号" json:"icCardNumber,omitempty"`
// 部门
DepartmentName string `cname:"部门" json:"departmentName"`
... ... @@ -197,6 +201,10 @@ type (
Avatar string `json:"avatar"`
// 邮箱
Email string `json:"email"`
// 员工类型 1:固定 2:派遣 3.临时
EmployeeType int `cname:"员工类型" json:"employeeType" valid:"Required"`
// IC卡号
IcCardNumber string `cname:"IC卡号" json:"icCardNumber,omitempty"`
// 运营管理扩展
// 部门
DepartmentName string `cname:"部门" json:"departmentName"`
... ... @@ -418,6 +426,10 @@ type (
CooperationCompany string `json:"cooperationCompany"`
// 共创到期时间 (yyyy-MM-dd) cooperationDeadline
CooperationDeadline string `json:"cooperationDeadline"`
// 员工类型 1:固定 2:派遣 3.临时
EmployeeType string `json:"employeeType,omitempty"`
// IC卡号
IcCardNumber string `json:"icCardNumber,omitempty"`
// 失败理由
FailReason string `json:"failReason"`
}
... ...
... ... @@ -5,6 +5,7 @@ import (
"fmt"
"github.com/linmadan/egglib-go/utils/json"
"strconv"
"strings"
"time"
"github.com/beego/beego/v2/client/httplib"
... ... @@ -27,6 +28,7 @@ type BaseServiceGateway struct {
ReadWriteTimeout time.Duration
CompanyId int64
OrgId int64
InOrgIds []int64
UserId int64
UserBaseId int64
}
... ... @@ -81,6 +83,9 @@ func (gateway BaseServiceGateway) FastDoRequest(url, method string, param interf
func (gateway BaseServiceGateway) DoRequest(requestParam Request, val interface{}) error {
r := gateway.CreateRequest(requestParam.Url, requestParam.Method)
if len(gateway.InOrgIds) > 0 {
r.Header("orgIds", strings.Join(ToArrayString(gateway.InOrgIds), ","))
}
req, err := r.JSONBody(requestParam.Param)
if err != nil {
return err
... ... @@ -103,3 +108,11 @@ type Request struct {
Method string
Param interface{}
}
func ToArrayString(inputs []int64) []string {
result := make([]string, 0)
for i := range inputs {
result = append(result, strconv.Itoa(int(inputs[i])))
}
return result
}
... ...
... ... @@ -2,6 +2,7 @@ package web_client
import (
"fmt"
"gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/port/beego/controllers"
"io"
"strings"
... ... @@ -283,6 +284,18 @@ func fileExport(controller *ExcelDataController, code string) {
companyUserListQuery.Operator = exportDataCommand.Operator
data, err = excelService.ExportWorkshopProductive(companyUserListQuery)
filename = "导出车间产能汇总"
case domain.ExportManufactureEmployeeAttendanceStatics:
companyUserListQuery := &query.ManufactureExportEmployeeAttendanceStaticsQuery{}
controllers.Must(exportDataCommand.UnmarshalQuery(companyUserListQuery))
companyUserListQuery.Operator = exportDataCommand.Operator
data, err = excelService.ExportEmployeeAttendanceStatics(companyUserListQuery)
filename = "导出员工工时统计"
case domain.ExportManufactureWorkshopAttendanceStatics:
companyUserListQuery := &query.ManufactureExportWorkshopAttendanceStaticsQuery{}
controllers.Must(exportDataCommand.UnmarshalQuery(companyUserListQuery))
companyUserListQuery.Operator = exportDataCommand.Operator
data, err = excelService.ExportWorkshopAttendanceStatics(companyUserListQuery)
filename = "导出车间工时汇总"
default:
err = fmt.Errorf("export type :%v not exists", exportDataCommand.Code)
}
... ... @@ -328,6 +341,16 @@ func (controller *ExcelDataController) ExportManufactureWorkshopProductive() {
fileExport(controller, domain.ExportManufactureWorkshopProductive)
}
// ExportManufactureEmployeeAttendanceStatics 导出生产制造-员工工时统计
func (controller *ExcelDataController) ExportManufactureEmployeeAttendanceStatics() {
fileExport(controller, domain.ExportManufactureEmployeeAttendanceStatics)
}
// ExportManufactureWorkshopAttendanceStatics 导出生产制造-车间工时统计
func (controller *ExcelDataController) ExportManufactureWorkshopAttendanceStatics() {
fileExport(controller, domain.ExportManufactureWorkshopAttendanceStatics)
}
//GetExcelDataFields 获取导出excel数据的可选字段
func (controller *ExcelDataController) GetExcelDataFields() {
... ...
... ... @@ -12,6 +12,9 @@ func init() {
web.Router("/v1/web/excel/export/manufacture-employee-productive", &web_client.ExcelDataController{}, "Post:ExportManufactureEmployeeProductive")
web.Router("/v1/web/excel/export/manufacture-workshop-productive", &web_client.ExcelDataController{}, "Post:ExportManufactureWorkshopProductive")
web.Router("/v1/web/excel/export/manufacture-employee-attendance-statics", &web_client.ExcelDataController{}, "Post:ExportManufactureEmployeeAttendanceStatics")
web.Router("/v1/web/excel/export/manufacture-workshop-attendance-statics", &web_client.ExcelDataController{}, "Post:ExportManufactureWorkshopAttendanceStatics")
web.Router("/v1/web/excel/import/dividends-orders", &web_client.ExcelDataController{}, "Post:ImportDividendsOrder")
web.Router("/v1/web/excel/import/dividends-returned-orders", &web_client.ExcelDataController{}, "Post:ImportDividendsReturnedOrder")
... ...