Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
程小伟 2025-04-29 15:20:15 +08:00
commit 83cb4ad7d5
1 changed files with 94 additions and 0 deletions

View File

@ -0,0 +1,94 @@
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 PublicBillRecAccountCkOp extends AbstractOperationServicePlugIn {
@Override
public void onPreparePropertys(PreparePropertysEventArgs e) {
super.onPreparePropertys(e);
e.getFieldKeys().add("costcompany");
e.getFieldKeys().add("accountentry");
}
@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)){
DynamicObjectCollection accountentry = dataEntity.getDynamicObjectCollection("accountentry");
int i = 1;
for (DynamicObject dynamicObject : accountentry) {
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");
String name = supplier.getString("name");
isOk = payeraccountname.equals(name);
}else if("bd_customer".equals(payertype)){ //客户
DynamicObject customer = dynamicObject.getDynamicObject("customer");
String name = customer.getString("name");
isOk = payeraccountname.equals(name);
}
if(!isOk && accountTxt.isEmpty()){
this.addFatalErrorMessage(extendedDataEntity, String.format("收款信息第%d行收款人名称和账户名称不一致请在当前行填写账户不一致说明",i));
}
i++;
}
}
}
}
}
}
}