1.报销单问题修复

2.台账查询报错修复
This commit is contained in:
zhangzhiguo 2024-12-10 18:17:40 +08:00
parent fd3b56c285
commit c7e3186fdb
8 changed files with 727 additions and 380 deletions

View File

@ -0,0 +1,198 @@
package zcgj.zcdev.zcdev.fs.plugin.form;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.CloneUtils;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.form.CloseCallBack;
import kd.bos.form.ShowFormHelper;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.bos.form.field.BasedataEdit;
import kd.bos.form.field.events.AfterF7SelectEvent;
import kd.bos.form.field.events.AfterF7SelectListener;
import kd.bos.form.field.events.BeforeF7SelectEvent;
import kd.bos.form.field.events.BeforeF7SelectListener;
import kd.bos.list.ListShowParameter;
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 java.util.EventObject;
/**
* 借款单会计科目与费用项目关联插件
*/
public class DailyloanbillExpAccPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, AfterF7SelectListener {
private static final Log log = LogFactory.getLog(DailyloanbillExpAccPlugin.class);
//开发商标识
private static final String prefix ="zcgj";
//界面回调标识(自定义)
private final static String ACTION_ID="accountview_form";
private final static String ACTION_ID_EXPENSE="expenseitem_form";
//借款单的预付信息标识
private final static String EXPENSE_ENTRY_ENTITY = "expenseentryentity";
//会计科目与费用项目映射表分录
private final static String MAP_TABLE = "zcgj_accountsitemsmap";
//会计科目与费用项目映射表分录标识
private final static String MAP_ENTRY_ENTITY = "zcgj_entryentity";
//借款单中的费用项目标识
private final static String EXPENSE_ITEM ="expenseitem";
//借款单中的会计科目标识
private final static String ACCOUNT_ITEM ="zcgj_account_item";
//分录值改变的行号
private static Integer selectRow = null;
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
BasedataEdit fieldEdit = this.getView().getControl(ACCOUNT_ITEM);
fieldEdit.addBeforeF7SelectListener(this);
fieldEdit.addAfterF7SelectListener(this);
BasedataEdit fieldEditExpense = this.getView().getControl(EXPENSE_ITEM);
fieldEditExpense.addBeforeF7SelectListener(this);
fieldEditExpense.addAfterF7SelectListener(this);
}
@Override
public void afterF7Select(AfterF7SelectEvent afterF7SelectEvent) {
String name = ((BasedataEdit) afterF7SelectEvent.getSource()).getKey();
if(ACCOUNT_ITEM.equals(name)){
Long id = null;
// 获取选中行
ListSelectedRow selectRowList = afterF7SelectEvent.getListSelectedRow();
Object inputValue = afterF7SelectEvent.getInputValue();
if(selectRowList != null){//弹框选择
id = (Long) selectRowList.getPrimaryKeyValue();
}else if(inputValue != null){//模糊查询
id=Long.valueOf(inputValue.toString());
}
if(id!=null){
QFilter nameQFilter = new QFilter(prefix+"_accounts", QCP.equals,id);
DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter});
DynamicObject dynamicObject2 = this.getModel().getDataEntity(true).getDynamicObjectCollection(EXPENSE_ENTRY_ENTITY).get(selectRow);
boolean isEx = false;
if(dynamicObject2!=null){
isEx = dynamicObject2.get(EXPENSE_ITEM) == null;
}
if(isEx && dynamicObject1!=null&&selectRow!=null){
DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY);
if(zcgjEntryentity!=null){
DynamicObject dynamicObject = zcgjEntryentity.get(0);
DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items");
long aLong = itemDynamicObject.getLong("id");
System.out.println();
this.getModel().setValue(EXPENSE_ITEM,aLong,selectRow);
}
}
}
}else if(EXPENSE_ITEM.equals(name)){
Object inputValue = afterF7SelectEvent.getInputValue();
if(inputValue!=null){
String id = String.valueOf(inputValue) ;
QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,Long.valueOf(id));
DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter});
Object value = this.getModel().getValue(ACCOUNT_ITEM, selectRow);
if(value==null && load!=null && load.length>0){
DynamicObject dynamicObject = load[0];
long aLong = dynamicObject.getLong("zcgj_accounts_id");
this.getModel().setValue(ACCOUNT_ITEM,aLong,selectRow);
}
}
}
}
@Override
public void beforeF7Select(BeforeF7SelectEvent arg0) {
String name = arg0.getProperty().getName();
if(name.equals(ACCOUNT_ITEM)){
selectRow = arg0.getRow();
if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){
selectRow = arg0.getRow();
((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this);
}
}else if(name.equals(EXPENSE_ITEM)){
if("click".equals(arg0.getSourceMethod())){
arg0.setCancel(true);
ListShowParameter showParameter = ShowFormHelper.createShowListForm("er_expenseitemedit", true);
showParameter.setCloseCallBack(new CloseCallBack(this,ACTION_ID_EXPENSE));
this.getView().showForm(showParameter);
}else if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){
selectRow = arg0.getRow();
((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this);
}
}
}
@Override
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
super.closedCallBack(closedCallBackEvent);
String actionId = closedCallBackEvent.getActionId();
Object returnData = closedCallBackEvent.getReturnData();
boolean current= true;
if(returnData!=null && actionId.equals(ACTION_ID_EXPENSE)){
//获取选中的索引
int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY);
//操作的行数据获取之前的数据
DynamicObject selectRow = this.getModel().getEntryRowEntity(EXPENSE_ENTRY_ENTITY, index);
//克隆新的行
DynamicObject insertRow = (DynamicObject) (new CloneUtils(false, false)).clone(selectRow);
ListSelectedRowCollection listSelectedRows = (ListSelectedRowCollection) closedCallBackEvent.getReturnData();
for (ListSelectedRow listSelectedRow : listSelectedRows) {
if(current){
//选择行进行更改其他行进行插入
Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index);
//给费用项目赋值
this.getModel().setValue(EXPENSE_ITEM,listSelectedRow.getPrimaryKeyValue(),index);
if(accountItem==null){
QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter});
if(load!=null && load.length>0){
DynamicObject dynamicObject = load[0];
long aLong = dynamicObject.getLong("zcgj_accounts_id");
this.getModel().setValue(ACCOUNT_ITEM,aLong,index);
}else{
this.getModel().setValue(ACCOUNT_ITEM,null,index);
}
}
current = false;
}else{
//Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index);
//if(accountItem == null){
QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter});
if(load!=null && load.length>0){
DynamicObject dynamicObject = load[0];
DynamicObject zcgjAccounts = dynamicObject.getDynamicObject("zcgj_accounts");
if(zcgjAccounts!=null){
//会计科目
insertRow.set(ACCOUNT_ITEM,zcgjAccounts);
}
}else{
insertRow.set(ACCOUNT_ITEM,null);
}
//}
//费用项目科目
QFilter nameQFilterAccItem = new QFilter("id",QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem});
insertRow.set(EXPENSE_ITEM,dynamicObjectAccItem);
this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow);
}
}
}
}
}

