出库单生产成本工序分摊校验插件
This commit is contained in:
		
							parent
							
								
									039cddb9e1
								
							
						
					
					
						commit
						38287d9cda
					
				| 
						 | 
				
			
			@ -0,0 +1,195 @@
 | 
			
		|||
package zcgj.zcdev.zcdev.pr.plugin.form;
 | 
			
		||||
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObject;
 | 
			
		||||
import kd.bos.dataentity.utils.StringUtils;
 | 
			
		||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
 | 
			
		||||
import kd.bos.entity.property.BasedataProp;
 | 
			
		||||
import kd.bos.form.field.BasedataEdit;
 | 
			
		||||
import kd.bos.form.plugin.AbstractFormPlugin;
 | 
			
		||||
import kd.ec.basedata.common.enums.CostControlModelEnum;
 | 
			
		||||
import kd.ec.basedata.common.enums.StatusEnum;
 | 
			
		||||
import kd.ec.basedata.common.utils.EcProjectHelper;
 | 
			
		||||
import kd.ec.material.formplugin.MaterialOutCostMustInputEditPlugin;
 | 
			
		||||
 | 
			
		||||
import java.math.BigDecimal;
 | 
			
		||||
import java.util.EventObject;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
import java.util.stream.Collectors;
 | 
			
		||||
import java.util.stream.Stream;
 | 
			
		||||
 | 
			
		||||
public class MaterialOutCostMustInputEditPluginExt extends AbstractFormPlugin {
 | 
			
		||||
 | 
			
		||||
    private static final List<String> cbsKeyList = (List) Stream.of("procbs", "cbs").collect(Collectors.toList());
 | 
			
		||||
    private static final List<String> caKeyList = (List)Stream.of("ca", "costaccount").collect(Collectors.toList());
 | 
			
		||||
    private static final List<String> boqKeyList = (List)Stream.of("proboq", "boq").collect(Collectors.toList());
 | 
			
		||||
 | 
			
