Item.java 56 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052
  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 com.alibaba.fastjson.JSONArray;
  8. import com.alibaba.fastjson.JSONObject;
  9. import common.Controller;
  10. import common.YosException;
  11. import common.annotation.API;
  12. import common.annotation.CACHEING;
  13. import common.annotation.CACHEING_CLEAN;
  14. import common.data.*;
  15. import org.apache.commons.lang.StringUtils;
  16. import org.apache.poi.ss.usermodel.CellStyle;
  17. import org.apache.poi.ss.usermodel.DataFormat;
  18. import org.apache.poi.xssf.usermodel.*;
  19. import restcontroller.R;
  20. import restcontroller.webmanage.sale.itemgroup.itemgroup;
  21. import java.util.ArrayList;
  22. import java.util.HashMap;
  23. @API(title = "货品档案管理")
  24. public class Item extends Controller {
  25. /**
  26. * 构造函数
  27. *
  28. * @param content
  29. */
  30. public Item(JSONObject content) throws YosException {
  31. super(content);
  32. }
  33. @API(title = "货品档案新增", apiversion = R.ID20220923141502.v1.class)
  34. @CACHEING_CLEAN(apiversions = {R.ID20220923140602.class})
  35. public String insertOrUpdate() throws YosException {
  36. Long itemid = content.getLong("itemid");
  37. String itemno = content.getString("itemno");
  38. boolean isauxunit = content.getBoolean("isauxunit");
  39. ArrayList<String> sqlList = new ArrayList<>();
  40. Long plm_itemextendid = content.getLongValue("plm_itemextendid");
  41. SQLFactory sqlFactory = new SQLFactory(this, "货品档案新增");
  42. if (itemid <= 0) {
  43. itemid = createTableID("plm_item");
  44. } else {
  45. if (dbConnect.runSqlQuery("SELECT 1 from plm_item WHERE itemid=" + itemid + " and siteid ='" + siteid + "'")
  46. .isEmpty()) {
  47. return getErrReturnObject().setErrMsg("数据不存在").toString();
  48. }
  49. 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 + "'");
  50. sqlFactory = new SQLFactory(this, "货品档案更新");
  51. if(content.getLongValue("sa_customschemeid")>0){
  52. 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 + "'");
  53. String where = " and 1=1 and t1.itemid != "+itemid+" and sa_customschemeid="+content.getLongValue("sa_customschemeid");
  54. if(!customschemeRows.isEmpty()){
  55. for (Row row:customschemeRows) {
  56. if(StringUtils.isBlank(itemRows.get(0).getString(row.getString("value"))) && StringUtils.isBlank(content.getStringValue(row.getString("value")))){
  57. return getErrReturnObject().setErrMsg("该商品定制方案"+row.getString("schemename")+"下"+row.getString("description")+"不可为空").toString();
  58. }else if(StringUtils.isBlank(itemRows.get(0).getString(row.getString("value"))) || StringUtils.isBlank(content.getStringValue(row.getString("value")))){
  59. System.out.println(1111);
  60. System.out.println(StringUtils.isBlank(itemRows.get(0).getString(row.getString("value"))));
  61. 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")))+"'";
  62. }else if(StringUtils.isNotBlank(itemRows.get(0).getString(row.getString("value"))) && StringUtils.isNotBlank(content.getStringValue(row.getString("value"))))
  63. where=where+" and "+row.getString("value")+"='"+ content.getStringValue(row.getString("value"))+"'";
  64. }
  65. System.out.println("select * from plm_item where siteid='"+siteid+"'"+where);
  66. 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);
  67. if(items.isNotEmpty()){
  68. return getErrReturnObject().setErrMsg("该商品与定制方案下的"+items.get(0).getString("itemno")+"商品重复,请修改").toString();
  69. }
  70. }
  71. }
  72. if(content.getLongValue("sa_customschemeid")!=itemRows.get(0).getLong("sa_customschemeid")){
  73. 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+")");
  74. if(rowsCount.get(0).getLong("count")>0){
  75. return getErrReturnObject().setErrMsg("该商品存在与商品组"+rowsCount.get(0).getString("groupnum")+",请在商品组删除该商品后进行保存").toString();
  76. }
  77. }
  78. }
  79. sqlFactory.addParameter("siteid", siteid);
  80. sqlFactory.addParameter("itemid", itemid);
  81. sqlFactory.addParameter("username", username);
  82. sqlFactory.addParameter("userid", userid);
  83. sqlFactory.addParameter("itemno", itemno);
  84. sqlFactory.addParameter("unitid", content.getLongValue("unitid"));
  85. sqlFactory.addParameter("isauxunit", isauxunit);
  86. sqlFactory.addParameter("unitgroupid", isauxunit ? content.getString("unitgroupid") : "null");
  87. sqlFactory.addParameter("itemname", content.getString("itemname"));
  88. sqlFactory.addParameter("isonsale", 0);
  89. sqlFactory.addParameter("model", content.getString("model"));
  90. sqlFactory.addParameter("spec", content.getString("spec"));
  91. // 订单起订量
  92. sqlFactory.addParameter("orderminqty", content.getBigDecimalValue("orderminqty"));
  93. // 订单增量
  94. sqlFactory.addParameter("orderaddqty", content.getBigDecimalValue("orderaddqty"));
  95. // 订单起订量控制单位(0:主单位;1:辅助单位)
  96. sqlFactory.addParameter("orderminqty_auxunit", content.getString("orderminqty_auxunit"));
  97. // 订单增量控制单位(0:主单位;1:辅助单位)
  98. sqlFactory.addParameter("orderaddqty_auxunit", content.getString("orderaddqty_auxunit"));
  99. // 说明
  100. sqlFactory.addParameter("remarks", content.getStringValue("remarks"));
  101. // 商品条形码
  102. sqlFactory.addParameter("barcode", content.getStringValue("barcode"));
  103. // 是否单品管理
  104. sqlFactory.addParameter("skucontrol", content.getBooleanValue("skucontrol"));
  105. // 是否批次管理
  106. sqlFactory.addParameter("batchcontrol", content.getBooleanValue("batchcontrol"));
  107. // 毛重(g)
  108. sqlFactory.addParameter("grossweight", content.getLongValue("grossweight"));
  109. // 净重(g)
  110. sqlFactory.addParameter("weight", content.getLongValue("weight"));
  111. // 高度(mm)
  112. sqlFactory.addParameter("height", content.getLongValue("height"));
  113. // 宽度(mm)
  114. sqlFactory.addParameter("width", content.getLongValue("width"));
  115. // 长度(mm)
  116. sqlFactory.addParameter("length", content.getLongValue("length"));
  117. // 交期
  118. sqlFactory.addParameter("delivery", content.getLongValue("delivery"));
  119. // 牌价
  120. sqlFactory.addParameter("marketprice", content.getBigDecimalValue("marketprice"));
  121. // 是否工具
  122. sqlFactory.addParameter("istool", content.getBooleanValue("istool"));
  123. // 产品标准
  124. sqlFactory.addParameter("standards", content.getStringValue("standards"));
  125. // 库存缺货标准
  126. sqlFactory.addParameter("stockstatus2", content.getIntValue("stockstatus2"));
  127. // 库存充足标准
  128. sqlFactory.addParameter("stockstatus1", content.getIntValue("stockstatus1"));
  129. // 保修期(年)
  130. sqlFactory.addParameter("warrantyday", content.getIntValue("warrantyday"));
  131. // 是否营销物料
  132. sqlFactory.addParameter("iswuliao", content.getBooleanValue("iswuliao"));
  133. // 是否服务物料
  134. sqlFactory.addParameter("isservice", content.getBooleanValue("isservice"));
  135. sqlFactory.addParameter("color", content.getStringValue("color"));
  136. sqlFactory.addParameter("cheek", content.getStringValue("cheek"));
  137. sqlFactory.addParameter("delistingstatus", content.getStringValue("delistingstatus"));
  138. sqlFactory.addParameter("ismodule", content.getStringValue("ismodule"));
  139. sqlFactory.addParameter("packageqty", content.getStringValue("packageqty"));
  140. sqlFactory.addParameter("iswoodproducts", content.getStringValue("iswoodproducts"));
  141. sqlFactory.addParameter("sa_customschemeid", content.getLongValue("sa_customschemeid"));
  142. sqlFactory.addParameter("financeclasstype", content.getStringValue("financeclasstype"));
  143. sqlList.add(sqlFactory.getSQL());
  144. // 货品档案扩展属性字段表
  145. sqlFactory = new SQLFactory(this, "货品档案-扩展新增");
  146. if (plm_itemextendid <= 0) {
  147. plm_itemextendid = createTableID("plm_itemextend");
  148. } else {
  149. sqlFactory = new SQLFactory(this, "货品档案-扩展更新");
  150. }
  151. sqlFactory.addParameter("siteid", siteid);
  152. sqlFactory.addParameter("userid", userid);
  153. sqlFactory.addParameter("username", username);
  154. sqlFactory.addParameter("plm_itemextendid", plm_itemextendid);
  155. sqlFactory.addParameter("itemid", itemid);
  156. sqlFactory.addParameter("material", content.getStringValue("material"));
  157. sqlFactory.addParameter("pressure", content.getStringValue("pressure"));
  158. sqlFactory.addParameter("caliber", content.getStringValue("caliber"));
  159. sqlFactory.addParameter("butterflyplatedrive", content.getStringValue("butterflyplatedrive"));
  160. sqlFactory.addParameter("connection", content.getStringValue("connection"));
  161. sqlFactory.addParameter("valveplatematerial", content.getStringValue("valveplatematerial"));
  162. sqlFactory.addParameter("bodymaterial", content.getStringValue("bodymaterial"));
  163. sqlFactory.addParameter("actuatortype", content.getStringValue("actuatortype"));
  164. sqlFactory.addParameter("actuatorbrand", content.getStringValue("actuatorbrand"));
  165. sqlFactory.addParameter("isbutterfly", content.getBooleanValue("isbutterfly"));
  166. sqlFactory.addParameter("erpitemno", content.getStringValue("erpitemno"));
  167. sqlFactory.addParameter("erpitemname", content.getStringValue("erpitemname"));
  168. sqlFactory.addParameter("specalnote", content.getStringValue("specalnote"));
  169. sqlFactory.addParameter("prodline", content.getStringValue("prodline"));
  170. sqlFactory.addParameter("device", content.getStringValue("device"));
  171. sqlList.add(sqlFactory.getSQL());
  172. // 添加领域
  173. if (content.containsKey("tradefields")) {
  174. JSONArray tradefields = content.getJSONArray("tradefields");
  175. for (Object obj : tradefields) {
  176. String tradefield = (String) obj;
  177. sqlFactory = new SQLFactory(this, "新增领域");
  178. sqlFactory.addParameter("siteid", siteid);
  179. sqlFactory.addParameter("plm_item_tradefieldid", createTableID("plm_item_tradefield"));
  180. sqlFactory.addParameter("tradefield", tradefield);
  181. sqlFactory.addParameter("userid", userid);
  182. sqlFactory.addParameter("itemid", itemid);
  183. sqlList.add(sqlFactory.getSQL());
  184. }
  185. if (tradefields.size() > 0) {
  186. sqlFactory = new SQLFactory(this, "删除多余的领域");
  187. sqlFactory.addParameter("siteid", siteid);
  188. sqlFactory.addParameter_in("tradefield", tradefields.toArray());
  189. sqlFactory.addParameter("userid", userid);
  190. sqlFactory.addParameter("itemid", itemid);
  191. sqlList.add(sqlFactory.getSQL());
  192. }
  193. }
  194. if (content.containsKey("itemclassids")) {
  195. JSONArray itemclassids = content.getJSONArray("itemclassids");
  196. for (Object obj : itemclassids) {
  197. int itemclassid = (int) obj;
  198. sqlFactory = new SQLFactory(this, "商品营销类别新增");
  199. sqlFactory.addParameter("sa_itemsaleclassid", createTableID("sa_itemsaleclass"));
  200. sqlFactory.addParameter("siteid", siteid);
  201. sqlFactory.addParameter("itemid", itemid);
  202. sqlFactory.addParameter("itemno", itemno);
  203. sqlFactory.addParameter("itemclassid", itemclassid);
  204. sqlList.add(sqlFactory.getSQL());
  205. }
  206. sqlFactory = new SQLFactory(this, "商品营销类别删除");
  207. sqlFactory.addParameter("sa_itemsaleclassid", createTableID("sa_itemsaleclass"));
  208. sqlFactory.addParameter("siteid", siteid);
  209. sqlFactory.addParameter("itemid", itemid);
  210. sqlFactory.addParameter("itemno", itemno);
  211. sqlFactory.addParameter_in("itemclassid", itemclassids.toArray());
  212. sqlList.add(sqlFactory.getSQL());
  213. }
  214. dbConnect.runSqlUpdate(sqlList);
  215. content.put("itemid", itemid);
  216. return queryDetail();
  217. }
  218. @API(title = "货品档案详情", apiversion = R.ID20220923155302.v1.class)
  219. public String queryDetail() throws YosException {
  220. Long itemid = content.getLong("itemid");
  221. ArrayList<Long> itemids = new ArrayList<>();
  222. itemids.add(itemid);
  223. //查询erp库存
  224. Invbal.selectErpInvbal(this, itemid);
  225. SQLFactory sqlFactory = new SQLFactory(this, "货品档案详情");
  226. sqlFactory.addParameter("siteid", siteid);
  227. sqlFactory.addParameter("itemid", itemid);
  228. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL(false));
  229. // 默认商品图片
  230. Rows defaultImageRows = getAttachmentUrl("system", (long) 1, "defaultImage");
  231. // 品牌
  232. RowsMap brandRowsMap = Brand.getBrandRowsMap(this, itemids);
  233. // 营销类别
  234. RowsMap itemClassRowsMap = ItemClass.getAllItemClassRowsMap(this, itemids);
  235. // 附件
  236. RowsMap attRowsMap = getAttachmentUrl("plm_item", itemids);
  237. // 商品领域
  238. RowsMap tradefieldRowsMap = beans.Item.Item.getTradefieldRowsMap(this, itemids);
  239. for (Row row : rows) {
  240. if (attRowsMap.getOrDefault(row.getString("itemid"), new Rows()).isEmpty()) {
  241. row.put("attinfos", defaultImageRows);
  242. } else {
  243. row.put("attinfos", attRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  244. }
  245. row.put("brand", brandRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  246. row.put("itemclass", itemClassRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  247. row.put("tradefield", tradefieldRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  248. }
  249. return getSucReturnObject().setData(rows.isNotEmpty() ? rows.get(0) : new Row()).toString();
  250. }
  251. @API(title = "货品档案列表", apiversion = R.ID20220923140602.v1.class)
  252. @CACHEING
  253. public String queryList() throws YosException {
  254. StringBuffer where = new StringBuffer(" 1=1 ");
  255. if (content.containsKey("where")) {
  256. JSONObject whereObject = content.getJSONObject("where");
  257. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  258. where.append(" and(");
  259. where.append("t1.itemno like'%").append(whereObject.getString("condition")).append("%' ");
  260. where.append("or t1.itemname like'%").append(whereObject.getString("condition")).append("%' ");
  261. where.append("or t1.model like'%").append(whereObject.getString("condition")).append("%' ");
  262. where.append("or t1.spec like'%").append(whereObject.getString("condition")).append("%' ");
  263. where.append("or t8.erpitemname like'%").append(whereObject.getString("condition")).append("%' ");
  264. where.append("or t8.erpitemno like'%").append(whereObject.getString("condition")).append("%' ");
  265. where.append(")");
  266. }
  267. if (whereObject.containsKey("isonsale") && !"".equals(whereObject.getString("isonsale"))) {
  268. where.append(" and(");
  269. where.append("t1.isonsale ='").append(whereObject.getString("isonsale")).append("' ");
  270. where.append(")");
  271. }
  272. if (whereObject.containsKey("isservice") && !"".equals(whereObject.getString("isservice"))) {
  273. where.append(" and(");
  274. where.append("t1.isservice ='").append(whereObject.getString("isservice")).append("' ");
  275. where.append(")");
  276. }
  277. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  278. where.append(" and(");
  279. where.append("t1.status ='").append(whereObject.getString("status")).append("' ");
  280. where.append(")");
  281. }
  282. if (whereObject.containsKey("itemclassids") && !whereObject.getJSONArray("itemclassids").isEmpty()) {
  283. if ( whereObject.getJSONArray("itemclassids").size() > 0) {
  284. String sql = " and t1.itemid in ( SELECT itemid from sa_itemsaleclass WHERE itemclassid IN " + whereObject.getJSONArray("itemclassids") + " and siteid='" + siteid + "')";
  285. sql = sql.replace("[", "(").replace("]", ")");
  286. System.out.println(sql);
  287. where.append(sql);
  288. }
  289. }
  290. if (whereObject.containsKey("tradefield") && !whereObject.getJSONArray("tradefield").isEmpty()) {
  291. String where1 =" 1=1 ";
  292. if ( whereObject.getJSONArray("tradefield").size() > 0) {
  293. for (Object object:whereObject.getJSONArray("tradefield")) {
  294. String str = String.valueOf(object);
  295. where1=where1 +" or tradefield ='"+str+"' ";
  296. }
  297. }
  298. where.append("and t1.itemid in (SELECT itemid from plm_item_tradefield WHERE ("+where1+") and siteid = '"+siteid+"')");
  299. }
  300. }
  301. SQLFactory sqlFactory = new SQLFactory(this, "货品档案列表", pageSize, pageNumber, pageSorting);
  302. sqlFactory.addParameter("siteid", siteid);
  303. sqlFactory.addParameter_SQL("where", where);
  304. System.out.println(sqlFactory.getSQL());
  305. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  306. // 默认商品图片
  307. Rows defaultImageRows = getAttachmentUrl("system", (long) 1, "defaultImage");
  308. // 附件
  309. ArrayList<Long> ids = rows.toArrayList("itemid", new ArrayList<>());
  310. RowsMap attRowsMap = getAttachmentUrl("plm_item", ids);
  311. // 商品领域
  312. RowsMap tradefieldRowsMap = beans.Item.Item.getTradefieldRowsMap(this, ids);
  313. // 商品品牌
  314. RowsMap brandRowsMap = Brand.getBrandRowsMap(this, ids);
  315. RowsMap itemclassRowsMap = ItemClass.getAllItemClassRowsMap(this, ids);
  316. for (Row row : rows) {
  317. if (attRowsMap.getOrDefault(row.getString("itemid"), new Rows()).isEmpty()) {
  318. row.put("attinfos", defaultImageRows);
  319. } else {
  320. row.put("attinfos", attRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  321. }
  322. row.put("tradefield", tradefieldRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  323. row.put("brand", brandRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  324. row.put("itemclass", itemclassRowsMap.getOrDefault(row.getString("itemid"), new Rows()));
  325. }
  326. return getSucReturnObject().setData(rows).toString();
  327. }
  328. @API(title = "货品档案删除", apiversion = R.ID20220923152202.v1.class)
  329. @CACHEING_CLEAN(apiversions = {R.ID20220923140602.v1.class})
  330. public String delete() throws YosException {
  331. JSONArray jsonArray = content.getJSONArray("itemids");
  332. String sql = " SELECT 1 from plm_item WHERE itemid in " + jsonArray + " and `status` ='审核' and siteid ='"
  333. + siteid + "'";
  334. sql = sql.replace("[", "(").replace("]", ")");
  335. if (dbConnect.runSqlQuery(sql).isNotEmpty()) {
  336. return getErrReturnObject().setErrMsg("存在已审核的数据,无法删除。").toString();
  337. }
  338. SQLFactory sqlFactory = new SQLFactory(this, "货品档案删除");
  339. sqlFactory.addParameter_in("itemid", jsonArray.toArray());
  340. sqlFactory.addParameter("siteid", siteid);
  341. dbConnect.runSqlUpdate(sqlFactory);
  342. return getSucReturnObject().toString();
  343. }
  344. @API(title = "货品档案审核", apiversion = R.ID20220923153902.v1.class)
  345. @CACHEING_CLEAN(apiversions = {R.ID20220923140602.v1.class})
  346. public String audit() throws YosException {
  347. JSONArray jsonArray = content.getJSONArray("itemids");
  348. String status = content.getString("status");
  349. Rows itemRows = dbConnect.runSqlQuery("select itemid,itemno,itemname,sa_customschemeid,isonsale from plm_item where siteid='"+siteid+"'");
  350. RowsMap itemRowsMap = itemRows.toRowsMap("itemid");
  351. ArrayList<String> sqlList = new ArrayList<>();
  352. for (Object obj : jsonArray) {
  353. int id = (int) obj;
  354. SQLFactory sqlFactory = new SQLFactory(this, "货品档案审核");
  355. sqlFactory.addParameter("itemid", id);
  356. sqlFactory.addParameter("siteid", siteid);
  357. sqlFactory.addParameter("username", username);
  358. sqlFactory.addParameter("status", status.equals("0") ? "新建" : "审核");
  359. if(status.equals("0")){
  360. if(itemRowsMap.containsKey(String.valueOf(id))){
  361. if(!itemRowsMap.get(String.valueOf(id)).isEmpty()){
  362. if(itemRowsMap.get(String.valueOf(id)).get(0).getBoolean("isonsale")){
  363. return getErrReturnObject().setErrMsg("上架状态无法反审核").toString();
  364. }
  365. }
  366. }
  367. }
  368. sqlList.add(sqlFactory.getSQL());
  369. }
  370. dbConnect.runSqlUpdate(sqlList);
  371. return getSucReturnObject().toString();
  372. }
  373. @API(title = "货品档案上架", apiversion = R.ID20220923154802.v1.class)
  374. @CACHEING_CLEAN(apiversions = {R.ID20220923140602.v1.class},apiClass = {itemgroup.class,restcontroller.sale.itemgroup.itemgroup.class})
  375. public String onsale() throws YosException {
  376. JSONArray jsonArray = content.getJSONArray("itemids");
  377. String isonsale = content.getString("isonsale");
  378. if (isonsale.equals("1")) {
  379. SQLFactory isHas = new SQLFactory(this, "查询是否存在新建货品");
  380. isHas.addParameter_in("itemid", jsonArray.toArray());
  381. isHas.addParameter("siteid", siteid);
  382. Rows hasRows = dbConnect.runSqlQuery(isHas.getSQL(false));
  383. if (hasRows.isNotEmpty()) {
  384. return getErrReturnObject().setErrMsg("存在未审核的货品,无法上架!").toString();
  385. }
  386. SQLFactory isHasPrice = new SQLFactory(this, "查询是否存在未维护价格的商品");
  387. isHasPrice.addParameter_in("itemid", jsonArray.toArray());
  388. isHasPrice.addParameter("siteid", siteid);
  389. Rows hasPriceRows = dbConnect.runSqlQuery(isHasPrice.getSQL(false));
  390. if (hasPriceRows.isNotEmpty()) {
  391. return getErrReturnObject().setErrMsg("存在未维护价格的货品,无法上架!").toString();
  392. }
  393. }
  394. Rows brandRows = dbConnect.runSqlQuery("select sa_brandid from sa_brand where siteid='"+siteid+"'");
  395. long sa_brandid=0;
  396. if(!brandRows.isEmpty()){
  397. sa_brandid=brandRows.get(0).getLong("sa_brandid");
  398. }
  399. Rows itemRows = dbConnect.runSqlQuery("select itemid,itemno,itemname,sa_customschemeid,isonsale from plm_item where siteid='"+siteid+"'");
  400. RowsMap itemRowsMap = itemRows.toRowsMap("itemid");
  401. Rows tradefieldRows = dbConnect.runSqlQuery("select itemid,tradefield from plm_item_tradefield where siteid='"+siteid+"'");
  402. RowsMap tradefieldRowsMap = tradefieldRows.toRowsMap("itemid");
  403. ArrayList<String> sqlList = new ArrayList<>();
  404. for (Object obj : jsonArray) {
  405. Long id = Long.valueOf(obj.toString());
  406. SQLFactory sqlFactory = new SQLFactory(this, "货品档案上架");
  407. sqlFactory.addParameter("itemid", id);
  408. sqlFactory.addParameter("siteid", siteid);
  409. sqlFactory.addParameter("username", username);
  410. sqlFactory.addParameter("isonsale", isonsale);
  411. sqlList.add(sqlFactory.getSQL(false));
  412. //审核商品时,自动添加至商品组中
  413. if(itemRowsMap.containsKey(String.valueOf(obj))){
  414. if(!itemRowsMap.get(String.valueOf(obj)).isEmpty()){
  415. if(itemRowsMap.get(String.valueOf(obj)).get(0).getLong("sa_customschemeid")!=0){
  416. if(isonsale.equals("1")){
  417. 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+")");
  418. if(rowsCount.get(0).getLong("count")>1){
  419. //return getErrReturnObject().setErrMsg("该商品存在与商品组"+rowsCount.get(0).getString("groupnum")+",请在商品组删除该商品后进行审核").toString();
  420. }
  421. }
  422. }else{
  423. if(isonsale.equals("0")){
  424. sqlList.add("delete from sa_itemgroup where sa_itemgroupid in(select sa_itemgroupid from sa_itemgroupmx where itemid="+id+" and siteid='"+siteid+"')");
  425. sqlList.add("delete from sa_itemgroupmx where itemid="+id+" and siteid='"+siteid+"'");
  426. }else {
  427. 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 ));
  428. }
  429. }
  430. }else {
  431. return getErrReturnObject().setErrMsg("商品不存在").toString();
  432. }
  433. }
  434. }
  435. dbConnect.runSqlUpdate(sqlList);
  436. return getSucReturnObject().toString();
  437. }
  438. @API(title = "查询商品组", apiversion = R.ID20221216102302.v1.class)
  439. public String selectItemGroup() throws YosException {
  440. Long itemid = content.getLong("itemid");
  441. StringBuffer where = new StringBuffer(" 1=1 ");
  442. if (content.containsKey("where")) {
  443. JSONObject whereObject = content.getJSONObject("where");
  444. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  445. where.append(" and(");
  446. where.append("t1.groupname like'%").append(whereObject.getString("condition")).append("%' ");
  447. where.append("or t1.brandname like'%").append(whereObject.getString("condition")).append("%' ");
  448. where.append(")");
  449. }
  450. if (whereObject.containsKey("isonsale") && !"".equals(whereObject.getString("isonsale"))) {
  451. where.append(" and(");
  452. where.append("t1.isonsale ='").append(whereObject.getString("isonsale")).append("' ");
  453. where.append(")");
  454. }
  455. }
  456. SQLFactory sqlFactory = new SQLFactory(this, "查询商品组", pageSize, pageNumber, pageSorting);
  457. sqlFactory.addParameter("siteid", siteid);
  458. sqlFactory.addParameter("itemid", itemid);
  459. sqlFactory.addParameter_SQL("where", where);
  460. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  461. return getSucReturnObject().setData(rows).toString();
  462. }
  463. @API(title = "查询商品资料", apiversion = R.ID20221216105402.v1.class)
  464. public String selectTechnicalinfo() throws YosException {
  465. Long itemid = content.getLong("itemid");
  466. StringBuffer where = new StringBuffer(" 1=1 ");
  467. if (content.containsKey("where")) {
  468. JSONObject whereObject = content.getJSONObject("where");
  469. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  470. where.append(" and(");
  471. where.append("t1.type like'%").append(whereObject.getString("condition")).append("%' ");
  472. where.append("or t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
  473. where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
  474. where.append(")");
  475. }
  476. }
  477. SQLFactory sqlFactory = new SQLFactory(this, "查询产品资料", pageSize, pageNumber, pageSorting);
  478. sqlFactory.addParameter("siteid", siteid);
  479. sqlFactory.addParameter("itemid", itemid);
  480. sqlFactory.addParameter_SQL("where", where);
  481. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  482. ArrayList<Long> ids = rows.toArrayList("plm_technicalinfoid", new ArrayList<>());
  483. // 默认商品图片
  484. Rows defaultImageRows = getAttachmentUrl("system", (long) 1, "defaultImage");
  485. // 封面cover
  486. RowsMap coverRowsMap = getAttachmentUrl("plm_technicalinfo", ids, "cover");
  487. // 附件
  488. RowsMap attRowsMap = getAttachmentUrl("plm_technicalinfo", ids);
  489. for (Row row : rows) {
  490. Rows coverRows = coverRowsMap.get(row.getString("plm_technicalinfoid"));
  491. if (coverRows.isEmpty()) {
  492. if (!defaultImageRows.isEmpty()) {
  493. row.put("cover", defaultImageRows.get(0).getString("url"));
  494. } else {
  495. row.put("cover", "");
  496. }
  497. } else {
  498. row.put("cover", coverRows.get(0).getString("url"));
  499. }
  500. row.put("attinfos", attRowsMap.getOrDefault(row.getString("plm_technicalinfoid"), new Rows()));
  501. }
  502. return getSucReturnObject().setData(rows).toString();
  503. }
  504. @API(title = "查询商品价格", apiversion = R.ID20221216134102.v1.class)
  505. public String selectItemPrice() throws YosException {
  506. Long itemid = content.getLong("itemid");
  507. StringBuffer where = new StringBuffer(" 1=1 ");
  508. if (content.containsKey("where")) {
  509. JSONObject whereObject = content.getJSONObject("where");
  510. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  511. where.append(" and(");
  512. where.append("t1.itemno like'%").append(whereObject.getString("condition")).append("%' ");
  513. where.append("or t1.pricegrade like'%").append(whereObject.getString("condition")).append("%' ");
  514. where.append(")");
  515. }
  516. }
  517. SQLFactory sqlFactory = new SQLFactory(this, "查询商品价格", pageSize, pageNumber, pageSorting);
  518. sqlFactory.addParameter("siteid", siteid);
  519. sqlFactory.addParameter("itemid", itemid);
  520. sqlFactory.addParameter_SQL("where", where);
  521. Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
  522. return getSucReturnObject().setData(rows).toString();
  523. }
  524. @API(title = "货品档案导入模板", apiversion = R.ID20230311102404.v1.class)
  525. public String downloadExcel() throws YosException {
  526. ExcelFactory excelFactory = new ExcelFactory("货品档案导入模板");
  527. XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet("Sheet1");
  528. XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
  529. CellStyle style = xssfFWorkbook.createCellStyle();
  530. DataFormat format = xssfFWorkbook.createDataFormat();
  531. style.setDataFormat(format.getFormat("@"));
  532. // 对单独某一列进行样式赋值,第一个参数为列数,第二个参数为样式
  533. for (int i = 0; i <= 31; i++) {
  534. sheet.setDefaultColumnStyle(i, style);
  535. }
  536. // 设置工作薄列宽
  537. ExportExcel.setBatchDetailSheetColumn1(sheet);// 设置工作薄列宽
  538. XSSFCellStyle titleCellStyle1 = ExportExcel.createTitleCellStyle1(xssfFWorkbook);
  539. XSSFCellStyle titleCellStyle2 = ExportExcel.createTitleCellStyle2(xssfFWorkbook);
  540. XSSFCellStyle titleCellStyle3 = ExportExcel.createTitleCellStyle3(xssfFWorkbook);
  541. XSSFCellStyle titleCellStyle4 = ExportExcel.createBodyCellStyle4(xssfFWorkbook);
  542. ExportExcel.batchDetail(sheet, titleCellStyle1, titleCellStyle2, titleCellStyle3, titleCellStyle4, xssfFWorkbook);
  543. Rows aa = uploadExcelToObs(excelFactory);
  544. String url = "";
  545. if (!aa.isEmpty()) {
  546. url = aa.get(0).getString("url");
  547. }
  548. return getSucReturnObject().setData(url).toString();
  549. }
  550. @API(title = "货品档案导入", apiversion = R.ID20230311111404.v1.class)
  551. @CACHEING_CLEAN(apiversions = {R.ID20220923140602.class})
  552. public String importItems() throws YosException {
  553. ArrayList<String> sqlList = new ArrayList<>();
  554. ExcelFactory e;
  555. try {
  556. // 华为云
  557. e = getPostExcelFactory(content.getLong("attachmentid"));
  558. // 本地
  559. //e = getPostExcelFactory();
  560. ArrayList<String> keys = new ArrayList<>();
  561. keys.add("itemno");
  562. keys.add("itemname");
  563. keys.add("spec");
  564. keys.add("model");
  565. keys.add("unitname");
  566. keys.add("erpitemname");
  567. keys.add("erpitemno");
  568. keys.add("standards");
  569. keys.add("orderminqty");
  570. keys.add("orderaddqty");
  571. keys.add("material");
  572. keys.add("stockstatus1");
  573. keys.add("stockstatus2");
  574. keys.add("tradefield");
  575. keys.add("delivery");
  576. keys.add("prodline");
  577. keys.add("device");
  578. keys.add("specalnote");
  579. keys.add("isservice");
  580. keys.add("pressure");
  581. keys.add("butterflyplatedrive");
  582. keys.add("connection");
  583. keys.add("valveplatematerial");
  584. keys.add("bodymaterial");
  585. keys.add("actuatortype");
  586. keys.add("actuatorbrand");
  587. keys.add("isbutterfly");
  588. keys.add("brandname");
  589. keys.add("itemclassnum");
  590. Rows rows = e.getSheetRows(0, keys, 3);
  591. boolean iserr = false;
  592. Rows rowserr = new Rows();
  593. Rows rowssuc = new Rows();
  594. RowsMap itemnoRowsMap = dbConnect.runSqlQuery("select itemno from plm_item t1 where siteid='" + siteid + "'").toRowsMap("itemno");
  595. RowsMap unitnameRowsMap = dbConnect.runSqlQuery("select unitid,unitname from plm_unit where siteid='" + siteid + "'").toRowsMap("unitname");
  596. 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");
  597. RowsMap imitemnoRowsMap = rows.toRowsMap("itemno");
  598. 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 + "'");
  599. RowsMap itemclassRowsMap = itemcalss.toRowsMap("brandname");
  600. for (Row row : rows) {
  601. String brandname = row.getString("brandname");
  602. String itemclassnum = row.getString("itemclassnum");
  603. String itemno = row.getString("itemno");
  604. String unitname = row.getString("unitname");
  605. try {
  606. row.getBigDecimal("orderminqty");
  607. row.getBigDecimal("orderaddqty");
  608. row.getInteger("stockstatus1");
  609. row.getInteger("stockstatus2");
  610. row.getInteger("delivery");
  611. } catch (Exception e1) {
  612. iserr = true;
  613. row.put("msg", "错误信息:销售起订量/销售增量/库存充足标准/库存缺货标准/销售交期填写格式错误");
  614. rowserr.add(row);
  615. continue;
  616. }
  617. if (StringUtils.isEmpty(itemno)
  618. || StringUtils.isEmpty(row.getString("itemname"))
  619. || StringUtils.isEmpty(unitname)
  620. || StringUtils.isEmpty(row.getString("erpitemname"))
  621. || StringUtils.isEmpty(row.getString("erpitemno"))) {
  622. iserr = true;
  623. row.put("msg", "错误信息:产品编号/产品名称/计量单位/品号/品号不能为空");
  624. rowserr.add(row);
  625. continue;
  626. }
  627. if ((StringUtils.isEmpty(brandname) && StringUtils.isNotEmpty(itemclassnum)) || (StringUtils.isNotEmpty(brandname) && StringUtils.isEmpty(itemclassnum))) {
  628. iserr = true;
  629. row.put("msg", "错误信息:不能单独填写品牌和营销类别");
  630. rowserr.add(row);
  631. continue;
  632. }
  633. if (imitemnoRowsMap.containsKey(itemno) && imitemnoRowsMap.get(itemno).size() > 1) {
  634. iserr = true;
  635. row.put("msg", "错误信息:本次导入商品中存在重复的商品编号");
  636. rowserr.add(row);
  637. continue;
  638. }
  639. if (itemnoRowsMap.containsKey(itemno)) {
  640. iserr = true;
  641. row.put("msg", "错误信息:商品编号已存在");
  642. rowserr.add(row);
  643. continue;
  644. }
  645. if (!unitnameRowsMap.containsKey(unitname)) {
  646. iserr = true;
  647. row.put("msg", "错误信息:计量单位不存在");
  648. rowserr.add(row);
  649. continue;
  650. }
  651. if (!tradefieldList.contains(row.getString("tradefield"))) {
  652. iserr = true;
  653. row.put("msg", "错误信息:领域不存在");
  654. rowserr.add(row);
  655. continue;
  656. }
  657. if (!itemclassRowsMap.containsKey(brandname) || !itemclassRowsMap.get(brandname).toArrayList("itemclassnum").contains(itemclassnum)) {
  658. iserr = true;
  659. row.put("msg", "错误信息:品牌不存在或该品牌下没有对应的营销类别");
  660. rowserr.add(row);
  661. }
  662. row.put("unitid", unitnameRowsMap.get(unitname).get(0).getLong("unitid"));
  663. for (Row row1 : itemclassRowsMap.get(brandname)) {
  664. if (row1.getString("itemclassnum").equals(itemclassnum)) {
  665. row.put("sa_brandid", row1.getLong("sa_brandid"));
  666. row.put("itemclassid", row1.getLong("itemclassid"));
  667. break;
  668. }
  669. }
  670. rowssuc.add(row);
  671. }
  672. if (iserr) {
  673. ExcelFactory excelFactory = new ExcelFactory("货品档案导入错误信息");
  674. HashMap<String, String> map = new HashMap<String, String>();
  675. map.put("itemno", "产品编码");
  676. map.put("itemname", "产品名称");
  677. map.put("spec", "型号");
  678. map.put("model", "规格尺寸");
  679. map.put("unitname", "计量单位");
  680. map.put("erpitemname", "品名");
  681. map.put("erpitemno", "品号");
  682. map.put("standards", "产品标准");
  683. map.put("orderminqty", "销售增量");
  684. map.put("orderaddqty", "销售起订量");
  685. map.put("material", "材质");
  686. map.put("stockstatus1", "库存充足标准");
  687. map.put("stockstatus2", "库存缺货标准");
  688. map.put("tradefield", "领域");
  689. map.put("delivery", "销售交期");
  690. map.put("prodline", "产线");
  691. map.put("device", "装置");
  692. map.put("specalnote", "特殊说明");
  693. map.put("isservice", "是否服务物料");
  694. map.put("pressure", "压力等级");
  695. map.put("butterflyplatedrive", "蝶板驱动");
  696. map.put("connection", "连接形式");
  697. map.put("valveplatematerial", "阀板材质");
  698. map.put("bodymaterial", "阀体材质");
  699. map.put("actuatortype", "执行器类型");
  700. map.put("actuatorbrand", "执行器品牌");
  701. map.put("isbutterfly", "是否中线蝶阀");
  702. map.put("brandname", "品牌");
  703. map.put("itemclassnum", "营销类别编码");
  704. map.put("msg", "错误信息");
  705. ArrayList<String> colNameList = new ArrayList<String>();
  706. HashMap<String, Class> keytypemap = new HashMap<String, Class>();
  707. colNameList.add("itemno");
  708. colNameList.add("itemname");
  709. colNameList.add("spec");
  710. colNameList.add("model");
  711. colNameList.add("unitname");
  712. colNameList.add("erpitemname");
  713. colNameList.add("erpitemno");
  714. colNameList.add("standards");
  715. colNameList.add("orderminqty");
  716. colNameList.add("orderaddqty");
  717. colNameList.add("material");
  718. colNameList.add("stockstatus1");
  719. colNameList.add("stockstatus2");
  720. colNameList.add("tradefield");
  721. colNameList.add("delivery");
  722. colNameList.add("prodline");
  723. colNameList.add("device");
  724. colNameList.add("specalnote");
  725. colNameList.add("isservice");
  726. colNameList.add("pressure");
  727. colNameList.add("butterflyplatedrive");
  728. colNameList.add("connection");
  729. colNameList.add("valveplatematerial");
  730. colNameList.add("bodymaterial");
  731. colNameList.add("actuatortype");
  732. colNameList.add("actuatorbrand");
  733. colNameList.add("isbutterfly");
  734. colNameList.add("brandname");
  735. colNameList.add("itemclassnum");
  736. colNameList.add("msg");
  737. keytypemap.put("itemno", String.class);
  738. keytypemap.put("itemname", String.class);
  739. keytypemap.put("spec", String.class);
  740. keytypemap.put("model", String.class);
  741. keytypemap.put("unitname", String.class);
  742. keytypemap.put("erpitemname", String.class);
  743. keytypemap.put("erpitemno", String.class);
  744. keytypemap.put("standards", String.class);
  745. keytypemap.put("orderminqty", String.class);
  746. keytypemap.put("orderaddqty", String.class);
  747. keytypemap.put("material", String.class);
  748. keytypemap.put("stockstatus1", String.class);
  749. keytypemap.put("stockstatus2", String.class);
  750. keytypemap.put("tradefield", String.class);
  751. keytypemap.put("delivery", String.class);
  752. keytypemap.put("prodline", String.class);
  753. keytypemap.put("device", String.class);
  754. keytypemap.put("specalnote", String.class);
  755. keytypemap.put("isservice", String.class);
  756. keytypemap.put("pressure", String.class);
  757. keytypemap.put("butterflyplatedrive", String.class);
  758. keytypemap.put("connection", String.class);
  759. keytypemap.put("valveplatematerial", String.class);
  760. keytypemap.put("bodymaterial", String.class);
  761. keytypemap.put("actuatortype", String.class);
  762. keytypemap.put("actuatorbrand", String.class);
  763. keytypemap.put("isbutterfly", String.class);
  764. keytypemap.put("brandname", String.class);
  765. keytypemap.put("itemclassnum", String.class);
  766. keytypemap.put("msg", String.class);
  767. rowserr.setFieldList(colNameList);
  768. rowserr.setFieldTypeMap(keytypemap);
  769. addSheet(excelFactory, "Sheet1", rowserr, map);
  770. Rows aa = uploadExcelToObs(excelFactory);
  771. String url = "";
  772. if (!aa.isEmpty()) {
  773. url = aa.get(0).getString("url");
  774. }
  775. return getSucReturnObject().setData(url).toString();
  776. }
  777. if (!rowssuc.isEmpty()) {
  778. for (Row row : rowssuc) {
  779. Long itemid = createTableID("plm_item");
  780. SQLFactory sqlFactory = new SQLFactory(this, "货品档案新增");
  781. sqlFactory.addParameter("siteid", siteid);
  782. sqlFactory.addParameter("itemid", itemid);
  783. sqlFactory.addParameter("username", username);
  784. sqlFactory.addParameter("userid", userid);
  785. sqlFactory.addParameter("itemno", row.getString("itemno"));
  786. sqlFactory.addParameter("unitid", row.getLong("unitid"));
  787. sqlFactory.addParameter("isauxunit", 0);
  788. sqlFactory.addParameter("unitgroupid", "null");
  789. sqlFactory.addParameter("itemname", row.getString("itemname"));
  790. sqlFactory.addParameter("isonsale", 0);
  791. sqlFactory.addParameter("model", row.getString("model"));
  792. sqlFactory.addParameter("spec", row.getString("spec"));
  793. // 订单起订量
  794. sqlFactory.addParameter("orderminqty", row.getBigDecimal("orderminqty"));
  795. // 订单增量
  796. sqlFactory.addParameter("orderaddqty", row.getBigDecimal("orderaddqty"));
  797. // 订单起订量控制单位(0:主单位;1:辅助单位)
  798. sqlFactory.addParameter("orderminqty_auxunit", 0);
  799. // 订单增量控制单位(0:主单位;1:辅助单位)
  800. sqlFactory.addParameter("orderaddqty_auxunit", 0);
  801. // 说明
  802. sqlFactory.addParameter("remarks", "null");
  803. // 商品条形码
  804. sqlFactory.addParameter("barcode", "null");
  805. // 是否单品管理
  806. sqlFactory.addParameter("skucontrol", 0);
  807. // 是否批次管理
  808. sqlFactory.addParameter("batchcontrol", 0);
  809. // 毛重(g)
  810. sqlFactory.addParameter("grossweight", "null");
  811. // 净重(g)
  812. sqlFactory.addParameter("weight", "null");
  813. // 高度(mm)
  814. sqlFactory.addParameter("height", "null");
  815. // 宽度(mm)
  816. sqlFactory.addParameter("width", "null");
  817. // 长度(mm)
  818. sqlFactory.addParameter("length", "null");
  819. // 交期
  820. sqlFactory.addParameter("delivery", row.getLong("delivery"));
  821. // 牌价
  822. sqlFactory.addParameter("marketprice", 0);
  823. // 是否工具
  824. sqlFactory.addParameter("istool", 0);
  825. // 产品标准
  826. sqlFactory.addParameter("standards", row.getString("standards"));
  827. // 库存缺货标准
  828. sqlFactory.addParameter("stockstatus2", row.getInteger("stockstatus2"));
  829. // 库存充足标准
  830. sqlFactory.addParameter("stockstatus1", row.getInteger("stockstatus1"));
  831. // 保修期(年)
  832. sqlFactory.addParameter("warrantyday", "null");
  833. // 是否营销物料
  834. sqlFactory.addParameter("iswuliao", 0);
  835. // 是否服务物料
  836. sqlFactory.addParameter("isservice", row.getString("isservice").equals("是") ? 1 : 0);
  837. sqlList.add(sqlFactory.getSQL());
  838. // 货品档案扩展属性字段表
  839. sqlFactory = new SQLFactory(this, "货品档案-扩展新增");
  840. Long plm_itemextendid = createTableID("plm_itemextend");
  841. sqlFactory.addParameter("siteid", siteid);
  842. sqlFactory.addParameter("userid", userid);
  843. sqlFactory.addParameter("username", username);
  844. sqlFactory.addParameter("plm_itemextendid", plm_itemextendid);
  845. sqlFactory.addParameter("itemid", itemid);
  846. sqlFactory.addParameter("material", row.getString("material"));
  847. sqlFactory.addParameter("pressure", row.getString("pressure"));
  848. sqlFactory.addParameter("caliber", "null");
  849. sqlFactory.addParameter("butterflyplatedrive", row.getString("butterflyplatedrive"));
  850. sqlFactory.addParameter("connection", row.getString("connection"));
  851. sqlFactory.addParameter("valveplatematerial", row.getString("valveplatematerial"));
  852. sqlFactory.addParameter("bodymaterial", row.getString("bodymaterial"));
  853. sqlFactory.addParameter("actuatortype", row.getString("actuatortype"));
  854. sqlFactory.addParameter("actuatorbrand", row.getString("actuatorbrand"));
  855. sqlFactory.addParameter("isbutterfly", row.getString("isbutterfly").equals("是") ? 1 : 0);
  856. sqlFactory.addParameter("erpitemno", row.getString("erpitemno"));
  857. sqlFactory.addParameter("erpitemname", row.getString("erpitemname"));
  858. sqlFactory.addParameter("specalnote", row.getString("specalnote"));
  859. sqlFactory.addParameter("prodline", row.getString("prodline"));
  860. sqlFactory.addParameter("device", row.getString("device"));
  861. sqlList.add(sqlFactory.getSQL());
  862. Long plm_item_tradefieldid = createTableID("plm_item_tradefield");
  863. sqlFactory = new SQLFactory(this, "新增领域");
  864. sqlFactory.addParameter("siteid", siteid);
  865. sqlFactory.addParameter("plm_item_tradefieldid", plm_item_tradefieldid);
  866. sqlFactory.addParameter("tradefield", row.getString("tradefield"));
  867. sqlFactory.addParameter("userid", userid);
  868. sqlFactory.addParameter("itemid", itemid);
  869. sqlList.add(sqlFactory.getSQL());
  870. Long sa_itemsaleclassid = createTableID("sa_itemsaleclass");
  871. sqlFactory = new SQLFactory(this, "新增营销类别");
  872. sqlFactory.addParameter("siteid", siteid);
  873. sqlFactory.addParameter("sa_itemsaleclassid", sa_itemsaleclassid);
  874. sqlFactory.addParameter("itemclassid", row.getString("itemclassid"));
  875. sqlFactory.addParameter("itemno", row.getString("itemno"));
  876. sqlFactory.addParameter("itemid", itemid);
  877. sqlList.add(sqlFactory.getSQL());
  878. sqlList.add(DataContrlLog.createLog(this, "plm_item", itemid, "新增", "货品档案导入").getSQL());
  879. sqlList.add(DataContrlLog.createLog(this, "plm_itemextend", plm_itemextendid, "新增", "货品档案导入").getSQL());
  880. sqlList.add(DataContrlLog.createLog(this, "plm_item_tradefield", plm_item_tradefieldid, "新增", "货品档案导入").getSQL());
  881. sqlList.add(DataContrlLog.createLog(this, "sa_itemsaleclass", sa_itemsaleclassid, "新增", "货品档案导入").getSQL());
  882. }
  883. }
  884. if (!sqlList.isEmpty()) {
  885. dbConnect.runSqlUpdate(sqlList);
  886. }
  887. } catch (Exception e1) {
  888. e1.printStackTrace();
  889. return getErrReturnObject().setErrMsg(e1.getMessage()).toString();
  890. }
  891. return getSucReturnObject().toString();
  892. }
  893. public XSSFSheet addSheet(ExcelFactory excelFactory, String sheetname, Rows datarows,
  894. HashMap<String, String> titlemap) {
  895. ArrayList<String> keylist = datarows.getFieldList();
  896. XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet(sheetname);
  897. XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
  898. XSSFCellStyle xssfCellStyle1 = xssfFWorkbook.createCellStyle();
  899. XSSFFont font = xssfFWorkbook.createFont();
  900. font.setColor((short) 0xa);
  901. font.setFontHeightInPoints((short) 12);
  902. font.setBold(true);
  903. xssfCellStyle1.setFont(font);
  904. CellStyle style = xssfFWorkbook.createCellStyle();
  905. DataFormat format = xssfFWorkbook.createDataFormat();
  906. style.setDataFormat(format.getFormat("@"));
  907. // 对单独某一列进行样式赋值,第一个参数为列数,第二个参数为样式
  908. for (int i = 0; i <= 32; i++) {
  909. sheet.setDefaultColumnStyle(i, style);
  910. }
  911. ExportExcel.setBatchDetailSheetColumn2(sheet);// 设置工作薄列宽
  912. XSSFCellStyle titleCellStyle1 = ExportExcel.createTitleCellStyle1(xssfFWorkbook);
  913. XSSFCellStyle titleCellStyle2 = ExportExcel.createTitleCellStyle2(xssfFWorkbook);
  914. XSSFCellStyle titleCellStyle3 = ExportExcel.createTitleCellStyle3(xssfFWorkbook);
  915. ExportExcel.batchDetailErr(sheet, titleCellStyle1, titleCellStyle2, titleCellStyle3, xssfFWorkbook);// 写入标题
  916. for (int n = 0; n < datarows.size(); n++) {
  917. Row row = datarows.get(n);
  918. XSSFRow datarow = sheet.createRow(n + 3);
  919. for (int i1 = 0; i1 < keylist.size(); i1++) {
  920. Class fieldclazztype = datarows.getFieldMeta(keylist.get(i1)).getFieldtype();
  921. if (fieldclazztype == Integer.class) {
  922. datarow.createCell(i1).setCellValue(row.getInteger((String) keylist.get(i1)).intValue());
  923. } else if (fieldclazztype == Long.class) {
  924. datarow.createCell(i1).setCellValue(row.getLong((String) keylist.get(i1)));
  925. } else if (fieldclazztype == Float.class) {
  926. datarow.createCell(i1).setCellValue(row.getFloat((String) keylist.get(i1)));
  927. } else if (fieldclazztype == Double.class) {
  928. datarow.createCell(i1).setCellValue(row.getDouble((String) keylist.get(i1)));
  929. } else {
  930. datarow.createCell(i1).setCellValue(row.getString((String) keylist.get(i1)));
  931. }
  932. if (i1 == 29) {
  933. datarow.getCell(i1).setCellStyle(xssfCellStyle1);
  934. }
  935. }
  936. }
  937. return sheet;
  938. }
  939. }