package restcontroller.webmanage.sale.expressform; import beans.attachment.Attachment; import beans.data.BatchDeleteErr; import beans.datacontrllog.DataContrlLog; import com.alibaba.fastjson2.JSONArray; import com.alibaba.fastjson2.JSONObject; import common.Controller; import common.YosException; import common.annotation.API; import common.annotation.CACHEING; import common.annotation.CACHEING_CLEAN; import common.data.*; import org.apache.commons.lang.StringUtils; import restcontroller.R; import restcontroller.sale.stockbill.stockbill; import restcontroller.webmanage.sale.expressform.util.YTOExpressMailNoClient; import restcontroller.webmanage.sale.expressform.util.bean.Item; import restcontroller.webmanage.sale.expressform.util.bean.Person; import restcontroller.webmanage.sale.expressform.util.bean.YTORequestOrder; import java.math.BigDecimal; import java.util.*; @API(title = "快递信息表") public class expressform extends Controller { public expressform(JSONObject content) throws YosException { super(content); } @API(title = "新增更新快递信息", apiversion = R.ID2025080614514703.v1.class) @CACHEING_CLEAN(apiClass = {expressform.class}) public String insertormodify_expressform() throws YosException { ArrayList sqlList = new ArrayList<>(); // 表名 String tableName = "expressform"; Long expressformid = content.getLong("expressformid"); String logisticproviderid = content.getStringValue("logisticproviderid"); String ordertype = content.getStringValue("ordertype"); String agencyfund = content.getStringValue("agencyfund"); String itemname = content.getStringValue("itemname"); BigDecimal itemsweight = content.getBigDecimal("itemsweight"); BigDecimal number = content.getBigDecimal("number"); String remarks = content.getStringValue("remarks"); String fpriority_ads = content.getStringValue("fpriority_ads"); long sys_enterpriseid = content.getLong("sys_enterpriseid"); String rcv_name = content.getStringValue("rcv_name"); String rcv_phone = content.getStringValue("rcv_phone"); String rcv_mobile = content.getStringValue("rcv_mobile"); String rcv_postcode = content.getStringValue("rcv_postcode"); String rcv_prov = content.getStringValue("rcv_prov"); String rcv_city = content.getStringValue("rcv_city"); String rcv_county = content.getStringValue("rcv_county"); String rcv_address = content.getStringValue("rcv_address"); long expresssdrid = content.getLongValue("expresssdrid"); String mailno = content.getStringValue("mailno"); String province = content.getStringValue("province"); String city = content.getStringValue("city"); String county = content.getStringValue("county"); String phonenumber = content.getStringValue("phonenumber"); String address = content.getStringValue("address"); if (expressformid <= 0) { String orderby = ""; if (fpriority_ads.equals("配件>常规")) { orderby = "desc"; } else { orderby = "asc"; } Rows rcvRows = dbConnect.runSqlQuery("select * from sys_enterprise_contacts where workaddress=1 and sys_enterpriseid=" + sys_enterpriseid + " order by case when type='配件' then 1 else 0 end " + orderby); if (rcvRows.isNotEmpty()) { rcv_name = StringUtils.isBlank(rcvRows.get(0).getString("name"))?rcv_name:rcvRows.get(0).getString("name"); rcv_phone =StringUtils.isBlank(rcvRows.get(0).getString("phonenumber"))?rcv_phone:rcvRows.get(0).getString("phonenumber"); rcv_mobile =StringUtils.isBlank(rcvRows.get(0).getString("telephone"))?rcv_mobile:rcvRows.get(0).getString("telephone"); rcv_prov =StringUtils.isBlank(rcvRows.get(0).getString("province"))?rcv_prov:rcvRows.get(0).getString("province"); rcv_city = StringUtils.isBlank(rcvRows.get(0).getString("city"))?rcv_city:rcvRows.get(0).getString("city"); rcv_county = StringUtils.isBlank(rcvRows.get(0).getString("county"))?rcv_county:rcvRows.get(0).getString("county"); rcv_address =StringUtils.isBlank(rcvRows.get(0).getString("address"))?rcv_address:rcvRows.get(0).getString("address"); } expressformid = createTableID(tableName); InsertSQL insertSQL = SQLFactory.createInsertSQL(this, tableName); insertSQL.setUniqueid(expressformid); insertSQL.setSiteid(siteid); insertSQL.setValue("logisticproviderid", logisticproviderid); insertSQL.setValue("ordertype", ordertype); insertSQL.setValue("agencyfund", agencyfund); insertSQL.setValue("itemname", itemname); insertSQL.setValue("itemsweight", itemsweight); insertSQL.setValue("number", number); insertSQL.setValue("fpriority_ads", fpriority_ads); insertSQL.setValue("sys_enterpriseid", sys_enterpriseid); insertSQL.setValue("rcv_name", rcv_name); insertSQL.setValue("rcv_phone", rcv_phone); insertSQL.setValue("rcv_mobile", rcv_mobile); insertSQL.setValue("rcv_postcode", rcv_postcode); insertSQL.setValue("rcv_prov", rcv_prov); insertSQL.setValue("rcv_city", rcv_city); insertSQL.setValue("rcv_county", rcv_county); insertSQL.setValue("rcv_address", rcv_address); insertSQL.setValue("expresssdrid", expresssdrid); insertSQL.setValue("remarks", remarks); insertSQL.setValue("mailno", mailno); insertSQL.setValue("province", province); insertSQL.setValue("city", city); insertSQL.setValue("county", county); insertSQL.setValue("phonenumber", phonenumber); insertSQL.setValue("address", address); insertSQL.setValue("txlogisticid", createBillCode("logisticsbill")); 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, "expressform", expressformid, "新增", "快递信息新增成功").getSQL()); } else { Rows rows = dbConnect.runSqlQuery( "SELECT status from expressform WHERE expressformid = " + expressformid); if (rows.isNotEmpty()) { if (rows.get(0).getString("status").equals("新建")) { UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, tableName); updateSQL.setUniqueid(expressformid); updateSQL.setSiteid(siteid); updateSQL.setValue("logisticproviderid", logisticproviderid); updateSQL.setValue("ordertype", ordertype); updateSQL.setValue("agencyfund", agencyfund); updateSQL.setValue("itemname", itemname); updateSQL.setValue("itemsweight", itemsweight); updateSQL.setValue("expresssdrid", expresssdrid); updateSQL.setValue("number", number); updateSQL.setValue("fpriority_ads", fpriority_ads); updateSQL.setValue("sys_enterpriseid", sys_enterpriseid); updateSQL.setValue("rcv_name", rcv_name); updateSQL.setValue("rcv_phone", rcv_phone); updateSQL.setValue("rcv_mobile", rcv_mobile); updateSQL.setValue("rcv_postcode", rcv_postcode); updateSQL.setValue("rcv_prov", rcv_prov); updateSQL.setValue("rcv_city", rcv_city); updateSQL.setValue("rcv_county", rcv_county); updateSQL.setValue("rcv_address", rcv_address); updateSQL.setValue("remarks", remarks); updateSQL.setValue("mailno", mailno); updateSQL.setValue("province", province); updateSQL.setValue("city", city); updateSQL.setValue("county", county); updateSQL.setValue("phonenumber", phonenumber); updateSQL.setValue("address", address); updateSQL.setValue("changeby", username); updateSQL.setDateValue("changedate"); sqlList.add(updateSQL.getSQL()); sqlList.add(DataContrlLog.createLog(this, "expressform", expressformid, "更新", "快递信息更新成功").getSQL()); } else { return getErrReturnObject().setErrMsg("非新建状态下无法编辑").toString(); } } else { return getErrReturnObject().setErrMsg("该快递信息不存在").toString(); } } dbConnect.runSqlUpdate(sqlList); content.put("expressformid", expressformid); return queryexpressformMain(); } @API(title = "快递信息详情", apiversion = R.ID2025080614515903.v1.class) @CACHEING public String queryexpressformMain() throws YosException { long expressformid = content.getLong("expressformid"); QuerySQL querySQL = SQLFactory.createQuerySQL(this, "expressform", "*"); querySQL.setTableAlias("t1"); querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid", "enterprisename", "abbreviation"); querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid", "agentnum"); querySQL.addJoinTable(JOINTYPE.left, "expresssdr", "t4", "t1.expresssdrid = t4.expresssdrid AND t1.siteid = t4.siteid", "name", "mobile", "postcode"); querySQL.setWhere("t1.siteid", siteid); querySQL.setWhere("t1.expressformid", expressformid); Rows rows = querySQL.query(); Row row = rows.isNotEmpty() ? rows.get(0) : new Row(); return getSucReturnObject().setData(row).toString(); } @API(title = "快递信息列表", apiversion = R.ID2025080614520703.v1.class) @CACHEING public String queryexpressformList() 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.txlogisticid 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("' "); } } QuerySQL querySQL = SQLFactory.createQuerySQL(this, "expressform", "*"); querySQL.setTableAlias("t1"); querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid", "enterprisename", "abbreviation"); querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid", "agentnum"); querySQL.addJoinTable(JOINTYPE.left, "expresssdr", "t4", "t1.expresssdrid = t4.expresssdrid AND t1.siteid = t4.siteid", "name", "mobile", "postcode"); querySQL.setWhere("t1.siteid", siteid); querySQL.setWhere(where); querySQL.setPage(pageSize, pageNumber); Rows rows = querySQL.query(); return getSucReturnObject().setData(rows).toString(); } @API(title = "删除", apiversion = R.ID2025080614521603.v1.class) @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class}) public String delete() throws YosException { JSONArray expressformids = content.getJSONArray("expressformids"); BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, expressformids.size()); for (Object o : expressformids) { long expressformid = Long.parseLong(o.toString()); Rows RowsStatus = dbConnect.runSqlQuery("select expressformid,status,success,mailno,txlogisticid from expressform where siteid='" + siteid + "' and expressformid='" + expressformid + "'"); if (RowsStatus.isNotEmpty()) { if (!RowsStatus.get(0).getString("status").equals("新建")) { batchDeleteErr.addErr(expressformid, "非新建状态的快递信息无法删除"); continue; } if (StringUtils.isNotBlank(RowsStatus.get(0).getString("mailno"))) { batchDeleteErr.addErr(expressformid, "该快递信息单已填写'电子面单号',无法删除!"); continue; } if (RowsStatus.get(0).getBoolean("success")) { batchDeleteErr.addErr(expressformid, "该快递信息单已成功生成电子面单,无法删除!"); continue; } } ArrayList sqllist = new ArrayList<>(); sqllist.add("delete from expressform where siteid='" + siteid + "' and expressformid=" + expressformid); sqllist.add("delete from sa_expressform_stockbill where siteid='" + siteid + "' and expressformid="+expressformid); //sqllist.add("delete from expressformbillcodes where siteid='" + siteid + "' and expressformid=" + expressformid); dbConnect.runSqlUpdate(sqllist); } return batchDeleteErr.getReturnObject().toString(); } @API(title = "可绑定销售出库单查询", apiversion = R.ID2025080711005903.v1.class) @CACHEING public String querycanbindstockbills() throws YosException { long sys_enterpriseid = content.getLong("sys_enterpriseid"); StringBuffer where = new StringBuffer(" 1=1 "); if (content.containsKey("where")) { JSONObject whereObject = content.getJSONObject("where"); if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) { where.append(" and("); where.append("t1.billno like'%").append(whereObject.getString("condition")).append("%' "); where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' "); where.append(")"); } } QuerySQL querySQL = SQLFactory.createQuerySQL(this, "st_stockbill", "*"); querySQL.setTableAlias("t1"); querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid", "enterprisename", "abbreviation"); querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid", "agentnum"); querySQL.setWhere("t1.siteid", siteid); querySQL.setWhere("t1.sys_enterpriseid", sys_enterpriseid); querySQL.setWhere("t1.type='销售出库' and t1.status='审核' and t1.rb=1 and ifnull(t1.txlogisticid,'')=''"); querySQL.setWhere(where); querySQL.setPage(pageSize, pageNumber); querySQL.setOrderBy("t1.st_stockbillid desc"); Rows rows = querySQL.query(); return getSucReturnObject().setData(rows).toString(); } @API(title = "已绑定销售出库单", apiversion = R.ID2025080711063603.v1.class) @CACHEING public String yibindstockbills() throws YosException { long expressformid = content.getLong("expressformid"); StringBuffer where = new StringBuffer(" 1=1 "); if (content.containsKey("where")) { JSONObject whereObject = content.getJSONObject("where"); if (whereObject.containsKey("condition") && !"".equals(whereObject.getString("condition"))) { where.append(" and("); where.append("t1.billno like'%").append(whereObject.getString("condition")).append("%' "); where.append("or t1.remarks like'%").append(whereObject.getString("condition")).append("%' "); where.append(")"); } } QuerySQL querySQL = SQLFactory.createQuerySQL(this, "st_stockbill", "*"); querySQL.setTableAlias("t1"); querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t1.sys_enterpriseid = t2.sys_enterpriseid AND t1.siteid = t2.siteid", "enterprisename", "abbreviation"); querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t1.sys_enterpriseid = t3.sys_enterpriseid AND t1.siteid = t3.siteid", "agentnum"); querySQL.addJoinTable(JOINTYPE.inner, "sa_expressform_stockbill", "t4", "t1.st_stockbillid = t4.st_stockbillid AND t1.siteid = t4.siteid"); querySQL.setWhere("t1.siteid", siteid); querySQL.setWhere("t1.type='销售出库' and t4.expressformid='" + expressformid + "'"); querySQL.setWhere(where); querySQL.setPage(pageSize, pageNumber); Rows rows = querySQL.query(); return getSucReturnObject().setData(rows).toString(); } @API(title = "绑定销售出库单", apiversion = R.ID2025080711074703.v1.class) @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class}) public String bindstockbill() throws YosException { long expressformid = content.getLong("expressformid"); String txlogisticid = content.getString("txlogisticid"); String mailno = content.getString("mailno"); JSONArray st_stockbillids = content.getJSONArray("st_stockbillids"); ArrayList sqlList = new ArrayList<>(); Rows rows = dbConnect.runSqlQuery("select * from expressform where siteid='" + siteid + "' and expressformid=" + expressformid); if (rows.isEmpty()) { return getErrReturnObject().setErrMsg("该快递信息不存在").toString(); } if (!rows.get(0).getString("status").equals("新建")) { return getErrReturnObject().setErrMsg("非新建状态下不能操作").toString(); } if (rows.get(0).getLong("sys_enterpriseid") == 0) { return getErrReturnObject().setErrMsg("必须指定经销商编号,才能关联销售出库单").toString(); } if (st_stockbillids.size() == 0) { return getErrReturnObject().setErrMsg("未选中任何销售出库单!").toString(); } String sql = "select * from st_stockbill where siteid='" + siteid + "' and st_stockbillid in" + st_stockbillids.toJSONString(); sql = sql.replace("[", "(").replace("]", ")"); Rows stockbillrows = dbConnect.runSqlQuery(sql); for (Row row : stockbillrows) { if (StringUtils.isNotBlank(row.getString("txlogisticid"))) { //return getErrReturnObject().setErrMsg("销售出库单" + row.getString("billno") + ",已关联快递信息单!,不得重复关联!").toString(); } InsertSQL insertSQL =SQLFactory.createInsertSQL(this,"sa_expressform_stockbill"); insertSQL.setUniqueid(createTableID("sa_expressform_stockbill")); insertSQL.setSiteid(siteid); insertSQL.setValue("st_stockbillid", row.getLong("st_stockbillid")); insertSQL.setValue("expressformid", expressformid); sqlList.add(insertSQL.getSQL()); // sqlList.add("update st_stockbill set txlogisticid='" + txlogisticid + "',mailno='" + mailno + "' where st_stockbillid=" + row.getLong("st_stockbillid")); } dbConnect.runSqlUpdate(sqlList); return getSucReturnObject().toString(); } @API(title = "解绑销售出库单", apiversion = R.ID2025080711235203.v1.class) @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class}) public String unbindstockbill() throws YosException { JSONArray st_stockbillids = content.getJSONArray("st_stockbillids"); long expressformid = content.getLong("expressformid"); ArrayList sqlList = new ArrayList<>(); Rows rows = dbConnect.runSqlQuery("select * from expressform where siteid='" + siteid + "' and expressformid=" + expressformid); if (rows.isEmpty()) { return getErrReturnObject().setErrMsg("该快递信息不存在").toString(); } if (!rows.get(0).getString("status").equals("新建")) { return getErrReturnObject().setErrMsg("非新建状态下不能操作").toString(); } if (st_stockbillids.size() == 0) { return getErrReturnObject().setErrMsg("未选中任何销售出库单!").toString(); } //sqlList.add("update st_stockbill set txlogisticid='',mailno='' where st_stockbillid in" + st_stockbillids.toJSONString().replace("[", "(").replace("]", ")")); sqlList.add("delete from sa_expressform_stockbill where expressformid="+expressformid+" and st_stockbillid in" + st_stockbillids.toJSONString().replace("[", "(").replace("]", ")")); dbConnect.runSqlUpdate(sqlList); return getSucReturnObject().toString(); } @API(title = "审核", apiversion = R.ID2025080711271103.v1.class) @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class}) public String check() throws YosException { Long expressformid = content.getLong("expressformid"); boolean ischeck = content.getBoolean("ischeck"); Rows rows = dbConnect.runSqlQuery("select t1.expressformid,t1.status,t1.mailno,t1.txlogisticid from expressform t1 where t1.expressformid ='" + expressformid + "' and t1.siteid='" + siteid + "'"); for (Row row : rows) { if (ischeck) { if (!row.getString("status").equals("新建")) { return getErrReturnObject().setErrMsg("非新建状态的【" + row.getString("txlogisticid") + "】快递信息单无法审核") .toString(); } if (StringUtils.isBlank(row.getString("mailno"))) { return getErrReturnObject().setErrMsg("面单号未填写,不能审核;请先尝试申请面单号") .toString(); } } else { if (!row.getString("status").equals("审核")) { return getErrReturnObject().setErrMsg("非审核状态的【" + row.getString("txlogisticid") + "】快递信息单无法反审核") .toString(); } } } ArrayList sqlList = new ArrayList<>(); UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "expressform"); updateSQL.setUniqueid(expressformid); updateSQL.setSiteid(siteid); updateSQL.setValue("status", ischeck ? "审核" : "新建"); updateSQL.setValue("checkby", ischeck ? username : "null"); if (ischeck) { updateSQL.setDateValue("checkdate"); } else { updateSQL.setValue("checkdate", "null"); } sqlList.add(updateSQL.getSQL()); dbConnect.runSqlUpdate(sqlList); return getSucReturnObject().toString(); } @API(title = "关闭快递信息单", apiversion = R.ID2025080711325203.v1.class) @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class}) public String close() throws YosException { ArrayList sqlList = new ArrayList<>(); String txlogisticid = content.getString("txlogisticid"); Long expressformid = content.getLong("expressformid"); Rows stockbillrows = dbConnect.runSqlQuery("select * from st_stockbill where txlogisticid='" + txlogisticid + "' and siteid='" + siteid + "'"); Rows rows = dbConnect.runSqlQuery("select * from expressform where siteid='" + siteid + "' and expressformid=" + expressformid); if (rows.isEmpty()) { return getErrReturnObject().setErrMsg("该快递信息不存在").toString(); } if (!rows.get(0).getString("status").equals("审核")) { return getErrReturnObject().setErrMsg("非审核状态下不能关闭").toString(); } if ((!rows.get(0).getBoolean("success")) && stockbillrows.size() == 0) { return getErrReturnObject().setErrMsg("该快递信息单未生成电子面单,且未关联销售出库单,直接删除即可").toString(); } for (Row row : stockbillrows) { sqlList.add("update st_stockbill set txlogisticid='',mailno='' where st_stockbillid=" + row.getLong("st_stockbillid")); } sqlList.add("update expressform set status='关闭' where expressformid=" + expressformid); dbConnect.runSqlUpdate(sqlList); return getSucReturnObject().toString(); } @API(title = "查询快递发件人", apiversion = R.ID2025080713343803.v1.class) public String querysendperson() throws YosException { QuerySQL querySQL = SQLFactory.createQuerySQL(this, "expresssdr", "*"); querySQL.setTableAlias("t1"); querySQL.setWhere("t1.siteid", siteid); querySQL.setPage(pageSize, pageNumber); Rows rows = querySQL.query(); return getSucReturnObject().setData(rows).toString(); } /** * 向圆通电子面单申请接口发送请求,申请圆通电子面单号 * * @return * @throws YosException */ @API(title = "申请圆通电子面单号", apiversion = R.ID2025080714245303.v1.class) public String applyMailNo_YTO() throws YosException { JSONArray expressformids = content.getJSONArray("expressformids"); ArrayList sqlList = new ArrayList<>(); QuerySQL querySQL = SQLFactory.createQuerySQL(this, "expressform", "*"); querySQL.setTableAlias("t1"); querySQL.setWhere("t1.siteid", siteid); querySQL.setWhere("t1.expressformid", expressformids); Rows rows = querySQL.query(); BatchDeleteErr batchDeleteErr = BatchDeleteErr.create(this, expressformids.size()); for(Row row : rows){ if (row.getBoolean("success")) { batchDeleteErr.addErr(row.getString("txlogisticid"), "该快递信息单已成功申请电子面单"); continue; } else if (StringUtils.isNotBlank(row.getString("mailno"))) { batchDeleteErr.addErr(row.getString("txlogisticid"), "该快递信息单已有快递面单单号,不需要重复申请!"); continue; } else if ("关闭".equals(row.getString("status"))) { batchDeleteErr.addErr(row.getString("txlogisticid"), "该快递信息单已关闭,不能申请电子面单!"); continue; } else if (!"YTO".equalsIgnoreCase(row.getString("logisticproviderid"))) { batchDeleteErr.addErr(row.getString("txlogisticid"), "目前只支持申请圆通的电子面单"); continue; } String ordertype = row.getString("ordertype"); Rows expressvalRows = dbConnect.runSqlQuery("select * from expressval where siteid='" + siteid + "' and logisticproviderid='YTO' and ordertype='" + ordertype + "'"); if (expressvalRows.isEmpty()) { batchDeleteErr.addErr(row.getString("txlogisticid"), "数据表'expressVal'中,缺少圆通快递开放平台的对接信息! 发货方式: " + ordertype + ";快递公司: YTO"); continue; } Rows expresssdrRows = dbConnect.runSqlQuery("select * from expresssdr where siteid='" + siteid + "' and expresssdrid=" + rows.get(0).getLong("expresssdrid")); if (expresssdrRows.isEmpty()) { batchDeleteErr.addErr(row.getString("txlogisticid"), "未设置默认发件人信息"); continue; } if (StringUtils.isBlank(row.getString("ordertype"))) { batchDeleteErr.addErr(row.getString("txlogisticid"), "未设置快递付款类型"); continue; } String url_mailno = expressvalRows.get(0).getString("url_mailno"); String clientId = expressvalRows.get(0).getString("clientid"); String partnerID = expressvalRows.get(0).getString("partnerid"); Person sender = new Person(expresssdrRows.get(0).getString("name"), expresssdrRows.get(0).getString("postcode"), expresssdrRows.get(0).getString("phonenumber"), expresssdrRows.get(0).getString("mobile"), expresssdrRows.get(0).getString("province"), expresssdrRows.get(0).getString("city") + "," + expresssdrRows.get(0).getString("county"), expresssdrRows.get(0).getString("address")); YTOExpressMailNoClient client = new YTOExpressMailNoClient(url_mailno, clientId, partnerID, sender); YTORequestOrder requestOrder = client.newYTORequestOrder(); //tradeNo,orderType,serviceType,remark //rcv_name,rcv_postCode,rcv_phone,rcv_mobile,rcv_prov,rcv_city,rcv_address //itemName,number,itemsweight requestOrder.setTxLogisticID(row.getString("txlogisticid")); requestOrder.setTradeNo(row.getString("tradeno")); requestOrder.setOrderType(row.getInteger("ordertype")); requestOrder.setServiceType(row.getInteger("servicetype")); requestOrder.setRemark(row.getString("remarks")); //if(requestOrder.getOrderType()==0 || requestOrder.getOrderType()==4) { if (requestOrder.getOrderType() == 4) { requestOrder.setAgencyFund(row.getDouble("agencyfund")); } Person receiver = new Person(row.getString("rcv_name"), row.getString("rcv_postcode"), row.getString("rcv_phone"), row.getString("rcv_mobile"), row.getString("rcv_prov"), row.getString("rcv_city") + "," + row.getString("rcv_county"), row.getString("rcv_address")); requestOrder.setReceiver(receiver); Item item = new Item(row.getString("itemname"), row.getInteger("number"), row.getDouble("itemsweight")); requestOrder.setItems(new Item[]{item}); //Map resultMap = new HashMap<>(); Map resultMap= client.sendRequestForMailNo(requestOrder); if (resultMap != null) { String code = (String) resultMap.get("code"); if ("200".equals(code)) {//成功 UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "expressform"); updateSQL.setUniqueid(row.getLong("expressformid")); updateSQL.setSiteid(siteid); updateSQL.setDateValue("pushdate"); updateSQL.setValue("code", code); updateSQL.setValue("mailno", (String) resultMap.get("mailNo")); Map distributeInfoMap = (Map) resultMap.get("distributeInfo"); updateSQL.setValue("shortAddress", distributeInfoMap.get("shortAddress")); updateSQL.setValue("consigneebranchcode", distributeInfoMap.get("consigneeBranchCode")); updateSQL.setValue("packagecentercode", distributeInfoMap.get("packageCenterCode")); updateSQL.setValue("packagecentername", distributeInfoMap.get("packageCenterName")); updateSQL.setValue("success", 1); updateSQL.setValue("changeby", username); updateSQL.setDateValue("changedate"); sqlList.add(updateSQL.getSQL()); } else {//失败 UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "expressform"); updateSQL.setUniqueid(row.getLong("expressformid")); updateSQL.setSiteid(siteid); updateSQL.setDateValue("pushdate"); updateSQL.setValue("code", code); updateSQL.setValue("reason", (String) resultMap.get("reason")); updateSQL.setValue("success", 0); updateSQL.setValue("changeby", username); updateSQL.setDateValue("changedate"); sqlList.add(updateSQL.getSQL()); } } else { batchDeleteErr.addErr(row.getString("txlogisticid"), "请求电子面单接口超时"); continue; } } dbConnect.runSqlUpdate(sqlList); HashMap result=new HashMap<>(); String success= "共申请"+expressformids.size()+"张圆通电子面单号,其中失败"+ batchDeleteErr.size()+"张!"; result.put("success",success); result.put("errinfo",batchDeleteErr.getReturnObject()); return getSucReturnObject().setData(result).toString(); } /** * 批量打印(圆通) * * @return */ @API(title = "批量打印(圆通)", apiversion = R.ID2025101815291401.v1.class) public String BatchPrint_YTO() throws YosException { JSONArray expressformids = content.getJSONArray("expressformids"); List expressformidList = expressformids.toJavaList(Long.class); String[] fbillnums = new String[expressformidList.size()]; for (int i = 0; i < expressformidList.size(); i++) { Row expressForm = dbConnect.runSqlQuery(0, "select * from expressform where expressformid=" + expressformidList.get(i)); if (!expressForm.getBoolean("success") || expressForm.getString("mailNo").isEmpty()) { return getErrReturnObject().setErrMsg("快递信息单'" + expressForm.getString("txlogisticid") + "/" + expressForm.getString("rcv_name") + "',未成功申请圆通电子面单!").toString(); } fbillnums[i] = expressForm.getString("mailNo"); } String scheme = request.getHttpServletRequest().getScheme(); String serverName = request.getHttpServletRequest().getServerName(); int port = request.getHttpServletRequest().getServerPort(); String hostName = scheme + "://" + serverName + ":" + port; QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sys_resources", "url", "siteid,type", "sys_resourcesid", "contentType"); querySQL.setWhere("resourcename", "yuantong3_batch"); Row resourcesRow = querySQL.query().get(0); String url = ""; if (resourcesRow != null && resourcesRow.getString("type").equals("固定网址")) { url = resourcesRow.getString("url"); } if (resourcesRow != null && resourcesRow.getString("type").equals("附件")) { Rows attmap = Attachment.get(this, "sys_resources", resourcesRow.getLong("sys_resourcesid")); url = attmap.getLastRow().getString("url"); } Hashtable grMap = new Hashtable<>(3); grMap.put("baseurl", ""); grMap.put("report", url); grMap.put("data", hostName + "/yos/rest/yt/getExpressInfo?fbilltype=expressbill&username=" + username + "&fbillnum=" + StringUtils.join(fbillnums, "&fbillnum=")); return getSucReturnObject().setData(grMap).toString(); } }