		||||
    public void afterBindData(EventObject e) {
 | 
			
		||||
        //因次方法需要调用父级的逻辑,所以需要重写当前插件
 | 
			
		||||
        super.afterBindData(e);
 | 
			
		||||
        this.controlCostMustInput();
 | 
			
		||||
        DynamicObject transtype = (DynamicObject)this.getModel().getValue("transtype");
 | 
			
		||||
        boolean impactcost = transtype == null ? false : (Boolean)transtype.get("impactcost");
 | 
			
		||||
        String billStatus = (String)this.getModel().getValue("billstatus");
 | 
			
		||||
        if (impactcost && StatusEnum.Checked.getValue().equalsIgnoreCase(billStatus)) {
 | 
			
		||||
            this.getView().setVisible(true, new String[]{"splitamount", "iscompleted"});
 | 
			
		||||
        } else {
 | 
			
		||||
            this.getView().setVisible(false, new String[]{"splitamount", "iscompleted"});
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void propertyChanged(PropertyChangedArgs e) {
 | 
			
		||||
        super.propertyChanged(e);
 | 
			
		||||
        String name = e.getProperty().getName();
 | 
			
		||||
        if (!StringUtils.equals("project", name) && !StringUtils.equals("warehouse", name)) {
 | 
			
		||||
            if (StringUtils.equals("transtype", name)) {
 | 
			
		||||
                this.controlCostMustInput();
 | 
			
		||||
                this.showSplitAmount();
 | 
			
		||||
            } else if (StringUtils.equals("costtype", name)) {
 | 
			
		||||
                this.controlCostMustInput();
 | 
			
		||||
            } else if (StringUtils.equals("amount", name)) {
 | 
			
		||||
                this.onAmountChanged(e);
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            this.controlCostMustInput();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void onAmountChanged(PropertyChangedArgs e) {
 | 
			
		||||
        BigDecimal amount = (BigDecimal)e.getChangeSet()[0].getNewValue();
 | 
			
		||||
        int rowIndex = e.getChangeSet()[0].getRowIndex();
 | 
			
		||||
        DynamicObject transType = this.getModel().getDataEntity().getDynamicObject("transtype");
 | 
			
		||||
        if (transType != null) {
 | 
			
		||||
            boolean impactcost = transType.getBoolean("impactcost");
 | 
			
		||||
            if (impactcost) {
 | 
			
		||||
                this.getModel().setValue("splitamount", amount, rowIndex);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void showSplitAmount() {
 | 
			
		||||
        DynamicObject transType = this.getModel().getDataEntity().getDynamicObject("transtype");
 | 
			
		||||
        if (transType != null) {
 | 
			
		||||
            boolean impactcost = transType.getBoolean("impactcost");
 | 
			
		||||
            if (impactcost) {
 | 
			
		||||
                int rowCount = this.getModel().getEntryRowCount("entryentity");
 | 
			
		||||
 | 
			
		||||
                for(int i = 0; i < rowCount; ++i) {
 | 
			
		||||
                    BigDecimal amount = (BigDecimal)this.getModel().getValue("amount", i);
 | 
			
		||||
                    this.getModel().setValue("splitamount", amount, i);
 | 
			
		||||
                }
 | 
			
		||||
            } else {
 | 
			
		||||
                int rowCount = this.getModel().getEntryRowCount("entryentity");
 | 
			
		||||
 | 
			
		||||
                for(int i = 0; i < rowCount; ++i) {
 | 
			
		||||
                    this.getModel().setValue("splitamount", (Object)null, i);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void controlCostMustInput() {
 | 
			
		||||
        this.clearMustInpt();
 | 
			
		||||
        DynamicObject transType = this.getModel().getDataEntity().getDynamicObject("transtype");
 | 
			
		||||
        if (transType != null) {
 | 
			
		||||
            boolean impactcost = transType.getBoolean("impactcost");
 | 
			
		||||
            if (impactcost) {
 | 
			
		||||
                String costType = (String)this.getModel().getValue("costtype");
 | 
			
		||||
                if (!StringUtils.equals("b", costType)) {
 | 
			
		||||
                    DynamicObject project = this.getModel().getDataEntity().getDynamicObject("project");
 | 
			
		||||
                    if (project != null) {
 | 
			
		||||
                        List<String> modelList = EcProjectHelper.getCostControlModelList(project.getLong("id"));
 | 
			
		||||
                        BasedataEdit basedataEdit = null;
 | 
			
		||||
                        BasedataProp basedataProp = null;
 | 
			
		||||
 | 
			
		||||
                        for(String string : modelList) {
 | 
			
		||||
                            if (StringUtils.equals(string, CostControlModelEnum.CBS.getValue())) {
 | 
			
		||||
                                /*for(String cbsKey : cbsKeyList) { //移除必录
 | 
			
		||||
                                    basedataEdit = (BasedataEdit)this.getControl(cbsKey);
 | 
			
		||||
                                    basedataProp = (BasedataProp)this.getModel().getDataEntityType().findProperty(cbsKey);
 | 
			
		||||
                                    if (basedataEdit != null) {
 | 
			
		||||
                                        basedataEdit.setMustInput(true);
 | 
			
		||||
                                    }
 | 
			
		||||
 | 
			
		||||
                                    if (basedataProp != null) {
 | 
			
		||||
                                        basedataProp.setMustInput(true);
 | 
			
		||||
                                    }
 | 
			
		||||
                                }*/
 | 
			
		||||
                            } else if (StringUtils.equals(string, CostControlModelEnum.CA.getValue())) {
 | 
			
		||||
                                for(String caKey : caKeyList) {
 | 
			
		||||
                                    basedataEdit = (BasedataEdit)this.getControl(caKey);
 | 
			
		||||
                                    basedataProp = (BasedataProp)this.getModel().getDataEntityType().findProperty(caKey);
 | 
			
		||||
                                    if (basedataEdit != null) {
 | 
			
		||||
                                        basedataEdit.setMustInput(true);
 | 
			
		||||
                                    }
 | 
			
		||||
 | 
			
		||||
                                    if (basedataProp != null) {
 | 
			
		||||
                                        basedataProp.setMustInput(true);
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                            } else if (StringUtils.equals(string, CostControlModelEnum.BOQ.getValue())) {
 | 
			
		||||
                                for(String boqKey : boqKeyList) {
 | 
			
		||||
                                    basedataEdit = (BasedataEdit)this.getControl(boqKey);
 | 
			
		||||
                                    basedataProp = (BasedataProp)this.getModel().getDataEntityType().findProperty(boqKey);
 | 
			
		||||
                                    if (basedataEdit != null) {
 | 
			
		||||
                                        basedataEdit.setMustInput(true);
 | 
			
		||||
                                    }
 | 
			
		||||
 | 
			
		||||
                                    if (basedataProp != null) {
 | 
			
		||||
                                        basedataProp.setMustInput(true);
 | 
			
		||||
                                    }
 | 
			
		||||
                                }
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void clearMustInpt() {
 | 
			
		||||
        BasedataEdit dBasedataEdit = null;
 | 
			
		||||
        BasedataProp dBasedataProp = null;
 | 
			
		||||
 | 
			
		||||
        for(String cbsKey : cbsKeyList) {
 | 
			
		||||
            dBasedataEdit = (BasedataEdit)this.getControl(cbsKey);
 | 
			
		||||
            if (dBasedataEdit != null) {
 | 
			
		||||
                dBasedataEdit.setMustInput(false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            dBasedataProp = (BasedataProp)this.getModel().getDataEntityType().findProperty(cbsKey);
 | 
			
		||||
            if (dBasedataProp != null) {
 | 
			
		||||
                dBasedataProp.setMustInput(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for(String boqKey : boqKeyList) {
 | 
			
		||||
            dBasedataEdit = (BasedataEdit)this.getControl(boqKey);
 | 
			
		||||
            if (dBasedataEdit != null) {
 | 
			
		||||
                dBasedataEdit.setMustInput(false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            dBasedataProp = (BasedataProp)this.getModel().getDataEntityType().findProperty(boqKey);
 | 
			
		||||
            if (dBasedataProp != null) {
 | 
			
		||||
                dBasedataProp.setMustInput(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for(String caKey : caKeyList) {
 | 
			
		||||
            dBasedataEdit = (BasedataEdit)this.getControl(caKey);
 | 
			
		||||
            if (dBasedataEdit != null) {
 | 
			
		||||
                dBasedataEdit.setMustInput(false);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            dBasedataProp = (BasedataProp)this.getModel().getDataEntityType().findProperty(caKey);
 | 
			
		||||
            if (dBasedataProp != null) {
 | 
			
		||||
                dBasedataProp.setMustInput(false);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -0,0 +1,65 @@
 | 
			
		|||
package zcgj.zcdev.zcdev.pr.plugin.operate;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObject;
 | 
			
		||||
import kd.bos.dataentity.entity.DynamicObjectCollection;
 | 
			
		||||
import kd.bos.entity.ExtendedDataEntity;
 | 
			
		||||
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
 | 
			
		||||
import kd.bos.entity.plugin.AddValidatorsEventArgs;
 | 
			
		||||
import kd.bos.entity.plugin.PreparePropertysEventArgs;
 | 
			
		||||
import kd.bos.entity.validate.AbstractValidator;
 | 
			
		||||
 | 
			
		||||
import java.util.HashSet;
 | 
			
		||||
import java.util.Set;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 出库单生产成本工序分摊校验插件
 | 
			
		||||
 */
 | 
			
		||||
public class MaterialoutbillProcbsCkOp extends AbstractOperationServicePlugIn {
 | 
			
		||||
 | 
			
		||||
    public void onPreparePropertys(PreparePropertysEventArgs e) {
 | 
			
		||||
        super.onPreparePropertys(e);
 | 
			
		||||
        e.getFieldKeys().add("entryentity");
 | 
			
		||||
        e.getFieldKeys().add("entryentity.procbs");
 | 
			
		||||
        e.getFieldKeys().add("entryentity.zcgj_accounttype");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onAddValidators(AddValidatorsEventArgs e) {
 | 
			
		||||
        super.onAddValidators(e);
 | 
			
		||||
        e.getValidators().add(new ValidatorExt());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    class ValidatorExt extends AbstractValidator {
 | 
			
		||||
        @Override
 | 
			
		||||
        public void validate() {
 | 
			
		||||
            Set<String> key = new HashSet<String>();
 | 
			
		||||
            key.add("FL001");
 | 
			
		||||
            key.add("FL012");
 | 
			
		||||
            key.add("FL013");
 | 
			
		||||
            key.add("FL017");
 | 
			
		||||
            key.add("FL018");
 | 
			
		||||
            key.add("FL019");
 | 
			
		||||
            ExtendedDataEntity[] extendedDataEntities = this.getDataEntities();
 | 
			
		||||
            for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) {
 | 
			
		||||
                DynamicObject dataEntity = extendedDataEntity.getDataEntity();
 | 
			
		||||
 | 
			
		||||
                DynamicObjectCollection dynamicObjectCollection = dataEntity.getDynamicObjectCollection("entryentity");
 | 
			
		||||
                int i=0;
 | 
			
		||||
                for (DynamicObject dynamicObject : dynamicObjectCollection) {
 | 
			
		||||
                    i++;
 | 
			
		||||
                    DynamicObject accounttype = dynamicObject.getDynamicObject("zcgj_accounttype");
 | 
			
		||||
                    if(accounttype!=null){
 | 
			
		||||
                        String number = accounttype.getString("number");
 | 
			
		||||
                        if(key.contains(number)){
 | 
			
		||||
                            DynamicObject procbs = dynamicObject.getDynamicObject("procbs");
 | 
			
		||||
                            if(procbs==null){
 | 
			
		||||
                                this.addFatalErrorMessage(extendedDataEntity, String.format("出库单明细第%d行,需要填写工序分摊!",i));
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue