瀏覽代碼

销售出库u8上传

hu 9 月之前
父節點
當前提交
1678c8295c

+ 1 - 1
src/custom/beans/wms/Wms.java

@@ -203,6 +203,6 @@ public class Wms {
      * @throws YosException
      */
     public static void deleteMQOrder(String billno, int rowno) throws YosException {
-        new DBConnect("U8-YUNl_DB").runSqlUpdate("delete from Wms_Rdrecord32 where WMSstatus=0 and billno=" + billno + " and rowno='" + rowno + "'");
+        new DBConnect("U8-YUNl_DB").runSqlUpdate("delete from Wms_Rdrecord32 where WMSstatus=0 and billno='" + billno + "' and rowno='" + rowno + "'");
     }
 }

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

@@ -6357,6 +6357,81 @@ public class R {
         public static class v1 {
         }
     }
+
+    public static class ID2025073114070603 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073114072103 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073114073103 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073114074303 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073114081603 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073114082503 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073114135303 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073114172003 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073114183903 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073114272903 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073114290603 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073114292603 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025073114312903 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025080113261703 {
+        public static class v1 {
+        }
+    }
+
+    public static class ID2025080113595003 {
+        public static class v1 {
+        }
+    }
 }
 
 

+ 2 - 0
src/custom/restcontroller/webmanage/sale/stockbill/stockbillitems.java

