配件发货明细表(未发货)

This commit is contained in:
ljw 2024-09-05 22:17:50 +08:00 committed by zzs01@yunemao.com
parent 3a8c70150c
commit fbe6d5d043
2 changed files with 274 additions and 1 deletions

View File

@ -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<String> names = new ArrayList<>();
for (DynamicObject dynamicObject : yem_bd_producttype) {
String name = dynamicObject.getString("name");
names.add(name);
}
Map<String,Object> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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<String> 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;
}
}

View File

@ -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");