Item.java 75 KB

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