aftersalesmag.java 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. package restcontroller.sale.aftersalesmag;
  2. import beans.datacontrllog.DataContrlLog;
  3. import com.alibaba.fastjson2.JSONObject;
  4. import common.Controller;
  5. import common.YosException;
  6. import common.annotation.API;
  7. import common.annotation.CACHEING;
  8. import common.annotation.CACHEING_CLEAN;
  9. import common.data.*;
  10. import restcontroller.R;
  11. import java.util.ArrayList;
  12. /**
  13. * 返退单
  14. */
  15. @API(title = "返退申请单")
  16. public class aftersalesmag extends Controller {
  17. public aftersalesmag(JSONObject content) throws YosException {
  18. super(content);
  19. // TODO Auto-generated constructor stub
  20. }
  21. @API(title = "查询返退单列表", apiversion = R.ID20230105161503.v1.class)
  22. @CACHEING
  23. public String queryaftersalesmagList() throws YosException {
  24. StringBuffer where = new StringBuffer(" 1=1 ");
  25. if (content.containsKey("where")) {
  26. JSONObject whereObject = content.getJSONObject("where");
  27. if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
  28. where.append(" and(");
  29. where.append("t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
  30. where.append("or t2.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
  31. where.append(")");
  32. }
  33. if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
  34. // if(content.getString("type").equals("借用归还单")) {
  35. // where.append(" and t1.createdate >='" + whereObject.getString("startdate")).append("' ");
  36. // }else if(content.getString("type").equals("退货单")) {
  37. // where.append(" and t1.checkdate >='" + whereObject.getString("startdate")).append("' ");
  38. // }
  39. where.append(" and t1.billdate >='" + whereObject.getString("begindate")).append("' ");
  40. }
  41. if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
  42. // if(content.getString("type").equals("借用归还单")) {
  43. // where.append(" and t1.createdate <='" + whereObject.getString("enddate")).append("' ");
  44. // }else if(content.getString("type").equals("退货单")) {
  45. // where.append(" and t1.checkdate <='" + whereObject.getString("enddate")).append("' ");
  46. // }
  47. where.append(" and t1.billdate <='" + whereObject.getString("enddate")).append(" 23:59:59'");
  48. }
  49. if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
  50. where.append(" and t1.status ='").append(whereObject.getString("status")).append("' ");
  51. }
  52. }
  53. QuerySQL t5 = SQLFactory.createQuerySQL(this, "st_stockbill_items_sku", "sku").setTableAlias("t1");
  54. t5.addJoinTable(JOINTYPE.inner, "st_stockbill", "t2", "t2.st_stockbillid=t1.st_stockbillid", "st_stockbillid", "checkdate");
  55. t5.setWhere("t2.type='返修入库' and t2.status = '审核'");
  56. QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_aftersalesmag", "*");
  57. querySQL.setTableAlias("t1");
  58. querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid", "enterprisename");
  59. querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid", "agentnum");
  60. querySQL.addJoinTable(JOINTYPE.left, "sa_aftersalesmag_items", "t4", "t1.sa_aftersalesmagid = t4.sa_aftersalesmagid AND t1.siteid = t4.siteid", "name", "phonenumber", "address",
  61. "stockdate", "enddate", "model", "unitname", "itemname", "itemno", "duty", "demand", "machinecode", "reason", "qty", "itemid");
  62. querySQL.addJoinTable(JOINTYPE.left, t5, "t5", "t5.sku=t4.machinecode");
  63. querySQL.addJoinTable(JOINTYPE.left, "sa_sendrepair", "t6", "t6.sourcetable='st_stockbill' and t6.sourceid=t5.st_stockbillid");
  64. querySQL.addQueryFields("remarksdetail", "t4.remarks");
  65. querySQL.addQueryFields("incheckdate", "t5.checkdate");
  66. querySQL.addQueryFields("outcheckdate", "t6.checkdate");
  67. querySQL.setSiteid(siteid);
  68. querySQL.setWhere(where.toString());
  69. querySQL.setWhere("t1.sys_enterpriseid", sys_enterpriseid);
  70. querySQL.setPage(pageSize, pageNumber);
  71. Rows rows = querySQL.query();
  72. // ArrayList<Long> ids = rows.toArrayList("sa_aftersalesmagid", new ArrayList<>());
  73. // //查询反退金额
  74. // RowsMap aftersalesmagReturnAmountRowsMap = Aftersalesmag.getAftersalesmagReturnAmount(this, ids);
  75. // for (Row row : rows) {
  76. //
  77. // Long id = row.getLong("sa_aftersalesmagid");
  78. // if (aftersalesmagReturnAmountRowsMap.get(id.toString()).isNotEmpty()) {
  79. // row.put("returnamount", aftersalesmagReturnAmountRowsMap.get(id.toString()).get(0).getBigDecimal("returnamount").toPlainString());
  80. // } else {
  81. // row.put("returnamount", 0);
  82. // }
  83. //
  84. // }
  85. return getSucReturnObject().setData(rows).toString();
  86. }
  87. @API(title = "提交", apiversion = R.ID20230105161603.v1.class)
  88. @CACHEING_CLEAN(apiversions = {R.ID20230104160603.v1.class, R.ID20230104160703.v1.class, R.ID20230105110903.class, R.ID20230105161503.v1.class})
  89. public String sumbit() throws YosException {
  90. Long sa_aftersalesmagid = content.getLong("sa_aftersalesmagid");
  91. Long sa_orderid = 0L;
  92. Long sys_enterpriseid = 0L;
  93. Rows rows = dbConnect.runSqlQuery(
  94. "select sa_aftersalesmagid,status,billno,sa_orderid,sys_enterpriseid,type from sa_aftersalesmag where sa_aftersalesmagid ='"
  95. + sa_aftersalesmagid + "' and siteid='" + siteid + "'");
  96. if (rows.isEmpty()) {
  97. return getErrReturnObject().setErrMsg("该返退单不存在").toString();
  98. } else {
  99. sa_orderid = rows.get(0).getLong("sa_orderid");
  100. sys_enterpriseid = rows.get(0).getLong("sys_enterpriseid");
  101. if (!rows.get(0).getString("status").equals("新建")) {
  102. return getErrReturnObject().setErrMsg("单号为:【" + rows.get(0).getString("billno") + "】的返退单为非新建状态,无法提交")
  103. .toString();
  104. }
  105. }
  106. if (dbConnect.runSqlQuery(
  107. "select sa_aftersalesmagid from sa_aftersalesmag_items where sa_aftersalesmagid ='"
  108. + sa_aftersalesmagid + "' and siteid='" + siteid + "'").isEmpty()) {
  109. return getErrReturnObject().setErrMsg("返退明细为空不可提交").toString();
  110. }
  111. // Rows rowsOrderDetail = dbConnect.runSqlQuery("select t1.undeliqty,t1.deliedqty,t1.qty,t1.returnqty,t1.sa_orderitemsid from sa_orderitems t1 where t1.sa_orderid=" + sa_orderid);
  112. // RowsMap rowsMap = rowsOrderDetail.toRowsMap("sa_orderitemsid");
  113. // Rows sa_aftersalesmag_itemsRows = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t2.itemno,t2.itemname,t2.skucontrol from sa_aftersalesmag_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid where t1.sa_aftersalesmagid=" + sa_aftersalesmagid);
  114. // for (Row row : sa_aftersalesmag_itemsRows) {
  115. // Rows orderitemsRows = rowsMap.get(row.getString("sa_orderitemsid"));
  116. // if (orderitemsRows.isEmpty()) {
  117. // //return getErrReturnObject().setErrMsg("对应的订单行不存在").toString();
  118. // }else{
  119. // if(rows.get(0).getString("type").equals("退货单")){
  120. // BigDecimal returnqty =orderitemsRows.get(0).getBigDecimal("returnqty");
  121. // BigDecimal qty = orderitemsRows.get(0).getBigDecimal("qty");
  122. // BigDecimal undeliqty = orderitemsRows.get(0).getBigDecimal("undeliqty");
  123. // BigDecimal canreturnqty = (qty.subtract(undeliqty)).subtract(returnqty);
  124. // if (row.getBigDecimal("qty").compareTo(canreturnqty) > 0) {
  125. // return getErrReturnObject().setErrMsg("退货数量大于订单可退货数量").toString();
  126. // }
  127. // }
  128. //
  129. // }
  130. //
  131. // }
  132. // Rows rowsOrder = dbConnect.runSqlQuery("select sa_orderid,status from sa_order where sa_orderid=" + sa_orderid);
  133. // if (!rowsOrder.isEmpty() && rowsOrder.get(0).getString("status").equals("关闭")) {
  134. // //如果订单已经发完了,则判断最后一个物流单的确认收货时间
  135. // Rows sainviceRows = dbConnect.runSqlQuery("select t1.sa_orderid,t2.sa_dispatchid from sa_order t1 inner join sa_dispatch t2 on t1.sa_orderid=t2.sa_orderid and t1.siteid=t2.siteid where t1.sa_orderid=" + sa_orderid);
  136. // Rows logisticsRows = dbConnect.runSqlQuery("select t1.sa_orderid,t2.sa_dispatchid,t3.lastreceivedate from sa_order t1 inner join sa_dispatch t2 on t1.sa_orderid=t2.sa_orderid and t1.siteid=t2.siteid inner join (select t1.sa_dispatchid,t1.siteid,max(t2.receivedate) lastreceivedate from sa_logistics_items t1 inner join sa_logistics t2 on t1.sa_logisticsid=t2.sa_logisticsid and t1.siteid=t2.siteid where t2.status ='收货' group by t1.sa_dispatchid,t1.siteid) t3 on t2.sa_dispatchid=t3.sa_dispatchid and t2.siteid=t3.siteid where t1.sa_orderid=" + sa_orderid);
  137. // if (sainviceRows.size() == logisticsRows.size() && !logisticsRows.isEmpty()) {
  138. // Date latestreceivedate = logisticsRows.get(0).getDate("lastreceivedate");
  139. // for (Row row : logisticsRows) {
  140. // if (row.getDate("lastreceivedate").after(latestreceivedate)) {
  141. // latestreceivedate = row.getDate("lastreceivedate");
  142. // }
  143. // }
  144. // Rows sys_enterpriseRows = dbConnect.runSqlQuery("select t1.sys_enterpriseid,ifnull(t1.limitreturnday,0) limitreturnday from sys_enterprise t1 where t1.sys_enterpriseid=" + sys_enterpriseid);
  145. // if (sys_enterpriseRows.isEmpty()) {
  146. // return getErrReturnObject().setErrMsg("企业不存在").toString();
  147. // } else {
  148. // long limitreturnday = sys_enterpriseRows.get(0).getLong("limitreturnday");
  149. // Calendar calendar = Calendar.getInstance();
  150. // calendar.setTime(latestreceivedate);
  151. // calendar.add(Calendar.DATE, (int) limitreturnday);
  152. // if (calendar.getTimeInMillis() < Calendar.getInstance().getTimeInMillis()) {
  153. // return getErrReturnObject().setErrMsg("收货超过" + limitreturnday + "天,不可进行退货操作").toString();
  154. // }
  155. // }
  156. // }
  157. // }
  158. ArrayList<String> sqlList = new ArrayList<>();
  159. Rows sa_aftersalesmag_itemsRows = dbConnect.runSqlQuery("select t1.machinecode from sa_aftersalesmag_items t1 where t1.sa_aftersalesmagid=" + sa_aftersalesmagid);
  160. for (Row row : sa_aftersalesmag_itemsRows) {
  161. sqlList.add("update sa_itemsku set isreturn=1,stockid=0 where sku='" + row.getString("machinecode") + "'");
  162. }
  163. // for (Row row : sa_aftersalesmag_itemsRows) {
  164. //// BigDecimal returnqty = row.getBigDecimal("qty");
  165. //// if(rows.get(0).getString("type").equals("退货单")){
  166. //// sqlList.add("update sa_orderitems set returnqty=returnqty+" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
  167. //// }
  168. // Rows sumamountrows = dbConnect.runSqlQuery("select sum(amount) sumamount from sa_aftersalesmag_items where sa_aftersalesmagid=" + sa_aftersalesmagid + " and siteid = '" + siteid + "'");
  169. // if (!sumamountrows.isEmpty()) {
  170. // sqlList.add("update sa_aftersalesmag set returnamount=" + sumamountrows.get(0).getBigDecimal("sumamount") + " where sa_aftersalesmagid=" + sa_aftersalesmagid);
  171. // } else {
  172. // sqlList.add("update sa_aftersalesmag set returnamount=0 where sa_aftersalesmagid=" + sa_aftersalesmagid);
  173. // }
  174. // }
  175. SQLFactory sqlFactoryupdate = new SQLFactory(this, "返退单提交");
  176. sqlFactoryupdate.addParameter("siteid", siteid);
  177. sqlFactoryupdate.addParameter("sa_aftersalesmagid", sa_aftersalesmagid);
  178. sqlFactoryupdate.addParameter("submitby", username);
  179. sqlList.add(sqlFactoryupdate.getSQL());
  180. sqlList.add(DataContrlLog.createLog(this, "sa_aftersalesmag", sa_aftersalesmagid, "提交", "返退单提交成功").getSQL());
  181. dbConnect.runSqlUpdate(sqlList);
  182. return getSucReturnObject().toString();
  183. }
  184. // @API(title = "反提交", apiversion = R.ID20230105161703.v1.class)
  185. // @CACHEING_CLEAN(apiversions = {R.ID20230104160603.v1.class, R.ID20230104160703.v1.class, R.ID20230105110903.class, R.ID20230105161503.v1.class})
  186. // public String unsumbit() throws YosException {
  187. // Long sa_aftersalesmagid = content.getLong("sa_aftersalesmagid");
  188. // Long sa_orderid = 0L;
  189. // Rows rows = dbConnect.runSqlQuery(
  190. // "select sa_aftersalesmagid,status,billno,sa_orderid,type from sa_aftersalesmag where sa_aftersalesmagid ='"
  191. // + sa_aftersalesmagid + "' and siteid='" + siteid + "'");
  192. // if (rows.isEmpty()) {
  193. // return getErrReturnObject().setErrMsg("该返退单不存在").toString();
  194. // } else {
  195. // sa_orderid = rows.get(0).getLong("sa_orderid");
  196. // if (!rows.get(0).getString("status").equals("提交")) {
  197. // return getErrReturnObject().setErrMsg("单号为:【" + rows.get(0).getString("billno") + "】的返退单为非提交状态,无法反提交")
  198. // .toString();
  199. // }
  200. // }
  201. //
  202. // ArrayList<String> sqlList = new ArrayList<>();
  203. //// Rows sa_aftersalesmag_itemsRows = dbConnect.runSqlQuery("select t1.qty,t1.sa_orderitemsid,t2.itemno,t2.itemname from sa_aftersalesmag_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid where t1.sa_aftersalesmagid=" + sa_aftersalesmagid);
  204. //// for (Row row : sa_aftersalesmag_itemsRows) {
  205. //// BigDecimal returnqty = row.getBigDecimal("qty");
  206. //// if(rows.get(0).getString("type").equals("退货单")){
  207. //// sqlList.add("update sa_orderitems set returnqty=returnqty-" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
  208. //// }
  209. //// }
  210. // SQLFactory sqlFactoryupdate = new SQLFactory(this, "返退单反提交");
  211. // sqlFactoryupdate.addParameter("siteid", siteid);
  212. // sqlFactoryupdate.addParameter("sa_aftersalesmagid", sa_aftersalesmagid);
  213. // sqlFactoryupdate.addParameter("submitby", username);
  214. // sqlList.add(sqlFactoryupdate.getSQL());
  215. // sqlList.add(DataContrlLog.createLog(this, "sa_aftersalesmag", sa_aftersalesmagid, "反提交", "返退单反提交成功").getSQL());
  216. // dbConnect.runSqlUpdate(sqlList);
  217. // return getSucReturnObject().toString();
  218. // }
  219. }