sendrepair.java 76 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279
  1. package restcontroller.webmanage.sale.sendrepair;
  2. import beans.accountbalance.Accountbalance;
  3. import beans.accountbalance.CashbillEntity;
  4. import beans.data.BatchDeleteErr;
  5. import beans.datacontrllog.DataContrlLog;
  6. import com.alibaba.fastjson2.JSONArray;
  7. import com.alibaba.fastjson2.JSONObject;
  8. import common.Controller;
  9. import common.YosException;
  10. import common.annotation.API;
  11. import common.annotation.CACHEING;
  12. import common.annotation.CACHEING_CLEAN;
  13. import common.data.*;
  14. import org.apache.commons.lang.StringUtils;
  15. import restcontroller.R;
  16. import java.math.BigDecimal;
  17. import java.util.ArrayList;
  18. @API(title = "送修单")
  19. public class sendrepair extends Controller {
  20. public sendrepair(JSONObject content) throws YosException {
  21. super(content);
  22. }
  23. @API(title = "送修单更新", apiversion = R.ID2025070414202703.v1.class, intervaltime = 200)
  24. @CACHEING_CLEAN(apiClass = {sendrepair.class})
  25. public String insertormodify_sendrepair() throws YosException {
  26. ArrayList<String> sqlList = new ArrayList<>();
  27. // 表名
  28. String tableName = "sa_sendrepair";
  29. Long sa_sendrepairid = content.getLong("sa_sendrepairid");
  30. // String type = content.getString("type");
  31. // String typemx = content.getStringValue("typemx");
  32. // Long sa_orderid = content.getLong("sa_orderid");
  33. // BigDecimal rebate_userate =content.getBigDecimalValue("rebate_userate");
  34. // BigDecimal returnamount = content.getBigDecimalValue("returnamount");
  35. // Long sa_accountclassid = content.getLong("sa_accountclassid");
  36. // String reason = content.getStringValue("reason");
  37. // boolean isitemreturn = content.getBooleanValue("isitemreturn");
  38. //// String logisticno = content.getStringValue("logisticno");
  39. if (sa_sendrepairid > 0 && dbConnect.runSqlQuery(
  40. "select sa_sendrepairid from sa_sendrepair where sa_sendrepairid=" + sa_sendrepairid)
  41. .isNotEmpty()) {
  42. Rows rows = dbConnect.runSqlQuery(
  43. "SELECT status from sa_sendrepair WHERE sa_sendrepairid = "
  44. + sa_sendrepairid);
  45. if (rows.isNotEmpty()) {
  46. if (rows.get(0).getString("status").equals("新建")) {
  47. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, tableName);
  48. updateSQL.setUniqueid(sa_sendrepairid);
  49. updateSQL.setSiteid(siteid);
  50. updateSQL.setValue("remarks", content.getStringValue("remarks"));
  51. updateSQL.setDateValue("changedate");
  52. sqlList.add(updateSQL.getSQL());
  53. sqlList.add(DataContrlLog.createLog(this, "sa_sendrepair", sa_sendrepairid, "更新", "送修单更新成功")
  54. .getSQL());
  55. } else {
  56. // return getErrReturnObject().setErrMsg("非新建状态下无法编辑").toString();
  57. }
  58. } else {
  59. return getErrReturnObject().setErrMsg("该送修单不存在").toString();
  60. }
  61. }
  62. Rows sendrepairdetailRows =dbConnect.runSqlQuery("select sa_sendrepair_detailid from sa_sendrepair_detail where siteid='"+siteid+"' and sa_sendrepairid="+sa_sendrepairid);
  63. if(sendrepairdetailRows.isEmpty()){
  64. return getErrReturnObject().setErrMsg("该送修单表体不存在").toString();
  65. }
  66. UpdateSQL UpdateSQLdetail = SQLFactory.createUpdateSQL(this, "sa_sendrepair_detail");
  67. UpdateSQLdetail.setUniqueid(sendrepairdetailRows.get(0).getLong("sa_sendrepair_detailid"));
  68. UpdateSQLdetail.setSiteid(siteid);
  69. UpdateSQLdetail.setValue("duty", content.getStringValue("duty"));
  70. UpdateSQLdetail.setValue("reason", content.getStringValue("reason"));
  71. UpdateSQLdetail.setValue("demand", content.getStringValue("demand"));
  72. UpdateSQLdetail.setValue("remarks", content.getStringValue("remarksdetail"));
  73. UpdateSQLdetail.setValue("disposition", content.getStringValue("disposition"));
  74. UpdateSQLdetail.setValue("idearemarks", content.getStringValue("idearemarks"));
  75. UpdateSQLdetail.setValue("agentcost", content.getBigDecimal("agentcost"));
  76. UpdateSQLdetail.setValue("logisticscost", content.getBigDecimal("logisticscost"));
  77. UpdateSQLdetail.setValue("logistics", content.getStringValue("logistics"));
  78. UpdateSQLdetail.setValue("price", content.getStringValue("price"));
  79. UpdateSQLdetail.setValue("newitemid", content.getStringValue("newitemid"));
  80. UpdateSQLdetail.setValue("newitemno", content.getStringValue("newitemno"));
  81. UpdateSQLdetail.setValue("newitemname", content.getStringValue("newitemname"));
  82. UpdateSQLdetail.setValue("newspec", content.getStringValue("newspec"));
  83. UpdateSQLdetail.setValue("newsku", content.getStringValue("newsku"));
  84. sqlList.add(UpdateSQLdetail.getSQL());
  85. dbConnect.runSqlUpdate(sqlList);
  86. content.put("sa_sendrepairid", sa_sendrepairid);
  87. return querysendrepairMain();
  88. }
  89. @API(title = "送修单详情", apiversion = R.ID2025070414204203.v1.class)
  90. @CACHEING
  91. public String querysendrepairMain() throws YosException {
  92. Long sa_sendrepairid = content.getLong("sa_sendrepairid");
  93. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_sendrepair", "*");
  94. querySQL.setTableAlias("t1");
  95. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid","enterprisename");
  96. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid","agentnum");
  97. querySQL.addJoinTable(JOINTYPE.left, "sa_sendrepair_detail", "t4", "t1.sa_sendrepairid = t4.sa_sendrepairid AND t1.siteid = t4.siteid","newspec","newitemno","newitemname",
  98. "newitemid","newsku","agentcost","practicalamount","amount","logisticscost","logistics","idearemarks","disposition","demand","reason","duty",
  99. "stockdate","enddate","phonenumber","name","qty","itemid","sku","price");
  100. querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t5", "t5.itemid = t4.itemid AND t5.siteid = t4.siteid","itemname","itemno","spec","model");
  101. querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t6", "t5.unitid = t6.unitid AND t5.siteid = t6.siteid","unitname");
  102. querySQL.addQueryFields("remarksdetail","t4.remarks");
  103. querySQL.setSiteid(siteid);
  104. querySQL.setWhere("t1.sa_sendrepairid",sa_sendrepairid);
  105. querySQL.setPage(pageSize, pageNumber);
  106. Rows rows = querySQL.query();
  107. Rows stockbillrows = dbConnect.runSqlQuery("select * from st_stockbill where sourceid='"+sa_sendrepairid+"' and sourceobject='sa_sendrepair'");
  108. QuerySQL querySumSQL = SQLFactory.createQuerySQL(this, "sa_sendrepair_pj", "sa_sendrepairid");
  109. querySumSQL.setTableAlias("t1");
  110. querySumSQL.setSiteid(siteid);
  111. querySumSQL.addQueryFields("amount", "sum(amount)");
  112. querySumSQL.setWhere("t1.sa_sendrepairid",rows.toArrayList("sa_sendrepairid", new ArrayList<Long>()));
  113. querySumSQL.addGroupBy("sa_sendrepairid");
  114. RowsMap querySumRowsMap =querySumSQL.query().toRowsMap("sa_sendrepairid");
  115. for (Row row :rows){
  116. row.put("stockbillrows",stockbillrows);
  117. if(querySumRowsMap.containsKey(row.getString("sa_sendrepairid"))){
  118. row.put("ysamount",querySumRowsMap.get(row.getString("sa_sendrepairid")).get(0).getBigDecimal("amount"));
  119. }
  120. }
  121. return getSucReturnObject().setData(rows).toString();
  122. }
  123. @API(title = "查询送修单列表", apiversion = R.ID2025070414205403.v1.class)
  124. @CACHEING
  125. public String querysendrepairList() throws YosException {
  126. StringBuffer where = new StringBuffer(" 1=1 ");
  127. if (content.containsKey("where")) {
  128. JSONObject whereObject = content.getJSONObject("where");
  129. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  130. where.append(" and(");
  131. where.append("t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
  132. where.append("or t2.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  133. where.append(")");
  134. }
  135. if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
  136. // if(content.getString("type").equals("借用归还单")) {
  137. // where.append(" and t1.createdate >='" + whereObject.getString("startdate")).append("' ");
  138. // }else if(content.getString("type").equals("退货单")) {
  139. // where.append(" and t1.checkdate >='" + whereObject.getString("startdate")).append("' ");
  140. // }
  141. where.append(" and t1.billdate >='" + whereObject.getString("begindate")).append("' ");
  142. }
  143. if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
  144. // if(content.getString("type").equals("借用归还单")) {
  145. // where.append(" and t1.createdate <='" + whereObject.getString("enddate")).append("' ");
  146. // }else if(content.getString("type").equals("退货单")) {
  147. // where.append(" and t1.checkdate <='" + whereObject.getString("enddate")).append("' ");
  148. // }
  149. where.append(" and t1.billdate <='" + whereObject.getString("enddate")).append(" 23:59:59'");
  150. }
  151. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  152. where.append(" and t1.status ='").append(whereObject.getString("status")).append("' ");
  153. }
  154. }
  155. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_sendrepair", "*");
  156. querySQL.setTableAlias("t1");
  157. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid","enterprisename");
  158. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid","agentnum");
  159. querySQL.addJoinTable(JOINTYPE.left, "sa_sendrepair_detail", "t4", "t1.sa_sendrepairid = t4.sa_sendrepairid AND t1.siteid = t4.siteid","newspec","newitemno","newitemname",
  160. "newitemid","newsku","agentcost","practicalamount","instockdate","amount","logisticscost","logistics","idearemarks","disposition","demand","reason","duty",
  161. "stockdate","enddate","phonenumber","name","qty","itemid","sku","price");
  162. querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t5", "t5.itemid = t4.itemid AND t5.siteid = t4.siteid","itemname","itemno","spec","model");
  163. querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t6", "t5.unitid = t6.unitid AND t5.siteid = t6.siteid","unitname");
  164. querySQL.addQueryFields("remarksdetail","t4.remarks");
  165. querySQL.setSiteid(siteid);
  166. querySQL.setWhere(where.toString());
  167. querySQL.setOrderBy("t1.sa_sendrepairid desc");
  168. querySQL.setPage(pageSize, pageNumber);
  169. Rows rows = querySQL.query();
  170. QuerySQL querySumSQL = SQLFactory.createQuerySQL(this, "sa_sendrepair_pj", "sa_sendrepairid");
  171. querySumSQL.setTableAlias("t1");
  172. querySumSQL.setSiteid(siteid);
  173. querySumSQL.addQueryFields("amount", "sum(amount)");
  174. querySumSQL.setWhere("t1.sa_sendrepairid",rows.toArrayList("sa_sendrepairid", new ArrayList<Long>()));
  175. querySumSQL.addGroupBy("sa_sendrepairid");
  176. RowsMap querySumRowsMap =querySumSQL.query().toRowsMap("sa_sendrepairid");
  177. for (Row row :rows){
  178. if(querySumRowsMap.containsKey(row.getString("sa_sendrepairid"))){
  179. row.put("ysamount",querySumRowsMap.get(row.getString("sa_sendrepairid")).get(0).getBigDecimal("amount"));
  180. }
  181. }
  182. return getSucReturnObject().setData(rows).toString();
  183. }
  184. @API(title = "删除", apiversion = R.ID2025070414210803.v1.class)
  185. @CACHEING_CLEAN(apiClass = {sendrepair.class})
  186. public String delete() throws YosException {
  187. JSONArray sa_sendrepairids = content.getJSONArray("sa_sendrepairids");
  188. BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, sa_sendrepairids.size());
  189. for (Object o : sa_sendrepairids) {
  190. long sa_sendrepairid = Long.parseLong(o.toString());
  191. Rows RowsStatus = dbConnect
  192. .runSqlQuery("select sa_sendrepairid,status,sourceid from sa_sendrepair where siteid='" + siteid
  193. + "' and sa_sendrepairid='" + sa_sendrepairid + "'");
  194. if (RowsStatus.isNotEmpty()) {
  195. if (!RowsStatus.get(0).getString("status").equals("新建")) {
  196. batchDeleteErr.addErr(sa_sendrepairid, "非新建状态的送修单无法删除");
  197. continue;
  198. }
  199. }
  200. dbConnect.runSqlUpdate("delete from sa_sendrepair where siteid='" + siteid + "' and sa_sendrepairid="
  201. + sa_sendrepairid);
  202. dbConnect.runSqlUpdate("delete from sa_sendrepair_detail where siteid='" + siteid + "' and sa_sendrepairid="
  203. + sa_sendrepairid);
  204. dbConnect.runSqlUpdate("delete from sa_sendrepair_pj where siteid='" + siteid + "' and sa_sendrepairid="
  205. + sa_sendrepairid);
  206. dbConnect.runSqlUpdate("update st_stockbill set isrepair=0 where siteid='" + siteid + "' and st_stockbillid="
  207. + RowsStatus.get(0).getLong("sourceid"));
  208. dbConnect.runSqlUpdate("update st_stockbill_items set isrepair=0 where siteid='" + siteid + "' and st_stockbillid="
  209. + sa_sendrepairid);
  210. }
  211. return batchDeleteErr.getReturnObject().toString();
  212. }
  213. @API(title = "确认", apiversion = R.ID2025102409585903.v1.class)
  214. @CACHEING_CLEAN(apiClass = {sendrepair.class})
  215. public String confirm() throws YosException {
  216. Long sa_sendrepairid = content.getLong("sa_sendrepairid");
  217. boolean isconfirm = content.getBooleanValue("isconfirm");
  218. Rows rows = dbConnect.runSqlQuery("select t1.billno,t1.status,t2.reason,t2.disposition from sa_sendrepair t1 inner join sa_sendrepair_detail t2 on t1.sa_sendrepairid=t2.sa_sendrepairid where t1.sa_sendrepairid ='"
  219. + sa_sendrepairid + "' and t1.siteid='" + siteid + "'");
  220. for (Row row : rows) {
  221. if (isconfirm) {
  222. if (!row.getString("status").equals("新建")) {
  223. return getErrReturnObject().setErrMsg("单号为:【" + row.getString("billno") + "】的送修单为非新建状态,无法确认")
  224. .toString();
  225. }
  226. if (StringUtils.isBlank(row.getString("reason")) || StringUtils.isBlank(row.getString("disposition")) ) {
  227. return getErrReturnObject().setErrMsg("原因分析,处理意见必填")
  228. .toString();
  229. }
  230. } else {
  231. if (!row.getString("status").equals("确认")) {
  232. return getErrReturnObject().setErrMsg("单号为:【" + row.getString("billno") + "】的送修单为非确认状态,无法反确认")
  233. .toString();
  234. }
  235. }
  236. }
  237. ArrayList<String> sqlList = new ArrayList<>();
  238. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_sendrepair");
  239. updateSQL.setUniqueid(sa_sendrepairid);
  240. updateSQL.setSiteid(siteid);
  241. if (isconfirm) {
  242. updateSQL.setValue("status","确认");
  243. updateSQL.setValue("confirmby",username);
  244. updateSQL.setDateValue("confirmdate");
  245. sqlList.add(
  246. DataContrlLog.createLog(this, "sa_sendrepair", sa_sendrepairid, "确认", "送修单确认成功").getSQL());
  247. } else {
  248. updateSQL.setValue("status","新建");
  249. updateSQL.setValue("confirmby","");
  250. updateSQL.setValue("confirmdate","null");
  251. sqlList.add(
  252. DataContrlLog.createLog(this, "sa_sendrepair", sa_sendrepairid, "反确认", "送修单反确认成功").getSQL());
  253. }
  254. sqlList.add(updateSQL.getSQL());
  255. dbConnect.runSqlUpdate(sqlList);
  256. return getSucReturnObject().toString();
  257. }
  258. @API(title = "进仓", apiversion = R.ID2025102413280503.v1.class)
  259. @CACHEING_CLEAN(apiClass = {sendrepair.class})
  260. public String instock() throws YosException {
  261. Long sa_sendrepairid = content.getLong("sa_sendrepairid");
  262. boolean isinstock = content.getBooleanValue("isinstock");
  263. Rows rows = dbConnect.runSqlQuery("select t1.sa_sendrepairid,t1.sys_enterpriseid,t1.remarks,t1.billno,t1.status,t2.qty,t2.sa_sendrepair_detailid,t2.reason,t2.disposition,t2.newitemno,t2.newsku,t2.newitemid,t2.sku,t2.name,t2.phonenumber,t2.address,t3.itemno,t2.itemid,t3.itemname,t3.model,t4.model newmodel,t4.skucontrol from sa_sendrepair t1 " +
  264. "inner join sa_sendrepair_detail t2 on t1.sa_sendrepairid=t2.sa_sendrepairid " +
  265. "left join plm_item t3 on t3.itemid=t2.itemid " +
  266. "left join plm_item t4 on t4.itemid=t2.newitemid " +
  267. " where t1.sa_sendrepairid ='"
  268. + sa_sendrepairid + "' and t1.siteid='" + siteid + "'");
  269. if(rows.isEmpty()){
  270. return getErrReturnObject().setErrMsg("送修单不存在")
  271. .toString();
  272. }
  273. Row row =rows.get(0);
  274. if (isinstock) {
  275. if (!row.getString("status").equals("确认")) {
  276. return getErrReturnObject().setErrMsg("单号为:【" + row.getString("billno") + "】的送修单为非确认状态,无法进仓")
  277. .toString();
  278. }
  279. if (row.getString("disposition").equalsIgnoreCase(
  280. "翻新")) {
  281. if (row.getString("newitemno").equalsIgnoreCase(
  282. "")
  283. || row.getString("newsku")
  284. .equalsIgnoreCase("")) {
  285. return getErrReturnObject().setErrMsg("处理意见为翻新时应填写新的品号与新的序列号").toString();
  286. }
  287. if (row.getString("newitemid").equals(
  288. row.getString("itemid"))
  289. && row.getString("newsku")
  290. .equals(row
  291. .getString("sku"))) {
  292. return getErrReturnObject().setErrMsg("翻新前后序列号和品号不能相同").toString();
  293. }
  294. }
  295. if (row.getString("disposition").equals("待修")) {
  296. return getErrReturnObject().setErrMsg("待修不可进仓")
  297. .toString();
  298. }
  299. } else {
  300. if (!row.getString("status").equals("进仓")) {
  301. return getErrReturnObject().setErrMsg("单号为:【" + row.getString("billno") + "】的送修单为非进仓状态,无法反进仓")
  302. .toString();
  303. }
  304. Rows stockbillRows = dbConnect.runSqlQuery("select type,typemx from st_stockbill where sourceid="+sa_sendrepairid+" and sourceobject='sa_sendrepair' and status='审核'");
  305. RowsMap stockbillRowsMap =stockbillRows.toRowsMap("type");
  306. if (stockbillRowsMap.containsKey("返修出库")) {
  307. return getErrReturnObject().setErrMsg("已生成的出库单已审核不可反进仓").toString();
  308. }
  309. if (stockbillRowsMap.containsKey("其他入库")) {
  310. for(Row stockbillRow :stockbillRowsMap.get("其他入库")){
  311. if(stockbillRow.getString("typemx").equals("正品入库")){
  312. return getErrReturnObject().setErrMsg("已生成的正品入库单已审核不可反进仓").toString();
  313. }
  314. }
  315. }
  316. }
  317. Rows departmenthrrows =dbConnect.runSqlQuery("select *from sys_departmenthrid where hrid="+hrid);
  318. ArrayList<String> sqlList = new ArrayList<>();
  319. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_sendrepair");
  320. updateSQL.setUniqueid(sa_sendrepairid);
  321. updateSQL.setSiteid(siteid);
  322. Rows dispositionRows =dbConnect.runSqlQuery("select * from sa_aftersalesmag_disposition where disposition='"+row.getString("disposition")+"'");
  323. Rows stockRows =dbConnect.runSqlQuery("select * from st_stock");
  324. RowsMap stockRowsMap = stockRows.toRowsMap("stockno");
  325. if(dispositionRows.isEmpty()){
  326. return getErrReturnObject().setErrMsg("返修处理意见不存在")
  327. .toString();
  328. }
  329. if (isinstock) {
  330. updateSQL.setValue("status","进仓");
  331. updateSQL.setValue("instockby",username);
  332. updateSQL.setDateValue("instockdate");
  333. sqlList.add(
  334. DataContrlLog.createLog(this, "sa_sendrepair", sa_sendrepairid, "进仓", "送修单进仓成功").getSQL());
  335. } else {
  336. updateSQL.setValue("status","确认");
  337. updateSQL.setValue("instockby","");
  338. updateSQL.setValue("instockdate","null");
  339. sqlList.add(
  340. DataContrlLog.createLog(this, "sa_sendrepair", sa_sendrepairid, "反进仓", "送修单反进仓成功").getSQL());
  341. }
  342. long st_stockbillid =0;
  343. if(row.getString("disposition").equals("返修") || row.getString("disposition").equals("翻新")){
  344. if(isinstock){
  345. if(StringUtils.isBlank(row.getString("newitemno")) && StringUtils.isBlank(row.getString("newsku"))){
  346. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
  347. st_stockbillid = createTableID("st_stockbill");
  348. insertSQL.setUniqueid(st_stockbillid);
  349. insertSQL.setSiteid(siteid);
  350. insertSQL.setValue("billno", createBillCode("stockbilla"));
  351. insertSQL.setValue("type", "返修出库");
  352. insertSQL.setValue("typemx", "");
  353. insertSQL.setValue("departmentid", departmenthrrows.isNotEmpty()?departmenthrrows.get(0).getLong("departmentid"):0);
  354. insertSQL.setValue("sys_enterpriseid",row.getLong("sys_enterpriseid"));
  355. insertSQL.setValue("rb", 1);
  356. insertSQL.setValue("sourceobject", "sa_sendrepair");
  357. insertSQL.setValue("sourceid", sa_sendrepairid);
  358. insertSQL.setValue("stockid", stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  359. insertSQL.setValue("remarks", row.getString("remarks"));
  360. insertSQL.setValue("status", "新建");
  361. insertSQL.setValue("createby", username);
  362. insertSQL.setDateValue("createdate");
  363. insertSQL.setDateValue("billdate");
  364. sqlList.add(insertSQL.getSQL());
  365. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
  366. long st_stockbill_itemsid = createTableID("st_stockbill_items");
  367. insertSQL.setUniqueid(st_stockbill_itemsid);
  368. insertSQL.setSiteid(siteid);
  369. insertSQL.setValue("rowno", 1);
  370. insertSQL.setValue("sa_dispatch_itemsid", 0);
  371. insertSQL.setValue("sourceobject", "sa_sendrepair_detail");
  372. insertSQL.setValue("sourceid", row.getLong("sa_sendrepair_detailid"));
  373. insertSQL.setValue("stockid",stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  374. insertSQL.setValue("itemid", row.getLong("itemid"));
  375. insertSQL.setValue("itemno", row.getString("itemno"));
  376. insertSQL.setValue("itemname", row.getString("itemname"));
  377. insertSQL.setValue("model", row.getString("model"));
  378. insertSQL.setValue("qty", row.getBigDecimal("qty"));
  379. insertSQL.setValue("sku", row.getString("sku"));
  380. insertSQL.setValue("st_stockbillid", st_stockbillid);
  381. sqlList.add(insertSQL.getSQL());
  382. if(StringUtils.isNotBlank(row.getString("sku"))){
  383. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
  384. long st_stockbill_items_skuid = createTableID("st_stockbill_items_sku");
  385. insertSQL.setUniqueid(st_stockbill_items_skuid);
  386. insertSQL.setSiteid(siteid);
  387. insertSQL.setValue("stockid", stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  388. insertSQL.setValue("itemid", row.getLong("itemid"));
  389. insertSQL.setValue("sku", row.getString("sku"));
  390. insertSQL.setValue("st_stockbillid", st_stockbillid);
  391. insertSQL.setValue("st_stockbill_itemsid", st_stockbill_itemsid);
  392. sqlList.add(insertSQL.getSQL());
  393. }
  394. }else if(!row.getString("newsku").equals(row.getString("sku"))){
  395. sqlList.addAll(updatefmachinecode(isinstock,row,stockRowsMap));
  396. sqlList.addAll(updatefnewmachinecode(isinstock,row,stockRowsMap));
  397. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
  398. st_stockbillid = createTableID("st_stockbill");
  399. insertSQL.setUniqueid(st_stockbillid);
  400. insertSQL.setSiteid(siteid);
  401. insertSQL.setValue("billno", createBillCode("stockbilla"));
  402. insertSQL.setValue("type", "返修出库");
  403. insertSQL.setValue("typemx", "");
  404. insertSQL.setValue("departmentid", departmenthrrows.isNotEmpty()?departmenthrrows.get(0).getLong("departmentid"):0);
  405. insertSQL.setValue("sys_enterpriseid",row.getLong("sys_enterpriseid"));
  406. insertSQL.setValue("rb", 1);
  407. insertSQL.setValue("sourceobject", "sa_sendrepair");
  408. insertSQL.setValue("sourceid", sa_sendrepairid);
  409. insertSQL.setValue("stockid", stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  410. insertSQL.setValue("remarks", row.getString("remarks"));
  411. insertSQL.setValue("status", "新建");
  412. insertSQL.setValue("createby", username);
  413. insertSQL.setDateValue("createdate");
  414. insertSQL.setDateValue("billdate");
  415. sqlList.add(insertSQL.getSQL());
  416. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
  417. long st_stockbill_itemsid = createTableID("st_stockbill_items");
  418. insertSQL.setUniqueid(st_stockbill_itemsid);
  419. insertSQL.setSiteid(siteid);
  420. insertSQL.setValue("rowno", 1);
  421. insertSQL.setValue("sa_dispatch_itemsid", 0);
  422. insertSQL.setValue("sourceobject", "sa_sendrepair_detail");
  423. insertSQL.setValue("sourceid", row.getLong("sa_sendrepair_detailid"));
  424. insertSQL.setValue("stockid",stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  425. insertSQL.setValue("itemid", row.getLong("newitemid"));
  426. insertSQL.setValue("itemno", row.getString("newitemno"));
  427. insertSQL.setValue("itemname", row.getString("newitemname"));
  428. insertSQL.setValue("model", row.getString("newmodel"));
  429. insertSQL.setValue("qty", row.getBigDecimal("qty"));
  430. insertSQL.setValue("sku", row.getString("newsku"));
  431. insertSQL.setValue("st_stockbillid", st_stockbillid);
  432. sqlList.add(insertSQL.getSQL());
  433. if(StringUtils.isNotBlank(row.getString("newsku"))){
  434. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
  435. long st_stockbill_items_skuid = createTableID("st_stockbill_items_sku");
  436. insertSQL.setUniqueid(st_stockbill_items_skuid);
  437. insertSQL.setSiteid(siteid);
  438. insertSQL.setValue("stockid", stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  439. insertSQL.setValue("itemid", row.getLong("newitemid"));
  440. insertSQL.setValue("sku", row.getString("newsku"));
  441. insertSQL.setValue("st_stockbillid", st_stockbillid);
  442. insertSQL.setValue("st_stockbill_itemsid", st_stockbill_itemsid);
  443. sqlList.add(insertSQL.getSQL());
  444. }
  445. }else if(!row.getString("itemid").equals(row.getString("newitemid"))){
  446. sqlList.addAll(updatefitemno(isinstock,row));
  447. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
  448. st_stockbillid = createTableID("st_stockbill");
  449. insertSQL.setUniqueid(st_stockbillid);
  450. insertSQL.setSiteid(siteid);
  451. insertSQL.setValue("billno", createBillCode("stockbilla"));
  452. insertSQL.setValue("type", "返修出库");
  453. insertSQL.setValue("typemx", "");
  454. insertSQL.setValue("departmentid", departmenthrrows.isNotEmpty()?departmenthrrows.get(0).getLong("departmentid"):0);
  455. insertSQL.setValue("sys_enterpriseid",row.getLong("sys_enterpriseid"));
  456. insertSQL.setValue("rb", 1);
  457. insertSQL.setValue("sourceobject", "sa_sendrepair");
  458. insertSQL.setValue("sourceid", sa_sendrepairid);
  459. insertSQL.setValue("stockid", stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  460. insertSQL.setValue("remarks", row.getString("remarks"));
  461. insertSQL.setValue("status", "新建");
  462. insertSQL.setValue("createby", username);
  463. insertSQL.setDateValue("createdate");
  464. insertSQL.setDateValue("billdate");
  465. sqlList.add(insertSQL.getSQL());
  466. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
  467. long st_stockbill_itemsid = createTableID("st_stockbill_items");
  468. insertSQL.setUniqueid(st_stockbill_itemsid);
  469. insertSQL.setSiteid(siteid);
  470. insertSQL.setValue("rowno", 1);
  471. insertSQL.setValue("sa_dispatch_itemsid", 0);
  472. insertSQL.setValue("sourceobject", "sa_sendrepair_detail");
  473. insertSQL.setValue("sourceid", row.getLong("sa_sendrepair_detailid"));
  474. insertSQL.setValue("stockid",stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  475. insertSQL.setValue("itemid", row.getLong("newitemid"));
  476. insertSQL.setValue("itemno", row.getString("newitemno"));
  477. insertSQL.setValue("itemname", row.getString("newitemname"));
  478. insertSQL.setValue("model", row.getString("newmodel"));
  479. insertSQL.setValue("qty", row.getBigDecimal("qty"));
  480. insertSQL.setValue("sku", row.getString("sku"));
  481. insertSQL.setValue("st_stockbillid", st_stockbillid);
  482. sqlList.add(insertSQL.getSQL());
  483. if(StringUtils.isNotBlank(row.getString("sku"))){
  484. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
  485. long st_stockbill_items_skuid = createTableID("st_stockbill_items_sku");
  486. insertSQL.setUniqueid(st_stockbill_items_skuid);
  487. insertSQL.setSiteid(siteid);
  488. insertSQL.setValue("stockid", stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  489. insertSQL.setValue("itemid", row.getLong("newitemid"));
  490. insertSQL.setValue("sku", row.getString("sku"));
  491. insertSQL.setValue("st_stockbillid", st_stockbillid);
  492. insertSQL.setValue("st_stockbill_itemsid", st_stockbill_itemsid);
  493. sqlList.add(insertSQL.getSQL());
  494. }
  495. }
  496. }else{
  497. if(StringUtils.isBlank(row.getString("newitemno")) && StringUtils.isBlank(row.getString("newsku"))){
  498. } else if(!row.getString("newsku").equals(row.getString("sku"))){
  499. sqlList.addAll(updatefmachinecode(isinstock,row,stockRowsMap));
  500. sqlList.addAll(updatefnewmachinecode(isinstock,row,stockRowsMap));
  501. } else if(!row.getString("itemid").equals(row.getString("newitemid"))){
  502. sqlList.addAll(updatefitemno(isinstock,row));
  503. }
  504. }
  505. }
  506. // 是否进成品仓
  507. if(dispositionRows.get(0).getBoolean("inishedstock")){
  508. if (isinstock) {
  509. sqlList.addAll(updatefmachinecode(isinstock,row,stockRowsMap));
  510. sqlList.addAll(infinishedstock(isinstock,row));
  511. } else {
  512. sqlList.addAll(infinishedstock(isinstock,row));
  513. sqlList.addAll(updatefmachinecode(isinstock,row,stockRowsMap));
  514. }
  515. }
  516. // 是否进报废仓
  517. if(dispositionRows.get(0).getBoolean("scrapstock")){
  518. if (isinstock) {
  519. sqlList.addAll(updatefmachinecode(isinstock,row,stockRowsMap));
  520. sqlList.addAll(inscrapstock(isinstock,row,stockRowsMap));
  521. } else {
  522. sqlList.addAll(inscrapstock(isinstock,row,stockRowsMap));
  523. sqlList.addAll(updatefmachinecode(isinstock,row,stockRowsMap));
  524. }
  525. }
  526. if(!isinstock){
  527. sqlList.add("delete from st_stockbill_items where st_stockbillid in (select st_stockbillid from st_stockbill where sourceobject='sa_sendrepair' and sourceid="+sa_sendrepairid+")");
  528. sqlList.add("delete from st_stockbill_items_sku where st_stockbillid in (select st_stockbillid from st_stockbill where sourceobject='sa_sendrepair' and sourceid="+sa_sendrepairid+")");
  529. sqlList.add("delete from st_stockbill where sourceobject='sa_sendrepair' and sourceid="+sa_sendrepairid);
  530. }
  531. sqlList.add(updateSQL.getSQL());
  532. System.err.println(sqlList.toString());
  533. dbConnect.runSqlUpdate(sqlList);
  534. return getSucReturnObject().setData(st_stockbillid).toString();
  535. }
  536. @API(title = "审核", apiversion = R.ID2025102509532403.v1.class)
  537. @CACHEING_CLEAN(apiClass = {sendrepair.class})
  538. public String check() throws YosException {
  539. ArrayList<String> sqlList = new ArrayList<>();
  540. Long sa_sendrepairid = content.getLong("sa_sendrepairid");
  541. boolean ischeck = content.getBooleanValue("ischeck");
  542. long sa_accountclassid=0;
  543. Rows accountclassrows = dbConnect.runSqlQuery("select * from sa_accountclass where accountno='01'");
  544. if(accountclassrows.isNotEmpty()){
  545. sa_accountclassid=accountclassrows.get(0).getLong("sa_accountclassid");
  546. }
  547. Rows rows = dbConnect.runSqlQuery("select t1.sys_enterpriseid,t1.remarks,t1.billno,t1.status,t2.qty,t2.sa_sendrepair_detailid,t2.amount,t2.agentcost,t2.disposition from sa_sendrepair t1 " +
  548. "inner join sa_sendrepair_detail t2 on t1.sa_sendrepairid=t2.sa_sendrepairid" +
  549. " where t1.sa_sendrepairid ='"
  550. + sa_sendrepairid + "' and t1.siteid='" + siteid + "'");
  551. if(rows.isEmpty()){
  552. return getErrReturnObject().setErrMsg("送修单不存在")
  553. .toString();
  554. }
  555. Row row =rows.get(0);
  556. Rows dispositionRows =dbConnect.runSqlQuery("select * from sa_aftersalesmag_disposition where disposition='"+row.getString("disposition")+"'");
  557. if(dispositionRows.isEmpty()){
  558. return getErrReturnObject().setErrMsg("返修处理意见不存在")
  559. .toString();
  560. }
  561. if (ischeck) {
  562. if (!row.getString("status").equals("进仓")) {
  563. return getErrReturnObject().setErrMsg("单号为:【" + row.getString("billno") + "】的送修单为非进仓状态,无法审核")
  564. .toString();
  565. }
  566. } else {
  567. if (!dispositionRows.get(0).getBoolean("isrefund")) {
  568. if (!row.getString("status").equals("审核")) {
  569. return getErrReturnObject().setErrMsg("非审核状态下不可反审核").toString();
  570. }
  571. } else {
  572. if (!row.getString("status").equals("退款确认")) {
  573. return getErrReturnObject().setErrMsg("非退款确认状态下不可反审核").toString();
  574. }
  575. }
  576. }
  577. // 是否维修
  578. if (dispositionRows.get(0).getBoolean("ismaintain")) {
  579. /******** 账户余额扣减 ********/
  580. BigDecimal totalamount = rows.sum("agentcost");// 经销商维修支付费用总额
  581. // 如果经销商维修费用大于0
  582. if (totalamount.compareTo(BigDecimal.ZERO)>0) {
  583. if (ischeck) {
  584. CashbillEntity cashbillEntity = new CashbillEntity();
  585. cashbillEntity.setAmount(totalamount);
  586. cashbillEntity.setDiscountamountamount(BigDecimal.ZERO);
  587. cashbillEntity.setOwnerid(sa_sendrepairid);
  588. cashbillEntity.setOwnertable("sa_sendrepair");
  589. cashbillEntity.setRemarks("该单由送修单" + row.getString("billno") + "审核时自动生成");
  590. cashbillEntity.setSource("送修单审核");
  591. cashbillEntity.setTypemx("维修费");
  592. JSONObject cashbillPay = Accountbalance.createCashbillPay(this, row.getLong("sys_enterpriseid"), sa_accountclassid, cashbillEntity, true);
  593. sqlList.addAll(cashbillPay.getJSONArray("sqlList").toJavaList(String.class));
  594. } else {
  595. CashbillEntity cashbillEntity = new CashbillEntity();
  596. cashbillEntity.setAmount(totalamount.negate());
  597. cashbillEntity.setDiscountamountamount(BigDecimal.ZERO);
  598. cashbillEntity.setOwnerid(sa_sendrepairid);
  599. cashbillEntity.setOwnertable("sa_sendrepair");
  600. cashbillEntity.setRemarks("该单由送修单" + row.getString("billno") + "反审核时自动生成");
  601. cashbillEntity.setSource("送修单反审核");
  602. cashbillEntity.setTypemx("维修费");
  603. JSONObject cashbillPay = Accountbalance.createCashbillPay(this, row.getLong("sys_enterpriseid"), sa_accountclassid, cashbillEntity, true);
  604. sqlList.addAll(cashbillPay.getJSONArray("sqlList").toJavaList(String.class));
  605. }
  606. }
  607. }
  608. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_sendrepair");
  609. updateSQL.setUniqueid(sa_sendrepairid);
  610. updateSQL.setSiteid(siteid);
  611. if (ischeck) {
  612. if (!dispositionRows.get(0).getBoolean("isrefund")) {
  613. updateSQL.setValue("status","审核");
  614. }else{
  615. updateSQL.setValue("status","退款确认");
  616. }
  617. updateSQL.setValue("checkby",username);
  618. updateSQL.setDateValue("checkdate");
  619. sqlList.add(
  620. DataContrlLog.createLog(this, "sa_sendrepair", sa_sendrepairid, "审核", "送修单审核成功").getSQL());
  621. } else {
  622. updateSQL.setValue("status","进仓");
  623. updateSQL.setValue("checkby","");
  624. updateSQL.setValue("checkdate","null");
  625. sqlList.add(
  626. DataContrlLog.createLog(this, "sa_sendrepair", sa_sendrepairid, "反审核", "送修单反审核成功").getSQL());
  627. }
  628. sqlList.add(updateSQL.getSQL());
  629. dbConnect.runSqlUpdate(sqlList);
  630. return getSucReturnObject().toString();
  631. }
  632. @API(title = "审核(送修单退钱处理)", apiversion = R.ID2025112514103403.v1.class)
  633. @CACHEING_CLEAN(apiClass = {sendrepair.class})
  634. public String check_refundprocessing() throws YosException {
  635. ArrayList<String> sqlList = new ArrayList<>();
  636. Long sa_sendrepairid = content.getLong("sa_sendrepairid");
  637. boolean ischeck = content.getBooleanValue("ischeck");
  638. BigDecimal amount = content.getBigDecimal("amount");
  639. long sa_accountclassid=0;
  640. Rows accountclassrows = dbConnect.runSqlQuery("select * from sa_accountclass where accountno='01'");
  641. if(accountclassrows.isNotEmpty()){
  642. sa_accountclassid=accountclassrows.get(0).getLong("sa_accountclassid");
  643. }
  644. Rows rows = dbConnect.runSqlQuery("select t1.sys_enterpriseid,t1.remarks,t1.billno,t1.status,t2.qty,t2.sa_sendrepair_detailid,t2.amount,t2.agentcost,t2.disposition,t2.sku from sa_sendrepair t1 " +
  645. "inner join sa_sendrepair_detail t2 on t1.sa_sendrepairid=t2.sa_sendrepairid" +
  646. " where t1.sa_sendrepairid ='"
  647. + sa_sendrepairid + "' and t1.siteid='" + siteid + "'");
  648. if(rows.isEmpty()){
  649. return getErrReturnObject().setErrMsg("送修单不存在")
  650. .toString();
  651. }
  652. Row row =rows.get(0);
  653. Rows dispositionRows =dbConnect.runSqlQuery("select * from sa_aftersalesmag_disposition where disposition='"+row.getString("disposition")+"'");
  654. if(dispositionRows.isEmpty()){
  655. return getErrReturnObject().setErrMsg("返修处理意见不存在")
  656. .toString();
  657. }
  658. if (ischeck) {
  659. if (!row.getString("status").equals("退款确认")) {
  660. return getErrReturnObject().setErrMsg("单号为:【" + row.getString("billno") + "】的送修单为非退款确认状态,无法审核")
  661. .toString();
  662. }
  663. } else {
  664. if (!row.getString("status").equals("审核")) {
  665. return getErrReturnObject().setErrMsg("单号为:【" + row.getString("billno") + "】的送修单为非审核状态,无法反审核")
  666. .toString();
  667. }
  668. if (!dispositionRows.get(0).getBoolean("isrefund")) {
  669. return getErrReturnObject().setErrMsg("该单不能反审核")
  670. .toString();
  671. }
  672. }
  673. // 是否退款
  674. if (dispositionRows.get(0).getBoolean("isrefund")) {
  675. for (Row rowdetail :rows){
  676. //取消序列号的返修状态
  677. sqlList.add("update sa_itemsku set isreturn=0,sys_enterpriseid=0,sa_agentsid=0 where sku='" + rowdetail.getString("sku")+"'");
  678. /**
  679. * 将保修卡作废
  680. */
  681. sqlList.add("update sa_warrantycard set isvoid=1,voiddate=CURRENT_TIME,voidreason='退货作废保修卡 "+ rowdetail.getString("billno")+"' where sku='" + rowdetail.getString("sku")+"'");
  682. }
  683. /******** 账户余额扣减 ********/
  684. BigDecimal totalamount = amount;// 退款总额
  685. sqlList.add("update sa_sendrepair set amount="+amount+" where sa_sendrepairid='" +sa_sendrepairid+"'");
  686. // 如果退款金额大于0
  687. if (totalamount.compareTo(BigDecimal.ZERO)>0) {
  688. totalamount = ischeck ? totalamount.negate():totalamount;
  689. CashbillEntity cashbillEntity = new CashbillEntity();
  690. cashbillEntity.setAmount(totalamount);
  691. cashbillEntity.setDiscountamountamount(BigDecimal.ZERO);
  692. cashbillEntity.setOwnerid(sa_sendrepairid);
  693. cashbillEntity.setOwnertable("sa_sendrepair");
  694. cashbillEntity.setRemarks("该单由送修单" + row.getString("billno") +(ischeck ? "审核" : "反审核")+"时自动生成");
  695. cashbillEntity.setSource("送修单"+(ischeck ? "审核" : "反审核"));
  696. cashbillEntity.setTypemx("整机退款");
  697. JSONObject cashbillPay = Accountbalance.createCashbillPay(this, row.getLong("sys_enterpriseid"), sa_accountclassid, cashbillEntity, true);
  698. sqlList.addAll(cashbillPay.getJSONArray("sqlList").toJavaList(String.class));
  699. }
  700. /*********** 售后开始 ************/
  701. Rows zprkrows = dbConnect.runSqlQuery("select t2.* from st_stockbill t1 inner join st_stockbill_items t2 on t1.st_stockbillid=t2.st_stockbillid and t1.siteid=t2.siteid " +
  702. " where t1.siteid='"+siteid+"' and t1.typemx='正品入库' and t1.type='其他入库' and t1.sourceobject='sa_sendrepair' and t1.sourceid="+sa_sendrepairid);
  703. Rows bfrkrows = dbConnect.runSqlQuery("select t2.* from st_stockbill t1 inner join st_stockbill_items t2 on t1.st_stockbillid=t2.st_stockbillid and t1.siteid=t2.siteid " +
  704. " where t1.siteid='"+siteid+"' and t1.typemx='报废入库' and t1.type='其他入库' and t1.sourceobject='sa_sendrepair' and t1.sourceid="+sa_sendrepairid);
  705. if (zprkrows.toRowsMap("st_stockbillid").size()== 1) {
  706. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "st_stockbill_items");
  707. updateSQL.setUniqueid(zprkrows.get(0).getLong("st_stockbill_itemsid"));
  708. updateSQL.setSiteid(siteid);
  709. updateSQL.setValue("amount",ischeck ? totalamount.negate() : 0);
  710. updateSQL.setValue("price",(ischeck ? totalamount.negate() : BigDecimal.ZERO).divide(zprkrows.get(0).getBigDecimal("qty")));
  711. updateSQL.setValue("defaultprice",(ischeck ? totalamount.negate() : BigDecimal.ZERO).divide(zprkrows.get(0).getBigDecimal("qty")));
  712. sqlList.add(updateSQL.getSQL());
  713. sqlList.add("update st_stockbill set billdate=CURRENT_TIME where st_stockbillid="+zprkrows.get(0).getLong("st_stockbillid"));
  714. }
  715. if (bfrkrows.toRowsMap("st_stockbillid").size()== 1) {
  716. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "st_stockbill_items");
  717. updateSQL.setUniqueid(bfrkrows.get(0).getLong("st_stockbill_itemsid"));
  718. updateSQL.setSiteid(siteid);
  719. updateSQL.setValue("amount",ischeck ? totalamount.negate() : 0);
  720. updateSQL.setValue("price",(ischeck ? totalamount.negate() : BigDecimal.ZERO).divide(bfrkrows.get(0).getBigDecimal("qty")));
  721. updateSQL.setValue("defaultprice",(ischeck ? totalamount.negate() : BigDecimal.ZERO).divide(bfrkrows.get(0).getBigDecimal("qty")));
  722. sqlList.add(updateSQL.getSQL());
  723. sqlList.add("update st_stockbill set billdate=CURRENT_TIME where st_stockbillid="+bfrkrows.get(0).getLong("st_stockbillid"));
  724. }
  725. /*********** 售后结束 ************/
  726. }
  727. UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "sa_sendrepair");
  728. updateSQL.setUniqueid(sa_sendrepairid);
  729. updateSQL.setSiteid(siteid);
  730. if (ischeck) {
  731. updateSQL.setValue("status","审核");
  732. updateSQL.setValue("checkby",username);
  733. updateSQL.setDateValue("checkdate");
  734. sqlList.add(
  735. DataContrlLog.createLog(this, "sa_sendrepair", sa_sendrepairid, "审核", "送修单退钱处理审核成功").getSQL());
  736. } else {
  737. updateSQL.setValue("status","退款确认");
  738. updateSQL.setValue("checkby","");
  739. updateSQL.setValue("checkdate","null");
  740. sqlList.add(
  741. DataContrlLog.createLog(this, "sa_sendrepair", sa_sendrepairid, "反审核", "送修单退钱处理反审核成功").getSQL());
  742. }
  743. sqlList.add(updateSQL.getSQL());
  744. dbConnect.runSqlUpdate(sqlList);
  745. return getSucReturnObject().toString();
  746. }
  747. /**
  748. * 翻新序列号不变 品号改变
  749. *
  750. */
  751. public ArrayList<String> updatefitemno(boolean istrue,Row sendrepairdetail) throws YosException {
  752. ArrayList<String> sqlList = new ArrayList<>();
  753. Rows skurows =dbConnect.runSqlQuery("select * from sa_itemsku where sku='"+sendrepairdetail.getString("sku")+"' and status!='报废'");
  754. if(skurows.isEmpty()){
  755. throw new YosException("序列号不存在或已作废");
  756. }
  757. long newitemid = sendrepairdetail.getLong("newitemid");
  758. String remarks = "由送修单号为" + sendrepairdetail.getString("billno") + "更改品号";
  759. if (skurows.size() == 1) {
  760. Row skurow =skurows.get(0);
  761. if (istrue) {
  762. if (newitemid==sendrepairdetail.getLong("itemid")) {
  763. throw new YosException( "调整品号不可与原品号相同");
  764. }
  765. if (newitemid==0) {
  766. throw new YosException( "调整品号不可为空");
  767. }
  768. if (!sendrepairdetail.getBoolean("skucontrol")) {
  769. throw new YosException("调整品号不是单品管理");
  770. }
  771. if (skurow.getLong("wmsuploadflag") == 2) {
  772. sqlList.add("update sa_itemsku set itemid="+newitemid+",changenotes='"+remarks+"',wmsuploadflag=1 where sa_itemskuid="+skurow.getLong("sa_itemskuid"));
  773. }else{
  774. sqlList.add("update sa_itemsku set itemid="+newitemid+",changenotes='"+remarks+"' where sa_itemskuid="+skurow.getLong("sa_itemskuid"));
  775. }
  776. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "sa_itemsku_change");
  777. insertSQL.setValue("siteid", siteid);
  778. insertSQL.setValue("sa_itemsku_changeid", createTableID("sa_itemsku_change"));
  779. insertSQL.setValue("sa_itemskuid", skurow.getLong("sa_itemskuid"));
  780. insertSQL.setValue("sa_agentsid", skurow.getLong("sa_agentsid"));
  781. insertSQL.setValue("sa_agentsidnew", skurow.getLong("sa_agentsid"));
  782. insertSQL.setValue("itemid", skurow.getLong("itemid"));
  783. insertSQL.setValue("itemidnew", newitemid);
  784. insertSQL.setValue("stockid", skurow.getLong("stockid"));
  785. insertSQL.setValue("stockidnew", skurow.getLong("stockid"));
  786. insertSQL.setValue("changenotes", remarks);
  787. insertSQL.setDateValue("changedate");
  788. insertSQL.setValue("changeby", username);
  789. sqlList.add(insertSQL.getSQL());
  790. }
  791. if (!istrue) {
  792. sqlList.add("update sa_itemsku set itemid="+sendrepairdetail.getLong("itemid")+",changenotes='null' where sa_itemskuid="+skurow.getLong("sa_itemskuid"));
  793. sqlList.add("delete from sa_itemsku_change where changenotes like '%"+sendrepairdetail.getString("billno")+"%'");
  794. }
  795. }
  796. return sqlList;
  797. }
  798. /**
  799. * 翻新新序列号入库
  800. *
  801. */
  802. public ArrayList<String> updatefnewmachinecode(boolean istrue,Row sendrepairdetail,RowsMap stockRowsMap) throws YosException {
  803. ArrayList<String> sqlList = new ArrayList<>();
  804. Rows departmentRows =dbConnect.runSqlQuery("select * from sys_department");
  805. RowsMap departmentRowsMap = departmentRows.toRowsMap("depno");
  806. String sku = sendrepairdetail.getString("sku");
  807. String newsku = sendrepairdetail.getString("newsku");
  808. if (istrue) {
  809. if (!sku.equals(newsku)) {
  810. InsertSQL saItemsku = SQLFactory.createInsertSQL(this,"sa_itemsku");
  811. saItemsku.setValue("sku", newsku);
  812. saItemsku.setValue("itemid", sendrepairdetail.getLong("newitemid"));
  813. saItemsku.setValue("stockid",stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  814. saItemsku.setValue("createby", username);
  815. saItemsku.setDateValue("createdate");
  816. saItemsku.setValue("changeby", username);
  817. saItemsku.setDateValue("changedate");
  818. saItemsku.setValue("changenotes", "");
  819. saItemsku.setValue("mono", "");
  820. saItemsku.setValue("sa_itemskuid", createTableID("sa_itemsku"));
  821. saItemsku.setSiteid(siteid);
  822. sqlList.add(saItemsku.getSQL());
  823. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
  824. long st_stockbillid = createTableID("st_stockbill");
  825. insertSQL.setUniqueid(st_stockbillid);
  826. insertSQL.setSiteid(siteid);
  827. insertSQL.setValue("billno", createBillCode("STOCKBILL1"));
  828. insertSQL.setValue("type", "其他入库");
  829. insertSQL.setValue("typemx", "翻新/返修入库");
  830. insertSQL.setValue("sys_enterpriseid",sendrepairdetail.getLong("sys_enterpriseid"));
  831. insertSQL.setValue("rb", 1);
  832. insertSQL.setValue("sourceobject", "sa_sendrepair");
  833. insertSQL.setValue("sourceid", sendrepairdetail.getLong("sa_sendrepairid"));
  834. insertSQL.setValue("departmentid", departmentRowsMap.containsKey("10106")?departmentRowsMap.get("10106").get(0).getLong("departmentid"):0);
  835. insertSQL.setValue("stockid", stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  836. insertSQL.setValue("remarks", "送修单入库");
  837. insertSQL.setValue("status", "审核");
  838. insertSQL.setValue("createby", username);
  839. insertSQL.setDateValue("createdate");
  840. insertSQL.setValue("checkby", username);
  841. insertSQL.setDateValue("checkdate");
  842. insertSQL.setDateValue("billdate");
  843. sqlList.add(insertSQL.getSQL());
  844. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
  845. long st_stockbill_itemsid = createTableID("st_stockbill_items");
  846. insertSQL.setUniqueid(st_stockbill_itemsid);
  847. insertSQL.setSiteid(siteid);
  848. insertSQL.setValue("rowno", 1);
  849. insertSQL.setValue("sa_dispatch_itemsid", 0);
  850. insertSQL.setValue("sourceobject", "sa_sendrepair_detail");
  851. insertSQL.setValue("sourceid", sendrepairdetail.getLong("sa_sendrepair_detailid"));
  852. insertSQL.setValue("stockid",stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  853. insertSQL.setValue("itemid", sendrepairdetail.getLong("newitemid"));
  854. insertSQL.setValue("itemno", sendrepairdetail.getString("newitemno"));
  855. insertSQL.setValue("itemname", sendrepairdetail.getString("newitemname"));
  856. insertSQL.setValue("model", sendrepairdetail.getString("newmodel"));
  857. insertSQL.setValue("qty", sendrepairdetail.getBigDecimal("qty"));
  858. insertSQL.setValue("st_stockbillid", st_stockbillid);
  859. sqlList.add(insertSQL.getSQL());
  860. if(StringUtils.isNotBlank(sendrepairdetail.getString("newsku"))){
  861. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
  862. long st_stockbill_items_skuid = createTableID("st_stockbill_items_sku");
  863. insertSQL.setUniqueid(st_stockbill_items_skuid);
  864. insertSQL.setSiteid(siteid);
  865. insertSQL.setValue("stockid", stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  866. insertSQL.setValue("itemid", sendrepairdetail.getLong("newitemid"));
  867. insertSQL.setValue("sku", sendrepairdetail.getString("newsku"));
  868. insertSQL.setValue("st_stockbillid", st_stockbillid);
  869. insertSQL.setValue("st_stockbill_itemsid", st_stockbill_itemsid);
  870. sqlList.add(insertSQL.getSQL());
  871. }
  872. sqlList.addAll(sendrepairIcinvbal_new(isinstock("其他入库","1",istrue),sendrepairdetail,stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0));
  873. }
  874. }
  875. if (!istrue) {
  876. sqlList.addAll(sendrepairIcinvbal_new(isinstock("其他入库","1",istrue),sendrepairdetail,stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0));
  877. //sqlList.add("delete from st_stockbill where type='其他入库' and sourceobject='sa_sendrepair' and sourceid="+sendrepairdetail.getLong("sendrepairid"));
  878. sqlList.add("delete from sa_itemsku where sku='"+sendrepairdetail.getString("newsku")+"'");
  879. }
  880. return sqlList;
  881. }
  882. /**
  883. * 翻新 老序列号出库
  884. *
  885. */
  886. public ArrayList<String> updatefmachinecode(boolean istrue,Row sendrepairdetail,RowsMap stockRowsMap) throws YosException {
  887. ArrayList<String> sqlList = new ArrayList<>();
  888. Rows departmentRows =dbConnect.runSqlQuery("select * from sys_department");
  889. RowsMap departmentRowsMap = departmentRows.toRowsMap("depno");
  890. if (istrue) {
  891. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
  892. long st_stockbillid = createTableID("st_stockbill");
  893. insertSQL.setUniqueid(st_stockbillid);
  894. insertSQL.setSiteid(siteid);
  895. insertSQL.setValue("billno", createBillCode("STOCKBILL1"));
  896. insertSQL.setValue("type", "其他出库");
  897. if (sendrepairdetail.getString("disposition").equalsIgnoreCase("返修")) {
  898. insertSQL.setValue("typemx", "返修出库");
  899. } else if (sendrepairdetail.getString("disposition").equalsIgnoreCase("翻新")) {
  900. insertSQL.setValue("typemx", "翻新出库");
  901. } else if (sendrepairdetail.getString("disposition").contains("报废")) {
  902. insertSQL.setValue("typemx", "报废出库");
  903. } else if (sendrepairdetail.getString("disposition").equalsIgnoreCase("退钱做正品")) {
  904. insertSQL.setValue("typemx", "退钱做正品出库");
  905. } else if (sendrepairdetail.getString("disposition").equalsIgnoreCase("退钱做试验机")) {
  906. insertSQL.setValue("typemx", "退钱做试验机出库");
  907. }
  908. insertSQL.setValue("sys_enterpriseid",sendrepairdetail.getLong("sys_enterpriseid"));
  909. insertSQL.setValue("rb", 1);
  910. insertSQL.setValue("sourceobject", "sa_sendrepair");
  911. insertSQL.setValue("sourceid", sendrepairdetail.getLong("sa_sendrepairid"));
  912. insertSQL.setValue("departmentid", departmentRowsMap.containsKey("10106")?departmentRowsMap.get("10106").get(0).getLong("departmentid"):0);
  913. insertSQL.setValue("stockid", stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  914. insertSQL.setValue("remarks", "送修单出库");
  915. insertSQL.setValue("status", "审核");
  916. insertSQL.setValue("createby", username);
  917. insertSQL.setDateValue("createdate");
  918. insertSQL.setDateValue("billdate");
  919. insertSQL.setValue("checkby", username);
  920. insertSQL.setDateValue("checkdate");
  921. sqlList.add(insertSQL.getSQL());
  922. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
  923. long st_stockbill_itemsid = createTableID("st_stockbill_items");
  924. insertSQL.setUniqueid(st_stockbill_itemsid);
  925. insertSQL.setSiteid(siteid);
  926. insertSQL.setValue("rowno", 1);
  927. insertSQL.setValue("sa_dispatch_itemsid", 0);
  928. insertSQL.setValue("sourceobject", "sa_sendrepair_detail");
  929. insertSQL.setValue("sourceid", sendrepairdetail.getLong("sa_sendrepair_detailid"));
  930. insertSQL.setValue("stockid",stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  931. insertSQL.setValue("itemid", sendrepairdetail.getLong("itemid"));
  932. insertSQL.setValue("itemno", sendrepairdetail.getString("itemno"));
  933. insertSQL.setValue("itemname", sendrepairdetail.getString("itemname"));
  934. insertSQL.setValue("model", sendrepairdetail.getString("model"));
  935. insertSQL.setValue("qty", sendrepairdetail.getBigDecimal("qty"));
  936. insertSQL.setValue("sku", sendrepairdetail.getString("sku"));
  937. insertSQL.setValue("st_stockbillid", st_stockbillid);
  938. sqlList.add(insertSQL.getSQL());
  939. if(StringUtils.isNotBlank(sendrepairdetail.getString("sku"))){
  940. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
  941. long st_stockbill_items_skuid = createTableID("st_stockbill_items_sku");
  942. insertSQL.setUniqueid(st_stockbill_items_skuid);
  943. insertSQL.setSiteid(siteid);
  944. insertSQL.setValue("stockid", stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0);
  945. insertSQL.setValue("itemid", sendrepairdetail.getLong("itemid"));
  946. insertSQL.setValue("sku", sendrepairdetail.getString("sku"));
  947. insertSQL.setValue("st_stockbillid", st_stockbillid);
  948. insertSQL.setValue("st_stockbill_itemsid", st_stockbill_itemsid);
  949. sqlList.add(insertSQL.getSQL());
  950. }
  951. sqlList.addAll(sendrepairIcinvbal(isinstock("其他出库","1",istrue),sendrepairdetail, stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0));
  952. sqlList.add("update sa_itemsku set stockid=0 where sku='"+sendrepairdetail.getString("sku")+"'");
  953. if(sendrepairdetail.getString("disposition").equalsIgnoreCase("翻新") || sendrepairdetail.getString("disposition").equalsIgnoreCase("返修")){
  954. sqlList.add("update sa_itemsku set status='报废' where sku='"+sendrepairdetail.getString("sku")+"'");
  955. }
  956. }
  957. if (!istrue) {
  958. sqlList.addAll(sendrepairIcinvbal(isinstock("其他出库","1",istrue),sendrepairdetail, stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0));
  959. sqlList.add("update sa_itemsku set status='在库',stockid='"+(stockRowsMap.containsKey("104")?stockRowsMap.get("104").get(0).getLong("stockid"):0)+"' where sku='"+sendrepairdetail.getString("sku")+"'");
  960. }
  961. return sqlList;
  962. }
  963. /**
  964. * 正品入库
  965. *
  966. */
  967. public ArrayList<String> infinishedstock(boolean istrue,Row sendrepairdetail) throws YosException {
  968. ArrayList<String> sqlList = new ArrayList<>();
  969. Rows departmentRows =dbConnect.runSqlQuery("select * from sys_department");
  970. RowsMap departmentRowsMap = departmentRows.toRowsMap("depno");
  971. if (istrue) {
  972. /*************** 售后开始 ****************/
  973. long stockid = 0;
  974. long itemid = sendrepairdetail.getLong("itemid");
  975. Rows itemrows = dbConnect.runSqlQuery("select t2.stockid from plm_item t1 left join st_stock t2 on t1.stockno=t2.stockno where t1.itemid="+itemid);
  976. if (itemrows.isNotEmpty()) {
  977. stockid = itemrows.get(0).getLong("stockid");
  978. if (stockid==0) {
  979. throw new YosException("货品档案中该商品没有默认仓库,请先补齐信息");
  980. }
  981. } else {
  982. throw new YosException("系统货品档案中不存在该品号");
  983. }
  984. /*************** 售后结束 ****************/
  985. /*************** 电商出库开始 ****************/
  986. String name = sendrepairdetail.getString("name");
  987. String phonenumber = sendrepairdetail.getString("phonenumber");
  988. String address = sendrepairdetail.getString("address");
  989. String fnotes = "";
  990. if (!name.equals("")) {
  991. fnotes = "姓名:" + name + ",电话:" + phonenumber + ".地址:" + address;
  992. }
  993. /*************** 电商出库结束 ****************/
  994. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
  995. long st_stockbillid = createTableID("st_stockbill");
  996. insertSQL.setUniqueid(st_stockbillid);
  997. insertSQL.setSiteid(siteid);
  998. insertSQL.setValue("billno", createBillCode("STOCKBILL1"));
  999. insertSQL.setValue("type", "其他入库");
  1000. insertSQL.setValue("typemx", "正品入库");
  1001. insertSQL.setValue("sys_enterpriseid",sendrepairdetail.getLong("sys_enterpriseid"));
  1002. insertSQL.setValue("rb", 1);
  1003. insertSQL.setValue("sourceobject", "sa_sendrepair");
  1004. insertSQL.setValue("sourceid", sendrepairdetail.getLong("sa_sendrepairid"));
  1005. insertSQL.setValue("departmentid", departmentRowsMap.containsKey("10106")?departmentRowsMap.get("10106").get(0).getLong("departmentid"):0);
  1006. insertSQL.setValue("stockid", stockid);
  1007. insertSQL.setValue("remarks", fnotes);
  1008. insertSQL.setValue("status", "新建");
  1009. insertSQL.setValue("createby", username);
  1010. insertSQL.setDateValue("createdate");
  1011. insertSQL.setDateValue("billdate");
  1012. sqlList.add(insertSQL.getSQL());
  1013. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
  1014. long st_stockbill_itemsid = createTableID("st_stockbill_items");
  1015. insertSQL.setUniqueid(st_stockbill_itemsid);
  1016. insertSQL.setSiteid(siteid);
  1017. insertSQL.setValue("rowno", 1);
  1018. insertSQL.setValue("sa_dispatch_itemsid", 0);
  1019. insertSQL.setValue("sourceobject", "sa_sendrepair_detail");
  1020. insertSQL.setValue("sourceid", sendrepairdetail.getLong("sa_sendrepair_detailid"));
  1021. insertSQL.setValue("stockid",stockid);
  1022. insertSQL.setValue("itemid", sendrepairdetail.getLong("itemid"));
  1023. insertSQL.setValue("itemno", sendrepairdetail.getString("itemno"));
  1024. insertSQL.setValue("itemname", sendrepairdetail.getString("itemname"));
  1025. insertSQL.setValue("model", sendrepairdetail.getString("model"));
  1026. insertSQL.setValue("qty", sendrepairdetail.getBigDecimal("qty"));
  1027. insertSQL.setValue("st_stockbillid", st_stockbillid);
  1028. sqlList.add(insertSQL.getSQL());
  1029. if(StringUtils.isNotBlank(sendrepairdetail.getString("sku"))){
  1030. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
  1031. long st_stockbill_items_skuid = createTableID("st_stockbill_items_sku");
  1032. insertSQL.setUniqueid(st_stockbill_items_skuid);
  1033. insertSQL.setSiteid(siteid);
  1034. insertSQL.setValue("stockid", stockid);
  1035. insertSQL.setValue("itemid", sendrepairdetail.getLong("itemid"));
  1036. insertSQL.setValue("sku", sendrepairdetail.getString("sku"));
  1037. insertSQL.setValue("st_stockbillid", st_stockbillid);
  1038. insertSQL.setValue("st_stockbill_itemsid", st_stockbill_itemsid);
  1039. sqlList.add(insertSQL.getSQL());
  1040. }
  1041. }
  1042. if (!istrue) {
  1043. sqlList.add("update sa_itemsku set stockid=0 where sku='"+sendrepairdetail.getString("sku")+"'");
  1044. }
  1045. return sqlList;
  1046. }
  1047. /**
  1048. * 报废入库报废仓
  1049. *
  1050. */
  1051. public ArrayList<String> inscrapstock(boolean istrue,Row sendrepairdetail,RowsMap stockRowsMap) throws YosException {
  1052. ArrayList<String> sqlList = new ArrayList<>();
  1053. Rows departmentRows =dbConnect.runSqlQuery("select * from sys_department");
  1054. RowsMap departmentRowsMap = departmentRows.toRowsMap("depno");
  1055. if (istrue) {
  1056. String name = sendrepairdetail.getString("name");
  1057. String phonenumber = sendrepairdetail.getString("phonenumber");
  1058. String address = sendrepairdetail.getString("address");
  1059. String fnotes = "";
  1060. if (!name.equals("")) {
  1061. fnotes = "姓名:" + name + ",电话:" + phonenumber + ".地址:" + address;
  1062. }
  1063. /*************** 电商出库结束 ****************/
  1064. InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
  1065. long st_stockbillid = createTableID("st_stockbill");
  1066. insertSQL.setUniqueid(st_stockbillid);
  1067. insertSQL.setSiteid(siteid);
  1068. insertSQL.setValue("billno", createBillCode("STOCKBILL1"));
  1069. insertSQL.setValue("type", "其他入库");
  1070. insertSQL.setValue("typemx", "报废入库");
  1071. insertSQL.setValue("sys_enterpriseid",sendrepairdetail.getLong("sys_enterpriseid"));
  1072. insertSQL.setValue("rb", 1);
  1073. insertSQL.setValue("sourceobject", "sa_sendrepair");
  1074. insertSQL.setValue("sourceid", sendrepairdetail.getLong("sa_sendrepairid"));
  1075. insertSQL.setValue("departmentid", departmentRowsMap.containsKey("10106")?departmentRowsMap.get("10106").get(0).getLong("departmentid"):0);
  1076. insertSQL.setValue("stockid", stockRowsMap.containsKey("106")?stockRowsMap.get("106").get(0).getLong("stockid"):0);
  1077. insertSQL.setValue("remarks", "送修单入库");
  1078. insertSQL.setValue("status", "新建");
  1079. insertSQL.setValue("createby", username);
  1080. insertSQL.setDateValue("createdate");
  1081. insertSQL.setDateValue("billdate");
  1082. sqlList.add(insertSQL.getSQL());
  1083. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items");
  1084. long st_stockbill_itemsid = createTableID("st_stockbill_items");
  1085. insertSQL.setUniqueid(st_stockbill_itemsid);
  1086. insertSQL.setSiteid(siteid);
  1087. insertSQL.setValue("rowno", 1);
  1088. insertSQL.setValue("sa_dispatch_itemsid", 0);
  1089. insertSQL.setValue("sourceobject", "sa_sendrepair_detail");
  1090. insertSQL.setValue("sourceid", sendrepairdetail.getLong("sa_sendrepair_detailid"));
  1091. insertSQL.setValue("stockid",stockRowsMap.containsKey("106")?stockRowsMap.get("106").get(0).getLong("stockid"):0);
  1092. insertSQL.setValue("itemid", sendrepairdetail.getLong("itemid"));
  1093. insertSQL.setValue("itemno", sendrepairdetail.getString("itemno"));
  1094. insertSQL.setValue("itemname", sendrepairdetail.getString("itemname"));
  1095. insertSQL.setValue("model", sendrepairdetail.getString("model"));
  1096. insertSQL.setValue("qty", sendrepairdetail.getBigDecimal("qty"));
  1097. insertSQL.setValue("st_stockbillid", st_stockbillid);
  1098. sqlList.add(insertSQL.getSQL());
  1099. if(StringUtils.isNotBlank(sendrepairdetail.getString("sku"))){
  1100. insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
  1101. long st_stockbill_items_skuid = createTableID("st_stockbill_items_sku");
  1102. insertSQL.setUniqueid(st_stockbill_items_skuid);
  1103. insertSQL.setSiteid(siteid);
  1104. insertSQL.setValue("stockid", stockRowsMap.containsKey("106")?stockRowsMap.get("106").get(0).getLong("stockid"):0);
  1105. insertSQL.setValue("itemid", sendrepairdetail.getLong("itemid"));
  1106. insertSQL.setValue("sku", sendrepairdetail.getString("sku"));
  1107. insertSQL.setValue("st_stockbillid", st_stockbillid);
  1108. insertSQL.setValue("st_stockbill_itemsid", st_stockbill_itemsid);
  1109. sqlList.add(insertSQL.getSQL());
  1110. }
  1111. sqlList.addAll(sendrepairIcinvbal(isinstock("其他入库","1",istrue),sendrepairdetail,stockRowsMap.containsKey("106")?stockRowsMap.get("106").get(0).getLong("stockid"):0));
  1112. sqlList.add("update sa_itemsku set stockid="+(stockRowsMap.containsKey("106")?stockRowsMap.get("106").get(0).getLong("stockid"):0)+" where sku='"+sendrepairdetail.getString("sku")+"'");
  1113. }
  1114. if (!istrue) {
  1115. sqlList.addAll(sendrepairIcinvbal(isinstock("其他入库","1",istrue),sendrepairdetail,stockRowsMap.containsKey("106")?stockRowsMap.get("106").get(0).getLong("stockid"):0));
  1116. sqlList.add("update sa_itemsku set stockid=0 where sku='"+sendrepairdetail.getString("sku")+"'");
  1117. }
  1118. return sqlList;
  1119. }
  1120. public ArrayList<String> sendrepairIcinvbal_new(boolean isinstock,Row sendrepairdetail,long stockid) throws YosException {// 云链
  1121. ArrayList<String> sqlList =new ArrayList<>();
  1122. long newitemid = sendrepairdetail.getLong("newitemid");
  1123. String newitemno = sendrepairdetail.getString("newitemno");
  1124. ArrayList<Long> itemList= new ArrayList<>();
  1125. itemList.add(newitemid);
  1126. RowsMap invbalsRowsMap = SQLFactory.createQuerySQL(dbConnect, "st_invbal").setWhere("siteid", siteid).setWhere("itemid",itemList).query().toRowsMap("itemid");
  1127. BigDecimal qty =isinstock ? sendrepairdetail.getBigDecimal("qty") : sendrepairdetail.getBigDecimal("qty").negate();
  1128. if (!invbalsRowsMap.containsKey(String.valueOf(newitemid)) || !invbalsRowsMap.get(String.valueOf(newitemid)).toRowsMap("stockid").containsKey(String.valueOf(stockid))) {
  1129. InsertSQL invbalInsert = SQLFactory.createInsertSQL(this, "st_invbal");
  1130. invbalInsert.setValue("siteid", siteid);
  1131. invbalInsert.setValue("stockid", stockid);
  1132. invbalInsert.setValue("itemid", newitemid);
  1133. invbalInsert.setValue("qty", qty.doubleValue());
  1134. sqlList.add(invbalInsert.getSQL());
  1135. } else {
  1136. UpdateSQL invbalUpdate = SQLFactory.createUpdateSQL(this, "st_invbal");
  1137. invbalUpdate.addValue("qty",qty);
  1138. invbalUpdate.setWhere("itemid", newitemid);
  1139. invbalUpdate.setWhere("stockid", stockid);
  1140. invbalUpdate.setWhere("siteid", siteid);
  1141. sqlList.add(invbalUpdate.getSQL());
  1142. }
  1143. return sqlList;
  1144. }
  1145. public ArrayList<String> sendrepairIcinvbal(boolean isinstock,Row sendrepairdetail,long stockid) throws YosException {// 云链
  1146. ArrayList<String> sqlList =new ArrayList<>();
  1147. long itemid = sendrepairdetail.getLong("itemid");
  1148. ArrayList<Long> itemList= new ArrayList<>();
  1149. itemList.add(itemid);
  1150. RowsMap invbalsRowsMap = SQLFactory.createQuerySQL(dbConnect, "st_invbal").setWhere("siteid", siteid).setWhere("itemid",itemList).query().toRowsMap("itemid");
  1151. BigDecimal qty =isinstock ? sendrepairdetail.getBigDecimal("qty") : sendrepairdetail.getBigDecimal("qty").negate();
  1152. if (!invbalsRowsMap.containsKey(String.valueOf(itemid)) || !invbalsRowsMap.get(String.valueOf(itemid)).toRowsMap("stockid").containsKey(String.valueOf(stockid))) {
  1153. InsertSQL invbalInsert = SQLFactory.createInsertSQL(this, "st_invbal");
  1154. invbalInsert.setValue("siteid", siteid);
  1155. invbalInsert.setValue("stockid", stockid);
  1156. invbalInsert.setValue("itemid", itemid);
  1157. invbalInsert.setValue("qty", qty.doubleValue());
  1158. sqlList.add(invbalInsert.getSQL());
  1159. } else {
  1160. UpdateSQL invbalUpdate = SQLFactory.createUpdateSQL(this, "st_invbal");
  1161. invbalUpdate.addValue("qty", qty);
  1162. invbalUpdate.setWhere("itemid", itemid);
  1163. invbalUpdate.setWhere("stockid", stockid);
  1164. invbalUpdate.setWhere("siteid", siteid);
  1165. sqlList.add(invbalUpdate.getSQL());
  1166. }
  1167. return sqlList;
  1168. }
  1169. public boolean isinstock(String type, String rb, boolean fischeck) {
  1170. if (type.equals("其他出库") || type.equals("销售出库")
  1171. || type.equals("生产领料出库") || type.equals("委外领料出库")
  1172. || type.equals("返修出库")) {
  1173. if ((fischeck && rb.equals("1")) || (!fischeck && rb.equals("0"))) {
  1174. return false;
  1175. } else {
  1176. return true;
  1177. }
  1178. } else if (type.equals("其他入库") || type.equals("外购入库")
  1179. || type.equals("生产入库") || type.equals("委外入库")
  1180. || type.equals("返修入库")) {
  1181. if ((fischeck && rb.equals("1")) || (!fischeck && rb.equals("0"))) {
  1182. return true;
  1183. } else {
  1184. return false;
  1185. }
  1186. }
  1187. return false;
  1188. }
  1189. }