View File

@ -0,0 +1,197 @@
package zcgj.zcdev.zcdev.fs.plugin.form;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.CloneUtils;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.form.CloseCallBack;
import kd.bos.form.ShowFormHelper;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.bos.form.field.BasedataEdit;
import kd.bos.form.field.events.AfterF7SelectEvent;
import kd.bos.form.field.events.AfterF7SelectListener;
import kd.bos.form.field.events.BeforeF7SelectEvent;
import kd.bos.form.field.events.BeforeF7SelectListener;
import kd.bos.list.ListShowParameter;
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 java.util.EventObject;
/**
* 费用报销单会计科目与费用项目关联插件
*/
public class DailyreimbursExpAccPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, AfterF7SelectListener {
private static final Log log = LogFactory.getLog(DailyreimbursExpAccPlugin.class);
//开发商标识
private static final String prefix ="zcgj";
//界面回调标识(自定义)
private final static String ACTION_ID="accountview_form";
private final static String ACTION_ID_EXPENSE="expenseitem_form";
//费用报销单的费用明细标识
private final static String EXPENSE_ENTRY_ENTITY = "expenseentryentity";
//会计科目与费用项目映射表分录
private final static String MAP_TABLE = "zcgj_accountsitemsmap";
//会计科目与费用项目映射表分录标识
private final static String MAP_ENTRY_ENTITY = "zcgj_entryentity";
//费用报销中的费用项目标识
private final static String EXPENSE_ITEM ="expenseitem";
//费用报销中的会计科目标识
private final static String ACCOUNT_ITEM ="zcgj_account_item";
//分录值改变的行号
private static Integer selectRow = null;
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
BasedataEdit fieldEdit = this.getView().getControl(ACCOUNT_ITEM);
fieldEdit.addBeforeF7SelectListener(this);
fieldEdit.addAfterF7SelectListener(this);
BasedataEdit fieldEditExpense = this.getView().getControl(EXPENSE_ITEM);
fieldEditExpense.addBeforeF7SelectListener(this);
fieldEditExpense.addAfterF7SelectListener(this);
}
@Override
public void afterF7Select(AfterF7SelectEvent afterF7SelectEvent) {
String name = ((BasedataEdit) afterF7SelectEvent.getSource()).getKey();
if(ACCOUNT_ITEM.equals(name)){
Long id = null;
// 获取选中行
ListSelectedRow selectRowList = afterF7SelectEvent.getListSelectedRow();
Object inputValue = afterF7SelectEvent.getInputValue();
if(selectRowList != null){//弹框选择
id = (Long) selectRowList.getPrimaryKeyValue();
}else if(inputValue != null){//模糊查询
id=Long.valueOf(inputValue.toString());
}
if(id!=null){
QFilter nameQFilter = new QFilter(prefix+"_accounts",QCP.equals,id);
DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter});
DynamicObject dynamicObject2 = this.getModel().getDataEntity(true).getDynamicObjectCollection(EXPENSE_ENTRY_ENTITY).get(selectRow);
boolean isEx = false;
if(dynamicObject2!=null){
isEx = dynamicObject2.get(EXPENSE_ITEM) == null;
}
if(isEx && dynamicObject1!=null&&selectRow!=null){
DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY);
if(zcgjEntryentity!=null){
DynamicObject dynamicObject = zcgjEntryentity.get(0);
DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items");
long aLong = itemDynamicObject.getLong("id");
System.out.println();
this.getModel().setValue(EXPENSE_ITEM,aLong,selectRow);
}
}
}
}else if(EXPENSE_ITEM.equals(name)){
Object inputValue = afterF7SelectEvent.getInputValue();
if(inputValue!=null){
String id = String.valueOf(inputValue) ;
QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,Long.valueOf(id));
DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter});
Object value = this.getModel().getValue(ACCOUNT_ITEM, selectRow);
if(value==null && load!=null && load.length>0){
DynamicObject dynamicObject = load[0];
long aLong = dynamicObject.getLong("zcgj_accounts_id");
this.getModel().setValue(ACCOUNT_ITEM,aLong,selectRow);
}
}
}
}
@Override
public void beforeF7Select(BeforeF7SelectEvent arg0) {
String name = arg0.getProperty().getName();
if(name.equals(ACCOUNT_ITEM)){
selectRow = arg0.getRow();
if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){
selectRow = arg0.getRow();
((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this);
}
}else if(name.equals(EXPENSE_ITEM)){
if("click".equals(arg0.getSourceMethod())){
arg0.setCancel(true);
ListShowParameter showParameter = ShowFormHelper.createShowListForm("er_expenseitemedit", true);
showParameter.setCloseCallBack(new CloseCallBack(this,ACTION_ID_EXPENSE));
this.getView().showForm(showParameter);
}else if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){
selectRow = arg0.getRow();
((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this);
}
}
}
@Override
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
super.closedCallBack(closedCallBackEvent);
String actionId = closedCallBackEvent.getActionId();
Object returnData = closedCallBackEvent.getReturnData();
boolean current= true;
if(returnData!=null && actionId.equals(ACTION_ID_EXPENSE)){
//获取选中的索引
int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY);
//操作的行数据获取之前的数据
DynamicObject selectRow = this.getModel().getEntryRowEntity(EXPENSE_ENTRY_ENTITY, index);
//克隆新的行
DynamicObject insertRow = (DynamicObject) (new CloneUtils(false, false)).clone(selectRow);
ListSelectedRowCollection listSelectedRows = (ListSelectedRowCollection) closedCallBackEvent.getReturnData();
for (ListSelectedRow listSelectedRow : listSelectedRows) {
if(current){
//选择行进行更改其他行进行插入
Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index);
//给费用项目赋值
this.getModel().setValue(EXPENSE_ITEM,listSelectedRow.getPrimaryKeyValue(),index);
if(accountItem==null){
QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter});
if(load!=null && load.length>0){
DynamicObject dynamicObject = load[0];
long aLong = dynamicObject.getLong("zcgj_accounts_id");
this.getModel().setValue(ACCOUNT_ITEM,aLong,index);
}else{
this.getModel().setValue(ACCOUNT_ITEM,null,index);
}
}
current = false;
}else{
//Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index);
//if(accountItem == null){
QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter});
if(load!=null && load.length>0){
DynamicObject dynamicObject = load[0];
DynamicObject zcgjAccounts = dynamicObject.getDynamicObject("zcgj_accounts");
if(zcgjAccounts!=null){
//会计科目
insertRow.set(ACCOUNT_ITEM,zcgjAccounts);
}
}else{
insertRow.set(ACCOUNT_ITEM,null);
}
//}
//费用项目科目
QFilter nameQFilterAccItem = new QFilter("id",QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem});
insertRow.set(EXPENSE_ITEM,dynamicObjectAccItem);
this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow);
}
}
}
}
}

