lc/lc123/cloud/app/plugin/form/pm/BaseDataPlugin.java

205 lines
12 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package tqq9.lc123.cloud.app.plugin.form.pm;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.sdk.plugin.Plugin;
import org.apache.commons.lang3.StringUtils;
import tqq9.lc123.cloud.app.plugin.utils.EntryFieldRefresher;
import java.util.EventObject;
/**
* 表单通用插件,带出创建人部门,许可证号
* 注册证号tqq9_registration
* 许可证号tqq9_licenseno
* 创建部门tqq9_dept
* 需保持一致
*/
public class BaseDataPlugin extends AbstractFormPlugin implements Plugin {
private final static Log logger = LogFactory.getLog(BaseDataPlugin.class);
@Override
public void afterCreateNewData(EventObject e) {
super.afterCreateNewData(e);
IDataModel model = this.getModel();
DynamicObject dataEntity = model.getDataEntity();
DynamicObject creator = dataEntity.getDynamicObject("creator");
DynamicObject bos_user = BusinessDataServiceHelper.loadSingle("bos_user", new QFilter[]{new QFilter("id", QCP.equals, creator.getLong("id"))});
DynamicObjectCollection entryentity = bos_user.getDynamicObjectCollection("entryentity");
DynamicObject dept = null;
for (DynamicObject dynamicObject : entryentity) {
boolean ispartjob = dynamicObject.getBoolean("ispartjob");
if (!ispartjob) {
dept = dynamicObject.getDynamicObject("dpt");
}
}
model.setValue("tqq9_dept", dept);
}
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
String key = e.getProperty().getName();
ChangeData[] changeSet = e.getChangeSet();
ChangeData changeData = changeSet[0];
int rowIndex = changeData.getRowIndex();
String name = this.getModel().getDataEntity(true).getDataEntityType().getName();
//排斥物料
if(!"bd_material".equals(name)){
if (StringUtils.equals("tqq9_registration", key)) {
StringBuilder stringBuilder_supno = new StringBuilder();
StringBuilder stringBuilder_supplier = new StringBuilder();
DynamicObject newValue = (DynamicObject) changeData.getNewValue();
if (newValue != null) {
//处理非医非消毒的问题
boolean isFyfxd = false;//是否 非医非消毒
String tqq9_scxkzh = null;//生产许可证号
String tqq9_sccsname = null;//生产厂商名称
handleFyfxd(rowIndex, isFyfxd, tqq9_scxkzh, tqq9_sccsname);//处理非医非消毒的内容
if(isFyfxd){
//非医非消毒 取物料上的生产厂商名称和许可证号
this.getModel().setValue("tqq9_licenseno", tqq9_scxkzh, rowIndex);
this.getModel().setValue("tqq9_cs", tqq9_sccsname, rowIndex);
}else{
String number = newValue.getString("number");
if (number.contains("#")) {
String[] numbers = number.split("#");
DynamicObject[] tqq9_registrations = BusinessDataServiceHelper.load("tqq9_registration",
"id,number,name,tqq9_entry.tqq9_e_supno,tqq9_entry.tqq9_e_supplier"
, new QFilter[]{new QFilter("number", QCP.in, numbers)});
for (DynamicObject tqq9_registration : tqq9_registrations) {
DynamicObjectCollection tqq9_entry = tqq9_registration.getDynamicObjectCollection("tqq9_entry");
for (DynamicObject entry : tqq9_entry) {
String supno = entry.getString("tqq9_e_supno");//许可证
DynamicObject tqq9_e_supplier = entry.getDynamicObject("tqq9_e_supplier");//生产商
if (StringUtils.isNotBlank(supno)) {
stringBuilder_supno.append("#").append(supno);
}
if (tqq9_e_supplier != null) {
stringBuilder_supplier.append("#").append(tqq9_e_supplier.getString("name"));
}
}
}
} else {
DynamicObject tqq9_registration = BusinessDataServiceHelper.loadSingle("tqq9_registration", new QFilter[]{new QFilter("id", QCP.equals, newValue.getLong("id"))});
DynamicObjectCollection tqq9_entry = tqq9_registration.getDynamicObjectCollection("tqq9_entry");
for (DynamicObject entry : tqq9_entry) {
String supno = entry.getString("tqq9_e_supno");//许可证
DynamicObject tqq9_e_supplier = entry.getDynamicObject("tqq9_e_supplier");//生产商
if (StringUtils.isNotBlank(supno)) {
stringBuilder_supno.append("#").append(supno);
}
if (tqq9_e_supplier != null) {
stringBuilder_supplier.append("#").append(tqq9_e_supplier.getString("name"));
}
}
}
if (StringUtils.isNotBlank(stringBuilder_supno.toString())) {
String substring = stringBuilder_supno.substring(1);
this.getModel().setValue("tqq9_licenseno", substring, rowIndex);
}
if (StringUtils.isNotBlank(stringBuilder_supplier.toString())) {
String substring = stringBuilder_supplier.substring(1);
this.getModel().setValue("tqq9_cs", substring, rowIndex);
}
}
}
}
if (StringUtils.equals("tqq9_zczh", key)) {
StringBuilder stringBuilder_supno = new StringBuilder();
StringBuilder stringBuilder_supplier = new StringBuilder();
DynamicObject newValue = (DynamicObject) changeData.getNewValue();
if (newValue != null) {
//处理非医非消毒的问题
boolean isFyfxd = false;//是否 非医非消毒
String tqq9_scxkzh = null;//生产许可证号
String tqq9_sccsname = null;//生产厂商名称
handleFyfxd(rowIndex, isFyfxd, tqq9_scxkzh, tqq9_sccsname);//处理非医非消毒的内容
if(isFyfxd){
//非医非消毒 取物料上的生产厂商名称和许可证号
this.getModel().setValue("tqq9_licenseno", tqq9_scxkzh, rowIndex);
this.getModel().setValue("tqq9_cs", tqq9_sccsname, rowIndex);
}else{
String number = newValue.getString("number");
if (number.contains("#")) {
String[] numbers = number.split("#");
DynamicObject[] tqq9_registrations = BusinessDataServiceHelper.load("tqq9_registration",
"id,number,name,tqq9_entry.tqq9_e_supno,tqq9_entry.tqq9_e_supplier"
, new QFilter[]{new QFilter("number", QCP.in, numbers)});
for (DynamicObject tqq9_registration : tqq9_registrations) {
DynamicObjectCollection tqq9_entry = tqq9_registration.getDynamicObjectCollection("tqq9_entry");
for (DynamicObject entry : tqq9_entry) {
String supno = entry.getString("tqq9_e_supno");//许可证
DynamicObject tqq9_e_supplier = entry.getDynamicObject("tqq9_e_supplier");//生产商
if (StringUtils.isNotBlank(supno)) {
stringBuilder_supno.append("#").append(supno);
}
if (tqq9_e_supplier != null) {
stringBuilder_supplier.append("#").append(tqq9_e_supplier.getString("name"));
}
}
}
} else {
DynamicObject tqq9_registration = BusinessDataServiceHelper.loadSingle("tqq9_registration",
new QFilter[]{new QFilter("id", QCP.equals, newValue.getLong("id"))});
DynamicObjectCollection tqq9_entry = tqq9_registration.getDynamicObjectCollection("tqq9_entry");
for (DynamicObject entry : tqq9_entry) {
String supno = entry.getString("tqq9_e_supno");//许可证
DynamicObject tqq9_e_supplier = entry.getDynamicObject("tqq9_e_supplier");//生产商
if (StringUtils.isNotBlank(supno)) {
stringBuilder_supno.append("#").append(supno);
}
if (tqq9_e_supplier != null) {
stringBuilder_supplier.append("#").append(tqq9_e_supplier.getString("name"));
}
}
}
if (StringUtils.isNotBlank(stringBuilder_supno.toString())) {
String substring = stringBuilder_supno.substring(1);
this.getModel().setValue("tqq9_licenseno", substring, rowIndex);
}
if (StringUtils.isNotBlank(stringBuilder_supplier.toString())) {
String substring = stringBuilder_supplier.substring(1);
this.getModel().setValue("tqq9_cs", substring, rowIndex);
}
}
}
}
}
}
private void handleFyfxd(int rowIndex, boolean isFyfxd, String tqq9_scxkzh, String tqq9_sccsname) {
DynamicObject dataEntity = this.getModel().getDataEntity(true);
String entitName = dataEntity.getDataEntityType().getName();//单据标识
String mFieldName = EntryFieldRefresher.getEntryMaterialFieldNameByEntityName(entitName);
if(StringUtils.isNotBlank(mFieldName)){
DynamicObject material = (DynamicObject) this.getModel().getValue(mFieldName, rowIndex);
if(material != null){
Long materialId = material.getDynamicObject("masterid").getLong("id");
DynamicObject bd_material = BusinessDataServiceHelper.loadSingle(materialId, "bd_material");
String tqq9_ylfl = bd_material.getString("tqq9_ylfl");
if("非医非消毒".equals(tqq9_ylfl)){
isFyfxd = true;
DynamicObject tqq9_sccs = bd_material.getDynamicObject("tqq9_sccs");//生产厂商
if(tqq9_sccs != null){
tqq9_sccsname = tqq9_sccs.getString("name");
}
tqq9_scxkzh = bd_material.getString("tqq9_scxkzh");//生产许可证号
}
}
}
}
}