parent
6bf6c764c0
commit
b1c55f865b
|
@ -4,13 +4,14 @@ import kd.bos.bill.AbstractBillPlugIn;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
import kd.bos.form.events.AfterDoOperationEventArgs;
|
import kd.bos.form.events.AfterDoOperationEventArgs;
|
||||||
|
import kd.bos.form.events.ClosedCallBackEvent;
|
||||||
import kd.sdk.plugin.Plugin;
|
import kd.sdk.plugin.Plugin;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.EventObject;
|
import java.util.EventObject;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 单据界面插件
|
* 费用登记和付款申请的发票分录合计行表单插件
|
||||||
*/
|
*/
|
||||||
public class SumInvoiceEntryPlugin extends AbstractBillPlugIn implements Plugin {
|
public class SumInvoiceEntryPlugin extends AbstractBillPlugIn implements Plugin {
|
||||||
|
|
||||||
|
@ -43,4 +44,10 @@ public class SumInvoiceEntryPlugin extends AbstractBillPlugIn implements Plugin
|
||||||
super.afterDoOperation(args);
|
super.afterDoOperation(args);
|
||||||
updateAmt();
|
updateAmt();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
|
||||||
|
super.closedCallBack(closedCallBackEvent);
|
||||||
|
updateAmt();
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -34,8 +34,8 @@ public class CreatTargetCostFormPlugin extends AbstractBillPlugIn implements Plu
|
||||||
Object primaryKeyValue = dynamicObject.getPkValue();
|
Object primaryKeyValue = dynamicObject.getPkValue();
|
||||||
if ("qeug_creat".equals(evt.getItemKey())) {
|
if ("qeug_creat".equals(evt.getItemKey())) {
|
||||||
QFilter measurecostid = new QFilter("project", QCP.equals, dynamicObject.getDynamicObject("project").getPkValue());
|
QFilter measurecostid = new QFilter("project", QCP.equals, dynamicObject.getDynamicObject("project").getPkValue());
|
||||||
DynamicObject dynamicObject2 = BusinessDataServiceHelper.loadSingle("recos_aimcost", measurecostid.toArray());
|
DynamicObject[] load = BusinessDataServiceHelper.load("recos_aimcost", "id", measurecostid.toArray());
|
||||||
if (dynamicObject2!=null) {
|
if (load!=null&&load.length!=0) {
|
||||||
this.getView().showMessage("存在对应目标成本,无法生成");
|
this.getView().showMessage("存在对应目标成本,无法生成");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
package shkd.repc.recos.opplugin;
|
||||||
|
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
|
||||||
|
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||||
|
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||||
|
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.sdk.plugin.Plugin;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 单据操作插件
|
||||||
|
*/
|
||||||
|
public class DelBackTargetVersionOpPlugin extends AbstractOperationServicePlugIn implements Plugin {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||||
|
super.onPreparePropertys(e);
|
||||||
|
e.getFieldKeys().add("measurecostid");
|
||||||
|
e.getFieldKeys().add("shapetype");
|
||||||
|
e.getFieldKeys().add("project");
|
||||||
|
e.getFieldKeys().add("project.id");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
|
||||||
|
super.afterExecuteOperationTransaction(e);
|
||||||
|
DynamicObject[] dataEntities1 = e.getDataEntities();
|
||||||
|
if(dataEntities1!=null&&dataEntities1.length!=0){
|
||||||
|
for (int i1 = 0; i1 < dataEntities1.length; i1++) {
|
||||||
|
DynamicObject dynamicObject2 = dataEntities1[i1];
|
||||||
|
if("0".equals(dynamicObject2.getString("shapetype"))){
|
||||||
|
DynamicObject dynamicObject = dynamicObject2;
|
||||||
|
QFilter measurecostid = new QFilter("project", QCP.equals, dynamicObject.getDynamicObject("project").getPkValue())
|
||||||
|
.and("qeug_aimversionflag",QCP.equals,true);
|
||||||
|
DynamicObject[] recos_measurecosts = BusinessDataServiceHelper.load("recos_measurecost", "id", measurecostid.toArray());
|
||||||
|
if(recos_measurecosts!=null&&recos_measurecosts.length!=0){
|
||||||
|
for (int i = 0; i < recos_measurecosts.length; i++) {
|
||||||
|
DynamicObject recos_measurecost = recos_measurecosts[i];
|
||||||
|
DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(recos_measurecost.getPkValue(), "recos_measurecost");
|
||||||
|
dynamicObject1.set("qeug_aimversionflag",false);
|
||||||
|
// dynamicObject1.set("aimversionflag",false);刷新所有目标版
|
||||||
|
SaveServiceHelper.update(dynamicObject1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,115 @@
|
||||||
|
package shkd.repc.recos.opplugin;
|
||||||
|
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.resource.ResManager;
|
||||||
|
import kd.bos.entity.ExtendedDataEntity;
|
||||||
|
import kd.bos.entity.plugin.PreparePropertysEventArgs;
|
||||||
|
import kd.bos.entity.plugin.args.AfterOperationArgs;
|
||||||
|
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
|
||||||
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
import kd.bos.servicehelper.QueryServiceHelper;
|
||||||
|
import kd.repc.rebas.common.bizutil.ReOperateOptionUtil;
|
||||||
|
import kd.repc.rebas.common.enums.ReBillStatusEnum;
|
||||||
|
import kd.repc.rebas.common.util.ReDigitalUtil;
|
||||||
|
import kd.repc.rebas.opplugin.base.RebasBillValidator;
|
||||||
|
import kd.repc.recos.business.aimcost.ReAimCostUtil;
|
||||||
|
import kd.repc.recos.business.conplan.ReConPlanGenByAimCostHelper;
|
||||||
|
import kd.repc.recos.business.conplan.ReConPlanHelper;
|
||||||
|
import kd.repc.recos.business.costversion.ReCostVersionSyncUtil;
|
||||||
|
import kd.repc.recos.business.dyncost.ReDynCostSynUtil;
|
||||||
|
import kd.repc.recos.opplugin.billtpl.RecosBillUnAuditOpPlugin;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class ReAimCostUnAuditOpPluginTwo extends RecosBillUnAuditOpPlugin {
|
||||||
|
public ReAimCostUnAuditOpPluginTwo() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void onPreparePropertys(PreparePropertysEventArgs e) {
|
||||||
|
super.onPreparePropertys(e);
|
||||||
|
List<String> fieldKeys = e.getFieldKeys();
|
||||||
|
fieldKeys.add("billno");
|
||||||
|
fieldKeys.add("project");
|
||||||
|
fieldKeys.add("importflag");
|
||||||
|
fieldKeys.add("measurecostid");
|
||||||
|
fieldKeys.add("coststage");
|
||||||
|
fieldKeys.add("projectversion");
|
||||||
|
fieldKeys.add("bizdate");
|
||||||
|
fieldKeys.add("handler");
|
||||||
|
fieldKeys.add("shapetype");
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void checkBeforeOperation(RebasBillValidator validator, ExtendedDataEntity dataEntity) {
|
||||||
|
super.checkBeforeOperation(validator, dataEntity);
|
||||||
|
DynamicObject aimCost = dataEntity.getDataEntity();
|
||||||
|
DynamicObject project = aimCost.getDynamicObject("project");
|
||||||
|
boolean hasAdjustData = QueryServiceHelper.exists("recos_aimadjust", new QFilter[]{new QFilter("billstatus", "<>", ReBillStatusEnum.AUDITTED.getValue()), new QFilter("project", "=", project.getPkValue())});
|
||||||
|
if (hasAdjustData) {
|
||||||
|
validator.addErrorMessage(dataEntity, ResManager.loadKDString("已存在未审核的目标成本调整单,不允许反审核!", "ReAimCostUnAuditOpPlugin_0", "repc-recos-opplugin", new Object[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
Optional.ofNullable(ReAimCostUtil.getLastAimCostHead(project.getPkValue(), Boolean.FALSE)).ifPresent((lastAimCost) -> {
|
||||||
|
String currentVersion = aimCost.getString("billno").replace("V", "");
|
||||||
|
String lastBillNo = lastAimCost.getString("billno").replace("V", "");
|
||||||
|
String lastBigVersion = lastBillNo.substring(0, lastBillNo.lastIndexOf("."));
|
||||||
|
String currentBigVersion = currentVersion.substring(0, currentVersion.lastIndexOf("."));
|
||||||
|
if (ReDigitalUtil.compareTo(lastBigVersion, currentBigVersion) > 0) {
|
||||||
|
validator.addErrorMessage(dataEntity, ResManager.loadKDString("已存在较新版目标成本,不允许反审核。", "ReAimCostUnAuditOpPlugin_1", "repc-recos-opplugin", new Object[0]));
|
||||||
|
} else {
|
||||||
|
if (ReDigitalUtil.compareTo(lastBigVersion, currentBigVersion) == 0) {
|
||||||
|
String hisSmallVersion = lastBillNo.substring(lastBillNo.lastIndexOf(".") + 1);
|
||||||
|
String currentSmallVersion = currentVersion.substring(currentVersion.lastIndexOf(".") + 1);
|
||||||
|
if (ReDigitalUtil.compareTo(hisSmallVersion, currentSmallVersion) > 0) {
|
||||||
|
validator.addErrorMessage(dataEntity, ResManager.loadKDString("已存在较新版目标成本,不允许反审核。", "ReAimCostUnAuditOpPlugin_1", "repc-recos-opplugin", new Object[0]));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
boolean projectConPlan = QueryServiceHelper.exists("recos_conplan", new QFilter[]{new QFilter("billstatus", "in", new String[]{ReBillStatusEnum.SUBMITTED.getValue(), ReBillStatusEnum.AUDITTED.getValue()}), new QFilter("project", "=", project.getPkValue())});
|
||||||
|
if (projectConPlan) {
|
||||||
|
validator.addErrorMessage(dataEntity, ResManager.loadKDString("存在已提交或已审核状态的合约规划,不允许反审核。", "ReAimCostUnAuditOpPlugin_2", "repc-recos-opplugin", new Object[0]));
|
||||||
|
} else {
|
||||||
|
boolean genByMeasureCost = !ReOperateOptionUtil.checkOperateSource(this.getOption(), "recos_measurecost") && ("0".equals(aimCost.getString("shapetype")) || aimCost.getLong("measurecostid") != 0L);
|
||||||
|
if (genByMeasureCost) {
|
||||||
|
// validator.addErrorMessage(dataEntity, ResManager.loadKDString("该目标成本为成本测算生成,如需反审核,请对成本测算进行反审核。", "ReAimCostUnAuditOpPlugin_3", "repc-recos-opplugin", new Object[0]));
|
||||||
|
} else {
|
||||||
|
boolean opFromMeasureCost = ReOperateOptionUtil.checkOperateSource(this.getOption(), "recos_measurecost");
|
||||||
|
if (!opFromMeasureCost) {
|
||||||
|
boolean comeFromAimAdjust = QueryServiceHelper.exists("recos_aimadjust", new QFilter[]{new QFilter("project", "=", project.getPkValue()), new QFilter("coststage", "=", aimCost.getDynamicObject("coststage").getPkValue()), new QFilter("projectversion", "=", aimCost.getString("projectversion")), new QFilter("bizdate", "=", aimCost.get("bizdate")), new QFilter("handler", "=", aimCost.getDynamicObject("handler").getPkValue())});
|
||||||
|
if (comeFromAimAdjust) {
|
||||||
|
validator.addErrorMessage(dataEntity, ResManager.loadKDString("该目标成本为目标成本调整生成,不允许反审核。", "ReAimCostUnAuditOpPlugin_4", "repc-recos-opplugin", new Object[0]));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void endUnAuditTransaction(EndOperationTransactionArgs args, DynamicObject model) {
|
||||||
|
super.endUnAuditTransaction(args, model);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void afterUnAuditTransaction(AfterOperationArgs args, DynamicObject model) {
|
||||||
|
super.afterUnAuditTransaction(args, model);
|
||||||
|
this.syncConPlanByAimCostUnAudit(model.getPkValue());
|
||||||
|
ReCostVersionSyncUtil.syncCostVersionData("recos_aimcost");
|
||||||
|
Optional.ofNullable(model.getDynamicObject("project")).ifPresent((p) -> {
|
||||||
|
ReDynCostSynUtil.setDynCostLatestDataFlag(p.getPkValue());
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void syncConPlanByAimCostUnAudit(Object aimCostId) {
|
||||||
|
DynamicObject aimCostObj = BusinessDataServiceHelper.loadSingle(aimCostId, "recos_aimcost");
|
||||||
|
DynamicObject projectObj = aimCostObj.getDynamicObject("project");
|
||||||
|
ReConPlanHelper.deleteConPlanData((Long)projectObj.getPkValue());
|
||||||
|
DynamicObject preLastAimCost = ReAimCostUtil.getLastAimCostHead(projectObj.getPkValue(), true);
|
||||||
|
if (null != preLastAimCost) {
|
||||||
|
ReConPlanGenByAimCostHelper.syncConPlanByAimCost(preLastAimCost.getPkValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue