123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- package fi.em.formPlugin;
- import kd.bos.dataentity.entity.DynamicObjectCollection;
- import kd.bos.entity.datamodel.events.ChangeData;
- import kd.bos.entity.datamodel.events.PropertyChangedArgs;
- import kd.bos.exception.KDBizException;
- import kd.bos.form.CloseCallBack;
- import kd.bos.form.FormShowParameter;
- import kd.bos.form.ShowType;
- import kd.bos.form.events.AfterDoOperationEventArgs;
- import kd.bos.form.events.ClosedCallBackEvent;
- import kd.bos.list.plugin.AbstractListPlugin;
- import kd.bos.orm.query.QCP;
- import kd.bos.orm.query.QFilter;
- import kd.sdk.plugin.Plugin;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.JSONObject;
- import kd.bos.dataentity.entity.DynamicObject;
- import kd.bos.servicehelper.BusinessDataServiceHelper;
- import org.apache.commons.lang3.StringUtils;
- import java.math.BigDecimal;
- import java.util.HashMap;
- public class CostAllocationEditPlugin extends AbstractListPlugin implements Plugin {
- public static String btn_NOTICE = "donothing"; //操作
- public static String btn_NOTICES = "bxddyz"; //操作
- public static String nckd_agentparameterf7 = "nckd_agentparameterf7";//动因参数动态列表
- private static String bos_org = "bos_org"; //组织
- @Override
- public void afterDoOperation(AfterDoOperationEventArgs e) {
- String operateKey = e.getOperateKey();
- if (btn_NOTICE.equals(e.getOperateKey())) { //切换付款方
- Object value = this.getModel().getValue("costcompany");//获取当前单据费用公司
- DynamicObjectCollection expenseentryentityWait = this.getModel().getEntryEntity("expenseentryentity_wait");
- DynamicObject dynamicObject = expenseentryentityWait.get(0);
- DynamicObject entrycostcompanyWait = dynamicObject.getDynamicObject("entrycostcompany_wait");
- if(entrycostcompanyWait==null){
- throw new KDBizException("待摊明细分录为空!");
- }
- String orgnumber = entrycostcompanyWait.getString("number");//公司编码
- String orgid = entrycostcompanyWait.getString("id");//公司id
- if (orgnumber == null){
- throw new KDBizException("付费承担公司为空!");
- }
- showParameter(nckd_agentparameterf7, btn_NOTICE,orgnumber,orgid);//调用弹出页面
- }else if (btn_NOTICES.equals(e.getOperateKey())) { //切换收款方
- Object value = this.getModel().getValue("costcompany");//获取当前单据费用公司
- DynamicObject expenseentryentityWait = (DynamicObject)value;
- // DynamicObject dynamicObject = expenseentryentityWait.get(0);
- // DynamicObject entrycostcompanyWait = dynamicObject.getDynamicObject("entrycostcompany_wait");
- if(expenseentryentityWait==null){
- throw new KDBizException("承担公司为空!");
- }
- String orgnumber = expenseentryentityWait.getString("number");//公司编码
- String orgid = expenseentryentityWait.getString("id");//公司id
- if (orgnumber == null){
- throw new KDBizException("付费承担公司为空!");
- }
- showParameter(nckd_agentparameterf7, btn_NOTICE,orgnumber,orgid);//调用弹出页面
- }
- }
- @Override
- public void closedCallBack(ClosedCallBackEvent e) {
- super.closedCallBack(e);
- if (StringUtils.equals(btn_NOTICE, e.getActionId()) && null != e.getReturnData()) {
- //父页面返回参数
- HashMap<String, String> returnData = (HashMap<String, String>) e.getReturnData();
- String reJaStr = returnData.get("reJaStr");
- //判断空
- if (StringUtils.isNotBlank(reJaStr)) {
- //删除分录信息
- this.getModel().deleteEntryData("expenseentryentity_rule");
- JSONArray reJa = JSONArray.parseArray(reJaStr);//返回信息数组
- BigDecimal sum = new BigDecimal(0);//动因参数总和
- //循环计算sum
- for(int a =0;a<reJa.size();a++){
- JSONObject reJo = reJa.getJSONObject(a);
- BigDecimal nckdAgentvalue = reJo.getBigDecimal("nckd_agentvalue");
- sum=sum.add(nckdAgentvalue);
- }
- BigDecimal max = new BigDecimal(0);
- BigDecimal zonghe = new BigDecimal(0);
- int count = 0;
- //循环返回数组插入分录
- for(int i =0;i<reJa.size();i++){
- //当前循环行
- JSONObject reJo = reJa.getJSONObject(i);
- //获取组织
- String nckd_shareorg = reJo.getString("nckd_shareorg");
- QFilter nckd_orgamountFilter = new QFilter("number", QCP.equals,nckd_shareorg);
- nckd_orgamountFilter.and("enable", QCP.equals,"1");
- //组织实体
- DynamicObject nckd_orgamountaccount = BusinessDataServiceHelper.loadSingle(bos_org,"id,nckd_orgfield,nckd_combofield",new QFilter[] {nckd_orgamountFilter});
- BigDecimal nckdAgentvalue = reJo.getBigDecimal("nckd_agentvalue");
- //计算当前动因值比例
- nckdAgentvalue = nckdAgentvalue.divide(sum,4,BigDecimal.ROUND_HALF_UP).setScale(4);
- nckdAgentvalue = nckdAgentvalue.multiply(new BigDecimal(100));
- //新增分录行
- int rowIndex = this.getModel().createNewEntryRow("expenseentryentity_rule");
- zonghe=zonghe.add(nckdAgentvalue);
- if(nckdAgentvalue.compareTo(max) == 1){
- max=nckdAgentvalue;
- count=count=rowIndex;
- }
- //set分录字段
- this.getModel().setValue("entrycostcompany_orgrule", nckd_orgamountaccount, rowIndex);
- this.getModel().setValue("sharerate_comrule", nckdAgentvalue, rowIndex);
- if(i+1==reJa.size()){
- zonghe=zonghe.subtract(new BigDecimal(100));
- this.getModel().setValue("sharerate_comrule", max.subtract(zonghe), count);
- }
- }
- //刷新分录
- this.getView().updateView("expenseentryentity_rule");
- }
- }
- }
- public void showParameter(String formId, String actionId,String orgnumber,String orgid) {
- //创建弹出页面对象,FormShowParameter表示弹出页面为动态表单
- FormShowParameter ShowParameter = new FormShowParameter();
- //ListShowParameter ShowParameter = new ListShowParameter();
- ShowParameter.setCustomParam("orgnumber", orgnumber);
- ShowParameter.setCustomParam("orgid", orgid);
- //设置弹出页面的编码
- ShowParameter.setFormId(formId);
- // ShowParameter.setCaption();
- //设置弹出页面标题
- ShowParameter.setCaption("动因参数选择");
- //设置页面关闭回调方法
- //CloseCallBack参数:回调插件,回调标识 btnok
- ShowParameter.setCloseCallBack(new CloseCallBack(this, actionId));
- //设置弹出页面打开方式,支持模态,新标签等
- ShowParameter.getOpenStyle().setShowType(ShowType.Modal);
- //弹出页面对象赋值给父页面
- this.getView().showForm(ShowParameter);
- }
- @Override
- public void propertyChanged(PropertyChangedArgs e) {
- super.beforePropertyChanged(e);
- String name = e.getProperty().getName();//获取字段标识
- if ("nckd_textfield2".equals(name)) {
- ChangeData[] changeSet = e.getChangeSet();//获取值
- for (ChangeData changeData : changeSet) {
- int rowIndex = changeData.getRowIndex();
- Object newValue = changeData.getNewValue();
- Object oldValue = changeData.getOldValue();
- String nckdTextfield2 = this.getModel().getValue("nckd_textfield2", rowIndex).toString();
- QFilter nckd_orgamountFilter = new QFilter("im_purinbill.billentry.lotnumber", QCP.equals,nckdTextfield2);
- //组织实体
- DynamicObject im_purinbill = BusinessDataServiceHelper.loadSingle("im_purinbill","id,billentry.price",new QFilter[] {nckd_orgamountFilter});
- BigDecimal price = im_purinbill.getBigDecimal("price");
- this.getModel().setValue("nckd_pricefield1", price, rowIndex);
- }
- }
- }
- }
|