Item.java 80 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450
  1. package restcontroller.webmanage.sale.item;
  2. import beans.brand.Brand;
  3. import beans.datacontrllog.DataContrlLog;
  4. import beans.invbal.Invbal;
  5. import beans.itemclass.ItemClass;
  6. import beans.itemgroup.Itemgroup;
  7. import beans.parameter.Parameter;
  8. import com.alibaba.fastjson.JSONArray;
  9. import com.alibaba.fastjson.JSONObject;
  10. import common.Controller;
  11. import common.YosException;
  12. import common.annotation.API;
  13. import common.annotation.CACHEING;
  14. import common.annotation.CACHEING_CLEAN;
  15. import common.data.*;
  16. import org.apache.commons.lang.StringUtils;
  17. import org.apache.poi.ss.usermodel.CellStyle;
  18. import org.apache.poi.ss.usermodel.DataFormat;
  19. import org.apache.poi.xssf.usermodel.*;
  20. import restcontroller.R;
  21. import restcontroller.webmanage.sale.itemgroup.itemgroup;
  22. import utility.ERPDocking;
  23. import utility.tools.WebRequest;
  24. import java.io.IOException;
  25. import java.math.BigDecimal;
  26. import java.util.ArrayList;
  27. import java.util.HashMap;
  28. @API(title = "货品档案管理")
  29. public class Item extends Controller {
  30. /**
  31. * 构造函数
  32. *
  33. * @param content
  34. */
  35. public Item(JSONObject content) throws YosException {
  36. super(content);
  37. }
  38. @API(title = "货品档案新增", apiversion = R.ID20220923141502.v1.class, intervaltime = 200)
  39. @CACHEING_CLEAN(apiversions = {R.ID20220923140602.class})
  40. public String insertOrUpdate() throws YosException {
  41. Long itemid = content.getLong("itemid");
  42. String itemno = content.getString("itemno");
  43. boolean isauxunit = content.getBoolean("isauxunit");
  44. ArrayList<String> sqlList = new ArrayList<>();
  45. Long plm_itemextendid = content.getLongValue("plm_itemextendid");
  46. SQLFactory sqlFactory = new SQLFactory(this, "货品档案新增");
  47. if (itemid <= 0) {
  48. itemid = createTableID("plm_item");
  49. sqlList.add(DataContrlLog.createLog(this, "plm_item", itemid, "新增", "新增商品" + content.getString("itemname")).getSQL());
  50. } else {
  51. if (dbConnect.runSqlQuery("SELECT 1 from plm_item WHERE itemid=" + itemid + " and siteid ='" + siteid + "'")
  52. .isEmpty()) {
  53. return getErrReturnObject().setErrMsg("数据不存在").toString();
  54. }
  55. Rows itemRows = dbConnect.runSqlQuery("SELECT t1.*,t2.material from plm_item t1 left join plm_itemextend t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid WHERE t1.itemid=" + itemid + " and t1.siteid ='" + siteid + "'");
  56. sqlFactory = new SQLFactory(this, "货品档案更新");
  57. sqlList.add(DataContrlLog.createLog(this, "plm_item", itemid, "编辑", "编辑商品" + content.getString("itemname")).getSQL());
  58. if (content.getLongValue("sa_customschemeid") > 0) {
  59. Rows customschemeRows = dbConnect.runSqlQuery("SELECT t1.*,t2.schemename from sa_customscheme_items t1 left join sa_customscheme t2 on t1.sa_customschemeid=t2.sa_customschemeid and t1.siteid=t2.siteid WHERE t1.sa_customschemeid=" + content.getLongValue("sa_customschemeid") + " and t1.siteid ='" + siteid + "'");
  60. String where = " and 1=1 and t1.itemid != " + itemid + " and sa_customschemeid=" + content.getLongValue("sa_customschemeid");
  61. if (!customschemeRows.isEmpty()) {
  62. for (Row row : customschemeRows) {
  63. if (StringUtils.isBlank(itemRows.get(0).getString(row.getString("value"))) && StringUtils.isBlank(content.getStringValue(row.getString("value")))) {
  64. return getErrReturnObject().setErrMsg("该商品定制方案" + row.getString("schemename") + "下" + row.getString("description") + "不可为空").toString();
  65. } else if (StringUtils.isBlank(itemRows.get(0).getString(row.getString("value"))) || StringUtils.isBlank(content.getStringValue(row.getString("value")))) {
  66. //System.out.println(1111);
  67. // System.out.println(StringUtils.isBlank(itemRows.get(0).getString(row.getString("value"))));
  68. where = where + " and " + row.getString("value") + "='" + (StringUtils.isBlank(itemRows.get(0).getString(row.getString("value"))) ? content.getStringValue(row.getString("value")) : itemRows.get(0).getString(row.getString("value"))) + "'";
  69. } else if (StringUtils.isNotBlank(itemRows.get(0).getString(row.getString("value"))) && StringUtils.isNotBlank(content.getStringValue(row.getString("value"))))
  70. where = where + " and " + row.getString("value") + "='" + content.getStringValue(row.getString("value")) + "'";
  71. }
  72. //System.out.println("select * from plm_item where siteid='" + siteid + "'" + where);
  73. Rows items = dbConnect.runSqlQuery("select t1.*,t2.material from plm_item t1 left join plm_itemextend t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid where t1.siteid='" + siteid + "'" + where);
  74. if (items.isNotEmpty()) {
  75. return getErrReturnObject().setErrMsg("该商品与定制方案下的" + items.get(0).getString("itemno") + "商品重复,请修改").toString();
  76. }
  77. }
  78. }
  79. if (content.getLongValue("sa_customschemeid") != itemRows.get(0).getLong("sa_customschemeid")) {
  80. Rows rowsCount = dbConnect.runSqlQuery("select count(1) count,min(groupnum) groupnum from (select ifnull(t3.sa_customschemeid,0) count,t1.sa_itemgroupid,t1.groupnum,t1.siteid from sa_itemgroup t1 inner join sa_itemgroupmx t2 on t1.siteid=t2.siteid and t1.sa_itemgroupid=t2.sa_itemgroupid inner join plm_item t3 on t2.itemid=t3.itemid and t2.siteid=t3.siteid group by t1.sa_itemgroupid,t1.groupnum,t1.siteid,ifnull(t3.sa_customschemeid,0))t where t.siteid='" + siteid + "' and t.sa_itemgroupid in (select sa_itemgroupid from sa_itemgroupmx where itemid=" + itemid + ")");
  81. if (rowsCount.get(0).getLong("count") > 0) {
  82. return getErrReturnObject().setErrMsg("该商品存在与商品组" + rowsCount.get(0).getString("groupnum") + ",请在商品组删除该商品后进行保存").toString();
  83. }
  84. }
  85. }
  86. if (content.getBooleanValue("iscustomsize")) {
  87. if (!siteid.equalsIgnoreCase("DLB")) {
  88. if (content.getLongValue("widthschemeid") <= 0 || content.getLongValue("lengthschemeid") <= 0) {
  89. return getErrReturnObject().setErrMsg("定制商品长度定制方案及宽度定制方案必选").toString();
  90. }
  91. }
  92. }
  93. sqlFactory.addParameter("siteid", siteid);
  94. sqlFactory.addParameter("itemid", itemid);
  95. sqlFactory.addParameter("username", username);
  96. sqlFactory.addParameter("userid", userid);
  97. sqlFactory.addParameter("itemno", itemno);
  98. sqlFactory.addParameter("unitid", content.getLongValue("unitid"));
  99. sqlFactory.addParameter("isauxunit", isauxunit);
  100. sqlFactory.addParameter("unitgroupid", isauxunit ? content.getString("unitgroupid") : "null");
  101. sqlFactory.addParameter("itemname", content.getString("itemname"));
  102. sqlFactory.addParameter("isonsale", 0);
  103. sqlFactory.addParameter("model", content.getString("model"));
  104. sqlFactory.addParameter("spec", content.getString("spec"));
  105. // 订单起订量
  106. if (content.getBigDecimalValue("orderminqty").compareTo(BigDecimal.ZERO) <= 0) {
  107. return getErrReturnObject().setErrMsg("起订量必须大于零").toString();
  108. }
  109. if (content.getBigDecimalValue("orderaddqty").compareTo(BigDecimal.ZERO) <= 0) {
  110. return getErrReturnObject().setErrMsg("增量必须大于零").toString();
  111. }
  112. sqlFactory.addParameter("orderminqty", content.getBigDecimalValue("orderminqty"));
  113. // 订单增量
  114. sqlFactory.addParameter("orderaddqty", content.getBigDecimalValue("orderaddqty"));
  115. // 订单起订量控制单位(0:主单位;1:辅助单位)
  116. sqlFactory.addParameter("orderminqty_auxunit", content.getString("orderminqty_auxunit"));
  117. // 订单增量控制单位(0:主单位;1:辅助单位)
  118. sqlFactory.addParameter("orderaddqty_auxunit", content.getString("orderaddqty_auxunit"));
  119. // 说明
  120. sqlFactory.addParameter("remarks", content.getStringValue("remarks"));
  121. // 商品条形码
  122. sqlFactory.addParameter("barcode", content.getStringValue("barcode"));
  123. // 是否单品管理
  124. sqlFactory.addParameter("skucontrol", content.getBooleanValue("skucontrol"));
  125. // 是否批次管理
  126. sqlFactory.addParameter("batchcontrol", content.getBooleanValue("batchcontrol"));
  127. // 毛重(g)
  128. sqlFactory.addParameter("grossweight", content.getLongValue("grossweight"));
  129. // 净重(g)
  130. sqlFactory.addParameter("weight", content.getLongValue("weight"));
  131. // 高度(mm)
  132. sqlFactory.addParameter("height", content.getLongValue("height"));
  133. // 宽度(mm)
  134. sqlFactory.addParameter("width", content.getLongValue("width"));
  135. // 长度(mm)
  136. sqlFactory.addParameter("length", content.getLongValue("length"));
  137. // 交期
  138. sqlFactory.addParameter("delivery", content.getLongValue("delivery"));
  139. // 牌价
  140. sqlFactory.addParameter("marketprice", content.getBigDecimalValue("marketprice"));
  141. // 是否工具
  142. sqlFactory.addParameter("istool", content.getBooleanValue("istool"));
  143. // 产品标准
  144. sqlFactory.addParameter("standards", content.getStringValue("standards"));
  145. // 库存缺货标准
  146. sqlFactory.addParameter("stockstatus2", content.getIntValue("stockstatus2"));
  147. // 库存充足标准
  148. sqlFactory.addParameter("stockstatus1", content.getIntValue("stockstatus1"));
  149. // 保修期(年)
  150. sqlFactory.addParameter("warrantyday", content.getIntValue("warrantyday"));
  151. // 是否营销物料
  152. sqlFactory.addParameter("iswuliao", content.getBooleanValue("iswuliao"));
  153. // 是否服务物料
  154. sqlFactory.addParameter("isservice", content.getBooleanValue("isservice"));
  155. sqlFactory.addParameter("marketingcategory", content.getStringValue("marketingcategory"));
  156. sqlFactory.addParameter("color", content.getStringValue("color"));
  157. //边框(德莱宝中为工艺)
  158. sqlFactory.addParameter("cheek", content.getStringValue("cheek"));
  159. sqlFactory.addParameter("delistingstatus", content.getStringValue("delistingstatus"));
  160. sqlFactory.addParameter("ismodule", content.getStringValue("ismodule"));
  161. sqlFactory.addParameter("packageqty", content.getStringValue("packageqty"));
  162. sqlFactory.addParameter("iswoodproducts", content.getStringValue("iswoodproducts"));
  163. sqlFactory.addParameter("sa_customschemeid", content.getLongValue("sa_customschemeid"));
  164. sqlFactory.addParameter("financeclasstype", content.getStringValue("financeclasstype"));
  165. sqlFactory.addParameter("stockno", content.getStringValue("stockno"));
  166. sqlFactory.addParameter("volume", content.getBigDecimalValue("volume"));
  167. sqlFactory.addParameter("iscustomsize", content.getBooleanValue("iscustomsize"));
  168. sqlFactory.addParameter("customprice", content.getBigDecimalValue("customprice"));
  169. sqlFactory.addParameter("widthschemeid", content.getBigDecimalValue("widthschemeid"));
  170. sqlFactory.addParameter("lengthschemeid", content.getBigDecimalValue("lengthschemeid"));
  171. Long pricingmetod = content.getLongValue("pricingmetod");
  172. sqlFactory.addParameter("pricingmetod", pricingmetod == 0 ? 1 : pricingmetod);
  173. //德莱宝,工艺定义方案id
  174. sqlFactory.addParameter("cheekschemeid", content.getBigDecimalValue("cheekschemeid"));
  175. //德莱宝,颜色定义方案id
  176. sqlFactory.addParameter("colorschemeid", content.getBigDecimalValue("colorschemeid"));
  177. //德莱宝,选项定义方案id
  178. sqlFactory.addParameter("materialschemeid", content.getBigDecimalValue("materialschemeid"));
  179. sqlList.add(sqlFactory.getSQL());
  180. // 货品档案扩展属性字段表
  181. sqlFactory = new SQLFactory(this, "货品档案-扩展新增");
  182. if (plm_itemextendid <= 0) {
  183. plm_itemextendid = createTableID("plm_itemextend");
  184. } else {
  185. sqlFactory = new SQLFactory(this, "货品档案-扩展更新");
  186. }
  187. sqlFactory.addParameter("siteid", siteid);
  188. sqlFactory.addParameter("userid", userid);
  189. sqlFactory.addParameter("username", username);
  190. sqlFactory.addParameter("plm_itemextendid", plm_itemextendid);
  191. sqlFactory.addParameter("itemid", itemid);
  192. //基材(德莱宝中为选项)
  193. sqlFactory.addParameter("material", content.getStringValue("material"));
  194. sqlFactory.addParameter("pressure", content.getStringValue("pressure"));
  195. sqlFactory.addParameter("caliber", content.getStringValue("caliber"));
  196. sqlFactory.addParameter("butterflyplatedrive", content.getStringValue("butterflyplatedrive"));
  197. sqlFactory.addParameter("connection", content.getStringValue("connection"));
  198. sqlFactory.addParameter("valveplatematerial", content.getStringValue("valveplatematerial"));
  199. sqlFactory.addParameter("bodymaterial", content.getStringValue("bodymaterial"));
  200. sqlFactory.addParameter("actuatortype", content.getStringValue("actuatortype"));
  201. sqlFactory.addParameter("actuatorbrand", content.getStringValue("actuatorbrand"));
  202. sqlFactory.addParameter("isbutterfly", content.getBooleanValue("isbutterfly"));
  203. sqlFactory.addParameter("erpitemno", content.getStringValue("erpitemno"));
  204. sqlFactory.addParameter("erpitemname", content.getStringValue("erpitemname"));
  205. String specalnote = content.getStringValue("specalnote");
  206. if (pricingmetod == 1 && !specalnote.contains("此商品单价为平方价")) {
  207. specalnote = "此商品单价为平方价;" + specalnote;
  208. }
  209. if (pricingmetod == 0 && specalnote.contains("此商品单价为平方价")) {
  210. specalnote = specalnote.replace("此商品单价为平方价;", "");
  211. }
  212. sqlFactory.addParameter("specalnote", specalnote);
  213. sqlFactory.addParameter("prodline", content.getStringValue("prodline"));
  214. sqlFactory.addParameter("device", content.getStringValue("device"));
  215. sqlList.add(sqlFactory.getSQL());
  216. // 添加领域
  217. if (content.containsKey("tradefields")) {
  218. JSONArray tradefields = content.getJSONArray("tradefields");
  219. if (!tradefields.isEmpty()) {
  220. if (tradefields.size() > 1) {
  221. return getErrReturnObject().setErrMsg("商品只能维护一个领域").toString();
  222. }
  223. sqlList.add("delete from plm_item_tradefield where itemid =" + itemid + " and siteid='" + siteid + "'");
  224. for (Object obj : tradefields) {
  225. String tradefield = (String) obj;
  226. sqlFactory = new SQLFactory(this, "新增领域");
  227. sqlFactory.addParameter("siteid", siteid);
  228. sqlFactory.addParameter("plm_item_tradefieldid", createTableID("plm_item_tradefield"));
  229. sqlFactory.addParameter("tradefield", tradefield);
  230. sqlFactory.addParameter("userid", userid);
  231. sqlFactory.addParameter("itemid", itemid);
  232. sqlList.add(sqlFactory.getSQL());
  233. }
  234. // if (tradefields.size() > 0) {
  235. // sqlFactory = new SQLFactory(this, "删除多余的领域");
  236. // sqlFactory.addParameter("siteid", siteid);
  237. // sqlFactory.addParameter_in("tradefield", tradefields.toArray());
  238. // sqlFactory.addParameter("userid", userid);
  239. // sqlFactory.addParameter("itemid", itemid);
  240. // sqlList.add(sqlFactory.getSQL());
  241. // }
  242. }
  243. }
  244. if (content.containsKey("itemclassids")) {
  245. JSONArray itemclassids = content.getJSONArray("itemclassids");
  246. if (!itemclassids.isEmpty()) {
  247. if (itemclassids.size() > 1) {
  248. return getErrReturnObject().setErrMsg("商品只能维护一个营销类别").toString();
  249. }
  250. sqlList.add("delete from sa_itemsaleclass where itemid =" + itemid + " and siteid='" + siteid + "'");
  251. for (Object obj : itemclassids) {
  252. int itemclassid = (int) obj;
  253. sqlFactory = new SQLFactory(this, "商品营销类别新增");
  254. sqlFactory.addParameter("sa_itemsaleclassid", createTableID("sa_itemsaleclass"));
  255. sqlFactory.addParameter("siteid", siteid);
  256. sqlFactory.addParameter("itemid", itemid);
  257. sqlFactory.addParameter("itemno", itemno);
  258. sqlFactory.addParameter("itemclassid", itemclassid);
  259. sqlList.add(sqlFactory.getSQL());
  260. }
  261. }
  262. // sqlFactory = new SQLFactory(this, "商品营销类别删除");
  263. // sqlFactory.addParameter("sa_itemsaleclassid", createTableID("sa_itemsaleclass"));
  264. // sqlFactory.addParameter("siteid", siteid);
  265. // sqlFactory.addParameter("itemid", itemid);
  266. // sqlFactory.addParameter("itemno", itemno);
  267. // sqlFactory.addParameter_in("itemclassid", itemclassids.toArray());
  268. sqlList.add(sqlFactory.getSQL());
  269. }
  270. dbConnect.runSqlUpdate(sqlList);
  271. content.put("itemid", itemid);
  272. return queryDetail();
  273. }
  274. @API(title = "货品档案详情", apiversion = R.ID20220923155302.v1.class)
  275. public String queryDetail() throws YosException {
  276. Long itemid = content.getLong("itemid");
  277. ArrayList<Long> itemids = new ArrayList<>();
  278. itemids.add(itemid);
  279. //查询erp库存
  280. Invbal.selectErpInvbal(this, itemid);
  281. SQLFactory sqlFactory = new SQLFactory(this, "货品档案详情");
  282. sqlFactory.addParameter("siteid", siteid);
  283. sqlFactory.addParameter("itemid", itemid);
  284. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL(false));
  285. // 默认商品图片
  286. Rows defaultImageRows = getAttachmentUrl("system", (long) 1, "defaultImage");
  287. // 品牌
  288. RowsMap brandRowsMap = Brand.getBrandRowsMap(this, itemids);
  289. // 营销类别
  290. RowsMap itemClassRowsMap = ItemClass.getAllItemClassRowsMap(this, itemids);
  291. // 附件
  292. RowsMap attRowsMap = getAttachmentUrl("plm_item", itemids);
  293. // 商品领域
  294. RowsMap tradefieldRowsMap = beans.Item.Item.getTradefieldRowsMap(this, itemids);
  295. ERPDocking erpDocking = new ERPDocking(siteid);
  296. JSONArray jsonArray = new JSONArray();
  297. if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true")) {
  298. if (!rows.toJsonArray("itemno").isEmpty()) {
  299. jsonArray = erpDocking.getErpIcinvbalRows(200000, 1, rows.toJsonArray("itemno"));
  300. }
  301. }
  302. if (!jsonArray.isEmpty()) {
  303. for (Object object : jsonArray) {
  304. JSONObject jsonObject = (JSONObject) object;
  305. if (!rows.isEmpty()) {
  306. if (rows.get(0).getString("itemno").equals(jsonObject.getString("fitemno"))) {
  307. rows.get(0).put("invbal_qty", jsonObject.getBigDecimalValue("fqty"));
  308. }
  309. }
  310. }
  311. }
  312. JSONObject object = new JSONObject();
  313. object.put("classname", "getIcinvbal");
  314. object.put("method", "getMsg");
  315. JSONObject content = new JSONObject();
  316. content.put("fitemnos", rows.toJsonArray("itemno"));
  317. object.put("content", content);
  318. WebRequest request = new WebRequest();
  319. String result = "";
  320. // String result = request.doPost(object.toString(),
  321. // "http://60.190.151.198:8089/BYESB/jaxrs/webclientrest");
  322. for (Row row : rows) {
  323. JSONArray jsonArrayResult = new JSONArray();
  324. if (isJSONArray(result)) {
  325. jsonArrayResult = JSONArray.parseArray(result);
  326. }
  327. if (!jsonArrayResult.isEmpty()) {
  328. row.put("invbal_qty", ((JSONObject) jsonArrayResult.get(0)).getBigDecimal("fqty"));
  329. } else {
  330. row.put("invbal_qty", 0);
  331. }
  332. if (attRowsMap.getOrDefault(row.getString("itemid"), new Rows()).isEmpty()) {
  333. row.put("attinfos", defaultImageRows);
  334. } else {
  335. row.put("attinfos", attRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  336. }
  337. row.put("brand", brandRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  338. row.put("itemclass", itemClassRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  339. row.put("tradefield", tradefieldRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  340. }
  341. return getSucReturnObject().setData(rows.isNotEmpty() ? rows.get(0) : new Row()).toString();
  342. }
  343. @API(title = "货品档案库存查询", apiversion = R.ID20230913154803.v1.class)
  344. public String queryInvbalQty() throws YosException {
  345. Long itemid = content.getLong("itemid");
  346. Rows rows = dbConnect.runSqlQuery("select itemno from plm_item where siteid='" + siteid + "' and itemid=" + itemid);
  347. if (siteid.equalsIgnoreCase("lsa")) {
  348. JSONObject object = new JSONObject();
  349. object.put("classname", "getIcinvbal");
  350. object.put("method", "getMsg");
  351. JSONObject content = new JSONObject();
  352. content.put("fitemnos", rows.toJsonArray("itemno"));
  353. object.put("content", content);
  354. WebRequest request = new WebRequest();
  355. String result = request.doPost(object.toString(),
  356. "http://60.190.151.198:8089/BYESB/jaxrs/webclientrest");
  357. for (Row row : rows) {
  358. JSONArray jsonArrayResult = new JSONArray();
  359. if (isJSONArray(result)) {
  360. jsonArrayResult = JSONArray.parseArray(result);
  361. }
  362. if (!jsonArrayResult.isEmpty()) {
  363. row.put("invbal_qty", ((JSONObject) jsonArrayResult.get(0)).getBigDecimal("FQty"));
  364. } else {
  365. row.put("invbal_qty", 0);
  366. }
  367. }
  368. } else {
  369. ERPDocking erpDocking = new ERPDocking(siteid);
  370. JSONArray jsonArray = new JSONArray();
  371. if (Parameter.get("system.ccerp_dockswitch").equalsIgnoreCase("true")) {
  372. if (!rows.toJsonArray("itemno").isEmpty()) {
  373. jsonArray = erpDocking.getErpIcinvbalRows(200000, 1, rows.toJsonArray("itemno"));
  374. }
  375. }
  376. if (!jsonArray.isEmpty()) {
  377. for (Object object : jsonArray) {
  378. JSONObject jsonObject = (JSONObject) object;
  379. if (!rows.isEmpty()) {
  380. if (rows.get(0).getString("itemno").equals(jsonObject.getString("fitemno"))) {
  381. rows.get(0).put("invbal_qty", jsonObject.getBigDecimalValue("fqty"));
  382. }
  383. }
  384. }
  385. }
  386. }
  387. return getSucReturnObject().setData(rows.isNotEmpty() ? rows.get(0) : new Row()).toString();
  388. }
  389. @API(title = "货品档案列表", apiversion = R.ID20220923140602.v1.class)
  390. @CACHEING
  391. public String queryList() throws YosException, IOException {
  392. StringBuffer where = new StringBuffer(" 1=1 ");
  393. boolean isExport = content.getBooleanValue("isExport");
  394. if (content.containsKey("where")) {
  395. JSONObject whereObject = content.getJSONObject("where");
  396. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  397. where.append(" and(");
  398. where.append("t1.itemno like'%").append(whereObject.getString("condition")).append("%' ");
  399. where.append("or t1.itemname like'%").append(whereObject.getString("condition")).append("%' ");
  400. where.append("or t1.model like'%").append(whereObject.getString("condition")).append("%' ");
  401. where.append("or t1.spec like'%").append(whereObject.getString("condition")).append("%' ");
  402. where.append("or t1.standards like'%").append(whereObject.getString("condition")).append("%' ");
  403. where.append("or t1.color like'%").append(whereObject.getString("condition")).append("%' ");
  404. where.append("or t8.erpitemname like'%").append(whereObject.getString("condition")).append("%' ");
  405. where.append("or t8.erpitemno like'%").append(whereObject.getString("condition")).append("%' ");
  406. where.append(")");
  407. }
  408. if (whereObject.containsKey("isonsale") && !"".equals(whereObject.getString("isonsale"))) {
  409. where.append(" and(");
  410. where.append("t1.isonsale ='").append(whereObject.getString("isonsale")).append("' ");
  411. where.append(")");
  412. }
  413. if (whereObject.containsKey("isservice") && !"".equals(whereObject.getString("isservice"))) {
  414. where.append(" and(");
  415. where.append("t1.isservice ='").append(whereObject.getString("isservice")).append("' ");
  416. where.append(")");
  417. }
  418. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  419. where.append(" and(");
  420. where.append("t1.status ='").append(whereObject.getString("status")).append("' ");
  421. where.append(")");
  422. }
  423. if (whereObject.containsKey("isonsalebutnotingroup") && !"".equals(whereObject.getString("isonsalebutnotingroup"))) {
  424. if (whereObject.getBooleanValue("isonsalebutnotingroup")) {
  425. where.append(" and(");
  426. where.append("t1.isonsale =1 and t1.itemid not in (select t1.itemid from sa_itemgroupmx t1 inner join sa_itemgroup t2 on t1.sa_itemgroupid=t2.sa_itemgroupid and t1.siteid=t2.siteid where t2.isonsale=1 )");
  427. where.append(")");
  428. }
  429. }
  430. if (whereObject.containsKey("hasprice") && !"".equals(whereObject.getString("hasprice"))) {
  431. if (whereObject.getBooleanValue("hasprice")) {
  432. where.append(" and(");
  433. where.append(" exists(select * from sa_itemprice where sa_itemprice.siteid=t1.siteid and sa_itemprice.itemid=t1.itemid and price>0)");
  434. where.append(")");
  435. }
  436. }
  437. if (whereObject.containsKey("itemclassid") && !"".equals(whereObject.getString("itemclassid"))) {
  438. ArrayList<Long> list = ItemClass.getSubItemClassIds(this, whereObject.getLong("itemclassid"));
  439. list.add(whereObject.getLong("itemclassid"));
  440. String sql = " and t1.itemid in ( SELECT itemid from sa_itemsaleclass WHERE itemclassid IN " + list + " and siteid='" + siteid + "')";
  441. sql = sql.replace("[", "(").replace("]", ")");
  442. where.append(sql);
  443. }
  444. if (whereObject.containsKey("tradefield") && !whereObject.getString("tradefield").isEmpty()) {
  445. where.append(" and exists(");
  446. where.append(" select 1 from plm_item_tradefield t3 where t3.siteid=t1.siteid and t3.itemid=t1.itemid and t3.tradefield='").append(whereObject.getString("tradefield")).append("' ");
  447. where.append(")");
  448. }
  449. if (whereObject.containsKey("itemclass") && !whereObject.getString("itemclass").isEmpty()) {
  450. String itemclass = whereObject.getString("itemclass");
  451. where.append(" and t1.itemid in (");
  452. where.append(" SELECT t1.itemid FROM sa_itemsaleclass t1 INNER JOIN plm_itemclass t2 ON t2.itemclassid=t1.itemclassid AND t2.siteid=t1.siteid WHERE t2.itemclassname LIKE '%" + itemclass + "%' ");
  453. where.append(")");
  454. }
  455. }
  456. // SQLFactory sqlFactory = new SQLFactory(this, "货品档案列表", pageSize, pageNumber, pageSorting);
  457. // sqlFactory.addParameter("siteid", siteid);
  458. // sqlFactory.addParameter_SQL("where", where);
  459. // System.out.println(sqlFactory.getSQL());
  460. // Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  461. QuerySQL querySQL = queryList(where.toString());
  462. querySQL.setOrderBy(pageSorting);
  463. querySQL.setPage(pageSize, pageNumber);
  464. Rows rows = querySQL.query();
  465. // 默认商品图片
  466. Rows defaultImageRows = getAttachmentUrl("system", (long) 1, "defaultImage");
  467. // 附件
  468. ArrayList<Long> ids = rows.toArrayList("itemid", new ArrayList<>());
  469. RowsMap attRowsMapCover = getAttachmentUrl("plm_item", ids, "cover");
  470. RowsMap attRowsMap = getAttachmentUrl("plm_item", ids);
  471. // 商品领域
  472. RowsMap tradefieldRowsMap = beans.Item.Item.getTradefieldRowsMap(this, ids);
  473. // 商品品牌
  474. RowsMap brandRowsMap = Brand.getBrandRowsMap(this, ids);
  475. RowsMap itemclassRowsMap = ItemClass.getAllItemClassRowsMap(this, ids);
  476. for (Row row : rows) {
  477. if (attRowsMapCover.getOrDefault(row.getString("itemid"), new Rows()).isNotEmpty()) {
  478. row.put("attinfos", attRowsMapCover.getOrDefault(row.getString("itemid"), new Rows()));
  479. } else if (attRowsMap.getOrDefault(row.getString("itemid"), new Rows()).isNotEmpty()) {
  480. row.put("attinfos", attRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  481. } else {
  482. row.put("attinfos", defaultImageRows);
  483. }
  484. String[] tradefield = tradefieldRowsMap.getOrDefault(row.getString("itemid"), new Rows()).toArray("tradefield");
  485. row.put("tradefield", StringUtils.join(tradefield, ","));
  486. row.put("brand", brandRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  487. String[] itemclass = itemclassRowsMap.getOrDefault(row.getString("itemid"), new Rows()).toArray("itemclassname");
  488. row.put("itemclass", StringUtils.join(itemclass, ","));
  489. }
  490. return getSucReturnObject().setData(rows).toString();
  491. }
  492. //返回导出的标题
  493. public HashMap<String, String> getTitleMap() {
  494. HashMap<String, String> titleMap = new HashMap<>();
  495. titleMap.put("itemno", "产品编号");
  496. titleMap.put("itemname", "产品名称");
  497. titleMap.put("isonsale", "上/下架");
  498. titleMap.put("tradefield", "领域");
  499. titleMap.put("packageqty", "包装数量");
  500. titleMap.put("itemclass", "营销类别");
  501. titleMap.put("unitname", "单位");
  502. titleMap.put("orderminqty", "起订量");
  503. titleMap.put("orderaddqty", "增量");
  504. titleMap.put("model", "型号");
  505. titleMap.put("spec", "规格");
  506. titleMap.put("color", "颜色");
  507. return titleMap;
  508. }
  509. public QuerySQL queryList(String where) throws YosException {
  510. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "plm_item");
  511. querySQL.setTableAlias("t1");
  512. querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t2", "t2.unitid = t1.unitid AND t2.siteid = t1.siteid",
  513. "unitname");
  514. querySQL.addJoinTable(JOINTYPE.left, "plm_unitgroup", "t6", "t6.unitgroupid = t1.unitgroupid",
  515. "auxunitid", "unitgroupname");
  516. querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t7", "t7.unitid = t6.unitid AND t7.siteid = t6.siteid");
  517. querySQL.addQueryFields("axunitname", "t7.unitname");
  518. querySQL.addJoinTable(JOINTYPE.left, "plm_itemextend", "t8", "t8.itemid = t1.itemid AND t8.siteid = t1.siteid",
  519. "caliber", "pressure", "material", "butterflyplatedrive", "connection", "valveplatematerial", "bodymaterial", "actuatortype",
  520. "actuatorbrand", "isbutterfly", "erpitemno", "erpitemname", "specalnote", "prodline", "device");
  521. querySQL.addJoinTable(JOINTYPE.left, "sa_sizecustomizedscheme", "t4", "t1.widthschemeid=t4.sa_sizecustomizedschemeid and t1.siteid=t4.siteid");
  522. querySQL.addQueryFields("widthschemename", "t4.schemename ");
  523. querySQL.addJoinTable(JOINTYPE.left, "sa_sizecustomizedscheme", "t5", "t1.lengthschemeid=t5.sa_sizecustomizedschemeid and t1.siteid=t5.siteid");
  524. querySQL.addQueryFields("lengthschemename", "t5.schemename ");
  525. querySQL.addJoinTable(JOINTYPE.left, "sa_itemprice", "t9", "t9.itemid = t1.itemid AND t9.siteid = t1.siteid and t9.pricegrade=1");
  526. querySQL.addQueryFields("price1", "t9.price ");
  527. querySQL.addJoinTable(JOINTYPE.left, "sa_itemprice", "t10", "t10.itemid = t1.itemid AND t10.siteid = t1.siteid and t10.pricegrade=2");
  528. querySQL.addQueryFields("price2", "t10.price ");
  529. querySQL.addJoinTable(JOINTYPE.left, "sa_itemprice", "t11", "t11.itemid = t1.itemid AND t11.siteid = t1.siteid and t11.pricegrade=3");
  530. querySQL.addQueryFields("price3", "t11.price ");
  531. querySQL.addJoinTable(JOINTYPE.left, "sa_itemprice", "t12", "t12.itemid = t1.itemid AND t12.siteid = t1.siteid and t12.pricegrade=4");
  532. querySQL.addQueryFields("price4", "t12.price ");
  533. querySQL.addJoinTable(JOINTYPE.left, "sa_itemprice", "t13", "t13.itemid = t1.itemid AND t13.siteid = t1.siteid and t13.pricegrade=5");
  534. querySQL.addQueryFields("price5", "t13.price ");
  535. querySQL.addJoinTable(JOINTYPE.left, "plm_itemclass", "t14", "t14.itemclassid = t1.marketingcategory AND t14.siteid = t1.siteid",
  536. "itemclassname");
  537. querySQL.addJoinTable(JOINTYPE.left, "sa_customscheme", "t15", "t15.sa_customschemeid = t1.sa_customschemeid AND t15.siteid = t1.siteid",
  538. "schemename");
  539. querySQL.setWhere("t1.siteid", siteid);
  540. querySQL.setWhere(where);
  541. return querySQL;
  542. }
  543. @API(title = "货品档案删除", apiversion = R.ID20220923152202.v1.class)
  544. @CACHEING_CLEAN(apiversions = {R.ID20220923140602.v1.class})
  545. public String delete() throws YosException {
  546. JSONArray jsonArray = content.getJSONArray("itemids");
  547. String sql = " SELECT 1 from plm_item WHERE itemid in " + jsonArray + " and `status` ='审核' and siteid ='"
  548. + siteid + "'";
  549. sql = sql.replace("[", "(").replace("]", ")");
  550. if (dbConnect.runSqlQuery(sql).isNotEmpty()) {
  551. return getErrReturnObject().setErrMsg("存在已审核的数据,无法删除。").toString();
  552. }
  553. SQLFactory sqlFactory = new SQLFactory(this, "货品档案删除");
  554. sqlFactory.addParameter_in("itemid", jsonArray.toArray());
  555. sqlFactory.addParameter("siteid", siteid);
  556. dbConnect.runSqlUpdate(sqlFactory);
  557. return getSucReturnObject().toString();
  558. }
  559. @API(title = "货品档案审核", apiversion = R.ID20220923153902.v1.class)
  560. @CACHEING_CLEAN(apiversions = {R.ID20220923140602.v1.class})
  561. public String audit() throws YosException {
  562. JSONArray jsonArray = content.getJSONArray("itemids");
  563. String status = content.getString("status");
  564. Rows itemRows = new Rows();
  565. Rows itemclassRows = new Rows();
  566. if (!jsonArray.isEmpty()) {
  567. itemRows = dbConnect.runSqlQuery("SELECT t1.*,t2.material from plm_item t1 left join plm_itemextend t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid where t1.siteid='" + siteid + "' and t1.itemid in" + jsonArray.toJSONString().replace("[", "(").replace("]", ")"));
  568. itemclassRows = dbConnect.runSqlQuery("select itemid,itemclassid from sa_itemsaleclass where siteid='" + siteid + "' and itemid in" + jsonArray.toJSONString().replace("[", "(").replace("]", ")"));
  569. } else {
  570. return getErrReturnObject().setErrMsg("未选择商品,无法审核").toString();
  571. }
  572. RowsMap itemRowsMap = itemRows.toRowsMap("itemid");
  573. RowsMap itemclassRowsMap = itemclassRows.toRowsMap("itemid");
  574. ArrayList<String> sqlList = new ArrayList<>();
  575. for (Object obj : jsonArray) {
  576. int id = (int) obj;
  577. //审核
  578. if (status.equals("1")) {
  579. if (dbConnect.runSqlQuery("SELECT 1 from sa_itemsaleclass WHERE itemid=" + id + " and siteid='" + siteid + "'").isEmpty()) {
  580. return getErrReturnObject().setErrMsg("审核失败,请先维护营销分类").toString();
  581. }
  582. }
  583. if (status.equals("1")) {
  584. Rows tradefields = dbConnect.runSqlQuery("SELECT * from plm_item_tradefield WHERE itemid=" + id + " and siteid='" + siteid + "'");
  585. if (tradefields.isEmpty()) {
  586. return getErrReturnObject().setErrMsg("领域栏位未维护,请维护完整后再试!").toString();
  587. }
  588. Row item = dbConnect.runSqlQuery(0, "SELECT * from plm_item WHERE itemid=" + id + " and siteid='" + siteid + "'");
  589. Long sa_customschemeid = item.getLong("sa_customschemeid");
  590. RowsMap customschemeItemsRowsMap = dbConnect.runSqlQuery("SELECT * from sa_customscheme_items WHERE sa_customschemeid=" + sa_customschemeid + " and siteid='" + siteid + "'").toRowsMap("value");
  591. if (customschemeItemsRowsMap.containsKey("spec")) {
  592. String description = customschemeItemsRowsMap.get("spec").get(0).getString("description");
  593. String spec = item.getString("spec");
  594. if (StringUtils.isBlank(spec)) {
  595. return getErrReturnObject().setErrMsg(description + "栏位未维护,请维护完整后再试!").toString();
  596. }
  597. if (spec.equals("custom") && item.getBoolean("iscustomsize")) {
  598. if (item.getLong("lengthschemeid") == 0) {
  599. return getErrReturnObject().setErrMsg("长栏位未维护,请维护完整后再试!").toString();
  600. }
  601. if (item.getLong("widthschemeid") == 0) {
  602. return getErrReturnObject().setErrMsg("宽栏位未维护,请维护完整后再试!").toString();
  603. }
  604. }
  605. }
  606. if (customschemeItemsRowsMap.containsKey("material")) {
  607. String description = customschemeItemsRowsMap.get("material").get(0).getString("description");
  608. Rows itemextends = dbConnect.runSqlQuery("SELECT * from plm_itemextend WHERE itemid=" + id + " and siteid='" + siteid + "'");
  609. String material = itemextends.get(0).getString("material");
  610. if (itemextends.isEmpty()) {
  611. return getErrReturnObject().setErrMsg(description + "栏位未维护,请维护完整后再试!").toString();
  612. }
  613. if (itemextends.isNotEmpty() && StringUtils.isBlank(material)) {
  614. return getErrReturnObject().setErrMsg(description + "栏位未维护,请维护完整后再试!").toString();
  615. }
  616. if (material.equals("custom") && item.getBoolean("iscustomsize")) {
  617. if (item.getLong("materialschemeid") == 0) {
  618. return getErrReturnObject().setErrMsg(description + "栏位未维护,请维护完整后再试!").toString();
  619. }
  620. }
  621. }
  622. if (customschemeItemsRowsMap.containsKey("cheek")) {
  623. String description = customschemeItemsRowsMap.get("cheek").get(0).getString("description");
  624. String cheek = item.getString("cheek");
  625. if (StringUtils.isBlank(cheek)) {
  626. return getErrReturnObject().setErrMsg(description + "栏位未维护,请维护完整后再试!").toString();
  627. }
  628. if (cheek.equals("custom") && item.getBoolean("iscustomsize")) {
  629. if (item.getLong("cheekschemeid") == 0) {
  630. return getErrReturnObject().setErrMsg(description + "栏位未维护,请维护完整后再试!").toString();
  631. }
  632. }
  633. }
  634. if (customschemeItemsRowsMap.containsKey("color")) {
  635. String description = customschemeItemsRowsMap.get("color").get(0).getString("description");
  636. String color = item.getString("color");
  637. if (StringUtils.isBlank(color)) {
  638. return getErrReturnObject().setErrMsg(description + "栏位未维护,请维护完整后再试!").toString();
  639. }
  640. if (color.equals("custom") && item.getBoolean("iscustomsize")) {
  641. if (item.getLong("colorschemeid") == 0) {
  642. return getErrReturnObject().setErrMsg(description + "栏位未维护,请维护完整后再试!").toString();
  643. }
  644. }
  645. }
  646. }
  647. SQLFactory sqlFactory = new SQLFactory(this, "货品档案审核");
  648. sqlFactory.addParameter("itemid", id);
  649. sqlFactory.addParameter("siteid", siteid);
  650. sqlFactory.addParameter("username", username);
  651. sqlFactory.addParameter("status", status.equals("0") ? "新建" : "审核");
  652. if (itemRowsMap.containsKey(String.valueOf(id)) && status.equals("1")) {
  653. if (!itemRowsMap.get(String.valueOf(id)).isEmpty()) {
  654. if (itemRowsMap.get(String.valueOf(id)).get(0).getLong("sa_customschemeid") > 0) {
  655. Rows customschemeRows = dbConnect.runSqlQuery("SELECT t1.*,t2.schemename from sa_customscheme_items t1 left join sa_customscheme t2 on t1.sa_customschemeid=t2.sa_customschemeid and t1.siteid=t2.siteid WHERE t1.sa_customschemeid=" + itemRowsMap.get(String.valueOf(id)).get(0).getLong("sa_customschemeid") + " and t1.siteid ='" + siteid + "'");
  656. String where = " and 1=1 and t1.itemid != " + id + " and sa_customschemeid=" + itemRowsMap.get(String.valueOf(id)).get(0).getLong("sa_customschemeid");
  657. if (!customschemeRows.isEmpty()) {
  658. for (Row row : customschemeRows) {
  659. if (StringUtils.isBlank(itemRowsMap.get(String.valueOf(id)).get(0).getString(row.getString("value")))) {
  660. return getErrReturnObject().setErrMsg("该商品【" + itemRowsMap.get(String.valueOf(id)).get(0).getString("itemname") + "】定制方案" + row.getString("schemename") + "下" + row.getString("description") + "不可为空").toString();
  661. } else {
  662. where = where + " and " + row.getString("value") + "='" + itemRowsMap.get(String.valueOf(id)).get(0).getString(row.getString("value")) + "'";
  663. }
  664. }
  665. //System.out.println("select * from plm_item where siteid='" + siteid + "'" + where);
  666. Rows items = dbConnect.runSqlQuery("select t1.*,t2.material from plm_item t1 left join plm_itemextend t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid where t1.siteid='" + siteid + "'" + where);
  667. if (items.isNotEmpty()) {
  668. return getErrReturnObject().setErrMsg("该商品与定制方案下的" + items.get(0).getString("itemno") + "商品重复,请修改").toString();
  669. }
  670. }
  671. }
  672. }
  673. }
  674. if (itemclassRowsMap.containsKey(String.valueOf(id))) {
  675. if (itemclassRowsMap.get(String.valueOf(id)).isNotEmpty()) {
  676. SQLFactory sqlFactory1 = new SQLFactory(this, "获取最上级营销类别名称");
  677. sqlFactory1.addParameter_in("itemclassid", itemclassRowsMap.get(String.valueOf(id)).get(0).getLong("itemclassid"));
  678. sqlFactory1.addParameter("siteid", siteid);
  679. Rows rows = dbConnect.runSqlQuery(sqlFactory1.getSQL());
  680. if (rows.isNotEmpty()) {
  681. sqlList.add("update plm_item set marketingcategory='" + rows.get(0).getString("itemclassid") + "' where siteid='" + siteid + "' and itemid=" + id);
  682. }
  683. }
  684. }
  685. if (status.equals("0")) {
  686. if (itemRowsMap.containsKey(String.valueOf(id))) {
  687. if (!itemRowsMap.get(String.valueOf(id)).isEmpty()) {
  688. if (itemRowsMap.get(String.valueOf(id)).get(0).getBoolean("isonsale")) {
  689. return getErrReturnObject().setErrMsg("上架状态无法反审核").toString();
  690. }
  691. }
  692. }
  693. sqlList.add(DataContrlLog.createLog(this, "plm_item", id, "反审核", "反审核失败").getSQL());
  694. } else {
  695. sqlList.add(DataContrlLog.createLog(this, "plm_item", id, "审核", "审核成功").getSQL());
  696. }
  697. sqlList.add(sqlFactory.getSQL());
  698. }
  699. dbConnect.runSqlUpdate(sqlList);
  700. return getSucReturnObject().toString();
  701. }
  702. @API(title = "货品档案上架", apiversion = R.ID20220923154802.v1.class)
  703. @CACHEING_CLEAN(apiversions = {R.ID20220923140602.v1.class}, apiClass = {itemgroup.class, restcontroller.sale.itemgroup.itemgroup.class})
  704. public String onsale() throws YosException {
  705. JSONArray jsonArray = content.getJSONArray("itemids");
  706. String isonsale = content.getString("isonsale");
  707. if (jsonArray.size() == 0) {
  708. return getErrReturnObject().setErrMsg("未选择商品").toString();
  709. }
  710. if (isonsale.equals("1")) {
  711. SQLFactory isHas = new SQLFactory(this, "查询是否存在新建货品");
  712. isHas.addParameter_in("itemid", jsonArray.toArray());
  713. isHas.addParameter("siteid", siteid);
  714. Rows hasRows = dbConnect.runSqlQuery(isHas.getSQL(false));
  715. SQLFactory isHasOnSale = new SQLFactory(this, "查询是否存在上架货品");
  716. isHasOnSale.addParameter_in("itemid", jsonArray.toArray());
  717. isHasOnSale.addParameter("siteid", siteid);
  718. Rows hasOnSaleRows = dbConnect.runSqlQuery(isHasOnSale.getSQL(false));
  719. if (hasRows.isNotEmpty()) {
  720. return getErrReturnObject().setErrMsg("存在未审核的货品,无法上架!").toString();
  721. }
  722. if (hasOnSaleRows.isNotEmpty()) {
  723. return getErrReturnObject().setErrMsg("存在已上架的货品,无法上架!").toString();
  724. }
  725. //System.out.println("select * from sa_itemsaleclass where siteid='" + siteid + "' and itemid in " + jsonArray.toArray());
  726. String sql = "select * from sa_itemsaleclass where siteid='" + siteid + "' and itemid in " + jsonArray.toJSONString();
  727. sql = sql.replace("[", "(").replace("]", ")");
  728. Rows itemsaleclassRows = dbConnect.runSqlQuery(sql);
  729. if (itemsaleclassRows.isEmpty()) {
  730. return getErrReturnObject().setErrMsg("商品未维护营销类别,无法上架!").toString();
  731. }
  732. SQLFactory isHasPrice = new SQLFactory(this, "查询是否存在未维护价格的商品");
  733. isHasPrice.addParameter_in("itemid", jsonArray.toArray());
  734. isHasPrice.addParameter("siteid", siteid);
  735. Rows hasPriceRows = dbConnect.runSqlQuery(isHasPrice.getSQL(false));
  736. if (hasPriceRows.isNotEmpty()) {
  737. return getErrReturnObject().setErrMsg("存在未维护价格的货品,无法上架!").toString();
  738. }
  739. }
  740. Rows brandRows = dbConnect.runSqlQuery("select sa_brandid from sa_brand where siteid='" + siteid + "'");
  741. long sa_brandid = 0;
  742. if (!brandRows.isEmpty()) {
  743. sa_brandid = brandRows.get(0).getLong("sa_brandid");
  744. }
  745. Rows itemRows = dbConnect.runSqlQuery("select itemid,itemno,itemname,sa_customschemeid,isonsale from plm_item where siteid='" + siteid + "'");
  746. RowsMap itemRowsMap = itemRows.toRowsMap("itemid");
  747. Rows tradefieldRows = dbConnect.runSqlQuery("select itemid,tradefield from plm_item_tradefield where siteid='" + siteid + "'");
  748. RowsMap tradefieldRowsMap = tradefieldRows.toRowsMap("itemid");
  749. ArrayList<String> sqlList = new ArrayList<>();
  750. for (Object obj : jsonArray) {
  751. Long id = Long.valueOf(obj.toString());
  752. SQLFactory sqlFactory = new SQLFactory(this, "货品档案上架");
  753. sqlFactory.addParameter("itemid", id);
  754. sqlFactory.addParameter("siteid", siteid);
  755. sqlFactory.addParameter("username", username);
  756. sqlFactory.addParameter("isonsale", isonsale);
  757. sqlList.add(sqlFactory.getSQL(false));
  758. if (isonsale.equals("1")) {
  759. sqlList.add(DataContrlLog.createLog(this, "plm_item", id, "上架", "上架成功").getSQL());
  760. } else {
  761. sqlList.add(DataContrlLog.createLog(this, "plm_item", id, "下架", "下架成功").getSQL());
  762. }
  763. //审核商品时,自动添加至商品组中
  764. if (itemRowsMap.containsKey(String.valueOf(obj))) {
  765. if (!itemRowsMap.get(String.valueOf(obj)).isEmpty()) {
  766. if (itemRowsMap.get(String.valueOf(obj)).get(0).getLong("sa_customschemeid") != 0) {
  767. if (isonsale.equals("1")) {
  768. Rows rowsCount = dbConnect.runSqlQuery("select count(1) count,min(groupnum) groupnum from (select ifnull(t3.sa_customschemeid,0) count,t1.sa_itemgroupid,t1.groupnum,t1.siteid from sa_itemgroup t1 inner join sa_itemgroupmx t2 on t1.siteid=t2.siteid and t1.sa_itemgroupid=t2.sa_itemgroupid inner join plm_item t3 on t2.itemid=t3.itemid and t2.siteid=t3.siteid group by t1.sa_itemgroupid,t1.groupnum,t1.siteid,ifnull(t3.sa_customschemeid,0))t where t.siteid='" + siteid + "' and t.sa_itemgroupid in (select sa_itemgroupid from sa_itemgroupmx where itemid=" + id + ")");
  769. if (rowsCount.get(0).getLong("count") > 1) {
  770. //return getErrReturnObject().setErrMsg("该商品存在与商品组"+rowsCount.get(0).getString("groupnum")+",请在商品组删除该商品后进行审核").toString();
  771. }
  772. }
  773. } else {
  774. if (isonsale.equals("0")) {
  775. sqlList.add("delete from sa_itemgroup where sa_itemgroupid in(select sa_itemgroupid from sa_itemgroupmx where itemid=" + id + " and siteid='" + siteid + "')");
  776. sqlList.add("delete from sa_itemgroupmx where itemid=" + id + " and siteid='" + siteid + "'");
  777. } else {
  778. sqlList.addAll(Itemgroup.createItemGroupSql(this, id, itemRowsMap.get(String.valueOf(obj)).get(0).getString("itemname"), itemRowsMap.get(String.valueOf(obj)).get(0).getString("itemno"), tradefieldRowsMap.get(String.valueOf(obj)).toJsonArray("tradefield"), sa_brandid));
  779. }
  780. }
  781. } else {
  782. return getErrReturnObject().setErrMsg("商品不存在").toString();
  783. }
  784. }
  785. }
  786. dbConnect.runSqlUpdate(sqlList);
  787. return getSucReturnObject().toString();
  788. }
  789. @API(title = "查询商品组", apiversion = R.ID20221216102302.v1.class)
  790. public String selectItemGroup() throws YosException {
  791. Long itemid = content.getLong("itemid");
  792. StringBuffer where = new StringBuffer(" 1=1 ");
  793. if (content.containsKey("where")) {
  794. JSONObject whereObject = content.getJSONObject("where");
  795. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  796. where.append(" and(");
  797. where.append("t1.groupname like'%").append(whereObject.getString("condition")).append("%' ");
  798. where.append("or t1.brandname like'%").append(whereObject.getString("condition")).append("%' ");
  799. where.append(")");
  800. }
  801. if (whereObject.containsKey("isonsale") && !"".equals(whereObject.getString("isonsale"))) {
  802. where.append(" and(");
  803. where.append("t1.isonsale ='").append(whereObject.getString("isonsale")).append("' ");
  804. where.append(")");
  805. }
  806. }
  807. SQLFactory sqlFactory = new SQLFactory(this, "查询商品组", pageSize, pageNumber, pageSorting);
  808. sqlFactory.addParameter("siteid", siteid);
  809. sqlFactory.addParameter("itemid", itemid);
  810. sqlFactory.addParameter_SQL("where", where);
  811. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  812. return getSucReturnObject().setData(rows).toString();
  813. }
  814. @API(title = "更新标签", apiversion = R.ID2024062609342103.v1.class)
  815. @CACHEING_CLEAN(apiClass = {Item.class, restcontroller.sale.item.Item.class})
  816. public String newApiMethod() throws YosException {
  817. long itemid = content.getLong("itemid");
  818. String delistingstatus = content.getStringValue("delistingstatus");// 退市状态
  819. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "plm_item");
  820. updateSQL.setValue("delistingstatus", delistingstatus);
  821. updateSQL.setSiteid(siteid);
  822. updateSQL.setUniqueid(itemid);
  823. updateSQL.update();
  824. return getSucReturnObject().toString();
  825. }
  826. @API(title = "查询商品资料", apiversion = R.ID20221216105402.v1.class)
  827. public String selectTechnicalinfo() throws YosException {
  828. Long itemid = content.getLong("itemid");
  829. StringBuffer where = new StringBuffer(" 1=1 ");
  830. if (content.containsKey("where")) {
  831. JSONObject whereObject = content.getJSONObject("where");
  832. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  833. where.append(" and(");
  834. where.append("t1.type like'%").append(whereObject.getString("condition")).append("%' ");
  835. where.append("or t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
  836. where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
  837. where.append(")");
  838. }
  839. }
  840. SQLFactory sqlFactory = new SQLFactory(this, "查询产品资料", pageSize, pageNumber, pageSorting);
  841. sqlFactory.addParameter("siteid", siteid);
  842. sqlFactory.addParameter("itemid", itemid);
  843. sqlFactory.addParameter_SQL("where", where);
  844. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  845. ArrayList<Long> ids = rows.toArrayList("plm_technicalinfoid", new ArrayList<>());
  846. // 默认商品图片
  847. Rows defaultImageRows = getAttachmentUrl("system", (long) 1, "defaultImage");
  848. // 封面cover
  849. RowsMap coverRowsMap = getAttachmentUrl("plm_technicalinfo", ids, "cover");
  850. // 附件
  851. RowsMap attRowsMap = getAttachmentUrl("plm_technicalinfo", ids);
  852. for (Row row : rows) {
  853. Rows coverRows = coverRowsMap.get(row.getString("plm_technicalinfoid"));
  854. if (coverRows.isEmpty()) {
  855. if (!defaultImageRows.isEmpty()) {
  856. row.put("cover", defaultImageRows.get(0).getString("url"));
  857. } else {
  858. row.put("cover", "");
  859. }
  860. } else {
  861. row.put("cover", coverRows.get(0).getString("url"));
  862. }
  863. row.put("attinfos", attRowsMap.getOrDefault(row.getString("plm_technicalinfoid"), new Rows()));
  864. }
  865. return getSucReturnObject().setData(rows).toString();
  866. }
  867. @API(title = "查询商品价格", apiversion = R.ID20221216134102.v1.class)
  868. public String selectItemPrice() throws YosException {
  869. Long itemid = content.getLong("itemid");
  870. StringBuffer where = new StringBuffer(" 1=1 ");
  871. if (content.containsKey("where")) {
  872. JSONObject whereObject = content.getJSONObject("where");
  873. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  874. where.append(" and(");
  875. where.append("t1.itemno like'%").append(whereObject.getString("condition")).append("%' ");
  876. where.append("or t1.pricegrade like'%").append(whereObject.getString("condition")).append("%' ");
  877. where.append(")");
  878. }
  879. }
  880. SQLFactory sqlFactory = new SQLFactory(this, "查询商品价格", pageSize, pageNumber, pageSorting);
  881. sqlFactory.addParameter("siteid", siteid);
  882. sqlFactory.addParameter("itemid", itemid);
  883. sqlFactory.addParameter_SQL("where", where);
  884. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  885. return getSucReturnObject().setData(rows).toString();
  886. }
  887. @API(title = "货品档案导入模板", apiversion = R.ID20230311102404.v1.class)
  888. public String downloadExcel() throws YosException {
  889. ExcelFactory excelFactory = new ExcelFactory("货品档案导入模板");
  890. XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet("Sheet1");
  891. XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
  892. CellStyle style = xssfFWorkbook.createCellStyle();
  893. DataFormat format = xssfFWorkbook.createDataFormat();
  894. style.setDataFormat(format.getFormat("@"));
  895. // 对单独某一列进行样式赋值,第一个参数为列数,第二个参数为样式
  896. for (int i = 0; i <= 31; i++) {
  897. sheet.setDefaultColumnStyle(i, style);
  898. }
  899. // 设置工作薄列宽
  900. ExportExcel.setBatchDetailSheetColumn1(sheet);// 设置工作薄列宽
  901. XSSFCellStyle titleCellStyle1 = ExportExcel.createTitleCellStyle1(xssfFWorkbook);
  902. XSSFCellStyle titleCellStyle2 = ExportExcel.createTitleCellStyle2(xssfFWorkbook);
  903. XSSFCellStyle titleCellStyle3 = ExportExcel.createTitleCellStyle3(xssfFWorkbook);
  904. XSSFCellStyle titleCellStyle4 = ExportExcel.createBodyCellStyle4(xssfFWorkbook);
  905. ExportExcel.batchDetail(sheet, titleCellStyle1, titleCellStyle2, titleCellStyle3, titleCellStyle4, xssfFWorkbook);
  906. Rows aa = uploadExcelToObs(excelFactory);
  907. String url = "";
  908. if (!aa.isEmpty()) {
  909. url = aa.get(0).getString("url");
  910. }
  911. return getSucReturnObject().setData(url).toString();
  912. }
  913. @API(title = "货品档案导入", apiversion = R.ID20230311111404.v1.class)
  914. @CACHEING_CLEAN(apiversions = {R.ID20220923140602.class})
  915. public String importItems() throws YosException {
  916. ArrayList<String> sqlList = new ArrayList<>();
  917. ExcelFactory e;
  918. try {
  919. // 华为云
  920. e = getPostExcelFactory(content.getLong("attachmentid"));
  921. // 本地
  922. //e = getPostExcelFactory();
  923. ArrayList<String> keys = new ArrayList<>();
  924. keys.add("itemno");
  925. keys.add("itemname");
  926. keys.add("spec");
  927. keys.add("model");
  928. keys.add("unitname");
  929. keys.add("erpitemname");
  930. keys.add("erpitemno");
  931. keys.add("standards");
  932. keys.add("orderminqty");
  933. keys.add("orderaddqty");
  934. keys.add("material");
  935. keys.add("stockstatus1");
  936. keys.add("stockstatus2");
  937. keys.add("tradefield");
  938. keys.add("delivery");
  939. keys.add("prodline");
  940. keys.add("device");
  941. keys.add("specalnote");
  942. keys.add("isservice");
  943. keys.add("pressure");
  944. keys.add("butterflyplatedrive");
  945. keys.add("connection");
  946. keys.add("valveplatematerial");
  947. keys.add("bodymaterial");
  948. keys.add("actuatortype");
  949. keys.add("actuatorbrand");
  950. keys.add("isbutterfly");
  951. keys.add("brandname");
  952. keys.add("itemclassnum");
  953. Rows rows = e.getSheetRows(0, keys, 3);
  954. boolean iserr = false;
  955. Rows rowserr = new Rows();
  956. Rows rowssuc = new Rows();
  957. RowsMap itemnoRowsMap = dbConnect.runSqlQuery("select itemno from plm_item t1 where siteid='" + siteid + "'").toRowsMap("itemno");
  958. RowsMap unitnameRowsMap = dbConnect.runSqlQuery("select unitid,unitname from plm_unit where siteid='" + siteid + "'").toRowsMap("unitname");
  959. ArrayList<String> tradefieldList = dbConnect.runSqlQuery("select t2.value from sys_optiontype t1 left join sys_optiontypemx t2 on t1.optiontypeid=t2.optiontypeid and t2.siteid='" + siteid + "' where t1.remarks='领域' and t2.isused=1").toArrayList("value");
  960. RowsMap imitemnoRowsMap = rows.toRowsMap("itemno");
  961. Rows itemcalss = dbConnect.runSqlQuery("select t1.sa_brandid,t1.brandname,t2.itemclassid,t2.itemclassnum from sa_brand t1 inner join plm_itemclass t2 on t1.siteid=t2.siteid and t1.sa_brandid=t2.sa_brandid where t1.siteid='" + siteid + "'");
  962. RowsMap itemclassRowsMap = itemcalss.toRowsMap("brandname");
  963. for (Row row : rows) {
  964. String brandname = row.getString("brandname");
  965. String itemclassnum = row.getString("itemclassnum");
  966. String itemno = row.getString("itemno");
  967. String unitname = row.getString("unitname");
  968. try {
  969. row.getBigDecimal("orderminqty");
  970. row.getBigDecimal("orderaddqty");
  971. row.getInteger("stockstatus1");
  972. row.getInteger("stockstatus2");
  973. row.getInteger("delivery");
  974. } catch (Exception e1) {
  975. iserr = true;
  976. row.put("msg", "错误信息:销售起订量/销售增量/库存充足标准/库存缺货标准/销售交期填写格式错误");
  977. rowserr.add(row);
  978. continue;
  979. }
  980. if (StringUtils.isEmpty(itemno)
  981. || StringUtils.isEmpty(row.getString("itemname"))
  982. || StringUtils.isEmpty(unitname)
  983. || StringUtils.isEmpty(row.getString("erpitemname"))
  984. || StringUtils.isEmpty(row.getString("erpitemno"))) {
  985. iserr = true;
  986. row.put("msg", "错误信息:产品编号/产品名称/计量单位/品号/品号不能为空");
  987. rowserr.add(row);
  988. continue;
  989. }
  990. if ((StringUtils.isEmpty(brandname) && StringUtils.isNotEmpty(itemclassnum)) || (StringUtils.isNotEmpty(brandname) && StringUtils.isEmpty(itemclassnum))) {
  991. iserr = true;
  992. row.put("msg", "错误信息:不能单独填写品牌和营销类别");
  993. rowserr.add(row);
  994. continue;
  995. }
  996. if (imitemnoRowsMap.containsKey(itemno) && imitemnoRowsMap.get(itemno).size() > 1) {
  997. iserr = true;
  998. row.put("msg", "错误信息:本次导入商品中存在重复的商品编号");
  999. rowserr.add(row);
  1000. continue;
  1001. }
  1002. if (itemnoRowsMap.containsKey(itemno)) {
  1003. iserr = true;
  1004. row.put("msg", "错误信息:商品编号已存在");
  1005. rowserr.add(row);
  1006. continue;
  1007. }
  1008. if (!unitnameRowsMap.containsKey(unitname)) {
  1009. iserr = true;
  1010. row.put("msg", "错误信息:计量单位不存在");
  1011. rowserr.add(row);
  1012. continue;
  1013. }
  1014. if (!tradefieldList.contains(row.getString("tradefield"))) {
  1015. iserr = true;
  1016. row.put("msg", "错误信息:领域不存在");
  1017. rowserr.add(row);
  1018. continue;
  1019. }
  1020. if (!itemclassRowsMap.containsKey(brandname) || !itemclassRowsMap.get(brandname).toArrayList("itemclassnum").contains(itemclassnum)) {
  1021. iserr = true;
  1022. row.put("msg", "错误信息:品牌不存在或该品牌下没有对应的营销类别");
  1023. rowserr.add(row);
  1024. }
  1025. row.put("unitid", unitnameRowsMap.get(unitname).get(0).getLong("unitid"));
  1026. for (Row row1 : itemclassRowsMap.get(brandname)) {
  1027. if (row1.getString("itemclassnum").equals(itemclassnum)) {
  1028. row.put("sa_brandid", row1.getLong("sa_brandid"));
  1029. row.put("itemclassid", row1.getLong("itemclassid"));
  1030. break;
  1031. }
  1032. }
  1033. rowssuc.add(row);
  1034. }
  1035. if (iserr) {
  1036. ExcelFactory excelFactory = new ExcelFactory("货品档案导入错误信息");
  1037. HashMap<String, String> map = new HashMap<String, String>();
  1038. map.put("itemno", "产品编码");
  1039. map.put("itemname", "产品名称");
  1040. map.put("spec", "型号");
  1041. map.put("model", "规格尺寸");
  1042. map.put("unitname", "计量单位");
  1043. map.put("erpitemname", "品名");
  1044. map.put("erpitemno", "品号");
  1045. map.put("standards", "产品标准");
  1046. map.put("orderminqty", "销售增量");
  1047. map.put("orderaddqty", "销售起订量");
  1048. map.put("material", "材质");
  1049. map.put("stockstatus1", "库存充足标准");
  1050. map.put("stockstatus2", "库存缺货标准");
  1051. map.put("tradefield", "领域");
  1052. map.put("delivery", "销售交期");
  1053. map.put("prodline", "产线");
  1054. map.put("device", "装置");
  1055. map.put("specalnote", "特殊说明");
  1056. map.put("isservice", "是否服务物料");
  1057. map.put("pressure", "压力等级");
  1058. map.put("butterflyplatedrive", "蝶板驱动");
  1059. map.put("connection", "连接形式");
  1060. map.put("valveplatematerial", "阀板材质");
  1061. map.put("bodymaterial", "阀体材质");
  1062. map.put("actuatortype", "执行器类型");
  1063. map.put("actuatorbrand", "执行器品牌");
  1064. map.put("isbutterfly", "是否中线蝶阀");
  1065. map.put("brandname", "品牌");
  1066. map.put("itemclassnum", "营销类别编码");
  1067. map.put("msg", "错误信息");
  1068. ArrayList<String> colNameList = new ArrayList<String>();
  1069. HashMap<String, Class> keytypemap = new HashMap<String, Class>();
  1070. colNameList.add("itemno");
  1071. colNameList.add("itemname");
  1072. colNameList.add("spec");
  1073. colNameList.add("model");
  1074. colNameList.add("unitname");
  1075. colNameList.add("erpitemname");
  1076. colNameList.add("erpitemno");
  1077. colNameList.add("standards");
  1078. colNameList.add("orderminqty");
  1079. colNameList.add("orderaddqty");
  1080. colNameList.add("material");
  1081. colNameList.add("stockstatus1");
  1082. colNameList.add("stockstatus2");
  1083. colNameList.add("tradefield");
  1084. colNameList.add("delivery");
  1085. colNameList.add("prodline");
  1086. colNameList.add("device");
  1087. colNameList.add("specalnote");
  1088. colNameList.add("isservice");
  1089. colNameList.add("pressure");
  1090. colNameList.add("butterflyplatedrive");
  1091. colNameList.add("connection");
  1092. colNameList.add("valveplatematerial");
  1093. colNameList.add("bodymaterial");
  1094. colNameList.add("actuatortype");
  1095. colNameList.add("actuatorbrand");
  1096. colNameList.add("isbutterfly");
  1097. colNameList.add("brandname");
  1098. colNameList.add("itemclassnum");
  1099. colNameList.add("msg");
  1100. keytypemap.put("itemno", String.class);
  1101. keytypemap.put("itemname", String.class);
  1102. keytypemap.put("spec", String.class);
  1103. keytypemap.put("model", String.class);
  1104. keytypemap.put("unitname", String.class);
  1105. keytypemap.put("erpitemname", String.class);
  1106. keytypemap.put("erpitemno", String.class);
  1107. keytypemap.put("standards", String.class);
  1108. keytypemap.put("orderminqty", String.class);
  1109. keytypemap.put("orderaddqty", String.class);
  1110. keytypemap.put("material", String.class);
  1111. keytypemap.put("stockstatus1", String.class);
  1112. keytypemap.put("stockstatus2", String.class);
  1113. keytypemap.put("tradefield", String.class);
  1114. keytypemap.put("delivery", String.class);
  1115. keytypemap.put("prodline", String.class);
  1116. keytypemap.put("device", String.class);
  1117. keytypemap.put("specalnote", String.class);
  1118. keytypemap.put("isservice", String.class);
  1119. keytypemap.put("pressure", String.class);
  1120. keytypemap.put("butterflyplatedrive", String.class);
  1121. keytypemap.put("connection", String.class);
  1122. keytypemap.put("valveplatematerial", String.class);
  1123. keytypemap.put("bodymaterial", String.class);
  1124. keytypemap.put("actuatortype", String.class);
  1125. keytypemap.put("actuatorbrand", String.class);
  1126. keytypemap.put("isbutterfly", String.class);
  1127. keytypemap.put("brandname", String.class);
  1128. keytypemap.put("itemclassnum", String.class);
  1129. keytypemap.put("msg", String.class);
  1130. rowserr.setFieldList(colNameList);
  1131. rowserr.setFieldTypeMap(keytypemap);
  1132. addSheet(excelFactory, "Sheet1", rowserr, map);
  1133. Rows aa = uploadExcelToObs(excelFactory);
  1134. String url = "";
  1135. if (!aa.isEmpty()) {
  1136. url = aa.get(0).getString("url");
  1137. }
  1138. return getSucReturnObject().setData(url).toString();
  1139. }
  1140. if (!rowssuc.isEmpty()) {
  1141. for (Row row : rowssuc) {
  1142. Long itemid = createTableID("plm_item");
  1143. SQLFactory sqlFactory = new SQLFactory(this, "货品档案新增");
  1144. sqlFactory.addParameter("siteid", siteid);
  1145. sqlFactory.addParameter("itemid", itemid);
  1146. sqlFactory.addParameter("username", username);
  1147. sqlFactory.addParameter("userid", userid);
  1148. sqlFactory.addParameter("itemno", row.getString("itemno"));
  1149. sqlFactory.addParameter("unitid", row.getLong("unitid"));
  1150. sqlFactory.addParameter("isauxunit", 0);
  1151. sqlFactory.addParameter("unitgroupid", "null");
  1152. sqlFactory.addParameter("itemname", row.getString("itemname"));
  1153. sqlFactory.addParameter("isonsale", 0);
  1154. sqlFactory.addParameter("model", row.getString("model"));
  1155. sqlFactory.addParameter("spec", row.getString("spec"));
  1156. // 订单起订量
  1157. sqlFactory.addParameter("orderminqty", row.getBigDecimal("orderminqty"));
  1158. // 订单增量
  1159. sqlFactory.addParameter("orderaddqty", row.getBigDecimal("orderaddqty"));
  1160. // 订单起订量控制单位(0:主单位;1:辅助单位)
  1161. sqlFactory.addParameter("orderminqty_auxunit", 0);
  1162. // 订单增量控制单位(0:主单位;1:辅助单位)
  1163. sqlFactory.addParameter("orderaddqty_auxunit", 0);
  1164. // 说明
  1165. sqlFactory.addParameter("remarks", "null");
  1166. // 商品条形码
  1167. sqlFactory.addParameter("barcode", "null");
  1168. // 是否单品管理
  1169. sqlFactory.addParameter("skucontrol", 0);
  1170. // 是否批次管理
  1171. sqlFactory.addParameter("batchcontrol", 0);
  1172. // 毛重(g)
  1173. sqlFactory.addParameter("grossweight", "null");
  1174. // 净重(g)
  1175. sqlFactory.addParameter("weight", "null");
  1176. // 高度(mm)
  1177. sqlFactory.addParameter("height", "null");
  1178. // 宽度(mm)
  1179. sqlFactory.addParameter("width", "null");
  1180. // 长度(mm)
  1181. sqlFactory.addParameter("length", "null");
  1182. // 交期
  1183. sqlFactory.addParameter("delivery", row.getLong("delivery"));
  1184. // 牌价
  1185. sqlFactory.addParameter("marketprice", 0);
  1186. // 是否工具
  1187. sqlFactory.addParameter("istool", 0);
  1188. // 产品标准
  1189. sqlFactory.addParameter("standards", row.getString("standards"));
  1190. // 库存缺货标准
  1191. sqlFactory.addParameter("stockstatus2", row.getInteger("stockstatus2"));
  1192. // 库存充足标准
  1193. sqlFactory.addParameter("stockstatus1", row.getInteger("stockstatus1"));
  1194. // 保修期(年)
  1195. sqlFactory.addParameter("warrantyday", "null");
  1196. // 是否营销物料
  1197. sqlFactory.addParameter("iswuliao", 0);
  1198. // 是否服务物料
  1199. sqlFactory.addParameter("isservice", row.getString("isservice").equals("是") ? 1 : 0);
  1200. sqlList.add(sqlFactory.getSQL());
  1201. // 货品档案扩展属性字段表
  1202. sqlFactory = new SQLFactory(this, "货品档案-扩展新增");
  1203. Long plm_itemextendid = createTableID("plm_itemextend");
  1204. sqlFactory.addParameter("siteid", siteid);
  1205. sqlFactory.addParameter("userid", userid);
  1206. sqlFactory.addParameter("username", username);
  1207. sqlFactory.addParameter("plm_itemextendid", plm_itemextendid);
  1208. sqlFactory.addParameter("itemid", itemid);
  1209. sqlFactory.addParameter("material", row.getString("material"));
  1210. sqlFactory.addParameter("pressure", row.getString("pressure"));
  1211. sqlFactory.addParameter("caliber", "null");
  1212. sqlFactory.addParameter("butterflyplatedrive", row.getString("butterflyplatedrive"));
  1213. sqlFactory.addParameter("connection", row.getString("connection"));
  1214. sqlFactory.addParameter("valveplatematerial", row.getString("valveplatematerial"));
  1215. sqlFactory.addParameter("bodymaterial", row.getString("bodymaterial"));
  1216. sqlFactory.addParameter("actuatortype", row.getString("actuatortype"));
  1217. sqlFactory.addParameter("actuatorbrand", row.getString("actuatorbrand"));
  1218. sqlFactory.addParameter("isbutterfly", row.getString("isbutterfly").equals("是") ? 1 : 0);
  1219. sqlFactory.addParameter("erpitemno", row.getString("erpitemno"));
  1220. sqlFactory.addParameter("erpitemname", row.getString("erpitemname"));
  1221. sqlFactory.addParameter("specalnote", row.getString("specalnote"));
  1222. sqlFactory.addParameter("prodline", row.getString("prodline"));
  1223. sqlFactory.addParameter("device", row.getString("device"));
  1224. sqlList.add(sqlFactory.getSQL());
  1225. Long plm_item_tradefieldid = createTableID("plm_item_tradefield");
  1226. sqlFactory = new SQLFactory(this, "新增领域");
  1227. sqlFactory.addParameter("siteid", siteid);
  1228. sqlFactory.addParameter("plm_item_tradefieldid", plm_item_tradefieldid);
  1229. sqlFactory.addParameter("tradefield", row.getString("tradefield"));
  1230. sqlFactory.addParameter("userid", userid);
  1231. sqlFactory.addParameter("itemid", itemid);
  1232. sqlList.add(sqlFactory.getSQL());
  1233. Long sa_itemsaleclassid = createTableID("sa_itemsaleclass");
  1234. sqlFactory = new SQLFactory(this, "新增营销类别");
  1235. sqlFactory.addParameter("siteid", siteid);
  1236. sqlFactory.addParameter("sa_itemsaleclassid", sa_itemsaleclassid);
  1237. sqlFactory.addParameter("itemclassid", row.getString("itemclassid"));
  1238. sqlFactory.addParameter("itemno", row.getString("itemno"));
  1239. sqlFactory.addParameter("itemid", itemid);
  1240. sqlList.add(sqlFactory.getSQL());
  1241. sqlList.add(DataContrlLog.createLog(this, "plm_item", itemid, "新增", "货品档案导入").getSQL());
  1242. sqlList.add(DataContrlLog.createLog(this, "plm_itemextend", plm_itemextendid, "新增", "货品档案导入").getSQL());
  1243. sqlList.add(DataContrlLog.createLog(this, "plm_item_tradefield", plm_item_tradefieldid, "新增", "货品档案导入").getSQL());
  1244. sqlList.add(DataContrlLog.createLog(this, "sa_itemsaleclass", sa_itemsaleclassid, "新增", "货品档案导入").getSQL());
  1245. }
  1246. }
  1247. if (!sqlList.isEmpty()) {
  1248. dbConnect.runSqlUpdate(sqlList);
  1249. }
  1250. } catch (Exception e1) {
  1251. e1.printStackTrace();
  1252. return getErrReturnObject().setErrMsg(e1.getMessage()).toString();
  1253. }
  1254. return getSucReturnObject().toString();
  1255. }
  1256. public XSSFSheet addSheet(ExcelFactory excelFactory, String sheetname, Rows datarows,
  1257. HashMap<String, String> titlemap) {
  1258. ArrayList<String> keylist = datarows.getFieldList();
  1259. XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet(sheetname);
  1260. XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
  1261. XSSFCellStyle xssfCellStyle1 = xssfFWorkbook.createCellStyle();
  1262. XSSFFont font = xssfFWorkbook.createFont();
  1263. font.setColor((short) 0xa);
  1264. font.setFontHeightInPoints((short) 12);
  1265. font.setBold(true);
  1266. xssfCellStyle1.setFont(font);
  1267. CellStyle style = xssfFWorkbook.createCellStyle();
  1268. DataFormat format = xssfFWorkbook.createDataFormat();
  1269. style.setDataFormat(format.getFormat("@"));
  1270. // 对单独某一列进行样式赋值,第一个参数为列数,第二个参数为样式
  1271. for (int i = 0; i <= 32; i++) {
  1272. sheet.setDefaultColumnStyle(i, style);
  1273. }
  1274. ExportExcel.setBatchDetailSheetColumn2(sheet);// 设置工作薄列宽
  1275. XSSFCellStyle titleCellStyle1 = ExportExcel.createTitleCellStyle1(xssfFWorkbook);
  1276. XSSFCellStyle titleCellStyle2 = ExportExcel.createTitleCellStyle2(xssfFWorkbook);
  1277. XSSFCellStyle titleCellStyle3 = ExportExcel.createTitleCellStyle3(xssfFWorkbook);
  1278. ExportExcel.batchDetailErr(sheet, titleCellStyle1, titleCellStyle2, titleCellStyle3, xssfFWorkbook);// 写入标题
  1279. for (int n = 0; n < datarows.size(); n++) {
  1280. Row row = datarows.get(n);
  1281. XSSFRow datarow = sheet.createRow(n + 3);
  1282. for (int i1 = 0; i1 < keylist.size(); i1++) {
  1283. Class fieldclazztype = datarows.getFieldMeta(keylist.get(i1)).getFieldtype();
  1284. if (fieldclazztype == Integer.class) {
  1285. datarow.createCell(i1).setCellValue(row.getInteger((String) keylist.get(i1)).intValue());
  1286. } else if (fieldclazztype == Long.class) {
  1287. datarow.createCell(i1).setCellValue(row.getLong((String) keylist.get(i1)));
  1288. } else if (fieldclazztype == Float.class) {
  1289. datarow.createCell(i1).setCellValue(row.getFloat((String) keylist.get(i1)));
  1290. } else if (fieldclazztype == Double.class) {
  1291. datarow.createCell(i1).setCellValue(row.getDouble((String) keylist.get(i1)));
  1292. } else {
  1293. datarow.createCell(i1).setCellValue(row.getString((String) keylist.get(i1)));
  1294. }
  1295. if (i1 == 29) {
  1296. datarow.getCell(i1).setCellStyle(xssfCellStyle1);
  1297. }
  1298. }
  1299. }
  1300. return sheet;
  1301. }
  1302. }