2026-07-08 00:45:47 +08:00
|
|
|
package osi
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"context"
|
2026-07-08 21:11:17 +08:00
|
|
|
"fmt"
|
2026-07-08 00:45:47 +08:00
|
|
|
|
|
|
|
|
"chis_osi/contract"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
type FindHealthCheckQuery struct {
|
|
|
|
|
IDCard string
|
|
|
|
|
PHRID string
|
|
|
|
|
EMPIID string
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// LastHealthCheck 查询某人最近一次体检(JKTJLSJL00002 /auto/jktjlscx/query)。
|
|
|
|
|
// data 为单个体检对象(非数组);summary 只取定位字段,完整内容见返回的 Result.Raw。
|
|
|
|
|
func (c *Client) LastHealthCheck(ctx context.Context, query FindHealthCheckQuery) (contract.HealthCheckSummary, Result, error) {
|
|
|
|
|
baseInfo, err := query.baseInfo()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return contract.HealthCheckSummary{}, Result{}, err
|
|
|
|
|
}
|
|
|
|
|
var summary contract.HealthCheckSummary
|
|
|
|
|
result, err := c.Call(ctx, ServiceIDJKTJLast, baseInfo, &summary)
|
|
|
|
|
return summary, result, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (q FindHealthCheckQuery) baseInfo() (map[string]string, error) {
|
|
|
|
|
fields := []queryField{
|
|
|
|
|
{name: "idCard", value: q.IDCard},
|
|
|
|
|
{name: "empiId", value: q.EMPIID},
|
|
|
|
|
{name: "phrid", value: q.PHRID},
|
|
|
|
|
}
|
|
|
|
|
return singleBaseInfo("last health check", fields)
|
|
|
|
|
}
|
2026-07-08 21:11:17 +08:00
|
|
|
|
|
|
|
|
type ListHealthCheckQuery struct {
|
|
|
|
|
CheckYear string // 必填:检查年度,如 "2025"
|
|
|
|
|
IDCard string // 可选:过滤到某人
|
|
|
|
|
CheckType string // 可选:0 已检 / 1 未检 / 2 全部
|
|
|
|
|
Page string // 默认 "1"
|
|
|
|
|
Rows string // 默认 "10"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ListHealthCheckPeople 查询某年度已检/未检人员名单(JKTJLIST00002 /auto/jktjlist/query)。
|
|
|
|
|
// 返回人员名单 + checkType 状态,非体检明细;分页参数在 baseInfo 内,见 docs/04 §11.4。
|
|
|
|
|
func (c *Client) ListHealthCheckPeople(ctx context.Context, query ListHealthCheckQuery) ([]contract.HealthCheckPerson, Result, error) {
|
|
|
|
|
baseInfo, err := query.baseInfo()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, Result{}, err
|
|
|
|
|
}
|
|
|
|
|
var people []contract.HealthCheckPerson
|
|
|
|
|
result, err := c.Call(ctx, ServiceIDJKTJList, baseInfo, &people)
|
|
|
|
|
return people, result, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (q ListHealthCheckQuery) baseInfo() (map[string]string, error) {
|
|
|
|
|
if q.CheckYear == "" {
|
|
|
|
|
return nil, fmt.Errorf("list health check requires checkYear")
|
|
|
|
|
}
|
|
|
|
|
page, rows := q.Page, q.Rows
|
|
|
|
|
if page == "" {
|
|
|
|
|
page = "1"
|
|
|
|
|
}
|
|
|
|
|
if rows == "" {
|
|
|
|
|
rows = "10"
|
|
|
|
|
}
|
|
|
|
|
base := map[string]string{"checkYear": q.CheckYear, "page": page, "rows": rows}
|
|
|
|
|
if q.CheckType != "" {
|
|
|
|
|
base["checkType"] = q.CheckType
|
|
|
|
|
}
|
|
|
|
|
if q.IDCard != "" {
|
|
|
|
|
base["idCard"] = q.IDCard
|
|
|
|
|
}
|
|
|
|
|
return base, nil
|
|
|
|
|
}
|