item.java 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263
  1. package restcontroller.crm.agent.item;
  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.annotation.Param;
  8. import common.data.*;
  9. import restcontroller.R;
  10. import java.util.ArrayList;
  11. @API(title = "美大CRM_经销商_商品管理")
  12. public class item extends Controller {
  13. public item(JSONObject content) throws YosException {
  14. super(content);
  15. }
  16. @API(title = "美大CRM_经销商_商品列表查询", type = API.Type.PageQuery, apiversion = R.ID2026031312441901.v1.class)
  17. public String sys_enterprise_item_querylist() throws YosException {
  18. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_enterprise_item").setTableAlias("t1");
  19. querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t2", "t1.unitid=t2.unitid", "unitname");
  20. querySQL.setWhere("sys_enterpriseid", sys_enterpriseid);
  21. querySQL.setSiteid(siteid);
  22. querySQL.setPage(pageSize, pageNumber);
  23. Rows rows = querySQL.query();
  24. return getSucReturnObject().setData(rows).toString();
  25. }
  26. @API(title = "美大CRM_经销商_商品详情查询", type = API.Type.Query, apiversion = R.ID2026031312515001.v1.class, params = {
  27. @Param(paramname = "sys_enterprise_itemid", fieldtype = FieldType.BigInt, remarks = "企业商品ID", isrequired = true)})
  28. public String sys_enterprise_item_querymain() throws YosException {
  29. long sys_enterprise_itemid = content.getLongValue("sys_enterprise_itemid");
  30. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_enterprise_item").setTableAlias("t1");
  31. querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t2", "t1.unitid=t2.unitid", "unitname");
  32. querySQL.setUniqueid(sys_enterprise_itemid);
  33. querySQL.setWhere("sys_enterpriseid", sys_enterpriseid);
  34. querySQL.setSiteid(siteid);
  35. Rows rows = querySQL.query();
  36. return getSucReturnObject().setData(rows).toString();
  37. }
  38. @API(title = "美大CRM_经销商_企业商品添加", apiversion = R.ID2026031313002101.v1.class, params = {
  39. @Param(paramname = "itemids", fieldtype = FieldType.JSON, remarks = "货品档案表ID,[1,2,3]", isrequired = true)})
  40. public String sys_enterprise_item_addfromsite() throws YosException {
  41. JSONArray itemids = content.getJSONArray("itemids");// 货品档案表ID
  42. QuerySQL sys_enterprise_itemQuery = SQLFactory.createQuerySQL(this, "sys_enterprise_item", "itemid");
  43. sys_enterprise_itemQuery.setSiteid(siteid);
  44. sys_enterprise_itemQuery.setWhere("sys_enterpriseid", sys_enterpriseid);
  45. sys_enterprise_itemQuery.setWhere("itemid", itemids);
  46. ArrayList<Long> sys_enterprise_itemids = sys_enterprise_itemQuery.query().toArrayList("itemid", new ArrayList<>());
  47. QuerySQL item_query = SQLFactory.createQuerySQL(this, "plm_item");
  48. item_query.setSiteid(siteid);
  49. item_query.setWhere("itemid", itemids);
  50. RowsMap plm_itemrowsMap = item_query.query().toRowsMap("itemid");
  51. SQLDump sqlDump = new SQLDump();
  52. for (int i = 0; i < itemids.size(); i++) {
  53. long itemid = itemids.getLongValue(i);
  54. if (!sys_enterprise_itemids.contains(itemid) && plm_itemrowsMap.containsKey(String.valueOf(itemid))) {
  55. Row itemrow = plm_itemrowsMap.get(String.valueOf(itemid)).getRow(0);
  56. double packageqty = itemrow.getDouble("packageqty", 1);
  57. double safeqty = itemrow.getDouble("safeqty");
  58. String remarks = itemrow.getString("remarks");
  59. boolean ismodule = itemrow.getBoolean("ismodule");
  60. int warrantyday = itemrow.getInteger("warrantyday");
  61. String barcode = itemrow.getString("barcode");
  62. boolean skucontrol = itemrow.getBoolean("skucontrol");
  63. long grossweight = itemrow.getLong("grossweight");
  64. long weight = itemrow.getLong("weight");
  65. long unitid = itemrow.getLong("unitid");
  66. String itemno = itemrow.getString("itemno");
  67. String color = itemrow.getString("color");
  68. String spec = itemrow.getString("spec");
  69. String model = itemrow.getString("model");
  70. String itemname = itemrow.getString("itemname");
  71. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sys_enterprise_item");
  72. insertSQL.setValue("siteid", siteid);// 站点
  73. insertSQL.setValue("itemid", itemid);// 货品档案表ID
  74. insertSQL.setValue("packing_qty", packageqty);// 包装数量
  75. insertSQL.setValue("safeqty", safeqty);// 安全库存
  76. insertSQL.setValue("remarks", remarks);// 说明
  77. insertSQL.setValue("ismodule", ismodule);// 是否配件
  78. insertSQL.setValue("warrantyday", warrantyday);// 保修期(年)
  79. insertSQL.setValue("barcode", barcode);// 商品条形码
  80. insertSQL.setValue("skucontrol", skucontrol);// 是否单品管理
  81. insertSQL.setValue("grossweight", grossweight);// 毛重(g)
  82. insertSQL.setValue("weight", weight);// 净重(g)
  83. insertSQL.setValue("unitid", unitid);// 计量单位
  84. insertSQL.setValue("itemno", itemno);// 产品编号
  85. insertSQL.setValue("prodtype", 1);// 商品类型
  86. insertSQL.setValue("color", color);// 颜色
  87. insertSQL.setValue("spec", spec);// 尺寸
  88. insertSQL.setValue("model", model);// 型号
  89. insertSQL.setValue("itemname", itemname);// 产品名称
  90. insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);// 合作企业档案ID
  91. sqlDump.add(insertSQL);
  92. }
  93. }
  94. sqlDump.commit();
  95. return getSucReturnObject().toString();
  96. }
  97. @API(title = "美大CRM_经销商_自定义商品新增修改", apiversion = R.ID2026031312463301.v1.class, params = {
  98. @Param(paramname = "sys_enterprise_itemid", fieldtype = FieldType.BigInt, remarks = "企业商品ID", isrequired = true),
  99. @Param(paramname = "packing_qty", fieldtype = FieldType.Decimal, remarks = "包装数量", isrequired = true),
  100. @Param(paramname = "safeqty", fieldtype = FieldType.Decimal, remarks = "安全库存", isrequired = true),
  101. @Param(paramname = "remarks", fieldtype = FieldType.Varchar, remarks = "说明", isrequired = true),
  102. @Param(paramname = "ismodule", fieldtype = FieldType.Smallint, remarks = "是否配件", isrequired = true),
  103. @Param(paramname = "isabstract", fieldtype = FieldType.Smallint, remarks = "服务商品/虚拟商品", isrequired = true),
  104. @Param(paramname = "warrantyday", fieldtype = FieldType.Int, remarks = "保修期(年)", isrequired = true),
  105. @Param(paramname = "barcode", fieldtype = FieldType.Varchar, remarks = "商品条形码", isrequired = true),
  106. @Param(paramname = "guid_price_cus", fieldtype = FieldType.Decimal, remarks = "指导价(站点自定义)", isrequired = true),
  107. @Param(paramname = "grossweight", fieldtype = FieldType.BigInt, remarks = "毛重(g)", isrequired = true),
  108. @Param(paramname = "weight", fieldtype = FieldType.BigInt, remarks = "净重(g)", isrequired = true),
  109. @Param(paramname = "unitid", fieldtype = FieldType.BigInt, remarks = "计量单位", isrequired = true),
  110. @Param(paramname = "itemno_cus", fieldtype = FieldType.Varchar, remarks = "站点商品编码", isrequired = true),
  111. @Param(paramname = "color", fieldtype = FieldType.Varchar, remarks = "颜色", isrequired = true),
  112. @Param(paramname = "spec", fieldtype = FieldType.Varchar, remarks = "尺寸", isrequired = true),
  113. @Param(paramname = "model", fieldtype = FieldType.Varchar, remarks = "型号", isrequired = true),
  114. @Param(paramname = "itemname", fieldtype = FieldType.Varchar, remarks = "产品名称", isrequired = true)})
  115. public String sys_enterprise_item_save() throws YosException {
  116. long sys_enterprise_itemid = content.getLongValue("sys_enterprise_itemid");
  117. double packing_qty = content.getDoubleValue("packing_qty");// 包装数量
  118. double safeqty = content.getDoubleValue("safeqty");// 安全库存
  119. String remarks = content.getStringValue("remarks");// 说明
  120. boolean ismodule = content.getBooleanValue("ismodule");// 是否配件
  121. boolean isabstract = content.getBooleanValue("isabstract");// 服务商品/虚拟商品
  122. long warrantyday = content.getLongValue("warrantyday");// 保修期(年)
  123. String barcode = content.getStringValue("barcode");// 商品条形码
  124. double guid_price_cus = content.getDoubleValue("guid_price_cus");// 指导价(站点自定义)
  125. long grossweight = content.getLongValue("grossweight");// 毛重(g)
  126. long weight = content.getLongValue("weight");// 净重(g)
  127. long unitid = content.getLongValue("unitid");// 计量单位
  128. String itemno_cus = content.getString("itemno_cus");// 站点商品编码
  129. String color = content.getStringValue("color");// 颜色
  130. String spec = content.getStringValue("spec");// 尺寸
  131. String model = content.getStringValue("model");// 型号
  132. String itemname = content.getStringValue("itemname");// 产品名称
  133. Rows sys_enterprise_itemRows = SQLFactory.createQuerySQL(this, "sys_enterprise_item", "sys_enterprise_itemid").setSiteid(siteid).setUniqueid(sys_enterprise_itemid).query();
  134. SQLDump sqldump = new SQLDump();
  135. if (sys_enterprise_itemid == 0 || sys_enterprise_itemRows.isEmpty()) {
  136. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_enterprise_item").setWhere("itemno_cus", itemno_cus).setSiteid(siteid).setWhere("sys_enterpriseid", sys_enterpriseid);
  137. if (querySQL.query().isNotEmpty()) {
  138. return getErrReturnObject().setErrMsg("商品编码" + itemno_cus + "已存在").toString();
  139. }
  140. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sys_enterprise_item");
  141. insertSQL.setValue("siteid", siteid);// 站点
  142. insertSQL.setValue("packing_qty", packing_qty);// 包装数量
  143. insertSQL.setValue("safeqty", safeqty);// 安全库存
  144. insertSQL.setValue("remarks", remarks);// 说明
  145. insertSQL.setValue("ismodule", ismodule);// 是否配件
  146. insertSQL.setValue("isabstract", isabstract);// 服务商品/虚拟商品
  147. insertSQL.setValue("warrantyday", warrantyday);// 保修期(年)
  148. insertSQL.setValue("barcode", barcode);// 商品条形码
  149. insertSQL.setValue("guid_price_cus", guid_price_cus);// 指导价(站点自定义)
  150. insertSQL.setValue("grossweight", grossweight);// 毛重(g)
  151. insertSQL.setValue("weight", weight);// 净重(g)
  152. insertSQL.setValue("unitid", unitid);// 单位名称
  153. insertSQL.setValue("itemno_cus", itemno_cus);// 站点商品编码
  154. insertSQL.setValue("itemno", userInfo.getAgentRow().getString("agentnum") + itemno_cus);// 产品编号
  155. insertSQL.setValue("prodtype", 2);// 商品类型
  156. insertSQL.setValue("color", color);// 颜色
  157. insertSQL.setValue("spec", spec);// 尺寸
  158. insertSQL.setValue("model", model);// 型号
  159. insertSQL.setValue("itemname", itemname);// 产品名称
  160. insertSQL.setValue("sys_enterpriseid", sys_enterpriseid);// 合作企业档案ID
  161. sqldump.add(insertSQL);
  162. } else {
  163. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sys_enterprise_item");
  164. int prodtype = sys_enterprise_itemRows.get(0).getInteger("prodtype");
  165. if (prodtype == 2) {
  166. updateSQL.setValue("packing_qty", packing_qty);// 包装数量
  167. updateSQL.setValue("remarks", remarks);// 说明
  168. updateSQL.setValue("ismodule", ismodule);// 是否配件Å
  169. updateSQL.setValue("isabstract", isabstract);// 服务商品/虚拟商品
  170. updateSQL.setValue("warrantyday", warrantyday);// 保修期(年)
  171. updateSQL.setValue("barcode", barcode);// 商品条形码
  172. updateSQL.setValue("grossweight", grossweight);// 毛重(g)
  173. updateSQL.setValue("weight", weight);// 净重(g)
  174. updateSQL.setValue("unitid", unitid);// 单位名称
  175. updateSQL.setValue("color", color);// 颜色
  176. updateSQL.setValue("spec", spec);// 尺寸
  177. updateSQL.setValue("model", model);// 型号
  178. updateSQL.setValue("itemname", itemname);// 产品名称
  179. }
  180. updateSQL.setValue("safeqty", safeqty);// 安全库存
  181. updateSQL.setValue("guid_price_cus", guid_price_cus);// 指导价(站点自定义)
  182. updateSQL.setSiteid(siteid);
  183. updateSQL.setUniqueid(sys_enterprise_itemid);
  184. sqldump.add(updateSQL);
  185. }
  186. sqldump.commit();
  187. return getSucReturnObject().toString();
  188. }
  189. @API(title = "美大CRM_经销商_商品上下架", apiversion = R.ID2026031315384901.v1.class, params = {
  190. @Param(paramname = "sys_enterprise_itemids", fieldtype = FieldType.JSON, remarks = "企业商品ID,[1,2,3]", isrequired = true),
  191. @Param(paramname = "isonsale", fieldtype = FieldType.Smallint, remarks = "是否上架", isrequired = true)})
  192. public String sys_enterprise_item_onsale() throws YosException {
  193. JSONArray sys_enterprise_itemids = content.getJSONArray("sys_enterprise_itemids");
  194. boolean isonsale = content.getBooleanValue("isonsale");
  195. UpdateSQL querySQL = SQLFactory.createUpdateSQL(this, "sys_enterprise_item");
  196. querySQL.setSiteid(siteid);
  197. querySQL.setValue("isonsale", isonsale);
  198. querySQL.setWhere("sys_enterprise_itemid", sys_enterprise_itemids);
  199. querySQL.update();
  200. return getSucReturnObject().toString();
  201. }
  202. @API(title = "美大CRM_经销商_商品删除", apiversion = R.ID2026031712364501.v1.class, params = {
  203. @Param(paramname = "sys_enterprise_itemids", fieldtype = FieldType.JSON, remarks = "企业商品ID,[1,2,3]", isrequired = true)})
  204. public String sys_enterprise_item_delete() throws YosException {
  205. JSONArray sys_enterprise_itemids = content.getJSONArray("sys_enterprise_itemids");
  206. for (int i = 0; i < sys_enterprise_itemids.size(); i++) {
  207. long sys_enterprise_itemid = sys_enterprise_itemids.getLongValue(i);
  208. Rows enterprise_itemRows = SQLFactory.createQuerySQL(this, "sys_enterprise_item").setWhere("isonsale", true).setUniqueid(sys_enterprise_itemid).query();
  209. if (enterprise_itemRows.isNotEmpty()) {
  210. return getErrReturnObject().setErrMsg("商品" + enterprise_itemRows.getRow(0).getString("itemname") + "已上架,请先下架").toString();
  211. }
  212. Rows custorderitemsRows = SQLFactory.createQuerySQL(this, "sa_custorderitems").setWhere("sys_enterprise_itemid", sys_enterprise_itemid).setPage(1, 1).query();
  213. if (custorderitemsRows.isNotEmpty()) {
  214. return getErrReturnObject().setErrMsg("商品" + enterprise_itemRows.getRow(0).getString("itemname") + "已存在订单,无法删除").toString();
  215. }
  216. QuerySQL usecheck = SQLFactory.createQuerySQL(this, "sys_enterprise_item").setTableAlias("t1");
  217. usecheck.setSiteid(siteid);
  218. usecheck.setWhere("sys_enterprise_itemid", sys_enterprise_itemid);
  219. usecheck.setWhere("exists(select distinct sys_enterprise_itemid from sys_enterprise_invbal t2 where t1.sys_enterprise_itemid=t2.sys_enterprise_itemid)" +
  220. "or exists(select distinct sys_enterprise_itemid from sa_custorderitems t3 where t1.sys_enterprise_itemid=t3.sys_enterprise_itemid)" +
  221. "or exists(select distinct sys_enterprise_itemid from sys_enterprise_stockbill_items t4 where t1.sys_enterprise_itemid=t4.sys_enterprise_itemid)");
  222. if (!usecheck.query().isEmpty()) {
  223. return getErrReturnObject().setErrMsg("该商品已被使用,不可删除!").toString();
  224. }
  225. SQLFactory.createDeleteSQL(this, "sys_enterprise_item").setSiteid(siteid).setWhere("sys_enterprise_itemid", sys_enterprise_itemid).delete();
  226. }
  227. return getSucReturnObject().toString();
  228. }
  229. @API(title = "美大CRM_经销商_商品选择总部商品", type = API.Type.PageQuery, apiversion = R.ID2026033013211201.v1.class)
  230. public String item_selectlist() throws YosException {
  231. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "plm_item").setTableAlias("t1");
  232. querySQL.addQueryFields("itemid", "itemno", "itemname", "model", "spec", "isonsale", "topclassnum", "packageqty");
  233. querySQL.setSiteid(siteid);
  234. querySQL.setPage(pageSize, pageNumber);
  235. querySQL.setWhere("status", "审核");
  236. querySQL.setWhere("not exists(select itemid from sys_enterprise_item t2 where siteid='" + siteid + "' and sys_enterpriseid=" + sys_enterpriseid + " and t1.itemid=t2.itemid)");
  237. Rows rows = querySQL.query();
  238. return getSucReturnObject().setData(rows).toString();
  239. }
  240. }