View File

@ -3,31 +3,16 @@ package zcgj.zcdev.zcdev.fs.plugin.form;
import kd.bos.algo.DataSet;
import kd.bos.algo.Row;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.CloneUtils;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.entity.operate.Submit;
import kd.bos.form.CloseCallBack;
import kd.bos.form.ShowFormHelper;
import kd.bos.form.events.BeforeDoOperationEventArgs;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.bos.form.field.BasedataEdit;
import kd.bos.form.field.events.*;
import kd.bos.list.ListFilterParameter;
import kd.bos.list.ListShowParameter;
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.bos.servicehelper.QueryServiceHelper;
import kd.sdk.plugin.Plugin;
import org.apache.commons.lang3.StringUtils;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
@ -37,35 +22,16 @@ import java.time.temporal.ChronoUnit;
import java.time.temporal.TemporalAdjusters;
import java.util.ArrayList;
import java.util.Date;
import java.util.EventObject;
import java.util.List;
/**
* 费用报销单探亲检查插件
*/
public class DailyreimbursPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, AfterF7SelectListener {
private static final Log log = LogFactory.getLog(DailyreimbursPlugin.class);
public class DailyreimbursVisitCheckPlugin extends AbstractBillPlugIn implements Plugin{
private static final Log log = LogFactory.getLog(DailyreimbursVisitCheckPlugin.class);
//开发商标识
private static final String prefix ="zcgj";
//界面回调标识(自定义)
private final static String ACTION_ID="accountview_form";
private final static String ACTION_ID_EXPENSE="expenseitem_form";
//费用报销单的费用明细标识
private final static String EXPENSE_ENTRY_ENTITY = "expenseentryentity";
//会计科目与费用项目映射表分录
private final static String MAP_TABLE = "zcgj_accountsitemsmap";
//会计科目与费用项目映射表分录标识
private final static String MAP_ENTRY_ENTITY = "zcgj_entryentity";
//费用报销中的费用项目标识
private final static String EXPENSE_ITEM ="expenseitem";
//费用报销中的会计科目标识
private final static String ACCOUNT_ITEM ="zcgj_account_item";
//分录值改变的行号
private static Integer selectRow = null;
@Override
public void beforeDoOperation(BeforeDoOperationEventArgs args) {
try{
@ -195,13 +161,22 @@ public class DailyreimbursPlugin extends AbstractBillPlugIn implements Plugin,
LocalDate firstDayYearsAgo = getFirstDayYearsAgo(dateToLocalDate(startTime), visitYear);
Date lastDayOfYear = getLastDayOfYear(startTime);
List<String> billStatuslist = new ArrayList<>();
billStatuslist.add("B");
billStatuslist.add("C");
billStatuslist.add("D");
billStatuslist.add("E");
billStatuslist.add("F");
billStatuslist.add("G");
// 查询条件
QFilter[] filterArray = new QFilter[4];
QFilter[] filterArray = new QFilter[5];
//查询申请人下的今年的探亲差旅单据
filterArray[0] = new QFilter(prefix+"_holiday_start_time", QCP.large_equals, firstDayOfYear);
filterArray[1] = new QFilter(prefix+"_holiday_start_time", QCP.less_equals, lastDayOfYear);
filterArray[2] = new QFilter("applier", QCP.equals, applierId);
filterArray[3] = new QFilter(prefix+"_is_visit", QCP.equals, true);
filterArray[4] = new QFilter("billstatus", QCP.in, billStatuslist);
DataSet dateSet = QueryServiceHelper.queryDataSet(
this.getClass().getName(),
"er_dailyreimbursebill",
@ -300,234 +275,6 @@ public class DailyreimbursPlugin extends AbstractBillPlugIn implements Plugin,
}
}
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
BasedataEdit fieldEdit = this.getView().getControl(ACCOUNT_ITEM);
fieldEdit.addBeforeF7SelectListener(this);
fieldEdit.addAfterF7SelectListener(this);
BasedataEdit fieldEditExpense = this.getView().getControl(EXPENSE_ITEM);
fieldEditExpense.addBeforeF7SelectListener(this);
fieldEditExpense.addAfterF7SelectListener(this);
}
@Override
public void afterF7Select(AfterF7SelectEvent afterF7SelectEvent) {
String name = ((BasedataEdit) afterF7SelectEvent.getSource()).getKey();
if(ACCOUNT_ITEM.equals(name)){
Long id = null;
// 获取选中行
ListSelectedRow selectRowList = afterF7SelectEvent.getListSelectedRow();
Object inputValue = afterF7SelectEvent.getInputValue();
if(selectRowList != null){//弹框选择
id = (Long) selectRowList.getPrimaryKeyValue();
}else if(inputValue != null){//模糊查询
id=Long.valueOf(inputValue.toString());
}
if(id!=null){
QFilter nameQFilter = new QFilter(prefix+"_accounts",QCP.equals,id);
DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter});
DynamicObject dynamicObject2 = this.getModel().getDataEntity(true).getDynamicObjectCollection(EXPENSE_ENTRY_ENTITY).get(selectRow);
boolean isEx = false;
if(dynamicObject2!=null){
isEx = dynamicObject2.get(EXPENSE_ITEM) == null;
}
if(isEx && dynamicObject1!=null&&selectRow!=null){
DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY);
if(zcgjEntryentity!=null){
DynamicObject dynamicObject = zcgjEntryentity.get(0);
DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items");
long aLong = itemDynamicObject.getLong("id");
System.out.println();
this.getModel().setValue(EXPENSE_ITEM,aLong,selectRow);
}
}
}
}else if(EXPENSE_ITEM.equals(name)){
Object inputValue = afterF7SelectEvent.getInputValue();
if(inputValue!=null){
String id = String.valueOf(inputValue) ;
QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,Long.valueOf(id));
DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter});
Object value = this.getModel().getValue(ACCOUNT_ITEM, selectRow);
if(value==null && load!=null && load.length>0){
DynamicObject dynamicObject = load[0];
long aLong = dynamicObject.getLong("zcgj_accounts_id");
this.getModel().setValue(ACCOUNT_ITEM,aLong,selectRow);
}
}
}
}
@Override
public void beforeF7Select(BeforeF7SelectEvent arg0) {
String name = arg0.getProperty().getName();
if(name.equals(ACCOUNT_ITEM)){
selectRow = arg0.getRow();
/* List<QFilter> qFilterList = new ArrayList<QFilter>();
qFilterList.add(new QFilter("number", QCP.like,"Sups%"));
arg0.setCustomQFilters(qFilterList);*/
/*if("click".equals(arg0.getSourceMethod())){
arg0.setCancel(true);
Object value = this.getModel().getValue("zcgj_accounttable_number");
DynamicObject costcompany = (DynamicObject)this.getModel().getValue("costcompany");
long costcompanyId = costcompany.getLong("id");
//设置自定义F7弹框增加过滤条件
List<QFilter> qFilterList = new ArrayList<QFilter>();
qFilterList.add(new QFilter("accounttable.number", QCP.equals,value));
//qFilterList.add(new QFilter("createorg", QCP.equals,Long.parseLong(costcompanyId+"")));
ListFilterParameter listFilterParameter =new ListFilterParameter(qFilterList,null);
ListShowParameter showParameter = ShowFormHelper.createShowListForm("bd_accountview", true);
showParameter.setCloseCallBack(new CloseCallBack(this,ACTION_ID));
showParameter.setListFilterParameter(listFilterParameter);
this.getView().showForm(showParameter);
}else if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){
selectRow = arg0.getRow();
((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this);
}*/
if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){
selectRow = arg0.getRow();
((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this);
}
}else if(name.equals(EXPENSE_ITEM)){
if("click".equals(arg0.getSourceMethod())){
arg0.setCancel(true);
ListShowParameter showParameter = ShowFormHelper.createShowListForm("er_expenseitemedit", true);
showParameter.setCloseCallBack(new CloseCallBack(this,ACTION_ID_EXPENSE));
this.getView().showForm(showParameter);
}else if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){
selectRow = arg0.getRow();
((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this);
}
}
}
@Override
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
super.closedCallBack(closedCallBackEvent);
String actionId = closedCallBackEvent.getActionId();
Object returnData = closedCallBackEvent.getReturnData();
boolean current= true;
/*if(returnData!=null && actionId.equals(ACTION_ID)){
//获取选中的索引
int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY);
//操作的行数据获取之前的数据
DynamicObject selectRow = this.getModel().getEntryRowEntity(EXPENSE_ENTRY_ENTITY, index);
//克隆新的行
DynamicObject insertRow = (DynamicObject) (new CloneUtils(false, false)).clone(selectRow);
ListSelectedRowCollection listSelectedRows = (ListSelectedRowCollection) closedCallBackEvent.getReturnData();
for (ListSelectedRow listSelectedRow : listSelectedRows) {
if(current){
//选择行进行更改其他行进行插入
//给会计科目赋值
this.getModel().setValue(ACCOUNT_ITEM,listSelectedRow.getPrimaryKeyValue(),index);
Object expense = this.getModel().getValue(EXPENSE_ITEM, index);
if(expense == null){
QFilter nameQFilter = new QFilter(prefix+"_accounts",QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter});
if(dynamicObject1!=null){
DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY);
if(zcgjEntryentity!=null){
DynamicObject dynamicObject = zcgjEntryentity.get(0);
DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items");
long aLong = itemDynamicObject.getLong("id");
this.getModel().setValue(EXPENSE_ITEM,aLong,index);
}else{
this.getModel().setValue(EXPENSE_ITEM,null,index);
}
}else{
this.getModel().setValue(EXPENSE_ITEM,null,index);
}
}
current = false;
}else{
Object expense = this.getModel().getValue(EXPENSE_ITEM, index);
if(expense==null){
QFilter nameQFilter = new QFilter(prefix+"_accounts",QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter});
if(dynamicObject1!=null){
DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY);
if(zcgjEntryentity!=null){
DynamicObject dynamicObject = zcgjEntryentity.get(0);
DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items");
//费用项目
insertRow.set(EXPENSE_ITEM,itemDynamicObject);
}
}else{
insertRow.set(EXPENSE_ITEM,null);
}
}
//会计科目
QFilter nameQFilterAccItem = new QFilter("id",QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("bd_accountview", "number,name", new QFilter[]{nameQFilterAccItem});
insertRow.set(ACCOUNT_ITEM,dynamicObjectAccItem);
this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow);
}
}
}else */
if(returnData!=null && actionId.equals(ACTION_ID_EXPENSE)){
//获取选中的索引
int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY);
//操作的行数据获取之前的数据
DynamicObject selectRow = this.getModel().getEntryRowEntity(EXPENSE_ENTRY_ENTITY, index);
//克隆新的行
DynamicObject insertRow = (DynamicObject) (new CloneUtils(false, false)).clone(selectRow);
ListSelectedRowCollection listSelectedRows = (ListSelectedRowCollection) closedCallBackEvent.getReturnData();
for (ListSelectedRow listSelectedRow : listSelectedRows) {
if(current){
//选择行进行更改其他行进行插入
Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index);
//给费用项目赋值
this.getModel().setValue(EXPENSE_ITEM,listSelectedRow.getPrimaryKeyValue(),index);
if(accountItem==null){
QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter});
if(load!=null && load.length>0){
DynamicObject dynamicObject = load[0];
long aLong = dynamicObject.getLong("zcgj_accounts_id");
this.getModel().setValue(ACCOUNT_ITEM,aLong,index);
}else{
this.getModel().setValue(ACCOUNT_ITEM,null,index);
}
}
current = false;
}else{
//Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index);
//if(accountItem == null){
QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter});
if(load!=null && load.length>0){
DynamicObject dynamicObject = load[0];
DynamicObject zcgjAccounts = dynamicObject.getDynamicObject("zcgj_accounts");
if(zcgjAccounts!=null){
//会计科目
insertRow.set(ACCOUNT_ITEM,zcgjAccounts);
}
}else{
insertRow.set(ACCOUNT_ITEM,null);
}
//}
//费用项目科目
QFilter nameQFilterAccItem = new QFilter("id",QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem});
insertRow.set(EXPENSE_ITEM,dynamicObjectAccItem);
this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow);
}
}
}
}
/**
* java.util.Date 转换为 java.time.LocalDate
* @param date java.util.Date

View File

@ -0,0 +1,87 @@
package zcgj.zcdev.zcdev.fs.plugin.form;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.CloneUtils;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.entity.operate.Submit;
import kd.bos.form.CloseCallBack;
import kd.bos.form.ShowFormHelper;
import kd.bos.form.events.BeforeDoOperationEventArgs;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.bos.form.field.BasedataEdit;
import kd.bos.form.field.events.AfterF7SelectEvent;
import kd.bos.form.field.events.AfterF7SelectListener;
import kd.bos.form.field.events.BeforeF7SelectEvent;
import kd.bos.form.field.events.BeforeF7SelectListener;
import kd.bos.list.ListShowParameter;
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 java.time.LocalDate;
import java.time.ZoneId;
import java.util.Date;
import java.util.EventObject;
/**
* 预付单去年合同提醒插件
*/
public class PrepaybillContractPlugin extends AbstractBillPlugIn implements Plugin{
private static final Log log = LogFactory.getLog(PrepaybillContractPlugin.class);
//开发商标识
private static final String prefix ="zcgj";
//预付单的关联合同标识
private final static String CONTRACT_ENTRY_ENTITY = "contractentry";
@Override
public void beforeDoOperation(BeforeDoOperationEventArgs args) {
if((args.getSource() instanceof Submit) ) {
Submit source = (Submit) args.getSource();
if (source.getOperateKey().equals("submit")) {
//获取当前页面的数据包
DynamicObject dataEntity = this.getModel().getDataEntity(true);
//获取单据体数据的集合
DynamicObjectCollection goodsEntities=dataEntity.getDynamicObjectCollection(CONTRACT_ENTRY_ENTITY);
boolean isMsg = false;
for (DynamicObject entryObj : goodsEntities) {
//获取合同签订日期
Date signdate = entryObj.getDate("signdate");
LocalDate localDate = dateToLocalDate(signdate);
int signdateYear = localDate.getYear();
int currentYear = LocalDate.now().getYear();
if(signdateYear<currentYear) {
isMsg = true;
}
}
if(isMsg){
this.getView().showTipNotification("去年合同不占用本年预算");
}
}
}
}
/**
* java.util.Date 转换为 java.time.LocalDate
* @param date java.util.Date
* @return java.time.LocalDate
*/
public static LocalDate dateToLocalDate(Date date) {
if (date == null) {
throw new IllegalArgumentException("日期不能为 null");
}
return date.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
}
}

