toolscode.java 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537
  1. package restcontroller.webmanage.sale.toolscode;
  2. import beans.data.BatchDeleteErr;
  3. import beans.datacontrllog.DataContrlLog;
  4. import com.alibaba.fastjson2.JSONArray;
  5. import com.alibaba.fastjson2.JSONObject;
  6. import common.Controller;
  7. import common.YosException;
  8. import common.annotation.API;
  9. import common.annotation.CACHEING_CLEAN;
  10. import common.data.*;
  11. import org.apache.commons.lang.StringUtils;
  12. import org.apache.poi.xssf.usermodel.*;
  13. import restcontroller.R;
  14. import java.util.ArrayList;
  15. import java.util.Date;
  16. import java.util.HashMap;
  17. public class toolscode extends Controller {
  18. public toolscode(JSONObject arg0) throws YosException {
  19. super(arg0);
  20. // TODO Auto-generated constructor stub
  21. }
  22. /**
  23. * 下载工具序列号模板
  24. *
  25. * @return
  26. */
  27. @API(title = "下载工具序列号模板", apiversion = R.ID20230114142403.v1.class)
  28. public String downloadToolscodeExcel() throws YosException {
  29. ExcelFactory excelFactory = new ExcelFactory("ImportTemplateForToolscode");
  30. XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet("Sheet1");
  31. XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
  32. ExportExcel.setBatchDetailSheetColumn1(sheet);// 设置工作薄列宽
  33. XSSFCellStyle titleCellStyle1 = ExportExcel.createTitleCellStyle1(xssfFWorkbook);
  34. XSSFCellStyle titleCellStyle2 = ExportExcel.createTitleCellStyle2(xssfFWorkbook);
  35. XSSFCellStyle titleCellStyle3 = ExportExcel.createBodyCellStyle(xssfFWorkbook);
  36. XSSFCellStyle titleCellStyle4 = ExportExcel.createTitleCellStyle3(xssfFWorkbook);
  37. ExportExcel.batchDetail(sheet, titleCellStyle1, titleCellStyle2, titleCellStyle3, titleCellStyle4, xssfFWorkbook);// 写入标题
  38. Rows aa = saveToExcelAttachment(excelFactory);
  39. String url = "";
  40. if (!aa.isEmpty()) {
  41. url = aa.get(0).getString("url");
  42. }
  43. return getSucReturnObject().setData(url).toString();
  44. }
  45. /**
  46. * 导入工具序列号
  47. *
  48. * @return
  49. */
  50. @API(title = "导入工具序列号", apiversion = R.ID20230114142503.v1.class)
  51. @CACHEING_CLEAN(apiversions = {R.ID20221215100903.v1.class, R.ID20221215101003.v1.class})
  52. public String uploadToolscodeByExcel() throws YosException {
  53. long itemid = 0;
  54. // JSONArray jsonArray = new JSONArray();
  55. // jsonArray.add(content.getLong("attachmentid"));
  56. //
  57. // content.put("ownertable", "sa_itemsku");
  58. // content.put("ownerid", sa_itemskuid);
  59. // content.put("usetype", "default");
  60. // content.put("attachmentids", jsonArray);
  61. // Attachment attachment = new Attachment(content);
  62. // attachment.createFileLink();
  63. ExcelFactory e;
  64. try {
  65. // 华为云
  66. e = getExcelAttachment(content.getLong("attachmentid"));
  67. // 本地
  68. //e = getPostExcel();
  69. // Rows keyRow = dbConnect.runSqlQuery("select fagentnum,faddress from tagents
  70. // where 1=2");
  71. // Rows row1 = e.getSheetRows(1, keyRow, 1);
  72. ArrayList<String> keys = new ArrayList<>();
  73. ArrayList<String> sqllist = new ArrayList<>();
  74. keys.add("itemno");
  75. keys.add("sku");
  76. Rows rows = e.getSheetRows(0, keys, 3);
  77. int a = 1;
  78. int i = 0;
  79. // String msg = "";
  80. boolean iserr = false;
  81. Rows rowserr = new Rows();
  82. Rows rowssuc = new Rows();
  83. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "plm_item", "itemid", "itemno");
  84. querySQL.setTableAlias("t1");
  85. querySQL.setSiteid(siteid);
  86. querySQL.setWhere("t1.status='审核'");
  87. querySQL.setWhere("t1.itemno", rows.toArrayList("itemno"));
  88. Rows itemRows = querySQL.query();
  89. RowsMap itemRowsMap = itemRows.toRowsMap("itemno");
  90. QuerySQL skuquerySQL = SQLFactory.createQuerySQL(this, "sa_itemsku", "sku");
  91. skuquerySQL.setTableAlias("t1");
  92. skuquerySQL.setSiteid(siteid);
  93. skuquerySQL.setWhere("t1.sku", rows.toArrayList("sku"));
  94. Rows skuRows = skuquerySQL.query();
  95. RowsMap skuRowsMap = skuRows.toRowsMap("sku");
  96. for (Row row : rows) {
  97. row.put("sku",row.getString("sku").replaceAll(" ", ""));
  98. }
  99. RowsMap rowsMap = rows.toRowsMap("sku");
  100. for (Row row : rows) {
  101. if (StringUtils.isEmpty(row.getString("itemno")) || StringUtils.isEmpty(row.getString("sku"))) {
  102. iserr = true;
  103. row.put("msg", "错误信息:商品编号,序列号不能为空");
  104. rowserr.add(row);
  105. // rows.remove(row);
  106. // msg = "手机号,省市县及来源不能为空";
  107. } else {
  108. if (itemRowsMap.containsKey(row.getString("itemno"))) {
  109. if (skuRowsMap.containsKey(row.getString("sku"))) {
  110. iserr = true;
  111. row.put("msg", "错误信息:序列号" + row.getString("sku") + "已存在");
  112. rowserr.add(row);
  113. }else if(rowsMap.get(row.getString("sku")).size()>1){
  114. iserr = true;
  115. row.put("msg", "错误信息:序列号" + row.getString("sku") + "在excel中重复存在");
  116. rowserr.add(row);
  117. } else {
  118. row.put("itemid", itemRowsMap.get(row.getString("itemno")).get(0).getString("itemid"));
  119. rowssuc.add(row);
  120. }
  121. } else {
  122. iserr = true;
  123. row.put("msg", "错误信息:不存在商品编号为" + row.getString("itemno") + "的商品");
  124. rowserr.add(row);
  125. }
  126. }
  127. }
  128. if (!rowssuc.isEmpty()) {
  129. SQLFactory sqlFactoryupload = null;
  130. for (Row row : rowssuc) {
  131. Long sa_itemskuid = createTableID("sa_itemsku");
  132. sqlFactoryupload = new SQLFactory(this, "商品序列号档案新增");
  133. sqlFactoryupload.addParameter("siteid", siteid);
  134. sqlFactoryupload.addParameter("userid", userid);
  135. sqlFactoryupload.addParameter("username", username);
  136. sqlFactoryupload.addParameter("itemid", row.getString("itemid"));
  137. sqlFactoryupload.addParameter("sku", row.getString("sku"));
  138. sqlFactoryupload.addParameter("sa_itemskuid", sa_itemskuid);
  139. sqlFactoryupload.addParameter("islimit", 0);
  140. sqlFactoryupload.addParameter("sys_enterpriseid", 0);
  141. sqlFactoryupload.addParameter("sa_agentsid", 0);
  142. sqlFactoryupload.addParameter("stockid", 0);
  143. sqlFactoryupload.addParameter("isyj", 0);
  144. sqllist.add(sqlFactoryupload.getSQL());
  145. sqllist.add(DataContrlLog.createLog(this, "sa_itemsku", sa_itemskuid, "导入", "商品序列号导入成功").getSQL());
  146. i++;
  147. }
  148. }
  149. if (sqllist != null && !sqllist.isEmpty()) {
  150. dbConnect.runSqlUpdate(sqllist);
  151. }
  152. if (iserr) {
  153. ExcelFactory excelFactory = new ExcelFactory("sa_quotedpriceerr");
  154. HashMap<String, String> map = new HashMap<String, String>();
  155. map.put("itemno", "商品编号");
  156. map.put("sku", "序列号");
  157. map.put("msg", "错误信息");
  158. ArrayList<String> colNameList = new ArrayList<String>();
  159. HashMap<String, Class> keytypemap = new HashMap<String, Class>();
  160. colNameList.add("itemno");
  161. colNameList.add("sku");
  162. colNameList.add("msg");
  163. keytypemap.put("itemno", String.class);
  164. keytypemap.put("sku", String.class);
  165. keytypemap.put("msg", String.class);
  166. rowserr.setFieldList(colNameList);
  167. rowserr.setFieldTypeMap(keytypemap);
  168. addSheet(excelFactory, "Sheet1", rowserr, map);
  169. Rows aa = saveToExcelAttachment(excelFactory);
  170. String url = "";
  171. if (!aa.isEmpty()) {
  172. url = aa.get(0).getString("url");
  173. }
  174. return getSucReturnObject().setData(url).toString();
  175. }
  176. } catch (Exception e1) {
  177. // TODO Auto-generated catch block
  178. e1.printStackTrace();
  179. return getErrReturnObject().setErrMsg(e1.getMessage()).toString();
  180. }
  181. return getSucReturnObject().toString();
  182. }
  183. @API(title = "商品序列号档案新增更新", apiversion = R.ID20221215100803.v1.class)
  184. @CACHEING_CLEAN(apiversions = {R.ID20221215100903.v1.class, R.ID20221215101003.v1.class})
  185. public String insertormodify_toolscode() throws YosException {
  186. ArrayList<String> sqlList = new ArrayList<>();
  187. // 表名
  188. String tableName = "sa_itemsku";
  189. Long sa_itemskuid = content.getLong("sa_itemskuid");
  190. Long sa_agentsid = content.getLong("sa_agentsid");
  191. Long stockid = content.getLong("stockid");
  192. // Long sys_enterpriseid = content.getLong("sys_enterpriseid");
  193. // Long sa_logiscompid = content.getLong("sa_logiscompid");
  194. // Long rec_contactsid = content.getLongValue("rec_contactsid");
  195. long itemid = content.getLong("itemid");
  196. String sku = content.getString("sku");
  197. boolean islimit = content.getBooleanValue("islimit");
  198. boolean isyj = content.getBooleanValue("isyj");
  199. SQLFactory sqlFactory = new SQLFactory(this, "商品序列号档案新增");
  200. if (sa_itemskuid <= 0 || dbConnect.runSqlQuery("select sa_itemskuid from sa_itemsku where sa_itemskuid=" + sa_itemskuid).isEmpty()) {
  201. Rows rowscode = dbConnect.runSqlQuery("select sa_itemskuid from sa_itemsku where siteid='" + siteid + "' and sku='" + sku + "'");
  202. if (!rowscode.isEmpty()) {
  203. return getErrReturnObject().setErrMsg("该序列号已被使用").toString();
  204. }
  205. sa_itemskuid = createTableID(tableName);
  206. sqlFactory.addParameter("sa_agentsid", sa_agentsid);
  207. sqlFactory.addParameter("itemid", itemid);
  208. sqlFactory.addParameter("stockid", stockid);
  209. sqlFactory.addParameter("islimit", islimit);
  210. sqlFactory.addParameter("isyj", isyj);
  211. sqlFactory.addParameter("sku", sku);
  212. sqlList.add(DataContrlLog.createLog(this, "sa_itemsku", sa_itemskuid, "新增", "商品序列号档案新增成功").getSQL());
  213. } else {
  214. Rows rows = dbConnect.runSqlQuery("SELECT status,sa_itemskuid,sa_agentsid,stockid,itemid from sa_itemsku WHERE sa_itemskuid = " + sa_itemskuid);
  215. Rows rowscode = dbConnect.runSqlQuery("select sa_itemskuid from sa_itemsku where siteid='" + siteid + "' and sku='" + sku + "' and sa_itemskuid !=" + sa_itemskuid);
  216. if (!rowscode.isEmpty()) {
  217. return getErrReturnObject().setErrMsg("该序列号已被使用").toString();
  218. }
  219. if (rows.isNotEmpty()) {
  220. if (!rows.get(0).getBoolean("isused")) {
  221. long oldsa_agentsid = 0;
  222. long newsa_agentsid = 0;
  223. long olditemid = 0;
  224. long newitemid = 0;
  225. long oldstockid = 0;
  226. long newstockid = 0;
  227. sqlFactory = new SQLFactory(this, "商品序列号档案更新");
  228. sqlFactory.addParameter("sa_agentsid", sa_agentsid);
  229. sqlFactory.addParameter("islimit", islimit);
  230. sqlFactory.addParameter("itemid", itemid);
  231. sqlFactory.addParameter("isyj", isyj);
  232. sqlFactory.addParameter("stockid", stockid);
  233. sqlFactory.addParameter("sku", sku);
  234. sqlList.add(DataContrlLog.createLog(this, "sa_itemsku", sa_itemskuid, "更新", "商品序列号档案更新成功").getSQL());
  235. if (sa_agentsid != rows.get(0).getLong("sa_agentsid")) {
  236. newsa_agentsid = sa_agentsid;
  237. oldsa_agentsid = rows.get(0).getLong("sa_agentsid");
  238. }
  239. if (itemid != rows.get(0).getLong("itemid")) {
  240. newitemid = itemid;
  241. olditemid = rows.get(0).getLong("itemid");
  242. if (rows.get(0).getLong("wmsuploadflag") == 2) {
  243. sqlList.add("update sa_itemsku set wmsuploadflag=1 where sa_itemskuid=" + sa_itemskuid + " and siteid='" + siteid + "'");
  244. }
  245. if (StringUtils.isBlank(content.getStringValue("changenotes"))) {
  246. return getErrReturnObject().setErrMsg("变更商品信息时,需填写变更原因").toString();
  247. }
  248. }
  249. if (stockid != rows.get(0).getLong("stockid")) {
  250. newstockid = stockid;
  251. oldstockid = rows.get(0).getLong("stockid");
  252. }
  253. if (newstockid != 0 || newitemid != 0 || newsa_agentsid != 0) {
  254. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_itemsku_change");
  255. insertSQL.setValue("siteid", siteid);
  256. insertSQL.setValue("sa_itemsku_changeid", createTableID("sa_itemsku_change"));
  257. insertSQL.setValue("sa_itemskuid", sa_itemskuid);
  258. insertSQL.setValue("sa_agentsid", oldsa_agentsid);
  259. insertSQL.setValue("sa_agentsidnew", newsa_agentsid);
  260. insertSQL.setValue("itemid", olditemid);
  261. insertSQL.setValue("itemidnew", newitemid);
  262. insertSQL.setValue("stockid", oldstockid);
  263. insertSQL.setValue("stockidnew", newstockid);
  264. insertSQL.setValue("changenotes", "");
  265. if (newitemid != 0) {
  266. insertSQL.setValue("changenotes", content.getStringValue("changenotes"));
  267. }
  268. insertSQL.setDateValue("changedate");
  269. insertSQL.setValue("changeby", username);
  270. sqlList.add(insertSQL.getSQL());
  271. }
  272. } else {
  273. return getErrReturnObject().setErrMsg("非在库状态下无法编辑").toString();
  274. }
  275. } else {
  276. return getErrReturnObject().setErrMsg("该商品序列号档案不存在").toString();
  277. }
  278. }
  279. sqlFactory.addParameter("siteid", siteid);
  280. sqlFactory.addParameter("userid", userid);
  281. sqlFactory.addParameter("username", username);
  282. sqlFactory.addParameter("sa_itemskuid", sa_itemskuid);
  283. sqlList.add(sqlFactory.getSQL());
  284. dbConnect.runSqlUpdate(sqlList);
  285. content.put("sa_itemskuid", sa_itemskuid);
  286. return queryToolscodeMain();
  287. }
  288. @API(title = "商品序列号档案详情", apiversion = R.ID20221215100903.v1.class)
  289. public String queryToolscodeMain() throws YosException {
  290. Long sa_itemskuid = content.getLong("sa_itemskuid");
  291. SQLFactory sqlFactory = new SQLFactory(this, "商品序列号档案详情查询");
  292. sqlFactory.addParameter("sa_itemskuid", sa_itemskuid);
  293. sqlFactory.addParameter("siteid", siteid);
  294. Rows rows = dbConnect.runSqlQuery(sqlFactory);
  295. Row row = rows.isNotEmpty() ? rows.get(0) : new Row();
  296. return getSucReturnObject().setData(row).toString();
  297. }
  298. @API(title = "查询商品序列号档案列表", apiversion = R.ID20221215101003.v1.class)
  299. public String queryToolscodeList() throws YosException {
  300. QuerySQL skuQuery = SQLFactory.createQuerySQL(this, "sa_itemsku", "sa_itemskuid", "sku", "createdate").setTableAlias("t1");
  301. skuQuery.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.itemid=t2.itemid", "itemid", "itemno", "itemname", "spec", "model", "topclassnum");
  302. skuQuery.addJoinTable(JOINTYPE.left, "plm_unit", "t3", "t2.unitid=t3.unitid");
  303. skuQuery.addJoinTable(JOINTYPE.left, "st_stock", "t4", "t4.stockno=t2.stockno");
  304. skuQuery.addJoinTable(JOINTYPE.left, "sys_enterprise", "t5", "t1.sys_enterpriseid=t5.sys_enterpriseid", "t5.enterprisename","abbreviation");
  305. skuQuery.addJoinTable(JOINTYPE.left, "sa_agents", "t6", "t1.sys_enterpriseid=t6.sys_enterpriseid", "t6.agentnum");
  306. skuQuery.addJoinTable(JOINTYPE.left, "st_stock", "t7", "t1.stockid=t7.stockid", "stockno", "stockname");
  307. skuQuery.addQueryFields("itemstockno", "t2.stockno");
  308. skuQuery.addQueryFields("itemstockname", "t4.stockname");
  309. skuQuery.addQueryFields("unit", "t3.unitname");
  310. skuQuery.setWhere("siteid", siteid);
  311. skuQuery.setPage(pageSize, pageNumber);
  312. skuQuery.setOrderBy("sa_itemskuid desc");
  313. if (content.containsKey("where")) {
  314. JSONObject whereObject = content.getJSONObject("where");
  315. if (!"".equals(whereObject.getStringValue("condition"))) {
  316. String condition = whereObject.getString("condition");
  317. skuQuery.setWhere("( t1.sku like'%" + condition + "%'" + "or exists(select * from plm_item where plm_item.itemid=t1.itemid and (plm_item.itemno like'%" + condition + "%'or plm_item.itemname like'%" + condition + "%'))" + "or exists(select * from sa_agents where sa_agents.sa_agentsid=t1.sa_agentsid and sa_agents.agentnum like'%" + condition + "%')" + ")");
  318. }
  319. if (!"".equals(whereObject.getStringValue("status"))) {
  320. skuQuery.setWhere("t1.status", whereObject.getString("status"));
  321. }
  322. if (!"".equals(whereObject.getStringValue("isused"))) {
  323. skuQuery.setWhere("t1.isused", whereObject.getBooleanValue("isused"));
  324. }
  325. if (whereObject.containsKey("sku") && !"".equals(whereObject.getString("sku"))) {
  326. skuQuery.setWhere("t1.sku",whereObject.getString("sku"));
  327. }
  328. }
  329. Rows skuRows = skuQuery.query();
  330. if (skuRows.isNotEmpty()) {
  331. RowsMap skuChangeRowsMap = SQLFactory.createQuerySQL(this, "sa_itemsku_change", "sa_itemskuid", "changenotes").setWhere("sa_itemskuid", skuRows.toArrayList("sa_itemskuid")).setOrderBy("sa_itemsku_changeid desc").query().toRowsMap("sa_itemskuid");
  332. RowsMap warrantycardRowsMap = SQLFactory.createQuerySQL(this, "sa_warrantycard", "sku","name", "phonenumber","address","sa_customersid","province","city","county","begdate","enddate","cardno").setWhere("sku", skuRows.toArrayList("sku")).setWhere(" isvoid=0 ").query().toRowsMap("sku");
  333. for (Row skuRow : skuRows) {
  334. String sa_itemskuid = skuRow.getString("sa_itemskuid");
  335. String sku = skuRow.getString("sku");
  336. if (skuChangeRowsMap.containsKey(sa_itemskuid) && skuChangeRowsMap.get(sa_itemskuid).isNotEmpty()) {
  337. Row changeNoteRow = skuChangeRowsMap.get(sa_itemskuid).get(0);
  338. skuRow.put("changenotes", changeNoteRow.getString("changenotes"));
  339. }
  340. if (warrantycardRowsMap.containsKey(sku) && warrantycardRowsMap.get(sku).isNotEmpty()) {
  341. Row warrantycardRow = warrantycardRowsMap.get(sku).get(0);
  342. skuRow.put("name", warrantycardRow.getString("name"));
  343. skuRow.put("phonenumber", warrantycardRow.getString("phonenumber"));
  344. skuRow.put("address", warrantycardRow.getString("address"));
  345. skuRow.put("sa_customersid", warrantycardRow.getLong("sa_customersid"));
  346. skuRow.put("province", warrantycardRow.getString("province"));
  347. skuRow.put("city", warrantycardRow.getString("city"));
  348. skuRow.put("county", warrantycardRow.getString("county"));
  349. skuRow.put("cardno", warrantycardRow.getString("cardno"));
  350. skuRow.put("begdate", warrantycardRow.getString("begdate"));
  351. skuRow.put("enddate", warrantycardRow.getString("enddate"));
  352. Date date = new Date();
  353. if(StringUtils.isNotBlank(warrantycardRow.getString("enddate"))){
  354. if (date.before(warrantycardRow.getDate("enddate"))) {
  355. skuRow.put("warrantystatus", "保内");
  356. }else{
  357. skuRow.put("warrantystatus", "保外");
  358. }
  359. }else{
  360. skuRow.put("warrantystatus", "保外");
  361. }
  362. }else{
  363. skuRow.put("name", "");
  364. skuRow.put("phonenumber", "");
  365. skuRow.put("address","");
  366. skuRow.put("sa_customersid", "");
  367. skuRow.put("province", "");
  368. skuRow.put("city", "");
  369. skuRow.put("county", "");
  370. skuRow.put("begdate", "");
  371. skuRow.put("enddate", "");
  372. skuRow.put("warrantystatus", "");
  373. }
  374. }
  375. }
  376. return getSucReturnObject().setData(skuRows).toString();
  377. }
  378. @API(title = "查询序列号变更记录", apiversion = R.ID2025021910425003.v1.class)
  379. public String queryToolscodeChangeNotesList() throws YosException {
  380. Long sa_itemskuid = content.getLong("sa_itemskuid");
  381. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_itemsku_change", "*");
  382. querySQL.setTableAlias("t1");
  383. querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.itemid=t2.itemid");
  384. querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t1.itemidnew=t3.itemid");
  385. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t4", "t1.sa_agentsid=t4.sa_agentsid");
  386. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t5", "t1.sa_agentsidnew=t5.sa_agentsid");
  387. querySQL.addJoinTable(JOINTYPE.left, "st_stock", "t6", "t1.stockid=t6.stockid");
  388. querySQL.addJoinTable(JOINTYPE.left, "st_stock", "t7", "t1.stockidnew=t7.stockid");
  389. querySQL.addQueryFields("itemno","t2.itemno");
  390. querySQL.addQueryFields("itemnonew","t3.itemno");
  391. querySQL.addQueryFields("agentnum","t4.agentnum");
  392. querySQL.addQueryFields("agentnumnew","t5.agentnum");
  393. querySQL.addQueryFields("stockname","t6.stockname");
  394. querySQL.addQueryFields("stocknamenew","t7.stockname");
  395. querySQL.setPage(pageSize, pageNumber);
  396. querySQL.setSiteid(siteid);
  397. querySQL.setWhere("t1.sa_itemskuid", sa_itemskuid);
  398. Rows rows = querySQL.query();
  399. return getSucReturnObject().setData(rows).toString();
  400. }
  401. @API(title = "查询序列号使用记录", apiversion = R.ID2025101809551503.v1.class)
  402. public String querySkuUsedList() throws YosException {
  403. String sku = content.getString("sku");
  404. Rows rows = dbConnect.runSqlQuery("select * from sku_use_view where sku='" + sku + "' order by checkdate desc");
  405. return getSucReturnObject().setData(rows).toString();
  406. }
  407. @API(title = "判断序列号是否符合要求", apiversion = R.ID2025121515015903.v1.class)
  408. public String jundgeSku() throws YosException {
  409. if(content.containsKey("sys_enterpriseid")){
  410. sys_enterpriseid=content.getLongValue("sys_enterpriseid");
  411. }
  412. String sku=content.getString("sku");
  413. Rows skuRows =dbConnect.runSqlQuery("select sys_enterpriseid from sa_itemsku where sku='"+sku+"'");
  414. if(skuRows.isEmpty()){
  415. return getErrReturnObject().setErrMsg("序列号不存在").toString();
  416. }
  417. if(skuRows.get(0).getLong("sys_enterpriseid")!=sys_enterpriseid){
  418. return getErrReturnObject().setErrMsg("序列号不在当前经销商所在仓").toString();
  419. }
  420. return getSucReturnObject().toString();
  421. }
  422. @API(title = "删除", apiversion = R.ID20221215101103.v1.class)
  423. @CACHEING_CLEAN(apiversions = {R.ID20221215101003.v1.class, R.ID20221215100903.v1.class})
  424. public String delete() throws YosException {
  425. JSONArray sa_itemskuids = content.getJSONArray("sa_itemskuids");
  426. BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sa_itemskuids.size());
  427. for (Object o : sa_itemskuids) {
  428. long sa_itemskuid = Long.parseLong(o.toString());
  429. Rows RowsStatus = dbConnect.runSqlQuery("select sa_itemskuid,status from sa_itemsku where siteid='" + siteid + "' and sa_itemskuid='" + sa_itemskuid + "'");
  430. if (RowsStatus.isNotEmpty()) {
  431. if (RowsStatus.get(0).getBoolean("isused")) {
  432. batchDeleteErr.addErr(sa_itemskuid, "已使用的商品序列号无法删除");
  433. continue;
  434. }
  435. }
  436. dbConnect.runSqlUpdate("delete from sa_itemsku where siteid='" + siteid + "' and sa_itemskuid=" + sa_itemskuid);
  437. }
  438. return batchDeleteErr.getReturnObject().toString();
  439. }
  440. public XSSFSheet addSheet(ExcelFactory excelFactory, String sheetname, Rows datarows, HashMap<String, String> titlemap) {
  441. ArrayList<String> keylist = datarows.getFieldList();
  442. XSSFSheet sheet = excelFactory.getXssfWorkbook().createSheet(sheetname);
  443. XSSFWorkbook xssfFWorkbook = excelFactory.getXssfWorkbook();
  444. XSSFCellStyle xssfCellStyle1 = xssfFWorkbook.createCellStyle();
  445. XSSFFont font = xssfFWorkbook.createFont();
  446. font.setColor((short) 0xa);
  447. font.setFontHeightInPoints((short) 12);
  448. font.setBold(true);
  449. xssfCellStyle1.setFont(font);
  450. ExportExcel.setBatchDetailSheetColumn2(sheet);// 设置工作薄列宽
  451. XSSFCellStyle titleCellStyle1 = ExportExcel.createTitleCellStyle1(xssfFWorkbook);
  452. XSSFCellStyle titleCellStyle2 = ExportExcel.createTitleCellStyle2(xssfFWorkbook);
  453. XSSFCellStyle titleCellStyle3 = ExportExcel.createTitleCellStyle3(xssfFWorkbook);
  454. ExportExcel.batchDetailErr(sheet, titleCellStyle1, titleCellStyle2, titleCellStyle3, xssfFWorkbook);// 写入标题
  455. for (int n = 0; n < datarows.size(); n++) {
  456. Row row = datarows.get(n);
  457. XSSFRow datarow = sheet.createRow(n + 3);
  458. for (int i1 = 0; i1 < keylist.size(); i1++) {
  459. Class fieldclazztype = datarows.getFieldMeta(keylist.get(i1)).getFieldtype();
  460. if (fieldclazztype == Integer.class) {
  461. datarow.createCell(i1).setCellValue(row.getInteger((String) keylist.get(i1)));
  462. } else if (fieldclazztype == Long.class) {
  463. datarow.createCell(i1).setCellValue(row.getLong((String) keylist.get(i1)));
  464. } else if (fieldclazztype == Float.class) {
  465. datarow.createCell(i1).setCellValue(row.getFloat((String) keylist.get(i1)));
  466. } else if (fieldclazztype == Double.class) {
  467. datarow.createCell(i1).setCellValue(row.getDouble((String) keylist.get(i1)));
  468. } else {
  469. datarow.createCell(i1).setCellValue(row.getString((String) keylist.get(i1)));
  470. }
  471. if (i1 == 2) {
  472. datarow.getCell(i1).setCellStyle(xssfCellStyle1);
  473. }
  474. }
  475. }
  476. return sheet;
  477. }
  478. }