shebao_plan_import.html 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="content-type" content="text/html;charset=UTF-8">
  5. <style type="text/css">
  6. <!--
  7. @import url(md.css);
  8. -->
  9. </style>
  10. </head>
  11. <body>
  12. <h1>1 上传员工方案的Excel文件</h1>
  13. <ol>
  14. <li><p>发送上传文件的请求后, Server端处理文件上传,并通过websocket交互处理进度.</p></li>
  15. <li><p>上传成功后, 保存上传的用户和文件路径信息.</p></li>
  16. <li><p>读取Excel文件的内容,检查表关的数据,如果有不合要求的,返回读取文件出错,需要更正后重新上传.</p></li>
  17. <li><p>继续读取文件内容,按行处理, 检查用户名和身份证号是否有冲突,有冲突则记录此异常.保存此行员工方案到临时表. 通过websocket交互处理进度.</p></li>
  18. <li><p>数据读取完成后, 返回此次数据的主ID,前端调用此ID<a href="#nav1">读取临时表的数据</a>给页面展示.</p></li>
  19. </ol>
  20. <h3>请求上传文件</h3>
  21. <h5>URI</h5>
  22. <pre><code>/he/shebao_plan/import/excel POST
  23. </code></pre>
  24. <h5>参数</h5>
  25. <table><thead>
  26. <tr>
  27. <th align="left">字段</th>
  28. <th align="left">类型</th>
  29. <th align="left">长度</th>
  30. <th align="left">必须有值</th>
  31. <th align="left">必传</th>
  32. <th align="left">描述</th>
  33. </tr>
  34. </thead><tbody>
  35. <tr>
  36. <td align="left">ws_id</td>
  37. <td align="left">string</td>
  38. <td align="left">8</td>
  39. <td align="left">Y</td>
  40. <td align="left">Y</td>
  41. <td align="left">websocket的sessionID</td>
  42. </tr>
  43. <tr>
  44. <td align="left"></td>
  45. <td align="left">binary</td>
  46. <td align="left">0 ~ 10M</td>
  47. <td align="left">Y</td>
  48. <td align="left">Y</td>
  49. <td align="left">文件流</td>
  50. </tr>
  51. </tbody></table>
  52. <h3>上传员工方案的响应</h3>
  53. <h5>WebSocket的进度消息</h5>
  54. <ol>
  55. <li>首先要<a href="common.html#ws">连接WebSocket</a> 并取得其会话ID (session ID)</li>
  56. <li><p>进度消息的结构是Json包. 需要调用JSON.parse转换.基本包含3种协议.</p>
  57. <pre><code> 1. 成功打开WebSocket的协议(协议号: &quot;WS_ID&quot;), 内容体是会话ID.
  58. 2. 普通消息协议(协议号: &quot;WS_MSG&quot;),内容体是进度消息.
  59. 3. WS使用结束,可以关闭的协议(协议号: &quot;WS_DONE&quot;),内容体一般是&quot;DONE&quot;.
  60. </code></pre></li>
  61. </ol>
  62. <h5>文件处理结果响应</h5>
  63. <p>成功处理的话, data字段的值是此次处理的ID. 用此ID获取数据.</p>
  64. <ul>
  65. <li><p>有异常</p>
  66. <pre><code>{
  67. &quot;data&quot;: null,
  68. &quot;msg&quot;: &quot;员工的五险一金方案不存在,已经终止修改。&quot;,
  69. &quot;code&quot;: 500
  70. }
  71. </code></pre></li>
  72. <li><p>成功处理</p>
  73. <pre><code>{
  74. &quot;data&quot;: 60,
  75. &quot;msg&quot;: &quot;&quot;,
  76. &quot;code&quot;: 200
  77. }
  78. </code></pre></li>
  79. </ul>
  80. <hr>
  81. <h1>2 读取此次上传的数据</h1>
  82. <p>用上传成功返回的ID值为参数, 请求具体数据列表.</p>
  83. <h3>请求对应的数据</h3>
  84. <h5>URI</h5>
  85. <pre><code>/he/shebao_plan/import/data POST
  86. </code></pre>
  87. <h5>参数</h5>
  88. <table><thead>
  89. <tr>
  90. <th align="left">字段</th>
  91. <th align="left">类型</th>
  92. <th align="left">长度</th>
  93. <th align="left">必须有值</th>
  94. <th align="left">必传</th>
  95. <th align="left">描述</th>
  96. </tr>
  97. </thead><tbody>
  98. <tr>
  99. <td align="left">temp_id</td>
  100. <td align="left">int</td>
  101. <td align="left">10</td>
  102. <td align="left">Y</td>
  103. <td align="left">Y</td>
  104. <td align="left">数据的主标识</td>
  105. </tr>
  106. </tbody></table>
  107. <h3>响应</h3>
  108. <p>返回列表数据 和 有数据冲突的列表数据.</p>
  109. <h5>data字段结构</h5>
  110. <pre><code>int temp_id; // 主数据ID
  111. int count; // 数据数量
  112. List&lt;TWXYJEplanDataTemp&gt; dataList; // 数据列表
  113. /** */
  114. int id;
  115. /** */
  116. int temp_id;
  117. /** 城市名称 */
  118. String city_name;
  119. /** */
  120. int city_code;
  121. /** 姓名 */
  122. String user_name;
  123. /** 身份证 */
  124. String id_card;
  125. /** 联系方式 */
  126. String phone;
  127. /** 户籍性质 */
  128. String hukou;
  129. /** 民族 */
  130. String nation;
  131. /** 基数方案 */
  132. String param_name;
  133. /** 基数方案 */
  134. String radix_type;
  135. /** 社保基数 */
  136. double shebao_radix;
  137. /** 是否购买公积金 */
  138. String buy_fund;
  139. /** 公积金基数 */
  140. double fund_radix;
  141. /** 公积金企业比例 */
  142. double ent_ratio;
  143. /** 公积金员工比例 */
  144. double p_ratio;
  145. int err_count; // 异常数据数量
  146. List&lt;EPlanErrorVO&gt; ErrorList; // 异常数据列表
  147. int id; // 异常数据标识
  148. int data_id; // 对应数据的标识
  149. String user_name; // 对应数据的姓名
  150. String id_card; // 对应数据的身份证号
  151. String err_code; // 冲突类型
  152. String err_value; // 冲突值(依类型定)
  153. String desc; // 冲突描述
  154. </code></pre>
  155. <hr>
  156. <h1>3 修改冲突数据</h1>
  157. <h3>请求</h3>
  158. <h5>URI</h5>
  159. <pre><code>/he/shebao_plan/import/edit/error POST
  160. </code></pre>
  161. <h5>参数</h5>
  162. <table><thead>
  163. <tr>
  164. <th align="left">字段</th>
  165. <th align="left">类型</th>
  166. <th align="left">长度</th>
  167. <th align="left">必须有值</th>
  168. <th align="left">必传</th>
  169. <th align="left">描述</th>
  170. </tr>
  171. </thead><tbody>
  172. <tr>
  173. <td align="left">id</td>
  174. <td align="left">int</td>
  175. <td align="left">10</td>
  176. <td align="left">Y</td>
  177. <td align="left">Y</td>
  178. <td align="left">异常数据的标识</td>
  179. </tr>
  180. <tr>
  181. <td align="left">opt_code</td>
  182. <td align="left">int</td>
  183. <td align="left">10</td>
  184. <td align="left">Y</td>
  185. <td align="left">Y</td>
  186. <td align="left">冲突解决代码值</td>
  187. </tr>
  188. </tbody></table>
  189. <ul>
  190. <li><p>opt_code的值</p>
  191. <pre><code>int OPT_NEW_USER = 10; // 作为新员工方案
  192. int OPT_USE_NEW = 11; // 采用新的数据
  193. int OPT_USE_OLD = 1; // 采用旧有的数据
  194. </code></pre></li>
  195. </ul>
  196. <h3>响应</h3>
  197. <p>返回修改的成功与否.</p>
  198. <h5>状态码</h5>
  199. <pre><code>200 修改成功
  200. 500 修改出错和异常信息提示
  201. 600 参数校验不通过
  202. </code></pre>
  203. <h5>响应数据示例</h5>
  204. <ul>
  205. <li><p>有异常</p>
  206. <pre><code>{
  207. &quot;data&quot;: null,
  208. &quot;msg&quot;: &quot;操作码无效.&quot;,
  209. &quot;code&quot;: 600
  210. }
  211. </code></pre></li>
  212. <li><p>成功处理</p>
  213. <pre><code>{
  214. &quot;data&quot;: null,
  215. &quot;msg&quot;: &quot;&quot;,
  216. &quot;code&quot;: 200
  217. }
  218. </code></pre></li>
  219. </ul>
  220. <hr>
  221. <h1>4 导入员工方案数据</h1>
  222. <p>结合<a href="common.html#ws">Websocket</a>服务操作. 更具体的提示信息通过此服务发布.</p>
  223. <h3>请求</h3>
  224. <h5>URI</h5>
  225. <pre><code>/he/shebao_plan/import POST
  226. </code></pre>
  227. <h5>参数</h5>
  228. <table><thead>
  229. <tr>
  230. <th align="left">字段</th>
  231. <th align="left">类型</th>
  232. <th align="left">长度</th>
  233. <th align="left">必须有值</th>
  234. <th align="left">必传</th>
  235. <th align="left">描述</th>
  236. </tr>
  237. </thead><tbody>
  238. <tr>
  239. <td align="left">temp_id</td>
  240. <td align="left">int</td>
  241. <td align="left">10</td>
  242. <td align="left">Y</td>
  243. <td align="left">Y</td>
  244. <td align="left">异常数据的标识</td>
  245. </tr>
  246. <tr>
  247. <td align="left">ws_id</td>
  248. <td align="left">string</td>
  249. <td align="left">8</td>
  250. <td align="left">Y</td>
  251. <td align="left">Y</td>
  252. <td align="left">websocket的会话ID</td>
  253. </tr>
  254. </tbody></table>
  255. <h3>响应</h3>
  256. <p>返回导入成功与否.</p>
  257. <h5>状态码</h5>
  258. <pre><code>200 导入成功
  259. 500 导入出错和异常信息提示
  260. 600 参数校验不通过
  261. </code></pre>
  262. <h5>响应数据示例</h5>
  263. <pre><code>{
  264. &quot;data&quot;: null,
  265. &quot;msg&quot;: &quot;&quot;,
  266. &quot;code&quot;: 200
  267. }
  268. </code></pre>
  269. <hr>
  270. <script src="md.js"></script>
  271. </body>
  272. </html>