设备成本分摊插件
This commit is contained in:
parent
6072b60549
commit
27c717e76a
|
|
@ -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<String, Date> 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<String, Date> 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<String, Date> result = new HashMap<>();
|
||||
result.put("start", start);
|
||||
result.put("end", end);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
|
@ -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<Object> 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<String, Date> 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<String, Date> 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<String, Date> result = new HashMap<>();
|
||||
result.put("start", start);
|
||||
result.put("end", end);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue