成本测算:添加反审核校验
This commit is contained in:
		
							parent
							
								
									b1c55f865b
								
							
						
					
					
						commit
						2cbc4b6036
					
				| 
						 | 
				
			
			@ -0,0 +1,133 @@
 | 
			
		|||
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.operate.result.IOperateInfo;
 | 
			
		||||
import kd.bos.entity.operate.result.OperationResult;
 | 
			
		||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
 | 
			
		||||
import kd.bos.entity.plugin.args.AfterOperationArgs;
 | 
			
		||||
import kd.bos.entity.plugin.args.BeginOperationTransactionArgs;
 | 
			
		||||
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
 | 
			
		||||
import kd.bos.orm.query.QCP;
 | 
			
		||||
import kd.bos.orm.query.QFilter;
 | 
			
		||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
 | 
			
		||||
import kd.bos.servicehelper.QueryServiceHelper;
 | 
			
		||||
import kd.repc.rebas.common.bizutil.ReProjectUtil;
 | 
			
		||||
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.AimCostGenByMeasureHelper;
 | 
			
		||||
import kd.repc.recos.business.conplan.ReConPlanHelper;
 | 
			
		||||
import kd.repc.recos.business.costversion.ReCostVersionSyncUtil;
 | 
			
		||||
import kd.repc.recos.business.measure.ReMeasureCostUtil;
 | 
			
		||||
import kd.repc.recos.business.measure.ReMeasureInterperiodUtil;
 | 
			
		||||
import kd.repc.recos.opplugin.billtpl.RecosBillUnAuditOpPlugin;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.Optional;
 | 
			
		||||
 | 
			
		||||
public class ReMeasureCostUnAuditOpPluginTwo extends RecosBillUnAuditOpPlugin {
 | 
			
