询价单 中右侧饼图 底部右侧饼图

This commit is contained in:
power 2024-12-28 17:06:33 +08:00
parent e881d6b07a
commit a0148597f7

View File

@ -3,6 +3,7 @@ package yem.wmc.ydn.formplugin.dynamic;
import kd.bos.algo.DataSet;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.IFormView;
import kd.bos.form.chart.*;
import kd.bos.form.plugin.AbstractFormPlugin;
@ -13,6 +14,7 @@ import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.sdk.plugin.Plugin;
import yem.base.common.utils.DateUtil;
import java.math.BigDecimal;
import java.util.*;
/**
@ -40,6 +42,26 @@ public class DownRightPrice extends AbstractFormPlugin implements Plugin {
// HistogramChart(equtypeMap);
}
@Override
public void propertyChanged(PropertyChangedArgs e) {
String name = e.getProperty().getName();
IFormView view = this.getView();
switch (name){
case "yem_operator":
case "yem_date":
case "yem_material":
List<DynamicObject> data = queyData(view);
Map<String, Double> equtypeMap = new HashMap<>();
for(DynamicObject object:data){
equtypeMap.put(object.getString("yem_commcountryid"),
object.getBigDecimal("yem_qty").doubleValue());
}
if (equtypeMap.size() > 0)HistogramChart(equtypeMap);
break;
default:
break;
}
}
private List<DynamicObject> queyData(IFormView view){
@ -47,20 +69,137 @@ public class DownRightPrice extends AbstractFormPlugin implements Plugin {
Date yearFirst = DateUtil.getMonthFirstDay((Date) view.getModel().getValue("yem_date"));
Date yearLast = DateUtil.getMonthEndDay((Date) view.getModel().getValue("yem_date"));
DynamicObject yem_operator = (DynamicObject) view.getModel().getValue("yem_operator");
DynamicObject yem_material = (DynamicObject) view.getModel().getValue("yem_material");
HashMap<String, Integer> map = new HashMap<>();
DataSet data = ORM.create().queryDataSet("yem_im_inquiryprice","yem_im_inquiryprice",
"yem_commcountryid.name yem_commcountryid,yem_materialentry.yem_qty yem_qty",
new QFilter[]{
new QFilter("yem_combofield3", QCP.not_equals,"C"),
new QFilter("yem_bizdate",QCP.large_equals,yearFirst),
new QFilter("yem_bizdate",QCP.less_equals,yearLast),
List<DynamicObject> result =new ArrayList<DynamicObject>();
if (null==yem_operator){
DataSet data = ORM.create().queryDataSet("yem_im_inquiryprice","yem_im_inquiryprice",
"yem_commcountryid.name yem_commcountryid,yem_materialentry.yem_qty yem_qty",
new QFilter[]{
new QFilter("yem_combofield3", QCP.not_equals,"C"),
new QFilter("yem_bizdate",QCP.large_equals,yearFirst),
new QFilter("yem_bizdate",QCP.less_equals,yearLast),
new QFilter("yem_materialentry.yem_material.masterid.id",QCP.equals,yem_material)
// new QFilter("yem_commcountryid",QCP.equals,yem_operator)
});
data = data.groupBy(new String[]{"yem_commcountryid"}).sum("yem_qty").finish()
.orderBy(new String[]{"yem_qty"});
DynamicObjectCollection datas = ORM.create().toPlainDynamicObjectCollection(data.copy());
List<DynamicObject> result = datas;
});
data = data.groupBy(new String[]{"yem_commcountryid"}).sum("yem_qty").finish()
.orderBy(new String[]{"yem_qty"});
DynamicObjectCollection datas = ORM.create().toPlainDynamicObjectCollection(data.copy());
result = datas;
//同比%
Date lastyearFirst = DateUtil.getMonthFirstDay( getlastYear((Date)view.getModel().getValue("yem_date")));
Date lastyearLast = DateUtil.getMonthEndDay(getlastYear((Date)view.getModel().getValue("yem_date")));
DataSet lastdata = ORM.create().queryDataSet("yem_im_inquiryprice","yem_im_inquiryprice",
"yem_commcountryid.name yem_commcountryid,yem_materialentry.yem_qty yem_qty",
new QFilter[]{
new QFilter("yem_combofield3", QCP.not_equals,"C"),
new QFilter("yem_bizdate",QCP.large_equals,lastyearFirst),
new QFilter("yem_bizdate",QCP.less_equals,lastyearLast),
new QFilter("yem_materialentry.yem_material.masterid.id",QCP.equals,yem_material)
// new QFilter("yem_commcountryid",QCP.equals,yem_operator)
});
lastdata = lastdata.groupBy(new String[]{"yem_commcountryid"}).sum("yem_qty").finish()
.orderBy(new String[]{"yem_qty"});
DynamicObjectCollection lastresult= ORM.create().toPlainDynamicObjectCollection(lastdata.copy());
int relength = (datas != null) ? datas.size() : 0;
int lastlength = (lastresult != null) ? lastresult.size() : 0;
BigDecimal yearRate = BigDecimal.ZERO;
if (lastlength!=0){
yearRate = BigDecimal.valueOf((relength - lastlength)/lastlength*100);
}
//环比%
Date lastMonthFirst = DateUtil.getLastMonthFirstDay((Date)view.getModel().getValue("yem_date"));
Date lastMonthLast = DateUtil.getLastMonthEndDay((Date)view.getModel().getValue("yem_date"));
DataSet lastMonthdata = ORM.create().queryDataSet("yem_im_inquiryprice","yem_im_inquiryprice",
"yem_commcountryid.name yem_commcountryid,yem_materialentry.yem_qty yem_qty",
new QFilter[]{
new QFilter("yem_combofield3", QCP.not_equals,"C"),
new QFilter("yem_bizdate",QCP.large_equals,lastMonthFirst),
new QFilter("yem_bizdate",QCP.less_equals,lastMonthLast),
new QFilter("yem_materialentry.yem_material.masterid.id",QCP.equals,yem_material)
// new QFilter("yem_commcountryid",QCP.equals,yem_operator)
});
lastMonthdata = lastMonthdata.groupBy(new String[]{"yem_commcountryid"}).sum("yem_qty").finish()
.orderBy(new String[]{"yem_qty"});
DynamicObjectCollection lastMonthresult= ORM.create().toPlainDynamicObjectCollection(lastMonthdata.copy());
int lastMonthlength = (lastMonthresult != null) ? lastMonthresult.size() : 0;
BigDecimal yearMonthRate = BigDecimal.ZERO;
if (lastMonthlength!=0){
yearMonthRate = BigDecimal.valueOf((relength - lastMonthlength)/lastMonthlength*100);
}
view.getModel().setValue("yem_grossqty",yearRate);
view.getModel().setValue("yem_grossqty1",yearMonthRate);
}
if (null!=yem_operator){
DataSet data = ORM.create().queryDataSet("yem_im_inquiryprice","yem_im_inquiryprice",
"yem_commcountryid.name yem_commcountryid,yem_materialentry.yem_qty yem_qty",
new QFilter[]{
new QFilter("yem_combofield3", QCP.not_equals,"C"),
new QFilter("yem_bizdate",QCP.large_equals,yearFirst),
new QFilter("yem_bizdate",QCP.less_equals,yearLast),
new QFilter("yem_materialentry.yem_material.masterid.id",QCP.equals,yem_material),
new QFilter("yem_commcountryid",QCP.equals,yem_operator)
});
data = data.groupBy(new String[]{"yem_commcountryid"}).sum("yem_qty").finish()
.orderBy(new String[]{"yem_qty"});
DynamicObjectCollection datas = ORM.create().toPlainDynamicObjectCollection(data.copy());
result = datas;
//同比%
Date lastyearFirst = DateUtil.getMonthFirstDay( getlastYear((Date)view.getModel().getValue("yem_date")));
Date lastyearLast = DateUtil.getMonthEndDay(getlastYear((Date)view.getModel().getValue("yem_date")));
DataSet lastdata = ORM.create().queryDataSet("yem_im_inquiryprice","yem_im_inquiryprice",
"yem_commcountryid.name yem_commcountryid,yem_materialentry.yem_qty yem_qty",
new QFilter[]{
new QFilter("yem_combofield3", QCP.not_equals,"C"),
new QFilter("yem_bizdate",QCP.large_equals,lastyearFirst),
new QFilter("yem_bizdate",QCP.less_equals,lastyearLast),
new QFilter("yem_materialentry.yem_material.masterid.id",QCP.equals,yem_material),
new QFilter("yem_commcountryid",QCP.equals,yem_operator)
});
lastdata = lastdata.groupBy(new String[]{"yem_commcountryid"}).sum("yem_qty").finish()
.orderBy(new String[]{"yem_qty"});
DynamicObjectCollection lastresult= ORM.create().toPlainDynamicObjectCollection(lastdata.copy());
int relength = (datas != null) ? datas.size() : 0;
int lastlength = (lastresult != null) ? lastresult.size() : 0;
BigDecimal yearRate = BigDecimal.ZERO;
if (lastlength!=0){
yearRate = BigDecimal.valueOf((relength - lastlength)/lastlength*100);
}
//环比%
Date lastMonthFirst = DateUtil.getLastMonthFirstDay((Date)view.getModel().getValue("yem_date"));
Date lastMonthLast = DateUtil.getLastMonthEndDay((Date)view.getModel().getValue("yem_date"));
DataSet lastMonthdata = ORM.create().queryDataSet("yem_im_inquiryprice","yem_im_inquiryprice",
"yem_commcountryid.name yem_commcountryid,yem_materialentry.yem_qty yem_qty",
new QFilter[]{
new QFilter("yem_combofield3", QCP.not_equals,"C"),
new QFilter("yem_bizdate",QCP.large_equals,lastMonthFirst),
new QFilter("yem_bizdate",QCP.less_equals,lastMonthLast),
new QFilter("yem_materialentry.yem_material.masterid.id",QCP.equals,yem_material),
new QFilter("yem_commcountryid",QCP.equals,yem_operator)
});
lastMonthdata = lastMonthdata.groupBy(new String[]{"yem_commcountryid"}).sum("yem_qty").finish()
.orderBy(new String[]{"yem_qty"});
DynamicObjectCollection lastMonthresult= ORM.create().toPlainDynamicObjectCollection(lastMonthdata.copy());
int lastMonthlength = (lastMonthresult != null) ? lastMonthresult.size() : 0;
BigDecimal yearMonthRate = BigDecimal.ZERO;
if (lastMonthlength!=0){
yearMonthRate = BigDecimal.valueOf((relength - lastMonthlength)/lastMonthlength*100);
}
view.getModel().setValue("yem_grossqty",yearRate);
view.getModel().setValue("yem_grossqty1",yearMonthRate);
}
// List<DynamicObject> result = datas.subList(0, 10);
return result;
}
@ -169,4 +308,11 @@ public class DownRightPrice extends AbstractFormPlugin implements Plugin {
barSeries.setData(itemValuesArray);
}
public static Date getlastYear(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.YEAR,-1);
Date getlastYear = calendar.getTime();
return getlastYear;
}
}