| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656 |
- package restcontroller.webmanage.sale.expressform;
- import beans.attachment.Attachment;
- import beans.data.BatchDeleteErr;
- import beans.datacontrllog.DataContrlLog;
- import beans.report.Report;
- 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<String> 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,txlogisticid 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());
- Rows expressform_stockbillrows = dbConnect.runSqlQuery("select * from sa_expressform_stockbill where expressformid=" + expressformid);
- for (Row row : expressform_stockbillrows) {
- sqlList.add("update st_stockbill set txlogisticid='" + rows.get(0).getString("txlogisticid") + "',mailno='" + mailno + "' where st_stockbillid=" + row.getLong("st_stockbillid"));
- }
- 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();
- ArrayList<Long> ids = rows.toArrayList("expressformid", new ArrayList<>());
- HashMap<Long, Integer> reportMap = Report.getViewCount(this, "expressform", ids);
- for (Row row : rows) {
- if (reportMap.containsKey(row.getLong("expressformid"))) {
- row.put("printcount", reportMap.get(row.getLong("expressformid")));
- }
- row.putIfAbsent("printcount", 0);
- }
- 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<String> 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.addJoinTable(JOINTYPE.left, "sys_department", "t5", "t5.departmentid = t1.departmentid AND t1.siteid = t5.siteid", "depname");
- 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<String> sqlList = new ArrayList<>();
- Rows rows = dbConnect.runSqlQuery("select * from expressform where siteid='" + siteid + "' and expressformid=" + expressformid);
- if (rows.isEmpty()) {
- return getErrReturnObject().setErrMsg("该快递信息不存在").toString();
- }
- if (!rows.get(0).getString("status").equals("新建")) {
- return getErrReturnObject().setErrMsg("非新建状态下不能操作").toString();
- }
- if (rows.get(0).getLong("sys_enterpriseid") == 0) {
- return getErrReturnObject().setErrMsg("必须指定经销商编号,才能关联销售出库单").toString();
- }
- if (st_stockbillids.size() == 0) {
- return getErrReturnObject().setErrMsg("未选中任何销售出库单!").toString();
- }
- String sql = "select * from st_stockbill where siteid='" + siteid + "' and st_stockbillid in" + st_stockbillids.toJSONString();
- sql = sql.replace("[", "(").replace("]", ")");
- Rows stockbillrows = dbConnect.runSqlQuery(sql);
- for (Row row : stockbillrows) {
- if (StringUtils.isNotBlank(row.getString("txlogisticid"))) {
- //return getErrReturnObject().setErrMsg("销售出库单" + row.getString("billno") + ",已关联快递信息单!,不得重复关联!").toString();
- }
- 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<String> sqlList = new ArrayList<>();
- Rows rows = dbConnect.runSqlQuery("select * from expressform where siteid='" + siteid + "' and expressformid=" + expressformid);
- if (rows.isEmpty()) {
- return getErrReturnObject().setErrMsg("该快递信息不存在").toString();
- }
- if (!rows.get(0).getString("status").equals("新建")) {
- return getErrReturnObject().setErrMsg("非新建状态下不能操作").toString();
- }
- if (st_stockbillids.size() == 0) {
- return getErrReturnObject().setErrMsg("未选中任何销售出库单!").toString();
- }
- //sqlList.add("update st_stockbill set txlogisticid='',mailno='' where st_stockbillid in" + st_stockbillids.toJSONString().replace("[", "(").replace("]", ")"));
- 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<String> sqlList = new ArrayList<>();
- UpdateSQL updateSQL = SQLFactory.createUpdateSQL(this, "expressform");
- updateSQL.setUniqueid(expressformid);
- updateSQL.setSiteid(siteid);
- updateSQL.setValue("status", ischeck ? "审核" : "新建");
- updateSQL.setValue("checkby", ischeck ? username : "null");
- if (ischeck) {
- updateSQL.setDateValue("checkdate");
- } else {
- updateSQL.setValue("checkdate", "null");
- }
- sqlList.add(updateSQL.getSQL());
- dbConnect.runSqlUpdate(sqlList);
- return getSucReturnObject().toString();
- }
- @API(title = "关闭快递信息单", apiversion = R.ID2025080711325203.v1.class)
- @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class})
- public String close() throws YosException {
- ArrayList<String> sqlList = new ArrayList<>();
- String txlogisticid = content.getString("txlogisticid");
- Long expressformid = content.getLong("expressformid");
- Rows stockbillrows = dbConnect.runSqlQuery("select * from st_stockbill where txlogisticid='" + txlogisticid + "' and siteid='" + siteid + "'");
- Rows rows = dbConnect.runSqlQuery("select * from expressform where siteid='" + siteid + "' and expressformid=" + expressformid);
- if (rows.isEmpty()) {
- return getErrReturnObject().setErrMsg("该快递信息不存在").toString();
- }
- if (!rows.get(0).getString("status").equals("审核")) {
- return getErrReturnObject().setErrMsg("非审核状态下不能关闭").toString();
- }
- if ((!rows.get(0).getBoolean("success")) && stockbillrows.size() == 0) {
- return getErrReturnObject().setErrMsg("该快递信息单未生成电子面单,且未关联销售出库单,直接删除即可").toString();
- }
- for (Row row : stockbillrows) {
- sqlList.add("update st_stockbill set txlogisticid='',mailno='' where st_stockbillid=" + row.getLong("st_stockbillid"));
- }
- sqlList.add("update expressform set status='关闭' where expressformid=" + expressformid);
- dbConnect.runSqlUpdate(sqlList);
- return getSucReturnObject().toString();
- }
- @API(title = "查询快递发件人", apiversion = R.ID2025080713343803.v1.class)
- public String querysendperson() throws YosException {
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "expresssdr", "*");
- querySQL.setTableAlias("t1");
- querySQL.setWhere("t1.siteid", siteid);
- querySQL.setPage(pageSize, pageNumber);
- Rows rows = querySQL.query();
- return getSucReturnObject().setData(rows).toString();
- }
- /**
- * 向圆通电子面单申请接口发送请求,申请圆通电子面单号
- *
- * @return
- * @throws YosException
- */
- @API(title = "申请圆通电子面单号", apiversion = R.ID2025080714245303.v1.class)
- @CACHEING_CLEAN(apiClass = {expressform.class, stockbill.class})
- public String applyMailNo_YTO() throws YosException {
- JSONArray expressformids = content.getJSONArray("expressformids");
- ArrayList<String> sqlList = new ArrayList<>();
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "expressform", "*");
- querySQL.addJoinTable(JOINTYPE.left, "sv_agents", "t2", " t1.sys_enterpriseid = t2.sys_enterpriseid and t1.siteid = t2.siteid", "agentnum", "abbreviation");
- 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"), row.getString("agentnum"), row.getString("abbreviation"), "该快递信息单已成功申请电子面单");
- continue;
- } else if (StringUtils.isNotBlank(row.getString("mailno"))) {
- batchDeleteErr.addErr(row.getString("txlogisticid"), row.getString("agentnum"), row.getString("abbreviation"), "该快递信息单已有快递面单单号,不需要重复申请!");
- continue;
- } else if ("关闭".equals(row.getString("status"))) {
- batchDeleteErr.addErr(row.getString("txlogisticid"), row.getString("agentnum"), row.getString("abbreviation"), "该快递信息单已关闭,不能申请电子面单!");
- continue;
- } else if (!"YTO".equalsIgnoreCase(row.getString("logisticproviderid"))) {
- batchDeleteErr.addErr(row.getString("txlogisticid"), row.getString("agentnum"), row.getString("abbreviation"), "目前只支持申请圆通的电子面单");
- 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"), row.getString("agentnum"), row.getString("abbreviation"), "数据表'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"), row.getString("agentnum"), row.getString("abbreviation"), "未设置默认发件人信息");
- continue;
- }
- if (StringUtils.isBlank(row.getString("ordertype"))) {
- batchDeleteErr.addErr(row.getString("txlogisticid"), row.getString("agentnum"), row.getString("abbreviation"), "未设置快递付款类型");
- 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<String, Object> resultMap = new HashMap<>();
- Map<String, Object> 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<String, String> distributeInfoMap = (Map<String, String>) 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");
- Rows expressform_stockbillrows = dbConnect.runSqlQuery("select * from sa_expressform_stockbill where expressformid=" + row.getLong("expressformid"));
- for (Row row1 : expressform_stockbillrows) {
- sqlList.add("update st_stockbill set txlogisticid='" + row.getString("txlogisticid") + "',mailno='" + (String) resultMap.get("mailNo") + "' where st_stockbillid=" + row1.getLong("st_stockbillid"));
- }
- 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());
- batchDeleteErr.addErr(row.getString("txlogisticid"), row.getString("agentnum"), row.getString("abbreviation"), (String) resultMap.get("reason"));
- continue;
- }
- } else {
- batchDeleteErr.addErr(row.getString("txlogisticid"), row.getString("agentnum"), row.getString("abbreviation"), "请求电子面单接口超时");
- continue;
- }
- }
- dbConnect.runSqlUpdate(sqlList);
- HashMap<String, Object> 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<Long> 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<String, String> 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();
- }
- }
|