package cost_structured import ( "encoding/json" "fmt" "strings" "time" "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/constant" "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/domain" "gitlab.fjmaimaimai.com/allied-creation/allied-creation-gateway/pkg/infrastructure/service_gateway" ) //HttpLibCostStructured 成本结构化 type HttpLibCostStructured struct { service_gateway.BaseServiceGateway baseUrL string } func NewHttpLibCostStructured(operator domain.Operator) *HttpLibCostStructured { return &HttpLibCostStructured{ BaseServiceGateway: service_gateway.BaseServiceGateway{ ConnectTimeout: 100 * time.Second, ReadWriteTimeout: 100 * time.Second, CompanyId: operator.CompanyId, OrgId: operator.OrgId, InOrgIds: operator.OrgIds, UserId: operator.UserId, UserBaseId: operator.UserBaseId, }, baseUrL: constant.COST_STRUCTURED, } } func (gateway HttpLibCostStructured) BaseUrl() string { return gateway.baseUrL } //批量添加成本管理 func (gateway HttpLibCostStructured) BatchCreateCostManagemant(param BatchAddCostManagemantRequest) (*service_gateway.GatewayResponse, error) { url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/cost-managemants/batch-create-cost-managemants") method := "post" //var data BatchAddCostManagemantResponse //err := gateway.FastDoRequest(url, method, param, &data) r := gateway.CreateRequest(url, method) if len(gateway.InOrgIds) > 0 { r.Header("orgIds", strings.Join(service_gateway.ToArrayString(gateway.InOrgIds), ",")) } req, err := r.JSONBody(param) if err != nil { return nil,err } byteResult, err:= req.Bytes() if err != nil { return nil,err } var result service_gateway.GatewayResponse err = json.Unmarshal(byteResult, &result) if err != nil { return nil,err } return &result, nil } type BatchAddCostManagemantRequest struct { *domain.BatchCreateCostManagemant } type BatchAddCostManagemantResponse []interface{} func (gateway HttpLibCostStructured) ListCostManagemant(param ListCostManagemantRequest) (*ListCostManagemantResponse, error) { url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/cost-managemants/") method := "post" var data ListCostManagemantResponse err := gateway.FastDoRequest(url, method, param, &data) return &data, err } type ( ListCostManagemantRequest struct { // 页码 PageNumber int `cname:"页码" json:"pageNumber,omitempty"` // 页数 PageSize int `cname:"页数" json:"pageSize,omitempty"` // 查询项目(结构)类型 Types int `cname:"查询项目(结构)类型" json:"types" valid:"Required"` // 查询项目id ProjectId int64 `cname:"查询项目id" json:"projectId"` } ListCostManagemantResponse struct { Grid struct { List []SearchProductItem `json:"list"` Total int `json:"total"` } `json:"grid"` } SearchProductItem struct { ProductID int `json:"productId"` ProductCode string `json:"productCode"` ProductName string `json:"productName"` ProductCategory string `json:"productCategory"` Unit string `json:"unit"` UnitWeight float64 `json:"unitWeight"` } ) /*设备*/ type BatchAddDeviceRequest struct { List []*domain.ImportDeviceItem `json:"list"` } type BatchAddDeviceResponse []interface{} /**生产记录**/ //SearchProduct 搜索员工产能统计 func (gateway HttpLibCostStructured) SearchEmployeeProductive(param SearchEmployeeProductiveRequest) (*SearchEmployeeProductiveResponse, error) { url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/product-records/employee-productive/search") method := "post" var data SearchEmployeeProductiveResponse err := gateway.FastDoRequest(url, method, param, &data) return &data, err } type ( SearchEmployeeProductiveRequest struct { // 页码 //PageNumber int `cname:"页码" json:"pageNumber,omitempty"` // 页数 //PageSize int `cname:"页数" json:"pageSize,omitempty"` // 车间名称 WorkshopName string `cname:"车间名称" json:"workshopName,omitempty"` // 生产线名称 LineName string `cname:"生产线名称" json:"lineName,omitempty"` // 工段名称 SectionName string `cname:"工段名称" json:"sectionName,omitempty"` // 姓名 UserName string `cname:"姓名" json:"userName"` // 员工类型 1:固定 2:派遣 3.临时 EmployeeType string `cname:"员工类型 1:固定 2:派遣 3.临时" json:"employeeType"` // 开始时间 BeginTime string `cname:"开始时间" json:"beginTime"` // 结束时间 EndTime string `cname:"结束时间" json:"endTime"` } SearchEmployeeProductiveResponse struct { Grid struct { List []EmployeeProductiveItem `json:"list"` Total int `json:"total"` } `json:"grid"` } EmployeeProductiveItem struct { EmployeeProductRecordID int `json:"employeeProductRecordId"` ProductWorker struct { UserID int `json:"userId"` UserName string `json:"userName"` Avatar string `json:"avatar"` Phone string `json:"phone"` EmployeeType int `json:"employeeType"` } `json:"productWorker"` 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"` WorkOn string `json:"workOn"` PlanProductName string `json:"planProductName"` BatchNumber string `json:"batchNumber"` ParticipateType int `json:"participateType"` ProductWeigh float64 `json:"productWeigh"` SecondLevelWeigh float64 `json:"secondLevelWeigh"` CreatedAt string `json:"createdAt"` OrgName string `json:"orgName"` AuthFlag bool `json:"authFlag"` QualificationRate int `json:"qualificationRate"` } ) //SearchProduct 搜索员工产能统计 func (gateway HttpLibCostStructured) SearchWorkshopProductive(param SearchWorkshopProductiveRequest) (*SearchWorkshopProductiveResponse, error) { url := fmt.Sprintf("%s%s", gateway.BaseUrl(), "/product-records/workshop-productive/search") method := "post" var data SearchWorkshopProductiveResponse err := gateway.FastDoRequest(url, method, param, &data) return &data, err } type ( SearchWorkshopProductiveRequest struct { // 品名 PlanProductName string `cname:"品名" json:"planProductName,omitempty"` // 工段名称 SectionName string `cname:"工段名称" json:"sectionName,omitempty"` // 开始时间 BeginTime string `cname:"开始时间" json:"beginTime"` // 结束时间 EndTime string `cname:"结束时间" json:"endTime"` } SearchWorkshopProductiveResponse struct { Grid struct { List []WorkshopProductiveItem `json:"list"` Total int `json:"total"` } `json:"grid"` } WorkshopProductiveItem struct { EmployeeProductRecordID int `json:"employeeProductRecordId"` ProductWorker struct { UserID int `json:"userId"` UserName string `json:"userName"` Avatar string `json:"avatar"` Phone string `json:"phone"` EmployeeType int `json:"employeeType"` } `json:"productWorker"` 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"` WorkOn string `json:"workOn"` PlanProductName string `json:"planProductName"` BatchNumber string `json:"batchNumber"` //ParticipateType int `json:"participateType"` // 投入量 DevotedProductWeigh float64 `json:"devotedProductWeigh"` // 产能 ProductWeigh float64 `json:"productWeigh"` // 二级品产能 SecondLevelWeigh float64 `json:"secondLevelWeigh"` CreatedAt string `json:"createdAt"` OrgName string `json:"orgName"` AuthFlag bool `json:"authFlag"` QualificationRate int `json:"qualificationRate"` } ) /*** 考勤记录 ***/ //SearchEmployeeAttendanceStatics 搜索员工工时统计 func (gateway HttpLibCostStructured) 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 HttpLibCostStructured) 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"` } )