lc/lc123/cloud/app/plugin/form/sys/MaterialBillPlugin.java

234 lines
14 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.sys;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.entity.LocaleString;
import kd.bos.dataentity.metadata.IDataEntityProperty;
import kd.bos.dataentity.utils.StringUtils;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.events.AfterDoOperationEventArgs;
import kd.bos.form.events.BeforeDoOperationEventArgs;
import kd.bos.form.operate.FormOperate;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import java.math.BigDecimal;
import java.util.Date;
import java.util.EventObject;
import java.util.LinkedHashMap;
import java.util.List;
/**
* 物料界面插件
*/
public class MaterialBillPlugin extends AbstractBillPlugIn {
@Override
public void beforeDoOperation(BeforeDoOperationEventArgs args) {
super.beforeDoOperation(args);
FormOperate source = (FormOperate) args.getSource();
String operateKey = source.getOperateKey();
if("submit".equals(operateKey)){
//复制后修改数据在提交时记录修改的内容,如果修改内容为空,则不记录
LinkedHashMap changeMap = new LinkedHashMap();
DynamicObject dataEntity = this.getModel().getDataEntity(true);
String newName = dataEntity.getString("name");
String srcNumber = null;
if(StringUtils.isNotBlank(newName) && newName.contains("_copy")){
srcNumber = newName.replace("_copy", "");
//查询原单
QFilter qFilter = new QFilter("number", "=", srcNumber);
DynamicObject[] srcMaterialArr = BusinessDataServiceHelper.load("bd_material", "id", new QFilter[]{qFilter});
if(srcMaterialArr != null && srcMaterialArr.length > 0){
DynamicObject srcMaterial = srcMaterialArr[0];
srcMaterial = BusinessDataServiceHelper.loadSingle(srcMaterial.getPkValue(), "bd_material");
//获取实体中所有变更的属性
StringBuilder changeContent = new StringBuilder();
List<IDataEntityProperty> iDataEntityProperties = dataEntity.getDataEntityState().GetDirtyProperties();
if(iDataEntityProperties.size()>0){
for(IDataEntityProperty prop :iDataEntityProperties){
String name = prop.getName();//字段标识
String displayName = prop.getDisplayName().get("zh_CN");//字段名称
String propTypeName = prop.getPropertyType().getName();
if("kd.bos.dataentity.entity.DynamicObject".equals(propTypeName)){
DynamicObject dynamicObject = dataEntity.getDynamicObject(name);
DynamicObject dynamicObject1 = srcMaterial.getDynamicObject(name);
if(dynamicObject != null){
String newValue = dynamicObject.getString("name");
if(dynamicObject1 != null){
String oldValue = dynamicObject1.getString("name");
if(!oldValue.equals(newValue)){
changeContent.append("字段:"+displayName+"("+name+"),变更前:"+oldValue+",变更后:"+newValue+"");
}
}else{
changeContent.append("字段:"+displayName+"("+name+")变更前null变更后"+newValue+"");
}
}else{
if(dynamicObject1 != null) {
String oldValue = dynamicObject1.getString("name");
changeContent.append("字段:"+displayName+"("+name+"),变更前:"+oldValue+"变更后null");
}
}
}else if("java.util.Date".equals(propTypeName)){
Date newValue = dataEntity.getDate(name);
Date oldValue = srcMaterial.getDate(name);
if(newValue != null){
if(oldValue != null){
if(!oldValue.equals(newValue)){
changeContent.append("字段:"+displayName+"("+name+"),变更前:"+oldValue+",变更后:"+newValue+"");
}
}else{
changeContent.append("字段:"+displayName+"("+name+")变更前null变更后"+newValue+"");
}
}else{
if(oldValue != null){
changeContent.append("字段:"+displayName+"("+name+"),变更前:"+oldValue+"变更后null");
}
}
}else if("java.lang.Integer".equals(propTypeName)){
int newValue = dataEntity.getInt(name);
int oldValue = srcMaterial.getInt(name);
if(newValue != oldValue){
changeContent.append("字段:"+displayName+"("+name+"),变更前:"+oldValue+",变更后:"+newValue+"");
}
}else if("java.lang.Long".equals(propTypeName)){
long newValue = dataEntity.getLong(name);
long oldValue = srcMaterial.getLong(name);
if(newValue != oldValue){
changeContent.append("字段:"+displayName+"("+name+"),变更前:"+oldValue+",变更后:"+newValue+"");
}
}else if("java.math.BigDecimal".equals(propTypeName)){
BigDecimal newValue = dataEntity.getBigDecimal(name);
BigDecimal oldValue = srcMaterial.getBigDecimal(name);
if(newValue != null){
if(oldValue != null){
if(oldValue.compareTo(newValue) != 0){
changeContent.append("字段:"+displayName+"("+name+"),变更前:"+oldValue+",变更后:"+newValue+"");
}
}else{
changeContent.append("字段:"+displayName+"("+name+")变更前null变更后"+newValue+"");
}
}else {
if(oldValue != null){
changeContent.append("字段:"+displayName+"("+name+"),变更前:"+oldValue+"变更后null");
}
}
}else if("boolean".equals(propTypeName)){
boolean newValue = dataEntity.getBoolean(name);
boolean oldValue = srcMaterial.getBoolean(name);
if(newValue != oldValue){
changeContent.append("字段:"+displayName+"("+name+"),变更前:"+oldValue+",变更后:"+newValue+"");
}
}else {
String newValue = dataEntity.getString(name);
String oldValue = srcMaterial.getString(name);
if(StringUtils.isNotBlank(newValue)){
if(StringUtils.isNotBlank(oldValue)){
if(!oldValue.equals(newValue)){
changeContent.append("字段:"+displayName+"("+name+"),变更前:"+oldValue+",变更后:"+newValue+"");
}
}else{
changeContent.append("字段:"+displayName+"("+name+")变更前null变更后"+newValue+"");
}
}else{
if(StringUtils.isNotBlank(oldValue)) {
changeContent.append("字段:"+displayName+"("+name+"),变更前:"+oldValue+"变更后null");
}
}
}
changeMap.put(name,displayName);
}
}
DynamicObjectCollection entryentity = dataEntity.getDynamicObjectCollection("entry_groupstandard");
//获取单据体中已变更的属性
for(int x = 0; x < entryentity.size(); x++){
List<IDataEntityProperty> iDataEntityProperties1 = entryentity.get(x).getDataEntityState().GetDirtyProperties();
for(IDataEntityProperty prop1 :iDataEntityProperties1){
String name = prop1.getName();
String propTypeName = prop1.getPropertyType().getName();
LocaleString displayName1 = prop1.getDisplayName();
changeMap.put("entry_groupstandard-"+(x+1)+":"+name,displayName1);
if("kd.bos.dataentity.entity.DynamicObject".equals(propTypeName)){
DynamicObject dynamicObject = dataEntity.getDynamicObject(name);
}else if("java.util.Date".equals(propTypeName)){
Date date = dataEntity.getDate(name);
}else if("java.lang.Integer".equals(propTypeName)){
int anInt = dataEntity.getInt(name);
}else if("java.lang.Long".equals(propTypeName)){
Long aLong = dataEntity.getLong(name);
}else if("java.math.BigDecimal".equals(propTypeName)){
BigDecimal bigDecimal = dataEntity.getBigDecimal(name);
}else if("boolean".equals(propTypeName)){
boolean aBoolean = dataEntity.getBoolean(name);
}else {
String string = dataEntity.getString(name);
}
}
}
System.out.println("单据已变更的数据是:"+changeMap);
}
}
}
if("copy".equals(operateKey)) {
super.beforeDoOperation(args);
FormOperate operate = (FormOperate) args.getSource();
String operateNo = operate.getOperateKey();
if(operateNo.equalsIgnoreCase("copy")){
DynamicObject bill = this.getModel().getDataEntity();
this.getView().getFormShowParameter().setCustomParam("copySrcBillNo", bill.getString("number"));
}
}
}
@Override
public void afterCopyData(EventObject e) {
super.afterCopyData(e);
String copySrcBillNo = this.getView().getFormShowParameter().getCustomParam("copySrcBillNo");
DynamicObject dataEntity = this.getModel().getDataEntity(true);
dataEntity.set("name", copySrcBillNo + "_copy");
this.getView().invokeOperation("save");
}
public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
super.afterDoOperation(afterDoOperationEventArgs);
String operateKey = afterDoOperationEventArgs.getOperateKey();
if (StringUtils.equals("submit",operateKey)) {
getModel().setValue("tqq9_isfirst",false);
SaveServiceHelper.save(new DynamicObject[]{this.getModel().getDataEntity()});
}
}
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
String name = e.getProperty().getName();
if("tqq9_brand".equals(name)){
ChangeData changeData = e.getChangeSet()[0];
Object newValue = changeData.getNewValue();
if(newValue!=null){
DynamicObject newValue1 = (DynamicObject) newValue;
DynamicObject tqq9_brand= BusinessDataServiceHelper.loadSingle("tqq9_brand", new QFilter[]{new QFilter("id", QCP.in, newValue1.getLong("id"))});
DynamicObjectCollection tqq9_shcg = tqq9_brand.getDynamicObjectCollection("tqq9_shcg");
DynamicObjectCollection tqq9_bjcg = tqq9_brand.getDynamicObjectCollection("tqq9_bjcg");
DynamicObjectCollection tqq9_gzcg = tqq9_brand.getDynamicObjectCollection("tqq9_gzcg");
getModel().setValue("tqq9_shcg",tqq9_shcg);
getModel().setValue("tqq9_bjcg",tqq9_bjcg);
getModel().setValue("tqq9_gzcg",tqq9_gzcg);
}
}
}
}