|  | @@ -0,0 +1,112 @@
 | 
	
		
			
				|  |  | +package sys.sc.formplugin;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import com.grapecity.documents.excel.Q;
 | 
	
		
			
				|  |  | +import com.icbc.api.internal.util.internal.util.fastjson.JSON;
 | 
	
		
			
				|  |  | +import com.icbc.api.internal.util.internal.util.fastjson.JSONObject;
 | 
	
		
			
				|  |  | +import kd.bos.dataentity.entity.DynamicObject;
 | 
	
		
			
				|  |  | +import kd.bos.entity.api.ApiResult;
 | 
	
		
			
				|  |  | +import kd.bos.entity.plugin.ImportLogger;
 | 
	
		
			
				|  |  | +import kd.bos.form.plugin.impt.BatchImportPlugin;
 | 
	
		
			
				|  |  | +import kd.bos.form.plugin.impt.ImportBillData;
 | 
	
		
			
				|  |  | +import kd.bos.orm.query.QCP;
 | 
	
		
			
				|  |  | +import kd.bos.orm.query.QFilter;
 | 
	
		
			
				|  |  | +import kd.bos.servicehelper.BusinessDataServiceHelper;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +import java.util.ArrayList;
 | 
	
		
			
				|  |  | +import java.util.Iterator;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +/**
 | 
	
		
			
				|  |  | + * @author cjz
 | 
	
		
			
				|  |  | + * @date 2024/10/25 9:38
 | 
	
		
			
				|  |  | + * @description:引入数据前校验插件
 | 
	
		
			
				|  |  | + */
 | 
	
		
			
				|  |  | +public class PayInfoImportPlugin extends BatchImportPlugin {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    //保存前校验
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    protected ApiResult save(List<ImportBillData> rowdatas, ImportLogger logger) {
 | 
	
		
			
				|  |  | +        Iterator<ImportBillData> it = rowdatas.iterator();
 | 
	
		
			
				|  |  | +        //工号list
 | 
	
		
			
				|  |  | +        List<String> payeenumlist=new ArrayList<>();
 | 
	
		
			
				|  |  | +        //银行账号list
 | 
	
		
			
				|  |  | +        List<String> payaccountlist=new ArrayList<>();
 | 
	
		
			
				|  |  | +        //获取所有工号的list
 | 
	
		
			
				|  |  | +        for (ImportBillData item:rowdatas) {
 | 
	
		
			
				|  |  | +            Map<String,Object> billData = item.getData();
 | 
	
		
			
				|  |  | +            //收款人工号
 | 
	
		
			
				|  |  | +            String str=billData.get("nckd_payeenum").toString();
 | 
	
		
			
				|  |  | +            JSONObject jsonObject = JSON.parseObject(str);
 | 
	
		
			
				|  |  | +            String payeenum=jsonObject.getString("number");
 | 
	
		
			
				|  |  | +            //使用状态
 | 
	
		
			
				|  |  | +            String nckd_datastatus = (String) billData.get("nckd_datastatus");
 | 
	
		
			
				|  |  | +            payeenumlist.add(payeenum+nckd_datastatus);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +            //银行账号
 | 
	
		
			
				|  |  | +            String nckd_payaccount= (String) billData.get("nckd_payaccount");
 | 
	
		
			
				|  |  | +            payaccountlist.add(nckd_payaccount);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //文件校验
 | 
	
		
			
				|  |  | +        while (it.hasNext()) {
 | 
	
		
			
				|  |  | +            ImportBillData data = it.next();
 | 
	
		
			
				|  |  | +            Map<String,Object> billData = data.getData();
 | 
	
		
			
				|  |  | +            String temp = "";
 | 
	
		
			
				|  |  | +            //校验是否有银行账号重复
 | 
	
		
			
				|  |  | +            for (int i = 0; i <payeenumlist.size()-1; i++) {
 | 
	
		
			
				|  |  | +                temp = payeenumlist.get(i);
 | 
	
		
			
				|  |  | +                for (int j = i + 1; j < payeenumlist.size(); j++) {
 | 
	
		
			
				|  |  | +                    if (temp.equals(payeenumlist.get(j))) {
 | 
	
		
			
				|  |  | +                        String validMsg =("第" + (i + 1) + "行与第" + (j + 1) + "行重复,同一个工号不能有两条启用数据,值是:" + temp.substring(0,temp.length()-1));
 | 
	
		
			
				|  |  | +                        // 有校验提示,校验不通过,记录日志,移除数据
 | 
	
		
			
				|  |  | +                        logger.log(data.getStartIndex(), validMsg).fail();
 | 
	
		
			
				|  |  | +                        it.remove();
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //检验是否有相同的银行账号
 | 
	
		
			
				|  |  | +            String tmp="";
 | 
	
		
			
				|  |  | +            for (int i=0;i<payaccountlist.size();i++) {
 | 
	
		
			
				|  |  | +                tmp=payaccountlist.get(i);
 | 
	
		
			
				|  |  | +                for (int j=i+1;j< payaccountlist.size();j++) {
 | 
	
		
			
				|  |  | +                    if (tmp.equals(payaccountlist.get(j))) {
 | 
	
		
			
				|  |  | +                        String validMsg="第"+(i+1)+"行与第"+(j+1)+"行银行账号重复,值为"+tmp;
 | 
	
		
			
				|  |  | +                        logger.log(data.getStartIndex(),validMsg).fail();
 | 
	
		
			
				|  |  | +                        it.remove();
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //收款人工号
 | 
	
		
			
				|  |  | +            String str=billData.get("nckd_payeenum").toString();
 | 
	
		
			
				|  |  | +            JSONObject jsonObject = JSON.parseObject(str);
 | 
	
		
			
				|  |  | +            String payeenum=jsonObject.getString("number");
 | 
	
		
			
				|  |  | +            //使用状态
 | 
	
		
			
				|  |  | +            String nckd_datastatus = (String) billData.get("nckd_datastatus");
 | 
	
		
			
				|  |  | +            //与表中已存在的数据进行校验,相同工号只能有一个启用数据
 | 
	
		
			
				|  |  | +            QFilter qFilter=new QFilter("nckd_payeenum.number",QCP.equals,payeenum);
 | 
	
		
			
				|  |  | +            qFilter.and("nckd_datastatus",QCP.equals,nckd_datastatus);
 | 
	
		
			
				|  |  | +            DynamicObject[] dynamicObjects=BusinessDataServiceHelper
 | 
	
		
			
				|  |  | +                    .load("nckd_payinformation","id",new QFilter[]{qFilter});
 | 
	
		
			
				|  |  | +            if (dynamicObjects.length>0) {
 | 
	
		
			
				|  |  | +                String validMsg="同一个工号存在多个已启用的数据,工号为:"+payeenum;
 | 
	
		
			
				|  |  | +                logger.log(data.getStartIndex(),validMsg).fail();
 | 
	
		
			
				|  |  | +                it.remove();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //银行账号
 | 
	
		
			
				|  |  | +            String nckd_payaccount= (String) billData.get("nckd_payaccount");
 | 
	
		
			
				|  |  | +            payaccountlist.add(nckd_payaccount);
 | 
	
		
			
				|  |  | +            QFilter filter=new QFilter("nckd_payaccount",QCP.equals,nckd_payaccount);
 | 
	
		
			
				|  |  | +            DynamicObject[] dylist=BusinessDataServiceHelper
 | 
	
		
			
				|  |  | +                    .load("nckd_payinformation","id",new QFilter[]{filter});
 | 
	
		
			
				|  |  | +            if (dylist.length>0) {
 | 
	
		
			
				|  |  | +                String validMsg="存在相同的银行账号:"+nckd_payaccount;
 | 
	
		
			
				|  |  | +                logger.log(data.getStartIndex(),validMsg).fail();
 | 
	
		
			
				|  |  | +                it.remove();
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return super.save(rowdatas, logger);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |