wip:出口报关明细报表

This commit is contained in:
zzs01@yunemao.com 2024-09-04 18:51:59 +08:00
parent fd75a6a02e
commit 3f669694c9
2 changed files with 58 additions and 9 deletions

View File

@ -14,14 +14,12 @@ import kd.bos.entity.report.FilterInfo;
import kd.bos.entity.report.ReportQueryParam; import kd.bos.entity.report.ReportQueryParam;
import kd.bos.orm.ORM; import kd.bos.orm.ORM;
import kd.bos.orm.query.QFilter; import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import org.apache.commons.compress.utils.Lists; import org.apache.commons.compress.utils.Lists;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.math.RoundingMode; import java.math.RoundingMode;
import java.util.ArrayList; import java.util.*;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import static com.yem.rf.utils.RFUtils.getBaseQFilter; import static com.yem.rf.utils.RFUtils.getBaseQFilter;
@ -39,12 +37,28 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData
@Override @Override
public DataSet query(ReportQueryParam param, Object o) throws Throwable { public DataSet query(ReportQueryParam param, Object o) throws Throwable {
FilterInfo filter = param.getFilter();
Date fshipdate_start = filter.getDate("yem_fshipdate_start");//发货日期
Date fshipdate_end = filter.getDate("yem_fshipdate_end");//发货日期
Date fexportdate_start = filter.getDate("yem_fexportdate_start");//出口日期
Date fexportdate_end = filter.getDate("yem_fexportdate_end");//出口日期
String fcontactno = filter.getString("yem_fcontactno");//合同号
Long fcustomer = filter.getLong("yem_fcustomer");//客户
String fladingno = filter.getString("yem_fladingno");//提单号
DataSet declaredocx = queryDeclareDocx(param); DataSet declaredocx = queryDeclareDocx(param);
DataSet declaredocx_relation = queryDeclareDocx_Relation(param); DataSet declaredocx_relation = queryDeclareDocx_Relation(param);
DataSet exportinvoice = queryExportInvoice(param); DataSet exportinvoice = queryExportInvoice(param);
DataSet salesorder_info = querySalesOrder_Info(param);
DataSet dataSet; DataSet dataSet;
dataSet = declaredocx.leftJoin(declaredocx_relation) dataSet = declaredocx.leftJoin(declaredocx_relation)
@ -57,6 +71,11 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData
.select(RptUtil.getDataSetFiledAlias(dataSet), RptUtil.getDataSetFiledAlias(exportinvoice)) .select(RptUtil.getDataSetFiledAlias(dataSet), RptUtil.getDataSetFiledAlias(exportinvoice))
.finish(); .finish();
dataSet = dataSet.leftJoin(salesorder_info)
.on("main_id", "detail_id_info_fk")
.select(RptUtil.getDataSetFiledAlias(dataSet), RptUtil.getDataSetFiledAlias(salesorder_info))
.finish();
dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," +
//原币离岸价 //原币离岸价
"yem_amount - tmp_reightamtend - tmp_premiumamtcy yem_basefobamt"); "yem_amount - tmp_reightamtend - tmp_premiumamtcy yem_basefobamt");
@ -68,13 +87,17 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData
"yem_cnyfobamt - yem_cnyinvoiced yem_fobsubinvoiced"); "yem_cnyfobamt - yem_cnyinvoiced yem_fobsubinvoiced");
dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," +
//美元离岸价 //美元离岸价
"yem_cnyfobamt / yem_usdrate yem_usdfobamt"); "CASE WHEN yem_usdrate > 0 THEN yem_cnyfobamt / yem_usdrate ELSE 0.0 END yem_usdfobamt");
dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," +
//出口创汇 //出口创汇
"yem_usdfobamt + usd_sea_amt + usd_pmamt_amt yem_earning"); "yem_usdfobamt + usd_sea_amt + usd_pmamt_amt yem_earning");
dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," +
//应退税额 //应退税额
"yem_cnyfobamt * yem_degrate / 100 yem_refundabletax"); "yem_cnyfobamt * yem_degrate / 100 yem_refundabletax");
StringBuilder sb = new StringBuilder();
return dataSet; return dataSet;
} }
@ -129,9 +152,9 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData
dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," + dataSet = dataSet.select(String.join(",", RptUtil.getDataSetFiledAlias(dataSet)) + "," +
// 2海运费美元=海运费本位币/美元汇率 // 2海运费美元=海运费本位币/美元汇率
"yem_reightamtbase / yem_usdrate usd_sea_amt, " + "CASE WHEN yem_usdrate > 0 THEN yem_reightamtbase / yem_usdrate ELSE 0.0 END usd_sea_amt, " +
// 3运保费美元=运保费本位币/美元汇率 // 3运保费美元=运保费本位币/美元汇率
"yem_premiumamtbase / yem_usdrate usd_pmamt_amt, " + "CASE WHEN yem_usdrate > 0 THEN yem_premiumamtbase / yem_usdrate ELSE 0.0 END usd_pmamt_amt, " +
// 美元汇率 // 美元汇率
"yem_usdrate * 100 yem_usdratehund"); "yem_usdrate * 100 yem_usdratehund");
@ -159,6 +182,19 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData
dataSet = dataSet.addField("0.0", "yem_usdpremiumamt");//美元保险费 dataSet = dataSet.addField("0.0", "yem_usdpremiumamt");//美元保险费
dataSet = dataSet.addField("0.0", "tmp_reightamtend");//海运费结算币别 dataSet = dataSet.addField("0.0", "tmp_reightamtend");//海运费结算币别
dataSet = dataSet.addField("0.0", "tmp_premiumamtcy");//保费结算币别 dataSet = dataSet.addField("0.0", "tmp_premiumamtcy");//保费结算币别
dataSet = dataSet.addField("0", "yem_cnycurrency");//人民币币别
dataSet = dataSet.addField("0", "yem_usdcurrency");//美元币别
DynamicObject cny = BusinessDataServiceHelper.loadSingle("bd_currency", "id", new QFilter[]{new QFilter("number", "=", "CNY")});
long cnyId = 0L;
if (YEM.isNotEmpty(cny)) {
cnyId = cny.getLong("id");
}
DynamicObject usd = BusinessDataServiceHelper.loadSingle("bd_currency", "id", new QFilter[]{new QFilter("number", "=", "USD")});
long usdId = 0L;
if (YEM.isNotEmpty(usd)) {
usdId = usd.getLong("id");
}
dataSet = RptUtil.zeroNullNums(dataSet); dataSet = RptUtil.zeroNullNums(dataSet);
DynamicObjectCollection collection = ORM.create().toPlainDynamicObjectCollection(dataSet.copy()); DynamicObjectCollection collection = ORM.create().toPlainDynamicObjectCollection(dataSet.copy());
Map<String, List<DynamicObject>> map = new LinkedHashMap<>(); Map<String, List<DynamicObject>> map = new LinkedHashMap<>();
@ -250,6 +286,8 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData
d.set("tmp_premiumamtcy", tmp_premiumamtcy);//保费结算币别 d.set("tmp_premiumamtcy", tmp_premiumamtcy);//保费结算币别
} }
d.set("yem_cnycurrency", cnyId);
d.set("yem_usdcurrency", usdId);
dc.add(d); dc.add(d);
} }
} }
@ -309,8 +347,9 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData
DataSet infoDataSet2 = dataSet.copy().groupBy(new String[]{"rl_merged_seq"}) DataSet infoDataSet2 = dataSet.copy().groupBy(new String[]{"rl_merged_seq"})
.agg(new GroupTopOneFunction(), "yem_declarationele", "yem_declarationele") .agg(new GroupTopOneFunction(), "yem_declarationele", "yem_declarationele")
.agg(new GroupTopOneFunction(), "rl_detail_id", "rl_detail_id") .agg(new GroupTopOneFunction(), "rl_detail_id", "rl_detail_id")
.agg(new GroupTopOneFunction(), "main_id", "main_id")
.finish() .finish()
.select("rl_merged_seq rl_merged_seq_2, yem_declarationele, rl_detail_id"); .select("rl_merged_seq rl_merged_seq_2, yem_declarationele, rl_detail_id, main_id");
dataSet = infoDataSet1.leftJoin(infoDataSet2) dataSet = infoDataSet1.leftJoin(infoDataSet2)
.on("rl_merged_seq_1", "rl_merged_seq_2") .on("rl_merged_seq_1", "rl_merged_seq_2")
@ -403,6 +442,16 @@ public class ExportDeclarationDetailsReportPlugin extends AbstractReportListData
return dataSet; return dataSet;
} }
private DataSet querySalesOrder_Info(ReportQueryParam param) {
QFilter qFilter = getBaseQFilter();
ArrayList<String> selectfields = Lists.newArrayList();
selectfields.add("yem_es_materialinfo.id detail_id_info_fk");
selectfields.add("yem_operator yem_salesman");
return ORM.create().queryDataSet(algoKey, "yem_es_salesorder", String.join(",", selectfields), qFilter.toArray());
}
public QFilter getCommonDeclareDocxFilter(ReportQueryParam param) { public QFilter getCommonDeclareDocxFilter(ReportQueryParam param) {
FilterInfo filter = param.getFilter(); FilterInfo filter = param.getFilter();
String fdeclaredocxno = filter.getString("yem_fdeclaredocxno"); String fdeclaredocxno = filter.getString("yem_fdeclaredocxno");