| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- package restcontroller.sale.aftersalesmag;
- import beans.datacontrllog.DataContrlLog;
- import com.alibaba.fastjson2.JSONObject;
- import common.Controller;
- import common.YosException;
- import common.annotation.API;
- import common.annotation.CACHEING;
- import common.annotation.CACHEING_CLEAN;
- import common.data.*;
- import restcontroller.R;
- import java.util.ArrayList;
- /**
- * 返退单
- */
- @API(title = "返退申请单")
- public class aftersalesmag extends Controller {
- public aftersalesmag(JSONObject content) throws YosException {
- super(content);
- // TODO Auto-generated constructor stub
- }
- @API(title = "查询返退单列表", apiversion = R.ID20230105161503.v1.class)
- @CACHEING
- public String queryaftersalesmagList() throws YosException {
- StringBuffer where = new StringBuffer(" 1=1 ");
- if (content.containsKey("where")) {
- JSONObject whereObject = content.getJSONObject("where");
- if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) {
- where.append(" and(");
- where.append("t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
- where.append("or t2.enterprisename like'%").append(whereObject.getString("condition")).append("%' ");
- where.append(")");
- }
- if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
- // if(content.getString("type").equals("借用归还单")) {
- // where.append(" and t1.createdate >='" + whereObject.getString("startdate")).append("' ");
- // }else if(content.getString("type").equals("退货单")) {
- // where.append(" and t1.checkdate >='" + whereObject.getString("startdate")).append("' ");
- // }
- where.append(" and t1.billdate >='" + whereObject.getString("begindate")).append("' ");
- }
- if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
- // if(content.getString("type").equals("借用归还单")) {
- // where.append(" and t1.createdate <='" + whereObject.getString("enddate")).append("' ");
- // }else if(content.getString("type").equals("退货单")) {
- // where.append(" and t1.checkdate <='" + whereObject.getString("enddate")).append("' ");
- // }
- where.append(" and t1.billdate <='" + whereObject.getString("enddate")).append(" 23:59:59'");
- }
- if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
- where.append(" and t1.status ='").append(whereObject.getString("status")).append("' ");
- }
- }
- QuerySQL t5 = SQLFactory.createQuerySQL(this, "st_stockbill_items_sku", "sku").setTableAlias("t1");
- t5.addJoinTable(JOINTYPE.inner, "st_stockbill", "t2", "t2.st_stockbillid=t1.st_stockbillid", "st_stockbillid", "checkdate");
- t5.setWhere("t2.type='返修入库' and t2.status = '审核'");
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_aftersalesmag", "*");
- querySQL.setTableAlias("t1");
- querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid", "enterprisename");
- querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid", "agentnum");
- querySQL.addJoinTable(JOINTYPE.left, "sa_aftersalesmag_items", "t4", "t1.sa_aftersalesmagid = t4.sa_aftersalesmagid AND t1.siteid = t4.siteid", "name", "phonenumber", "address",
- "stockdate", "enddate", "model", "unitname", "itemname", "itemno", "duty", "demand", "machinecode", "reason", "qty", "itemid");
- querySQL.addJoinTable(JOINTYPE.left, t5, "t5", "t5.sku=t4.machinecode");
- querySQL.addJoinTable(JOINTYPE.left, "sa_sendrepair", "t6", "t6.sourcetable='st_stockbill' and t6.sourceid=t5.st_stockbillid");
- querySQL.addQueryFields("remarksdetail", "t4.remarks");
- querySQL.addQueryFields("incheckdate", "t5.checkdate");
- querySQL.addQueryFields("outcheckdate", "t6.checkdate");
- querySQL.setSiteid(siteid);
- querySQL.setWhere(where.toString());
- querySQL.setWhere("t1.sys_enterpriseid", sys_enterpriseid);
- querySQL.setPage(pageSize, pageNumber);
- Rows rows = querySQL.query();
- // ArrayList<Long> ids = rows.toArrayList("sa_aftersalesmagid", new ArrayList<>());
- // //查询反退金额
- // RowsMap aftersalesmagReturnAmountRowsMap = Aftersalesmag.getAftersalesmagReturnAmount(this, ids);
- // for (Row row : rows) {
- //
- // Long id = row.getLong("sa_aftersalesmagid");
- // if (aftersalesmagReturnAmountRowsMap.get(id.toString()).isNotEmpty()) {
- // row.put("returnamount", aftersalesmagReturnAmountRowsMap.get(id.toString()).get(0).getBigDecimal("returnamount").toPlainString());
- // } else {
- // row.put("returnamount", 0);
- // }
- //
- // }
- return getSucReturnObject().setData(rows).toString();
- }
- @API(title = "提交", apiversion = R.ID20230105161603.v1.class)
- @CACHEING_CLEAN(apiversions = {R.ID20230104160603.v1.class, R.ID20230104160703.v1.class, R.ID20230105110903.class, R.ID20230105161503.v1.class})
- public String sumbit() throws YosException {
- Long sa_aftersalesmagid = content.getLong("sa_aftersalesmagid");
- Long sa_orderid = 0L;
- Long sys_enterpriseid = 0L;
- Rows rows = dbConnect.runSqlQuery(
- "select sa_aftersalesmagid,status,billno,sa_orderid,sys_enterpriseid,type from sa_aftersalesmag where sa_aftersalesmagid ='"
- + sa_aftersalesmagid + "' and siteid='" + siteid + "'");
- if (rows.isEmpty()) {
- return getErrReturnObject().setErrMsg("该返退单不存在").toString();
- } else {
- sa_orderid = rows.get(0).getLong("sa_orderid");
- sys_enterpriseid = rows.get(0).getLong("sys_enterpriseid");
- if (!rows.get(0).getString("status").equals("新建")) {
- return getErrReturnObject().setErrMsg("单号为:【" + rows.get(0).getString("billno") + "】的返退单为非新建状态,无法提交")
- .toString();
- }
- }
- if (dbConnect.runSqlQuery(
- "select sa_aftersalesmagid from sa_aftersalesmag_items where sa_aftersalesmagid ='"
- + sa_aftersalesmagid + "' and siteid='" + siteid + "'").isEmpty()) {
- return getErrReturnObject().setErrMsg("返退明细为空不可提交").toString();
- }
- // 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);
- // RowsMap rowsMap = rowsOrderDetail.toRowsMap("sa_orderitemsid");
- // 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);
- // for (Row row : sa_aftersalesmag_itemsRows) {
- // Rows orderitemsRows = rowsMap.get(row.getString("sa_orderitemsid"));
- // if (orderitemsRows.isEmpty()) {
- // //return getErrReturnObject().setErrMsg("对应的订单行不存在").toString();
- // }else{
- // if(rows.get(0).getString("type").equals("退货单")){
- // BigDecimal returnqty =orderitemsRows.get(0).getBigDecimal("returnqty");
- // BigDecimal qty = orderitemsRows.get(0).getBigDecimal("qty");
- // BigDecimal undeliqty = orderitemsRows.get(0).getBigDecimal("undeliqty");
- // BigDecimal canreturnqty = (qty.subtract(undeliqty)).subtract(returnqty);
- // if (row.getBigDecimal("qty").compareTo(canreturnqty) > 0) {
- // return getErrReturnObject().setErrMsg("退货数量大于订单可退货数量").toString();
- // }
- // }
- //
- // }
- //
- // }
- // Rows rowsOrder = dbConnect.runSqlQuery("select sa_orderid,status from sa_order where sa_orderid=" + sa_orderid);
- // if (!rowsOrder.isEmpty() && rowsOrder.get(0).getString("status").equals("关闭")) {
- // //如果订单已经发完了,则判断最后一个物流单的确认收货时间
- // 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);
- // 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);
- // if (sainviceRows.size() == logisticsRows.size() && !logisticsRows.isEmpty()) {
- // Date latestreceivedate = logisticsRows.get(0).getDate("lastreceivedate");
- // for (Row row : logisticsRows) {
- // if (row.getDate("lastreceivedate").after(latestreceivedate)) {
- // latestreceivedate = row.getDate("lastreceivedate");
- // }
- // }
- // Rows sys_enterpriseRows = dbConnect.runSqlQuery("select t1.sys_enterpriseid,ifnull(t1.limitreturnday,0) limitreturnday from sys_enterprise t1 where t1.sys_enterpriseid=" + sys_enterpriseid);
- // if (sys_enterpriseRows.isEmpty()) {
- // return getErrReturnObject().setErrMsg("企业不存在").toString();
- // } else {
- // long limitreturnday = sys_enterpriseRows.get(0).getLong("limitreturnday");
- // Calendar calendar = Calendar.getInstance();
- // calendar.setTime(latestreceivedate);
- // calendar.add(Calendar.DATE, (int) limitreturnday);
- // if (calendar.getTimeInMillis() < Calendar.getInstance().getTimeInMillis()) {
- // return getErrReturnObject().setErrMsg("收货超过" + limitreturnday + "天,不可进行退货操作").toString();
- // }
- // }
- // }
- // }
- ArrayList<String> sqlList = new ArrayList<>();
- Rows sa_aftersalesmag_itemsRows = dbConnect.runSqlQuery("select t1.machinecode from sa_aftersalesmag_items t1 where t1.sa_aftersalesmagid=" + sa_aftersalesmagid);
- for (Row row : sa_aftersalesmag_itemsRows) {
- sqlList.add("update sa_itemsku set isreturn=1,stockid=0 where sku='" + row.getString("machinecode") + "'");
- }
- // for (Row row : sa_aftersalesmag_itemsRows) {
- //// BigDecimal returnqty = row.getBigDecimal("qty");
- //// if(rows.get(0).getString("type").equals("退货单")){
- //// sqlList.add("update sa_orderitems set returnqty=returnqty+" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
- //// }
- // Rows sumamountrows = dbConnect.runSqlQuery("select sum(amount) sumamount from sa_aftersalesmag_items where sa_aftersalesmagid=" + sa_aftersalesmagid + " and siteid = '" + siteid + "'");
- // if (!sumamountrows.isEmpty()) {
- // sqlList.add("update sa_aftersalesmag set returnamount=" + sumamountrows.get(0).getBigDecimal("sumamount") + " where sa_aftersalesmagid=" + sa_aftersalesmagid);
- // } else {
- // sqlList.add("update sa_aftersalesmag set returnamount=0 where sa_aftersalesmagid=" + sa_aftersalesmagid);
- // }
- // }
- SQLFactory sqlFactoryupdate = new SQLFactory(this, "返退单提交");
- sqlFactoryupdate.addParameter("siteid", siteid);
- sqlFactoryupdate.addParameter("sa_aftersalesmagid", sa_aftersalesmagid);
- sqlFactoryupdate.addParameter("submitby", username);
- sqlList.add(sqlFactoryupdate.getSQL());
- sqlList.add(DataContrlLog.createLog(this, "sa_aftersalesmag", sa_aftersalesmagid, "提交", "返退单提交成功").getSQL());
- dbConnect.runSqlUpdate(sqlList);
- return getSucReturnObject().toString();
- }
- // @API(title = "反提交", apiversion = R.ID20230105161703.v1.class)
- // @CACHEING_CLEAN(apiversions = {R.ID20230104160603.v1.class, R.ID20230104160703.v1.class, R.ID20230105110903.class, R.ID20230105161503.v1.class})
- // public String unsumbit() throws YosException {
- // Long sa_aftersalesmagid = content.getLong("sa_aftersalesmagid");
- // Long sa_orderid = 0L;
- // Rows rows = dbConnect.runSqlQuery(
- // "select sa_aftersalesmagid,status,billno,sa_orderid,type from sa_aftersalesmag where sa_aftersalesmagid ='"
- // + sa_aftersalesmagid + "' and siteid='" + siteid + "'");
- // if (rows.isEmpty()) {
- // return getErrReturnObject().setErrMsg("该返退单不存在").toString();
- // } else {
- // sa_orderid = rows.get(0).getLong("sa_orderid");
- // if (!rows.get(0).getString("status").equals("提交")) {
- // return getErrReturnObject().setErrMsg("单号为:【" + rows.get(0).getString("billno") + "】的返退单为非提交状态,无法反提交")
- // .toString();
- // }
- // }
- //
- // ArrayList<String> sqlList = new ArrayList<>();
- //// 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);
- //// for (Row row : sa_aftersalesmag_itemsRows) {
- //// BigDecimal returnqty = row.getBigDecimal("qty");
- //// if(rows.get(0).getString("type").equals("退货单")){
- //// sqlList.add("update sa_orderitems set returnqty=returnqty-" + returnqty + " where sa_orderitemsid=" + row.getString("sa_orderitemsid"));
- //// }
- //// }
- // SQLFactory sqlFactoryupdate = new SQLFactory(this, "返退单反提交");
- // sqlFactoryupdate.addParameter("siteid", siteid);
- // sqlFactoryupdate.addParameter("sa_aftersalesmagid", sa_aftersalesmagid);
- // sqlFactoryupdate.addParameter("submitby", username);
- // sqlList.add(sqlFactoryupdate.getSQL());
- // sqlList.add(DataContrlLog.createLog(this, "sa_aftersalesmag", sa_aftersalesmagid, "反提交", "返退单反提交成功").getSQL());
- // dbConnect.runSqlUpdate(sqlList);
- // return getSucReturnObject().toString();
- // }
- }
|