From 27c717e76aeeb90ae07425049a9967b30847022b Mon Sep 17 00:00:00 2001 From: zhangzhiguo <421587375@qq.com> Date: Mon, 24 Nov 2025 18:06:25 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BE=E5=A4=87=E6=88=90=E6=9C=AC=E5=88=86?= =?UTF-8?q?=E6=91=8A=E6=8F=92=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EquipmentCostAutoGetDataFormPlugin.java | 146 --------- .../form/EquipmentCostSplitFormPluginExt.java | 288 ++++++++++++++++++ 2 files changed, 288 insertions(+), 146 deletions(-) delete mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCostAutoGetDataFormPlugin.java create mode 100644 code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCostSplitFormPluginExt.java diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCostAutoGetDataFormPlugin.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCostAutoGetDataFormPlugin.java deleted file mode 100644 index d0ec6fd..0000000 --- a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCostAutoGetDataFormPlugin.java +++ /dev/null @@ -1,146 +0,0 @@ -package zcgj.zcdev.zcdev.pr.plugin.form; - -import kd.bos.bill.AbstractBillPlugIn; -import kd.bos.dataentity.OperateOption; -import kd.bos.dataentity.entity.DynamicObject; -import kd.bos.dataentity.entity.DynamicObjectCollection; -import kd.bos.dataentity.entity.LocaleString; -import kd.bos.dataentity.utils.StringUtils; -import kd.bos.entity.operate.result.OperationResult; -import kd.bos.form.ConfirmCallBackListener; -import kd.bos.form.MessageBoxOptions; -import kd.bos.form.control.Control; -import kd.bos.form.control.events.BeforeClickEvent; -import kd.bos.form.control.events.BeforeItemClickEvent; -import kd.bos.form.events.BeforeDoOperationEventArgs; -import kd.bos.form.operate.FormOperate; -import kd.bos.orm.query.QCP; -import kd.bos.orm.query.QFilter; -import kd.bos.servicehelper.BusinessDataServiceHelper; -import kd.bos.servicehelper.operation.OperationServiceHelper; -import kd.bos.servicehelper.operation.SaveServiceHelper; -import kd.bos.servicehelper.user.UserServiceHelper; - -import java.math.BigDecimal; -import java.time.LocalDate; -import java.time.YearMonth; -import java.time.ZoneId; -import java.time.format.DateTimeFormatter; -import java.util.Date; -import java.util.EventObject; -import java.util.HashMap; -import java.util.Map; - -import static kd.ai.gai.core.Constant.RepoInfo.number; - -/** - * 设备成本核算自动取数逻辑 - */ -public class EquipmentCostAutoGetDataFormPlugin extends AbstractBillPlugIn { - - @Override - public void registerListener(EventObject e) { - super.registerListener(e); - //监听工具栏按钮点击事件 - this.addItemClickListeners("advcontoolbarap"); - } - - @Override - public void beforeDoOperation(BeforeDoOperationEventArgs args) { - super.beforeDoOperation(args); - FormOperate operate = (FormOperate) args.getSource(); - String opKey = operate.getOperateKey(); - if (opKey.equals("autosplit")) { - Long currentUserId = UserServiceHelper.getCurrentUserId(); - - // this.getView().showMessage("自动取数 beforeItemClick"); - DynamicObject org = (DynamicObject)this.getModel().getValue("org");//所属组织 - DynamicObject project = (DynamicObject)this.getModel().getValue("project");//工程项目 - DynamicObject splitperiod = (DynamicObject)this.getModel().getValue("splitperiod");//期间 - - if(org!=null){ - long orgId = org.getLong("id"); - QFilter filterOrgId = new QFilter("zcgj_entryentity.zcgj_zjuseorg", QCP.equals,orgId); - filterOrgId.and(new QFilter("billstatus", QCP.equals,"C")); - DynamicObject[] equipinfoArray = BusinessDataServiceHelper.load("eceq_equipinfo", - "creator,zcgj_entryentity.zcgj_assperiod,zcgj_entryentity.zcgj_headusedept,zcgj_entryentity.zcgj_entrybillno,zcgj_entryentity.zcgj_shareamount", new QFilter[]{filterOrgId}); - - DynamicObject[] loadsettle = BusinessDataServiceHelper.load("eceq_settle", "", - new QFilter[]{new QFilter("org", "=", org.getLong("id")) - , new QFilter("period", "=", splitperiod.getLong("id")), - new QFilter("billstatus", "=", "C").or(new QFilter("billstatus", "=", "B"))}); - if(loadsettle.length == 0){ - //eceq_settle - DynamicObject eceqsettle =BusinessDataServiceHelper.newDynamicObject("eceq_settle");//设备费用结算 - eceqsettle.set("org",org); - eceqsettle.set("objecttype","1"); - eceqsettle.set("internalorg",org); - eceqsettle.set("project",project); - eceqsettle.set("period",splitperiod); - String periodNumber = splitperiod.getString("number"); - Map monthStartAndEnd = getMonthStartAndEnd(periodNumber); - eceqsettle.set("begindate",monthStartAndEnd.get("start")); - eceqsettle.set("enddate",monthStartAndEnd.get("end")); - eceqsettle.set("creator",currentUserId); - eceqsettle.set("billname",org.getString("name")+"设备结算"); - eceqsettle.set("billstatus","C"); - int i=0; - DynamicObjectCollection entryentity = eceqsettle.getDynamicObjectCollection("entryentity");//设备结算分录 - BigDecimal allAmount = BigDecimal.ZERO; - for (DynamicObject equipinfo : equipinfoArray) {//设备详情 - DynamicObject eceqequipmentinfo = BusinessDataServiceHelper.loadSingle(equipinfo.getLong("id"), "eceq_equipment_info"); - DynamicObjectCollection dynamicObjectCollection = equipinfo.getDynamicObjectCollection("zcgj_entryentity");//设备详情折旧信息分录 - for (DynamicObject dynamicObject : dynamicObjectCollection) { - DynamicObject zcgjAssperiod = dynamicObject.getDynamicObject("zcgj_assperiod"); - if(zcgjAssperiod!=null && zcgjAssperiod.getString("number").equals(periodNumber)){ - BigDecimal zcgjShareamount = dynamicObject.getBigDecimal("zcgj_shareamount"); - DynamicObject entryentityentity = entryentity.addNew(); - allAmount=allAmount.add(zcgjShareamount); - entryentityentity.set("usestartdate",monthStartAndEnd.get("start"));//单价 - entryentityentity.set("useenddate",monthStartAndEnd.get("end"));//单价 - - entryentityentity.set("unitprice",zcgjShareamount);//单价 - entryentityentity.set("amount",zcgjShareamount);//金额 - entryentityentity.set("taxprice",zcgjShareamount);//含税单价 - entryentityentity.set("taxamount",zcgjShareamount);//含税金额 - entryentityentity.set("accountnum",1);//核算数量 - entryentityentity.set("equipment",eceqequipmentinfo);//设备名称 - i++; - } - } - } - eceqsettle.set("curamount",allAmount);//本期结算金额 - eceqsettle.set("curoftaxamount",allAmount);//curoftaxamount - - if(i>0){ - SaveServiceHelper.saveOperate("eceq_settle", new DynamicObject[]{eceqsettle}, null);//设备结算 - //OperateOption option= OperateOption.create(); - //OperationResult resultsubmit = OperationServiceHelper.executeOperate("submit", "eceq_settle", new DynamicObject[]{eceqsettle}, option); - //OperationResult resultaudit = OperationServiceHelper.executeOperate("audit", "eceq_settle", new DynamicObject[]{eceqsettle}, option); - - } - this.getView().showLoading(new LocaleString("拉取数据中,请稍后!"), 2000); - // this.getView().showMessage("拉取数据中,请稍后!"); - } - - } - } - } - - - public static Map getMonthStartAndEnd(String yearMonthStr) { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMM"); - YearMonth yearMonth = YearMonth.parse(yearMonthStr, formatter); - - // LocalDate 转换为 Date - ZoneId zone = ZoneId.systemDefault(); - - Date start = Date.from(yearMonth.atDay(1).atStartOfDay(zone).toInstant()); - Date end = Date.from(yearMonth.atEndOfMonth().atTime(23, 59, 59).atZone(zone).toInstant()); - - Map result = new HashMap<>(); - result.put("start", start); - result.put("end", end); - return result; - } -} diff --git a/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCostSplitFormPluginExt.java b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCostSplitFormPluginExt.java new file mode 100644 index 0000000..2d3bcf5 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-pr/src/main/java/zcgj/zcdev/zcdev/pr/plugin/form/EquipmentCostSplitFormPluginExt.java @@ -0,0 +1,288 @@ +package zcgj.zcdev.zcdev.pr.plugin.form; + +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.dataentity.entity.DynamicObjectCollection; +import kd.bos.dataentity.entity.LocaleString; +import kd.bos.dataentity.resource.ResManager; +import kd.bos.form.events.AfterDoOperationEventArgs; +import kd.bos.orm.ORM; +import kd.bos.orm.query.QCP; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.bos.servicehelper.user.UserServiceHelper; +import kd.ec.eceq.business.model.BaseConstant; + +import java.math.BigDecimal; +import java.time.YearMonth; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.*; + +/** + * 设备成本分摊插件 + */ +public class EquipmentCostSplitFormPluginExt extends EquipmentCardListPlugin{ + + @Override + public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) { + //super.afterDoOperation(afterDoOperationEventArgs); + switch (afterDoOperationEventArgs.getOperateKey()) { + case "autosplit": + this.autoGenSettData(); + this.autoSplitCost(); + break; + case "deletesubentry": + int subEntryIndex = this.getModel().getEntryCurrentRowIndex("costsplitentity"); + int subRowCount = this.getModel().getEntryRowCount("costsplitentity"); + if (subEntryIndex >= 0 && subRowCount > 0) { + int parentRowIndex = this.getModel().getEntryCurrentRowIndex("settlesplitentity"); + BigDecimal curamount = (BigDecimal)this.getModel().getValue("curamount", parentRowIndex); + BigDecimal oldsplitamount = (BigDecimal)this.getModel().getValue("oldsplitamount", parentRowIndex); + BigDecimal curSplitamount = this.sumAmount("costsplitentity", "splitamount"); + this.getModel().setValue("cursplitamount", curSplitamount, parentRowIndex); + BigDecimal restsplitamount = curamount.subtract(oldsplitamount).subtract(curSplitamount); + this.getModel().setValue("restsplitamount", restsplitamount, parentRowIndex); + this.getView().updateView("settlesplitentity"); + this.refreshCostamount(); + } + } + } + + private void autoSplitCost() { + ORM orm = ORM.create(); + DynamicObjectCollection costSplitList = this.getModel().getEntryEntity("settlesplitentity"); + costSplitList.clear(); + DynamicObject settleSplit = null; + if (this.getModel().getValue("project") == null) { + this.getView().showTipNotification(ResManager.loadKDString("工程项目不能为空。", "EquipmentCostSplitFormPlugin_2", "ec-eceq-formplugin", new Object[0])); + } else { + DynamicObject project = (DynamicObject)this.getModel().getValue("project"); + DynamicObject period = (DynamicObject)this.getModel().getValue("splitperiod"); + QFilter qFilter = new QFilter("project", "=", project.getPkValue()); + QFilter qFilter1 = new QFilter("id", "<>", this.getModel().getDataEntity().getPkValue()); + DynamicObject[] equipCostSpiltList = BusinessDataServiceHelper.load("eceq_costsplit", "settlesplitentity,settlesplitentity.settleid", new QFilter[]{qFilter, qFilter1}); + List settleIds = new ArrayList(); + + for(DynamicObject equipCostSpilt : equipCostSpiltList) { + for(DynamicObject settleSplitEntry : equipCostSpilt.getDynamicObjectCollection("settlesplitentity")) { + settleIds.add(settleSplitEntry.get("settleid")); + } + } + + QFilter settleIdsInEquipCostSpiltFilter; + if (settleIds.isEmpty()) { + settleIdsInEquipCostSpiltFilter = new QFilter("1", "=", 1); + } else { + settleIdsInEquipCostSpiltFilter = new QFilter("id", "not in", settleIds); + } + + QFilter projectFilter = new QFilter("project", "=", project.getPkValue()); + QFilter periodFilter = new QFilter("period.enddate", "<=", period.getDate("enddate")); + QFilter isallsplitFilter = new QFilter("isallsplit", "=", "0"); + QFilter iscostFilter = new QFilter("iscost", "=", false); + QFilter billStatusFilter = new QFilter("billstatus", "=", "C"); + DynamicObject[] settleList = BusinessDataServiceHelper.load("eceq_settle", "billno, billstatus, creator, modifier, auditor, auditdate, modifytime, createtime, org, billname, project, objecttype, internalorg, externalunit, period, begindate, enddate, contract, taxrate, curoftaxamount, totaltax, curamount, description, isallsplit, objecttypeshowname, currency, iscost, issettle, unitproject,entryentity.equipment,entryentity.procbs,entryentity.ca,entryentity.proboq,entryentity.issplit,entryentity.amount,entryentity.zcgj_sectype1", new QFilter[]{projectFilter, isallsplitFilter, billStatusFilter, periodFilter, iscostFilter, settleIdsInEquipCostSpiltFilter}); + if (settleList.length == 0) { + this.getView().showTipNotification(ResManager.loadKDString("没有需要分摊的数据。", "EquipmentCostSplitFormPlugin_4", "ec-eceq-formplugin", new Object[0])); + } + + long[] entryIds = orm.genLongIds(costSplitList.getDynamicObjectType(), settleList.length); + + for(int i = 0; i < settleList.length; ++i) { + settleSplit = new DynamicObject(costSplitList.getDynamicObjectType()); + settleSplit.set(BaseConstant.ID_ENTITY_PK, entryIds[i]); + settleSplit.set("settleno", settleList[i].get("billno")); + if ("1".equals(settleList[i].getString("objecttype"))) { + settleSplit.set("externalunit", settleList[i].getDynamicObject("internalorg").get("name")); + } else { + settleSplit.set("externalunit", settleList[i].getDynamicObject("externalunit").get("name")); + } + + settleSplit.set("contract", settleList[i].getDynamicObject("contract")); + settleSplit.set("period", settleList[i].getDynamicObject("period")); + settleSplit.set("curamount", settleList[i].get("curamount")); + settleSplit.set("settleid", settleList[i].getPkValue()); + QFilter settleFilter = new QFilter("settlesplitentity.settleno", "=", settleList[i].get("billno")); + QFilter statusFilter = new QFilter("billstatus", "=", "C"); + DynamicObject[] settleSplits = BusinessDataServiceHelper.load("eceq_costsplit", "settlesplitentity.id,settlesplitentity.cursplitamount,settlesplitentity.settleid", new QFilter[]{settleFilter, statusFilter}); + BigDecimal oldAmount = new BigDecimal((double)0.0F); + new BigDecimal((double)0.0F); + BigDecimal curamount = settleList[i].getBigDecimal("curamount"); + BigDecimal cursplitamount; + if (settleSplits.length <= 0) { + oldAmount = new BigDecimal((double)0.0F); + cursplitamount = settleList[i].getBigDecimal("curamount"); + } else { + for(int j = 0; j < settleSplits.length; ++j) { + DynamicObjectCollection settlesplitentitys = settleSplits[j].getDynamicObjectCollection("settlesplitentity"); + + for(int k = 0; k < settlesplitentitys.size(); ++k) { + if ((Long)settleList[i].getPkValue() == ((DynamicObject)settlesplitentitys.get(k)).getLong("settleid")) { + oldAmount = oldAmount.add(((DynamicObject)settlesplitentitys.get(k)).getBigDecimal("cursplitamount")); + break; + } + } + } + + cursplitamount = new BigDecimal((double)0.0F); + } + + settleSplit.set("oldsplitamount", oldAmount); + settleSplit.set("cursplitamount", cursplitamount); + BigDecimal restsplitamount = curamount.subtract(oldAmount).subtract(cursplitamount); + settleSplit.set("restsplitamount", restsplitamount); + DynamicObjectCollection entryentityList = settleList[i].getDynamicObjectCollection("entryentity"); + DynamicObject unitProject = settleList[i].getDynamicObject("unitproject"); + DynamicObjectCollection costSplitDetailList = settleSplit.getDynamicObjectCollection("costsplitentity"); + DynamicObject costSplitDetail = null; + long[] subEntryIds = orm.genLongIds(costSplitDetailList.getDynamicObjectType(), entryentityList.size()); + + for(int j = 0; j < entryentityList.size(); ++j) { + costSplitDetail = new DynamicObject(costSplitDetailList.getDynamicObjectType()); + costSplitDetail.set(BaseConstant.ID_ENTITY_PK, subEntryIds[j]); + if (unitProject != null) { + costSplitDetail.set("unitproject", unitProject); + } + + costSplitDetail.set("equipment", ((DynamicObject)entryentityList.get(j)).getDynamicObject("equipment")); + costSplitDetail.set("proboq", ((DynamicObject)entryentityList.get(j)).getDynamicObject("proboq")); + costSplitDetail.set("procbs", ((DynamicObject)entryentityList.get(j)).getDynamicObject("procbs")); + costSplitDetail.set("ca", ((DynamicObject)entryentityList.get(j)).getDynamicObject("ca")); + costSplitDetail.set("settleentryid", ((DynamicObject)entryentityList.get(j)).getPkValue()); + costSplitDetail.set("zcgj_sectype1", ((DynamicObject)entryentityList.get(j)).getString("zcgj_sectype1")); + costSplitDetail.set("costtype", "equfee"); + if (settleSplits.length > 0) { + costSplitDetail.set("splitamount", new BigDecimal((double)0.0F)); + } else { + costSplitDetail.set("splitamount", ((DynamicObject)entryentityList.get(j)).getBigDecimal("amount")); + } + + costSplitDetailList.add(costSplitDetail); + } + + settleSplit.set("costsplitentity", costSplitDetailList); + costSplitList.add(settleSplit); + } + + this.getModel().updateEntryCache(costSplitList); + this.getView().updateView("settlesplitentity"); + this.getView().updateView("costsplitentity"); + this.refreshCostamount(); + } + } + + protected void refreshCostamount() { + BigDecimal cursplitamount = this.sumAmount("settlesplitentity", "cursplitamount"); + this.getModel().setValue("costamount", cursplitamount); + } + + protected BigDecimal sumAmount(String entryKey, String col) { + BigDecimal totalAmt = BigDecimal.ZERO; + int index = this.getModel().getEntryRowCount(entryKey); + + for(int i = 0; i < index; ++i) { + Object splitAmt = this.getModel().getValue(col, i); + if (splitAmt != null) { + totalAmt = totalAmt.add((BigDecimal)splitAmt); + } + } + + return totalAmt; + } + + /** + * 自动生成设备结算单数据 + */ + private void autoGenSettData(){ + Long currentUserId = UserServiceHelper.getCurrentUserId(); + // this.getView().showMessage("自动取数 beforeItemClick"); + DynamicObject org = (DynamicObject)this.getModel().getValue("org");//所属组织 + DynamicObject project = (DynamicObject)this.getModel().getValue("project");//工程项目 + DynamicObject splitperiod = (DynamicObject)this.getModel().getValue("splitperiod");//期间 + + if(org!=null){ + long orgId = org.getLong("id"); + QFilter filterOrgId = new QFilter("zcgj_entryentity.zcgj_zjuseorg", QCP.equals,orgId); + filterOrgId.and(new QFilter("billstatus", QCP.equals,"C")); + DynamicObject[] equipinfoArray = BusinessDataServiceHelper.load("eceq_equipinfo", + "creator,zcgj_entryentity.zcgj_assperiod,zcgj_entryentity.zcgj_headusedept,zcgj_entryentity.zcgj_entrybillno,zcgj_entryentity.zcgj_shareamount", new QFilter[]{filterOrgId}); + + DynamicObject[] loadsettle = BusinessDataServiceHelper.load("eceq_settle", "", + new QFilter[]{new QFilter("org", "=", org.getLong("id")) + , new QFilter("period", "=", splitperiod.getLong("id")), + new QFilter("billstatus", "=", "C").or(new QFilter("billstatus", "=", "B"))}); + if(loadsettle.length == 0){ + //eceq_settle + DynamicObject eceqsettle =BusinessDataServiceHelper.newDynamicObject("eceq_settle");//设备费用结算 + eceqsettle.set("org",org); + eceqsettle.set("objecttype","1"); + eceqsettle.set("internalorg",org); + eceqsettle.set("project",project); + eceqsettle.set("period",splitperiod); + String periodNumber = splitperiod.getString("number"); + Map monthStartAndEnd = getMonthStartAndEnd(periodNumber); + eceqsettle.set("begindate",monthStartAndEnd.get("start")); + eceqsettle.set("enddate",monthStartAndEnd.get("end")); + eceqsettle.set("creator",currentUserId); + eceqsettle.set("billname",org.getString("name")+"设备结算"); + eceqsettle.set("billstatus","C"); + int i=0; + DynamicObjectCollection entryentity = eceqsettle.getDynamicObjectCollection("entryentity");//设备结算分录 + BigDecimal allAmount = BigDecimal.ZERO; + for (DynamicObject equipinfo : equipinfoArray) {//设备详情 + DynamicObject eceqequipmentinfo = BusinessDataServiceHelper.loadSingle(equipinfo.getLong("id"), "eceq_equipment_info"); + DynamicObjectCollection dynamicObjectCollection = equipinfo.getDynamicObjectCollection("zcgj_entryentity");//设备详情折旧信息分录 + for (DynamicObject dynamicObject : dynamicObjectCollection) { + DynamicObject zcgjAssperiod = dynamicObject.getDynamicObject("zcgj_assperiod"); + if(zcgjAssperiod!=null && zcgjAssperiod.getString("number").equals(periodNumber)){ + BigDecimal zcgjShareamount = dynamicObject.getBigDecimal("zcgj_shareamount"); + DynamicObject entryentityentity = entryentity.addNew(); + allAmount=allAmount.add(zcgjShareamount); + entryentityentity.set("usestartdate",monthStartAndEnd.get("start"));//单价 + entryentityentity.set("useenddate",monthStartAndEnd.get("end"));//单价 + + entryentityentity.set("unitprice",zcgjShareamount);//单价 + entryentityentity.set("amount",zcgjShareamount);//金额 + entryentityentity.set("taxprice",zcgjShareamount);//含税单价 + entryentityentity.set("taxamount",zcgjShareamount);//含税金额 + entryentityentity.set("accountnum",1);//核算数量 + entryentityentity.set("equipment",eceqequipmentinfo);//设备名称 + entryentityentity.set("zcgj_sectype1","30.20");//设备名称 + i++; + } + } + } + eceqsettle.set("curamount",allAmount);//本期结算金额 + eceqsettle.set("curoftaxamount",allAmount);//curoftaxamount + + if(i>0){ + SaveServiceHelper.saveOperate("eceq_settle", new DynamicObject[]{eceqsettle}, null);//设备结算 + //OperateOption option= OperateOption.create(); + //OperationResult resultsubmit = OperationServiceHelper.executeOperate("submit", "eceq_settle", new DynamicObject[]{eceqsettle}, option); + //OperationResult resultaudit = OperationServiceHelper.executeOperate("audit", "eceq_settle", new DynamicObject[]{eceqsettle}, option); + + } + this.getView().showLoading(new LocaleString("拉取数据中,请稍后!"), 2000); + // this.getView().showMessage("拉取数据中,请稍后!"); + } + + } + } + + public static Map getMonthStartAndEnd(String yearMonthStr) { + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMM"); + YearMonth yearMonth = YearMonth.parse(yearMonthStr, formatter); + + // LocalDate 转换为 Date + ZoneId zone = ZoneId.systemDefault(); + + Date start = Date.from(yearMonth.atDay(1).atStartOfDay(zone).toInstant()); + Date end = Date.from(yearMonth.atEndOfMonth().atTime(23, 59, 59).atZone(zone).toInstant()); + + Map result = new HashMap<>(); + result.put("start", start); + result.put("end", end); + return result; + } +}