From fbe6d5d0437e5e0b4bb8101d14ac9832298f42a3 Mon Sep 17 00:00:00 2001 From: ljw Date: Thu, 5 Sep 2024 22:17:50 +0800 Subject: [PATCH] =?UTF-8?q?=E9=85=8D=E4=BB=B6=E5=8F=91=E8=B4=A7=E6=98=8E?= =?UTF-8?q?=E7=BB=86=E8=A1=A8=EF=BC=88=E6=9C=AA=E5=8F=91=E8=B4=A7=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SparepartsNotShippedPlugin.java | 274 ++++++++++++++++++ src/main/java/kd/cosmic/Application.java | 1 - 2 files changed, 274 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java diff --git a/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java new file mode 100644 index 00000000..7d69ee7e --- /dev/null +++ b/src/main/java/com/yem/rf/salescommission/SparepartsNotShippedPlugin.java @@ -0,0 +1,274 @@ +package com.yem.rf.salescommission; + +import com.yem.wm.utils.RptUtil; +import com.yem.wm.utils.YEM; +import kd.bos.algo.DataSet; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.entity.report.AbstractReportListDataPlugin; +import kd.bos.entity.report.FilterInfo; +import kd.bos.entity.report.ReportQueryParam; +import kd.bos.orm.ORM; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; + +import java.util.*; + +import static com.yem.rf.utils.RFUtils.getBaseQFilter; +import static kd.fi.er.report.query.TripOrderRpt.algoKey; + +/** + * @author ljw + * @date 2024/9/5 16:06 + * @description SparepartsNotShippedPlugin + */ +public class SparepartsNotShippedPlugin extends AbstractReportListDataPlugin { + @Override + public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable { + DataSet resDataSet; + DataSet yemEsSalesorder = yemEsSalesorder(); + DataSet yemEsStoragetrans = yemEsStoragetrans(); + DataSet yemImEncasement = yemImEncasement(); + DataSet yemGathering = yemGathering(); + DataSet yemShippingdetails = yemShippingdetails(); + resDataSet = yemEsSalesorder.leftJoin(yemEsStoragetrans).on("queryDeliverNoticeid", "yem_corebillid").select(RptUtil.getDataSetFiledAlias(yemEsSalesorder), RptUtil.getDataSetFiledAlias(yemEsStoragetrans)).finish(); + resDataSet = resDataSet.leftJoin(yemImEncasement).on("queryDeliverNoticeid", "encasementcorebillid").select(RptUtil.getDataSetFiledAlias(resDataSet), RptUtil.getDataSetFiledAlias(yemImEncasement)).finish(); + resDataSet = resDataSet.leftJoin(yemGathering).on("queryDeliverNoticeid", "yem_titleid").select(RptUtil.getDataSetFiledAlias(resDataSet), RptUtil.getDataSetFiledAlias(yemGathering)).finish(); + resDataSet = resDataSet.leftJoin(yemShippingdetails).on("queryDeliverNoticeid", "yemShippingdetailsyem_sourcebillid").select(RptUtil.getDataSetFiledAlias(resDataSet), RptUtil.getDataSetFiledAlias(yemShippingdetails)).finish(); + resDataSet = resDataSet.distinct(); + resDataSet = RptUtil.zeroNullNums(resDataSet); + DataSet selected = resDataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(resDataSet)) + + ",(yem_offeramounts-yem_theamountpaid) yem_theamountowed" + + ",CASE WHEN (yem_contractamount = yem_salcontractclaamt) THEN paymenttime ELSE null END yem_bizdate"); + selected = selected.removeFields("paymenttime"); + FilterInfo filter = reportQueryParam.getFilter(); + String yemContract = filter.getString("yem_billnos"); + DynamicObject yemClient = filter.getDynamicObject("yem_clientname"); + DynamicObjectCollection yem_bd_producttype = filter.getDynamicObjectCollection("yem_bd_producttype"); + StringBuilder sb = new StringBuilder(); + DataSet result = selected.where("yem_billno != ''"); + sb.append("yem_billno != ''"); + if (YEM.isNotEmpty(yemContract)) { + sb.append(" AND delivernoticebillno like '").append("%").append(yemContract).append("%").append("'"); + } + if (YEM.isNotEmpty(yemClient)) { + sb.append(" AND yem_client = ").append("'" + yemClient.getString("name") + "'"); + } + if (YEM.isNotEmpty(yem_bd_producttype)){ + List names = new ArrayList<>(); + for (DynamicObject dynamicObject : yem_bd_producttype) { + String name = dynamicObject.getString("name"); + names.add(name); + } + Map map = new HashMap<>(); + map.put("var",names); + result = result.filter("yem_bd_products in var",map); + + } + DataSet where = result.where(sb.toString()); + return where.distinct(); + } + + /** + * 发运明细单 + * + * @return + */ + private DataSet yemShippingdetails() { + + QFilter qFilter = getBaseQFilter(); + List selectfields = new ArrayList<>(); + selectfields.add("yem_iswithaccessories yem_boardaccessor"); + selectfields.add("yem_transportstyle.name yem_shippingmethod"); + selectfields.add("yem_sourcebillid yemShippingdetailsyem_sourcebillid"); + DataSet yemShippingdetails = ORM.create().queryDataSet(algoKey, "yem_shippingdetails", String.join(",", selectfields), qFilter.toArray()); + yemShippingdetails = yemShippingdetails.select(String.join(",", RptUtil.getDataSetFiledAlias(yemShippingdetails)) + + ",CASE WHEN yem_boardaccessor = 'A' THEN '是' ELSE '否' END yem_boardaccessory"); + yemShippingdetails = yemShippingdetails + .groupBy(new String[]{"yemShippingdetailsyem_sourcebillid"}) + .groupConcat("yem_boardaccessory", "yem_boardaccessory", ";") + .groupConcat("yem_shippingmethod", "yem_shippingmethod", ";") + .finish(); + return yemShippingdetails; + } + + /** + * 收款单金额对比 + * + * @return + */ + private DataSet yemGathering() { + QFilter qFilter = getBaseQFilter(new String[]{"B", "C"}); + List selectfields = new ArrayList<>(); + selectfields.add("yem_receiptdetail.yem_claimdetail.yem_salcontractno.id yem_titleid");//收款单的合同号id + selectfields.add("yem_receiptdetail.yem_claimdetail.yem_salcontractclaamt yem_salcontractclaamt");//收款单的合同金额 + DataSet yemShippingdetails = ORM.create().queryDataSet(algoKey, "yem_gathering", String.join(",", selectfields), qFilter.toArray()); + yemShippingdetails = yemShippingdetails.groupBy(new String[]{"yem_titleid"}) + .sum("yem_salcontractclaamt") + .finish(); + yemShippingdetails = getYemShippingdetails(qFilter, yemShippingdetails); + return yemShippingdetails; + } + + /** + * 收款单认领时间 + * + * @param qFilter + * @param yemShippingdetails + * @return + */ + private static DataSet getYemShippingdetails(QFilter qFilter, DataSet yemShippingdetails) { + List selectfield = new ArrayList<>(); + selectfield.add("yem_receiptdetail.yem_claimdetail.yem_salcontractno.id yem_salcontractnoid");//收款单的合同号id + selectfield.add("yem_bizdate paymenttimes");// + DataSet yemShippingdetail = ORM.create().queryDataSet(algoKey, "yem_gathering", String.join(",", selectfield), qFilter.toArray()); + yemShippingdetail = yemShippingdetail.groupBy(new String[]{"yem_salcontractnoid"}).max("paymenttimes").finish(); + yemShippingdetail = yemShippingdetail.addField("TO_CHAR(paymenttimes, 'yyyy-MM-dd') paymenttime","paymenttime"); + yemShippingdetails = yemShippingdetail.leftJoin(yemShippingdetails) + .on("yem_salcontractnoid", "yem_titleid") + .select(RptUtil.getDataSetFiledAlias(yemShippingdetail), RptUtil.getDataSetFiledAlias(yemShippingdetails)) + .finish(); + DataSet claimedAmt = queryGathering_ClaimedAmt(); + yemShippingdetails = yemShippingdetails.leftJoin(claimedAmt).on("yem_salcontractnoid","salesorderid") + .select(RptUtil.getDataSetFiledAlias(yemShippingdetails), RptUtil.getDataSetFiledAlias(claimedAmt)).finish(); + return yemShippingdetails; + } + + /** + * 查询合同各个款项性质的已认领金额合计 + * + * @return + */ + private static DataSet queryGathering_ClaimedAmt() { + QFilter qFilter = getBaseQFilter(new String[]{"B", "C"}); + List selectfields = new ArrayList<>(); + selectfields.add("yem_receiptdetail.yem_claimdetail.yem_salcontractno.id salesorderid"); + selectfields.add("yem_receiptdetail.yem_claimdetail.yem_claimamt yem_theamountpaid");//收款认领金额 + DataSet dataSet = ORM.create().queryDataSet(algoKey, "yem_gathering", String.join(",", selectfields), qFilter.toArray()); + dataSet = dataSet + .groupBy(new String[]{"salesorderid"}) + .sum("yem_theamountpaid") + .finish(); + return dataSet; + } + + /** + * 装箱单 + * + * @return + */ + private DataSet yemImEncasement() { + QFilter qFilter = getBaseQFilter(); + List selectfields = new ArrayList<>(); + selectfields.add("yem_corebillid encasementcorebillid"); + selectfields.add("yem_completionstatuspj yem_completionstatuspj"); + DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_im_encasement", String.join(",", selectfields), qFilter.toArray()); + return yemEsSalesorder; + } + + /** + * 订舱通知单 + * + * @return + */ + private DataSet yemEsStoragetrans() { + QFilter qFilter = getBaseQFilter(); + List selectfields = new ArrayList<>(); + selectfields.add("yem_corebillid yem_corebillid"); + selectfields.add("yem_origcurrepremium yem_origcurrepremium"); + DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_es_storagetrans", String.join(",", selectfields), qFilter.toArray()); + yemEsSalesorder = yemEsSalesorder.groupBy(new String[]{"yem_corebillid"}).sum("yem_origcurrepremium").finish(); + return yemEsSalesorder; + } + + /** + * 外销合同 + * + * @return + */ + private DataSet yemEsSalesorder() { + QFilter qFilter = getBaseQFilter(); + qFilter.and("yem_es_materialinfo.yem_businesssort", QCP.equals, "P"); + List selectfields = new ArrayList<>(); + selectfields.add("id queryDeliverNoticeid"); + selectfields.add("yem_operator yem_salesman"); + selectfields.add("yem_billtype.name yem_billtype"); + selectfields.add("billno yem_billno"); + selectfields.add("yem_customer yem_customer"); + selectfields.add("yem_priceitem yem_priceitem"); + selectfields.add("yem_offeramount yem_offeramount"); + selectfields.add("yem_offeramount yem_offeramounts"); + selectfields.add("yem_interestamt yem_interestamt"); + selectfields.add("yem_creditamt yem_creditamt"); + selectfields.add("yem_fundpoolamt yem_fundpoolamt"); + selectfields.add("yem_premiumamt yem_premiumamt"); + selectfields.add("yem_customer.name yem_client"); + selectfields.add("yem_seafreight yem_seafreight"); + selectfields.add("yem_landcarrycost yem_landcarrycost"); + selectfields.add("yem_airliftcost yem_airliftcost"); + selectfields.add("yem_expresscost yem_expresscost"); + selectfields.add("yem_offeramount yem_contractamount"); + selectfields.add("yem_shipports yem_shipports"); + selectfields.add("yem_destports yem_destports"); + selectfields.add("yem_clientcountry yem_clientcountry"); + selectfields.add("TO_CHAR(yem_acshipdate, 'yyyy-MM-dd') yem_acshipdate"); + selectfields.add("yem_reccondition yem_reccondition"); + selectfields.add("yem_currency.name yem_currency"); + selectfields.add("yem_companyname yem_companyname"); + selectfields.add("yem_bd_products.name yem_bd_products"); + DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", selectfields), qFilter.toArray()); + yemEsSalesorder = yemEsSalesorder.distinct(); + yemEsSalesorder = yemEsSalesorder.select(String.join(",", RptUtil.getDataSetFiledAlias(yemEsSalesorder)) + + ",yem_seafreight+yem_landcarrycost+yem_airliftcost+yem_expresscost yem_freight"); + DataSet rightDataSet = yemEsSalesorders(); + yemEsSalesorder = yemEsSalesorder.leftJoin(rightDataSet).on("queryDeliverNoticeid", "Noticeid") + .select(RptUtil.getDataSetFiledAlias(yemEsSalesorder), RptUtil.getDataSetFiledAlias(rightDataSet)).finish(); + DataSet yemPlaceexamine = yemPlaceexamine(); + yemEsSalesorder = yemEsSalesorder.leftJoin(yemPlaceexamine).on("queryDeliverNoticeid","yem_sourcebillid") + .select(RptUtil.getDataSetFiledAlias(yemEsSalesorder), RptUtil.getDataSetFiledAlias(yemPlaceexamine)).finish(); + DataSet yemEsDelivernotice = yemEsDelivernotice(); + yemEsSalesorder = yemEsSalesorder.leftJoin(yemEsDelivernotice).on("queryDeliverNoticeid","delivernoticecorebillid") + .select(RptUtil.getDataSetFiledAlias(yemEsSalesorder), RptUtil.getDataSetFiledAlias(yemEsDelivernotice)).finish(); + yemEsSalesorder = yemEsSalesorder.where("billstatus = 'B' OR billstatus = 'C'"); + yemEsSalesorder = yemEsSalesorder.where("delivernoticebillstatus != 'C'"); + yemEsSalesorder = yemEsSalesorder.distinct(); + return yemEsSalesorder; + } + + private DataSet yemEsDelivernotice() { + QFilter qFilter = getBaseQFilter(new String[]{"A","B"}); + List selectfields = new ArrayList<>(); + selectfields.add("yem_corebillid delivernoticecorebillid"); + selectfields.add("billstatus delivernoticebillstatus"); + selectfields.add("billno delivernoticebillno"); + selectfields.add("TO_CHAR(auditdate, 'yyyy-MM-dd') yem_shipdate"); + DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_es_delivernotice", String.join(",", selectfields), qFilter.toArray()); + return yemEsSalesorder; + } + + private DataSet yemPlaceexamine() { + QFilter qFilter = getBaseQFilter(new String[]{"B","C"}); + List selectfields = new ArrayList<>(); + selectfields.add("yem_sourcebillid yem_sourcebillid"); + selectfields.add("billstatus billstatus"); + DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_placeexamine", String.join(",", selectfields), qFilter.toArray()); + return yemEsSalesorder; + } + + /** + * 外销合同 + * + * @return + */ + private DataSet yemEsSalesorders() { + QFilter qFilter = getBaseQFilter(); + qFilter.and("yem_es_materialinfo.yem_businesssort", QCP.equals, "P"); + List selectfields = new ArrayList<>(); + selectfields.add("id Noticeid"); + selectfields.add("yem_es_materialinfo.yem_qty yem_qty"); + DataSet yemEsSalesorder = ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", selectfields), qFilter.toArray()); + yemEsSalesorder = yemEsSalesorder.groupBy(new String[]{"Noticeid"}).sum("yem_qty").finish(); + return yemEsSalesorder; + } + +} diff --git a/src/main/java/kd/cosmic/Application.java b/src/main/java/kd/cosmic/Application.java index 8160dbf2..a7467d8b 100644 --- a/src/main/java/kd/cosmic/Application.java +++ b/src/main/java/kd/cosmic/Application.java @@ -24,7 +24,6 @@ public class Application { cosmic.setServerIP("10.64.112.152"); cosmic.setFileServerPathIPAndPort("",""); cosmic.setConfigUrl("10.64.112.152:2181","zookeeper","Cosmic@5092"); - cosmic.set("login.type","STANDALONE"); // 134 // cosmic.setClusterNumber("yxzg-prod");