This commit is contained in:
parent
678435ea8d
commit
4dcab8e9ad
|
|
@ -0,0 +1,488 @@
|
||||||
|
//
|
||||||
|
// Source code recreated from a .class file by IntelliJ IDEA
|
||||||
|
// (powered by FernFlower decompiler)
|
||||||
|
//
|
||||||
|
|
||||||
|
package zcgj.zcdev.zcdev.fs.plugin.form;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.EventObject;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
|
import kd.bos.dataentity.resource.ResManager;
|
||||||
|
import kd.bos.entity.datamodel.IDataModel;
|
||||||
|
import kd.bos.entity.datamodel.ListSelectedRow;
|
||||||
|
import kd.bos.entity.datamodel.ListSelectedRowCollection;
|
||||||
|
import kd.bos.entity.operate.IOperationResult;
|
||||||
|
import kd.bos.form.CloseCallBack;
|
||||||
|
import kd.bos.form.FormShowParameter;
|
||||||
|
import kd.bos.form.IFormView;
|
||||||
|
import kd.bos.form.ShowType;
|
||||||
|
import kd.bos.form.control.events.BeforeItemClickEvent;
|
||||||
|
import kd.bos.form.control.events.ItemClickEvent;
|
||||||
|
import kd.bos.form.events.AfterDoOperationEventArgs;
|
||||||
|
import kd.bos.form.events.BeforeDoOperationEventArgs;
|
||||||
|
import kd.bos.form.events.ClosedCallBackEvent;
|
||||||
|
import kd.bos.form.events.MessageBoxClosedEvent;
|
||||||
|
import kd.bos.form.operate.FormOperate;
|
||||||
|
import kd.bos.list.IListView;
|
||||||
|
import kd.bos.list.plugin.AbstractListPlugin;
|
||||||
|
import kd.bos.logging.Log;
|
||||||
|
import kd.bos.logging.LogFactory;
|
||||||
|
import kd.bos.mvc.list.ListView;
|
||||||
|
import kd.bos.orm.query.QFilter;
|
||||||
|
import kd.bos.servicehelper.QueryServiceHelper;
|
||||||
|
import kd.fi.er.business.isc.IscHelper;
|
||||||
|
import kd.fi.er.business.pub.ContractUtil;
|
||||||
|
import kd.fi.er.business.trip.util.TripCommonUtil;
|
||||||
|
import kd.fi.er.business.utils.ErStdConfig;
|
||||||
|
import kd.fi.er.formplugin.publicbiz.bill.contract.ContractBillList;
|
||||||
|
import kd.fi.er.model.EntityInfo;
|
||||||
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
|
||||||
|
public class ContractBillListExt extends AbstractListPlugin {
|
||||||
|
private static final String BAR_CHANGEA = "bar_changea";
|
||||||
|
private static final String BAR_CHANGEB = "bar_changeb";
|
||||||
|
private static final String BAR_CHANGEC = "bar_changec";
|
||||||
|
private static final String BAR_CHANGED = "bar_changed";
|
||||||
|
private static final String BAR_CHANGED_FRAME = "bar_changed_frame";
|
||||||
|
private static final String EXPENSEENTRYENTITY_SOURCEBILLNO = "expenseentryentity.wbsrcbillno";
|
||||||
|
private static final String EXPENSEENTRYENTITY_WBSRCBILLTYPE = "expenseentryentity.wbsrcbilltype";
|
||||||
|
private static final Log logger = LogFactory.getLog(ContractBillList.class);
|
||||||
|
private static String[] opkey = new String[]{"submit", "docontractsign", "updateconsign", "frozen", "unfrozen", "closebill", "pushtocontractstop"};
|
||||||
|
|
||||||
|
public ContractBillListExt() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public void registerListener(EventObject e) {
|
||||||
|
super.registerListener(e);
|
||||||
|
this.addItemClickListeners(new String[]{"bar_changea", "bar_changeb", "bar_changec", "bar_changed", "bar_changed_frame", "barstopbill"});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void beforeItemClick(BeforeItemClickEvent evt) {
|
||||||
|
switch (evt.getItemKey()) {
|
||||||
|
case "bar_changea":
|
||||||
|
this.checkChangePush(evt, "bar_changea", ResManager.loadKDString("变更金额", "ContractBillList_90", "fi-er-formplugin", new Object[0]));
|
||||||
|
break;
|
||||||
|
case "bar_changeb":
|
||||||
|
this.checkChangePush(evt, "bar_changeb", ResManager.loadKDString("变更税率", "ContractBillList_91", "fi-er-formplugin", new Object[0]));
|
||||||
|
break;
|
||||||
|
case "bar_changec":
|
||||||
|
this.checkChangePush(evt, "bar_changec", ResManager.loadKDString("补充明细", "ContractBillList_92", "fi-er-formplugin", new Object[0]));
|
||||||
|
break;
|
||||||
|
case "bar_changed":
|
||||||
|
this.checkChangePush(evt, "bar_changed", ResManager.loadKDString("变更其他", "ContractBillList_93", "fi-er-formplugin", new Object[0]));
|
||||||
|
break;
|
||||||
|
case "bar_changed_frame":
|
||||||
|
this.checkChangePush(evt, "bar_changed_frame", ResManager.loadKDString("变更框架合同", "ContractBillList_94", "fi-er-formplugin", new Object[0]));
|
||||||
|
break;
|
||||||
|
case "barstopbill":
|
||||||
|
Set<Object> ids = (Set) this.getSelectedRows().stream().map(ListSelectedRow::getPrimaryKeyValue).collect(Collectors.toSet());
|
||||||
|
if (ids.size() != 1) {
|
||||||
|
this.getView().showTipNotification(ResManager.loadKDString("请选择一行数据操作。", "ContractBillList_1", "fi-er-formplugin", new Object[0]));
|
||||||
|
evt.setCancel(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkChangePush(BeforeItemClickEvent evt, String changeoOpType, String itemTitle) {
|
||||||
|
Set<Object> ids = (Set) this.getSelectedRows().stream().map(ListSelectedRow::getPrimaryKeyValue).collect(Collectors.toSet());
|
||||||
|
if (ids.size() != 1) {
|
||||||
|
this.getView().showTipNotification(ResManager.loadKDString("请选择一行数据操作。", "ContractBillList_1", "fi-er-formplugin", new Object[0]));
|
||||||
|
evt.setCancel(true);
|
||||||
|
} else {
|
||||||
|
IListView listView = (IListView) this.getView();
|
||||||
|
String entityName = listView.getListModel().getEntityId();
|
||||||
|
ListSelectedRowCollection selectedRows = ((IListView) this.getView()).getSelectedRows();
|
||||||
|
Iterator var8 = selectedRows.iterator();
|
||||||
|
|
||||||
|
DynamicObject dynamicObject;
|
||||||
|
do {
|
||||||
|
do {
|
||||||
|
do {
|
||||||
|
do {
|
||||||
|
if (!var8.hasNext()) {
|
||||||
|
String OnWayCondition = "A,B,C,D";
|
||||||
|
String selectedProperties = String.join(",", "id", "billstatus");
|
||||||
|
DynamicObjectCollection prepayBills = QueryServiceHelper.query("er_contractbill", selectedProperties, new QFilter[]{new QFilter("srcsourceid", "in", ids)});
|
||||||
|
long count = prepayBills.stream().filter((prepayBillOnWay) -> {
|
||||||
|
return OnWayCondition.contains(prepayBillOnWay.getString("billstatus"));
|
||||||
|
}).count();
|
||||||
|
if (count > 0L) {
|
||||||
|
this.getView().showTipNotification(String.format(String.format(ResManager.loadKDString("已存在未完成的下游单据,请完成流程后再发起%1$s。", "ContractBillList_9", "fi-er-formplugin", new Object[0]), ResManager.loadKDString("变更", "ContractBillList_96", "fi-er-formplugin", new Object[0]))));
|
||||||
|
evt.setCancel(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List onwayids = ContractUtil.checkHasOnWayBills(selectedRows, OnWayCondition);
|
||||||
|
if (onwayids.size() > 0) {
|
||||||
|
this.getView().showTipNotification(String.format(String.format(ResManager.loadKDString("已存在未完成的下游单据,请完成流程后再发起%1$s。", "ContractBillList_9", "fi-er-formplugin", new Object[0]), ResManager.loadKDString("变更", "ContractBillList_96", "fi-er-formplugin", new Object[0]))));
|
||||||
|
evt.setCancel(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.getView().getPageCache().put("changeoOpType", changeoOpType);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
ListSelectedRow selectedRow = (ListSelectedRow) var8.next();
|
||||||
|
Object primaryKeyValues = selectedRow.getPrimaryKeyValue();
|
||||||
|
QFilter qFilter = new QFilter("id", "=", primaryKeyValues);
|
||||||
|
dynamicObject = QueryServiceHelper.queryOne(entityName, "frameworkcontract,billno,paybyrata,stdbilltype,detailtype,sbilltype", new QFilter[]{qFilter});
|
||||||
|
if ("1".equals(dynamicObject.get("sbilltype"))) {
|
||||||
|
this.getView().showTipNotification(String.format(String.format(ResManager.loadKDString("单据编号:%1$s 为集成单据,不能进行此操作,请重新选择。", "ContractBillList_28", "fi-er-formplugin", new Object[0]), dynamicObject.getString("billno"))));
|
||||||
|
evt.setCancel(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} while ("bar_changed_frame".equals(changeoOpType));
|
||||||
|
|
||||||
|
if (dynamicObject.getBoolean("frameworkcontract")) {
|
||||||
|
this.getView().showTipNotification(String.format(ResManager.loadKDString("框架合同不支持%1$s。", "ContractBillList_95", "fi-er-formplugin", new Object[0]), itemTitle));
|
||||||
|
evt.setCancel(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
} while (!"biztype_applybill".equals(dynamicObject.getString("detailtype")));
|
||||||
|
} while (!dynamicObject.getBoolean("paybyrata"));
|
||||||
|
} while (!"bar_changea".equals(changeoOpType) && !"bar_changec".equals(changeoOpType));
|
||||||
|
|
||||||
|
this.getView().showTipNotification(String.format(ResManager.loadKDString("按比例支付合同暂时不支持%1$s。", "ContractBillList_97", "fi-er-formplugin", new Object[0]), itemTitle));
|
||||||
|
evt.setCancel(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void afterDoOperation(AfterDoOperationEventArgs e) {
|
||||||
|
super.afterDoOperation(e);
|
||||||
|
String key = e.getOperateKey();
|
||||||
|
IOperationResult result = e.getOperationResult();
|
||||||
|
IDataModel dataModel = this.getModel();
|
||||||
|
ListView listView = (ListView) this.getView();
|
||||||
|
ListSelectedRowCollection selectedRowCollection = listView.getSelectedRows();
|
||||||
|
List<Object> pks = (List) selectedRowCollection.stream().map(ListSelectedRow::getPrimaryKeyValue).collect(Collectors.toList());
|
||||||
|
switch (key) {
|
||||||
|
case "audit":
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
case "unfrozen":
|
||||||
|
if (result.isSuccess()) {
|
||||||
|
this.getView().showSuccessNotification(ResManager.loadKDString("解冻成功。", "ContractBillList_7", "fi-er-formplugin", new Object[0]));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "frozen":
|
||||||
|
if (result.isSuccess()) {
|
||||||
|
this.getView().showSuccessNotification(ResManager.loadKDString("冻结成功。", "ContractBillList_8", "fi-er-formplugin", new Object[0]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void beforeDoOperation(BeforeDoOperationEventArgs args) {
|
||||||
|
super.beforeDoOperation(args);
|
||||||
|
String operateKey = ((FormOperate) args.getSource()).getOperateKey();
|
||||||
|
List<Long> lists = (List) args.getListSelectedData().stream().map((v) -> {
|
||||||
|
return (Long) v.getPrimaryKeyValue();
|
||||||
|
}).collect(Collectors.toList());
|
||||||
|
String opName = ((FormOperate) args.getSource()).getOperateName().toString();
|
||||||
|
String OnWayStatus = "A,B,C,D";
|
||||||
|
if (ContractUtil.isFrozen((List) args.getListSelectedData().stream().map(ListSelectedRow::getBillStatus).collect(Collectors.toList())) && ContractUtil.isFrozenOp(operateKey)) {
|
||||||
|
args.setCancel(true);
|
||||||
|
this.getView().showTipNotification(String.format(ResManager.loadKDString("冻结状态的单据不允许%1$s。", "ContractBillList_4", "fi-er-formplugin", new Object[0]), opName));
|
||||||
|
} else {
|
||||||
|
if (Arrays.stream(opkey).anyMatch((v) -> {
|
||||||
|
return operateKey.equals(v);
|
||||||
|
})) {
|
||||||
|
DynamicObjectCollection selectedBills = QueryServiceHelper.query("er_contractbill", "id,billno,detailtype,billstatus,sbilltype", new QFilter[]{new QFilter("id", "in", lists)});
|
||||||
|
Set<String> collect = (Set) selectedBills.stream().filter((o) -> {
|
||||||
|
return o.get("sbilltype").equals("1");
|
||||||
|
}).map((o) -> {
|
||||||
|
return o.getString("billno");
|
||||||
|
}).collect(Collectors.toSet());
|
||||||
|
if (collect.size() > 0) {
|
||||||
|
this.getView().showTipNotification(String.format(String.format(ResManager.loadKDString("单据编号:%1$s 为集成单据,不能进行此操作,请重新选择。", "ContractBillList_28", "fi-er-formplugin", new Object[0]), collect.toString())));
|
||||||
|
args.setCancel(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ListSelectedRowCollection rows = args.getListSelectedData();
|
||||||
|
String OnWayCondition;
|
||||||
|
Iterator var25;
|
||||||
|
ListSelectedRow row;
|
||||||
|
switch (operateKey) {
|
||||||
|
case "changedprojectower":
|
||||||
|
QFilter qFilter = new QFilter("id", "in", lists);
|
||||||
|
OnWayCondition = "H,I,J";
|
||||||
|
DynamicObjectCollection selectedBills = QueryServiceHelper.query("er_contractbill", "id,detailtype,billstatus", new QFilter[]{qFilter});
|
||||||
|
Set billstatusSet = (Set) selectedBills.stream().filter((v) -> {
|
||||||
|
return OnWayCondition.contains(v.getString("billstatus"));
|
||||||
|
}).collect(Collectors.toSet());
|
||||||
|
if (billstatusSet.size() > 0) {
|
||||||
|
this.getView().showTipNotification(ResManager.loadKDString("选择单据的单据状态不支持变更干系人,请重新选择单据。", "ContractBillList_2", "fi-er-formplugin", new Object[0]));
|
||||||
|
args.setCancel(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Set detailtypeSet = (Set) selectedBills.stream().filter((v) -> {
|
||||||
|
return "biztype_stopbill".equals(v.get("detailtype")) || "biztype_changebill".equals(v.get("detailtype"));
|
||||||
|
}).collect(Collectors.toSet());
|
||||||
|
if (detailtypeSet.size() > 0) {
|
||||||
|
this.getView().showTipNotification(ResManager.loadKDString("合同变更单/合同终止单不支持变更干系人,请重新选择单据。", "ContractBillList_3", "fi-er-formplugin", new Object[0]));
|
||||||
|
args.setCancel(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "frozen":
|
||||||
|
var25 = rows.iterator();
|
||||||
|
|
||||||
|
while (var25.hasNext()) {
|
||||||
|
row = (ListSelectedRow) var25.next();
|
||||||
|
if (!ContractUtil.froze((Long) row.getPrimaryKeyValue(), this.getView())) {
|
||||||
|
args.setCancel(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
case "unfrozen":
|
||||||
|
var25 = rows.iterator();
|
||||||
|
|
||||||
|
while (var25.hasNext()) {
|
||||||
|
row = (ListSelectedRow) var25.next();
|
||||||
|
if (!ContractUtil.unFroze((Long) row.getPrimaryKeyValue(), this.getView())) {
|
||||||
|
args.setCancel(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
case "publicreimburse":
|
||||||
|
if (!ContractUtil.checkRelationContract(this.getView(), rows, ResManager.loadKDString("对公报销单", "ApplyPayMobEdit_1", "fi-er-formplugin", new Object[0]))) {
|
||||||
|
args.setCancel(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
OnWayStatus = OnWayStatus + ",F";
|
||||||
|
List listpub = ContractUtil.checkDownBills(rows, operateKey);
|
||||||
|
if (listpub.size() > 0) {
|
||||||
|
this.getView().showTipNotification(String.format(String.format(ResManager.loadKDString("已存在未完成的下游单据,请完成流程后再发起%1$s。", "ContractBillList_9", "fi-er-formplugin", new Object[0]), opName)));
|
||||||
|
args.setCancel(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ContractUtil.checkMultiPublicReim(rows, this.getView())) {
|
||||||
|
args.setCancel(true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "pushtoprepay":
|
||||||
|
if (!ContractUtil.checkRelationContract(this.getView(), rows, ResManager.loadKDString("预付单", "ErHomeAddNewDialogPlugin_5", "fi-er-formplugin", new Object[0]))) {
|
||||||
|
args.setCancel(true);
|
||||||
|
} else {
|
||||||
|
OnWayStatus = OnWayStatus + ",F";
|
||||||
|
List listpre = ContractUtil.checkDownBills(rows, operateKey);
|
||||||
|
if (listpre.size() > 0) {
|
||||||
|
this.getView().showTipNotification(String.format(String.format(ResManager.loadKDString("已存在未完成的下游单据,请完成流程后再发起%1$s。", "ContractBillList_9", "fi-er-formplugin", new Object[0]), opName)));
|
||||||
|
args.setCancel(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "pushtocontractstop":
|
||||||
|
List list = ContractUtil.checkDownBills(rows, operateKey);
|
||||||
|
if (list.size() > 0) {
|
||||||
|
this.getView().showTipNotification(String.format(String.format(ResManager.loadKDString("已存在未完成的下游单据,请完成流程后再发起%1$s。", "ContractBillList_9", "fi-er-formplugin", new Object[0]), opName)));
|
||||||
|
args.setCancel(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
OnWayCondition = "A,B,C,D";
|
||||||
|
String selectedProperties = String.join(",", "id", "billstatus");
|
||||||
|
DynamicObjectCollection prepayBills = QueryServiceHelper.query("er_contractbill", selectedProperties, new QFilter[]{new QFilter("srcsourceid", "in", lists)});
|
||||||
|
long count = prepayBills.stream().filter((prepayBillOnWay) -> {
|
||||||
|
return OnWayCondition.contains(prepayBillOnWay.getString("billstatus"));
|
||||||
|
}).count();
|
||||||
|
if (count > 0L) {
|
||||||
|
this.getView().showTipNotification(String.format(String.format(ResManager.loadKDString("已存在未完成的下游单据,请完成流程后再发起%1$s。", "ContractBillList_9", "fi-er-formplugin", new Object[0]), opName)));
|
||||||
|
args.setCancel(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "pushcontractchange":
|
||||||
|
List onwaylist = ContractUtil.checkDownBills(rows, operateKey);
|
||||||
|
if (onwaylist.size() > 0) {
|
||||||
|
this.getView().showTipNotification(String.format(String.format(ResManager.loadKDString("已存在未完成的下游单据,请完成流程后再发起%1$s。", "ContractBillList_9", "fi-er-formplugin", new Object[0]), opName)));
|
||||||
|
args.setCancel(true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "pushcostestimatebill":
|
||||||
|
boolean b = this.checkCostestimatebill(args, this.getView(), rows);
|
||||||
|
if (!b) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
List listContract = ContractUtil.checkDownBills(rows, operateKey);
|
||||||
|
if (listContract.size() > 0) {
|
||||||
|
this.getView().showTipNotification(String.format(String.format(ResManager.loadKDString("已存在未完成的下游单据,请完成流程后再发起%1$s。", "ContractBillList_9", "fi-er-formplugin", new Object[0]), opName)));
|
||||||
|
args.setCancel(true);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case "docontractsign":
|
||||||
|
this.docontractsign(args, this.getView(), rows, operateKey);
|
||||||
|
break;
|
||||||
|
case "updateconsign":
|
||||||
|
this.docontractsign(args, this.getView(), rows, operateKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void itemClick(ItemClickEvent evt) {
|
||||||
|
super.itemClick(evt);
|
||||||
|
switch (evt.getItemKey()) {
|
||||||
|
case "importdts":
|
||||||
|
try {
|
||||||
|
IscHelper.checkExistBefore(this.getView(), true);
|
||||||
|
} catch (Exception var6) {
|
||||||
|
logger.error("ContractBillList>>>>>itemClick>:失败,原因如下:", var6);
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void confirmCallBack(MessageBoxClosedEvent evt) {
|
||||||
|
super.confirmCallBack(evt);
|
||||||
|
|
||||||
|
try {
|
||||||
|
IscHelper.importConfirmCallBack(evt, this.getView());
|
||||||
|
} catch (IOException var3) {
|
||||||
|
logger.error("ErAbstractReportList>>>confirmCallBack:失败,失败原因如下:", var3);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean checkCostestimatebill(BeforeDoOperationEventArgs args, IFormView view, ListSelectedRowCollection selectedRows) {
|
||||||
|
if (selectedRows.size() <= 0) {
|
||||||
|
view.showTipNotification(ResManager.loadKDString("请选择一条数据进行操作。", "ContractBillList_10", "fi-er-formplugin", new Object[0]));
|
||||||
|
args.setCancel(true);
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
Object[] primaryKeyValue = selectedRows.getPrimaryKeyValues();
|
||||||
|
QFilter filter = new QFilter("id", "in", primaryKeyValue);
|
||||||
|
String selectFields = "company,id,frameworkcontract,enddate,billno";
|
||||||
|
DynamicObjectCollection contractDy = QueryServiceHelper.query("er_contractbill", selectFields, new QFilter[]{filter});
|
||||||
|
long frameworkcontract = contractDy.stream().filter((it) -> {
|
||||||
|
return !it.getBoolean("frameworkcontract");
|
||||||
|
}).count();
|
||||||
|
if (frameworkcontract > 0L) {
|
||||||
|
args.setCancel(true);
|
||||||
|
view.showTipNotification(ResManager.loadKDString("仅框架合同可下推费用暂估单。", "ContractBillList_15", "fi-er-formplugin", new Object[0]));
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
Boolean contractdeadlinecontrol = ErStdConfig.getContractDeadlineControl();
|
||||||
|
logger.info(">>>>>>>>>>>>>>>>>contractdeadlinecontrol:" + contractdeadlinecontrol);
|
||||||
|
if (!contractdeadlinecontrol) {
|
||||||
|
Date now = TripCommonUtil.strToDate(TripCommonUtil.DateToStr(new Date()), "yyyy-MM-dd");
|
||||||
|
StringBuilder errorbillno = new StringBuilder();
|
||||||
|
contractDy.stream().forEach((row) -> {
|
||||||
|
Date enddate = TripCommonUtil.strToDate(TripCommonUtil.DateToStr((Date) row.get("enddate")), "yyyy-MM-dd");
|
||||||
|
if (now.after(enddate)) {
|
||||||
|
errorbillno.append(" ").append(row.get("billno"));
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
logger.info(">>>>>>>>>>>>>>>>>contractdeadlinecontrol>>>>errorbillno:" + errorbillno);
|
||||||
|
if (errorbillno.length() > 0) {
|
||||||
|
view.showTipNotification(String.format(ResManager.loadKDString("单据编号:%1$s,已超过合同截止日期,不能下推。", "ContractBillList_24", "fi-er-formplugin", new Object[0]), errorbillno));
|
||||||
|
args.setCancel(true);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String OnWayConditionStatus = "A,B,C,D";
|
||||||
|
String selectedProperties = String.join(",", "id", "billstatus");
|
||||||
|
DynamicObjectCollection prepayBills = QueryServiceHelper.query("er_contractbill", selectedProperties, new QFilter[]{new QFilter("srcsourceid", "in", primaryKeyValue)});
|
||||||
|
long count = prepayBills.stream().filter((prepayBillOnWay) -> {
|
||||||
|
return OnWayConditionStatus.contains(prepayBillOnWay.getString("billstatus"));
|
||||||
|
}).count();
|
||||||
|
if (count > 0L) {
|
||||||
|
this.getView().showTipNotification(ResManager.loadKDString("已存在未完成的下游单据,不允许再推暂估单。", "ContractBillList_6", "fi-er-formplugin", new Object[0]));
|
||||||
|
args.setCancel(true);
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
EntityInfo reimburseInfo = (new EntityInfo.Builder()).entityName("er_publicreimbursebill").entryName("contractentry").sourceName("contractsid").build();
|
||||||
|
List<String> OnWayCondition = new ArrayList();
|
||||||
|
OnWayCondition.add("H");
|
||||||
|
if (ContractUtil.getCostestimateHasOnWayBills(primaryKeyValue, reimburseInfo, OnWayCondition) > 0) {
|
||||||
|
args.setCancel(true);
|
||||||
|
view.showTipNotification(ResManager.loadKDString("下游已存在对公报销单,不允许再推暂估单。", "ContractBillList_17", "fi-er-formplugin", new Object[0]));
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
EntityInfo prepayInfo = (new EntityInfo.Builder()).entityName("er_prepaybill").entryName("expenseentryentity").sourceName("wbsrcbillid").build();
|
||||||
|
if (ContractUtil.getCostestimateHasOnWayBills(primaryKeyValue, prepayInfo, OnWayCondition) > 0) {
|
||||||
|
args.setCancel(true);
|
||||||
|
view.showTipNotification(ResManager.loadKDString("下游已存在预付单,不允许再推暂估单。", "ContractBillList_18", "fi-er-formplugin", new Object[0]));
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void docontractsign(BeforeDoOperationEventArgs args, IFormView view, ListSelectedRowCollection selectedRows, String operateKey) {
|
||||||
|
Set<Long> collect = (Set) selectedRows.stream().map((b) -> {
|
||||||
|
return (Long) b.getPrimaryKeyValue();
|
||||||
|
}).collect(Collectors.toSet());
|
||||||
|
if (collect.size() <= 1 && collect.size() > 0) {
|
||||||
|
Object[] primaryKeyValue = selectedRows.getPrimaryKeyValues();
|
||||||
|
QFilter filter = new QFilter("id", "=", primaryKeyValue[0]);
|
||||||
|
String selectFields = "id,billno,billstatus,detailtype";
|
||||||
|
DynamicObject contractDy = QueryServiceHelper.queryOne("er_contractbill", selectFields, new QFilter[]{filter});
|
||||||
|
String formname = ResManager.loadKDString("确认签约信息", "ContractBillList_12", "fi-er-formplugin", new Object[0]);
|
||||||
|
if ("updateconsign".equals(operateKey)) {
|
||||||
|
if (!"F".equals(contractDy.get("billstatus")) || !"biztype_applybill".equals(contractDy.getString("detailtype"))) {
|
||||||
|
view.showTipNotification(ResManager.loadKDString("单据类型为“合同台账”,合同状态为“执行中”时才能执行此操作。", "ContractBillList_14", "fi-er-formplugin", new Object[0]));
|
||||||
|
args.setCancel(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
formname = ResManager.loadKDString("更新签约信息", "ContractBillList_13", "fi-er-formplugin", new Object[0]);
|
||||||
|
} else if ("docontractsign".equals(operateKey) && (!"E".equals(contractDy.get("billstatus")) || !"biztype_applybill".equals(contractDy.getString("detailtype")))) {
|
||||||
|
view.showTipNotification(ResManager.loadKDString("单据类型为“合同台账”,合同状态为“审核通过”时才能执行此操作。", "ContractBillList_11", "fi-er-formplugin", new Object[0]));
|
||||||
|
args.setCancel(true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
FormShowParameter showParameter = new FormShowParameter();
|
||||||
|
Map<String, Object> customParam = new HashMap();
|
||||||
|
customParam.put("contractId", primaryKeyValue[0]);
|
||||||
|
showParameter.setFormId("er_contractsign");
|
||||||
|
showParameter.setCustomParams(customParam);
|
||||||
|
showParameter.setCaption(formname);
|
||||||
|
showParameter.setCloseCallBack(new CloseCallBack(this, "er_contractsign"));
|
||||||
|
showParameter.getOpenStyle().setShowType(ShowType.Modal);
|
||||||
|
this.getView().showForm(showParameter);
|
||||||
|
} else {
|
||||||
|
view.showTipNotification(ResManager.loadKDString("请选择一条数据进行操作。", "ContractBillList_10", "fi-er-formplugin", new Object[0]));
|
||||||
|
args.setCancel(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void closedCallBack(ClosedCallBackEvent evt) {
|
||||||
|
super.closedCallBack(evt);
|
||||||
|
String actionId = evt.getActionId();
|
||||||
|
if (StringUtils.equalsIgnoreCase("er_contractsign", actionId)) {
|
||||||
|
Map<String, Object> returnData = (Map) evt.getReturnData();
|
||||||
|
if (returnData != null && returnData.containsKey("ok") && returnData.containsKey("attachmentData")) {
|
||||||
|
ContractUtil.synAttachment(this.getView(), returnData);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue