package tqq9.lc123.cloud.app.plugin.operate.sys; import kd.bos.algo.DataSet; import kd.bos.dataentity.entity.DynamicObjectCollection; import kd.bos.db.DB; import kd.bos.db.DBRoute; import kd.bos.entity.ExtendedDataEntity; import kd.bos.entity.plugin.AbstractOperationServicePlugIn; import kd.bos.entity.plugin.AddValidatorsEventArgs; import kd.bos.entity.validate.AbstractValidator; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; import kd.bos.orm.ORM; import kd.sdk.plugin.Plugin; /** * 单据操作插件 */ public class RegistrationSaveOp extends AbstractOperationServicePlugIn implements Plugin { private static final Log log = LogFactory.getLog(MaterialSaveOp.class); public void onAddValidators(AddValidatorsEventArgs e) { super.onAddValidators(e); e.addValidator(new UniqueNameValidate()); } /** *校验器,根据物料名称(去空格)验重 */ class UniqueNameValidate extends AbstractValidator { @Override public void validate() { for (ExtendedDataEntity dataEntity : this.getDataEntities()) { String name = dataEntity.getDataEntity().getString("name");//注册证名称 String id = dataEntity.getDataEntity().getString("id");//id String sql = "/*dialect*/ SELECT REPLACE(fname, ' ', '') AS name\n" + "FROM tk_tqq9_registration\n" + "WHERE REPLACE(fname, ' ', '') = REPLACE('" + name + "', ' ', '')"; if (id != null && !id.isEmpty() && !"0".equals(id)) { sql += " AND fid <> " + id; } DataSet materialDataSet = DB.queryDataSet(this.getClass().getName(), DBRoute.of("sys"), sql); DataSet copy1 = materialDataSet.copy(); DynamicObjectCollection dynamicObjects = ORM.create().toPlainDynamicObjectCollection(copy1); if (dynamicObjects.size()>0) { this.addErrorMessage(dataEntity, "注册证:" + name + ", 在系统中存在同名数据,无法保存"); } } } } }