@@ -125,6 +125,7 @@ public class stockbillitems extends Controller {
                 insertSQL.setValue("amount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price")));
                 insertSQL.setValue("untaxedprice", iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP));
                 insertSQL.setValue("untaxedamount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP)));
+                insertSQL.setValue("skucontrol", iteminfo.getBoolean("skucontrol"));
                 i++;
                 sqlList.add(insertSQL.getSQL());
             } else {
@@ -153,6 +154,7 @@ public class stockbillitems extends Controller {
                         updateSQL.setValue("untaxedamount", iteminfo.getBigDecimal("qty").multiply(iteminfo.getBigDecimal("price").divide(new BigDecimal(1.13),2, BigDecimal.ROUND_HALF_UP)));
                         updateSQL.setValue("batchno", iteminfo.getString("batchno"));
                         updateSQL.setValue("stockid", iteminfo.getString("stockid"));
+                        updateSQL.setValue("skucontrol", iteminfo.getBoolean("skucontrol"));
                         sqlList.add(updateSQL.getSQL());
                     } else {
                         return getErrReturnObject().setErrMsg("非新建状态下无法编辑").toString();

+ 9 - 0
src/custom/restcontroller/webmanage/sale/u8/SQL/销售出库U8上传单据查询.sql

@@ -0,0 +1,9 @@
+select t1.address,t1.sys_enterpriseid,t1.billno,t1.name,t1.billdate,t1.remarks,t1.period,t1.phonenumber,
+       case when t1.typemx='正品入库'then'红'else rb end rb,t1.sourceid,t1.sourceobject,t1.st_stockbillid,t2.u8id,t1.status,t1.type,t1.typemx,t1.outplace  from st_stockbill t1
+                                                                                                                                                                 inner join (
+    select distinct st_stockbillid,inserted.u8id,inserted.entity from u8billcodes
+        inner join u8 inserted on u8billcodes.u8id=inserted.u8id where inserted.u8id=$u8id$
+) t2 on t1.st_stockbillid=t2.st_stockbillid
+                                                                                                                                                                 inner join sa_agents t3 on t1.sys_enterpriseid=t3.sys_enterpriseid and t2.entity=t3.entity
+		
+		

+ 9 - 0
src/custom/restcontroller/webmanage/sale/u8/SQL/销售出库U8上传单据查询_选择.sql

@@ -0,0 +1,9 @@
+select t1.address,t1.sys_enterpriseid,t1.billno,t1.name,t1.billdate,t1.remarks,t1.period,t1.phonenumber,
+       case when t1.typemx='正品入库'then'红'else rb end,t1.sourceid,t1.sourceobject,t1.st_stockbillid,t2.u8id,t1.status,t1.type,t1.typemx,t1.outplace  from st_stockbill t1
+                                                                                                                                                                 inner join (
+    select distinct st_stockbillid,inserted.u8id,inserted.entity from u8billcodes
+        inner join u8 inserted on u8billcodes.u8id=inserted.u8id where inserted.u8id=$u8id$
+) t2 on t1.st_stockbillid=t2.st_stockbillid
+                                                                                                                                                                 inner join sa_agents t3 on t1.sys_enterpriseid=t3.sys_enterpriseid and t2.entity=t3.entity
+		
+		

+ 87 - 0
src/custom/restcontroller/webmanage/sale/u8/SQL/销售出库U8上传序列号查询.sql

@@ -0,0 +1,87 @@
+SELECT
+    t1.billno,
+    t1.status,
+    t1.itemid,
+    t2.sku,
+    t1.st_stockbillid,
+    t2.sourceid,
+    t2.sourceobject,
+    t1.stockid,
+    t2.st_stockbill_items_skuid,
+    t1.u8id,
+    t1.rb,
+    t1.qty,
+    t1.type,
+    t1.typemx
+FROM
+    (
+        SELECT
+            t1.billno,
+            t1.STATUS,
+            t2.itemid,
+            t2.st_stockbillid,
+            t2.stockid,
+            t3.u8id,
+            CASE
+
+                WHEN t1.typemx = '正品入库' THEN
+                    '红' ELSE t1.rb
+                END rb,
+            t2.qty,
+            t1.type,
+            t1.typemx
+        FROM
+            st_stockbill t1
+                INNER JOIN st_stockbill_items t2 ON t1.st_stockbillid = t2.st_stockbillid
+                LEFT JOIN u8 t3 ON t3.period = t1.period
+                AND t1.billdate <= t3.billdate
+                AND t3.u8id = $u8id$
+                INNER JOIN st_stock t4 ON t2.stockid = t4.stockid
+                INNER JOIN sa_agents t5 ON t1.sys_enterpriseid = t5.sys_enterpriseid
+                AND t3.entity = t5.entity
+                INNER JOIN plm_item t6 ON t2.itemid = t6.itemid
+                LEFT JOIN sa_sendrepair t8 ON t1.sourceid = t8.sa_sendrepairid
+                AND t1.sourceobject = 'sa_sendrepair'
+        WHERE
+            t1.STATUS = '审核'
+          AND (
+            ( t1.type = '销售出库' AND t4.type != '电商仓' AND t5.type != '电商' )
+                OR (
+                t1.type = '其他入库'
+                    AND t1.typemx = '正品入库'
+                    AND t4.stockno IN ( '103', '109' )
+                    AND t8.STATUS = '审核'
+                    AND t2.amount > 0
+                )
+            )) t1
+        LEFT JOIN (
+        SELECT
+            t1.itemid,
+            t1.sku,
+            t1.st_stockbillid,
+            t1.stockid,
+            t1.st_stockbill_items_skuid,
+            t2.sourceid,
+            t2.sourceobject
+        FROM
+            st_stockbill_items_sku t1
+                INNER JOIN st_stockbill t2 ON t1.st_stockbillid = t2.st_stockbillid
+                INNER JOIN u8 t3 ON t3.period = t2.period
+                AND t2.billdate <= t3.billdate
+                AND t3.u8id = $u8id$
+                INNER JOIN st_stock t5 ON t1.stockid = t5.stockid
+                INNER JOIN sa_agents t6 ON t2.sys_enterpriseid = t6.sys_enterpriseid
+                AND t3.entity = t6.entity
+                INNER JOIN plm_item t7 ON t1.itemid = t7.itemid
+        WHERE
+            t2.STATUS = '审核'
+          AND (
+            ( t5.stockno = '101' AND t2.type = '销售出库' )
+                OR (
+                t5.stockno IN ( '103', '109' )
+                    AND t2.type = '其他入库'
+                    AND t2.typemx = '正品入库'
+                    AND EXISTS ( SELECT * FROM st_stockbill_items WHERE st_stockbillid = t2.st_stockbillid AND amount > 0 ))
+            )) t2 ON t1.st_stockbillid = t2.st_stockbillid
+        AND t1.stockid = t2.stockid
+        AND t1.itemid = t2.itemid

+ 87 - 0
src/custom/restcontroller/webmanage/sale/u8/SQL/销售出库U8上传序列号查询_选择.sql

@@ -0,0 +1,87 @@
+SELECT
+    t1.billno,
+    t1.status,
+    t1.itemid,
+    t2.sku,
+    t1.st_stockbillid,
+    t2.sourceid,
+    t2.sourceobject,
+    t1.stockid,
+    t2.st_stockbill_items_skuid,
+    t1.u8id,
+    t1.rb,
+    t1.qty,
+    t1.type,
+    t1.typemx
+FROM
+    (
+        SELECT
+            t1.billno,
+            t1.STATUS,
+            t2.itemid,
+            t2.st_stockbillid,
+            t2.stockid,
+            t3.u8id,
+            CASE
+
+                WHEN t1.typemx = '正品入库' THEN
+                    '红' ELSE t1.rb
+                END rb,
+            t2.qty,
+            t1.type,
+            t1.typemx
+        FROM
+            st_stockbill t1
+                INNER JOIN st_stockbill_items t2 ON t1.st_stockbillid = t2.st_stockbillid
+                LEFT JOIN u8 t3 ON t3.period = t1.period
+                AND t1.billdate <= t3.billdate
+                AND t3.u8id = $u8id$
+                INNER JOIN st_stock t4 ON t2.stockid = t4.stockid
+                INNER JOIN sa_agents t5 ON t1.sys_enterpriseid = t5.sys_enterpriseid
+                AND t3.entity = t5.entity
+                INNER JOIN plm_item t6 ON t2.itemid = t6.itemid
+                LEFT JOIN sa_sendrepair t8 ON t1.sourceid = t8.sa_sendrepairid
+                AND t1.sourceobject = 'sa_sendrepair'
+        WHERE
+            t1.STATUS = '审核'
+          AND (
+            ( t1.type = '销售出库' AND t4.type != '电商仓' AND t5.type != '电商' )
+                OR (
+                t1.type = '其他入库'
+                    AND t1.typemx = '正品入库'
+                    AND t4.stockno IN ( '103', '109' )
+                    AND t8.STATUS = '审核'
+                    AND t2.amount > 0
+                )
+            )) t1
+        LEFT JOIN (
+        SELECT
+            t1.itemid,
+            t1.sku,
+            t1.st_stockbillid,
+            t1.stockid,
+            t1.st_stockbill_items_skuid,
+            t2.sourceid,
+            t2.sourceobject
+        FROM
+            st_stockbill_items_sku t1
+                INNER JOIN st_stockbill t2 ON t1.st_stockbillid = t2.st_stockbillid
+                INNER JOIN u8 t3 ON t3.period = t2.period
+                AND t2.billdate <= t3.billdate
+                AND t3.u8id = $u8id$
+                INNER JOIN st_stock t5 ON t1.stockid = t5.stockid
+                INNER JOIN sa_agents t6 ON t2.sys_enterpriseid = t6.sys_enterpriseid
+                AND t3.entity = t6.entity
+                INNER JOIN plm_item t7 ON t1.itemid = t7.itemid
+        WHERE
+            t2.STATUS = '审核'
+          AND (
+            ( t5.stockno = '101' AND t2.type = '销售出库' )
+                OR (
+                t5.stockno IN ( '103', '109' )
+                    AND t2.type = '其他入库'
+                    AND t2.typemx = '正品入库'
+                    AND EXISTS ( SELECT * FROM st_stockbill_items WHERE st_stockbillid = t2.st_stockbillid AND amount > 0 ))
+            )) t2 ON t1.st_stockbillid = t2.st_stockbillid
+        AND t1.stockid = t2.stockid
+        AND t1.itemid = t2.itemid

+ 73 - 0
src/custom/restcontroller/webmanage/sale/u8/SQL/销售出库u8商品价格查询.sql

@@ -0,0 +1,73 @@
+SELECT
+    t.u8id,
+    t.itemid,
+    t.qty,
+    13 taxrate,
+    ROUND( ifnull( t2.saleprice, 0 ), 0 ) saleprice,
+    t.stockid
+FROM
+    (
+        SELECT
+            itemid,
+            u8billcodes.u8id,
+            SUM( CASE WHEN u8billcodes.rb = '0' THEN - qty ELSE qty END ) qty,
+            CASE
+
+                WHEN u8bills.outplace = '谈桥' THEN
+                    $tqstockid$
+                WHEN u8bills.outplace = '马桥' THEN
+                    $mqstockid$ ELSE u8billcodes.stockid
+                END AS stockid
+        FROM
+            u8billcodes
+                INNER JOIN u8 inserted ON u8billcodes.u8id = inserted.u8id
+                AND inserted.u8id = $u8id$
+                INNER JOIN u8bills ON u8billcodes.billno = u8bills.billno
+                AND inserted.u8id = u8bills.u8id
+        GROUP BY
+            itemid,
+            u8billcodes.u8id,
+            CASE
+
+                WHEN u8bills.outplace = '谈桥' THEN
+                    $tqstockid$
+                WHEN u8bills.outplace = '马桥' THEN
+                    $mqstockid$ ELSE u8billcodes.stockid
+                END
+    ) t
+        LEFT JOIN (
+        SELECT
+            t3.u8id,
+            t2.itemid,(
+                sum( t2.untaxedamount )/ SUM( t2.qty )) AS saleprice,
+            CASE
+
+                WHEN t1.outplace = '谈桥' THEN
+                    $tqstockid$
+                WHEN t1.outplace = '马桥' THEN
+                    $mqstockid$ ELSE t2.stockid
+                END AS stockid
+        FROM
+            st_stockbill t1
+                INNER JOIN st_stockbill_items t2 ON t1.st_stockbillid = t2.st_stockbillid
+                INNER JOIN u8 t3 ON t1.period = t3.period
+                AND DATE_FORMAT( t1.billdate, '%Y-%m-%d' )<= DATE_FORMAT( t3.billdate, '%Y-%m-%d' )
+                AND t3.u8id = $u8id$
+                INNER JOIN sa_agents t4 ON t1.sys_enterpriseid = t4.sys_enterpriseid
+                AND t3.entity = t4.entity
+        WHERE
+            t1.STATUS = '审核'
+          AND t1.type = '销售出库'
+        GROUP BY
+            t3.u8id,
+            t2.itemid,
+            CASE
+
+                WHEN t1.outplace = '谈桥' THEN
+                    $tqstockid$
+                WHEN t1.outplace = '马桥' THEN
+                    $mqstockid$ ELSE t2.stockid
+                END
+    ) t2 ON t.u8id = t2.u8id
+        AND t.itemid = t2.itemid
+        AND t.stockid = t2.stockid

+ 73 - 0
src/custom/restcontroller/webmanage/sale/u8/SQL/销售出库u8商品价格查询_选择.sql

@@ -0,0 +1,73 @@
+SELECT
+    t.u8id,
+    t.itemid,
+    t.qty,
+    13 taxrate,
+    ROUND( ifnull( t2.saleprice, 0 ), 0 ) saleprice,
+    t.stockid
+FROM
+    (
+        SELECT
+            itemid,
+            u8billcodes.u8id,
+            SUM( CASE WHEN u8billcodes.rb = '0' THEN - qty ELSE qty END ) qty,
+            CASE
+
+                WHEN u8bills.outplace = '谈桥' THEN
+                    '103'
+                WHEN u8bills.outplace = '马桥' THEN
+                    '109' ELSE u8billcodes.stockid
+                END AS stockid
+        FROM
+            u8billcodes
+                INNER JOIN u8 inserted ON u8billcodes.u8id = inserted.u8id
+                AND inserted.u8id = 1
+                INNER JOIN u8bills ON u8billcodes.billno = u8bills.billno
+                AND inserted.u8id = u8bills.u8id
+        GROUP BY
+            itemid,
+            u8billcodes.u8id,
+            CASE
+
+                WHEN u8bills.outplace = '谈桥' THEN
+                    '103'
+                WHEN u8bills.outplace = '马桥' THEN
+                    '109' ELSE u8billcodes.stockid
+                END
+    ) t
+        LEFT JOIN (
+        SELECT
+            t3.u8id,
+            t2.itemid,(
+                sum( t2.untaxedamount )/ SUM( t2.qty )) AS saleprice,
+            CASE
+
+                WHEN t1.outplace = '谈桥' THEN
+                    '103'
+                WHEN t1.outplace = '马桥' THEN
+                    '109' ELSE t2.stockid
+                END AS stockid
+        FROM
+            st_stockbill t1
+                INNER JOIN st_stockbill_items t2 ON t1.st_stockbillid = t2.st_stockbillid
+                INNER JOIN u8 t3 ON t1.period = t3.period
+                AND DATE_FORMAT( t1.billdate, '%Y-%m-%d' )<= DATE_FORMAT( t3.billdate, '%Y-%m-%d' )
+                AND t3.u8id = 1
+                INNER JOIN sa_agents t4 ON t1.sys_enterpriseid = t4.sys_enterpriseid
+                AND t3.entity = t4.entity
+        WHERE
+            t1.STATUS = '审核'
+          AND t1.type = '销售出库'
+        GROUP BY
+            t3.u8id,
+            t2.itemid,
+            CASE
+
+                WHEN t1.outplace = '谈桥' THEN
+                    '103'
+                WHEN t1.outplace = '马桥' THEN
+                    '109' ELSE t2.stockid
+                END
+    ) t2 ON t.u8id = t2.u8id
+        AND t.itemid = t2.itemid
+        AND t.stockid = t2.stockid

+ 69 - 0
src/custom/restcontroller/webmanage/sale/u8/U8Rest.java

@@ -0,0 +1,69 @@
+/**
+ * 
+ */
+package restcontroller.webmanage.sale.u8;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.URL;
+
+/**
+ * @author SJW
+ * 
+ */
+public class U8Rest {
+	String url = "http://192.168.130.71:8080/MDDataService/jaxrs/webclientrest";
+
+	public String post(String content) {
+		String param = content;
+		PrintWriter out = null;
+		BufferedReader in = null;
+		String result = "";
+		HttpURLConnection conn = null;
+		try {
+			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(5000);
+			// 发送POST请求必须设置如下两行
+			conn.setDoOutput(true);
+			conn.setDoInput(true);
+			// 获取URLConnection对象对应的输出流
+			out = new PrintWriter(new OutputStreamWriter(
+					conn.getOutputStream(), "utf-8"));
+			// 发送请求参数
+			out.print(param);
+			// flush输出流的缓冲
+			out.flush();
+			// 定义BufferedReader输入流来读取URL的响应
+			in = new BufferedReader(new InputStreamReader(
+					conn.getInputStream(), "UTF-8"));
+			String line;
+			while ((line = in.readLine()) != null) {
+				result += line;
+			}
+		} catch (Exception e) {
+		} finally {// 使用finally块来关闭输出流、输入流
+			try {
+				if (out != null) {
+					out.close();
+					out = null;
+				}
+				if (in != null) {
+					in.close();
+					in = null;
+				}
+				if (conn != null) {
+					conn.disconnect();
+				}
+			} catch (IOException ex) {
+				System.err.println("关闭流异常");
+			}
+		}
+		return result;
+	}
+}

+ 873 - 0
src/custom/restcontroller/webmanage/sale/u8/u8.java

@@ -0,0 +1,873 @@
+package restcontroller.webmanage.sale.u8;
+
+import beans.data.BatchDeleteErr;
+import beans.datacontrllog.DataContrlLog;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import common.Controller;
+import common.YosException;
+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 java.math.BigDecimal;
+import java.util.ArrayList;
+import java.util.HashMap;
+
+@API(title = "销售出库U8上传")
+public class u8 extends Controller {
+    public u8(JSONObject content) throws YosException {
+        super(content);
+    }
+
+
+    @API(title = "新增更新销售出库U8上传", apiversion = R.ID2025073114070603.v1.class)
+    @CACHEING_CLEAN(apiClass = {u8.class})
+    public String insertormodify_u8() throws YosException {
+        ArrayList<String> sqlList = new ArrayList<>();
+        // 表名
+
+        String tableName = "u8";
+        Long u8id = content.getLong("u8id");
+        String entity = content.getStringValue("entity");
+        String remarks = content.getStringValue("remarks");
+        String billdate = content.getStringValue("billdate");
+        if (u8id <= 0) {
+
+            u8id = createTableID(tableName);
+            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, tableName);
+            insertSQL.setUniqueid(u8id);
+            insertSQL.setSiteid(siteid);
+            insertSQL.setValue("entity", entity);
+            insertSQL.setValue("remarks", remarks);
+            insertSQL.setValue("billdate", billdate);
+            insertSQL.setValue("period", billdate.substring(0, 7));
+            insertSQL.setValue("billno", createBillCode("u8"));
+
+            insertSQL.setValue("createby", username);
+            insertSQL.setDateValue("createdate");
+            insertSQL.setValue("changeby", username);
+            insertSQL.setDateValue("changedate");
+            insertSQL.setValue("status", "新建");
+            sqlList.add(insertSQL.getSQL());
+
+            sqlList.add(DataContrlLog.createLog(this, "u8", u8id, "新增", "销售出库U8上传新增成功").getSQL());
+        } else {
+            Rows rows = dbConnect.runSqlQuery(
+                    "SELECT status from u8 WHERE u8id = "
+                            + u8id);
+            if (rows.isNotEmpty()) {
+                if (rows.get(0).getString("status").equals("新建")) {
+
+                    UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, tableName);
+                    updateSQL.setUniqueid(u8id);
+                    updateSQL.setSiteid(siteid);
+                    updateSQL.setValue("entity", entity);
+                    updateSQL.setValue("remarks", remarks);
+                    updateSQL.setValue("billdate", billdate);
+                    updateSQL.setValue("period", billdate.substring(0, 7));
+
+                    updateSQL.setValue("changeby", username);
+                    updateSQL.setDateValue("changedate");
+                    sqlList.add(updateSQL.getSQL());
+
+                    sqlList.add(DataContrlLog.createLog(this, "u8", u8id, "更新", "销售出库U8上传更新成功").getSQL());
+                } else {
+                    return getErrReturnObject().setErrMsg("非新建状态下无法编辑").toString();
+                }
+
+            } else {
+                return getErrReturnObject().setErrMsg("该销售出库U8上传不存在").toString();
+            }
+
+        }
+        dbConnect.runSqlUpdate(sqlList);
+        content.put("u8id", u8id);
+
+        return queryu8Main();
+    }
+
+
+
+    @API(title = "销售出库U8上传详情", apiversion = R.ID2025073114072103.v1.class)
+    @CACHEING
+    public String queryu8Main() throws YosException {
+        long u8id = content.getLong("u8id");
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "u8","*");
+        querySQL.setTableAlias("t1");
+
+        querySQL.setWhere("t1.siteid", siteid);
+        querySQL.setWhere("t1.u8id",u8id);
+        Rows rows = querySQL.query();
+
+        Row row = rows.isNotEmpty() ? rows.get(0) : new Row();
+        return getSucReturnObject().setData(row).toString();
+    }
+
+
+    @API(title = "销售出库U8上传列表", apiversion = R.ID2025073114074303.v1.class)
+    @CACHEING
+    public String queryu8List() 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 t1.entity like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+            if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
+                where.append(" and t1.status ='").append(whereObject.getString("status")).append("' ");
+            }
+            if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
+                where.append(" and DATE_FORMAT(t1.billdate, '%Y-%m-%d') >='").append(whereObject.getString("begindate")).append("' ");
+            }
+            if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
+                where.append(" and DATE_FORMAT(t1.billdate, '%Y-%m-%d') <='").append(whereObject.getString("enddate")).append("' ");
+            }
+        }
+//        SQLFactory sqlFactory = new SQLFactory(this, "出入库单列表查询", pageSize, pageNumber, pageSorting);
+//        sqlFactory.addParameter("siteid", siteid);
+//        sqlFactory.addParameter_SQL("where", where);
+//        Rows rows = dbConnect.runSqlQuery(sqlFactory);
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "u8","*");
+        querySQL.setTableAlias("t1");
+        querySQL.setWhere("t1.siteid", siteid);
+        querySQL.setWhere(where);
+        querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy(pageSorting);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+
+
+    @API(title = "删除", apiversion = R.ID2025073114073103.v1.class)
+    @CACHEING_CLEAN(apiClass = {u8.class})
+    public String delete() throws YosException {
+        JSONArray u8ids = content.getJSONArray("u8ids");
+        BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, u8ids.size());
+        for (Object o : u8ids) {
+            long u8id = Long.parseLong(o.toString());
+            Rows RowsStatus = dbConnect.runSqlQuery("select u8id,status from u8 where siteid='"
+                    + siteid + "' and u8id='" + u8id + "'");
+
+            if (RowsStatus.isNotEmpty()) {
+                if (!RowsStatus.get(0).getString("status").equals("新建")) {
+                    batchDeleteErr.addErr(u8id, "非新建状态的销售出库U8上传无法删除");
+                    continue;
+                }
+            }
+            ArrayList<String> sqllist = new ArrayList<>();
+            sqllist.add("delete from u8 where siteid='" + siteid + "' and u8id=" + u8id);
+            sqllist.add("delete from u8billcodes where siteid='" + siteid + "' and u8id=" + u8id);
+            sqllist.add("delete from u8bills where siteid='" + siteid + "' and u8id=" + u8id);
+            sqllist.add("delete from u8itemprice where siteid='" + siteid + "' and u8id=" + u8id);
+            dbConnect.runSqlUpdate(sqllist);
+        }
+        return batchDeleteErr.getReturnObject().toString();
+    }
+
+
+    @API(title = "审核", apiversion = R.ID2025073114081603.v1.class)
+    @CACHEING_CLEAN(apiClass = {u8.class})
+    public String check() throws YosException {
+        long u8id = content.getLong("u8id");
+        ArrayList<String> sqllist=new ArrayList<>();
+        Rows department =dbConnect.runSqlQuery("select departmentid,depno from  sys_department where  siteid='"+siteid+"'");
+        RowsMap departmentRowsMap = department.toRowsMap("depno");
+
+        Rows stock =dbConnect.runSqlQuery("select stockid,stockno from  st_stock where  siteid='"+siteid+"'");
+        RowsMap stockRowsMap = stock.toRowsMap("stockno");
+        Rows u8=dbConnect.runSqlQuery("select * from u8 where u8id="+u8id);
+        Rows u8billcodes=dbConnect.runSqlQuery("select * from u8billcodes where u8id="+u8id);
+        RowsMap u8billcodesRowsMap= u8billcodes.toRowsMap("itemid");
+        Rows u8bills=dbConnect.runSqlQuery("select t1.*,ifnull(t2.price,0) price,ifnull(t2.taxprice,0) taxprice,t2.taxrate,t3.itemname,t3.itemno,t3.model from (select siteid,itemid,u8id,stockid,rb,sum(qty) qty from u8billcodes group by siteid,itemid,u8id,stockid,rb) t1 left join u8itemprice t2 on t1.u8id=t2.u8id and t1.itemid=t2.itemid and t1.stockid=t2.stockid left join plm_item t3 on t1.itemid=t3.itemid and t1.siteid=t3.siteid  where t1.u8id="+u8id);
+        RowsMap u8billsRowsMap=u8bills.toRowsMap("rb");
+        if(u8.isEmpty()){
+            return getErrReturnObject().setErrMsg("该销售出库U8上传不存在").toString();
+        }
+        //销售出库蓝
+        long st_stockbillid = createTableID("st_stockbill");
+        InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
+        insertSQL.setUniqueid(st_stockbillid);
+        insertSQL.setSiteid(siteid);
+        insertSQL.setValue("departmentid", departmentRowsMap.containsKey("103")?departmentRowsMap.get("103").get(0).getLong("departmentid"):0);
+        insertSQL.setValue("stockid", stockRowsMap.containsKey("103")?stockRowsMap.get("103").get(0).getLong("stockid"):0);
+        insertSQL.setValue("type", "其他出库");
+        insertSQL.setValue("typemx", "销售出库");
+        insertSQL.setValue("rb", 1);
+        insertSQL.setValue("remarks", "U8单据上传生成");
+        insertSQL.setValue("billdate", u8.get(0).getString("billdate"));
+        insertSQL.setValue("period",u8.get(0).getString("period"));
+        insertSQL.setValue("billno", createBillCode("stockbill"));
+        insertSQL.setValue("isconfirm", 0);
+        insertSQL.setValue("sourceobject", "u8");
+        insertSQL.setValue("sourceid", u8id);
+        insertSQL.setValue("sys_enterpriseid", 0);
+        insertSQL.setValue("createby", username);
+        insertSQL.setDateValue("createdate");
+        insertSQL.setValue("changeby", username);
+        insertSQL.setDateValue("changedate");
+        insertSQL.setValue("status", "审核");
+        insertSQL.setValue("checkby", username);
+        insertSQL.setDateValue("checkdate");
+        sqllist.add(insertSQL.getSQL());
+        if(u8billsRowsMap.containsKey("1")){
+            int i=0;
+            for(Row row : u8billsRowsMap.get("1")){
+                InsertSQL insertSQLdetail = SQLFactory.createInsertSQL(this, "st_stockbill_items");
+                long st_stockbill_itemsid =createTableID("st_stockbill_items");
+                insertSQLdetail.setUniqueid(st_stockbill_itemsid);
+                insertSQLdetail.setSiteid(siteid);
+                insertSQLdetail.setValue("rowno", i + 1);
+                insertSQLdetail.setValue("st_stockbillid", st_stockbillid);
+                insertSQLdetail.setValue("itemid", row.getLong("itemid"));
+                insertSQLdetail.setValue("qty", row.getBigDecimal("qty"));
+                insertSQLdetail.setValue("discountrate", 1);
+                insertSQLdetail.setValue("sa_dispatch_itemsid", 0);
+                insertSQLdetail.setValue("itemno", row.getString("itemno"));
+                insertSQLdetail.setValue("itemname", row.getString("itemname"));
+                insertSQLdetail.setValue("model", row.getString("model"));
+                insertSQLdetail.setValue("price", row.getBigDecimal("price"));
+                insertSQLdetail.setValue("amount", row.getBigDecimal("qty").multiply(row.getBigDecimal("price")));
+                insertSQLdetail.setValue("untaxedprice", row.getBigDecimal("taxprice"));
+                insertSQLdetail.setValue("untaxedamount", row.getBigDecimal("qty").multiply(row.getBigDecimal("taxprice")));
+                i++;
+                sqllist.add(insertSQLdetail.getSQL());
+                if(u8billcodesRowsMap.containsKey(row.getString("itemid"))){
+                    for(Row row1 :u8billcodesRowsMap.get(row.getString("itemid"))){
+                        if(row1.getBoolean("rb")){
+                            InsertSQL insertSQLdetailsku = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
+                            long st_stockbill_items_skuid =  createTableID("st_stockbill_items_sku");
+                            insertSQLdetailsku.setUniqueid(st_stockbill_items_skuid);
+                            insertSQLdetailsku.setSiteid(siteid);
+                            insertSQLdetailsku.setValue("stockid", row1.getLong("stockid"));
+                            insertSQLdetailsku.setValue("itemid",row1.getLong("itemid"));
+                            insertSQLdetailsku.setValue("sku",StringUtils.isBlank(row1.getString("sku"))?"":row1.getString("sku"));
+                            insertSQLdetailsku.setValue("st_stockbillid",st_stockbillid);
+                            insertSQLdetailsku.setValue("st_stockbill_itemsid",st_stockbill_itemsid);
+                            sqllist.add(insertSQLdetailsku.getSQL());
+                        }
+                    }
+                }
+            }
+        }
+
+        //销售出库红
+         st_stockbillid = createTableID("st_stockbill");
+        insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
+        insertSQL.setUniqueid(st_stockbillid);
+        insertSQL.setSiteid(siteid);
+        insertSQL.setValue("departmentid", departmentRowsMap.containsKey("103")?departmentRowsMap.get("103").get(0).getLong("departmentid"):0);
+        insertSQL.setValue("stockid", stockRowsMap.containsKey("103")?stockRowsMap.get("103").get(0).getLong("stockid"):0);
+        insertSQL.setValue("type", "其他出库");
+        insertSQL.setValue("typemx", "销售出库");
+        insertSQL.setValue("rb", 0);
+        insertSQL.setValue("remarks", "U8单据上传生成");
+        insertSQL.setValue("billdate", u8.get(0).getString("billdate"));
+        insertSQL.setValue("period",u8.get(0).getString("period"));
+        insertSQL.setValue("billno", createBillCode("stockbill"));
+        insertSQL.setValue("isconfirm", 0);
+        insertSQL.setValue("sourceobject", "u8");
+        insertSQL.setValue("sourceid", u8id);
+        insertSQL.setValue("sys_enterpriseid", 0);
+        insertSQL.setValue("createby", username);
+        insertSQL.setDateValue("createdate");
+        insertSQL.setValue("changeby", username);
+        insertSQL.setDateValue("changedate");
+        insertSQL.setValue("status", "审核");
+        insertSQL.setValue("checkby", username);
+        insertSQL.setDateValue("checkdate");
+        sqllist.add(insertSQL.getSQL());
+        if(u8billsRowsMap.containsKey("0")){
+            int i=0;
+            for(Row row : u8billsRowsMap.get("0")){
+                InsertSQL insertSQLdetail = SQLFactory.createInsertSQL(this, "st_stockbill_items");
+                long st_stockbill_itemsid =createTableID("st_stockbill_items");
+                insertSQLdetail.setUniqueid(st_stockbill_itemsid);
+                insertSQLdetail.setSiteid(siteid);
+                insertSQLdetail.setValue("rowno", i + 1);
+                insertSQLdetail.setValue("st_stockbillid", st_stockbillid);
+                insertSQLdetail.setValue("itemid", row.getLong("itemid"));
+                insertSQLdetail.setValue("qty", row.getBigDecimal("qty"));
+                insertSQLdetail.setValue("discountrate", 1);
+                insertSQLdetail.setValue("sa_dispatch_itemsid", 0);
+                insertSQLdetail.setValue("itemno", row.getString("itemno"));
+                insertSQLdetail.setValue("itemname", row.getString("itemname"));
+                insertSQLdetail.setValue("model", row.getString("model"));
+                insertSQLdetail.setValue("price", row.getBigDecimal("price"));
+                insertSQLdetail.setValue("amount", row.getBigDecimal("qty").multiply(row.getBigDecimal("price")));
+                insertSQLdetail.setValue("untaxedprice", row.getBigDecimal("taxprice"));
+                insertSQLdetail.setValue("untaxedamount", row.getBigDecimal("qty").multiply(row.getBigDecimal("taxprice")));
+                i++;
+                sqllist.add(insertSQLdetail.getSQL());
+                if(u8billcodesRowsMap.containsKey(row.getString("itemid"))){
+                    for(Row row1 :u8billcodesRowsMap.get(row.getString("itemid"))){
+                        if(!row1.getBoolean("rb")){
+                            InsertSQL insertSQLdetailsku = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
+                            long st_stockbill_items_skuid =  createTableID("st_stockbill_items_sku");
+                            insertSQLdetailsku.setUniqueid(st_stockbill_items_skuid);
+                            insertSQLdetailsku.setSiteid(siteid);
+                            insertSQLdetailsku.setValue("stockid", row1.getLong("stockid"));
+                            insertSQLdetailsku.setValue("itemid",row1.getLong("itemid"));
+                            insertSQLdetailsku.setValue("sku",StringUtils.isBlank(row1.getString("sku"))?"":row1.getString("sku"));
+                            insertSQLdetailsku.setValue("st_stockbillid",st_stockbillid);
+                            insertSQLdetailsku.setValue("st_stockbill_itemsid",st_stockbill_itemsid);
+                            sqllist.add(insertSQLdetailsku.getSQL());
+                        }
+                    }
+                }
+            }
+        }
+        //外购入库蓝
+         st_stockbillid = createTableID("st_stockbill");
+        insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
+        insertSQL.setUniqueid(st_stockbillid);
+        insertSQL.setSiteid(siteid);
+        insertSQL.setValue("departmentid", departmentRowsMap.containsKey("101")?departmentRowsMap.get("101").get(0).getLong("departmentid"):0);
+        insertSQL.setValue("stockid", stockRowsMap.containsKey("101")?stockRowsMap.get("101").get(0).getLong("stockid"):0);
+        insertSQL.setValue("type", "其他入库");
+        insertSQL.setValue("typemx", "外购入库");
+        insertSQL.setValue("rb", 1);
+        insertSQL.setValue("remarks", "U8单据上传生成");
+        insertSQL.setValue("billdate", u8.get(0).getString("billdate"));
+        insertSQL.setValue("period",u8.get(0).getString("period"));
+        insertSQL.setValue("billno", createBillCode("stockbill"));
+        insertSQL.setValue("isconfirm", 0);
+        insertSQL.setValue("sourceobject", "u8");
+        insertSQL.setValue("sourceid", u8id);
+        insertSQL.setValue("sys_enterpriseid", 0);
+        insertSQL.setValue("createby", username);
+        insertSQL.setDateValue("createdate");
+        insertSQL.setValue("changeby", username);
+        insertSQL.setDateValue("changedate");
+        insertSQL.setValue("status", "审核");
+        insertSQL.setValue("checkby", username);
+        insertSQL.setDateValue("checkdate");
+        sqllist.add(insertSQL.getSQL());
+        if(u8billsRowsMap.containsKey("1")){
+            int i=0;
+            for(Row row : u8billsRowsMap.get("1")){
+                InsertSQL insertSQLdetail = SQLFactory.createInsertSQL(this, "st_stockbill_items");
+                long st_stockbill_itemsid =createTableID("st_stockbill_items");
+                insertSQLdetail.setUniqueid(st_stockbill_itemsid);
+                insertSQLdetail.setSiteid(siteid);
+                insertSQLdetail.setValue("rowno", i + 1);
+                insertSQLdetail.setValue("st_stockbillid", st_stockbillid);
+                insertSQLdetail.setValue("itemid", row.getLong("itemid"));
+                insertSQLdetail.setValue("qty", row.getBigDecimal("qty"));
+                insertSQLdetail.setValue("discountrate", 1);
+                insertSQLdetail.setValue("sa_dispatch_itemsid", 0);
+                insertSQLdetail.setValue("itemno", row.getString("itemno"));
+                insertSQLdetail.setValue("itemname", row.getString("itemname"));
+                insertSQLdetail.setValue("model", row.getString("model"));
+                insertSQLdetail.setValue("price", row.getBigDecimal("price"));
+                insertSQLdetail.setValue("amount", row.getBigDecimal("qty").multiply(row.getBigDecimal("price")));
+                insertSQLdetail.setValue("untaxedprice", row.getBigDecimal("taxprice"));
+                insertSQLdetail.setValue("untaxedamount", row.getBigDecimal("qty").multiply(row.getBigDecimal("taxprice")));
+                i++;
+                sqllist.add(insertSQLdetail.getSQL());
+                if(u8billcodesRowsMap.containsKey(row.getString("itemid"))){
+                    for(Row row1 :u8billcodesRowsMap.get(row.getString("itemid"))){
+                        if(row1.getBoolean("rb")){
+                            InsertSQL insertSQLdetailsku = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
+                            long st_stockbill_items_skuid =  createTableID("st_stockbill_items_sku");
+                            insertSQLdetailsku.setUniqueid(st_stockbill_items_skuid);
+                            insertSQLdetailsku.setSiteid(siteid);
+                            insertSQLdetailsku.setValue("stockid", row1.getLong("stockid"));
+                            insertSQLdetailsku.setValue("itemid",row1.getLong("itemid"));
+                            insertSQLdetailsku.setValue("sku",StringUtils.isBlank(row1.getString("sku"))?"":row1.getString("sku"));
+                            insertSQLdetailsku.setValue("st_stockbillid",st_stockbillid);
+                            insertSQLdetailsku.setValue("st_stockbill_itemsid",st_stockbill_itemsid);
+                            sqllist.add(insertSQLdetailsku.getSQL());
+                        }
+                    }
+                }
+            }
+        }
+
+        //外购入库红
+        st_stockbillid = createTableID("st_stockbill");
+        insertSQL = SQLFactory.createInsertSQL(this, "st_stockbill");
+        insertSQL.setUniqueid(st_stockbillid);
+        insertSQL.setSiteid(siteid);
+        insertSQL.setValue("departmentid", departmentRowsMap.containsKey("101")?departmentRowsMap.get("101").get(0).getLong("departmentid"):0);
+        insertSQL.setValue("stockid", stockRowsMap.containsKey("101")?stockRowsMap.get("101").get(0).getLong("stockid"):0);
+        insertSQL.setValue("type", "其他入库");
+        insertSQL.setValue("typemx", "外购入库");
+        insertSQL.setValue("rb", 0);
+        insertSQL.setValue("remarks", "U8单据上传生成");
+        insertSQL.setValue("billdate", u8.get(0).getString("billdate"));
+        insertSQL.setValue("period",u8.get(0).getString("period"));
+        insertSQL.setValue("billno", createBillCode("stockbill"));
+        insertSQL.setValue("isconfirm", 0);
+        insertSQL.setValue("sourceobject", "u8");
+        insertSQL.setValue("sourceid", u8id);
+        insertSQL.setValue("sys_enterpriseid", 0);
+        insertSQL.setValue("createby", username);
+        insertSQL.setDateValue("createdate");
+        insertSQL.setValue("changeby", username);
+        insertSQL.setDateValue("changedate");
+        insertSQL.setValue("status", "审核");
+        insertSQL.setValue("checkby", username);
+        insertSQL.setDateValue("checkdate");
+        sqllist.add(insertSQL.getSQL());
+        if(u8billsRowsMap.containsKey("0")){
+            int i=0;
+            for(Row row : u8billsRowsMap.get("0")){
+                InsertSQL insertSQLdetail = SQLFactory.createInsertSQL(this, "st_stockbill_items");
+                long st_stockbill_itemsid =createTableID("st_stockbill_items");
+                insertSQLdetail.setUniqueid(st_stockbill_itemsid);
+                insertSQLdetail.setSiteid(siteid);
+                insertSQLdetail.setValue("rowno", i + 1);
+                insertSQLdetail.setValue("st_stockbillid", st_stockbillid);
+                insertSQLdetail.setValue("itemid", row.getLong("itemid"));
+                insertSQLdetail.setValue("qty", row.getBigDecimal("qty"));
+                insertSQLdetail.setValue("discountrate", 1);
+                insertSQLdetail.setValue("sa_dispatch_itemsid", 0);
+                insertSQLdetail.setValue("itemno", row.getString("itemno"));
+                insertSQLdetail.setValue("itemname", row.getString("itemname"));
+                insertSQLdetail.setValue("model", row.getString("model"));
+                insertSQLdetail.setValue("price", row.getBigDecimal("price"));
+                insertSQLdetail.setValue("amount", row.getBigDecimal("qty").multiply(row.getBigDecimal("price")));
+                insertSQLdetail.setValue("untaxedprice", row.getBigDecimal("taxprice"));
+                insertSQLdetail.setValue("untaxedamount", row.getBigDecimal("qty").multiply(row.getBigDecimal("taxprice")));
+                i++;
+                sqllist.add(insertSQLdetail.getSQL());
+                if(u8billcodesRowsMap.containsKey(row.getString("itemid"))){
+                    for(Row row1 :u8billcodesRowsMap.get(row.getString("itemid"))){
+                        if(!row1.getBoolean("rb")){
+                            InsertSQL insertSQLdetailsku = SQLFactory.createInsertSQL(this, "st_stockbill_items_sku");
+                            long st_stockbill_items_skuid =  createTableID("st_stockbill_items_sku");
+                            insertSQLdetailsku.setUniqueid(st_stockbill_items_skuid);
+                            insertSQLdetailsku.setSiteid(siteid);
+                            insertSQLdetailsku.setValue("stockid", row1.getLong("stockid"));
+                            insertSQLdetailsku.setValue("itemid",row1.getLong("itemid"));
+                            insertSQLdetailsku.setValue("sku", StringUtils.isBlank(row1.getString("sku"))?"":row1.getString("sku"));
+                            insertSQLdetailsku.setValue("st_stockbillid",st_stockbillid);
+                            insertSQLdetailsku.setValue("st_stockbill_itemsid",st_stockbill_itemsid);
+                            sqllist.add(insertSQLdetailsku.getSQL());
+                        }
+                    }
+                }
+            }
+        }
+
+
+
+        UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "u8");
+        updateSQL.setUniqueid(u8id);
+        updateSQL.setSiteid(siteid);
+        updateSQL.setValue("status", "审核");
+//        updateSQL.setValue("checkby", username);
+//        updateSQL.setDateValue("checkdate");
+        sqllist.add(updateSQL.getSQL());
+
+        dbConnect.runSqlUpdate(sqllist);
+        updateIcinvbal(true,u8id);
+
+
+        return getSucReturnObject().toString();
+    }
+
+
+
+    @API(title = "反审核", apiversion = R.ID2025073114082503.v1.class)
+    @CACHEING_CLEAN(apiClass = {u8.class})
+    public String uncheck() throws YosException {
+        long u8id = content.getLong("u8id");
+        ArrayList<String> sqllist=new ArrayList<>();
+
+        UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "u8");
+        updateSQL.setUniqueid(u8id);
+        updateSQL.setSiteid(siteid);
+        updateSQL.setValue("status", "新建");
+//        updateSQL.setValue("checkby", "");
+//        updateSQL.setValue("checkdate","null");
+        sqllist.add(updateSQL.getSQL());
+
+        sqllist.add("delete from st_stockbill_items where st_stockbillid in(select st_stockbillid from st_stockbill where sourceid="+u8id +" and sourceobject='u8')");
+        sqllist.add("delete from st_stockbill_items_sku where st_stockbillid in(select st_stockbillid from st_stockbill where sourceid="+u8id +" and sourceobject='u8')");
+        sqllist.add("delete from st_stockbill where sourceid="+u8id +" and sourceobject='u8'");
+
+        updateIcinvbal(false,u8id);
+
+        dbConnect.runSqlUpdate(sqllist);
+
+        return getSucReturnObject().toString();
+    }
+
+    public void updateIcinvbal(boolean ischeck,long u8id) throws YosException {
+        StringBuffer sql = new StringBuffer();
+        sql.append("select t.stockid,t.itemid,sum(t.qty)qty from (");
+        sql.append("select T2.itemid,T2.stockid,");
+        sql.append("CASE ");
+        sql.append("WHEN T1.type='其他出库' and t1.rb='1' then -T2.qty ");
+        sql.append("WHEN T1.type='其他出库' and t1.rb='0' then T2.qty ");
+        sql.append("WHEN T1.type='其他入库' and t1.rb='1' then T2.qty ");
+        sql.append("WHEN T1.type='其他入库' and t1.rb='0' then -T2.qty ");
+        sql.append("end qty ");
+        sql.append(" from st_stockbill t1 ");
+        sql.append("inner join st_stockbill_items t2 on t1.st_stockbillid=t2.st_stockbillid ");
+        sql.append("where t1.sourceobject='U8' and t1.sourceid='"
+                + u8id + "' and t1.status='审核' ");
+        sql.append(")t group by t.stockid,t.itemid");
+
+      Rows rows= dbConnect.runSqlQuery(sql.toString());
+        ArrayList<String> sqlList = new ArrayList<>();
+        RowsMap invbalsRowsMap = SQLFactory.createQuerySQL(dbConnect, "st_invbal").setWhere("siteid", siteid).setWhere("itemid", rows.toArrayList("itemid")).query().toRowsMap("itemid");
+        RowsMap invbalsTotalRowsMap = SQLFactory.createQuerySQL(dbConnect, "st_invbal_total").setWhere("siteid", siteid).setWhere("itemid", rows.toArrayList("itemid")).query().toRowsMap("itemid");
+        int i = 0;
+        for (Row row : rows) {
+            long itemid =row.getLong("itemid");
+            long stockid = row.getLong("stockid");
+            BigDecimal qty = ischeck ? row.getBigDecimal("qty") : row.getBigDecimal("qty").negate();
+            if (!invbalsRowsMap.containsKey(String.valueOf(itemid)) || !invbalsRowsMap.get(String.valueOf(itemid)).toRowsMap("stockid").containsKey(String.valueOf(stockid))) {
+                InsertSQL invbalInsert = SQLFactory.createInsertSQL(this, "st_invbal");
+                invbalInsert.setValue("siteid", siteid);
+                invbalInsert.setValue("stockid", stockid);
+                invbalInsert.setValue("itemid", itemid);
+                invbalInsert.setValue("qty", qty.doubleValue());
+                sqlList.add(invbalInsert.getSQL());
+            } else {
+                UpdateSQL invbalUpdate = SQLFactory.createUpdateSQL(this, "st_invbal");
+                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(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());
+                }
+            }
+
+        }
+    }
+
+
+    @API(title = "一键清空", apiversion = R.ID2025073114272903.v1.class)
+    @CACHEING_CLEAN(apiClass = {u8.class, u8billcodes.class, u8bills.class, u8itemprice.class})
+    public String deleteAll() throws YosException {
+        long u8id = content.getLong("u8id");
+        ArrayList<String> sqllist=new ArrayList<>();
+
+        Rows RowsStatus = dbConnect.runSqlQuery("select u8id,status from u8 where siteid='"
+                + siteid + "' and u8id='" + u8id + "'");
+
+        if (RowsStatus.isNotEmpty()) {
+            if (!RowsStatus.get(0).getString("status").equals("新建")) {
+                return getErrReturnObject().setErrMsg("非新建状态的销售出库U8上传无法一键清空").toString();
+            }
+        }
+
+        sqllist.add("delete from u8billcodes where siteid='" + siteid + "' and u8id=" + u8id);
+        sqllist.add("delete from u8bills where siteid='" + siteid + "' and u8id=" + u8id);
+        sqllist.add("delete from u8itemprice where siteid='" + siteid + "' and u8id=" + u8id);
+
+        dbConnect.runSqlUpdate(sqllist);
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "一键取单", apiversion = R.ID2025073114290603.v1.class)
+    @CACHEING_CLEAN(apiClass = {u8.class, u8billcodes.class, u8bills.class, u8itemprice.class})
+    public String oneclickaddbills() throws YosException {
+        long u8id = content.getLong("u8id");
+        ArrayList<String> sqllist=new ArrayList<>();
+        sqllist.add("delete from u8billcodes where siteid='" + siteid + "' and u8id=" + u8id);
+        sqllist.add("delete from u8bills where siteid='" + siteid + "' and u8id=" + u8id);
+        sqllist.add("delete from u8itemprice where siteid='" + siteid + "' and u8id=" + u8id);
+
+        SQLFactory sqlFactory =new SQLFactory(this,"销售出库U8上传序列号查询");
+        sqlFactory.addParameter("u8id",u8id);
+        Rows rows =dbConnect.runSqlQuery(sqlFactory);
+        for(Row row : rows){
+            long u8billcodesid = createTableID("u8billcodes");
+            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "u8billcodes");
+            insertSQL.setUniqueid(u8billcodesid);
+            insertSQL.setSiteid(siteid);
+            insertSQL.setValue("u8id", u8id);
+            insertSQL.setValue("sourceid", row.getString("sourceid"));
+            insertSQL.setValue("sourceobject",  row.getString("sourceobject"));
+            insertSQL.setValue("type",  row.getString("type"));
+            insertSQL.setValue("typemx",  row.getString("typemx"));
+            insertSQL.setValue("stockid",  row.getString("stockid"));
+            insertSQL.setValue("status",  row.getString("status"));
+            insertSQL.setValue("rb",  row.getString("rb"));
+            insertSQL.setValue("qty",  row.getString("qty"));
+            insertSQL.setValue("st_stockbillid",  row.getString("st_stockbillid"));
+            insertSQL.setValue("st_stockbill_items_skuid",  row.getString("st_stockbill_items_skuid"));
+
+            insertSQL.setValue("sku",  row.getString("sku"));
+            insertSQL.setValue("itemid",  row.getString("itemid"));
+            insertSQL.setValue("billno",  row.getString("billno"));
+            sqllist.add(insertSQL.getSQL());
+        }
+        dbConnect.runSqlUpdate(sqllist);
+        sqllist=new ArrayList<>();
+         sqlFactory =new SQLFactory(this,"销售出库U8上传单据查询");
+        sqlFactory.addParameter("u8id",u8id);
+        Rows rowsbill =dbConnect.runSqlQuery(sqlFactory);
+        for(Row row : rowsbill){
+            long u8billsid = createTableID("u8bills");
+            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "u8bills");
+            insertSQL.setUniqueid(u8billsid);
+            insertSQL.setSiteid(siteid);
+            insertSQL.setValue("u8id", u8id);
+            insertSQL.setValue("name", row.getString("name"));
+            insertSQL.setValue("address",  row.getString("address"));
+            insertSQL.setValue("billdate",  row.getString("billdate"));
+            insertSQL.setValue("outplace",  row.getString("outplace"));
+            insertSQL.setValue("remarks",  row.getString("remarks"));
+            insertSQL.setValue("period",  row.getString("period"));
+            insertSQL.setValue("sys_enterpriseid",  row.getString("sys_enterpriseid"));
+            insertSQL.setValue("rb",  row.getString("rb"));
+            insertSQL.setValue("sourceobject",  row.getString("sourceobject"));
+            insertSQL.setValue("sourceid",  row.getString("sourceid"));
+            insertSQL.setValue("phonenumber",  row.getString("phonenumber"));
+            insertSQL.setValue("st_stockbillid",  row.getString("st_stockbillid"));
+            insertSQL.setValue("type",  row.getString("type"));
+            insertSQL.setValue("typemx",  row.getString("typemx"));
+            insertSQL.setValue("billno",  row.getString("billno"));
+            sqllist.add(insertSQL.getSQL());
+        }
+        dbConnect.runSqlUpdate(sqllist);
+        sqllist=new ArrayList<>();
+        Rows stock =dbConnect.runSqlQuery("select stockid,stockno from  st_stock where  siteid='"+siteid+"'");
+        RowsMap stockRowsMap = stock.toRowsMap("stockno");
+
+        SQLFactory sqlFactory1 =new SQLFactory(this,"销售出库u8商品价格查询");
+        sqlFactory1.addParameter("u8id",u8id);
+        sqlFactory1.addParameter("tqstockid",stockRowsMap.containsKey("103")?stockRowsMap.get("103").get(0).getLong("stockid"):0);
+        sqlFactory1.addParameter("mqstockid",stockRowsMap.containsKey("109")?stockRowsMap.get("109").get(0).getLong("stockid"):0);
+        Rows rowsitemprice=dbConnect.runSqlQuery(sqlFactory1);
+        for(Row row : rowsitemprice){
+            long u8itempriceid = createTableID("u8itemprice");
+            InsertSQL insertSQL = SQLFactory.createInsertSQL(this, "u8itemprice");
+            insertSQL.setUniqueid(u8itempriceid);
+            insertSQL.setSiteid(siteid);
+            insertSQL.setValue("u8id", u8id);
+            insertSQL.setValue("itemid", row.getString("itemid"));
+            insertSQL.setValue("taxrate",  row.getString("taxrate"));
+            insertSQL.setValue("stockid",  row.getString("stockid"));
+            insertSQL.setValue("saleprice",  row.getString("saleprice"));
+            insertSQL.setValue("saleamount", row.getBigDecimal("saleprice").multiply(row.getBigDecimal("qty")));
+            insertSQL.setValue("qty",  row.getString("qty"));
+            sqllist.add(insertSQL.getSQL());
+        }
+        dbConnect.runSqlUpdate(sqllist);
+        return getSucReturnObject().toString();
+    }
+
+
+
+    @API(title = "选择取单", apiversion = R.ID2025073114292603.v1.class)
+    @CACHEING_CLEAN(apiClass = {u8.class, u8billcodes.class, u8bills.class, u8itemprice.class})
+    public String selectaddbills() throws YosException {
+        return getSucReturnObject().toString();
+    }
+
+
+
+    @API(title = "价格调整", apiversion = R.ID2025073114312903.v1.class)
+    @CACHEING_CLEAN(apiClass = {u8.class, u8billcodes.class, u8bills.class, u8itemprice.class})
+    public String changeprice() throws YosException {
+        long u8id = content.getLong("u8id");
+        String changetype=content.getString("changetype");
+        BigDecimal changevalue=content.getBigDecimal("changevalue");
+        ArrayList<String> sqllist=new ArrayList<>();
+
+        Rows u8itempricerows = dbConnect.runSqlQuery("select * from u8itemprice where siteid='"+siteid+"' and u8id="+u8id);
+        for(Row row :u8itempricerows){
+            BigDecimal taxprice=BigDecimal.ZERO;
+            BigDecimal price=BigDecimal.ZERO;
+            if(changetype.equals("百分比")){
+                taxprice= row.getBigDecimal("saleprice").multiply(BigDecimal.valueOf(100).add(changevalue)).divide(BigDecimal.valueOf(100)).setScale(2,BigDecimal.ROUND_HALF_UP);
+                price=taxprice.multiply(BigDecimal.valueOf(100).add(row.getBigDecimal("taxrate"))).divide(BigDecimal.valueOf(100)).setScale(2,BigDecimal.ROUND_HALF_UP);
+
+            }else if (changetype.equals("金额")) {
+                 taxprice = row.getBigDecimal("saleprice").add(changevalue);
+                 price=taxprice.multiply(BigDecimal.valueOf(100).add(row.getBigDecimal("taxrate"))).divide(BigDecimal.valueOf(100)).setScale(2,BigDecimal.ROUND_HALF_UP);
+
+            }
+            sqllist.add("update u8itemprice set price="+price+",taxprice="+taxprice+" where u8itempriceid="+ row.getLong("u8itempriceid"));
+        }
+
+        UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "u8");
+        updateSQL.setUniqueid(u8id);
+        updateSQL.setSiteid(siteid);
+        updateSQL.setValue("changetype",changetype);
+        updateSQL.setValue("changevalue",changevalue);
+        sqllist.add(updateSQL.getSQL());
+        dbConnect.runSqlUpdate(sqllist);
+        return getSucReturnObject().toString();
+    }
+
+
+
+    @API(title = "创建U8发货单", apiversion = R.ID2025080113261703.v1.class)
+    public String createU8Bill() throws YosException {
+        long u8id=content.getLong("u8id");
+        Rows u8s=dbConnect.runSqlQuery("select * from u8 where u8id="+u8id);
+        if(u8s.isEmpty()){
+            return getErrReturnObject().setErrMsg("该销售出库U8上传不存在").toString();
+        }
+        Row u8=u8s.get(0);
+        JSONObject object = new JSONObject();
+        object.put("accesstoken", 1);
+        object.put("classname", "U8System_Dispatch");
+        object.put("method", "insert");
+
+        JSONObject content = new JSONObject();
+        content.put("cAcc_Id", "666");
+        content.put("ddate", u8.getString("billdate"));
+        content.put("cdlcode", u8.getString("billno"));
+        content.put("sysfrom", "drp");
+
+        JSONArray detail = new JSONArray();
+
+        Rows rows = dbConnect.runSqlQuery("select t3.itemno,t1.itemid,t1.stockno,ifnull(t1.qty,0) qty,ifnull(t2.price,0) price,ifnull(t2.taxprice,0) taxprice,ifnull(t2.taxrate,0) taxrate,t2.stockid  from (\n" +
+                "select distinct t1.itemid,t1.u8id,case when t2.outplace='谈桥' then '103' when t2.outplace='马桥' then '109' else t3.stockno end as stockno,sum(t1.qty)qty from u8billcodes t1\n" +
+                "inner join u8bills t2 on t1.billno=t2.billno and t1.u8id=t2.u8id \n" +
+                "left join st_stock t3 on t1.stockid=t3.stockid\n" +
+                "where t1.rb='1' and t1.u8id=" +u8id+
+                " group by t1.itemid,case when t2.outplace='谈桥' then '103' when t2.outplace='马桥' then '109' else t3.stockno end,t1.u8id )t1 left join U8ITEMPRICE t2 on t1.u8id=t2.u8id and t1.itemid=t2.itemid left join plm_item t3 on t1.itemid=t3.itemid");
+        int rowno = 1;
+        for (Row row : rows) {
+            BigDecimal qty =  row.getBigDecimal("qty");
+            BigDecimal taxrate = row.getBigDecimal("taxrate");
+            BigDecimal taxprice =  row.getBigDecimal("taxprice");
+            BigDecimal price = row.getBigDecimal("price");
+
+            JSONObject dObject = new JSONObject();
+            dObject.put("cinvcode", row.getString("itemno"));
+            dObject.put("iquantity", qty + "");
+            dObject.put("irowno", rowno++);
+            dObject.put("fprice", price + "");// 去税单价
+            // dObject.put("famount", new BigDecimal(Math.mul(fprice, fqty,
+            // 2)).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());//去税金额
+            dObject.put(
+                    "famount",price.multiply(qty).setScale(2, BigDecimal.ROUND_HALF_UP)
+                            .toPlainString());// 去税金额
+
+            dObject.put(
+                    "ftax", (taxprice.subtract(price)).multiply(qty).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());// 税额
+
+            dObject.put("ftaxrate", taxrate + "");// 税率
+            dObject.put(
+                    "ftaxamount", taxprice.multiply(qty).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());// 价税合计
+            dObject.put("ftaxprice", taxprice + "");// 含税单价
+            dObject.put("fstockno", row.getString("stockno").toString());
+           Rows codeRows =dbConnect.runSqlQuery("select sku from u8billcodes where rb='1' and u8id='"
+                    + u8id
+                    + "' and "
+                    + "itemid='"
+                    + row.getString("itemid")
+                    + "' and stockid='"
+                    + row.getString("stockid")
+                    + "' and ifnull(sku,'')!=''");
+            dObject.put("fmachinecodes", codeRows.toArrayList("sku"));
+            detail.add(dObject);
+        }
+        content.put("detail", detail);
+        object.put("content", content);
+       // U8Rest rest = new U8Rest();
+
+       // String a = rest.post(object.toString());
+        return getSucReturnObject().toString();
+    }
+
+    @API(title = "创建U8退货单", apiversion = R.ID2025080113595003.v1.class)
+    public String createU8ReturnBill() throws YosException {
+        long u8id=content.getLong("u8id");
+        Rows u8s=dbConnect.runSqlQuery("select * from u8 where u8id="+u8id);
+        if(u8s.isEmpty()){
+            return getErrReturnObject().setErrMsg("该销售出库U8上传不存在").toString();
+        }
+        Row u8=u8s.get(0);
+        JSONObject object = new JSONObject();
+        object.put("accesstoken", 1);
+        object.put("classname", "U8System_Dispatch");
+        object.put("method", "insertReturn");
+
+        JSONObject content = new JSONObject();
+        content.put("cAcc_Id", "666");
+        content.put("ddate", u8.getString("billdate"));
+        content.put("cdlcode", u8.getString("billno") + "R");
+        content.put("sysfrom", "drp");
+
+        JSONArray detail = new JSONArray();
+
+        Rows rows = dbConnect.runSqlQuery("select t1.itemid,t1.stockno,ifnull(-t1.qty,0) qty,ifnull(t2.price,0) price,ifnull(t2.taxprice,0) taxprice,ifnull(t2.taxrate,0) taxrate,t3.itemno,t2.stockid from (\n" +
+                "select distinct t1.itemid,t1.u8id,case when t2.outplace='谈桥' then '103' when t2.outplace='马桥' then '109' else t3.stockno end as stockno,sum(t1.qty)qty from u8billcodes t1\n" +
+                "inner join u8bills t2 on t1.billno=t2.billno and t1.u8id=t2.u8id \n" +
+                "left join st_stock t3 on t1.stockid=t3.stockid\n" +
+                "where t1.rb='0' and t1.u8id=" +u8id+
+                " group by t1.itemid,case when t2.outplace='谈桥' then '103' when t2.outplace='马桥' then '109' else t3.stockno end,t1.u8id )t1 left join U8ITEMPRICE t2 on t1.u8id=t2.u8id and t1.itemid=t2.itemid left join plm_item t3 on t1.itemid=t3.itemid");
+        int rowno = 1;
+        for (Row row : rows) {
+            BigDecimal qty =  row.getBigDecimal("qty");
+            BigDecimal taxrate = row.getBigDecimal("taxrate");
+            BigDecimal taxprice =  row.getBigDecimal("taxprice");
+            BigDecimal price = row.getBigDecimal("price");
+
+
+            JSONObject dObject = new JSONObject();
+            dObject.put("cinvcode", row.getString("itemno"));
+            dObject.put("iquantity", qty + "");
+            dObject.put("irowno", rowno++);
+            dObject.put("fprice", price + "");
+            dObject.put("famount", price.multiply(qty).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
+
+            dObject.put(
+                    "ftax", (taxprice.subtract(price)).multiply(qty).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
+            dObject.put("ftaxrate", taxrate + "");
+            dObject.put(
+                    "ftaxamount", taxprice.multiply(qty).setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
+            dObject.put("ftaxprice", taxprice + "");
+            dObject.put("fstockno", row.getString("fstockno").toString());
+            Rows codeRows =dbConnect.runSqlQuery("select sku from u8billcodes where rb='0' and u8id='"
+                    + u8id
+                    + "' and "
+                    + "itemid='"
+                    + row.getString("itemid")
+                    + "' and stockid='"
+                    + row.getString("stockid")
+                    + "' and ifnull(sku,'')!=''");
+
+            dObject.put("fmachinecodes", codeRows.toArrayList("sku"));
+            detail.add(dObject);
+        }
+        content.put("detail", detail);
+        object.put("content", content);
+        U8Rest rest = new U8Rest();
+
+       // String a = rest.post(object.toString());
+        //System.err.println(a);
+        // ((PaoSet) getThisPaoSet()).addWarning(new P2AppException("", a));
+        return getSucReturnObject().toString();
+    }
+
+
+}

+ 48 - 0
src/custom/restcontroller/webmanage/sale/u8/u8billcodes.java

@@ -0,0 +1,48 @@
+package restcontroller.webmanage.sale.u8;
+
+import com.alibaba.fastjson.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.annotation.API;
+import common.annotation.CACHEING;
+import common.data.QuerySQL;
+import common.data.Rows;
+import common.data.SQLFactory;
+import restcontroller.R;
+@API(title = "销售出库U8上传序列号")
+public class u8billcodes extends Controller {
+    public u8billcodes(JSONObject content) throws YosException {
+        super(content);
+    }
+
+
+    @API(title = "销售出库U8上传序列号列表", apiversion = R.ID2025073114135303.v1.class)
+    @CACHEING
+    public String queryu8codesList() throws YosException {
+        long u8id = content.getLong("u8id");
+        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.sku like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t1.billno like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t2.itemno like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t2.itemname like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+        }
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "u8billcodes","*");
+        querySQL.setTableAlias("t1");
+        querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.siteid = t2.siteid and t1.itemid = t2.itemid","itemno","itemname","spec","model");
+        querySQL.addJoinTable(JOINTYPE.left, "st_stock", "t3", "t1.siteid = t3.siteid and t1.stockid = t3.stockid","stockno","stockname");
+        querySQL.setWhere("t1.siteid", siteid);
+        querySQL.setWhere("t1.u8id", u8id);
+        querySQL.setWhere(where);
+        querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy(pageSorting);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+}

+ 45 - 0
src/custom/restcontroller/webmanage/sale/u8/u8bills.java

@@ -0,0 +1,45 @@
+package restcontroller.webmanage.sale.u8;
+
+import com.alibaba.fastjson.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.annotation.API;
+import common.annotation.CACHEING;
+import common.data.QuerySQL;
+import common.data.Rows;
+import common.data.SQLFactory;
+import restcontroller.R;
+
+@API(title = "销售出库U8上传单据表")
+public class u8bills  extends Controller {
+    public u8bills(JSONObject content) throws YosException {
+        super(content);
+    }
+
+    @API(title = "销售出库U8上传单据列表", apiversion = R.ID2025073114172003.v1.class)
+    @CACHEING
+    public String queryu8codesList() throws YosException {
+        long u8id = content.getLong("u8id");
+        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.sku like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or 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, "u8bills","*");
+        querySQL.setTableAlias("t1");
+        querySQL.setWhere("t1.siteid", siteid);
+        querySQL.setWhere("t1.u8id", u8id);
+        querySQL.setWhere(where);
+        querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy(pageSorting);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+}

+ 47 - 0
src/custom/restcontroller/webmanage/sale/u8/u8itemprice.java

@@ -0,0 +1,47 @@
+package restcontroller.webmanage.sale.u8;
+
+import com.alibaba.fastjson.JSONObject;
+import common.Controller;
+import common.YosException;
+import common.annotation.API;
+import common.annotation.CACHEING;
+import common.data.QuerySQL;
+import common.data.Rows;
+import common.data.SQLFactory;
+import restcontroller.R;
+
+@API(title = "u8商品价格表")
+public class u8itemprice  extends Controller {
+    public u8itemprice(JSONObject content) throws YosException {
+        super(content);
+    }
+
+
+
+    @API(title = "销售出库u8商品价格列表", apiversion = R.ID2025073114183903.v1.class)
+    @CACHEING
+    public String queryu8itempriceList() throws YosException {
+        long u8id = content.getLong("u8id");
+        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("t2.itemno like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append("or t2.itemname like'%").append(whereObject.getString("condition")).append("%' ");
+                where.append(")");
+            }
+        }
+        QuerySQL querySQL = SQLFactory.createQuerySQL(this, "u8itemprice","*");
+        querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t2", "t1.siteid = t2.siteid and t1.itemid = t2.itemid","itemno","itemname","spec","model");
+        querySQL.setTableAlias("t1");
+        querySQL.setWhere("t1.siteid", siteid);
+        querySQL.setWhere("t1.u8id", u8id);
+        querySQL.setWhere(where);
+        querySQL.setPage(pageSize, pageNumber);
+        querySQL.setOrderBy(pageSorting);
+        Rows rows = querySQL.query();
+
+        return getSucReturnObject().setData(rows).toString();
+    }
+}

+ 2 - 0
src/custom/restcontroller/webmanage/sale/workorder/SQL/服务工单详情查询.sql

@@ -3,6 +3,8 @@ SELECT
     t2.billno,
     t2.class1,
     t2.class2,
+    t2.name customername,
+    t2.phonenumber customerphonenumber,
     t4.name templatename,
     t6.agentnum,
     t5.abbreviation,