diff --git a/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/PrepaybillRecAccountCkOp.java b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/PrepaybillRecAccountCkOp.java new file mode 100644 index 0000000..27fc4a6 --- /dev/null +++ b/code/zcdev/zcgj-zcdev-zcdev-fs/src/main/java/zcgj/zcdev/zcdev/fs/plugin/operate/PrepaybillRecAccountCkOp.java @@ -0,0 +1,127 @@ +package zcgj.zcdev.zcdev.fs.plugin.operate; + +import kd.bos.context.RequestContext; +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 kd.bos.servicehelper.user.UserServiceHelper; +import zcgj.zcdev.zcdev.fs.utils.OrgCheckUtils; + +import java.text.SimpleDateFormat; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 预付单单收款信息账户检查 + */ +public class PrepaybillRecAccountCkOp extends AbstractOperationServicePlugIn { + + @Override + public void onPreparePropertys(PreparePropertysEventArgs e) { + super.onPreparePropertys(e); + e.getFieldKeys().add("costcompany"); + e.getFieldKeys().add("accountentry"); + e.getFieldKeys().add("billpayertype"); + e.getFieldKeys().add("billpayerid"); + } + + @Override + public void onAddValidators(AddValidatorsEventArgs e) { + super.onAddValidators(e); + Long currentUserId = UserServiceHelper.getCurrentUserId(); + // 当前用户所属组织 + Long mainOrgId = UserServiceHelper.getUserMainOrgId(currentUserId); + //当前切换选择的组织 + Long currentOrgId = RequestContext.get().getOrgId(); + //当前所在的组织是属于矿山下的 + //if(OrgCheckUtils.isKS(currentOrgId)){ + e.getValidators().add(new ValidatorExt()); + //} + } + + class ValidatorExt extends AbstractValidator { + @Override + public void validate() { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM"); + ExtendedDataEntity[] extendedDataEntities = this.getDataEntities(); + Map> allMap = new HashMap<>(); + //当前提交的探亲单据id集合 + Map> currentBillIdListMap = new HashMap<>(); + + for (ExtendedDataEntity extendedDataEntity : extendedDataEntities) { + DynamicObject dataEntity = extendedDataEntity.getDataEntity(); + long aLong = dataEntity.getLong("id"); + //获取报销人 + DynamicObject applier = dataEntity.getDynamicObject("applier"); + long applierId = applier.getLong("id"); + //获取申请日期 + Object costcompanyObj = dataEntity.get("costcompany"); + Object costdeptObj = dataEntity.get("costdept"); + if(costcompanyObj!=null && costdeptObj != null){ + DynamicObject costcompany = (DynamicObject)costcompanyObj; + long costcompanyId = costcompany.getLong("id"); + if(OrgCheckUtils.isKS(costcompanyId)){ + String billpayertype = dataEntity.getString("billpayertype"); //往来单位类型 + if(billpayertype ==null){ + this.addFatalErrorMessage(extendedDataEntity, String.format("往来类型不能为空")); + return; + } + DynamicObject billpayerid = dataEntity.getDynamicObject("billpayerid");//往来单位 + String numberVal = null; + if(billpayerid!=null){ + numberVal = billpayerid.getString("number"); + }else{ + this.addFatalErrorMessage(extendedDataEntity, String.format("往来单位不能为空")); + return; + } + + DynamicObjectCollection accountentry = dataEntity.getDynamicObjectCollection("accountentry"); + int i = 0; + + for (DynamicObject dynamicObject : accountentry) { + i++; + String payertype = dynamicObject.getString("payertype");//收款人类型 + String payeraccountname = dynamicObject.getString("payeraccountname"); //账户名称 + String accountTxt = dynamicObject.getString("zcgj_account_txt"); //账户名称 + boolean isOk=true; + if("bd_supplier".equals(payertype)){ //供应商 + DynamicObject supplier = dynamicObject.getDynamicObject("supplier"); + if(supplier ==null){ + this.addFatalErrorMessage(extendedDataEntity, String.format("收款信息第%d行,收款人不能为空!",i)); + continue; + } + String name = supplier.getString("name"); + isOk = payeraccountname.equals(name); + if(isOk && "bd_supplier".equals(billpayertype)){ + String number = supplier.getString("number"); + isOk = number.equals(numberVal); + } + }else if("bd_customer".equals(payertype)){ //客户 + DynamicObject customer = dynamicObject.getDynamicObject("customer"); + if(customer ==null){ + this.addFatalErrorMessage(extendedDataEntity, String.format("收款信息第%d行,收款人不能为空!",i)); + continue; + } + String name = customer.getString("name"); + isOk = payeraccountname.equals(name); + if(isOk && "bd_customer".equals(billpayertype)){ + String number = customer.getString("number"); + isOk = number.equals(numberVal); + } + } + if(!isOk && accountTxt.isEmpty()){ + this.addFatalErrorMessage(extendedDataEntity, String.format("收款信息第%d行,往来单位、收款人名称和账户名称不一致!请在当前行填写账户不一致说明!",i)); + } + + } + } + } + } + } + } +}