View File

@ -0,0 +1,198 @@
package zcgj.zcdev.zcdev.fs.plugin.form;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.CloneUtils;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.form.CloseCallBack;
import kd.bos.form.ShowFormHelper;
import kd.bos.form.events.ClosedCallBackEvent;
import kd.bos.form.field.BasedataEdit;
import kd.bos.form.field.events.AfterF7SelectEvent;
import kd.bos.form.field.events.AfterF7SelectListener;
import kd.bos.form.field.events.BeforeF7SelectEvent;
import kd.bos.form.field.events.BeforeF7SelectListener;
import kd.bos.list.ListShowParameter;
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 java.util.EventObject;
/**
* 预付单会计科目与费用项目关联插件
*/
public class PrepaybillExpAccPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, AfterF7SelectListener {
private static final Log log = LogFactory.getLog(PrepaybillExpAccPlugin.class);
//开发商标识
private static final String prefix ="zcgj";
//界面回调标识(自定义)
private final static String ACTION_ID="accountview_form";
private final static String ACTION_ID_EXPENSE="expenseitem_form";
//预付单的预付信息标识
private final static String EXPENSE_ENTRY_ENTITY = "expenseentryentity";
//会计科目与费用项目映射表分录
private final static String MAP_TABLE = "zcgj_accountsitemsmap";
//会计科目与费用项目映射表分录标识
private final static String MAP_ENTRY_ENTITY = "zcgj_entryentity";
//预付单中的费用项目标识
private final static String EXPENSE_ITEM ="expenseitem";
//预付单中的会计科目标识
private final static String ACCOUNT_ITEM ="zcgj_account_item";
//分录值改变的行号
private static Integer selectRow = null;
@Override
public void registerListener(EventObject e) {
super.registerListener(e);
BasedataEdit fieldEdit = this.getView().getControl(ACCOUNT_ITEM);
fieldEdit.addBeforeF7SelectListener(this);
fieldEdit.addAfterF7SelectListener(this);
BasedataEdit fieldEditExpense = this.getView().getControl(EXPENSE_ITEM);
fieldEditExpense.addBeforeF7SelectListener(this);
fieldEditExpense.addAfterF7SelectListener(this);
}
@Override
public void afterF7Select(AfterF7SelectEvent afterF7SelectEvent) {
String name = ((BasedataEdit) afterF7SelectEvent.getSource()).getKey();
if(ACCOUNT_ITEM.equals(name)){
Long id = null;
// 获取选中行
ListSelectedRow selectRowList = afterF7SelectEvent.getListSelectedRow();
Object inputValue = afterF7SelectEvent.getInputValue();
if(selectRowList != null){//弹框选择
id = (Long) selectRowList.getPrimaryKeyValue();
}else if(inputValue != null){//模糊查询
id=Long.valueOf(inputValue.toString());
}
if(id!=null){
QFilter nameQFilter = new QFilter(prefix+"_accounts", QCP.equals,id);
DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter});
DynamicObject dynamicObject2 = this.getModel().getDataEntity(true).getDynamicObjectCollection(EXPENSE_ENTRY_ENTITY).get(selectRow);
boolean isEx = false;
if(dynamicObject2!=null){
isEx = dynamicObject2.get(EXPENSE_ITEM) == null;
}
if(isEx && dynamicObject1!=null&&selectRow!=null){
DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY);
if(zcgjEntryentity!=null){
DynamicObject dynamicObject = zcgjEntryentity.get(0);
DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items");
long aLong = itemDynamicObject.getLong("id");
System.out.println();
this.getModel().setValue(EXPENSE_ITEM,aLong,selectRow);
}
}
}
}else if(EXPENSE_ITEM.equals(name)){
Object inputValue = afterF7SelectEvent.getInputValue();
if(inputValue!=null){
String id = String.valueOf(inputValue) ;
QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,Long.valueOf(id));
DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter});
Object value = this.getModel().getValue(ACCOUNT_ITEM, selectRow);
if(value==null && load!=null && load.length>0){
DynamicObject dynamicObject = load[0];
long aLong = dynamicObject.getLong("zcgj_accounts_id");
this.getModel().setValue(ACCOUNT_ITEM,aLong,selectRow);
}
}
}
}
@Override
public void beforeF7Select(BeforeF7SelectEvent arg0) {
String name = arg0.getProperty().getName();
if(name.equals(ACCOUNT_ITEM)){
selectRow = arg0.getRow();
if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){
selectRow = arg0.getRow();
((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this);
}
}else if(name.equals(EXPENSE_ITEM)){
if("click".equals(arg0.getSourceMethod())){
arg0.setCancel(true);
ListShowParameter showParameter = ShowFormHelper.createShowListForm("er_expenseitemedit", true);
showParameter.setCloseCallBack(new CloseCallBack(this,ACTION_ID_EXPENSE));
this.getView().showForm(showParameter);
}else if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){
selectRow = arg0.getRow();
((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this);
}
}
}
@Override
public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
super.closedCallBack(closedCallBackEvent);
String actionId = closedCallBackEvent.getActionId();
Object returnData = closedCallBackEvent.getReturnData();
boolean current= true;
if(returnData!=null && actionId.equals(ACTION_ID_EXPENSE)){
//获取选中的索引
int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY);
//操作的行数据获取之前的数据
DynamicObject selectRow = this.getModel().getEntryRowEntity(EXPENSE_ENTRY_ENTITY, index);
//克隆新的行
DynamicObject insertRow = (DynamicObject) (new CloneUtils(false, false)).clone(selectRow);
ListSelectedRowCollection listSelectedRows = (ListSelectedRowCollection) closedCallBackEvent.getReturnData();
for (ListSelectedRow listSelectedRow : listSelectedRows) {
if(current){
//选择行进行更改其他行进行插入
Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index);
//给费用项目赋值
this.getModel().setValue(EXPENSE_ITEM,listSelectedRow.getPrimaryKeyValue(),index);
if(accountItem==null){
QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter});
if(load!=null && load.length>0){
DynamicObject dynamicObject = load[0];
long aLong = dynamicObject.getLong("zcgj_accounts_id");
this.getModel().setValue(ACCOUNT_ITEM,aLong,index);
}else{
this.getModel().setValue(ACCOUNT_ITEM,null,index);
}
}
current = false;
}else{
//Object accountItem = this.getModel().getValue(ACCOUNT_ITEM, index);
//if(accountItem == null){
QFilter nameQFilter = new QFilter(prefix+"_entryentity.zcgj_entity_items.id", QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject[] load = BusinessDataServiceHelper.load(MAP_TABLE, "createorg,zcgj_accounts", new QFilter[]{nameQFilter});
if(load!=null && load.length>0){
DynamicObject dynamicObject = load[0];
DynamicObject zcgjAccounts = dynamicObject.getDynamicObject("zcgj_accounts");
if(zcgjAccounts!=null){
//会计科目
insertRow.set(ACCOUNT_ITEM,zcgjAccounts);
}
}else{
insertRow.set(ACCOUNT_ITEM,null);
}
//}
//费用项目科目
QFilter nameQFilterAccItem = new QFilter("id",QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem});
insertRow.set(EXPENSE_ITEM,dynamicObjectAccItem);
this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow);
}
}
}
}
}

