CreateBankstatement.java 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. package restcontroller.webmanage.sale.bankstatement;
  2. import beans.remind.Remind;
  3. import com.alibaba.fastjson2.JSONArray;
  4. import com.alibaba.fastjson2.JSONObject;
  5. import common.ServiceController;
  6. import common.YosException;
  7. import common.data.Rows;
  8. import common.data.SQLFactory;
  9. import utility.email.EmailContent;
  10. import java.math.BigDecimal;
  11. import java.time.LocalDateTime;
  12. import java.util.ArrayList;
  13. import java.util.LinkedHashSet;
  14. public class CreateBankstatement {
  15. /**
  16. * @param controller
  17. * @param jsonArray
  18. * @param siteid
  19. * @return
  20. * @throws YosException
  21. */
  22. public static JSONObject createBankstatement(ServiceController controller, JSONArray jsonArray, String siteid) throws YosException {
  23. ArrayList<String> tranflowList = controller.dbConnect.runSqlQuery("select tranflow from sa_bankstatement where siteid='" + siteid + "' and banktype='农行'").toArrayList("tranflow");
  24. ArrayList<String> sqlList = new ArrayList<>();
  25. ArrayList<Long> idList = new ArrayList<>();
  26. for (Object o : jsonArray) {
  27. JSONObject jsonObject = (JSONObject) o;
  28. String tranflow = jsonObject.getString("TimeStab");
  29. if (!tranflowList.contains(tranflow)) {
  30. String trantime = jsonObject.getString("TrDate");
  31. String PostScript = jsonObject.getString("PostScript");
  32. long sa_bankstatementid = controller.createTableID("sa_bankstatement");
  33. BigDecimal amount = jsonObject.getBigDecimal("Amt");
  34. SQLFactory sqlFactory = new SQLFactory(controller, "银企直联流水账新增");
  35. sqlFactory.addParameter("siteid", siteid);
  36. sqlFactory.addParameter("sa_bankstatementid", sa_bankstatementid);
  37. sqlFactory.addParameter("banktype", "农行");
  38. if (jsonObject.containsKey("accname")) {
  39. sqlFactory.addParameter("accname", jsonObject.getString("AccName"));
  40. } else {
  41. sqlFactory.addParameter("accname", "");
  42. }
  43. sqlFactory.addParameter("accno", jsonObject.getString("AccNo"));
  44. sqlFactory.addParameter("tranflow", tranflow);
  45. sqlFactory.addParameter("oppbkname", jsonObject.getString("OppBkName"));
  46. sqlFactory.addParameter("oppname", jsonObject.getString("OppName"));
  47. sqlFactory.addParameter("oppaccno", jsonObject.getString("OppAccNo"));
  48. sqlFactory.addParameter("amount", amount);
  49. sqlFactory.addParameter("trantime", trantime);
  50. sqlFactory.addParameter("notes", jsonObject.getString("Abs"));
  51. sqlFactory.addParameter("remarks", PostScript);
  52. sqlFactory.addParameter("response", jsonObject.toString());
  53. sqlFactory.addParameter("xncardno", "");
  54. sqlFactory.addParameter("sys_enterpriseid", 0);
  55. sqlFactory.addParameter("sa_cashbillid", 0);
  56. sqlFactory.addParameter("status", "未入账");
  57. sqlFactory.addParameter("username", "");
  58. sqlFactory.addParameter("createdate", LocalDateTime.now());
  59. String POSTSCRIPT = jsonObject.getString("PostScript");
  60. POSTSCRIPT = POSTSCRIPT.trim();
  61. if (!POSTSCRIPT.equals("") && POSTSCRIPT.length() >= 19) {
  62. String xncardnoabc = POSTSCRIPT.substring(0, 19);
  63. Rows enterprise = controller.dbConnect.runSqlQuery("select t2.sys_enterpriseid from sa_bankabcxccard t1 inner join sa_agents t2 on t1.siteid=t2.siteid and t1.sa_agentsid=t2.sa_agentsid where t1.siteid='" + siteid + "' and t1.xncardnoabc='" + xncardnoabc + "' and t1.isused=1");
  64. if (enterprise.isNotEmpty() && enterprise.size() == 1) {
  65. long sys_enterpriseid = enterprise.get(0).getLong("sys_enterpriseid");
  66. sqlFactory.addParameter("xncardno", xncardnoabc);
  67. sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
  68. JSONObject createcashbill = CreateCashbill.createcashbill(controller, sys_enterpriseid, amount, siteid, sa_bankstatementid, "农行", jsonObject.getStringValue("OppName"));
  69. if (createcashbill != null) {
  70. sqlFactory.addParameter("status", "已入账(系统)");
  71. long sa_cashbillid = createcashbill.getLong("sa_cashbillid");
  72. sqlFactory.addParameter("sa_cashbillid", sa_cashbillid);
  73. sqlList.add(sqlFactory.getSQL());
  74. sqlList.addAll((ArrayList<String>) createcashbill.get("sql"));
  75. } else {
  76. sqlList.add(sqlFactory.getSQL());
  77. }
  78. } else {
  79. sqlList.add(sqlFactory.getSQL());
  80. }
  81. } else {
  82. sqlList.add(sqlFactory.getSQL());
  83. }
  84. idList.add(sa_bankstatementid);
  85. }
  86. }
  87. JSONObject jsonObject = new JSONObject();
  88. jsonObject.put("sqlList", sqlList);
  89. jsonObject.put("idList", idList);
  90. return jsonObject;
  91. }
  92. public static void autoRemind(ServiceController controller, String remindname, long dataid, String siteid) throws YosException {
  93. Rows sys_remind_configsRows = controller.dbConnect.runSqlQuery("select t2.ownertable,t1.remindtitle,t1.remindmode,t1.content,t1.isrole,t1.roleids,t1.isuser,t1.userids,t1.issql,t1.sqlstr from sys_remind_configs t1 " +
  94. "inner join sys_remind_config t2 on t1.sys_remind_configid=t2.sys_remind_configid where siteid='" + siteid + "' and t2.remindname='" + remindname + "'");
  95. if (sys_remind_configsRows.isNotEmpty()) {
  96. String ownertable = sys_remind_configsRows.get(0).getString("ownertable");
  97. String remindtitle = sys_remind_configsRows.get(0).getString("remindtitle");
  98. JSONArray remindmodeArray = sys_remind_configsRows.get(0).getJSONArray("remindmode");
  99. String content = sys_remind_configsRows.get(0).getString("content");
  100. boolean isrole = sys_remind_configsRows.get(0).getBoolean("isrole");
  101. boolean isuser = sys_remind_configsRows.get(0).getBoolean("isuser");
  102. boolean issql = sys_remind_configsRows.get(0).getBoolean("issql");
  103. LinkedHashSet<Long> useridList = new LinkedHashSet<>();
  104. if (isrole) {
  105. JSONArray roleids = sys_remind_configsRows.get(0).getJSONArray("roleids");
  106. for (Object o : roleids) {
  107. useridList.addAll(controller.dbConnect.runSqlQuery("select userid from sys_userrole where siteid='" + siteid + "' and roleid=" + o).toArrayList("userid", new ArrayList<>()));
  108. }
  109. }
  110. if (isuser) {
  111. JSONArray userids = sys_remind_configsRows.get(0).getJSONArray("userids");
  112. for (Object o : userids) {
  113. useridList.add(Long.parseLong(o.toString()));
  114. }
  115. }
  116. if (issql) {
  117. String sqlstr = sys_remind_configsRows.get(0).getString("sqlstr");
  118. if (sqlstr.contains(":")) {
  119. Rows datarows = controller.dbConnect.runSqlQuery("select * from " + ownertable + " where " + controller.getuniquecolumnname(ownertable) + "=" + dataid);
  120. if (datarows.isNotEmpty()) {
  121. for (String key : datarows.get(0).keySet()) {
  122. if (sqlstr.contains(":" + key)) {
  123. sqlstr = sqlstr.replace(":" + key, "'" + datarows.get(0).getString(key) + "'");
  124. }
  125. }
  126. }
  127. }
  128. try {
  129. useridList.addAll(controller.dbConnect.runSqlQuery(sqlstr).toArrayList("userid", new ArrayList<>()));
  130. } catch (Exception e) {
  131. e.printStackTrace();
  132. }
  133. }
  134. if (content.contains(":")) {
  135. Rows datarows = controller.dbConnect.runSqlQuery("select * from " + ownertable + " where " + controller.getuniquecolumnname(ownertable) + "=" + dataid);
  136. if (datarows.isNotEmpty()) {
  137. for (String key : datarows.get(0).keySet()) {
  138. if (content.contains(":" + key)) {
  139. content = content.replace(":" + key, "'" + datarows.get(0).getString(key) + "'");
  140. }
  141. }
  142. }
  143. }
  144. int max = 10;
  145. while (content.contains("{") && content.contains("}")) {
  146. int start = content.indexOf("{");
  147. int end = content.indexOf("}");
  148. String parm = content.substring(start, end + 1);
  149. String sql = parm.replace("{", "").replace("}", "");
  150. Rows rows = controller.dbConnect.runSqlQuery(sql);
  151. if (rows.size() != 1 || rows.getFieldList().size() != 1) {
  152. break;
  153. } else {
  154. String value = rows.get(0).getString(rows.getFieldList().get(0));
  155. content = content.replace(parm, value);
  156. }
  157. if (max-- == 0) {
  158. break;
  159. }
  160. }
  161. for (Object o : remindmodeArray) {
  162. String remindmode = (String) o;
  163. switch (remindmode) {
  164. case "邮件": {
  165. for (Long userid : useridList) {
  166. ArrayList<String> emailList = controller.dbConnect.runSqlQuery("select distinct email from ( SELECT userid,email FROM sys_hr where siteid='" + siteid + "' and userid='" + userid + "'and email like'%@%'and LENGTH(email)>2 union all select userid,email from sys_enterprise_hr where siteid='" + siteid + "' and userid='" + userid + "'and email like'%@%'and LENGTH(email)>2)t").toArrayList("email");
  167. try {
  168. EmailContent emailContent = new EmailContent();
  169. emailContent.addText(content);
  170. Remind remind = new Remind(siteid);
  171. remind.setTitle(remindtitle);
  172. remind.setToemail(emailList);
  173. remind.setContent(emailContent);
  174. remind.sendByMail();
  175. } catch (Exception e) {
  176. e.printStackTrace();
  177. }
  178. }
  179. break;
  180. }
  181. case "短信": {
  182. for (Long userid : useridList) {
  183. ArrayList<String> phonenumberList = controller.dbConnect.runSqlQuery("select phonenumber from sys_users where userid=" + userid).toArrayList("phonenumber");
  184. try {
  185. Remind remind = new Remind(siteid);
  186. remind.setContent(content);
  187. remind.setTophonenumber(phonenumberList);
  188. remind.sendBySms();
  189. } catch (Exception e) {
  190. e.printStackTrace();
  191. }
  192. }
  193. break;
  194. }
  195. case "弹框": {
  196. for (Long userid : useridList) {
  197. ArrayList<String> phonenumberList = controller.dbConnect.runSqlQuery("select phonenumber from sys_users where userid=" + userid).toArrayList("phonenumber");
  198. try {
  199. Remind remind = new Remind(siteid);
  200. remind.setTitle(remindtitle);
  201. remind.setContent(content);
  202. remind.setTouserid(userid);
  203. remind.setTophonenumber(phonenumberList);
  204. remind.sendByDialogMsg();
  205. } catch (Exception e) {
  206. e.printStackTrace();
  207. }
  208. }
  209. break;
  210. }
  211. }
  212. }
  213. }
  214. }
  215. }