Item.java 92 KB

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