123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606 |
- package restcontroller.webmanage.sale.logistics;
- import beans.datacontrllog.DataContrlLog;
- import beans.order.Order;
- import beans.parameter.Parameter;
- import beans.remind.Remind;
- import beans.salearea.SaleArea;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import com.huaweicloud.sdk.meeting.v1.model.SearchQosHistoryMeetingsRequest;
- import common.Controller;
- import common.YosException;
- import common.annotation.API;
- import common.annotation.CACHEING;
- import common.annotation.CACHEING_CLEAN;
- import common.data.*;
- import restcontroller.R;
- import restcontroller.sale.promotion.promotion;
- import utility.WzwlDocking;
- import java.io.UnsupportedEncodingException;
- import java.math.BigDecimal;
- import java.security.NoSuchAlgorithmException;
- import java.util.ArrayList;
- import static restcontroller.webmanage.sale.logistics.LSALogisticsHelper.*;
- /**
- * 物流单(LSA)
- */
- public class LSALogistics extends Controller {
- /**
- * 构造函数
- *
- * @param content
- */
- public LSALogistics(JSONObject content) throws YosException {
- super(content);
- }
- @API(title = "新增或更新", apiversion = R.ID20230719165802.v1.class)
- @CACHEING_CLEAN(apiClass = {LSALogistics.class})
- public String insertOrUpdate() throws YosException, UnsupportedEncodingException, NoSuchAlgorithmException {
- //物流单ID
- Long sa_logisticsid = content.getLongValue("sa_logisticsid");
- //经销商编号(选择经销商)
- Long sys_enterpriseid = content.getLong("sys_enterpriseid");
- //出入库表货品明细
- JSONArray items = content.getJSONArray("items");
- String billdate = content.getStringValue("billdate");
- if(billdate.equals("")){
- return getErrReturnObject().setErrMsg("单据日期不能为空").toString();
- }
- ArrayList<String> sqlList = new ArrayList<>();
- if (sys_enterpriseid <= 0 || isEnterpriseEmpty(this)) {
- return getErrReturnObject().setErrMsg("未选择企业").toString();
- }
- Rows rows = LSALogisticsHelper.getLogisticsRows(this);
- if (sa_logisticsid <= 0 || rows.isEmpty()) {
- sa_logisticsid = createTableID("sa_logistics");
- sqlList.add(insert(this, sa_logisticsid).getSQL());
- sqlList.add(DataContrlLog.createLog(this, "sa_logistics", sa_logisticsid, "新增", "物流单-新增:" + sa_logisticsid).getSQL());
- content.put("sa_logisticsid", sa_logisticsid);
- } else {
- if (!rows.get(0).getString("status").equals("新建")) {
- return getErrReturnObject().setErrMsg("该物流单为非新建状态,无法更改").toString();
- }
- sqlList.add(update(this, sa_logisticsid).getSQL());
- sqlList.add(DataContrlLog.createLog(this, "sa_logistics", sa_logisticsid, "更新", "物流单-更新:" + sa_logisticsid).getSQL());
- }
- //更新送货列表
- ArrayList<Long> st_stockbill_itemsids = new ArrayList<>();
- for (Object obj : items) {
- JSONObject object = (JSONObject) obj;
- Long st_stockbill_itemsid = object.getLongValue("st_stockbill_itemsid");
- BigDecimal qty = object.getBigDecimalValue("qty");
- if (isStockbillItemsEmpty(this, st_stockbill_itemsid)) {
- System.err.println("出库单不存在");
- return getErrReturnObject().setErrMsg("出库单不存在").toString();
- }
- if (isOut(this, st_stockbill_itemsid, qty)) {
- return getErrReturnObject().setErrMsg("超出最大可送货数量").toString();
- }
- if (isLogisticsItemEmpty(this, st_stockbill_itemsid)) {
- sqlList.add(insertLogisticsItem(this, object).getSQL());
- } else {
- sqlList.add(updateLogisticsItem(this, object).getSQL());
- }
- st_stockbill_itemsids.add(st_stockbill_itemsid);
- }
- dbConnect.runSqlUpdate(sqlList);
- //删除送货
- if (st_stockbill_itemsids.size() > 0) {
- deleteLogisticsItem(this, st_stockbill_itemsids);
- }
- return detail();
- }
- @API(title = "添加送货明细", apiversion = R.ID20230720141602.v1.class)
- @CACHEING_CLEAN(apiClass = {LSALogistics.class})
- public String addMX() throws YosException {
- //物流单ID
- Long sa_logisticsid = content.getLongValue("sa_logisticsid");
- //出入库表货品明细
- JSONArray items = content.getJSONArray("items");
- ArrayList<String> sqlList = new ArrayList<>();
- for (Object obj : items) {
- JSONObject object = (JSONObject) obj;
- Long st_stockbill_itemsid = object.getLongValue("st_stockbill_itemsid");
- BigDecimal qty = object.getBigDecimalValue("qty");
- if (isStockbillItemsEmpty(this, st_stockbill_itemsid)) {
- System.err.println("出库单不存在");
- return getErrReturnObject().setErrMsg("出库单不存在").toString();
- }
- if (isOut(this, st_stockbill_itemsid, qty)) {
- return getErrReturnObject().setErrMsg("超出最大可送货数量").toString();
- }
- if (isLogisticsItemEmpty(this, st_stockbill_itemsid)) {
- sqlList.add(insertLogisticsItem(this, object).getSQL());
- } else {
- sqlList.add(updateLogisticsItem(this, object).getSQL());
- }
- }
- dbConnect.runSqlUpdate(sqlList);
- return getSucReturnObject().toString();
- }
- @API(title = "删除送货明细", apiversion = R.ID20230720141902.v1.class)
- @CACHEING_CLEAN(apiClass = {LSALogistics.class})
- public String delete() throws YosException {
- Long sa_logisticsid = content.getLongValue("sa_logisticsid");
- Rows rows = LSALogisticsHelper.getLogisticsRows(this);
- if (rows.isEmpty()) {
- return getErrReturnObject().setErrMsg("数据不存在").toString();
- }
- if (!"新建".equals(rows.get(0).getString("status"))) {
- return getErrReturnObject().setErrMsg("非新建状态无法删除").toString();
- }
- JSONArray sa_logistics_itemsids = content.getJSONArray("sa_logistics_itemsids");
- String sql = "DELETE from sa_logistics_items where sa_logistics_itemsid in " + sa_logistics_itemsids + " and siteid='" + siteid + "'";
- sql = sql.replace("[", "(").replace("]", ")");
- dbConnect.runSqlUpdate(sql);
- return getSucReturnObject().toString();
- }
- @API(title = "送货明细列表", apiversion = R.ID20230720141702.v1.class)
- @CACHEING
- public String selectMXList() throws YosException {
- //物流单ID
- Long sa_logisticsid = content.getLongValue("sa_logisticsid");
- pageSorting = pageSorting.equals("''") ? "rowno" : pageSorting;
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_logistics_items");
- querySQL.setTableAlias("t1");
- querySQL.addJoinTable(JOINTYPE.left, "st_stockbill_items", "t2", "t2.st_stockbill_itemsid=t1.st_stockbill_itemsid and t2.siteid=t1.siteid",
- "rowno", "itemid", "unit", "price", "amount", "remarks");
- querySQL.addJoinTable(JOINTYPE.left, "st_stockbill", "t3", "t3.st_stockbillid =t2.st_stockbillid and t3.siteid=t2.siteid",
- "billno");
- querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t4", "t4.itemid =t2.itemid and t4.siteid=t2.siteid",
- "spec","itemno", "itemname", "model");
- querySQL.addJoinTable(JOINTYPE.left, "plm_unit", "t5", "t4.unitid = t5.unitid and t4.siteid=t5.siteid",
- "unitname");
- querySQL.addJoinTable(JOINTYPE.left, "sa_dispatch_items", "t6", "t6.sa_dispatch_itemsid=t2.sa_dispatch_itemsid and t6.siteid=t2.siteid");
- querySQL.addJoinTable(JOINTYPE.left, "sa_orderitems", "t7", "t6.sa_orderitemsid=t7.sa_orderitemsid and t6.siteid=t7.siteid");
- querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t8", "t8.sa_orderid=t7.sa_orderid and t8.siteid=t7.siteid","sonum");
- querySQL.setWhere("t1.sa_logisticsid=" + sa_logisticsid);
- querySQL.setWhere("t1.siteid='" + siteid + "'");
- querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
- Rows rows = querySQL.query();
- ArrayList<Long> ids = rows.toArrayList("itemid", new ArrayList<>());
- // 封面cover
- RowsMap coverRowsMap = getAttachmentUrl("plm_item", ids, "cover");
- for (Row row : rows) {
- Rows coverRows = coverRowsMap.get(row.getString("itemid"));
- if (coverRows.isEmpty()) {
- row.put("cover", "");
- } else {
- row.put("cover", coverRows.get(0).getString("url"));
- }
- }
- return getSucReturnObject().setData(rows).toString();
- }
- @API(title = "选择送货明细列表", apiversion = R.ID20230720141802.v1.class)
- public String selectChooseMXList() 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 (t3.itemname like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t2.billno like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t3.itemno like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t3.spec like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t3.model like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t1.remarks like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t6.sonum like '%").append(whereObject.getString("condition")).append("%')");
- }
- }
- //物流单ID
- Long sa_logisticsid = content.getLongValue("sa_logisticsid");
- Long sys_enterpriseid = content.getLongValue("sys_enterpriseid");
- pageSorting = pageSorting.equals("''") ? "t1.rowno" : pageSorting;
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "st_stockbill_items",
- "st_stockbill_itemsid","unit","amount","remarks");
- querySQL.setTableAlias("t1");
- querySQL.addJoinTable(JOINTYPE.left, "st_stockbill", "t2", "t2.st_stockbillid =t1.st_stockbillid and t2.siteid=t1.siteid",
- "billno");
- querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t3", "t3.itemid =t1.itemid and t3.siteid=t1.siteid",
- "spec","itemno", "itemname", "model");
- querySQL.addJoinTable(JOINTYPE.left, "sa_dispatch_items", "t4", "t4.sa_dispatch_itemsid = t1.sa_dispatch_itemsid AND t4.siteid = t1.siteid");
- querySQL.addJoinTable(JOINTYPE.left, "sa_orderitems", "t5", "t5.sa_orderitemsid=t4.sa_orderitemsid and t5.siteid=t4.siteid");
- querySQL.addJoinTable(JOINTYPE.left, "sa_order", "t6", "t6.sa_orderid=t5.sa_orderid and t6.siteid=t5.siteid","sonum");
- querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t7", "t7.sys_enterpriseid=t2.sys_enterpriseid and t7.siteid=t2.siteid","agentnum");
- querySQL.addQueryFields("price","t1.amount/t1.qty");
- querySQL.addQueryFields("qty","t1.qty-ifnull(t1.transportqty,0)");
- querySQL.setWhere("t1.siteid='" + siteid + "'");
- querySQL.setWhere("t2.sys_enterpriseid=" + sys_enterpriseid);
- querySQL.setWhere("t2.status='审核'");
- querySQL.setWhere("ifnull(t1.transportqty,0)<t1.qty");
- querySQL.setWhere("NOT EXISTS(SELECT 1 from sa_logistics_items WHERE sa_logisticsid=" + sa_logisticsid + " and st_stockbill_itemsid=t1.st_stockbill_itemsid)");
- querySQL.setWhere("exists(select 1 from st_stockbill_items s1 left join (select st_stockbill_itemsid,t1.siteid,sum(qty) yifaqty from sa_logistics_items t1 inner join sa_logistics t2 on t1.sa_logisticsid=t2.sa_logisticsid and t1.siteid=t2.siteid where t2.status='审核' AND t2.siteid = '"+siteid+"' group by st_stockbill_itemsid,t1.siteid) s2 on s1.st_stockbill_itemsid=s2.st_stockbill_itemsid and s1.siteid=s2.siteid where s1.qty>ifnull(s2.yifaqty,0) and s1.st_stockbill_itemsid=t1.st_stockbill_itemsid)");
- querySQL.setWhere(where.toString());
- querySQL.setPage(pageSize, pageNumber).setOrderBy(pageSorting);
- System.out.println(querySQL.getSQL());
- Rows rows = querySQL.query();
- return getSucReturnObject().setData(rows).toString();
- }
- @API(title = "物流单详情", apiversion = R.ID20230720142002.v1.class)
- @CACHEING
- public String detail() throws YosException, UnsupportedEncodingException, NoSuchAlgorithmException {
- //物流单ID
- Long sa_logisticsid = content.getLongValue("sa_logisticsid");
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_logistics");
- querySQL.setTableAlias("t1");
- querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t2.sys_enterpriseid=t1.sys_enterpriseid and t2.siteid=t1.siteid",
- "t2.enterprisename");
- querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t3.sys_enterpriseid=t2.sys_enterpriseid and t3.siteid=t2.siteid",
- "t3.agentnum");
- querySQL.addJoinTable(JOINTYPE.left, "sa_logiscomp", "t4", "t4.sa_logiscompid=t1.sa_logiscompid and t4.siteid=t1.siteid",
- "t4.kd100id","interfacetype");
- querySQL.addQueryFields("logiscomp_name", "t4.name");
- querySQL.addQueryFields("logisticsamount1","if(ifnull(t1.logisticsamount,'')='',0,t1.logisticsamount)");
- querySQL.setWhere("t1.sa_logisticsid=" + sa_logisticsid);
- querySQL.setWhere("t1.siteid='" + siteid + "'");
- Rows rows = querySQL.query();
- Row row = rows.isNotEmpty() ? rows.get(0) : new Row();
- row.putIfAbsent("billdate", "");
- row.putIfAbsent("checkdate", "");
- row.putIfAbsent("receivedate", "");
- //对接万中物流
- // if(siteid.equalsIgnoreCase("lsa")){
- WzwlDocking wzwlDocking =new WzwlDocking(siteid);
- if(!row.getString("logisticsstatus").equals("签收") && !row.get("status").equals("新建")){
- JSONObject jsonObject = wzwlDocking.queryWzwlOrderAmountExtendList(row.getString("billno"));
- System.out.println(jsonObject.getStringValue("success"));
- if(jsonObject.getStringValue("success").equals("true")){
- JSONArray data = jsonObject.getJSONArray("data");
- dbConnect.runSqlUpdate("update sa_logistics set logisticsamount="+(((JSONObject)data.get(0)).getBigDecimalValue("transportFee").compareTo(BigDecimal.ZERO)>0?((JSONObject)data.get(0)).getBigDecimalValue("transportFee"):row.getDouble("logisticsamount"))+",volume='"+(((JSONObject)data.get(0)).getBigDecimalValue("volume").compareTo(BigDecimal.ZERO)>0?((JSONObject)data.get(0)).getBigDecimalValue("volume"):row.getDouble("volume"))+"',weight='"+(((JSONObject)data.get(0)).getBigDecimalValue("weight").compareTo(BigDecimal.ZERO)>0?((JSONObject)data.get(0)).getBigDecimalValue("weight"):row.getDouble("weight"))+"' where sa_logisticsid="+sa_logisticsid);
- row.put("logisticsamount",(((JSONObject)data.get(0)).getBigDecimalValue("transportFee").compareTo(BigDecimal.ZERO)>0?((JSONObject)data.get(0)).getBigDecimalValue("transportFee"):row.getDouble("logisticsamount")));
- row.put("volume",(((JSONObject)data.get(0)).getBigDecimalValue("volume").compareTo(BigDecimal.ZERO)>0?((JSONObject)data.get(0)).getBigDecimalValue("volume"):row.getDouble("volume")));
- row.put("weight",(((JSONObject)data.get(0)).getBigDecimalValue("weight").compareTo(BigDecimal.ZERO)>0?((JSONObject)data.get(0)).getBigDecimalValue("weight"):row.getDouble("weight")));
- }
- JSONObject wzwlOrder = wzwlDocking.queryWzwlOrder(row.getString("billno"));
- if(wzwlOrder.getStringValue("success").equals("true")){
- JSONArray data = wzwlOrder.getJSONArray("data");
- dbConnect.runSqlUpdate("update sa_logistics set logisticsstatus='"+((JSONObject)data.get(0)).getStringValue("status")+"',logisticno='"+((JSONObject)data.get(0)).getStringValue("waybillNo")+"' where sa_logisticsid="+sa_logisticsid);
- row.put("logisticsstatus",((JSONObject)data.get(0)).getStringValue("status"));
- row.put("logisticno",((JSONObject)data.get(0)).getStringValue("waybillNo"));
- }
- }
- // }
- return getSucReturnObject().setData(row).toString();
- }
- @API(title = "物流单列表", apiversion = R.ID20230720142102.v1.class)
- @CACHEING
- public String selectList() 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 (t1.billno like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t1.logisticno like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t1.remarks like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t3.agentnum like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t2.enterprisename like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t4.name like '%").append(whereObject.getString("condition")).append("%')");
- }
- if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
- where.append(" and t1.billdate >='").append(whereObject.getString("begindate")).append(" 00:00:00'");
- }
- if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
- where.append(" and t1.billdate <='").append(whereObject.getString("enddate")).append(" 23:59:59'");
- }
- if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
- where.append(" and t1.status = '").append(whereObject.getString("status")).append("'");
- }
- }
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_logistics");
- querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t2.sys_enterpriseid=t1.sys_enterpriseid and t2.siteid=t1.siteid",
- "t2.enterprisename");
- querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t3.sys_enterpriseid=t2.sys_enterpriseid and t3.siteid=t2.siteid",
- "t3.agentnum");
- querySQL.addJoinTable(JOINTYPE.left, "sa_logiscomp", "t4", "t4.sa_logiscompid=t1.sa_logiscompid and t4.siteid=t1.siteid",
- "t4.kd100id");
- querySQL.addQueryFields("logiscomp_name", "t4.name");
- querySQL.setWhere("t1.siteid='" + siteid + "'");
- if (sys_enterpriseid > 0) {
- querySQL.setWhere("t1.sys_enterpriseid='" + sys_enterpriseid + "'");
- querySQL.setWhere("t1.status !='新建'");
- }
- querySQL.setWhere(where.toString());
- querySQL.setPage(pageSize,pageNumber).setOrderBy(pageSorting).setTableAlias("t1");
- Rows rows = querySQL.query();
- for (Row row : rows) {
- row.putIfAbsent("billdate", "");
- row.putIfAbsent("checkdate", "");
- row.putIfAbsent("receivedate", "");
- }
- return getSucReturnObject().setData(rows).toString();
- }
- @API(title = "物流单列表(区域经理)", apiversion = R.ID20231030093503.v1.class)
- @CACHEING
- public String selectListManager() 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 (t1.billno like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t1.logisticno like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t1.remarks like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t3.agentnum like '%").append(whereObject.getString("condition")).append("%'");
- where.append("or t2.enterprisename like '%").append(whereObject.getString("condition")).append("%')");
- }
- if (whereObject.containsKey("begindate") && !"".equals(whereObject.getString("begindate"))) {
- where.append(" and t1.billdate >='").append(whereObject.getString("begindate")).append(" 00:00:00'");
- }
- if (whereObject.containsKey("enddate") && !"".equals(whereObject.getString("enddate"))) {
- where.append(" and t1.billdate <='").append(whereObject.getString("enddate")).append(" 23:59:59'");
- }
- if (whereObject.containsKey("status") && !"".equals(whereObject.getString("status"))) {
- where.append(" and t1.status = '").append(whereObject.getString("status")).append("'");
- }
- }
- SQLFactory areasqlFactory = new SQLFactory(new promotion(content), "区域经理查询下属营销区域");
- areasqlFactory.addParameter("siteid", siteid);
- areasqlFactory.addParameter("hrid", hrid);
- Rows arearows = dbConnect.runSqlQuery(areasqlFactory);
- ArrayList<Long> arrayList =arearows.toArrayList("sa_saleareaid", new ArrayList<Long>());
- arrayList.addAll(SaleArea.getSubSaleAreaIds(this, arrayList));
- String sql = " and t1.sys_enterpriseid in (select sys_enterpriseid from sys_enterprise_tradefield where sa_saleareaid in "+arrayList+")";
- sql = sql.replace("[", "(").replace("]", ")");
- where.append(sql);
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_logistics");
- querySQL.addJoinTable(JOINTYPE.left, "sys_enterprise", "t2", "t2.sys_enterpriseid=t1.sys_enterpriseid and t2.siteid=t1.siteid",
- "t2.enterprisename");
- querySQL.addJoinTable(JOINTYPE.left, "sa_agents", "t3", "t3.sys_enterpriseid=t2.sys_enterpriseid and t3.siteid=t2.siteid",
- "t3.agentnum");
- querySQL.addJoinTable(JOINTYPE.left, "sa_logiscomp", "t4", "t4.sa_logiscompid=t1.sa_logiscompid and t4.siteid=t1.siteid",
- "t4.kd100id");
- querySQL.addQueryFields("logiscomp_name", "t4.name");
- querySQL.setWhere("t1.siteid='" + siteid + "'");
- querySQL.setWhere(where.toString());
- querySQL.setPage(pageSize,pageNumber).setOrderBy(pageSorting).setTableAlias("t1");
- Rows rows = querySQL.query();
- for (Row row : rows) {
- row.putIfAbsent("billdate", "");
- row.putIfAbsent("checkdate", "");
- row.putIfAbsent("receivedate", "");
- }
- return getSucReturnObject().setData(rows).toString();
- }
- @API(title = "收货、取消收货", apiversion = R.ID20230721104302.v1.class)
- @CACHEING_CLEAN(apiClass = {LSALogistics.class})
- public String receive() throws YosException {
- ArrayList<String> sqlList = new ArrayList<>();
- Long sa_logisticsid = content.getLong("sa_logisticsid");
- Rows rows = LSALogisticsHelper.getLogisticsRows(this);
- if (rows.isEmpty()) {
- return getErrReturnObject().setErrMsg("请选择物流单").toString();
- }
- SQLFactory sqlFactory = new SQLFactory(this, "物流单确认收货");
- if (rows.get(0).getString("status").equals("新建")) {
- return getErrReturnObject().setErrMsg("该物流单为新建状态,无法确认收货与取消收货").toString();
- } else if (rows.get(0).getString("status").equals("收货")) {
- String sql = DataContrlLog.createLog(this, "sa_logistics", sa_logisticsid, "取消收货", "物流单取消收货:" + sa_logisticsid).getSQL();
- sqlList.add(sql);
- sqlFactory = new SQLFactory(this, "物流单取消收货");
- } else {
- String sql = DataContrlLog.createLog(this, "sa_logistics", sa_logisticsid, "收货", "物流单收货:" + sa_logisticsid).getSQL();
- sqlList.add(sql);
- }
- sqlFactory.addParameter("siteid", siteid);
- sqlFactory.addParameter("sa_logisticsid", sa_logisticsid);
- sqlFactory.addParameter("userid", userid);
- sqlFactory.addParameter("username", username);
- sqlList.add(sqlFactory.getSQL());
- dbConnect.runSqlUpdate(sqlList);
- return getSucReturnObject().toString();
- }
- //TODO 审核时必填字段?
- @API(title = "审核、反审核", apiversion = R.ID20230721110502.v1.class)
- @CACHEING_CLEAN(apiversions = {R.ID20221122132804.v1.class, R.ID20221122133004.v1.class, R.ID20221114135303.v1.class, R.ID20230219093203.v1.class})
- public String checkOrUncheck() throws YosException, NoSuchAlgorithmException {
- Long sa_logisticsid = content.getLong("sa_logisticsid");
- ArrayList<String> sqlList = new ArrayList<>();
- Rows rows = LSALogisticsHelper.getLogisticsRows(this);
- if (rows.isEmpty()) {
- return getErrReturnObject().setErrMsg("请选择物流单").toString();
- }
- Row logisticsRow = rows.get(0);
- String billno = logisticsRow.getString("billno");
- String status = logisticsRow.getString("status");
- if ("收货".equals(status)) {
- return getErrReturnObject().setErrMsg("该物流单为收货状态,无法审核与反审核").toString();
- }
- SQLFactory sqlFactory = new SQLFactory(this, "物流单审核");
- if (status.equals("审核")) {
- WzwlDocking wzwlDocking =new WzwlDocking(siteid);
- JSONObject wzwlOrder = wzwlDocking.queryWzwlOrder(billno);
- System.out.println(wzwlOrder.getStringValue("success"));
- if(wzwlOrder.getStringValue("success").equals("true")){
- JSONArray data = wzwlOrder.getJSONArray("data");
- System.out.println(((JSONObject)data.get(0)).getStringValue("status"));
- if(((JSONObject)data.get(0)).getStringValue("status").equals("已签收")){
- return getErrReturnObject().setErrMsg("物流单已签收,禁止反审核!").toString();
- }
- }
- sqlFactory = new SQLFactory(this, "物流单反审核");
- sqlList.add(DataContrlLog.createLog(this, "sa_logistics", sa_logisticsid, "反审核", "反审核:" + sa_logisticsid).getSQL());
- Rows itemsrows = dbConnect.runSqlQuery("SELECT * from sa_logistics_items WHERE sa_logisticsid=" + sa_logisticsid + " and siteid='" + siteid + "'");
- for (Row item : itemsrows) {
- Long st_stockbill_itemsid = item.getLong("st_stockbill_itemsid");
- BigDecimal qty = item.getBigDecimal("qty");
- sqlList.add("UPDATE st_stockbill_items SET transportqty=ifnull(transportqty,0)-" + qty + " WHERE st_stockbill_itemsid=" + st_stockbill_itemsid + " and siteid='" + siteid + "'");
- }
- }
- if (status.equals("新建")) {
- Rows itemrows = LSALogisticsHelper.getLogisticsItemsRows(this);
- if (itemrows.isEmpty()) {
- return getErrReturnObject().setErrMsg("商品未添加禁止审核").toString();
- }
- Rows itemsrows = dbConnect.runSqlQuery("SELECT * from sa_logistics_items WHERE sa_logisticsid=" + sa_logisticsid + " and siteid='" + siteid + "'");
- for (Row item : itemsrows) {
- Long st_stockbill_itemsid = item.getLong("st_stockbill_itemsid");
- BigDecimal qty = item.getBigDecimal("qty");
- if (isOut(this, st_stockbill_itemsid, qty)) {
- return getErrReturnObject().setErrMsg("超出最大可送货数量").toString();
- }
- sqlList.add("UPDATE st_stockbill_items SET transportqty=ifnull(transportqty,0)+" + qty + " WHERE st_stockbill_itemsid=" + st_stockbill_itemsid + " and siteid='" + siteid + "'");
- }
- sqlList.add(DataContrlLog.createLog(this, "sa_logistics", sa_logisticsid, "审核", "审核:" + sa_logisticsid).getSQL());
- Rows dispatchRows = dbConnect.runSqlQuery("SELECT sa_orderid FROM st_stockbill_items t1 INNER JOIN sa_logistics_items t2 ON t2.st_stockbill_itemsid=t1.st_stockbill_itemsid AND t2.siteid=t1.siteid WHERE t2.sa_logisticsid=" + sa_logisticsid + " AND t2.siteid='" + siteid + "'");
- Long sa_orderid = 0L;
- if (dispatchRows.isNotEmpty()) {
- sa_orderid = dispatchRows.get(0).getLong("sa_orderid");
- }
- String sonum = "";
- Rows orderRows = Order.getOrderRows(this, sa_orderid);
- Long sys_enterpriseid = 0L;
- if (orderRows.isNotEmpty()) {
- sonum = orderRows.get(0).getString("sonum");
- sys_enterpriseid = orderRows.get(0).getLong("sys_enterpriseid");
- }
- sendMsg("您的订单【" + sonum + "】已发货,物流单号【" + billno + "】 !", sa_orderid, sys_enterpriseid);
- }
- sqlFactory.addParameter("userid", userid);
- sqlFactory.addParameter("username", username);
- sqlFactory.addParameter("siteid", siteid);
- sqlFactory.addParameter("sa_logisticsid", sa_logisticsid);
- sqlList.add(sqlFactory.getSQL());
- dbConnect.runSqlUpdate(sqlList);
- return getSucReturnObject().toString();
- }
- @API(title = "发送至物流", apiversion = R.ID2024101114031103.v1.class)
- public String SendToLogistics() throws YosException, NoSuchAlgorithmException, UnsupportedEncodingException {
- WzwlDocking wzwlDocking =new WzwlDocking(siteid);
- Long sa_logisticsid = content.getLong("sa_logisticsid");
- Rows rows = LSALogisticsHelper.getLogisticsRows(this);
- if (rows.isEmpty()) {
- return getErrReturnObject().setErrMsg("请选择物流单").toString();
- }
- if (!rows.get(0).getString("status").equals("审核")) {
- return getErrReturnObject().setErrMsg("该物流单为非审核状态,无法发送至物流").toString();
- }
- JSONObject wzwlOrder = wzwlDocking.queryWzwlOrder(rows.get(0).getString("billno"));
- if(wzwlOrder.getStringValue("success").equals("true")){
- JSONArray data = wzwlOrder.getJSONArray("data");
- if(((JSONObject)data.get(0)).getStringValue("status").equals("已签收")){
- return getErrReturnObject().setErrMsg("物流单已签收,无法再次发送!").toString();
- }
- }
- QuerySQL querySQL = SQLFactory.createQuerySQL(this, "sa_logistics_items");
- querySQL.setTableAlias("t1");
- querySQL.addJoinTable(JOINTYPE.left, "st_stockbill_items", "t2", "t2.st_stockbill_itemsid=t1.st_stockbill_itemsid and t2.siteid=t1.siteid",
- "rowno", "itemid", "unit", "price", "amount", "remarks");
- querySQL.addJoinTable(JOINTYPE.left, "st_stockbill", "t3", "t3.st_stockbillid =t2.st_stockbillid and t3.siteid=t2.siteid",
- "billno");
- querySQL.addJoinTable(JOINTYPE.left, "plm_item", "t4", "t4.itemid =t2.itemid and t4.siteid=t2.siteid",
- "spec","itemno", "itemname", "model");
- querySQL.setWhere("t1.sa_logisticsid=" + sa_logisticsid);
- querySQL.setWhere("t1.siteid='" + siteid + "'");
- Rows itemsrows = querySQL.query();
- String result = wzwlDocking.createWzwlOrder(rows.get(0),itemsrows,this,sa_logisticsid,content.getJSONObject("consigner"));
- if(result.equals("true")) {
- return getSucReturnObject().toString();
- }else{
- return getErrReturnObject().setErrMsg(result).toString();
- }
- }
- @API(title = "物流状态查询", apiversion = R.ID2024101114155503.v1.class)
- public String queryWzwlOrder() throws YosException, NoSuchAlgorithmException {
- WzwlDocking wzwlDocking =new WzwlDocking(siteid);
- String billno = content.getString("billno");
- JSONObject jsonObject = wzwlDocking.queryWzwlOrder(billno);
- return getSucReturnObject().setData(jsonObject).toString();
- }
- @API(title = "物流费用查询", apiversion = R.ID2024101114265803.v1.class)
- public String queryWzwlOrderAmount() throws YosException, NoSuchAlgorithmException, UnsupportedEncodingException {
- WzwlDocking wzwlDocking =new WzwlDocking(siteid);
- String billno = content.getString("billno");
- JSONObject jsonObject = wzwlDocking.queryWzwlOrderAmount(billno);
- return getSucReturnObject().setData(jsonObject).toString();
- }
- @API(title = "物流费用查询", apiversion = R.ID20241019150603.v1.class)
- public String queryWzwlOrderAmountExtendList() throws YosException, NoSuchAlgorithmException, UnsupportedEncodingException {
- WzwlDocking wzwlDocking =new WzwlDocking(siteid);
- String billno = content.getString("billno");
- JSONObject jsonObject = wzwlDocking.queryWzwlOrderAmountExtendList(billno);
- return getSucReturnObject().setData(jsonObject).toString();
- }
- public void sendMsg(String content, Long sa_orderid, Long sys_enterpriseid) throws YosException {
- ArrayList<Long> userList = getEnterpriseHrs(sys_enterpriseid).toArrayList("userid", new ArrayList<>());
- Remind remind = new Remind(this);
- remind.setTitle("物流消息");
- remind.setContent(content);
- remind.setType("应用");
- remind.setObjectid(sa_orderid);
- remind.setObjectname("sa_order");
- remind.setTouserid(userList);
- remind.createSys_message();
- }
- }
|