DesignPic.java 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446
  1. package restcontroller.webmanage.saletool.sharematerial;
  2. import beans.attachment.Attachment;
  3. import beans.time.Time;
  4. import com.alibaba.fastjson.JSONObject;
  5. import common.Controller;
  6. import common.YosException;
  7. import common.annotation.API;
  8. import common.data.*;
  9. import org.apache.commons.lang.StringUtils;
  10. import restcontroller.R;
  11. import restcontroller.webmanage.saletool.fad.FadHelper;
  12. import java.util.ArrayList;
  13. /**
  14. * 设计实景管理
  15. */
  16. public class DesignPic extends Controller {
  17. /**
  18. * 构造函数
  19. *
  20. * @param content
  21. */
  22. public DesignPic(JSONObject content) throws YosException {
  23. super(content);
  24. }
  25. String sat_sharematerial = "sat_sharematerial";
  26. @API(title = "设计实景新增或编辑", apiversion = R.ID20240417104602.v1.class)
  27. public String insertOrUpdate() throws YosException {
  28. Long sat_sharematerialid = content.getLongValue("sat_sharematerialid");
  29. boolean ispublish = content.getBooleanValue("ispublish");
  30. if (content.containsKey("sys_enterpriseid") && content.getLongValue("sys_enterpriseid") > 0) {
  31. sys_enterpriseid = content.getLongValue("sys_enterpriseid");
  32. }
  33. if (sat_sharematerialid <= 0) {
  34. sat_sharematerialid = createTableID(sat_sharematerial);
  35. InsertSQL sqlFactory = SQLFactory.createInsertSQL(this, sat_sharematerial);
  36. sqlFactory.setSiteid(siteid);
  37. sqlFactory.setUniqueid(sat_sharematerialid);
  38. sqlFactory.setValue("classid", 5);
  39. sqlFactory.setValue("sys_enterpriseid", sys_enterpriseid);
  40. sqlFactory.setValue("title", content.getStringValue("title"));
  41. sqlFactory.setValue("title_c", content.getStringValue("title_c"));
  42. sqlFactory.setValue("type", content.getIntValue("type", 4));
  43. sqlFactory.setValue("panoramaurl", content.getStringValue("panoramaurl", true));
  44. sqlFactory.setValue("sequence", content.getLongValue("sequence"));
  45. sqlFactory.setValue("renderingsclass", content.getJSONObject("renderingsclass"));
  46. sqlFactory.setValue("isnationwide", content.getBooleanValue("isnationwide"));
  47. sqlFactory.insert();
  48. content.put("sat_sharematerialid", sat_sharematerialid);
  49. } else {
  50. UpdateSQL sqlFactory = SQLFactory.createUpdateSQL(this, sat_sharematerial);
  51. sqlFactory.setUniqueid(sat_sharematerialid);
  52. sqlFactory.setSiteid(siteid);
  53. sqlFactory.setValue("sys_enterpriseid", sys_enterpriseid);
  54. sqlFactory.setValue("title", content.getStringValue("title"));
  55. sqlFactory.setValue("title_c", content.getStringValue("title_c"));
  56. sqlFactory.setValue("type", content.getIntValue("type", 4));
  57. sqlFactory.setValue("panoramaurl", content.getStringValue("panoramaurl", true));
  58. sqlFactory.setValue("sequence", content.getLongValue("sequence"));
  59. sqlFactory.setValue("renderingsclass", content.getJSONObject("renderingsclass"));
  60. sqlFactory.setValue("isnationwide", content.getBooleanValue("isnationwide"));
  61. sqlFactory.update();
  62. }
  63. if (ispublish) {
  64. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, sat_sharematerial);
  65. updateSQL.setSiteid(siteid);
  66. updateSQL.setWhere("sat_sharematerialid", sat_sharematerialid);
  67. updateSQL.setValue("status", "发布");
  68. updateSQL.setValue("checkdate", Time.getDateTime_Str());
  69. updateSQL.setValue("checkby", username);
  70. updateSQL.update();
  71. }
  72. return detail();
  73. }
  74. @API(title = "设计实景详情", apiversion = R.ID20240417104702.v1.class)
  75. public String detail() throws YosException {
  76. Long sat_sharematerialid = content.getLongValue("sat_sharematerialid");
  77. String ownertable = "sat_sharematerial";
  78. QuerySQL querySQ = SQLFactory.createQuerySQL(this, "sat_sharematerial",
  79. "sat_sharematerialid", "createuserid", "createby", "createdate", "changeby", "changedate", "checkby", "checkdate", "sys_enterpriseid", "title", "type", "sequence", "status"
  80. , "title_c", "renderingsclass", "isnationwide", "collectcount", "likecount", "commentcount", "panoramaurl")
  81. .setTableAlias("t1");
  82. querySQ.addJoinTable(JOINTYPE.left, "sys_datacollect", "t2", "t2.siteid=t1.siteid and t2.ownertable='sat_sharematerial' and type=1 and t2.ownerid=t1.sat_sharematerialid and t2.userid='" + userid + "'");
  83. querySQ.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid=t1.sys_enterpriseid and t3.siteid=t1.siteid"
  84. , "enterprisename");
  85. querySQ.addJoinTable(JOINTYPE.left, "sys_datacollect", "t4", "t4.siteid=t1.siteid and t4.ownertable='sat_sharematerial' and type=2 and t4.ownerid=t1.sat_sharematerialid and t4.userid='" + userid + "'");
  86. querySQ.addQueryFields("iscollect", "CASE WHEN t2.sys_datacollectid>0 THEN 1 ELSE 0 END");
  87. querySQ.addQueryFields("islike", "CASE WHEN t4.sys_datacollectid>0 THEN 1 ELSE 0 END");
  88. querySQ.setSiteid(siteid);
  89. querySQ.setWhere("sat_sharematerialid", sat_sharematerialid);
  90. Rows rows = querySQ.query();
  91. if (rows.isNotEmpty()) {
  92. SQLFactory sqlFactory = new SQLFactory(this, "查询经销商区域");
  93. sqlFactory.addParameter_in("sys_enterpriseid", rows.toArray("sys_enterpriseid"));
  94. sqlFactory.addParameter("siteid", siteid);
  95. RowsMap areaRows = dbConnect.runSqlQuery(sqlFactory).toRowsMap("sys_enterpriseid");
  96. for (Row row : rows) {
  97. Rows areas = areaRows.getOrDefault(row.getString("sys_enterpriseid"), new Rows());
  98. row.put("areaname", StringUtils.join(areas.toArray("areaname"), ","));
  99. }
  100. }
  101. Row detailRow = rows.isNotEmpty() ? rows.get(0) : new Row();
  102. Rows attRows = getAttachmentUrl("sat_sharematerial", sat_sharematerialid);
  103. detailRow.put("attinfos", attRows);
  104. detailRow.putIfAbsent("areaname", "");
  105. detailRow.putIfAbsent("checkdate", "");
  106. detailRow.put("appleturl", FadHelper.getAppletUrl(this, "DesignImgsUrl", "设计实景小程序链接") + sat_sharematerialid);
  107. if (StringUtils.isBlank(detailRow.getString("panoramaurl"))) {
  108. detailRow.put("ispanorama", 0);
  109. } else {
  110. detailRow.put("ispanorama", 1);
  111. }
  112. QuerySQL attachmentQuery = SQLFactory.createQuerySQL(this, "sys_attachment_links").setTableAlias("t1");
  113. attachmentQuery.setSiteid(siteid);
  114. attachmentQuery.setWhere("ownertable", ownertable);
  115. attachmentQuery.setWhere("ownerid", sat_sharematerialid);
  116. attachmentQuery.setWhere("usetype", ownertable);
  117. attachmentQuery.setOrderBy("t1.sequence");
  118. Rows attachmentRows = attachmentQuery.query();
  119. ArrayList<Long> ids = attachmentRows.toArrayList("attachmentid", new ArrayList<>());
  120. RowsMap attRowsMap = Attachment.get(this, ids).toRowsMap("attachmentid");
  121. for (Row row : attachmentRows) {
  122. Rows attPicRows = new Rows();
  123. Rows tempAttRows = attRowsMap.getOrDefault(row.getString("attachmentid"), new Rows());
  124. for (Row tempAttRow : tempAttRows) {
  125. if (tempAttRow.getString("usetype").equals(ownertable)) {
  126. attPicRows.add(tempAttRow);
  127. }
  128. }
  129. row.put("attinfos", attPicRows);
  130. }
  131. detailRow.put("attinfos_pic", attachmentRows);
  132. detailRow.put("headpic", getHeadPic(detailRow.getLong("createuserid")));
  133. if (StringUtils.isBlank(detailRow.getString("areaname"))) {
  134. detailRow.put("enterprisename_area", detailRow.getString("enterprisename"));
  135. } else {
  136. detailRow.put("enterprisename_area", detailRow.getString("enterprisename") + "(" + detailRow.getString("areaname") + ")");
  137. }
  138. return getSucReturnObject().setData(detailRow).toString();
  139. }
  140. @API(title = "设计实景列表", apiversion = R.ID20240417104802.v1.class)
  141. public String list() throws YosException {
  142. /*
  143. 过滤条件设置
  144. */
  145. StringBuffer where = new StringBuffer(" 1=1 ");
  146. if (content.containsKey("where")) {
  147. JSONObject whereObject = content.getJSONObject("where");
  148. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  149. where.append(" and (");
  150. where.append("t1.title like'%").append(whereObject.getString("condition")).append("%' ");
  151. where.append(")");
  152. }
  153. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  154. where.append(" and (");
  155. where.append("t1.status ='").append(whereObject.getString("status")).append("' ");
  156. where.append(")");
  157. }
  158. if (whereObject.containsKey("begindate_create") && !"".equals(whereObject.getString("begindate_create"))) {
  159. where.append(" and (");
  160. where.append("t1.createdate >='").append(whereObject.getString("begindate_create")).append("' ");
  161. where.append(")");
  162. }
  163. if (whereObject.containsKey("enddate_create") && !"".equals(whereObject.getString("enddate_create"))) {
  164. where.append(" and (");
  165. where.append("t1.createdate <='").append(whereObject.getString("enddate_create")).append(" 23:59:59' ");
  166. where.append(")");
  167. }
  168. if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
  169. where.append(" and (");
  170. where.append("t1.checkdate >='").append(whereObject.getString("begindate")).append("' ");
  171. where.append(")");
  172. }
  173. if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
  174. where.append(" and (");
  175. where.append("t1.checkdate <='").append(whereObject.getString("enddate")).append(" 23:59:59' ");
  176. where.append(")");
  177. }
  178. if (whereObject.containsKey("ispanorama") && !"".equals(whereObject.getString("ispanorama"))) {
  179. if (whereObject.getString("ispanorama").equals("1")) {
  180. where.append(" and (");
  181. where.append("LENGTH(t1.panoramaurl)>0 ");
  182. where.append(")");
  183. } else {
  184. where.append(" and (");
  185. where.append("LENGTH(t1.panoramaurl)=0 or t1.panoramaurl is null ");
  186. where.append(")");
  187. }
  188. }
  189. if (whereObject.containsKey("type") && !"".equals(whereObject.getString("type"))) {
  190. where.append(" and (");
  191. where.append("t1.type ='").append(whereObject.getString("type")).append("' ");
  192. where.append(")");
  193. }
  194. if (whereObject.containsKey("style") && !"".equals(whereObject.getString("style"))) {
  195. where.append(" and (");
  196. where.append("JSON_CONTAINS(t1.renderingsclass->'$.style', '\"" + whereObject.getString("style") + "\"')");
  197. where.append(")");
  198. }
  199. if (whereObject.containsKey("space") && !"".equals(whereObject.getString("space"))) {
  200. where.append(" and (");
  201. where.append("JSON_CONTAINS(t1.renderingsclass->'$.space', '\"" + whereObject.getString("space") + "\"')");
  202. where.append(")");
  203. }
  204. if (whereObject.containsKey("spec") && !"".equals(whereObject.getString("spec"))) {
  205. where.append(" and (");
  206. where.append("JSON_CONTAINS(t1.renderingsclass->'$.spec', '\"" + whereObject.getString("spec") + "\"')");
  207. where.append(")");
  208. }
  209. }
  210. QuerySQL querySQL = SQLFactory.createQuerySQL(this, sat_sharematerial,
  211. "sat_sharematerialid", "title", "status", "type", "commentcount", "likecount", "collectcount", "sequence", "createby", "createdate", "checkdate", "renderingsclass")
  212. .setTableAlias("t1");
  213. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid=t1.sys_enterpriseid and t3.siteid=t1.siteid"
  214. , "enterprisename", "sys_enterpriseid");
  215. querySQL.setSiteid(siteid);
  216. querySQL.setWhere("classid", 5);
  217. querySQL.setWhere(where.toString());
  218. querySQL.setOrderBy(pageSorting).setPage(pageSize, pageNumber);
  219. Rows rows = querySQL.query();
  220. SQLFactory sqlFactory = new SQLFactory(this, "查询经销商区域");
  221. sqlFactory.addParameter_in("sys_enterpriseid", rows.toArray("sys_enterpriseid"));
  222. sqlFactory.addParameter("siteid", siteid);
  223. RowsMap areaRows = dbConnect.runSqlQuery(sqlFactory).toRowsMap("sys_enterpriseid");
  224. ArrayList<Long> ids = rows.toArrayList("sat_sharematerialid", new ArrayList<>());
  225. // 附件
  226. RowsMap RowsMap = getAttachmentUrl(sat_sharematerial, ids);
  227. for (Row row : rows) {
  228. Rows Rows = RowsMap.getOrDefault(row.getString("sat_sharematerialid"), new Rows());
  229. row.put("attinfos", Rows);
  230. row.putIfAbsent("checkdate", "");
  231. if (StringUtils.isBlank(row.getString("panoramaurl"))) {
  232. row.put("ispanorama", 0);
  233. } else {
  234. row.put("ispanorama", 1);
  235. }
  236. row.put("appleturl", FadHelper.getAppletUrl(this, "DesignImgsUrl", "设计实景小程序链接") + row.getString("sat_sharematerialid"));
  237. if (row.getInteger("type") == 4) {
  238. row.put("typestr", "设计");
  239. }
  240. if (row.getInteger("type") == 5) {
  241. row.put("typestr", "实景");
  242. }
  243. Rows areas = areaRows.getOrDefault(row.getString("sys_enterpriseid"), new Rows());
  244. String areaname = StringUtils.join(areas.toArray("areaname"), ",");
  245. row.put("areaname", areaname);
  246. if (StringUtils.isBlank(areaname)) {
  247. row.put("enterprisename_area", row.getString("enterprisename"));
  248. } else {
  249. row.put("enterprisename_area", row.getString("enterprisename") + "(" + row.getString("areaname") + ")");
  250. }
  251. }
  252. return getSucReturnObject().setData(rows).toString();
  253. }
  254. @API(title = "小程序设计实景列表", apiversion = R.ID20240417144702.v1.class)
  255. public String miniapplist() throws YosException {
  256. /*
  257. 过滤条件设置
  258. */
  259. StringBuffer where = new StringBuffer(" 1=1 ");
  260. if (content.containsKey("where")) {
  261. JSONObject whereObject = content.getJSONObject("where");
  262. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  263. where.append(" and (");
  264. where.append("t1.title like'%").append(whereObject.getString("condition")).append("%' ");
  265. where.append(")");
  266. }
  267. if (whereObject.containsKey("type") && !"".equals(whereObject.getString("type"))) {
  268. where.append(" and (");
  269. where.append("t1.type ='").append(whereObject.getString("type")).append("' ");
  270. where.append(")");
  271. }
  272. if (whereObject.containsKey("style") && !"".equals(whereObject.getString("style"))) {
  273. where.append(" and (");
  274. where.append("JSON_CONTAINS(t1.renderingsclass->'$.style', '\"" + whereObject.getString("style") + "\"')");
  275. where.append(")");
  276. }
  277. if (whereObject.containsKey("space") && !"".equals(whereObject.getString("space"))) {
  278. where.append(" and (");
  279. where.append("JSON_CONTAINS(t1.renderingsclass->'$.space', '\"" + whereObject.getString("space") + "\"')");
  280. where.append(")");
  281. }
  282. if (whereObject.containsKey("spec") && !"".equals(whereObject.getString("spec"))) {
  283. where.append(" and (");
  284. where.append("JSON_CONTAINS(t1.renderingsclass->'$.spec', '\"" + whereObject.getString("spec") + "\"')");
  285. where.append(")");
  286. }
  287. }
  288. if (content.getLongValue("isnationwide") == 1) {
  289. where.append(" and (");
  290. where.append("t1.isnationwide ='").append(content.getString("isnationwide")).append("' ");
  291. where.append(")");
  292. } else {
  293. if (usertype == 21 || usertype == 22) {
  294. where.append(" and (");
  295. where.append("t1.sys_enterpriseid ='" + sys_enterpriseid + "' ");
  296. where.append(")");
  297. }
  298. }
  299. QuerySQL querySQL = SQLFactory.createQuerySQL(this, sat_sharematerial,
  300. "sat_sharematerialid", "title", "title_c", "commentcount", "likecount", "collectcount", "createuserid", "createby", "createdate")
  301. .setTableAlias("t1");
  302. querySQL.addJoinTable(JOINTYPE.left, "sys_datacollect", "t2", "t2.siteid=t1.siteid and t2.ownertable='sat_sharematerial' and type=1 and t2.ownerid=t1.sat_sharematerialid and t2.userid='" + userid + "'");
  303. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t3", "t3.sys_enterpriseid=t1.sys_enterpriseid and t3.siteid=t1.siteid"
  304. , "enterprisename", "sys_enterpriseid");
  305. querySQL.addJoinTable(JOINTYPE.left, "sys_datacollect", "t4", "t4.siteid=t1.siteid and t4.ownertable='sat_sharematerial' and type=2 and t4.ownerid=t1.sat_sharematerialid and t4.userid='" + userid + "'");
  306. querySQL.addQueryFields("iscollect", "CASE WHEN t2.sys_datacollectid>0 THEN 1 ELSE 0 END");
  307. querySQL.addQueryFields("islike", "CASE WHEN t4.sys_datacollectid>0 THEN 1 ELSE 0 END");
  308. querySQL.setSiteid(siteid);
  309. querySQL.setWhere("classid", 5);
  310. querySQL.setWhere("status='发布'");
  311. querySQL.setWhere(where.toString());
  312. querySQL.setOrderBy(pageSorting).setPage(pageSize, pageNumber);
  313. Rows rows = querySQL.query();
  314. ArrayList<Long> ids = rows.toArrayList("sat_sharematerialid", new ArrayList<>());
  315. // 附件
  316. RowsMap RowsMap = getAttachmentUrl(sat_sharematerial, ids);
  317. for (Row row : rows) {
  318. Rows Rows = RowsMap.getOrDefault(row.getString("sat_sharematerialid"), new Rows());
  319. row.put("attinfos", Rows);
  320. row.put("headpic", getHeadPic(row.getLong("createuserid")));
  321. }
  322. return getSucReturnObject().setData(rows).toString();
  323. }
  324. @API(title = "全景720列表", apiversion = R.ID20240417154702.v1.class)
  325. public String panoramalist() throws YosException {
  326. /*
  327. 过滤条件设置
  328. */
  329. StringBuffer where = new StringBuffer(" 1=1 ");
  330. if (content.containsKey("where")) {
  331. JSONObject whereObject = content.getJSONObject("where");
  332. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  333. where.append(" and (");
  334. where.append("t1.title like'%").append(whereObject.getString("condition")).append("%' ");
  335. where.append(")");
  336. }
  337. if (whereObject.containsKey("style") && !"".equals(whereObject.getString("style"))) {
  338. where.append(" and (");
  339. where.append("JSON_CONTAINS(t1.renderingsclass->'$.style', '\"" + whereObject.getString("style") + "\"')");
  340. where.append(")");
  341. }
  342. if (whereObject.containsKey("space") && !"".equals(whereObject.getString("space"))) {
  343. where.append(" and (");
  344. where.append("JSON_CONTAINS(t1.renderingsclass->'$.space', '\"" + whereObject.getString("space") + "\"')");
  345. where.append(")");
  346. }
  347. if (whereObject.containsKey("spec") && !"".equals(whereObject.getString("spec"))) {
  348. where.append(" and (");
  349. where.append("JSON_CONTAINS(t1.renderingsclass->'$.spec', '\"" + whereObject.getString("spec") + "\"')");
  350. where.append(")");
  351. }
  352. }
  353. QuerySQL querySQL = SQLFactory.createQuerySQL(this, sat_sharematerial,
  354. "sat_sharematerialid", "title", "title_c", "panoramaurl", "createuserid", "createby", "createdate")
  355. .setTableAlias("t1");
  356. querySQL.setSiteid(siteid);
  357. querySQL.setWhere("LENGTH(t1.panoramaurl)>0 ");
  358. querySQL.setWhere(where.toString());
  359. querySQL.setOrderBy(pageSorting).setPage(pageSize, pageNumber);
  360. Rows rows = querySQL.query();
  361. ArrayList<Long> ids = rows.toArrayList("sat_sharematerialid", new ArrayList<>());
  362. // 附件
  363. RowsMap RowsMap = getAttachmentUrl(sat_sharematerial, ids);
  364. for (Row row : rows) {
  365. Rows Rows = RowsMap.getOrDefault(row.getString("sat_sharematerialid"), new Rows());
  366. row.put("attinfos", Rows);
  367. }
  368. return getSucReturnObject().setData(rows).toString();
  369. }
  370. }