wip:出口报关明细报表
This commit is contained in:
parent
fd75a6a02e
commit
3f669694c9
@ -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");
|
||||||
|
Loading…
Reference in New Issue
Block a user