View File

@ -6,8 +6,6 @@ import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.ListSelectedRow;
import kd.bos.entity.datamodel.ListSelectedRowCollection;
import kd.bos.entity.datamodel.events.ChangeData;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.CloseCallBack;
import kd.bos.form.ShowFormHelper;
import kd.bos.form.events.ClosedCallBackEvent;
@ -16,27 +14,22 @@ import kd.bos.form.field.events.AfterF7SelectEvent;
import kd.bos.form.field.events.AfterF7SelectListener;
import kd.bos.form.field.events.BeforeF7SelectEvent;
import kd.bos.form.field.events.BeforeF7SelectListener;
import kd.bos.list.ListFilterParameter;
import kd.bos.list.ListShowParameter;
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.bos.tree.TreeFilterParameter;
import kd.sdk.plugin.Plugin;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.EventObject;
import java.util.List;
/**
* 对公报销单插件
* 对公报销单会计科目与费用项目关联插件
*/
public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, AfterF7SelectListener {
public class PublicreimbursebillExpAccPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, AfterF7SelectListener {
private static final Log log = LogFactory.getLog(PublicreimbursebillPlugin.class);
private static final Log log = LogFactory.getLog(PublicreimbursebillExpAccPlugin.class);
//开发商标识
private static final String prefix ="zcgj";
@ -70,19 +63,7 @@ public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plu
BasedataEdit fieldEditExpense = this.getView().getControl(EXPENSE_ITEM);
fieldEditExpense.addBeforeF7SelectListener(this);
fieldEditExpense.addAfterF7SelectListener(this);
}
@Override
public void propertyChanged(PropertyChangedArgs e) {
super.propertyChanged(e);
String name = e.getProperty().getName();
if(name.equals(ACCOUNT_ITEM)){
ChangeData[] changeSet = e.getChangeSet();
DynamicObject dynamicObject = (DynamicObject)changeSet[0].getNewValue();
System.out.println();
//Object fh = String.valueOf(dynamicObject.get(8));
//this.getModel().setValue("ooo0_remark",fh);
}
}
@Override
@ -99,9 +80,9 @@ public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plu
id=Long.valueOf(inputValue.toString());
}
if(id!=null){
QFilter nameQFilter = new QFilter(prefix+"_accounts",QCP.equals,id);
QFilter nameQFilter = new QFilter(prefix+"_accounts", QCP.equals,id);
DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter});
DynamicObject dynamicObject2 = this.getModel().getDataEntity(true).getDynamicObjectCollection("expenseentryentity").get(selectRow);
DynamicObject dynamicObject2 = this.getModel().getDataEntity(true).getDynamicObjectCollection(EXPENSE_ENTRY_ENTITY).get(selectRow);
boolean isEx = false;
if(dynamicObject2!=null){
isEx = dynamicObject2.get(EXPENSE_ITEM) == null;
@ -130,7 +111,6 @@ public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plu
this.getModel().setValue(ACCOUNT_ITEM,aLong,selectRow);
}
}
}
}
@ -140,32 +120,6 @@ public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plu
String name = arg0.getProperty().getName();
if(name.equals(ACCOUNT_ITEM)){
selectRow = arg0.getRow();
/*if("click".equals(arg0.getSourceMethod())){
arg0.setCancel(true);
Object value = this.getModel().getValue("zcgj_accounttable_number");
DynamicObject costcompany = (DynamicObject)this.getModel().getValue("costcompany");
long costcompanyId = costcompany.getLong("id");
//((ListShowParameter)beforeF7SelectEvent.getFormShowParameter()).getTreeFilterParameter().getQFilters().add(new QFilter("name", "=", "长度"))
//设置自定义F7弹框增加过滤条件
List<QFilter> qFilterList = new ArrayList<QFilter>();
qFilterList.add(new QFilter("accounttable.number", QCP.equals,value));
//qFilterList.add(new QFilter("createorg", QCP.equals,Long.parseLong(costcompanyId+"")));
ListFilterParameter listFilterParameter =new ListFilterParameter(qFilterList,null);
ListShowParameter showParameter = ShowFormHelper.createShowListForm("bd_accountview", true);
showParameter.setCloseCallBack(new CloseCallBack(this,ACTION_ID));
showParameter.setListFilterParameter(listFilterParameter);
List<QFilter> qFilterList1 = new ArrayList<QFilter>();
qFilterList1.add(new QFilter("accounttable.number", QCP.equals,value));
TreeFilterParameter treeFilterParameter = new TreeFilterParameter();
treeFilterParameter.setQFilters(qFilterList1);
showParameter.setTreeFilterParameter(treeFilterParameter);
this.getView().showForm(showParameter);
}else if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){
selectRow = arg0.getRow();
((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this);
}*/
if("setItemByIdFromClient".equals(arg0.getSourceMethod()) ){
selectRow = arg0.getRow();
((BasedataEdit) arg0.getSource()).addAfterF7SelectListener(this);
@ -189,67 +143,6 @@ public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plu
String actionId = closedCallBackEvent.getActionId();
Object returnData = closedCallBackEvent.getReturnData();
boolean current= true;
/*if(returnData!=null && actionId.equals(ACTION_ID)){
//获取选中的索引
int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY);
//操作的行数据获取之前的数据
DynamicObject selectRow = this.getModel().getEntryRowEntity(EXPENSE_ENTRY_ENTITY, index);
//克隆新的行
DynamicObject insertRow = (DynamicObject) (new CloneUtils(false, false)).clone(selectRow);
ListSelectedRowCollection listSelectedRows = (ListSelectedRowCollection) closedCallBackEvent.getReturnData();
for (ListSelectedRow listSelectedRow : listSelectedRows) {
if(current){
//选择行进行更改其他行进行插入
//给会计科目赋值
Object expense = this.getModel().getValue(EXPENSE_ITEM, index);
this.getModel().setValue(ACCOUNT_ITEM,listSelectedRow.getPrimaryKeyValue(),index);
if(expense==null){
QFilter nameQFilter = new QFilter(prefix+"_accounts", QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter});
if(dynamicObject1!=null){
DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY);
if(zcgjEntryentity!=null){
DynamicObject dynamicObject = zcgjEntryentity.get(0);
DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items");
long aLong = itemDynamicObject.getLong("id");
this.getModel().setValue(EXPENSE_ITEM,aLong,index);
}else{
this.getModel().setValue(EXPENSE_ITEM,null,index);
}
}else{
this.getModel().setValue(EXPENSE_ITEM,null,index);
}
}
current = false;
}else{
Object expense = this.getModel().getValue(EXPENSE_ITEM, index);
if(expense==null){
QFilter nameQFilter = new QFilter(prefix+"_accounts",QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject dynamicObject1 = BusinessDataServiceHelper.loadSingle(MAP_TABLE, "createorg,zcgj_entryentity,zcgj_entryentity.zcgj_entity_items", new QFilter[]{nameQFilter});
if(dynamicObject1!=null){
DynamicObjectCollection zcgjEntryentity = (DynamicObjectCollection) dynamicObject1.get(MAP_ENTRY_ENTITY);
if(zcgjEntryentity!=null){
DynamicObject dynamicObject = zcgjEntryentity.get(0);
DynamicObject itemDynamicObject= dynamicObject.getDynamicObject(prefix+"_entity_items");
//费用项目
insertRow.set(EXPENSE_ITEM,itemDynamicObject);
}
}else{
insertRow.set(EXPENSE_ITEM,null);
}
}
//会计科目
QFilter nameQFilterAccItem = new QFilter("id",QCP.equals,listSelectedRow.getPrimaryKeyValue());
DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("bd_accountview", "number,name", new QFilter[]{nameQFilterAccItem});
insertRow.set(ACCOUNT_ITEM,dynamicObjectAccItem);
this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow);
}
}
}else*/
if(returnData!=null && actionId.equals(ACTION_ID_EXPENSE)){
//获取选中的索引
int index = this.getModel().getEntryCurrentRowIndex(EXPENSE_ENTRY_ENTITY);
@ -298,10 +191,8 @@ public class PublicreimbursebillPlugin extends AbstractBillPlugIn implements Plu
DynamicObject dynamicObjectAccItem = BusinessDataServiceHelper.loadSingle("er_expenseitemedit", "number,name", new QFilter[]{nameQFilterAccItem});
insertRow.set(EXPENSE_ITEM,dynamicObjectAccItem);
this.getModel().createNewEntryRow(EXPENSE_ENTRY_ENTITY,insertRow);
}
}
}
}
}

View File

@ -131,7 +131,22 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
}
//年份-(预算&实际)/项目/金额
Map<String,Map<String,BigDecimal>> countMap = new HashMap<>();
List<QFilter> searchFilterList1 = new ArrayList<>();
//searchFilterList.add(new QFilter(DEV_KEY+"_year", QCP.equals, getFirstDayOfYear(year)));
DataSet queryUserDataSet = QueryServiceHelper.queryDataSet(this.getClass().getName() + Bill_ANNUAL_BUDGET,
Bill_ANNUAL_BUDGET, selectSettlementFields.toString(), searchFilterList1.toArray(new QFilter [] {}), null).orderBy(new String[]{DEV_KEY+"_user",DEV_KEY+"_year"});
Set<Long> userSet = new HashSet<>();
for (Row row : queryUserDataSet) {
Long aLong = row.getLong(DEV_KEY + "_user");
userSet.add(aLong);
}
for (Long userId : allUsersOfOrg) {
if(!userSet.contains(userId)){
continue;
}
Map<String, Object> userInfoByID = UserServiceHelper.getUserInfoByID(userId);
//预算金额 start
String username = String.valueOf(userInfoByID.get("name"));
@ -197,7 +212,6 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
userYearMapData.put(formatYear,d1);
}
}
for (Integer year : yearList) {
Object [] tempData = new Object [FIELDS.length];
tempData[0] = userId;
@ -363,6 +377,8 @@ public class BudgetActuRptQueryPlugin extends AbstractReportListDataPlugin {
countMap.put(year+"b",m);
}
}
//关闭dataset
settlementDataSet.close();
}
if(countMap.isEmpty()){
return resultDataSet;

View File

@ -1,6 +1,8 @@
package zcgj.zcdev.zcdev.fs.plugin.report;
import kd.bos.entity.datamodel.events.PackageDataEvent;
import kd.bos.entity.report.FilterInfo;
import kd.bos.entity.report.ReportQueryParam;
import kd.bos.report.events.CellStyleRule;
import kd.bos.report.plugin.AbstractReportFormPlugin;
import kd.sdk.plugin.Plugin;
@ -33,6 +35,17 @@ public class FeeDeductionRptListPlugin extends AbstractReportFormPlugin implemen
super.packageData(packageDataEvent);
}
@Override
public boolean verifyQuery(ReportQueryParam queryParam) {
FilterInfo filter = queryParam.getFilter();
StringBuilder sb = new StringBuilder();
if (filter.getValue("zcgj_query_org") == null){
this.getView().showTipNotification("请选择查询组织!");
return false;
}
return true;
}
@Override
public void setCellStyleRules(List<CellStyleRule> cellStyleRules) {