Browse Source

快递信息单大部分功能

hu 2 weeks ago
parent
commit
72f25ea791

+ 40 - 0
src/custom/restcontroller/R.java

@@ -6511,6 +6511,46 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2025080711005903 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025080711063603 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025080711074703 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025080711235203 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025080711271103 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025080711271403 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025080711325203 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025080713343803 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 1 - 1
src/custom/restcontroller/webmanage/sale/accessoryorder/accessoryorder.java

@@ -322,7 +322,7 @@ public class accessoryorder extends Controller {
             }
             if (whereObject.containsKey("cardno") && !"".equals(whereObject.getString("cardno"))) {
                 where.append(" and(");
-                where.append("t1.cardno ='").append(whereObject.getString("condition")).append("' ");
+                where.append("t1.cardno ='").append(whereObject.getString("cardno")).append("' ");
                 where.append(")");
             }
         }

+ 217 - 3
src/custom/restcontroller/webmanage/sale/expressform/expressform.java

@@ -10,7 +10,9 @@ import common.annotation.API;
 import common.annotation.CACHEING;
 import common.annotation.CACHEING_CLEAN;
 import common.data.*;
+import org.apache.commons.lang.StringUtils;
 import restcontroller.R;
+import restcontroller.sale.stockbill.stockbill;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
@@ -47,6 +49,7 @@ public class expressform extends Controller {
         String rcv_county = content.getStringValue("rcv_county");
         String rcv_address = content.getStringValue("rcv_address");
         long expresssdrid = content.getLongValue("expresssdrid");
+        String mailno=content.getStringValue("mailno");
 
         if (expressformid <= 0) {
             String orderby="";
@@ -87,7 +90,8 @@ public class expressform extends Controller {
             insertSQL.setValue("rcv_address", rcv_address);
             insertSQL.setValue("expresssdrid", expresssdrid);
             insertSQL.setValue("remarks", remarks);
-            insertSQL.setValue("billno", createBillCode("expressform"));
+            insertSQL.setValue("mailno", mailno);
+            insertSQL.setValue("txlogisticid", createBillCode("expressform"));
 
             insertSQL.setValue("createby", username);
             insertSQL.setDateValue("createdate");
@@ -124,6 +128,7 @@ public class expressform extends Controller {
                     updateSQL.setValue("rcv_county", rcv_county);
                     updateSQL.setValue("rcv_address", rcv_address);
                     updateSQL.setValue("remarks", remarks);
+                    updateSQL.setValue("mailno", mailno);
                     updateSQL.setValue("changeby", username);
                     updateSQL.setDateValue("changedate");
                     sqlList.add(updateSQL.getSQL());
@@ -201,13 +206,13 @@ public class expressform extends Controller {
     }
 
     @API(title = "删除", apiversion = R.ID2025080614521603.v1.class)
-    @CACHEING_CLEAN(apiClass = {expressform.class})
+    @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class})
     public String delete() throws YosException {
         JSONArray expressformids = content.getJSONArray("expressformids");
         BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, expressformids.size());
         for (Object o : expressformids) {
             long expressformid = Long.parseLong(o.toString());
-            Rows RowsStatus = dbConnect.runSqlQuery("select expressformid,status from expressform where siteid='"
+            Rows RowsStatus = dbConnect.runSqlQuery("select expressformid,status,success,mailno,txlogisticid from expressform where siteid='"
                     + siteid + "' and expressformid='" + expressformid + "'");
 
             if (RowsStatus.isNotEmpty()) {
@@ -215,12 +220,221 @@ public class expressform extends Controller {
                     batchDeleteErr.addErr(expressformid, "非新建状态的快递信息无法删除");
                     continue;
                 }
+                if (!StringUtils.isNotBlank(RowsStatus.get(0).getString("mailno"))) {
+                    batchDeleteErr.addErr(expressformid, "该快递信息单已填写'电子面单号',无法删除!");
+                    continue;
+                }
+                if (RowsStatus.get(0).getBoolean("success")) {
+                    batchDeleteErr.addErr(expressformid, "该快递信息单已成功生成电子面单,无法删除!");
+                    continue;
+                }
             }
             ArrayList<String> sqllist = new ArrayList<>();
             sqllist.add("delete from expressform where siteid='" + siteid + "' and expressformid=" + expressformid);
+            sqllist.add("update st_stockbill set txlogisticid='',mailno='' where siteid='" + siteid + "' and txlogisticid=" + RowsStatus.get(0).getString("txlogisticid"));
             //sqllist.add("delete from expressformbillcodes where siteid='" + siteid + "' and expressformid=" + expressformid);
             dbConnect.runSqlUpdate(sqllist);
         }
         return batchDeleteErr.getReturnObject().toString();
     }
+
+    @API(title = "可绑定销售出库单查询", apiversion = R.ID2025080711005903.v1.class)
+    @CACHEING
+    public String querycanbindstockbills() throws YosException {
+        long sys_enterpriseid=content.getLong("sys_enterpriseid");
+        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 t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+        }
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "st_stockbill","*");
+        querySQL.setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid",
+                "enterprisename", "abbreviation");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid",
+                "agentnum");
+        querySQL.setWhere("t1.siteid", siteid);
+        querySQL.setWhere("t1.sys_enterpriseid", sys_enterpriseid);
+        querySQL.setWhere("t1.type='销售出库' and t1.status='审核' and t1.rb=1 and ifnull(t1.txlogisticid,'')=''");
+        querySQL.setWhere(where);
+        querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy(pageSorting);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+    @API(title = "已绑定销售出库单", apiversion = R.ID2025080711063603.v1.class)
+    @CACHEING
+    public String yibindstockbills() throws YosException {
+        String txlogisticid =content.getString("txlogisticid");
+        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 t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+        }
+
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "st_stockbill","*");
+        querySQL.setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid",
+                "enterprisename", "abbreviation");
+        querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid",
+                "agentnum");
+        querySQL.setWhere("t1.siteid", siteid);
+        querySQL.setWhere("t1.type='销售出库' and t1.txlogisticid='"+txlogisticid+"'");
+        querySQL.setWhere(where);
+        querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy(pageSorting);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+
+
+
+    @API(title = "绑定销售出库单", apiversion = R.ID2025080711074703.v1.class)
+    @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class})
+    public String bindstockbill() throws YosException {
+        long expressformid = content.getLong("expressformid");
+        String txlogisticid =content.getString("txlogisticid");
+        String mailno =content.getString("mailno");
+        JSONArray st_stockbillids = content.getJSONArray("st_stockbillids");
+        ArrayList<String> sqlList = new ArrayList<>();
+        Rows rows =dbConnect.runSqlQuery("select * from expressform where siteid='"+siteid+"' and expressformid="+expressformid);
+        if(rows.isEmpty()){
+            return getErrReturnObject().setErrMsg("该快递信息不存在").toString();
+        }
+        if(!rows.get(0).getString("status").equals("新建")){
+            return getErrReturnObject().setErrMsg("非新建状态下不能操作").toString();
+        }
+        if(rows.get(0).getLong("sys_enterpriseid")==0){
+            return getErrReturnObject().setErrMsg("必须指定经销商编号,才能关联销售出库单").toString();
+        }
+
+        if(st_stockbillids.size()==0) {
+            return getErrReturnObject().setErrMsg("未选中任何销售出库单!").toString();
+        }
+        String sql="select * from st_stockbill where siteid='"+siteid+"' and st_stockbillid in"+st_stockbillids.toJSONString();
+        sql = sql.replace("[", "(").replace("]", ")");
+        Rows stockbillrows =dbConnect.runSqlQuery(sql);
+        for(Row row :stockbillrows){
+            if(StringUtils.isNotBlank(row.getString("txlogisticid"))){
+                return getErrReturnObject().setErrMsg("销售出库单"+row.getString("billno")+",已关联快递信息单!,不得重复关联!").toString();
+            }
+            sqlList.add("update st_stockbill set txlogisticid='"+txlogisticid+"',mailno='"+mailno+"' where st_stockbillid="+row.getLong("st_stockbillid"));
+        }
+        dbConnect.runSqlUpdate(sqlList);
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "解绑销售出库单", apiversion = R.ID2025080711235203.v1.class)
+    @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class})
+    public String unbindstockbill() throws YosException {
+        JSONArray st_stockbillids = content.getJSONArray("st_stockbillids");
+        long expressformid = content.getLong("expressformid");
+        ArrayList<String> sqlList = new ArrayList<>();
+        Rows rows =dbConnect.runSqlQuery("select * from expressform where siteid='"+siteid+"' and expressformid="+expressformid);
+        if(rows.isEmpty()){
+            return getErrReturnObject().setErrMsg("该快递信息不存在").toString();
+        }
+        if(!rows.get(0).getString("status").equals("新建")){
+            return getErrReturnObject().setErrMsg("非新建状态下不能操作").toString();
+        }
+        if(st_stockbillids.size()==0) {
+            return getErrReturnObject().setErrMsg("未选中任何销售出库单!").toString();
+        }
+        sqlList.add("update st_stockbill set txlogisticid='',mailno='' where st_stockbillid in"+st_stockbillids.toJSONString().replace("[", "(").replace("]", ")"));
+        dbConnect.runSqlUpdate(sqlList);
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "审核", apiversion = R.ID2025080711271103.v1.class)
+    @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class})
+    public String check() throws YosException {
+        Long expressformid = content.getLong("expressformid");
+        boolean ischeck =content.getBoolean("ischeck");
+        Rows rows = dbConnect.runSqlQuery("select t1.expressformid,t1.status,t1.mailno,t1.txlogisticid from expressform t1 where t1.expressformid ='"
+                + expressformid + "' and  t1.siteid='" + siteid + "'");
+        for (Row row : rows) {
+            if(ischeck){
+                if (!row.getString("status").equals("新建")) {
+                    return getErrReturnObject().setErrMsg("非新建状态的【"+row.getString("txlogisticid")+"】快递信息单无法审核")
+                            .toString();
+                }
+                if(StringUtils.isBlank(row.getString("mailno"))) {
+                    return getErrReturnObject().setErrMsg("面单号未填写,不能审核;请先尝试申请面单号")
+                            .toString();
+                }
+            }else{
+                if (!row.getString("status").equals("审核")) {
+                    return getErrReturnObject().setErrMsg("非审核状态的【"+row.getString("txlogisticid")+"】快递信息单无法反审核")
+                            .toString();
+                }
+            }
+        }
+        ArrayList<String> sqlList = new ArrayList<>();
+        UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "expressform");
+        updateSQL.setUniqueid(expressformid);
+        updateSQL.setSiteid(siteid);
+        updateSQL.setValue("status", ischeck?"审核":"新建");
+        updateSQL.setValue("checkby", ischeck?username:"null");
+        if(ischeck){
+            updateSQL.setDateValue("checkdate");
+        }else{
+            updateSQL.setValue("checkdate","null");
+        }
+
+        sqlList.add(updateSQL.getSQL());
+        dbConnect.runSqlUpdate(sqlList);
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "关闭快递信息单", apiversion = R.ID2025080711325203.v1.class)
+    @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class})
+    public String close() throws YosException {
+        ArrayList<String> sqlList = new ArrayList<>();
+        String txlogisticid =content.getString("txlogisticid");
+        Long expressformid = content.getLong("expressformid");
+        Rows stockbillrows =dbConnect.runSqlQuery("select * from st_stockbill where txlogisticid='"+txlogisticid+"' and siteid='"+siteid+"'");
+        Rows rows =dbConnect.runSqlQuery("select * from expressform where siteid='"+siteid+"' and expressformid="+expressformid);
+        if(rows.isEmpty()){
+            return getErrReturnObject().setErrMsg("该快递信息不存在").toString();
+        }
+        if(!rows.get(0).getString("status").equals("审核")){
+            return getErrReturnObject().setErrMsg("非审核状态下不能关闭").toString();
+        }
+        if((!rows.get(0).getBoolean("success")) && stockbillrows.size()==0) {
+            return getErrReturnObject().setErrMsg("该快递信息单未生成电子面单,且未关联销售出库单,直接删除即可").toString();
+        }
+
+        for(Row row :stockbillrows){
+            sqlList.add("update st_stockbill set txlogisticid='',mailno='' where st_stockbillid="+row.getLong("st_stockbillid"));
+        }
+        sqlList.add("update expressform set status='关闭' where expressformid="+expressformid);
+        dbConnect.runSqlUpdate(sqlList);
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "查询快递发件人", apiversion = R.ID2025080713343803.v1.class)
+    public String querysendperson() throws YosException {
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "expresssdr","*");
+        querySQL.setTableAlias("t1");
+        querySQL.setWhere("t1.siteid", siteid);
+        querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy(pageSorting);
+        Rows rows = querySQL.query();
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+
 }