各个单据保存生成二维码

This commit is contained in:
zhangh 2025-02-20 10:44:11 +08:00
parent 4e240451f8
commit 689fc37144

View File

@ -0,0 +1,87 @@
package yem.wm.bd.qrcode.operation;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.PreparePropertysEventArgs;
import kd.bos.entity.plugin.args.BeforeOperationArgs;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import yem.base.common.utils.DynamicObjectUtil;
import yem.base.common.utils.QRCodeUtil;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description 保存插件
* 单据保存时创建二维码将生成的二维码地址赋值到二维码字段上
* @Author: zhangh
* @CreateTime: 2025-02-17 11:01
*/
public class CreacteORSaveOpPlugin extends AbstractOperationServicePlugIn {
@Override
public void beforeExecuteOperationTransaction(BeforeOperationArgs e) {
for (DynamicObject dataEntity : e.getDataEntities()) {
getQRCodeValue(dataEntity);
}
}
/**
* @param dataEntity 单据实体
* @return void
* @Description: 二维码字段赋值
* @function 功能
* @purposes 生成二维码将二维码的地址赋值到二维码
*/
public void getQRCodeValue(DynamicObject dataEntity) {
String name = dataEntity.getDataEntityType().getName();
DynamicObject qrcide = queryQRVode(name);
if (qrcide != null) {
String qrCodeText = "";//二维码字段展示的内容
DynamicObjectCollection configurationfield = qrcide.getDynamicObjectCollection("yem_configurationfield_e");//查询二维码配置表
for (DynamicObject entry : configurationfield) {
String fieldkey = entry.getString("yem_fieldkey");//获取配置表中的配置字段标识
Object fieldValue = dataEntity.get(fieldkey);//获取值
if (fieldValue instanceof DynamicObject) {//判断是否是DynamicObject类型如果是则获取名称
DynamicObject fieldValueDy = (DynamicObject) fieldValue;
qrCodeText = qrCodeText + fieldValueDy.getString("name");
} else {
qrCodeText = qrCodeText + fieldValue;
}
}
String image = QRCodeUtil.createQRImage(qrCodeText, "jpg", 78);//获取二维码的地址
dataEntity.set("yem_qrcodeap", image);
}
}
@Override
public void onPreparePropertys(PreparePropertysEventArgs e) {
List<String> fieldKeys = e.getFieldKeys();
String name = this.billEntityType.getName();
DynamicObject qrcide = queryQRVode(name);
if (qrcide != null) {
DynamicObjectCollection configurationfield = qrcide.getDynamicObjectCollection("yem_configurationfield_e");
List<String> fieldkey = configurationfield.stream().map(x -> x.getString("yem_fieldkey")).collect(Collectors.toList());
fieldKeys.addAll(fieldkey);
fieldKeys.add("yem_qrcodeap");//二维码字段
}
}
/**
* @param name 单据标识
* @return DynamicObject 返回二维码配置表实体
* @Description: 查询二维码配置表
* @function 功能
* @purposes 多处查询此表
*/
public DynamicObject queryQRVode(String name) {
String selectfields = DynamicObjectUtil.getSelectfields("yem_bd_qrcide", false);
selectfields = DynamicObjectUtil.getEntrySelectfields(selectfields, "yem_bd_qrcide", "yem_configurationfield_e", false);
DynamicObject qrcide = BusinessDataServiceHelper.loadSingle("yem_bd_qrcide", selectfields,
new QFilter[]{new QFilter("yem_bill.number", QCP.equals, name),
new QFilter("enable", QCP.equals, "1")});//查询二维码配置表
return qrcide;
}
}