IndexController.java 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215
  1. package com.lsw.controller;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.jfinal.aop.Before;
  5. import com.jfinal.core.Controller;
  6. import com.jfinal.kit.JsonKit;
  7. import com.jfinal.kit.Kv;
  8. import com.jfinal.kit.StrKit;
  9. import com.jfinal.plugin.activerecord.Db;
  10. import com.jfinal.plugin.activerecord.Record;
  11. import com.jfinal.plugin.activerecord.tx.Tx;
  12. import com.lsw.utils.TimeUtil;
  13. import java.math.BigDecimal;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. import java.util.stream.Collectors;
  17. public class IndexController extends Controller {
  18. public void index() {
  19. long start = System.currentTimeMillis();
  20. String table = getPara("table", "TLK_MYJCS");
  21. String ITEM_VALUE = getPara("ITEM_VALUE");
  22. String bh = getPara("bh", "102");
  23. String type = getPara("type", "form");
  24. String user = getPara("user", "基栋");
  25. set("look", getPara("look"));
  26. List<Record> all = new ArrayList<>();
  27. StringBuilder sb = new StringBuilder();
  28. Record v = Db.findFirst("SELECT ITEM_VERSION,ITEM_BH,ITEM_NAME FROM TLK_MYJCS WHERE ITEM_XL_NUM=? and ITEM_UPBH IS NULL ORDER BY ITEM_VERSION DESC", bh);
  29. sb.append("SELECT ID,ITEM_BH,ITEM_PX,ITEM_NAME,ITEM_UPBH,ITEM_TYPE FROM " + table);
  30. if (type.equals("form")) {
  31. sb.append(" WHERE ITEM_KEY=?");
  32. }
  33. if (type.equals("json")) {
  34. sb.append(" WHERE ITEM_XL_NUM=?");
  35. sb.append(" AND ITEM_VERSION=?");
  36. }
  37. sb.append(" AND ITEM_UPBH IS NOT NULL");
  38. if (StrKit.notBlank(ITEM_VALUE)) {
  39. sb.append(" AND ITEM_VALUE=?");
  40. sb.append(" ORDER BY ITEM_PX ASC");
  41. all = Db.find(sb.toString(), bh, ITEM_VALUE);
  42. } else {
  43. sb.append(" ORDER BY TO_NUMBER(ITEM_PX) ASC");
  44. if (type.equals("json")) {
  45. all = Db.find(sb.toString(), bh, v.getStr("ITEM_VERSION"));
  46. } else {
  47. all = Db.find(sb.toString(), bh);
  48. }
  49. }
  50. List<Record> list = all.stream().filter(r -> r.getStr("ITEM_UPBH").equals(type.equals("form") ? bh : v.getStr("ITEM_BH"))).collect(Collectors.toList());
  51. for (Record record : list) {
  52. int rowspan = 0; //总的合并行
  53. record.set("type", 0);
  54. //二级
  55. List<Record> list2 = all.stream().filter(r -> r.getStr("ITEM_UPBH").equals(record.getStr("ITEM_BH"))).collect(Collectors.toList());
  56. record.set("child", list2);
  57. rowspan++;
  58. for (Record record2 : list2) {
  59. int rowspan2 = 0; //二级合并行
  60. //三级
  61. List<Record> list3 = all.stream().filter(r -> r.getStr("ITEM_UPBH").equals(record2.getStr("ITEM_BH"))).collect(Collectors.toList());
  62. record2.set("child", list3);
  63. rowspan++;
  64. rowspan2++;
  65. for (Record record3 : list3) {
  66. //四级
  67. List<Record> list4 = all.stream().filter(r -> r.getStr("ITEM_UPBH").equals(record3.getStr("ITEM_BH"))).collect(Collectors.toList());
  68. if (!list4.isEmpty()) {
  69. record.set("type", 1);
  70. }
  71. if (record3.getStr("ITEM_TYPE").equals("1")) {
  72. rowspan++;
  73. rowspan2++;
  74. }
  75. for (Record record4 : list4) {
  76. if (record4.getStr("ITEM_TYPE").equals("1")) {
  77. rowspan++;
  78. rowspan2++;
  79. }
  80. //五级
  81. List<Record> list5 = all.stream().filter(r -> r.getStr("ITEM_UPBH").equals(record4.getStr("ITEM_BH"))).collect(Collectors.toList());
  82. if (!list5.isEmpty()) {
  83. record.set("type", 1);
  84. record2.set("type", 1);
  85. }
  86. record4.set("child", list5);
  87. }
  88. record3.set("child", list4);
  89. }
  90. record2.set("rowspan2", rowspan2);
  91. }
  92. record.set("rowspan", rowspan);
  93. }
  94. long end = System.currentTimeMillis();
  95. if (type.equals("form")) {
  96. setAttr("list", list);
  97. setAttr("table", table);
  98. setAttr("user", user);
  99. setAttr("time", mul((end - start), (float) 0.001) + "s");
  100. render("index.html");
  101. } else {
  102. Record record = new Record();
  103. record.set("code", 200);
  104. record.set("msg", "请求成功");
  105. record.set("time", mul((end - start), (float) 0.001) + "s");
  106. Record child = new Record();
  107. child.set("ITEM_NAME", v.getStr("ITEM_NAME"));
  108. child.set("ITEM_XL_NUM", bh);
  109. child.set("ITEM_VERSION", v.getStr("ITEM_VERSION"));
  110. child.set("data", list);
  111. record.set("data", child);
  112. renderJson(record);
  113. }
  114. }
  115. public void edit() {
  116. if (StrKit.isBlank(getPara("ITEM_NAME")) && StrKit.isBlank(getPara("ID"))) {
  117. renderJson(new Record().set("code", 500));
  118. return;
  119. }
  120. String table = getPara("table", "TLK_YJCS");
  121. Record record = Db.findFirst("SELECT * FROM " + table + " WHERE ID=?", getPara("ID"));
  122. JSONArray log_list = new JSONArray();
  123. if (record.get("ITEM_TLOG") == null) {
  124. //原记录
  125. Record log = new Record();
  126. log.set("DAY", "原记录");
  127. log.set("ITEM_NAME", record.getStr("ITEM_NAME"));
  128. log_list.add(log);
  129. } else {
  130. log_list = JSON.parseArray(record.get("ITEM_TLOG"));
  131. }
  132. //编辑记录
  133. Record log = new Record();
  134. log.set("DAY", StrKit.isBlank(getPara("day")) ? TimeUtil.getNow() : getPara("day"));
  135. log.set("ITEM_NAME", getPara("ITEM_NAME"));
  136. log.set("USER", getPara("user"));
  137. log_list.add(log);
  138. Record update = new Record();
  139. update.set("ITEM_NAME", getPara("ITEM_NAME"));
  140. update.set("ID", getPara("ID"));
  141. update.set("ITEM_TLOG", JsonKit.toJson(log_list));
  142. boolean result = Db.update(table, "ID", update);
  143. if (record.get("ITEM_FID") != null) {
  144. Record TLK_MYJCS = Db.findFirst("SELECT * FROM TLK_MYJCS WHERE ID=?", record.getStr("ITEM_FID"));
  145. JSONArray log_list2 = new JSONArray();
  146. if (TLK_MYJCS.get("ITEM_TLOG") == null) {
  147. //原记录
  148. Record log2 = new Record();
  149. log2.set("DAY", "原记录");
  150. log2.set("ITEM_NAME", TLK_MYJCS.getStr("ITEM_NAME"));
  151. log_list2.add(log2);
  152. } else {
  153. log_list2 = JSON.parseArray(TLK_MYJCS.get("ITEM_TLOG"));
  154. }
  155. update.set("ID", record.get("ITEM_FID"));
  156. log_list2.add(log);
  157. update.set("ITEM_TLOG", JsonKit.toJson(log_list2));
  158. Db.update("TLK_MYJCS", "ID", update);
  159. }
  160. renderJson(new Record().set("code", result ? 200 : 500));
  161. }
  162. @Before(Tx.class)
  163. public void move() {
  164. String table = getPara("table", "TLK_YJCS");
  165. String op = getPara("op", "add"); //操作上移,下移
  166. String id = getPara("id");
  167. Record up = Db.findFirst("SELECT * FROM " + table + " WHERE ID=? ", id);
  168. List<Record> list = Db.find("SELECT * FROM " + table + " WHERE ITEM_UPBH=? ORDER BY ITEM_PX ASC", up.getStr("ITEM_UPBH"));
  169. if (up.getStr("ITEM_PX") == null) {
  170. up.set("ITEM_PX", 0);
  171. }
  172. for (Record r : list) {
  173. if (r.getStr("ITEM_PX") == null) {
  174. r.set("ITEM_PX", 0);
  175. }
  176. }
  177. for (int i = 0; i < list.size(); i++) {
  178. if (op.equals("add") && up.getStr("ID").equals(list.get(i).getStr("ID"))) {
  179. Db.update("UPDATE " + table + " SET ITEM_PX=? WHERE ID=?", Integer.parseInt(up.getStr("ITEM_PX")) - 1, up.getStr("ID"));
  180. Db.update("UPDATE " + table + " SET ITEM_PX=? WHERE ID=?", Integer.parseInt(list.get(i - 1).getStr("ITEM_PX")) + 1, list.get(i - 1).getStr("ID"));
  181. break;
  182. }
  183. if (op.equals("down") && up.getStr("ID").equals(list.get(i).getStr("ID"))) {
  184. System.out.println("ITEM_PX:" + list.get(i).getStr("ITEM_PX"));
  185. System.out.println("索引:" + i);
  186. Db.update("UPDATE " + table + " SET ITEM_PX=? WHERE ID=?", Integer.parseInt(up.getStr("ITEM_PX")) + 1, up.getStr("ID"));
  187. Db.update("UPDATE " + table + " SET ITEM_PX=? WHERE ID=?", Integer.parseInt(list.get(i + 1).getStr("ITEM_PX")) - 1, list.get(i + 1).getStr("ID"));
  188. break;
  189. }
  190. }
  191. renderJson(new Record().set("code", 200));
  192. }
  193. public void log() {
  194. String table = getPara("table", "TLK_YJCS");
  195. Record record = Db.findFirst("SELECT * FROM " + table + " WHERE ID=?", getPara("ID"));
  196. renderJson(record.getStr("ITEM_TLOG"));
  197. }
  198. private double mul(long v1, float v2) {
  199. BigDecimal b1 = new BigDecimal(Float.toString(v1));
  200. BigDecimal b2 = new BigDecimal(Float.toString(v2));
  201. return b1.multiply(b2).doubleValue();
  202. }
  203. }