From fb127cd05c2d5251bf129cb18eb4dc3007f418f2 Mon Sep 17 00:00:00 2001 From: xiaoshi <2272816786@qq.com> Date: Fri, 6 Jun 2025 17:11:24 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=90=88=E5=90=8C=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/EcInFinalsettleJusCustPlugin.java | 4 +- .../pr/plugin/form/OutContractFromPlugin.java | 39 +++- .../plugin/form/QueryInstancesFromPlugin.java | 56 +++--- .../form/RenewalContractBillPlugin.java | 43 +++-- .../form/RenewalOutContractBillPlugin.java | 166 ++++++++++++++++++ 5 files changed, 267 insertions(+), 41 deletions(-) create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RenewalOutContractBillPlugin.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EcInFinalsettleJusCustPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EcInFinalsettleJusCustPlugin.java index 0b77367..d284a3f 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EcInFinalsettleJusCustPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EcInFinalsettleJusCustPlugin.java @@ -70,8 +70,8 @@ public class EcInFinalsettleJusCustPlugin extends AbstractBillPlugIn implements Date zcgjEnddate = contractInfo.getDate("zcgj_enddate"); Date nowdate = new Date(); int timeDays = PluginUtils.getTimeDays(zcgjEnddate, nowdate); -// int endDays = Integer.parseInt(System.getProperty("endDays")); - int endDays = 100; + int endDays = Integer.parseInt(System.getProperty("contract.enddays")); +// int endDays = 100; if (timeDays-endDays<=0){ this.getView().showTipNotification("当前选择合同距离到期不足"+endDays+"天!"); } diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFromPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFromPlugin.java index b285a5e..f8513f6 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFromPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFromPlugin.java @@ -9,6 +9,7 @@ import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; import kd.bos.form.field.ComboEdit; import kd.bos.form.field.ComboItem; +import kd.bos.form.field.FieldEdit; import kd.bos.orm.ORM; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; @@ -31,21 +32,55 @@ public class OutContractFromPlugin extends AbstractBillPlugIn implements Plugin public void propertyChanged(PropertyChangedArgs e) { super.propertyChanged(e); String changeName = e.getProperty().getName(); + ChangeData changeData = e.getChangeSet()[0]; if (changeName.equals(contracttype)) {//收入合同字段值改变 - ChangeData changeData = e.getChangeSet()[0]; DynamicObject contractType = (DynamicObject)changeData.getNewValue(); String number = contractType.getString("number"); List comboList = new ArrayList<>(); + List comboList1 = new ArrayList<>(); if(number.equals("sbzl")){ comboList.add(new ComboItem(new LocaleString("全部租赁"), "C")); comboList.add(new ComboItem(new LocaleString("部分租赁"), "D")); comboList.add(new ComboItem(new LocaleString("零星租赁"), "F")); - }else{ + } else if (number.equals("ZCHLX02")) { + comboList1.add(new ComboItem(new LocaleString("固定单价"), "gddj")); + comboList1.add(new ComboItem(new LocaleString("不定量不定价"), "bdlbdj")); + Object pricetype = this.getModel().getValue("zcgj_pricetype"); + if (pricetype!=null){ + if (pricetype.toString().equals("bdlbdj")){ + this.getModel().setValue("isonlist",true); + this.getView().setEnable(false,"isonlist"); + } + } + } else{ + comboList1.add(new ComboItem(new LocaleString("固定单价"), "gddj")); + comboList1.add(new ComboItem(new LocaleString("不定量不定价"), "bdlbdj")); + comboList1.add(new ComboItem(new LocaleString("总价包干"), "zjbg")); comboList.add(new ComboItem(new LocaleString("全面合作"), "A")); comboList.add(new ComboItem(new LocaleString("局部合作"), "B")); } ComboEdit comboEdit = getView().getControl("zcgj_cooperatemode"); comboEdit.setComboItems(comboList); + ComboEdit comboEdit1 = getView().getControl("zcgj_pricetype"); + comboEdit1.setComboItems(comboList1); + } else if (changeName.equals("zcgj_pricetype")) { + Object newValue = changeData.getNewValue(); + if (newValue!=null){ + if (newValue.toString().equals("gddj")){ + //设置必填 + ((FieldEdit)this.getControl("treeprice")).setMustInput(true); + }else { + ((FieldEdit)this.getControl("treeprice")).setMustInput(false); + } + } + Object value = this.getModel().getValue(contracttype); + if (value!=null){ + DynamicObject contractType = (DynamicObject)value; + if (contractType.getString("number").equals("ZCHLX02")){ + this.getModel().setValue("isonlist",true); + this.getView().setEnable(false,"isonlist"); + } + } } } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/QueryInstancesFromPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/QueryInstancesFromPlugin.java index cb37125..2592b35 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/QueryInstancesFromPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/QueryInstancesFromPlugin.java @@ -17,6 +17,7 @@ import kd.bos.list.plugin.AbstractListPlugin; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; +import org.stringtemplate.v4.ST; import java.util.EventObject; import java.util.List; @@ -24,28 +25,32 @@ import java.util.Map; public class QueryInstancesFromPlugin extends AbstractFormPlugin implements CellClickListener { + String Qtype = ""; @Override public void afterCreateNewData(EventObject e) { super.afterCreateNewData(e); Map customParams = this.getView().getFormShowParameter().getCustomParams(); Object list = customParams.get("list"); - if (list!=null){ + if (list != null) { JSONArray jsonArray = JSONArray.parseArray(list.toString()); - DynamicObjectCollection entrys = (DynamicObjectCollection)getModel().getValue("zcgj_entryentity"); + DynamicObjectCollection entrys = (DynamicObjectCollection) getModel().getValue("zcgj_entryentity"); entrys.remove(0); for (int i = 0; i < jsonArray.size(); i++) { + DynamicObjectType type = entrys.getDynamicObjectType(); DynamicObject entry = new DynamicObject(type); JSONObject jsonObject = jsonArray.getJSONObject(i); - entry.set("zcgj_billno",jsonObject.getString("zcgj_billno")); - entry.set("zcgj_billname",jsonObject.getString("zcgj_billname")); - entry.set("zcgj_renewalnum",jsonObject.getString("zcgj_renewalnum")); - entry.set("zcgj_renewalname",jsonObject.getString("zcgj_renewalname")); + entry.set("zcgj_billno", jsonObject.getString("zcgj_billno")); + entry.set("zcgj_billname", jsonObject.getString("zcgj_billname")); + entry.set("zcgj_renewalnum", jsonObject.getString("zcgj_renewalnum")); + entry.set("zcgj_renewalname", jsonObject.getString("zcgj_renewalname")); + entry.set("zcgj_type", jsonObject.getString("type")); entrys.add(entry); - this.getModel().setValue("zcgj_billno",jsonObject.getString("zcgj_billno"),i); - this.getModel().setValue("zcgj_billname",jsonObject.getString("zcgj_billname"),i); - this.getModel().setValue("zcgj_renewalnum",jsonObject.getString("zcgj_renewalnum"),i); - this.getModel().setValue("zcgj_renewalname",jsonObject.getString("zcgj_renewalname"),i); + this.getModel().setValue("zcgj_billno", jsonObject.getString("zcgj_billno"), i); + this.getModel().setValue("zcgj_billname", jsonObject.getString("zcgj_billname"), i); + this.getModel().setValue("zcgj_renewalnum", jsonObject.getString("zcgj_renewalnum"), i); + this.getModel().setValue("zcgj_renewalname", jsonObject.getString("zcgj_renewalname"), i); + this.getModel().setValue("zcgj_type", jsonObject.getString("type"), i); } } } @@ -53,37 +58,36 @@ public class QueryInstancesFromPlugin extends AbstractFormPlugin implements Cell public void registerListener(EventObject e) { super.registerListener(e); - EntryGrid control = (EntryGrid)getView().getControl("zcgj_entryentity"); + EntryGrid control = (EntryGrid) getView().getControl("zcgj_entryentity"); control.addCellClickListener(this); } @Override public void cellClick(CellClickEvent cellClickEvent) { String fieldKey = cellClickEvent.getFieldKey(); + DynamicObject contract = new DynamicObject();//收入/支出 +// String type = ""; if (!fieldKey.equals("0")) { int row = cellClickEvent.getRow(); - if (fieldKey.equals("zcgj_billno")){ - Object number = getModel().getValue("zcgj_billno", row); - if (number!=null){ - DynamicObject contract = BusinessDataServiceHelper.loadSingle("ec_in_contract", "id,billno,zcgj_renewal,zcgj_isrenewal", new QFilter[]{new QFilter("billno", QCP.equals, number.toString())}); - BillShowParameter formShowParameter = new BillShowParameter(); - formShowParameter.setFormId("ec_in_contract"); - formShowParameter.setPkId(contract.getLong("id")); - formShowParameter.getOpenStyle().setShowType(ShowType.Modal); - getView().showForm(formShowParameter); + Object number = getModel().getValue("zcgj_billno", row); + Object type = getModel().getValue("zcgj_type", row); + if (number != null) { + contract = BusinessDataServiceHelper.loadSingle(type.toString(), "id,billno,zcgj_renewal,zcgj_isrenewal", new QFilter[]{new QFilter("billno", QCP.equals, number.toString())}); + if (contract != null) { +// Qtype = "ec_in_contract"; +// } else { +// contract = BusinessDataServiceHelper.loadSingle("ec_out_contract", "id,billno,zcgj_renewal,zcgj_isrenewal", new QFilter[]{new QFilter("billno", QCP.equals, number.toString())}); +// type = "ec_out_contract"; +// } } - } else if (fieldKey.equals("zcgj_renewalnum")) { - Object number = getModel().getValue("zcgj_renewalnum", row); - if (number!=null){ - DynamicObject contract = BusinessDataServiceHelper.loadSingle("ec_in_contract", "id,billno,zcgj_renewal,zcgj_isrenewal", new QFilter[]{new QFilter("billno", QCP.equals, number.toString())}); + if (fieldKey.equals("zcgj_billno") || fieldKey.equals("zcgj_renewalnum")) { BillShowParameter formShowParameter = new BillShowParameter(); - formShowParameter.setFormId("ec_in_contract"); + formShowParameter.setFormId(type.toString()); formShowParameter.setPkId(contract.getLong("id")); formShowParameter.getOpenStyle().setShowType(ShowType.Modal); getView().showForm(formShowParameter); } } - } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RenewalContractBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RenewalContractBillPlugin.java index 9debb45..b43806f 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RenewalContractBillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RenewalContractBillPlugin.java @@ -11,6 +11,8 @@ import kd.bos.form.FormShowParameter; import kd.bos.form.ShowType; import kd.bos.form.control.events.BeforeItemClickEvent; import kd.bos.form.control.events.ItemClickEvent; +import kd.bos.form.events.BeforeDoOperationEventArgs; +import kd.bos.form.operate.FormOperate; import kd.bos.list.plugin.AbstractListPlugin; import kd.bos.mvc.bill.BillModel; import kd.bos.orm.query.QCP; @@ -26,18 +28,23 @@ public class RenewalContractBillPlugin extends AbstractListPlugin { @Override public void afterCopyData(EventObject e) { - BillModel billModel = (BillModel) e.getSource(); - Object billno = billModel.getValue("billno"); - DynamicObject contract = BusinessDataServiceHelper.loadSingle("ec_in_contract", "id,billno,billname,zcgj_renewal,zcgj_isrenewal", new QFilter[]{new QFilter("billno", QCP.equals, billno)}); - super.afterCopyData(e); - this.getModel().setValue("id", null);//id + + //获取列表父界面缓存信息 + Object srcBillNo2 = this.getView().getParentView().getPageCache().get("srcBillNo"); + if(srcBillNo2!=null){ +// this.getView().showMessage("源单编号:"+srcBillNo2); +// BillModel billModel = (BillModel) e.getSource(); + DynamicObject contract = BusinessDataServiceHelper.loadSingle("ec_out_contract", "id,billno,billname,zcgj_renewal,zcgj_isrenewal", new QFilter[]{new QFilter("billno", QCP.equals, srcBillNo2.toString())}); + this.getModel().setValue("id", null);//id this.getModel().setValue("billno", null);//合同编码 - this.getModel().setValue("billname", contract.getString("billname")+"-续签");//合同名称 - this.getModel().setValue("zcgj_startdate", null);//起始日期 - this.getModel().setValue("zcgj_enddate", null);//终止日期 -// DynamicObject contract = BusinessDataServiceHelper.loadSingle("ec_in_contract", "id,billno,zcgj_renewal", new QFilter[]{new QFilter("billno", QCP.equals, billno)}); - this.getModel().setValue("zcgj_renewal", contract);//续签主合同 - this.getModel().setValue("zcgj_isrenewal", true);//是否续签 + this.getModel().setValue("billname", contract.getString("billname")+"-续签");//合同名称 + this.getModel().setValue("zcgj_startdate", null);//起始日期 + this.getModel().setValue("zcgj_enddate", null);//终止日期 +// DynamicObject contract = BusinessDataServiceHelper.loadSingle("ec_out_contract", "id,billno,zcgj_renewal", new QFilter[]{new QFilter("billno", QCP.equals, billno)}); + this.getModel().setValue("zcgj_renewal", contract);//续签主合同 + this.getModel().setValue("zcgj_isrenewal", true);//是否续签 + this.getView().getParentView().getPageCache().remove("srcBillNo");//读取后清理缓存 + } } @@ -73,6 +80,7 @@ public class RenewalContractBillPlugin extends AbstractListPlugin { DynamicObject[] recontracts = BusinessDataServiceHelper.load("ec_in_contract", "id,billno,billname,zcgj_renewal", new QFilter[]{qf}); for (DynamicObject recontract : recontracts) { JSONObject jsonObject = new JSONObject(); + jsonObject.put("type","ec_in_contract"); jsonObject.put("zcgj_billno",billno); jsonObject.put("zcgj_billname",receiveApplication.getString("billname")); jsonObject.put("zcgj_renewalnum",recontract.getString("billno")); @@ -141,4 +149,17 @@ public class RenewalContractBillPlugin extends AbstractListPlugin { } return setIds; } + + @Override + public void beforeDoOperation(BeforeDoOperationEventArgs args) { + super.beforeDoOperation(args); + FormOperate operate = (FormOperate) args.getSource(); + String operateNo = operate.getOperateKey(); + if(operateNo.equalsIgnoreCase("copy")){ + ListSelectedRowCollection listSelectedData = args.getListSelectedData(); + String srcBillNo = listSelectedData.get(0).getBillNo(); + this.getView().getPageCache().put("srcBillNo",srcBillNo); + } + + } } diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RenewalOutContractBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RenewalOutContractBillPlugin.java new file mode 100644 index 0000000..9adf655 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/RenewalOutContractBillPlugin.java @@ -0,0 +1,166 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.greenpineyu.fel.common.NumberUtil; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.datamodel.ListSelectedRow; +import kd.bos.entity.datamodel.ListSelectedRowCollection; +import kd.bos.form.CloseCallBack; +import kd.bos.form.FormShowParameter; +import kd.bos.form.ShowType; +import kd.bos.form.control.events.BeforeItemClickEvent; +import kd.bos.form.control.events.ItemClickEvent; +import kd.bos.form.events.BeforeDoOperationEventArgs; +import kd.bos.form.operate.FormOperate; +import kd.bos.list.plugin.AbstractListPlugin; +import kd.bos.mvc.bill.BillModel; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import org.jetbrains.annotations.NotNull; + +import java.util.EventObject; +import java.util.HashSet; +import java.util.Set; + +public class RenewalOutContractBillPlugin extends AbstractListPlugin { + + @Override + public void afterCopyData(EventObject e) { + super.afterCopyData(e); + //获取列表父界面缓存信息 + Object srcBillNo2 = this.getView().getParentView().getPageCache().get("srcBillNo"); + if(srcBillNo2!=null){ +// this.getView().showMessage("源单编号:"+srcBillNo2); +// BillModel billModel = (BillModel) e.getSource(); + DynamicObject contract = BusinessDataServiceHelper.loadSingle("ec_out_contract", "id,billno,billname,zcgj_renewal,zcgj_isrenewal", new QFilter[]{new QFilter("billno", QCP.equals, srcBillNo2.toString())}); + this.getModel().setValue("id", null);//id +// this.getModel().setValue("billno", null);//合同编码 + this.getModel().setValue("billname", contract.getString("billname")+"-续签");//合同名称 + this.getModel().setValue("zcgj_startdate", null);//起始日期 + this.getModel().setValue("zcgj_enddate", null);//终止日期 +// DynamicObject contract = BusinessDataServiceHelper.loadSingle("ec_out_contract", "id,billno,zcgj_renewal", new QFilter[]{new QFilter("billno", QCP.equals, billno)}); + this.getModel().setValue("zcgj_renewal", contract);//续签主合同 + this.getModel().setValue("zcgj_isrenewal", true);//是否续签 + this.getView().getParentView().getPageCache().remove("srcBillNo");//读取后清理缓存 + } + } + + + + @Override + public void registerListener(EventObject e) { + super.registerListener(e); + // 工具栏注册监听(注意这里是把整个工具栏注册监听,工具栏项是没有运行时控件模型的) + this.addItemClickListeners("tbmain");//监听按钮 + + } + + @Override + public void itemClick(ItemClickEvent evt) { + String itemKey = evt.getItemKey(); +// List objects = new ArrayList<>(); + JSONArray jsonArray = new JSONArray(); +// Map map = new HashMap<>(); + if (itemKey.equals("zcgj_queryinstances")) { + Set setIds = getSelectOrderIds(this.getSelectedRows()); + if (setIds.size() == 0) { + this.getView().showTipNotification("请选择要执行的数据。"); + return; + } else if (setIds.size() > 1) { + this.getView().showTipNotification("只能选择一条数据查看!"); + return; + } + DynamicObject[] receiveApplications = BusinessDataServiceHelper.load("ec_out_contract", "billno,billname,zcgj_renewal,zcgj_isrenewal", new QFilter[]{new QFilter("id", "in", setIds)}); + DynamicObject receiveApplication = receiveApplications[0]; + String billno = receiveApplication.getString("billno"); + + QFilter qf = new QFilter("zcgj_renewal.billno", QCP.equals,billno); + DynamicObject[] recontracts = BusinessDataServiceHelper.load("ec_out_contract", "id,billno,billname,zcgj_renewal", new QFilter[]{qf}); + for (DynamicObject recontract : recontracts) { + JSONObject jsonObject = new JSONObject(); + System.out.println(); + jsonObject.put("type","ec_out_contract"); + jsonObject.put("zcgj_billno",billno); + jsonObject.put("zcgj_billname",receiveApplication.getString("billname")); + jsonObject.put("zcgj_renewalnum",recontract.getString("billno")); + jsonObject.put("zcgj_renewalname",recontract.getString("billname")); +// objects.add( )); +// map.put(recontract.getLong("id"),recontract.getString("billno")); + jsonArray.add(jsonObject); + } + if (jsonArray.size()<1){ + this.getView().showTipNotification("该合同暂无续签合同!"); + return; + } + // 如果是弹出动态表单工具栏项被点击,则打开指定的动态表单 + if ("zcgj_queryinstances".equalsIgnoreCase(itemKey)) { + FormShowParameter formShowParameter = new FormShowParameter(); + // 弹窗案例-动态表单 页面标识 + formShowParameter.setFormId("zcgj_ec_renewal"); + // 自定义传参,把当前单据的文本字段传过去 + formShowParameter.setCustomParam("list", jsonArray.toJSONString()); + // 设置回调事件,回调插件为当前插件,标识为zcgj_ + formShowParameter.setCloseCallBack(new CloseCallBack(this, "zcgj_queryinstances")); + // 设置打开类型为模态框(不设置的话指令参数缺失,没办法打开页面) + formShowParameter.getOpenStyle().setShowType(ShowType.Modal); + // 当前页面发送showform指令。注意也可以从其他页面发送指令,后续有文章介绍 + this.getView().showForm(formShowParameter); + } + } + super.itemClick(evt); + } + + @Override + public void beforeItemClick(BeforeItemClickEvent evt) { + super.beforeItemClick(evt); + String itemKey = evt.getItemKey(); + if (itemKey.equals("zcgj_inrenewal")) { + Set setIds = getSelectOrderIds(this.getSelectedRows()); + if (setIds.size() == 0) { + this.getView().showTipNotification("请选择要执行的数据。"); + return; + } else if (setIds.size() > 1) { + this.getView().showTipNotification("只能选择一条数据查看!"); + return; + } + DynamicObject[] receiveApplications = BusinessDataServiceHelper.load("ec_out_contract", "billno,zcgj_renewal,zcgj_isrenewal,contstatus", new QFilter[]{new QFilter("id", "in", setIds)}); + DynamicObject receiveApplication = receiveApplications[0]; + boolean isrenewal = receiveApplication.getBoolean("zcgj_isrenewal"); + if (isrenewal){ + this.getView().showTipNotification("续签合同不能进行续签!"); + evt.setCancel(true); + return; + } + String contstatus = receiveApplication.getString("contstatus"); + if (!contstatus.equals("01")){ + this.getView().showTipNotification("收入合同需执行中才可进行续签!"); + evt.setCancel(true); + return; + } + } + } + + @NotNull + private Set getSelectOrderIds(@NotNull ListSelectedRowCollection selectedRows) { + Set setIds = new HashSet<>(); + for (ListSelectedRow selectedRow : selectedRows) { + setIds.add(NumberUtil.toLong(selectedRow.getPrimaryKeyValue())); + } + return setIds; + } + + @Override + public void beforeDoOperation(BeforeDoOperationEventArgs args) { + super.beforeDoOperation(args); + FormOperate operate = (FormOperate) args.getSource(); + String operateNo = operate.getOperateKey(); + if(operateNo.equalsIgnoreCase("copy")){ + ListSelectedRowCollection listSelectedData = args.getListSelectedData(); + String srcBillNo = listSelectedData.get(0).getBillNo(); + this.getView().getPageCache().put("srcBillNo",srcBillNo); + } + + } +} From 21cac3881c41ec109d7302b9ec0ecad76ec781ef Mon Sep 17 00:00:00 2001 From: xiaoshi <2272816786@qq.com> Date: Fri, 6 Jun 2025 17:12:37 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E6=94=AF=E5=87=BA=E7=BB=93=E7=AE=97?= =?UTF-8?q?=E7=BB=AD=E7=AD=BE=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../plugin/form/ContractSettleBillPlugin.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractSettleBillPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractSettleBillPlugin.java index 495959d..cff9c88 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractSettleBillPlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/ContractSettleBillPlugin.java @@ -4,12 +4,17 @@ import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.utils.StringUtils; import kd.bos.entity.datamodel.events.ChangeData; import kd.bos.entity.datamodel.events.PropertyChangedArgs; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; import kd.ec.basedata.common.enums.PayDirectionEnum; import kd.ec.contract.formplugin.settle.ContractSettleCommonEditPlugin; import kd.ec.contract.utils.SettleUpdateAmtUtils; +import zcgj.zcdev.zcdev.pr.plugin.utils.PluginUtils; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.Date; /** * 单据界面插件 @@ -26,6 +31,21 @@ public class ContractSettleBillPlugin extends ContractSettleCommonEditPlugin{ String name = e.getProperty().getName(); ChangeData changeData = e.getChangeSet()[0]; if (StringUtils.equals(name, "contract")) { + Object objcontract = this.getModel().getValue("contract"); + if (objcontract!=null){ + DynamicObject contract = (DynamicObject) objcontract; + DynamicObject contractInfo = BusinessDataServiceHelper.loadSingle("ec_in_contract", "id,billno,billname,zcgj_renewal,zcgj_isrenewal,zcgj_enddate", new QFilter[]{new QFilter("id", QCP.equals, contract.getLong("id"))}); + Date zcgjEnddate = contractInfo.getDate("zcgj_enddate"); + if (zcgjEnddate!=null){ + Date nowdate = new Date(); + int timeDays = PluginUtils.getTimeDays(zcgjEnddate, nowdate); + int endDays = Integer.parseInt(System.getProperty("contract.enddays")); +// int endDays = 100; + if (timeDays-endDays<=0){ + this.getView().showTipNotification("当前选择合同距离到期不足"+endDays+"天!"); + } + } + } DynamicObject contract = (DynamicObject)changeData.getNewValue(); this.clearUnitproject(); this.contractChanged(contract); From 2874c03ad767e893d26879c287df00226c73b743 Mon Sep 17 00:00:00 2001 From: zhangzhiguo Date: Mon, 9 Jun 2025 11:32:40 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E6=94=AF=E5=87=BA=E5=90=88=E5=90=8C?= =?UTF-8?q?=E7=A1=AE=E8=AE=A4=E5=8D=95=E7=B4=AF=E8=AE=A1=E5=86=B2=E9=94=80?= =?UTF-8?q?=E9=A2=84=E4=BB=98=E9=87=91=E9=A2=9D=E5=8A=9F=E8=83=BD=E5=BC=80?= =?UTF-8?q?=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../form/OutContractFinaceConfirmePlugin.java | 98 ++++++++++++++++++- 1 file changed, 96 insertions(+), 2 deletions(-) diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFinaceConfirmePlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFinaceConfirmePlugin.java index a91fe9b..780a9b4 100644 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFinaceConfirmePlugin.java +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/OutContractFinaceConfirmePlugin.java @@ -1,5 +1,7 @@ package zcgj.zcdev.zcdev.pr.plugin.form; +import kd.bos.algo.DataSet; +import kd.bos.algo.Row; import kd.bos.bill.AbstractBillPlugIn; import kd.bos.bill.BillShowParameter; import kd.bos.bill.OperationStatus; @@ -16,12 +18,15 @@ import kd.bos.form.events.HyperLinkClickListener; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.QueryServiceHelper; import kd.ec.contract.common.enums.DirectionEnum; import kd.sdk.plugin.Plugin; import java.math.BigDecimal; import java.math.RoundingMode; +import java.util.ArrayList; import java.util.EventObject; +import java.util.List; /** * 支出合同确认单插件 @@ -45,7 +50,9 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme initData(contractSettleIdObj); this.getView().invokeOperation("save"); } + //calBcCxAmt(); } + } } @@ -56,7 +63,8 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme getModel().setValue("zcgj_ec_out_contract_name",ecoutcontractsettle.getString("billname")); getModel().setValue("zcgj_ec_out_contractid", ecoutcontractsettle.getLong("id")); //id文本,冗余 getModel().setValue("zcgj_billname",ecoutcontractsettle.getString("billname")); - getModel().setValue("zcgj_contract",ecoutcontractsettle.getDynamicObject("contract")); + DynamicObject contract = ecoutcontractsettle.getDynamicObject("contract"); + getModel().setValue("zcgj_contract",contract); getModel().setValue("zcgj_contattr",ecoutcontractsettle.getDynamicObject("contattr")); getModel().setValue("zcgj_project",ecoutcontractsettle.getDynamicObject("project")); getModel().setValue("zcgj_period",ecoutcontractsettle.getDynamicObject("period")); @@ -72,6 +80,9 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme //DynamicObjectCollection entryEntity = this.getModel().getEntryEntity("zcgj_itementry"); DynamicObjectCollection entryEntity1 = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_itementry"); entryEntity1.clear(); + BigDecimal contractPayAmt = getContractPayAmt(contract); + BigDecimal finaceConfirmeAmt = getFinaceConfirmeAmt(contract); + BigDecimal amt = contractPayAmt.subtract(finaceConfirmeAmt); for (DynamicObject dynamicObject : itementry) { DynamicObject item = entryEntity1.addNew(); item.set("zcgj_payitem",dynamicObject.getDynamicObject("payitem")); @@ -80,6 +91,7 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme item.set("zcgj_rate",dynamicObject.getBigDecimal("rate")); item.set("zcgj_taxamt",dynamicObject.getBigDecimal("taxamt")); item.set("zcgj_remark",dynamicObject.getString("remark")); + item.set("zcgj_ljwcxamt",amt); } this.getView().updateView("zcgj_itementry"); } @@ -91,9 +103,12 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme this.ofTaxAmountChanged(changeData); //计算税额和不含税金额 }else if(StringUtils.equals(name, "zcgj_ec_out_contract_sett")){ DynamicObject newValue = (DynamicObject)changeData.getNewValue(); - initData(newValue.getLong("id")); + if(newValue!=null){ + initData(newValue.getLong("id")); + } } + } protected void ofTaxAmountChanged(ChangeData changeData) { @@ -156,4 +171,83 @@ public class OutContractFinaceConfirmePlugin extends AbstractBillPlugIn impleme } } + + /** + * 获取累计未冲销预付金额 + * @return 累计未冲销预付金额 + */ + /*private BigDecimal calBcCxAmt(){ + BigDecimal contractPayAmt = getContractPayAmt(); + BigDecimal finaceConfirmeAmt = getFinaceConfirmeAmt(); + BigDecimal amt = contractPayAmt.subtract(finaceConfirmeAmt); + // this.getModel().setValue("zcgj_ljwcxamt", amt, rowIndex); + DynamicObjectCollection dynamicObjectCollection = this.getModel().getDataEntity(true).getDynamicObjectCollection("zcgj_itementry"); + DynamicObjectCollection dynamicObjectCollection1 = this.getModel().getDataEntity().getDynamicObjectCollection("zcgj_itementry"); + DynamicObjectCollection zcgjItementry = this.getModel().getEntryEntity("zcgj_itementry"); + for (int i = 0; i < dynamicObjectCollection.size(); i++) { + this.getModel().setValue("zcgj_ljwcxamt", amt, i); + } + this.getView().updateView("zcgj_itementry"); + return amt; + }*/ + + /** + * 获取合同下所有付款申请的预付金额和 + * 累计实付金额(分) + */ + private BigDecimal getContractPayAmt(DynamicObject contract){ + List searchFilterList = new ArrayList<>(); + searchFilterList.add(new QFilter("entryentity.contract", QCP.equals,contract.getLong("id") )); + searchFilterList.add(new QFilter("entryentity.paymenttype", QCP.equals,"PREPAYMENT" )); + searchFilterList.add( new QFilter("billstatus", QCP.equals,"C" )); + DynamicObject[] outcontractmeasures = BusinessDataServiceHelper.load("ec_paymentapply", "entryentity.totalrealoftaxamount",searchFilterList.toArray(new QFilter [] {})); + if(outcontractmeasures!=null && outcontractmeasures.length>0){ + BigDecimal totalrealoftaxamountAll = BigDecimal.ZERO; + for (DynamicObject outcontractmeasure : outcontractmeasures) { + for (DynamicObject dynamicObject : outcontractmeasure.getDynamicObjectCollection("entryentity")) { + totalrealoftaxamountAll =totalrealoftaxamountAll.add(dynamicObject.getBigDecimal("totalrealoftaxamount")); + } + } + return totalrealoftaxamountAll; + } + return BigDecimal.ZERO; + } + + /** + * 获取合同下所有财务确认单的本次冲销预付金额 + */ + private BigDecimal getFinaceConfirmeAmt(DynamicObject contract){ + List searchFilterList = new ArrayList<>(); + searchFilterList.add(new QFilter("zcgj_contract", QCP.equals,contract.getLong("id") )); + searchFilterList.add(new QFilter("billstatus", QCP.equals,"C" )); + DynamicObject[] outcontractmeasures = BusinessDataServiceHelper.load("zcgj_ec_out_finaceconfirm", "zcgj_contract,zcgj_itementry.zcgj_bccxamt", searchFilterList.toArray(new QFilter [] {})); + if(outcontractmeasures!=null && outcontractmeasures.length>0){ + BigDecimal bccxamtAll = BigDecimal.ZERO; + for (DynamicObject outcontractmeasure : outcontractmeasures) { + for (DynamicObject dynamicObject : outcontractmeasure.getDynamicObjectCollection("zcgj_itementry")) { + bccxamtAll =bccxamtAll.add(dynamicObject.getBigDecimal("zcgj_bccxamt")); + } + } + return bccxamtAll; + } + return BigDecimal.ZERO; + /*BigDecimal bccxamtAll = BigDecimal.ZERO; + List searchFilterList = new ArrayList<>(); + searchFilterList.add(new QFilter("zcgj_contract", QCP.equals,contract.getLong("id") )); + searchFilterList.add(new QFilter("billstatus", QCP.equals,"C" )); + DataSet finaceconfirmDataSet = QueryServiceHelper.queryDataSet( + this.getClass().getName(), + "zcgj_ec_out_finaceconfirm", + "zcgj_contract,zcgj_itementry.zcgj_bccxamt as zcgj_bccxamt" , + searchFilterList.toArray(new QFilter [] {}), null + ); + if(finaceconfirmDataSet == null || finaceconfirmDataSet.isEmpty()){ + return bccxamtAll; + } + for (Row itemRow : finaceconfirmDataSet) { + BigDecimal bccxamt = itemRow.getBigDecimal("zcgj_bccxamt"); + bccxamtAll =bccxamtAll.add(bccxamt); + } + return bccxamtAll;*/ + } }