Bladeren bron

Merge remote-tracking branch 'origin/develop' into develop

shenjingwei 2 dagen geleden
bovenliggende
commit
2281d8e0a4

+ 66 - 2
src/custom/beans/stockbill/bills/BasicBill.java

@@ -8,6 +8,7 @@ import common.data.db.DBConnect;
 
 import java.math.BigDecimal;
 import java.util.ArrayList;
+import java.util.HashMap;
 
 public abstract class BasicBill {
     Controller controller;
@@ -113,6 +114,7 @@ public abstract class BasicBill {
     public ArrayList<String> getCheckSql(boolean ischeck) throws YosException {
         ArrayList<String> sqlList = new ArrayList<>();
         sqlList.addAll(updateInvbal(ischeck));//更新库存
+        sqlList.addAll(updateIcinvbal_total(ischeck));//更新总仓可发货量
         sqlList.addAll(updateMCode(ischeck));//更新序列号
         sqlList.addAll(updateHongqty(ischeck));//更新红冲数量
         sqlList.addAll(updateStatus(ischeck));//更新状态
@@ -131,6 +133,7 @@ public abstract class BasicBill {
         ArrayList<String> sqlList = new ArrayList<>();
         RowsMap invbalsRowsMap = SQLFactory.createQuerySQL(dbConnect, "st_invbal").setWhere("siteid", siteid).setWhere("itemid", itemRows.toArrayList("itemid")).query().toRowsMap("itemid");
         RowsMap invbalsSaleRowsMap = SQLFactory.createQuerySQL(dbConnect, "st_invbal_sale").setWhere("siteid", siteid).setWhere("itemid", itemRows.toArrayList("itemid")).query().toRowsMap("itemid");
+        RowsMap invbalsTotalRowsMap = SQLFactory.createQuerySQL(dbConnect, "st_invbal_total").setWhere("siteid", siteid).setWhere("itemid", itemRows.toArrayList("itemid")).query().toRowsMap("itemid");
         for (Row row : itemRows) {
             long itemid = row.getLong("itemid");
             long stockid = row.getLong("stockid");
@@ -144,12 +147,31 @@ public abstract class BasicBill {
                 sqlList.add(invbalInsert.getSQL());
             } else {
                 UpdateSQL invbalUpdate = SQLFactory.createUpdateSQL(controller, "st_invbal");
-                invbalUpdate.addValue("qty", qty);
+                invbalUpdate.addValue("qty", invbalsRowsMap.get(String.valueOf(itemid)).get(0).getBigDecimal("qty").add(qty));
                 invbalUpdate.setWhere("itemid", itemid);
                 invbalUpdate.setWhere("stockid", stockid);
                 invbalUpdate.setWhere("siteid", siteid);
                 sqlList.add(invbalUpdate.getSQL());
             }
+            //是否纳入总仓
+            if (SQLFactory.getRow(controller, "st_stock", stockid).getBoolean("isintotalstock")) {
+                if (!invbalsTotalRowsMap.containsKey(String.valueOf(itemid))) {
+                    InsertSQL invbalInsert = SQLFactory.createInsertSQL(controller, "st_invbal_total");
+                    invbalInsert.setValue("siteid", siteid);
+                    invbalInsert.setValue("itemid", itemid);
+                    invbalInsert.setValue("cansaleqty", qty.doubleValue());//可销售数量
+                    invbalInsert.setValue("candispatchqty", qty.doubleValue());//可发货数量
+                    invbalInsert.setValue("qty", qty.doubleValue());//库存数量
+                    sqlList.add(invbalInsert.getSQL());
+                } else {
+                    UpdateSQL invbalUpdate = SQLFactory.createUpdateSQL(controller, "st_invbal_total");
+                    invbalUpdate.addValue("qty", invbalsTotalRowsMap.get(String.valueOf(itemid)).get(0).getBigDecimal("qty").add(qty));//库存数量
+                    invbalUpdate.setWhere("itemid", itemid);
+                    invbalUpdate.setWhere("siteid", siteid);
+                    sqlList.add(invbalUpdate.getSQL());
+                }
+            }
+
             //是否为销售仓库
             if (SQLFactory.getRow(controller, "st_stock", stockid).getBoolean("issalestock")) {
                 if (!invbalsSaleRowsMap.containsKey(String.valueOf(itemid))) {
@@ -168,15 +190,57 @@ public abstract class BasicBill {
                         invbalUpdate.addValue("cansaleqty", qty.doubleValue());//可销售数量
                         invbalUpdate.addValue("candispatchqty", qty.doubleValue());//可发货数量
                     }
-                    invbalUpdate.addValue("qty", qty.doubleValue());//库存数量
+                    invbalUpdate.addValue("qty", invbalsSaleRowsMap.get(String.valueOf(itemid)).get(0).getBigDecimal("qty").add(qty));//库存数量
                     invbalUpdate.setWhere("itemid", itemid);
                     invbalUpdate.setWhere("siteid", siteid);
                     sqlList.add(invbalUpdate.getSQL());
                 }
+
             }
+
         }
         return sqlList;
     }
+    /**
+     * 更新总仓可发货量
+     *
+     * @param ischeck
+     * @return
+     * @throws YosException
+     */
+    public  ArrayList<String> updateIcinvbal_total(boolean ischeck) throws YosException {
+        HashMap<String, Row> icpaomap = new HashMap<String, Row>();// 用于暂存总仓库存pao的map
+        Rows ICINVBAL_TOTAL =dbConnect.runSqlQuery("select * from st_invbal_total where siteid='"+siteid+"'");
+        RowsMap ICINVBAL_TOTALRowsMap=ICINVBAL_TOTAL.toRowsMap("itemid");
+        int i = 0;
+        ArrayList<String> sqlList = new ArrayList<>();
+        for(Row row:itemRows){
+            long st_invbal_totalid;
+            if(ICINVBAL_TOTALRowsMap.containsKey(row.getString("itemid"))){
+                st_invbal_totalid=ICINVBAL_TOTALRowsMap.get(row.getString("itemid")).get(0).getLong("st_invbal_totalid");
+            }else{
+                st_invbal_totalid = controller.createTableID("st_invbal_total");
+                InsertSQL insertSQL = SQLFactory.createInsertSQL(controller, "st_invbal_total");
+                insertSQL.setUniqueid(st_invbal_totalid);
+                insertSQL.setSiteid(siteid);
+                insertSQL.setValue("itemid",row.getString("itemid"));
+                insertSQL.setValue("candispatchqty", 0);
+                insertSQL.setValue("cansaleqty", 0);
+                insertSQL.setValue("qty", 0);
+                insertSQL.setValue("changeuserid", controller.userid);
+                insertSQL.setValue("changeby", controller.username);
+                insertSQL.setDateValue("changedate");
+                sqlList.add(insertSQL.getSQL());
+            }
+            BigDecimal qty = BigDecimal.ZERO;
+
+            qty = ischeck ? row.getBigDecimal("qty") : row.getBigDecimal("qty").negate();
+
+            sqlList.add("update st_invbal_total set candispatchqty=candispatchqty-"+qty+" where st_invbal_totalid="+st_invbal_totalid);
+        }
+        return sqlList;
+    }
+
     /**
      * 更新已红冲数量
      *

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

@@ -6337,6 +6337,26 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2025073011124403 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073011141603 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073011151003 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073015312903 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 4 - 2
src/custom/restcontroller/webmanage/sale/bankstatement/Bankstatement.java

@@ -61,8 +61,10 @@ public class Bankstatement extends Controller {
         querySQL.setPage(pageSize, pageNumber);
         querySQL.setOrderBy(pageSorting);
         Rows rows = querySQL.query();
-        Rows lastruntime = dbConnect.runSqlQuery("select max(lastruntime) lastruntime from sys_services where classname in ('AutoQueryBoclnfosForJH_" + siteid + "','AutoQueryBoclnfosForNH_" + siteid + "','AutoQueryBoclnfosForZH_" + siteid + "')");
-        rows.get(0).put("lastruntime", lastruntime.isEmpty() ? "" : lastruntime.get(0).getString("lastruntime"));
+        Rows lastruntime = dbConnect.runSqlQuery("select max(lastruntime) lastruntime from sys_services where classname in ('AutoQueryBoclnfosForNH')");
+        if(rows.isNotEmpty()){
+            rows.get(0).put("lastruntime", lastruntime.isEmpty() ? "" : lastruntime.get(0).getString("lastruntime"));
+        }
         return getSucReturnObject().setData(rows).toString();
     }
 

+ 34 - 31
src/custom/restcontroller/webmanage/sale/bankstatement/CreateBankstatement.java

@@ -22,61 +22,64 @@ public class CreateBankstatement {
      * @return
      * @throws YosException
      */
-    public static JSONObject createBankstatement(ServiceController controller, JSONArray jsonArray, String siteid, String banktype) throws YosException {
-        ArrayList<String> tranflowList = controller.dbConnect.runSqlQuery("select tranflow from sa_bankstatement where siteid='" + siteid + "' and banktype='" + banktype + "'").toArrayList("tranflow");
+    public static JSONObject createBankstatement(ServiceController controller, JSONArray jsonArray, String siteid) throws YosException {
+        ArrayList<String> tranflowList = controller.dbConnect.runSqlQuery("select tranflow from sa_bankstatement where siteid='" + siteid + "' and banktype='农行'").toArrayList("tranflow");
         ArrayList<String> sqlList = new ArrayList<>();
         ArrayList<Long> idList = new ArrayList<>();
         for (Object o : jsonArray) {
             JSONObject jsonObject = (JSONObject) o;
-            String tranflow = jsonObject.getString("tranflow");
+            String tranflow = jsonObject.getString("TimeStab");
             if (!tranflowList.contains(tranflow)) {
-                String trantime = "";
-                if (banktype.equals("农行")) {
-                    trantime = tranflow.substring(0, 13);
-                } else {
-                    trantime = jsonObject.getString("trantime");
-                }
+                String trantime = jsonObject.getString("TrDate");
                 long sa_bankstatementid = controller.createTableID("sa_bankstatement");
-                BigDecimal amount = jsonObject.getBigDecimal("amount");
+                BigDecimal amount = jsonObject.getBigDecimal("Amt");
                 SQLFactory sqlFactory = new SQLFactory(controller, "银企直联流水账新增");
                 sqlFactory.addParameter("siteid", siteid);
                 sqlFactory.addParameter("sa_bankstatementid", sa_bankstatementid);
-                sqlFactory.addParameter("banktype", banktype);
+                sqlFactory.addParameter("banktype", "农行");
                 if (jsonObject.containsKey("accname")) {
-                    sqlFactory.addParameter("accname", jsonObject.getString("accname"));
+                    sqlFactory.addParameter("accname", jsonObject.getString("AccName"));
                 } else {
                     sqlFactory.addParameter("accname", "");
                 }
-                sqlFactory.addParameter("accno", jsonObject.getString("accno"));
+                sqlFactory.addParameter("accno", jsonObject.getString("AccNo"));
                 sqlFactory.addParameter("tranflow", tranflow);
-                sqlFactory.addParameter("oppbkname", jsonObject.getString("oppbkname"));
-                sqlFactory.addParameter("oppname", jsonObject.getString("oppname"));
-                sqlFactory.addParameter("oppaccno", jsonObject.getString("oppaccno"));
+                sqlFactory.addParameter("oppbkname", jsonObject.getString("OppBkName"));
+                sqlFactory.addParameter("oppname", jsonObject.getString("OppName"));
+                sqlFactory.addParameter("oppaccno", jsonObject.getString("OppAccNo"));
                 sqlFactory.addParameter("amount", amount);
                 sqlFactory.addParameter("trantime", trantime);
-                sqlFactory.addParameter("notes", jsonObject.getString("notes"));
-                sqlFactory.addParameter("remarks", jsonObject.getString("remarks"));
-                sqlFactory.addParameter("response", jsonObject.getString("response"));
+                sqlFactory.addParameter("notes", jsonObject.getString("Abs"));
+                sqlFactory.addParameter("remarks", jsonObject.getString("PostScript"));
+                sqlFactory.addParameter("response", jsonObject.toString());
                 sqlFactory.addParameter("sys_enterpriseid", 0);
                 sqlFactory.addParameter("sa_cashbillid", 0);
                 sqlFactory.addParameter("status", "未入账");
                 sqlFactory.addParameter("username", "");
                 sqlFactory.addParameter("createdate", LocalDateTime.now());
-                Rows enterprise = controller.dbConnect.runSqlQuery("select sys_enterpriseid,bankcardno from sys_enterprise_bank where siteid='" + siteid + "' and bankcardno=" + jsonObject.getString("oppaccno"));
-                if (enterprise.isNotEmpty() && enterprise.size() == 1) {
-                    long sys_enterpriseid = enterprise.get(0).getLong("sys_enterpriseid");
-                    JSONObject createcashbill = CreateCashbill.createcashbill(controller, sys_enterpriseid, amount, siteid, sa_bankstatementid, banktype, jsonObject.getStringValue("oppname"));
-                    if (createcashbill != null) {
-                        sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
-                        sqlFactory.addParameter("status", "已入账(系统)");
-                        long sa_cashbillid = createcashbill.getLong("sa_cashbillid");
-                        sqlFactory.addParameter("sa_cashbillid", sa_cashbillid);
-                        sqlList.add(sqlFactory.getSQL());
-                        sqlList.addAll((ArrayList<String>) createcashbill.get("sql"));
+
+                String POSTSCRIPT = jsonObject.getString("PostScript");
+                POSTSCRIPT = POSTSCRIPT.trim();
+                if (!POSTSCRIPT.equals("") && POSTSCRIPT.length() >=19) {
+                    String xncardnoabc = POSTSCRIPT.substring(0, 19);
+                    Rows enterprise = controller.dbConnect.runSqlQuery("select t2.sys_enterpriseid from sa_bankabcxccard t1 inner join sa_agents t2 on t1.siteid=t2.siteid and t1.sa_agentsid=t2.sa_agentsid where t1.siteid='" + siteid + "' and t1.xncardnoabc='" + xncardnoabc+"' and t1.isused=1");
+                    if (enterprise.isNotEmpty() && enterprise.size() == 1) {
+                        long sys_enterpriseid = enterprise.get(0).getLong("sys_enterpriseid");
+                        JSONObject createcashbill = CreateCashbill.createcashbill(controller, sys_enterpriseid, amount, siteid, sa_bankstatementid, "农行", jsonObject.getStringValue("OppName"));
+                        if (createcashbill != null) {
+                            sqlFactory.addParameter("sys_enterpriseid", sys_enterpriseid);
+                            sqlFactory.addParameter("status", "已入账(系统)");
+                            long sa_cashbillid = createcashbill.getLong("sa_cashbillid");
+                            sqlFactory.addParameter("sa_cashbillid", sa_cashbillid);
+                            sqlList.add(sqlFactory.getSQL());
+                            sqlList.addAll((ArrayList<String>) createcashbill.get("sql"));
+                        } else {
+                            sqlList.add(sqlFactory.getSQL());
+                        }
                     } else {
                         sqlList.add(sqlFactory.getSQL());
                     }
-                } else {
+                }else {
                     sqlList.add(sqlFactory.getSQL());
                 }
                 idList.add(sa_bankstatementid);

+ 172 - 144
src/custom/restcontroller/webmanage/sale/bankstatement/NHUtils/qyzl.java

@@ -11,8 +11,10 @@ import common.BaseClass;
 import common.YosException;
 
 import java.io.*;
+import java.net.HttpURLConnection;
 import java.net.InetSocketAddress;
 import java.net.Socket;
+import java.net.URL;
 import java.nio.charset.Charset;
 import java.util.ArrayList;
 
@@ -20,155 +22,181 @@ import java.util.ArrayList;
  * @author Administrator
  */
 public class qyzl extends BaseClass {
+    String url = "http://61.164.202.251:57393/DMYQZL/jaxrs/webclientrest";
 
-    /**
-     * 获取农行流水,
-     *
-     * @param starttime 开始时间戳,取自最新的一条农行流水的时间戳,如没有流水,则传"0"
-     * @return
-     */
-    public JSONArray query(String siteid, String starttime) throws YosException {
-        String bank_abc_used = Parameter.getString(siteid, "bank_abc_used");
-        if (bank_abc_used.equals("1")) {
-            try {
-                String filename = getDataFileName(siteid, starttime);
-                if (!filename.equals("")) {
-                    return getFileData(filename);
-                }
-            } catch (Exception e) {
-                e.printStackTrace();
-            }
-        }
-        return new JSONArray();
-    }
-
-    /**
-     * 查询农行流水,获取流水文件名称
-     *
-     * @param starttime 开始时间戳,取自最新的一条农行流水的时间戳,如没有流水,则传"0"
-     * @return
-     * @throws Exception
-     */
-    private String getDataFileName(String siteid, String starttime) throws Exception {
-        String StartDate = getDate_Str();
-        String EndDate = getDate_Str();
-        if (!"0".equals(starttime)) {
-            StartDate = starttime.substring(0, 8);
-            EndDate = StartDate;
-        }
-        Socket socket = new Socket();
-        socket.connect(new InetSocketAddress(Parameter.getString(siteid, "bank_abc_host"), Integer.parseInt(Parameter.getString(siteid, "bank_abc_port"))), 100000);
-        socket.setSoTimeout(100000);
-        DataOutputStream out = new DataOutputStream(socket.getOutputStream());
-
-        String result = "<ap>"
-                + "  <Version></Version>\r\n"
-                + "  <Sign></Sign>\r\n"
-                + "  <FileFlag>0</FileFlag>\r\n"//文件标志,0:无文件;1:有文件 默认为0
-                + "  <ProductID>ICC</ProductID>\r\n"//固定值
-                + "  <ReqSeqNo>201705310001</ReqSeqNo>\r\n"//请求方流水号,可固定
-                + "  <AuthNo></AuthNo>\r\n"
-                + "  <OpNo>" + Parameter.getString(siteid, "bank_abc_opno") + "</OpNo>\r\n"//企业操作员编号
-                + "  <CorpNo>" + Parameter.getString(siteid, "bank_abc_corpno") + "</CorpNo>\r\n"//客户号
-                + "  <ChannelType>" + Parameter.getString(siteid, "bank_abc_channeltype") + "</ChannelType>\r\n"//渠道类型
-                + "  <TransCode></TransCode>\r\n"
-                + "  <CCTransCode>CQRA10</CCTransCode>\r\n"//固定值,表示查询结算账户明细
-                + "  <Cmp>\r\n"
-                + "    <DbProv>" + Parameter.getString(siteid, "bank_abc_dbprov") + "</DbProv>\r\n"// 借方省市代码
-                + "    <DbAccNo>" + Parameter.getString(siteid, "bank_abc_dbaccno") + "</DbAccNo>\r\n"//借方账号
-                + "    <DbCur>" + Parameter.getString(siteid, "bank_abc_dbcur") + "</DbCur>\r\n"// 借方货币号
-                + "    <StartTime>" + starttime + "</StartTime>\r\n"//末笔时间戳
-                + "  </Cmp>\r\n"
-                + "  <Corp>\r\n"
-                + "    <StartDate>" + StartDate + "</StartDate>\r\n"//起始日期
-                + "    <EndDate>" + EndDate + "</EndDate>\r\n"//终止日期
-                + "  </Corp>\r\n"
-                + "  <Channel>\r\n"
-                + "    <LastJrnNo>0</LastJrnNo>\r\n"//固定值
-                + "  </Channel>\r\n"
-                + "</ap>";
-        result = "0" + result.length() + "   " + result;
-        byte[] chrCharArray; // 创建一个字符数组chrCharArray
-        chrCharArray = result.getBytes();// 将字符串变量转换为字符数组
-        out.write(chrCharArray);// 把报文结构发送到服务器端
-        InputStream in1 = socket.getInputStream();
-        Charset cs = Charset.forName("gbk");
-        InputStreamReader isr = new InputStreamReader(in1, cs);
-        // 获取文件名
-        String[] str = new String[128];
-        StringBuffer sb = new StringBuffer();
-
+    public String query(String data) throws YosException {
+        String param1 = data;
+        PrintWriter out = null;
+        BufferedReader in = null;
+        String result = "";
+        HttpURLConnection conn = null;
         try {
-            int tempchar;
-            int i = 0;
-            int flag = 0;
-            while ((tempchar = isr.read()) != -1) {
-                // 对于windows下,\r\n这两个字符在一起时,表示一个换行。
-                // 但如果这两个字符分开显示时,会换两次行。
-                // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
-                if (((char) tempchar) != '\r' && ((char) tempchar) != '\n') {
-                    if ((char) tempchar == '|') {
-                        flag++;
-                        if (flag == 33) {
-                            flag = 0;
-                            str[i] = sb.toString();
-                            sb = new StringBuffer();
-                            i++;
-                        } else {
-                            sb.append((char) tempchar);
-                        }
-                    } else {
-                        sb.append((char) tempchar);
-                    }
-                }
+            URL realUrl = new URL(url );
+            conn = (HttpURLConnection) realUrl.openConnection(); // 打开和URL之间的连接
+            conn.setRequestProperty("accept", "*/*");
+            conn.setRequestProperty("connection", "Keep-Alive");
+            conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
+            conn.setConnectTimeout(8000);
+            conn.setDoOutput(true);
+            conn.setDoInput(true);
+            out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "utf-8"));
+            out.print(param1);
+            out.flush();
+            in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));
+            String line;
+            while ((line = in.readLine()) != null) {
+                result += line;
             }
-            isr.close();
         } catch (Exception e) {
-            e.printStackTrace();
-        }
-        String ruturn = sb.toString().substring(7, sb.length());
-        String filename = ruturn.substring(ruturn.indexOf("<BatchFileName>") + 15, ruturn.indexOf("</BatchFileName>"));
-        socket.close();
-        return filename;
-    }
-
-    /**
-     * 读取农行流水文件中的流水信息,并返回json
-     *
-     * @param filename 流水文件名称
-     * @return
-     */
-    private JSONArray getFileData(String filename) {
-        String pathfile = "C:/Program Files (x86)/中国农业银行/中国农业银行银企通平台/detail/" + filename;
-        File file = new File(pathfile);
-        ArrayList<String> list = new ArrayList<>();
-        try {
-            FileReader reader = new FileReader(file);
-            BufferedReader bufferedReader = new BufferedReader(reader);
-            String str;
-            while ((str = bufferedReader.readLine()) != null) {
-                list.add(str);
+            System.err.println("[POST请求]向地址:" + url + " 发送数据:发生错误!");
+        } finally {// 使用finally块来关闭输出流、输入流
+            if (out != null) {
+                out.close();
+                out = null;
+            }
+            if (in != null) {
+                try {
+                    in.close();
+                } catch (IOException e) {
+                    e.printStackTrace();
+                }
+                in = null;
+            }
+            if (conn != null) {
+                conn.disconnect();
+                conn = null;
             }
-        } catch (Exception e) {
-            e.printStackTrace();
-        }
-        JSONArray array = new JSONArray();
-        for (String data : list) {
-            String[] value = data.split("\\|");
-            JSONObject object = new JSONObject();
-            object.put("accno", value[1]);//账号
-            object.put("TrDate", value[3]);//交易日期
-            object.put("tranflow", value[4]);//交易时间
-            object.put("accname", value[8]);//户名
-            object.put("oppaccno", value[11]);//对方账号
-            object.put("oppname", value[13]);//对方账号户名
-            object.put("oppbkname", value[14]);//对方账号开户行
-            object.put("amount", value[18]);//交易金额
-            object.put("notes", value[30]);//摘要
-            object.put("remarks", value[31]);//附言
-            object.put("response", data);//响应全文
-            array.add(object);
         }
-        return array;
+        return result;
     }
+
+//    /**
+//     * 查询农行流水,获取流水文件名称
+//     *
+//     * @param starttime 开始时间戳,取自最新的一条农行流水的时间戳,如没有流水,则传"0"
+//     * @return
+//     * @throws Exception
+//     */
+//    private String getDataFileName(String siteid, String starttime) throws Exception {
+//        String StartDate = getDate_Str();
+//        String EndDate = getDate_Str();
+//        if (!"0".equals(starttime)) {
+//            StartDate = starttime.substring(0, 8);
+//            EndDate = StartDate;
+//        }
+//        Socket socket = new Socket();
+//        socket.connect(new InetSocketAddress(Parameter.getString(siteid, "bank_abc_host"), Integer.parseInt(Parameter.getString(siteid, "bank_abc_port"))), 100000);
+//        socket.setSoTimeout(100000);
+//        DataOutputStream out = new DataOutputStream(socket.getOutputStream());
+//
+//        String result = "<ap>"
+//                + "  <Version></Version>\r\n"
+//                + "  <Sign></Sign>\r\n"
+//                + "  <FileFlag>0</FileFlag>\r\n"//文件标志,0:无文件;1:有文件 默认为0
+//                + "  <ProductID>ICC</ProductID>\r\n"//固定值
+//                + "  <ReqSeqNo>201705310001</ReqSeqNo>\r\n"//请求方流水号,可固定
+//                + "  <AuthNo></AuthNo>\r\n"
+//                + "  <OpNo>" + Parameter.getString(siteid, "bank_abc_opno") + "</OpNo>\r\n"//企业操作员编号
+//                + "  <CorpNo>" + Parameter.getString(siteid, "bank_abc_corpno") + "</CorpNo>\r\n"//客户号
+//                + "  <ChannelType>" + Parameter.getString(siteid, "bank_abc_channeltype") + "</ChannelType>\r\n"//渠道类型
+//                + "  <TransCode></TransCode>\r\n"
+//                + "  <CCTransCode>CQRA10</CCTransCode>\r\n"//固定值,表示查询结算账户明细
+//                + "  <Cmp>\r\n"
+//                + "    <DbProv>" + Parameter.getString(siteid, "bank_abc_dbprov") + "</DbProv>\r\n"// 借方省市代码
+//                + "    <DbAccNo>" + Parameter.getString(siteid, "bank_abc_dbaccno") + "</DbAccNo>\r\n"//借方账号
+//                + "    <DbCur>" + Parameter.getString(siteid, "bank_abc_dbcur") + "</DbCur>\r\n"// 借方货币号
+//                + "    <StartTime>" + starttime + "</StartTime>\r\n"//末笔时间戳
+//                + "  </Cmp>\r\n"
+//                + "  <Corp>\r\n"
+//                + "    <StartDate>" + StartDate + "</StartDate>\r\n"//起始日期
+//                + "    <EndDate>" + EndDate + "</EndDate>\r\n"//终止日期
+//                + "  </Corp>\r\n"
+//                + "  <Channel>\r\n"
+//                + "    <LastJrnNo>0</LastJrnNo>\r\n"//固定值
+//                + "  </Channel>\r\n"
+//                + "</ap>";
+//        result = "0" + result.length() + "   " + result;
+//        byte[] chrCharArray; // 创建一个字符数组chrCharArray
+//        chrCharArray = result.getBytes();// 将字符串变量转换为字符数组
+//        out.write(chrCharArray);// 把报文结构发送到服务器端
+//        InputStream in1 = socket.getInputStream();
+//        Charset cs = Charset.forName("gbk");
+//        InputStreamReader isr = new InputStreamReader(in1, cs);
+//        // 获取文件名
+//        String[] str = new String[128];
+//        StringBuffer sb = new StringBuffer();
+//
+//        try {
+//            int tempchar;
+//            int i = 0;
+//            int flag = 0;
+//            while ((tempchar = isr.read()) != -1) {
+//                // 对于windows下,\r\n这两个字符在一起时,表示一个换行。
+//                // 但如果这两个字符分开显示时,会换两次行。
+//                // 因此,屏蔽掉\r,或者屏蔽\n。否则,将会多出很多空行。
+//                if (((char) tempchar) != '\r' && ((char) tempchar) != '\n') {
+//                    if ((char) tempchar == '|') {
+//                        flag++;
+//                        if (flag == 33) {
+//                            flag = 0;
+//                            str[i] = sb.toString();
+//                            sb = new StringBuffer();
+//                            i++;
+//                        } else {
+//                            sb.append((char) tempchar);
+//                        }
+//                    } else {
+//                        sb.append((char) tempchar);
+//                    }
+//                }
+//            }
+//            isr.close();
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//        String ruturn = sb.toString().substring(7, sb.length());
+//        String filename = ruturn.substring(ruturn.indexOf("<BatchFileName>") + 15, ruturn.indexOf("</BatchFileName>"));
+//        socket.close();
+//        return filename;
+//    }
+//
+//    /**
+//     * 读取农行流水文件中的流水信息,并返回json
+//     *
+//     * @param filename 流水文件名称
+//     * @return
+//     */
+//    private JSONArray getFileData(String filename) {
+//        String pathfile = "C:/Program Files (x86)/中国农业银行/中国农业银行银企通平台/detail/" + filename;
+//        File file = new File(pathfile);
+//        ArrayList<String> list = new ArrayList<>();
+//        try {
+//            FileReader reader = new FileReader(file);
+//            BufferedReader bufferedReader = new BufferedReader(reader);
+//            String str;
+//            while ((str = bufferedReader.readLine()) != null) {
+//                list.add(str);
+//            }
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+//        JSONArray array = new JSONArray();
+//        for (String data : list) {
+//            String[] value = data.split("\\|");
+//            JSONObject object = new JSONObject();
+//            object.put("accno", value[1]);//账号
+//            object.put("TrDate", value[3]);//交易日期
+//            object.put("tranflow", value[4]);//交易时间
+//            object.put("accname", value[8]);//户名
+//            object.put("oppaccno", value[11]);//对方账号
+//            object.put("oppname", value[13]);//对方账号户名
+//            object.put("oppbkname", value[14]);//对方账号开户行
+//            object.put("amount", value[18]);//交易金额
+//            object.put("notes", value[30]);//摘要
+//            object.put("remarks", value[31]);//附言
+//            object.put("response", data);//响应全文
+//            array.add(object);
+//        }
+//        return array;
+//    }
 }

+ 20 - 0
src/custom/restcontroller/webmanage/sale/dbstockbill/dbstockbill.java

@@ -11,6 +11,7 @@ import common.annotation.API;
 import common.annotation.CACHEING;
 import common.annotation.CACHEING_CLEAN;
 import common.data.*;
+import org.apache.poi.ss.formula.functions.T;
 import restcontroller.R;
 import restcontroller.webmanage.sale.stockbill.stockbill;
 import restcontroller.webmanage.sale.stockbill.stockbillitems;
@@ -473,6 +474,7 @@ public class dbstockbill extends Controller {
         sql = sql.replace("[", "(").replace("]", ")");
         Rows invbals =  dbConnect.runSqlQuery(sql);
         RowsMap invbalsRowsMap=invbals.toRowsMap("itemid");
+        RowsMap invbalsTotalRowsMap = SQLFactory.createQuerySQL(dbConnect, "st_invbal_total").setWhere("siteid", siteid).setWhere("itemid", itemids).query().toRowsMap("itemid");
         for(Row row : dbstockbilldetail){
             String itemid = row.getString("itemid");
             //String batchno = row.getString("batchno");
@@ -539,6 +541,24 @@ public class dbstockbill extends Controller {
                     sqlList.add(sqlFactory.getSQL());
                 }
             }
+            //是否纳入总仓
+            if (SQLFactory.getRow(this, "st_stock", stockid).getBoolean("isintotalstock")) {
+                if (!invbalsTotalRowsMap.containsKey(String.valueOf(itemid))) {
+                    InsertSQL invbalInsert = SQLFactory.createInsertSQL(this, "st_invbal_total");
+                    invbalInsert.setValue("siteid", siteid);
+                    invbalInsert.setValue("itemid", itemid);
+                    invbalInsert.setValue("cansaleqty", qty.doubleValue());//可销售数量
+                    invbalInsert.setValue("candispatchqty", qty.doubleValue());//可发货数量
+                    invbalInsert.setValue("qty", qty.doubleValue());//库存数量
+                    sqlList.add(invbalInsert.getSQL());
+                } else {
+                    UpdateSQL invbalUpdate = SQLFactory.createUpdateSQL(this, "st_invbal_total");
+                    invbalUpdate.addValue("qty", invbalsTotalRowsMap.get(String.valueOf(itemid)).get(0).getBigDecimal("qty").add(qty));//库存数量
+                    invbalUpdate.setWhere("itemid", itemid);
+                    invbalUpdate.setWhere("siteid", siteid);
+                    sqlList.add(invbalUpdate.getSQL());
+                }
+            }
         }
         return sqlList;
     }

+ 61 - 15
src/custom/restcontroller/webmanage/sale/order/Order.java

@@ -2264,6 +2264,7 @@ public class Order extends Controller {
 
         sqlList.add(getOrderCheckSql(sa_orderid, reviewtype));
 
+        sqlList.addAll(updateIcinvbal_total(sa_orderid,false,false));
 
         dbConnect.runSqlUpdate(sqlList);
 
@@ -2274,22 +2275,23 @@ public class Order extends Controller {
         Executor.sendEml(this, "order_check", sa_orderid, siteid, userIdList);
 
         Rows orderBrand = dbConnect.runSqlQuery("select brandname from sa_brand where siteid='" + siteid + "' and sa_brandid=" + row.getLong("sa_brandid"));
-        if (Parameter.getBoolean("system.erp_dockswitch")) {
-            UploadDataToERP uploadDataToERP = new UploadDataToERP(this, sa_orderid, "");
-            boolean issuccess = uploadDataToERP.upload();
-            if (!issuccess) {
-                uncheck();
-                return getErrReturnObject().setErrMsg("上传ERP失败,当前单据将自动反审核,请检查!").toString();
-            } else {
-                dbConnect.runSqlUpdate(DataContrlLog.createLog(this, "sa_order", sa_orderid, "订单审核", "订单审核成功,金额:" + amount).getSQL());
-//                sendMsg(message, sa_orderid, sys_enterpriseid);
-                sendEmail(sa_orderid, row, orderBrand);
-            }
-        } else {
-            dbConnect.runSqlUpdate(DataContrlLog.createLog(this, "sa_order", sa_orderid, "订单审核", "订单审核成功,金额:" + amount).getSQL());
+//        if (Parameter.getBoolean("system.erp_dockswitch")) {
+////            UploadDataToERP uploadDataToERP = new UploadDataToERP(this, sa_orderid, "");
+////            boolean issuccess = uploadDataToERP.upload();
+////            if (!issuccess) {
+////                uncheck();
+////                return getErrReturnObject().setErrMsg("上传ERP失败,当前单据将自动反审核,请检查!").toString();
+////            } else {
+////                dbConnect.runSqlUpdate(DataContrlLog.createLog(this, "sa_order", sa_orderid, "订单审核", "订单审核成功,金额:" + amount).getSQL());
+//////                sendMsg(message, sa_orderid, sys_enterpriseid);
+////                sendEmail(sa_orderid, row, orderBrand);
+////            }
+//        } else {
+//
+//        }
+        dbConnect.runSqlUpdate(DataContrlLog.createLog(this, "sa_order", sa_orderid, "订单审核", "订单审核成功,金额:" + amount).getSQL());
 //            sendMsg(message, sa_orderid, sys_enterpriseid);
-            sendEmail(sa_orderid, row, orderBrand);
-        }
+        sendEmail(sa_orderid, row, orderBrand);
 
         return getSucReturnObject().toString();
     }
@@ -2345,6 +2347,8 @@ public class Order extends Controller {
 
         sqlList.add(DataContrlLog.createLog(this, "sa_order", sa_orderid, "订单反审核", "订单反审核成功,金额:" + amount).getSQL());
 
+        sqlList.addAll(updateIcinvbal_total(sa_orderid,true,false));
+
         dbConnect.runSqlUpdate(sqlList);
         sendMsg(message, sa_orderid, sys_enterpriseid);
         if (order_paymentnode.equals("2")) {
@@ -4028,6 +4032,8 @@ public class Order extends Controller {
 
         sqlList.add(DataContrlLog.createLog(this, "sa_order", sa_orderid, "订单手动关闭", "订单手动关闭").getSQL());
 
+        sqlList.addAll(updateIcinvbal_total(sa_orderid,true,true));
+
         dbConnect.runSqlUpdate(sqlList);
 
         //是否自动返利结算
@@ -4240,5 +4246,45 @@ public class Order extends Controller {
         }
         return sqllist;
     }
+    /**
+     * @param isinstock 是否增加库存
+     * @throws YosException
+     */
+    public  ArrayList<String> updateIcinvbal_total(long sa_orderid,boolean isinstock, boolean close) throws YosException {
+        HashMap<String, Row> icpaomap = new HashMap<String, Row>();// 用于暂存总仓库存pao的map
+        Rows saorderdetail = dbConnect.runSqlQuery("select * from sa_orderitems where sa_orderid="+sa_orderid+" and siteid='"+siteid+"'");
+        Rows ICINVBAL_TOTAL =dbConnect.runSqlQuery("select * from st_invbal_total where siteid='"+siteid+"'");
+        RowsMap ICINVBAL_TOTALRowsMap=ICINVBAL_TOTAL.toRowsMap("itemid");
+        int i = 0;
+        ArrayList<String> sqlList = new ArrayList<>();
+        for(Row row:saorderdetail){
+            long st_invbal_totalid;
+            if(ICINVBAL_TOTALRowsMap.containsKey(row.getString("itemid"))){
+                st_invbal_totalid=ICINVBAL_TOTALRowsMap.get(row.getString("itemid")).get(0).getLong("st_invbal_totalid");
+            }else{
+                st_invbal_totalid = createTableID("st_invbal_total");
+                InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_invbal_total");
+                insertSQL.setUniqueid(st_invbal_totalid);
+                insertSQL.setSiteid(siteid);
+                insertSQL.setValue("itemid",row.getString("itemid"));
+                insertSQL.setValue("candispatchqty", 0);
+                insertSQL.setValue("cansaleqty", 0);
+                insertSQL.setValue("qty", 0);
+                insertSQL.setValue("changeuserid", userid);
+                insertSQL.setValue("changeby", username);
+                insertSQL.setDateValue("changedate");
+                sqlList.add(insertSQL.getSQL());
+            }
+            BigDecimal qty = BigDecimal.ZERO;
+            if (close) {
+                qty = isinstock ? row.getBigDecimal("undeliqty") : row.getBigDecimal("undeliqty").negate();// 如果是扣减则根据数量进行扣减,反之根据未发货数量进行增加
+            } else {
+                qty = isinstock ? row.getBigDecimal("undeliqty")
+                        : row.getBigDecimal("qty").negate();// 如果是扣减则根据数量进行扣减,反之根据未发货数量进行增加
+            }
+            sqlList.add("update st_invbal_total set cansaleqty=cansaleqty+"+qty+" where st_invbal_totalid="+st_invbal_totalid);
+        }
+        return sqlList;
+    }
 
 }

+ 73 - 73
src/custom/restcontroller/webmanage/sale/stockbill/stockbill.java

@@ -826,80 +826,80 @@ public class stockbill extends Controller {
      * @param type      库存更新类型 0为默认形式。1表示生产领料更新现场仓 2表示委外领料更新现场仓
      * @throws YosException
      */
-    public void updateIcinvbal(boolean isinstock, int type,Long st_stockbillid) throws YosException {
-        ArrayList<String> sqlList =new ArrayList();
-        Rows icstockbilldetail =dbConnect.runSqlQuery("select t1.*,t2.skucontrol from st_stockbill_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid where t1.st_stockbillid ='"
-                + st_stockbillid + "' and  t1.siteid='" + siteid + "'");// 出入库表体
-        ArrayList<Long> itemids = new ArrayList<Long>();
-        itemids = icstockbilldetail.toArrayList("itemid",new ArrayList<>());
-        itemids.add((long) 0);
-        int i = 0;
-        String sql="select * from st_invbal where itemid in"+itemids;
-        sql = sql.replace("[", "(").replace("]", ")");
-        Rows invbals =  dbConnect.runSqlQuery(sql);
-        RowsMap invbalsRowsMap=invbals.toRowsMap("itemid");
-         for(Row row : icstockbilldetail){
-             String itemid = row.getString("itemid");
-             //String batchno = row.getString("batchno");
-             //String fdcspno = row.getString("fdcspno");
-             String stockid = row.getString("stockid");
-
-//             if (type == 1 && !getSysVars().getBoolean("FISBATCHFORXC")) {
-//                 fdcspno = "**********";
-//                 fbatchno = "**********";
-//                 fstockno = getPaoSet("TDEPARTMENT").getPao(0)
-//                         .getPaoSet("TSTOCKXC").getPao(0).getString("fstockno");
-//                 icinvbal = detailpao.getPaoSet("$icinvbal", "icinvbal",
-//                         "fitemno='" + fitemno + "' and fstockno='" + fstockno
-//                                 + "' and fdcspno='" + fdcspno
-//                                 + "' and fbatchno='" + fbatchno + "'");
-//             } else if (type == 2 && !getSysVars().getBoolean("FISBATCHFORXC")) {
-//                 fdcspno = "**********";
-//                 fbatchno = "**********";
-//                 fstockno = getPaoSet("TSUPPLIER").getPao(0)
-//                         .getPaoSet("TSTOCKXC").getPao(0).getString("fstockno");
-//                 icinvbal = detailpao.getPaoSet("$icinvbal", "icinvbal",
-//                         "fitemno='" + fitemno + "' and fstockno='" + fstockno
-//                                 + "' and fdcspno='" + fdcspno
-//                                 + "' and fbatchno='" + fbatchno + "'");
+//    public void updateIcinvbal(boolean isinstock, int type,Long st_stockbillid) throws YosException {
+//        ArrayList<String> sqlList =new ArrayList();
+//        Rows icstockbilldetail =dbConnect.runSqlQuery("select t1.*,t2.skucontrol from st_stockbill_items t1 left join plm_item t2 on t1.itemid=t2.itemid and t1.siteid=t2.siteid where t1.st_stockbillid ='"
+//                + st_stockbillid + "' and  t1.siteid='" + siteid + "'");// 出入库表体
+//        ArrayList<Long> itemids = new ArrayList<Long>();
+//        itemids = icstockbilldetail.toArrayList("itemid",new ArrayList<>());
+//        itemids.add((long) 0);
+//        int i = 0;
+//        String sql="select * from st_invbal where itemid in"+itemids;
+//        sql = sql.replace("[", "(").replace("]", ")");
+//        Rows invbals =  dbConnect.runSqlQuery(sql);
+//        RowsMap invbalsRowsMap=invbals.toRowsMap("itemid");
+//         for(Row row : icstockbilldetail){
+//             String itemid = row.getString("itemid");
+//             //String batchno = row.getString("batchno");
+//             //String fdcspno = row.getString("fdcspno");
+//             String stockid = row.getString("stockid");
+//
+////             if (type == 1 && !getSysVars().getBoolean("FISBATCHFORXC")) {
+////                 fdcspno = "**********";
+////                 fbatchno = "**********";
+////                 fstockno = getPaoSet("TDEPARTMENT").getPao(0)
+////                         .getPaoSet("TSTOCKXC").getPao(0).getString("fstockno");
+////                 icinvbal = detailpao.getPaoSet("$icinvbal", "icinvbal",
+////                         "fitemno='" + fitemno + "' and fstockno='" + fstockno
+////                                 + "' and fdcspno='" + fdcspno
+////                                 + "' and fbatchno='" + fbatchno + "'");
+////             } else if (type == 2 && !getSysVars().getBoolean("FISBATCHFORXC")) {
+////                 fdcspno = "**********";
+////                 fbatchno = "**********";
+////                 fstockno = getPaoSet("TSUPPLIER").getPao(0)
+////                         .getPaoSet("TSTOCKXC").getPao(0).getString("fstockno");
+////                 icinvbal = detailpao.getPaoSet("$icinvbal", "icinvbal",
+////                         "fitemno='" + fitemno + "' and fstockno='" + fstockno
+////                                 + "' and fdcspno='" + fdcspno
+////                                 + "' and fbatchno='" + fbatchno + "'");
+////             }
+//             BigDecimal qty = isinstock ? row.getBigDecimal("qty") : row.getBigDecimal("qty").negate();
+//             if(!invbalsRowsMap.containsKey(itemid)){
+//                 SQLFactory sqlFactory = new SQLFactory(this, "即时库存新增");
+//                 sqlFactory.addParameter("st_invbalid", createTableID("st_invbal"));
+//                 sqlFactory.addParameter("qty", qty);
+//                 sqlFactory.addParameter("itemid", itemid);
+//                 sqlFactory.addParameter("stockid", stockid);
+//                 sqlFactory.addParameter("siteid",siteid);
+//                 sqlFactory.addParameter("userid", userid);
+//                 sqlFactory.addParameter("username", username);
+//                 sqlList.add(sqlFactory.getSQL());
+//             }else{
+//                 if(invbalsRowsMap.get(itemid).toRowsMap("stockid").containsKey(stockid)){
+//                     SQLFactory sqlFactory = new SQLFactory(this, "即时库存更新");
+//                     sqlFactory.addParameter("st_invbalid", createTableID("st_invbal"));
+//                     sqlFactory.addParameter("qty", invbalsRowsMap.get(itemid).toRowsMap("stockid").get(stockid).get(0).getBigDecimal("qty").add(qty));
+//                     sqlFactory.addParameter("itemid", itemid);
+//                     sqlFactory.addParameter("stockid", stockid);
+//                     sqlFactory.addParameter("siteid",siteid);
+//                     sqlFactory.addParameter("userid", userid);
+//                     sqlFactory.addParameter("username", username);
+//                     sqlList.add(sqlFactory.getSQL());
+//                 }else{
+//                     SQLFactory sqlFactory = new SQLFactory(new Invbal(), "即时库存新增");
+//                     sqlFactory.addParameter("st_invbalid", createTableID("st_invbal"));
+//                     sqlFactory.addParameter("qty", qty);
+//                     sqlFactory.addParameter("itemid", itemid);
+//                     sqlFactory.addParameter("stockid", stockid);
+//                     sqlFactory.addParameter("siteid",siteid);
+//                     sqlFactory.addParameter("userid", userid);
+//                     sqlFactory.addParameter("username", username);
+//                     sqlList.add(sqlFactory.getSQL());
+//                 }
 //             }
-             BigDecimal qty = isinstock ? row.getBigDecimal("qty") : row.getBigDecimal("qty").negate();
-             if(!invbalsRowsMap.containsKey(itemid)){
-                 SQLFactory sqlFactory = new SQLFactory(this, "即时库存新增");
-                 sqlFactory.addParameter("st_invbalid", createTableID("st_invbal"));
-                 sqlFactory.addParameter("qty", qty);
-                 sqlFactory.addParameter("itemid", itemid);
-                 sqlFactory.addParameter("stockid", stockid);
-                 sqlFactory.addParameter("siteid",siteid);
-                 sqlFactory.addParameter("userid", userid);
-                 sqlFactory.addParameter("username", username);
-                 sqlList.add(sqlFactory.getSQL());
-             }else{
-                 if(invbalsRowsMap.get(itemid).toRowsMap("stockid").containsKey(stockid)){
-                     SQLFactory sqlFactory = new SQLFactory(this, "即时库存更新");
-                     sqlFactory.addParameter("st_invbalid", createTableID("st_invbal"));
-                     sqlFactory.addParameter("qty", invbalsRowsMap.get(itemid).toRowsMap("stockid").get(stockid).get(0).getBigDecimal("qty").add(qty));
-                     sqlFactory.addParameter("itemid", itemid);
-                     sqlFactory.addParameter("stockid", stockid);
-                     sqlFactory.addParameter("siteid",siteid);
-                     sqlFactory.addParameter("userid", userid);
-                     sqlFactory.addParameter("username", username);
-                     sqlList.add(sqlFactory.getSQL());
-                 }else{
-                     SQLFactory sqlFactory = new SQLFactory(new Invbal(), "即时库存新增");
-                     sqlFactory.addParameter("st_invbalid", createTableID("st_invbal"));
-                     sqlFactory.addParameter("qty", qty);
-                     sqlFactory.addParameter("itemid", itemid);
-                     sqlFactory.addParameter("stockid", stockid);
-                     sqlFactory.addParameter("siteid",siteid);
-                     sqlFactory.addParameter("userid", userid);
-                     sqlFactory.addParameter("username", username);
-                     sqlList.add(sqlFactory.getSQL());
-                 }
-             }
-         }
-         dbConnect.runSqlUpdate(sqlList);
-    }
+//         }
+//         dbConnect.runSqlUpdate(sqlList);
+//    }
 
 
     /**

+ 20 - 0
src/custom/restcontroller/webmanage/sale/wmssend/wmssend.java

@@ -94,5 +94,25 @@ public class wmssend extends Controller {
         return getSucReturnObject().toString();
     }
 
+    @API(title = "立体仓库指令查询", apiversion = R.ID2025073011124403.v1.class)
+    public String queryOrder() throws YosException {
+        String outplace =content.getString("outplace");
+        Rows rows= beans.wms.Wms.queryOrder(outplace);
+        return getSucReturnObject().setData(rows).toString();
+    }
 
+    @API(title = "谈桥指令删除", apiversion = R.ID2025073011141603.v1.class)
+    public String deleteTQOrder() throws YosException {
+        long OutPlanID=content.getLong("OutPlanID");
+        beans.wms.Wms.deleteTQOrder(OutPlanID);
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "马桥指令删除", apiversion = R.ID2025073011151003.v1.class)
+    public String deleteMQOrder() throws YosException {
+        String billno=content.getString("billno");
+        int rowno=content.getInteger("rowno");
+        beans.wms.Wms.deleteMQOrder(billno,rowno);
+        return getSucReturnObject().toString();
+    }
 }

+ 13 - 0
src/custom/restcontroller/webmanage/sale/workorder/SQL/服务人员个人信息查询.sql

@@ -0,0 +1,13 @@
+select t1.userid,
+       t1.name,
+       t1.phonenumber,
+       t1.accountno,
+       t5.agentnum,
+       t6.enterprisename,
+       t6.abbreviation
+from sys_users t1
+         inner join sys_usersite t2 on t1.userid = t2.userid and t2.siteid = $siteid$
+         inner join sys_enterprise_hr t4 on t1.userid = t4.userid
+         inner join sa_agents t5 on t5.sys_enterpriseid = t4.sys_enterpriseid
+         inner join sys_enterprise t6 on t6.sys_enterpriseid = t5.sys_enterpriseid
+where t1.userid=$userid$

+ 11 - 0
src/custom/restcontroller/webmanage/sale/workorder/workorder.java

@@ -156,6 +156,17 @@ public class workorder extends Controller {
         return getSucReturnObject().setData(rows).toString();
     }
 
+    @API(title = "服务人员个人信息查询", apiversion = R.ID2025073015312903.v1.class)
+    public String queryserviceMain() throws YosException {
+        SQLFactory sqlFactory = new SQLFactory(this, "服务人员个人信息查询");
+        sqlFactory.addParameter("siteid", siteid);
+        sqlFactory.addParameter_SQL("userid", userid);
+        Rows rows = dbConnect.runSqlQuery(sqlFactory.getSQL());
+        Row row = rows.isNotEmpty() ? rows.get(0) : new Row();
+        return getSucReturnObject().setData(row).toString();
+    }
+
+
     @API(title = "服务工单详情", apiversion = R.ID20230208140103.v1.class, accesstoken = false)
     public String queryworkorderMain() throws YosException {
         boolean isnotaccesstoken = content.getBooleanValue("isnotaccesstoken");

+ 72 - 0
src/custom/service/AutoQueryBoclnfosForNH.java

@@ -0,0 +1,72 @@
+package service;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import common.ServiceController;
+import common.YosException;
+import common.data.Rows;
+import restcontroller.webmanage.sale.bankstatement.CreateBankstatement;
+import restcontroller.webmanage.sale.bankstatement.NHUtils.qyzl;
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+
+public class AutoQueryBoclnfosForNH extends ServiceController {
+
+
+    @Override
+    public void serviceRun() throws YosException {
+        int HOUR_OF_DAY = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);
+        if (HOUR_OF_DAY <= 6) {
+            return;
+        }
+        String StartDate = "";
+        String StartTime = "";
+        String EndDate = "";
+        String siteid = "MD";
+        Rows rows = dbConnect.runSqlQuery("select tranflow from sa_bankstatement where siteid='" + siteid + "' and banktype='农行' order by tranflow desc");
+        if (rows.isEmpty()) {
+            StartDate = new SimpleDateFormat("yyyyMMdd").format(Calendar
+                    .getInstance().getTime());
+            EndDate = StartDate;
+            StartTime = "0";
+        } else {
+            String tranflow = rows.get(0).getString("tranflow");
+            StartTime = tranflow;
+            StartDate = tranflow.substring(0, 8);
+            EndDate = new SimpleDateFormat("yyyyMMdd").format(Calendar
+                    .getInstance().getTime());
+        }
+
+        JSONObject object = new JSONObject();
+        object.put("classname", "qyzl");
+        object.put("method", "getData");
+
+        JSONObject content = new JSONObject();
+        content.put("StartDate", StartDate);
+        content.put("StartTime", StartTime);
+        content.put("EndDate", EndDate);
+//			content.put("StartDate", "20211203");
+//			content.put("StartTime", "0");
+//			content.put("EndDate", "20211203");
+
+        object.put("content", content);
+
+        String data = new qyzl().query(object.toString());
+        JSONArray jsonArray = JSONArray.parseArray(data);
+
+        if (!jsonArray.isEmpty()) {
+            JSONObject jsonObject = CreateBankstatement.createBankstatement(this, jsonArray, siteid);
+            dbConnect.runSqlUpdate((ArrayList<String>) jsonObject.get("sqlList"));
+//            ArrayList<Long> idList = (ArrayList<Long>) jsonObject.get("idList");
+//            for (Long id : idList) {
+//                Rows statusRows = dbConnect.runSqlQuery("select status from sa_bankstatement where siteid='" + siteid + "' and sa_bankstatementid=" + id);
+//                if (statusRows.isNotEmpty() && statusRows.get(0).getString("status").equals("未入账")) {
+//                    CreateBankstatement.autoRemind(this, "bankstatementerr", id, siteid);
+//                }
+//            }
+        }
+    }
+
+}