Merge remote-tracking branch 'origin/main'
This commit is contained in:
commit
5220a2e547
|
@ -1,21 +1,44 @@
|
||||||
package shkd.sys.sys.plugin.form;
|
package shkd.sys.sys.plugin.form;
|
||||||
|
|
||||||
|
import dm.jdbc.util.StringUtil;
|
||||||
import kd.bos.bill.AbstractBillPlugIn;
|
import kd.bos.bill.AbstractBillPlugIn;
|
||||||
|
import kd.bos.data.BusinessDataReader;
|
||||||
import kd.bos.dataentity.entity.DynamicObject;
|
import kd.bos.dataentity.entity.DynamicObject;
|
||||||
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
||||||
|
import kd.bos.dataentity.metadata.IDataEntityType;
|
||||||
|
import kd.bos.entity.botp.ConvertBill;
|
||||||
|
import kd.bos.entity.botp.ConvertOpType;
|
||||||
|
import kd.bos.entity.botp.ConvertRuleCache;
|
||||||
|
import kd.bos.entity.botp.ConvertRuleElement;
|
||||||
|
import kd.bos.entity.botp.runtime.ConvertOpParameter;
|
||||||
|
import kd.bos.entity.botp.runtime.ConvertOpRule;
|
||||||
|
import kd.bos.entity.botp.runtime.ConvertOperationResult;
|
||||||
|
import kd.bos.entity.botp.runtime.DrawArgs;
|
||||||
|
import kd.bos.entity.datamodel.IBillModel;
|
||||||
|
import kd.bos.entity.datamodel.IRefrencedataProvider;
|
||||||
|
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.ChangeData;
|
||||||
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
||||||
import kd.bos.entity.operate.result.OperationResult;
|
import kd.bos.entity.operate.result.OperationResult;
|
||||||
import kd.bos.ext.fi.bei.util.EmptyUtil;
|
import kd.bos.form.IPageCache;
|
||||||
import kd.bos.form.control.Toolbar;
|
import kd.bos.form.control.Toolbar;
|
||||||
import kd.bos.form.control.events.ItemClickEvent;
|
import kd.bos.form.control.events.ItemClickEvent;
|
||||||
import kd.bos.i18n.mservice.I18nServiceHelper;
|
import kd.bos.form.events.BeforeDoOperationEventArgs;
|
||||||
import kd.bos.i18n.mservice.utils.AmountConvertResult;
|
import kd.bos.form.field.RefBillEdit;
|
||||||
|
import kd.bos.form.field.events.BeforeF7SelectEvent;
|
||||||
|
import kd.bos.form.field.events.BeforeF7SelectListener;
|
||||||
|
import kd.bos.form.operate.AbstractOperate;
|
||||||
|
import kd.bos.form.operate.botp.Push;
|
||||||
|
import kd.bos.list.ListShowParameter;
|
||||||
import kd.bos.logging.Log;
|
import kd.bos.logging.Log;
|
||||||
import kd.bos.logging.LogFactory;
|
import kd.bos.logging.LogFactory;
|
||||||
import kd.bos.orm.query.QCP;
|
import kd.bos.orm.query.QCP;
|
||||||
import kd.bos.orm.query.QFilter;
|
import kd.bos.orm.query.QFilter;
|
||||||
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
||||||
|
import kd.bos.servicehelper.botp.ConvertServiceHelper;
|
||||||
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
import kd.bos.servicehelper.operation.SaveServiceHelper;
|
||||||
|
import kd.fi.cas.util.EmptyUtil;
|
||||||
import kd.sdk.plugin.Plugin;
|
import kd.sdk.plugin.Plugin;
|
||||||
import shkd.sys.sys.mservice.ApiService;
|
import shkd.sys.sys.mservice.ApiService;
|
||||||
|
|
||||||
|
@ -26,13 +49,17 @@ import static kd.bos.servicehelper.workflow.WorkflowServiceHelper.abandonByBusie
|
||||||
/**
|
/**
|
||||||
* 单据界面插件
|
* 单据界面插件
|
||||||
*/
|
*/
|
||||||
public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements Plugin {
|
public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener {
|
||||||
private static final Log logger = LogFactory.getLog(PaymentProcessingBillPlugin.class);
|
private static final Log logger = LogFactory.getLog(PaymentProcessingBillPlugin.class);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void registerListener(EventObject e) {
|
public void registerListener(EventObject e) {
|
||||||
Toolbar tbmain = this.getView().getControl("tbmain");
|
Toolbar tbmain = this.getView().getControl("tbmain");
|
||||||
tbmain.addItemClickListener(this);
|
tbmain.addItemClickListener(this);
|
||||||
|
|
||||||
|
RefBillEdit shkd_ywcl = this.getView().getControl("shkd_ywcl");//业务处理
|
||||||
|
shkd_ywcl.addBeforeF7SelectListener(this);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -90,7 +117,6 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void propertyChanged(PropertyChangedArgs e) {
|
public void propertyChanged(PropertyChangedArgs e) {
|
||||||
String key = e.getProperty().getName();
|
String key = e.getProperty().getName();
|
||||||
ChangeData[] changeData = e.getChangeSet();
|
ChangeData[] changeData = e.getChangeSet();
|
||||||
|
@ -98,13 +124,13 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P
|
||||||
Object oldValue = changeData[0].getOldValue();
|
Object oldValue = changeData[0].getOldValue();
|
||||||
DynamicObject settleType;
|
DynamicObject settleType;
|
||||||
Object value = this.getModel().getValue("settletype");
|
Object value = this.getModel().getValue("settletype");
|
||||||
settleType = value != null ? (DynamicObject) value : null;
|
settleType=value != null ? (DynamicObject)value : null;
|
||||||
if (newValue != oldValue) {
|
if (newValue != oldValue) {
|
||||||
DynamicObject applyDo;
|
DynamicObject applyDo;
|
||||||
switch (key) {
|
switch (key) {
|
||||||
case "settletype":
|
case "settletype":
|
||||||
if (EmptyUtil.isNoEmpty(settleType)) {
|
if (EmptyUtil.isNoEmpty(settleType)) {
|
||||||
if ("电汇".equals(settleType.getString("name"))) {
|
if ("电汇".equals(settleType.getString("name"))){
|
||||||
this.getView().setVisible(true, new String[]{"settletnumber"});
|
this.getView().setVisible(true, new String[]{"settletnumber"});
|
||||||
this.getView().setVisible(true, new String[]{"draftbill"});
|
this.getView().setVisible(true, new String[]{"draftbill"});
|
||||||
}
|
}
|
||||||
|
@ -112,38 +138,190 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P
|
||||||
break;
|
break;
|
||||||
case "paymentchannel":
|
case "paymentchannel":
|
||||||
if (EmptyUtil.isNoEmpty(settleType)) {
|
if (EmptyUtil.isNoEmpty(settleType)) {
|
||||||
if ("电汇".equals(settleType.getString("name"))) {
|
if ("电汇".equals(settleType.getString("name"))){
|
||||||
this.getView().setVisible(true, new String[]{"settletnumber"});
|
this.getView().setVisible(true, new String[]{"settletnumber"});
|
||||||
this.getView().setVisible(true, new String[]{"draftbill"});
|
this.getView().setVisible(true, new String[]{"draftbill"});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "actpayamt":
|
}
|
||||||
// 将 newValue 转换为字符串
|
}
|
||||||
String valueStr = newValue.toString();
|
|
||||||
|
|
||||||
String formattedValue = String.format("%.2f", Double.parseDouble(valueStr));
|
if ("shkd_ywcl".equals(key)){
|
||||||
|
if (newValue != oldValue&&newValue!=null) {
|
||||||
|
DynamicObject dynamicObject=(DynamicObject)newValue;
|
||||||
|
IPageCache iPageCache =this.getPageCache();
|
||||||
|
iPageCache.put("shkd_ywclid",dynamicObject.getString("id"));
|
||||||
|
this.getView().invokeOperation("drawauto");
|
||||||
|
|
||||||
AmountConvertResult amountConvertResult = I18nServiceHelper.amountConvertUppercase(
|
|
||||||
"ZH", "CNY", formattedValue, "false");
|
|
||||||
|
|
||||||
if (amountConvertResult.isSuccess()) {
|
|
||||||
this.getModel().setValue("shkd_zwamount", amountConvertResult.getResult());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void afterBindData(EventObject e) {
|
public void afterBindData(EventObject e) {
|
||||||
DynamicObject settleType;
|
DynamicObject settleType;
|
||||||
Object value = this.getModel().getValue("settletype");
|
Object value = this.getModel().getValue("settletype");
|
||||||
settleType = value != null ? (DynamicObject) value : null;
|
settleType=value != null ? (DynamicObject)value : null;
|
||||||
if (EmptyUtil.isNoEmpty(settleType)) {
|
if (EmptyUtil.isNoEmpty(settleType)) {
|
||||||
if ("电汇".equals(settleType.getString("name"))) {
|
if ("电汇".equals(settleType.getString("name"))){
|
||||||
this.getView().setVisible(true, new String[]{"settletnumber"});
|
this.getView().setVisible(true, new String[]{"settletnumber"});
|
||||||
this.getView().setVisible(true, new String[]{"draftbill"});
|
this.getView().setVisible(true, new String[]{"draftbill"});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeF7Select(BeforeF7SelectEvent beforeF7SelectEvent) {
|
||||||
|
String name = beforeF7SelectEvent.getProperty().getName();
|
||||||
|
if (name.equals("shkd_ywcl")) {
|
||||||
|
ListShowParameter showParameter = (ListShowParameter) beforeF7SelectEvent.getFormShowParameter();
|
||||||
|
DynamicObject dataEntity = this.getModel().getDataEntity();
|
||||||
|
DynamicObject org = dataEntity.getDynamicObject("org");//付款人(公司)
|
||||||
|
QFilter qFilter = new QFilter("company.id", QFilter.equals, org.getLong("id"));
|
||||||
|
qFilter.and(new QFilter("tradetype", QFilter.equals, "redeem"));
|
||||||
|
showParameter.getListFilterParameter().setFilter(qFilter);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void beforeDoOperation(BeforeDoOperationEventArgs args) {
|
||||||
|
AbstractOperate draw = (AbstractOperate)args.getSource();
|
||||||
|
if("drawauto".equals(draw.getOperateKey())){
|
||||||
|
ConvertOpParameter convertOpParameter = buildParameter(draw);
|
||||||
|
ListSelectedRowCollection srcRows = new ListSelectedRowCollection();
|
||||||
|
DynamicObject shkd_ywcl = (DynamicObject) this.getModel().getValue("shkd_ywcl");
|
||||||
|
if(shkd_ywcl==null){
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
ListSelectedRow row = new ListSelectedRow(shkd_ywcl.get("id"), true);
|
||||||
|
DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(shkd_ywcl.get("id"), "cdm_drafttradebill");
|
||||||
|
String billno = dynamicObject.getString("billno");
|
||||||
|
String status = dynamicObject.getString("status");
|
||||||
|
Long org = dynamicObject.getLong("org");
|
||||||
|
row.setBillNo(billno);//单据编号
|
||||||
|
row.setBillStatus(status);//单据状态
|
||||||
|
row.setMainOrgId(org);//组织ID
|
||||||
|
row.setBillTypeID(0L);
|
||||||
|
row.setRowKey(0);
|
||||||
|
row.setPageIndex(0);
|
||||||
|
srcRows.add(row);
|
||||||
|
doDraw(convertOpParameter,srcRows);
|
||||||
|
args.setCancel(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void doDraw(ConvertOpParameter opParameter, ListSelectedRowCollection srcRows) {
|
||||||
|
if (srcRows != null && srcRows.size() != 0) {
|
||||||
|
String sourceEntityNumber = opParameter.getDefSourceBill();
|
||||||
|
String ruleId = opParameter.getDefRuleId();
|
||||||
|
DrawArgs args = new DrawArgs();
|
||||||
|
args.setSourceEntityNumber(sourceEntityNumber);
|
||||||
|
args.setTargetEntityNumber(opParameter.getEntityNumber());
|
||||||
|
args.addCustomParam("botp_requiredatamutex", String.valueOf(true));
|
||||||
|
args.getSelectedRows().addAll(srcRows);
|
||||||
|
args.setTargetPageId(opParameter.getTargetBillPageId());
|
||||||
|
args.setRuleId(ruleId);
|
||||||
|
args.setBuildConvReport(true);
|
||||||
|
args.getClearEntrys().addAll(opParameter.getClearEntrys());
|
||||||
|
args.getCustomParams().putAll(opParameter.getCustomParams());
|
||||||
|
ConvertOperationResult result = ConvertServiceHelper.draw(args);
|
||||||
|
if (result.isSuccess() && result.getCachePageIds().size() != 0) {
|
||||||
|
IPageCache iPageCache =this.getPageCache();
|
||||||
|
IRefrencedataProvider refProvider = new IRefrencedataProvider() {
|
||||||
|
@Override
|
||||||
|
public void fillReferenceData(Object[] dataEntitys, IDataEntityType type) {
|
||||||
|
BusinessDataReader.loadRefence(dataEntitys, type);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
List<DynamicObject> dataEntitys = result.loadTargetDataObjects(refProvider,this.getView().getModel().getDataEntityType());
|
||||||
|
DynamicObject dynamicObject = dataEntitys.get(0);
|
||||||
|
if (!StringUtil.isEmpty(iPageCache.get("shkd_ywclid"))){
|
||||||
|
DynamicObject cdm_drafttradebill = BusinessDataServiceHelper.loadSingle(Long.parseLong(iPageCache.get("shkd_ywclid")), "cdm_drafttradebill");
|
||||||
|
dynamicObject.set("shkd_ywcl",cdm_drafttradebill);
|
||||||
|
}
|
||||||
|
((IBillModel)this.getView().getModel()).push(dynamicObject);
|
||||||
|
DynamicObjectCollection entry = (DynamicObjectCollection) this.getView().getModel().getValue("entry");
|
||||||
|
if (entry.size()>1){
|
||||||
|
this.getView().getModel().deleteEntryRow("entry", 1);
|
||||||
|
}
|
||||||
|
DynamicObjectCollection cas_draftinfo = (DynamicObjectCollection) this.getView().getModel().getValue("cas_draftinfo");
|
||||||
|
if (cas_draftinfo.size()>1){
|
||||||
|
this.getView().getModel().deleteEntryRow("cas_draftinfo", 0);
|
||||||
|
}
|
||||||
|
this.getView().updateView();
|
||||||
|
|
||||||
|
result.release(refProvider, this.getView().getModel().getDataEntityType());
|
||||||
|
SaveServiceHelper.save(new DynamicObject[]{this.getView().getModel().getDataEntity()});
|
||||||
|
} else {
|
||||||
|
Push.showReport(this.getView(), args, result);
|
||||||
|
this.getView().getModel().setValue("shkd_ywcl",null);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建下推操作参数
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
protected ConvertOpParameter buildParameter(AbstractOperate draw){
|
||||||
|
|
||||||
|
ConvertOpParameter opParameter = new ConvertOpParameter();
|
||||||
|
opParameter.setOpType(ConvertOpType.Draw);
|
||||||
|
|
||||||
|
String entityNumber = this.getView().getEntityId();
|
||||||
|
opParameter.setEntityNumber(entityNumber);
|
||||||
|
opParameter.setTargetBillPageId(this.getView().getPageId());
|
||||||
|
|
||||||
|
opParameter.setDefSourceBill("cdm_drafttradebill");
|
||||||
|
opParameter.setDefRuleId("2236252254296354816");
|
||||||
|
opParameter.getClearEntrys().addAll(new ArrayList());
|
||||||
|
|
||||||
|
// 直接选单,跳过选单界面:判断指定的源单、规则是否存在、启用
|
||||||
|
List<ConvertRuleElement> rules = this.loadRules("cdm_drafttradebill", entityNumber);
|
||||||
|
ConvertRuleElement defRule = null;
|
||||||
|
for(ConvertRuleElement rule : rules) {
|
||||||
|
if (!rule.isEnabled()) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ("2236252254296354816".equals(rule.getId())) {
|
||||||
|
defRule = rule;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (defRule != null) {
|
||||||
|
ConvertBill bill = new ConvertBill();
|
||||||
|
bill.setEntityNumber("cdm_drafttradebill");
|
||||||
|
bill.setEntityName("cdm_drafttradebill");
|
||||||
|
|
||||||
|
ConvertOpRule opRule = new ConvertOpRule();
|
||||||
|
opRule.setRuleId(defRule.getId());
|
||||||
|
bill.getRules().add(opRule);
|
||||||
|
|
||||||
|
opParameter.getBills().add(bill);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 自定义参数
|
||||||
|
if (draw.getOption() != null) {
|
||||||
|
opParameter.getCustomParams().putAll(draw.getOption().getVariables());
|
||||||
|
}
|
||||||
|
|
||||||
|
return opParameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
private List<ConvertRuleElement> loadRules(String sourceEntityNumber, String targetEntityNumber) {
|
||||||
|
List<ConvertRuleElement> rules = ConvertRuleCache.loadRules(sourceEntityNumber, targetEntityNumber);
|
||||||
|
List<ConvertRuleElement> enableRules = new ArrayList();
|
||||||
|
Iterator var5 = rules.iterator();
|
||||||
|
|
||||||
|
while(var5.hasNext()) {
|
||||||
|
ConvertRuleElement rule = (ConvertRuleElement)var5.next();
|
||||||
|
if (rule.isEnabled()) {
|
||||||
|
enableRules.add(rule);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return enableRules;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue