# 1 上传员工方案的Excel文件 1. 发送上传文件的请求后, Server端处理文件上传,并通过websocket交互处理进度. 2. 上传成功后, 保存上传的用户和文件路径信息. 3. 读取Excel文件的内容,检查表关的数据,如果有不合要求的,返回读取文件出错,需要更正后重新上传. 4. 继续读取文件内容,按行处理, 检查用户名和身份证号是否有冲突,有冲突则记录此异常.保存此行员工方案到临时表. 通过websocket交互处理进度. 5. 数据读取完成后, 返回此次数据的主ID,前端调用此ID[读取临时表的数据](#nav1)给页面展示. ### 请求上传文件 ##### URI /he/shebao_plan/import/excel POST ##### 参数 | 字段 | 类型 | 长度 |必须有值| 必传 | 描述 |:--------------------|:---------|:----------|:--------|:----|:----- | ws_id | string | 8 | Y | Y |websocket的sessionID | | binary | 0 ~ 10M | Y | Y |文件流 ### 上传员工方案的响应 ##### WebSocket的进度消息 1. 首先要[连接WebSocket](common.html#ws) 并取得其会话ID (session ID) 2. 进度消息的结构是Json包. 需要调用JSON.parse转换.基本包含3种协议. 1. 成功打开WebSocket的协议(协议号: "WS_ID"), 内容体是会话ID. 2. 普通消息协议(协议号: "WS_MSG"),内容体是进度消息. 3. WS使用结束,可以关闭的协议(协议号: "WS_DONE"),内容体一般是"DONE". ##### 文件处理结果响应 成功处理的话, data字段的值是此次处理的ID. 用此ID获取数据. - 有异常 { "data": null, "msg": "员工的五险一金方案不存在,已经终止修改。", "code": 500 } - 成功处理 { "data": 60, "msg": "", "code": 200 } --- # 2 读取此次上传的数据 用上传成功返回的ID值为参数, 请求具体数据列表. ### 请求对应的数据 ##### URI /he/shebao_plan/import/data POST ##### 参数 | 字段 | 类型 | 长度 |必须有值| 必传 | 描述 |:--------------------|:---------|:----------|:--------|:----|:----- | temp_id | int | 10 | Y | Y | 数据的主标识 ### 响应 返回列表数据 和 有数据冲突的列表数据. ##### data字段结构 int temp_id; // 主数据ID int count; // 数据数量 List dataList; // 数据列表 /** */ int id; /** */ int temp_id; /** 城市名称 */ String city_name; /** */ int city_code; /** 姓名 */ String user_name; /** 身份证 */ String id_card; /** 联系方式 */ String phone; /** 户籍性质 */ String hukou; /** 民族 */ String nation; /** 基数方案 */ String param_name; /** 基数方案 */ String radix_type; /** 社保基数 */ double shebao_radix; /** 是否购买公积金 */ String buy_fund; /** 公积金基数 */ double fund_radix; /** 公积金企业比例 */ double ent_ratio; /** 公积金员工比例 */ double p_ratio; int err_count; // 异常数据数量 List ErrorList; // 异常数据列表 int id; // 异常数据标识 int data_id; // 对应数据的标识 String user_name; // 对应数据的姓名 String id_card; // 对应数据的身份证号 String err_code; // 冲突类型 String err_value; // 冲突值(依类型定) String desc; // 冲突描述 --- # 3 修改冲突数据 ### 请求 ##### URI /he/shebao_plan/import/edit/error POST ##### 参数 | 字段 | 类型 | 长度 |必须有值| 必传 | 描述 |:--------------------|:---------|:----------|:--------|:----|:----- | id | int | 10 | Y | Y | 异常数据的标识 | opt_code | int | 10 | Y | Y | 冲突解决代码值 - opt_code的值 int OPT_NEW_USER = 10; // 作为新员工方案 int OPT_USE_NEW = 11; // 采用新的数据 int OPT_USE_OLD = 1; // 采用旧有的数据 ### 响应 返回修改的成功与否. ##### 状态码 200 修改成功 500 修改出错和异常信息提示 600 参数校验不通过 ##### 响应数据示例 - 有异常 { "data": null, "msg": "操作码无效.", "code": 600 } - 成功处理 { "data": null, "msg": "", "code": 200 } --- # 4 导入员工方案数据 结合[Websocket](common.html#ws)服务操作. 更具体的提示信息通过此服务发布. ### 请求 ##### URI /he/shebao_plan/import POST ##### 参数 | 字段 | 类型 | 长度 |必须有值| 必传 | 描述 |:--------------------|:---------|:----------|:--------|:----|:----- | temp_id | int | 10 | Y | Y | 异常数据的标识 | ws_id | string | 8 | Y | Y | websocket的会话ID ### 响应 返回导入成功与否. ##### 状态码 200 导入成功 500 导入出错和异常信息提示 600 参数校验不通过 ##### 响应数据示例 { "data": null, "msg": "", "code": 200 } ---