		||||
    public ReMeasureCostUnAuditOpPluginTwo() {
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void onPreparePropertys(PreparePropertysEventArgs e) {
 | 
			
		||||
        super.onPreparePropertys(e);
 | 
			
		||||
        List<String> fieldKeys = e.getFieldKeys();
 | 
			
		||||
        fieldKeys.add("project");
 | 
			
		||||
        fieldKeys.add("billno");
 | 
			
		||||
        fieldKeys.add("aimversionflag");
 | 
			
		||||
        fieldKeys.add("version");
 | 
			
		||||
        fieldKeys.add("hasconplangrpflag");
 | 
			
		||||
        fieldKeys.add("coststage");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void checkBeforeOperation(RebasBillValidator validator, ExtendedDataEntity dataEntity) {
 | 
			
		||||
        super.checkBeforeOperation(validator, dataEntity);
 | 
			
		||||
        DynamicObject measureCost = dataEntity.getDataEntity();
 | 
			
		||||
        DynamicObject project = measureCost.getDynamicObject("project");
 | 
			
		||||
        DynamicObject costStage = measureCost.getDynamicObject("coststage");
 | 
			
		||||
        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("已存在未审核的目标成本调整单,不允许反审核!", "ReMeasureCostUnAuditOpPlugin_0", "repc-recos-opplugin", new Object[0]));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        Optional.ofNullable(ReMeasureCostUtil.getHistoryMeasureCost(project.getPkValue(), measureCost.getPkValue(), costStage.getPkValue())).ifPresent((hisMeasure) -> {
 | 
			
		||||
            String currentVersion = measureCost.getString("billno").replace("V", "");
 | 
			
		||||
            String hisBillNo = hisMeasure.getString("billno").replace("V", "");
 | 
			
		||||
            String hisBigVersion = hisBillNo.substring(0, hisBillNo.lastIndexOf("."));
 | 
			
		||||
            String currentBigVersion = currentVersion.substring(0, currentVersion.lastIndexOf("."));
 | 
			
		||||
            if (ReDigitalUtil.compareTo(hisBigVersion, currentBigVersion) > 0) {
 | 
			
		||||
                validator.addErrorMessage(dataEntity, ResManager.loadKDString("已有下一版本,不能反审核。", "ReMeasureCostUnAuditOpPlugin_1", "repc-recos-opplugin", new Object[0]));
 | 
			
		||||
            } else {
 | 
			
		||||
                if (ReDigitalUtil.compareTo(hisBigVersion, currentBigVersion) == 0) {
 | 
			
		||||
                    String hisSmallVersion = hisBillNo.substring(hisBillNo.lastIndexOf(".") + 1);
 | 
			
		||||
                    String currentSmallVersion = currentVersion.substring(currentVersion.lastIndexOf(".") + 1);
 | 
			
		||||
                    if (ReDigitalUtil.compareTo(hisSmallVersion, currentSmallVersion) > 0) {
 | 
			
		||||
                        validator.addErrorMessage(dataEntity, ResManager.loadKDString("已有下一版本,不能反审核。", "ReMeasureCostUnAuditOpPlugin_1", "repc-recos-opplugin", new Object[0]));
 | 
			
		||||
                        return;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        boolean targetFlag = measureCost.getBoolean("aimversionflag");
 | 
			
		||||
        if (targetFlag) {
 | 
			
		||||
            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("对应项目分期合约规划为已审核状态或已提交, 不能反审核。", "ReMeasureCostUnAuditOpPlugin_2", "repc-recos-opplugin", new Object[0]));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        QFilter measurecostid = new QFilter("project", QCP.equals, measureCost.getDynamicObject("project").getPkValue());
 | 
			
		||||
        DynamicObject[] load = BusinessDataServiceHelper.load("recos_aimcost", "id", measurecostid.toArray());
 | 
			
		||||
        if (load!=null&&load.length!=0) {
 | 
			
		||||
            validator.addErrorMessage(dataEntity, ResManager.loadKDString("存在对应项目的目标成本,无法反审核。", "ReMeasureCostUnAuditOpPlugin_2", "repc-recos-opplugin", new Object[0]));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (measureCost.getBoolean("aimversionflag")) {
 | 
			
		||||
            Boolean hasSaveConPlan = ReConPlanHelper.checkConPlanStatus(project.getLong("id"));
 | 
			
		||||
            if (hasSaveConPlan) {
 | 
			
		||||
                OperationResult unAuditOpResult = AimCostGenByMeasureHelper.unAuditAimCost(measureCost.getPkValue());
 | 
			
		||||
                if (null != unAuditOpResult && !unAuditOpResult.isSuccess()) {
 | 
			
		||||
                    validator.addErrorMessage(dataEntity, ((IOperateInfo)unAuditOpResult.getAllErrorOrValidateInfo().get(0)).getMessage());
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void beginUnAuditTransaction(BeginOperationTransactionArgs args, DynamicObject model) {
 | 
			
		||||
        super.beginUnAuditTransaction(args, model);
 | 
			
		||||
        DynamicObject project = model.getDynamicObject("project");
 | 
			
		||||
        DynamicObject hisMeasure = ReMeasureCostUtil.getHistoryMeasureCost(project.getPkValue(), model.getPkValue());
 | 
			
		||||
        if (null == hisMeasure) {
 | 
			
		||||
            model.set("hasconplangrpflag", (Object)null);
 | 
			
		||||
        } else {
 | 
			
		||||
            model.set("hasconplangrpflag", hisMeasure.get("hasconplangrpflag"));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void endUnAuditTransaction(EndOperationTransactionArgs args, DynamicObject model) {
 | 
			
		||||
        super.endUnAuditTransaction(args, model);
 | 
			
		||||
        DynamicObject project = model.getDynamicObject("project");
 | 
			
		||||
        long currLeafProjectId = project.getLong("id");
 | 
			
		||||
        long mainProjectId = ReProjectUtil.getProjectF7(currLeafProjectId).getLong("mainprojectid");
 | 
			
		||||
        long costStageId = model.getDynamicObject("coststage").getLong("id");
 | 
			
		||||
        ReMeasureInterperiodUtil.unAuditUpdateAllInterperiodDataByProject(mainProjectId, model.getLong("id"), currLeafProjectId, costStageId);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected void afterUnAuditTransaction(AfterOperationArgs args, DynamicObject model) {
 | 
			
		||||
        super.afterUnAuditTransaction(args, model);
 | 
			
		||||
        if (model.getBoolean("aimversionflag")) {
 | 
			
		||||
            DynamicObject project = model.getDynamicObject("project");
 | 
			
		||||
            Boolean hasSaveConPlan = ReConPlanHelper.checkConPlanStatus(project.getLong("id"));
 | 
			
		||||
            if (hasSaveConPlan) {
 | 
			
		||||
                AimCostGenByMeasureHelper.deleteAimCost(model.getPkValue());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        ReCostVersionSyncUtil.syncCostVersionData("recos_measurecost");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue