yxb.java 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package restcontroller.yxb;
  2. import com.alibaba.fastjson2.JSONArray;
  3. import com.alibaba.fastjson2.JSONObject;
  4. import common.Controller;
  5. import common.YosException;
  6. import common.annotation.API;
  7. import common.data.*;
  8. import lombok.Getter;
  9. import lombok.Setter;
  10. import restcontroller.R;
  11. import java.util.ArrayList;
  12. import java.util.HashMap;
  13. public class yxb extends Controller {
  14. public yxb(JSONObject content) throws YosException {
  15. super(content);
  16. }
  17. @API(title = "营销宝数据同步查询", apiversion = R.ID2026030512342901.v1.class)
  18. public String getdata() throws YosException {
  19. HashMap<String, YxbResult> resultData = new HashMap<>();//数据更新对象
  20. long yxb_datasyncid = 0;
  21. Rows maxyxb_datasync = dbConnect.runSqlQuery("select max(yxb_datasyncid)as yxb_datasyncid from yxb_datasync");
  22. if (maxyxb_datasync.isNotEmpty()) {
  23. yxb_datasyncid = maxyxb_datasync.get(0).getLong("yxb_datasyncid");
  24. }
  25. RowsMap rowsMap = dbConnect.runSqlQuery("select ownertable,ownerid from yxb_datasync where yxb_datasyncid<=" + yxb_datasyncid + " group by ownertable,ownerid").toRowsMap("ownertable");
  26. for (String tablename : rowsMap.keySet()) {
  27. String uniquecolumnname = getuniquecolumnname(tablename);
  28. Rows datasyncRows = rowsMap.get(tablename);
  29. ArrayList<String> idlist = datasyncRows.toArrayList("ownerid");//当前表的所有待更新数据ID
  30. QuerySQL querySQL;
  31. if (tablename.equalsIgnoreCase("sys_userrole")) {
  32. //如果是账号角色授权表,则单独处理
  33. querySQL = SQLFactory.createQuerySQL(this, tablename, "userid").setTableAlias("t1");
  34. querySQL.addJoinTable(JOINTYPE.inner, "sys_role", "t2", "t1.roleid=t2.roleid", "rolename", "remarks");
  35. querySQL.setWhere(uniquecolumnname, idlist);
  36. querySQL.setDistinct(true);
  37. } else if (tablename.equalsIgnoreCase("sys_users")) {
  38. querySQL = SQLFactory.createQuerySQL(this, tablename, "userid", "accountno", "name", "status", "phonenumber");
  39. } else {
  40. querySQL = SQLFactory.createQuerySQL(this, tablename);
  41. querySQL.setWhere(uniquecolumnname, idlist);
  42. }
  43. Rows datarows = querySQL.query();
  44. //查询出所有的待同步的数据
  45. idlist.removeAll(datarows.toArrayList(uniquecolumnname));//排除存在的数据id,即为已经删除的数据的数据ID
  46. resultData.put(tablename, new YxbResult(datarows, idlist, yxb_datasyncid));
  47. }
  48. return getSucReturnObject().setData(JSONObject.from(resultData)).toString();
  49. }
  50. @API(title = "营销宝数据同步确认", apiversion = R.ID2026030513573201.v1.class)
  51. public String getdatareback() throws YosException {
  52. long yxb_datasyncid = content.getLongValue("yxb_datasyncid");
  53. String tablename = content.getStringValue("tablename");
  54. JSONArray ids = content.getJSONArray("ids");
  55. if (!ids.isEmpty()) {
  56. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "yxb_datasync");
  57. deleteSQL.setWhere("ownertable", tablename);
  58. deleteSQL.setWhere("ownerid", ids);
  59. deleteSQL.setWhere("yxb_datasyncid", Op.LTE, yxb_datasyncid);//将该ID之前的记录全部删除
  60. deleteSQL.delete();
  61. }
  62. return getSucReturnObject().toString();
  63. }
  64. @Getter
  65. @Setter
  66. class YxbResult {
  67. public Rows dataRows;
  68. public ArrayList<String> deleteIDs;
  69. public long yxb_datasyncid;
  70. public YxbResult(Rows dataRows, ArrayList<String> deleteIDs, long yxb_datasyncid) {
  71. this.dataRows = dataRows;
  72. this.deleteIDs = deleteIDs;
  73. this.yxb_datasyncid = yxb_datasyncid;
  74. }
  75. }
  76. }