|
@@ -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);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|