预付单增加收款人信息校验
This commit is contained in:
parent
d9e9c80ca2
commit
09119816f2
|
@ -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<Long, Map<String,Object>> allMap = new HashMap<>();
|
||||
//当前提交的探亲单据id集合
|
||||
Map<Long, List<Long>> 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));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue