OrderFeeCostPlan.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. package restcontroller.webmanage.sale.order;
  2. import beans.datacontrllog.DataContrlLog;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.huaweicloud.sdk.lts.v2.model.SqlAlarmRuleRespList;
  6. import common.Controller;
  7. import common.YosException;
  8. import common.annotation.API;
  9. import common.annotation.Param;
  10. import common.data.*;
  11. import io.swagger.annotations.Api;
  12. import org.apache.camel.json.simple.Jsonable;
  13. import restcontroller.R;
  14. import java.lang.reflect.Field;
  15. import java.util.ArrayList;
  16. import java.util.HashMap;
  17. /**
  18. * 定制费用方案
  19. */
  20. public class OrderFeeCostPlan extends Controller {
  21. /**
  22. * 构造函数
  23. *
  24. * @param content
  25. */
  26. public OrderFeeCostPlan(JSONObject content) throws YosException {
  27. super(content);
  28. }
  29. @API(title = "定制费用方案-列表", apiversion = R.ID20231208133902.v1.class)
  30. public String customPlanList() throws YosException {
  31. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_datafunction",
  32. "sys_datafunctionid", "functionname", "remarks", "createdate", "status");
  33. //创建人写死admin
  34. querySQL.addJoinTable(JOINTYPE.left, "sys_contrllog", "t2", "t2.ownerid=t1.sys_datafunctionid and ownertable='sys_datafunction' and action='新增' and siteid='" + siteid + "'");
  35. querySQL.addQueryFields("createby", "t2.actionby");
  36. querySQL.setWhere("t1.functionclass", "ordercost");
  37. querySQL.setWhere("t1.sys_datafunctionid in (SELECT sys_datafunctionid from sys_datafunction_params WHERE param='siteid' and value='" + siteid + "')");
  38. querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting).setTableAlias("t1");
  39. Rows rows = querySQL.query();
  40. return getSucReturnObject().setData(rows).toString();
  41. }
  42. // @API(title = "定制费用方案-绑定", apiversion = R.ID20231208134002.v1.class)
  43. // public String insertOrUpdatePlan() throws YosException {
  44. //
  45. // Long sys_datafunctionid = content.getLongValue("sys_datafunctionid");
  46. // JSONArray items = content.getJSONArray("items");
  47. // ArrayList<String> sqlList = new ArrayList<>();
  48. // for (Object obj : items) {
  49. // JSONObject item = (JSONObject) obj;
  50. // Long ownerid = item.getLongValue("ownerid");
  51. // String ownertable = item.getStringValue("ownertable");
  52. // Rows rows = dbConnect.runSqlQuery("SELECT * from sys_datafunction_bind WHERE ownerid=" + ownerid + " and ownertable='" + ownertable + "'");
  53. // if (rows.isEmpty()) {
  54. // InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sys_datafunction_bind");
  55. // insertSQL.setUniqueid(createTableID("sys_datafunction_bind"));
  56. // insertSQL.setValue("ownerid", ownerid);
  57. // insertSQL.setValue("ownertable", ownertable);
  58. // insertSQL.setValue("sys_datafunctionid", sys_datafunctionid);
  59. // sqlList.add(insertSQL.getSQL());
  60. // } else {
  61. // UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sys_datafunction_bind");
  62. // updateSQL.setUniqueid(rows.get(0).getLong("sys_datafunction_bindid"));
  63. // updateSQL.setValue("sys_datafunctionid", sys_datafunctionid);
  64. // sqlList.add(updateSQL.getSQL());
  65. // }
  66. // }
  67. // dbConnect.runSqlUpdate(sqlList);
  68. //
  69. //
  70. // return getSucReturnObject().toString();
  71. // }
  72. @API(title = "定制费用方案-商品列表", apiversion = R.ID20231212110202.v1.class)
  73. public String bindItemList() throws YosException {
  74. Long sys_datafunctionid = content.getLongValue("sys_datafunctionid");
  75. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "plm_item");
  76. querySQL.setTableAlias("t1");
  77. querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t2", "t2.unitid = t1.unitid AND t2.siteid = t1.siteid",
  78. "unitname");
  79. querySQL.addJoinTable(JOINTYPE.left, "plm_unitgroup", "t6", "t6.unitgroupid = t1.unitgroupid",
  80. "auxunitid", "unitgroupname");
  81. querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t7", "t7.unitid = t6.unitid AND t7.siteid = t6.siteid");
  82. querySQL.addQueryFields("axunitname", "t7.unitname");
  83. querySQL.addJoinTable(JOINTYPE.left, "plm_itemextend", "t8", "t8.itemid = t1.itemid AND t8.siteid = t1.siteid",
  84. "caliber", "pressure", "material", "butterflyplatedrive", "connection", "valveplatematerial", "bodymaterial", "actuatortype",
  85. "actuatorbrand", "isbutterfly", "erpitemno", "erpitemname", "specalnote", "prodline", "device");
  86. querySQL.addJoinTable(JOINTYPE.left, "sa_sizecustomizedscheme", "t4", "t1.widthschemeid=t4.sa_sizecustomizedschemeid and t1.siteid=t4.siteid");
  87. querySQL.addQueryFields("widthschemename", "t4.schemename ");
  88. querySQL.addJoinTable(JOINTYPE.left, "sa_sizecustomizedscheme", "t5", "t1.lengthschemeid=t5.sa_sizecustomizedschemeid and t1.siteid=t5.siteid");
  89. querySQL.addQueryFields("lengthschemename", "t5.schemename ");
  90. querySQL.addJoinTable(JOINTYPE.left, "sa_sizecustomizedscheme", "t17", "t1.heightschemeid=t17.sa_sizecustomizedschemeid and t1.siteid=t17.siteid");
  91. querySQL.addQueryFields("heightschemename", "t17.schemename ");
  92. querySQL.addJoinTable(JOINTYPE.left, "sa_itemprice", "t9", "t9.itemid = t1.itemid AND t9.siteid = t1.siteid and t9.pricegrade=1");
  93. querySQL.addQueryFields("price1", "t9.price ");
  94. querySQL.addJoinTable(JOINTYPE.left, "sa_itemprice", "t10", "t10.itemid = t1.itemid AND t10.siteid = t1.siteid and t10.pricegrade=2");
  95. querySQL.addQueryFields("price2", "t10.price ");
  96. querySQL.addJoinTable(JOINTYPE.left, "sa_itemprice", "t11", "t11.itemid = t1.itemid AND t11.siteid = t1.siteid and t11.pricegrade=3");
  97. querySQL.addQueryFields("price3", "t11.price ");
  98. querySQL.addJoinTable(JOINTYPE.left, "sa_itemprice", "t12", "t12.itemid = t1.itemid AND t12.siteid = t1.siteid and t12.pricegrade=4");
  99. querySQL.addQueryFields("price4", "t12.price ");
  100. querySQL.addJoinTable(JOINTYPE.left, "sa_itemprice", "t13", "t13.itemid = t1.itemid AND t13.siteid = t1.siteid and t13.pricegrade=5");
  101. querySQL.addQueryFields("price5", "t13.price ");
  102. querySQL.addJoinTable(JOINTYPE.left, "plm_itemclass", "t14", "t14.itemclassid = t1.marketingcategory AND t14.siteid = t1.siteid",
  103. "itemclassname");
  104. querySQL.addJoinTable(JOINTYPE.left, "sa_customscheme", "t15", "t15.sa_customschemeid = t1.sa_customschemeid AND t15.siteid = t1.siteid",
  105. "schemename");
  106. querySQL.setWhere("t1.siteid", siteid);
  107. querySQL.addJoinTable(JOINTYPE.left, "sys_datafunction_bind", "t16", "t16.ownerid=t1.itemid and t16.ownertable='plm_item'",
  108. "sys_datafunction_bindid");
  109. //创建人写死admin
  110. querySQL.setWhere("t16.sys_datafunctionid", sys_datafunctionid);
  111. querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting).setTableAlias("t1");
  112. Rows rows = querySQL.query();
  113. return getSucReturnObject().setData(rows).toString();
  114. }
  115. // @API(title = "定制费用方案-参数列表", apiversion = R.ID20231212111202.v1.class)
  116. // public String queryParam() throws YosException {
  117. // Long sys_datafunctionid = content.getLongValue("sys_datafunctionid");
  118. // QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_datafunction",
  119. // "sys_datafunctionid", "functionname", "remarks", "createdate","status");
  120. // querySQL.addQueryFields("createby", "\'admin\'");
  121. // querySQL.setWhere("t1.sys_datafunctionid", sys_datafunctionid);
  122. // querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting).setTableAlias("t1");
  123. // Rows rows = querySQL.query();
  124. // if(rows.isEmpty()){
  125. // return getSucReturnObject().setData(new Row()).toString();
  126. // }
  127. // Row detail=rows.get(0);
  128. //
  129. // Rows paramRows = dbConnect.runSqlQuery("SELECT * from sys_datafunction_params WHERE issystem=1 and sys_datafunctionid=" + sys_datafunctionid);
  130. // detail.put("param",paramRows);
  131. // return getSucReturnObject().setData(detail).toString();
  132. // }
  133. @API(title = "定制费用方案-删除绑定商品", apiversion = R.ID20231208134102.v1.class)
  134. public String delete() throws YosException {
  135. JSONArray sys_datafunction_bindids = content.getJSONArray("sys_datafunction_bindids");
  136. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sys_datafunction_bind");
  137. deleteSQL.setWhere("sys_datafunction_bindid", sys_datafunction_bindids.toArray());
  138. deleteSQL.delete();
  139. return getSucReturnObject().toString();
  140. }
  141. // @API(title = "商品定制费用方案详情", apiversion = R.ID20231208134202.v1.class)
  142. // public String list() throws YosException {
  143. // Long ownerid = content.getLongValue("ownerid");
  144. // String ownertable = content.getStringValue("ownertable");
  145. // QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_datafunction_bind");
  146. // querySQL.addJoinTable(JOINTYPE.left, "sys_datafunction", "t2", "t2.sys_datafunctionid=t1.sys_datafunctionid"
  147. // , "functionname", "remarks", "isused", "createdate");
  148. // querySQL.setWhere("t1.ownerid", ownerid);
  149. // querySQL.setWhere("t1.ownertable", ownertable);
  150. // querySQL.setWhere("t1.sys_datafunctionid in (SELECT sys_datafunctionid from sys_datafunction_params WHERE param='siteid' and value='" + siteid + "')");
  151. // querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting).setTableAlias("t1");
  152. // Rows rows = querySQL.query();
  153. //
  154. // Row detailRow = new Row();
  155. // if (rows.isEmpty()) {
  156. // return getSucReturnObject().setData(detailRow).toString();
  157. //
  158. // }
  159. // detailRow = rows.get(0);
  160. // Long sys_datafunctionid = detailRow.getLong("sys_datafunctionid");
  161. //
  162. // Rows paramRows = dbConnect.runSqlQuery("SELECT * from sys_datafunction_params WHERE param!='siteid' and sys_datafunctionid=" + sys_datafunctionid);
  163. // detailRow.put("params", paramRows);
  164. //
  165. // return getSucReturnObject().setData(detailRow).toString();
  166. // }
  167. @API(title = "定制费用方案-调整参数值", apiversion = R.ID20231211141802.v1.class)
  168. public String modifyFunctionParams() throws YosException {
  169. JSONArray items = content.getJSONArray("items");
  170. ArrayList<String> sqlList = new ArrayList<>();
  171. for (Object obj : items) {
  172. JSONObject item = (JSONObject) obj;
  173. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sys_datafunction_params");
  174. updateSQL.setUniqueid(item.getLongValue("sys_datafunction_paramsid"));
  175. updateSQL.setValue("value", item.getStringValue("value"));
  176. sqlList.add(updateSQL.getSQL());
  177. }
  178. dbConnect.runSqlUpdate(sqlList);
  179. return getSucReturnObject().toString();
  180. }
  181. @API(title = "定制费用方案-是否启用", apiversion = R.ID2023121221131702.v1.class)
  182. public String isDatafunctionEnable() throws YosException {
  183. ArrayList<String> sqlList = new ArrayList<>();
  184. Long sys_datafunctionid = content.getLongValue("sys_datafunctionid");
  185. Long status = content.getLongValue("status");
  186. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sys_datafunction");
  187. updateSQL.setUniqueid(sys_datafunctionid);
  188. updateSQL.setValue("status", status == 1 ? "启用" : "禁用");
  189. sqlList.add(updateSQL.getSQL());
  190. if (status == 1) {
  191. sqlList.add(DataContrlLog.createLog(this, "sys_datafunction", sys_datafunctionid, "启用", "启用成功").getSQL());
  192. } else {
  193. sqlList.add(DataContrlLog.createLog(this, "sys_datafunction", sys_datafunctionid, "禁用", "启用成功").getSQL());
  194. }
  195. dbConnect.runSqlUpdate(sqlList);
  196. return getSucReturnObject().toString();
  197. }
  198. @API(title = "新增或修改方案", apiversion = R.ID20231225141902.v1.class)
  199. public String insertormodifyFunction() throws YosException {
  200. long sys_datafunctionid = content.getLong("sys_datafunctionid");
  201. String classname = content.getString("classname");
  202. String remarks = content.getString("remarks");
  203. if (sys_datafunctionid > 0) {
  204. Rows rows = dbConnect.runSqlQuery("SELECT status from sys_datafunction WHERE sys_datafunctionid=" + sys_datafunctionid);
  205. if (rows.isNotEmpty()) {
  206. if (rows.get(0).getString("status").equals("启用")) {
  207. return getErrReturnObject().setErrMsg("启用状态无法编辑").toString();
  208. }
  209. }
  210. }
  211. HashMap<String, Param> sys_paramMap = new HashMap<>();
  212. if (!classname.equals("")) {
  213. try {
  214. Class<?> clz = Class.forName("function." + classname);
  215. for (Field field : clz.getDeclaredFields()) {
  216. if (field.isAnnotationPresent(Param.class)) {
  217. sys_paramMap.put(field.getName(), field.getAnnotation(Param.class));
  218. }
  219. }
  220. } catch (Exception e) {
  221. return getErrReturnObject().setErrMsg("无效的执行类" + classname).toString();
  222. }
  223. }
  224. if (sys_datafunctionid <= 0 || dbConnect.runSqlQuery("select * from sys_datafunction where sys_datafunctionid=" + sys_datafunctionid).isEmpty()) {
  225. sys_datafunctionid = createTableID("sys_datafunction");
  226. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sys_datafunction");
  227. insertSQL.setValue("sys_datafunctionid", sys_datafunctionid);
  228. insertSQL.setValue("functionname", createBillCode("dfnum"));
  229. insertSQL.setValue("type", "update");
  230. insertSQL.setValue("classname", classname);
  231. insertSQL.setValue("remarks", remarks);
  232. insertSQL.setValue("datakey", "default");
  233. insertSQL.setValue("functionclass", "ordercost");
  234. insertSQL.setValue("status", "禁用");
  235. insertSQL.insert();
  236. DataContrlLog.createLog(this, "sys_datafunction", sys_datafunctionid, "新增", "新增成功").insert();
  237. } else {
  238. UpdateSQL rowUpdate = SQLFactory.createUpdateSQL(this, "sys_datafunction");
  239. rowUpdate.setValue("remarks", remarks);
  240. rowUpdate.setValue("classname", classname);
  241. rowUpdate.setValue("functionclass", "ordercost");
  242. rowUpdate.setWhere("sys_datafunctionid", sys_datafunctionid);
  243. rowUpdate.update();
  244. DataContrlLog.createLog(this, "sys_datafunction", sys_datafunctionid, "编辑", "编辑成功").insert();
  245. }
  246. ArrayList<String> ps = new ArrayList<>();
  247. ArrayList<String> paramSqlList = new ArrayList<>();
  248. //获取执行函数的参数
  249. for (String sys_param : sys_paramMap.keySet()) {
  250. ps.add(sys_param);
  251. Param param = sys_paramMap.get(sys_param);
  252. if (dbConnect.runSqlQuery("select *from sys_datafunction_params where sys_datafunctionid=" + sys_datafunctionid + " and param='" + sys_param + "'").isEmpty()) {
  253. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sys_datafunction_params");
  254. insertSQL.setValue("sys_datafunctionid", sys_datafunctionid);
  255. insertSQL.setValue("param", sys_param);
  256. if (sys_param.equals("siteid")) {
  257. insertSQL.setValue("value", siteid);
  258. }
  259. insertSQL.setValue("paramname", param.paramname());
  260. insertSQL.setValue("remarks", param.remarks());
  261. insertSQL.setValue("sequence", param.sequence());
  262. insertSQL.setValue("issystem", param.issystem());
  263. paramSqlList.add(insertSQL.getSQL());
  264. } else {
  265. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sys_datafunction_params");
  266. updateSQL.setValue("paramname", param.paramname());
  267. updateSQL.setValue("issystem", param.issystem());
  268. updateSQL.setValue("sequence", param.sequence());
  269. updateSQL.setWhere("sys_datafunctionid", sys_datafunctionid).setWhere("param", param).setWhere("ifnull(paramname,'')=''");
  270. paramSqlList.add(updateSQL.getSQL());
  271. }
  272. }
  273. /*
  274. 删除多余的参数
  275. */
  276. DeleteSQL deleteSQL = SQLFactory.createDeleteSQL(this, "sys_datafunction_params");
  277. deleteSQL.setWhere("sys_datafunctionid", sys_datafunctionid);
  278. deleteSQL.setWhere("param not in $params$");
  279. deleteSQL.addParameter("params", ps);
  280. paramSqlList.add(deleteSQL.getSQL());
  281. dbConnect.runSqlUpdate(paramSqlList);
  282. return getSucReturnObject().toString();
  283. }
  284. }