diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/eoss/SSOPluginLogin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/eoss/SSOPluginLogin.java index 749b06d..07e13c7 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/eoss/SSOPluginLogin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/eoss/SSOPluginLogin.java @@ -55,15 +55,16 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler { } logger.info(String.format("callTrdSSOLogin→queryUrl:%s", queryUrl)); logger.info(String.format("eoss_ip:%s,client_id:%s,client_secret:%s,重定向地址:%s", ip, client, secret, s)); - + queryUrl = Base64.getEncoder().encodeToString(queryUrl.getBytes(StandardCharsets.UTF_8)); + String redirect = skIP + "/index.html?param=" + queryUrl; String ssourl; try { logger.info(String.format("callTrdSSOLogin→true/false:%s", queryUrl.contains("wf_approvalpage"))); //非待办登录到首页 if (!queryUrl.contains("wf_approvalpage")) { //认证中心的登录地址 - String redirect = skIP + "/index.html?"+queryUrl; - //重定向的统一认证的地址 获取授权码 + + //重定向到eoss统一认证的地址 获取授权码code ssourl = String.format("%s/sso2/authCenter/authorize?client_id=%s&response_type=code&sessionKeep=true&authType=0&redirect_uri=%s", ip, client, redirect); if (httpServletRequest.getRequestURI().contains("/auth/logout.do")) { @@ -74,13 +75,11 @@ public class SSOPluginLogin implements ThirdSSOAuthHandler { if (sessionId != null) { AuthService.logout(ip, sessionId); } + //退出系统跳转到eoss登录页 ssourl = ip + "/service/SGE-project-sctz-master/pc/dist/login.html"; } } else { - queryUrl = Base64.getEncoder().encodeToString(queryUrl.getBytes(StandardCharsets.UTF_8)); - String skUrl = RevProxyUtil.getURLContextPath(httpServletRequest); - logger.info("callTrdSSOLogin→getURLContextPath:" + skUrl); - String redirect = skIP + "/index.html?param=" + queryUrl; + //待办跳转相关逻辑处理 logger.info("callTrdSSOLogin→skip:" + redirect); //重定向的统一认证的地址 获取授权码 ssourl = String.format("%s/sso2/authCenter/authorize?client_id=%s&response_type=code&sessionKeep=true&authType=0&redirect_uri=%s", diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/PlanningService.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/PlanningService.java index 60e45dc..d773a47 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/PlanningService.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/mservice/PlanningService.java @@ -104,7 +104,9 @@ public class PlanningService { String result = reportDataSDKService.batchSaveReportData(qParam); // 4. 反序列化响应结果 FpmResponse responseObject = SerializationUtils.deSerializeFromBase64(result); - logger.info("是否成功:{}\n消息列表:{}", responseObject.isSuccess(), responseObject.getMessage()); + + logger.info("是否成功:{}\n消息列表:{}\n反序列化对象:{}", + responseObject.isSuccess(), responseObject.getMessage(), responseObject.getData()); return responseObject; } @@ -170,7 +172,8 @@ public class PlanningService { reportAdjustBillBatchSaveResDTO.getSuccessSize();// 成功写入的调整单据总数 reportAdjustBillBatchSaveResDTO.getFailSize();// 失败写入的调整单据总数 List adjustBillNoList = reportAdjustBillBatchSaveResDTO.getAdjustBillNoList();// 调整单据编号列表 - logger.info("是否成功:{}\n消息列表:{}", responseObject.isSuccess(), responseObject.getMessage()); + logger.info("是否成功:{}\n消息列表:{}\n反序列化对象:{}", + responseObject.isSuccess(), responseObject.getMessage(), responseObject.getData()); if (responseObject.isSuccess()) { logger.info("调整单据编号列表:{}", adjustBillNoList); }else { diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/PaymentDealBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/PaymentDealBillPlugin.java new file mode 100644 index 0000000..d334dba --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/PaymentDealBillPlugin.java @@ -0,0 +1,333 @@ +package shkd.sys.sys.plugin.form; + +import kd.bos.bill.AbstractBillPlugIn; +import kd.bos.data.BusinessDataReader; +import kd.bos.dataentity.OperateOption; +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.PropertyChangedArgs; +import kd.bos.entity.operate.result.OperationResult; +import kd.bos.form.IPageCache; +import kd.bos.form.control.Toolbar; +import kd.bos.form.events.BeforeDoOperationEventArgs; +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.LogFactory; +import kd.bos.orm.query.QFilter; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.botp.ConvertServiceHelper; +import kd.bos.servicehelper.operation.OperationServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.fi.cas.util.EmptyUtil; +import kd.sdk.plugin.Plugin; + +import java.util.*; + +public class PaymentDealBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener { + private static final Log logger = LogFactory.getLog(PaymentProcessingBillPlugin.class); + + public static final List update_sk = Arrays.asList("payeename","payeebanknum","recaccbankname","payeecurrency","payeebank","payeebankname","recbanknumber");//拉单需要更新的收款方 + public static final List update_fk = Arrays.asList("org", "payeracctbank", "payerbank");//拉单需要更新的付款方 + public static final List update_qt = Arrays.asList("paymenttype");//拉单需要更新的其他字段 + + @Override + public void registerListener(EventObject e) { + Toolbar tbmain = this.getView().getControl("tbmain"); + tbmain.addItemClickListener(this); + + RefBillEdit shkd_ywcl = this.getView().getControl("shkd_ywcl");//业务处理 + shkd_ywcl.addBeforeF7SelectListener(this); + + } + + public void propertyChanged(PropertyChangedArgs e) { + String key = e.getProperty().getName(); + ChangeData[] changeData = e.getChangeSet(); + Object newValue = changeData[0].getNewValue(); + Object oldValue = changeData[0].getOldValue(); + DynamicObject settleType; + Object value = this.getModel().getValue("settletype"); + settleType=value != null ? (DynamicObject)value : null; + if (newValue != oldValue) { + DynamicObject applyDo; + switch (key) { + case "settletype": + if (EmptyUtil.isNoEmpty(settleType)) { + if ("电汇".equals(settleType.getString("name"))){ + this.getView().setVisible(true, new String[]{"settletnumber"}); + this.getView().setVisible(true, new String[]{"draftbill"}); + } + } + break; + case "paymentchannel": + if (EmptyUtil.isNoEmpty(settleType)) { + if ("电汇".equals(settleType.getString("name"))){ + this.getView().setVisible(true, new String[]{"settletnumber"}); + this.getView().setVisible(true, new String[]{"draftbill"}); + } + } + break; + } + } + + if ("shkd_ywcl".equals(key)){ + if (newValue != oldValue) { + if (newValue!=null){ + if(oldValue!=null){ + DynamicObject cdm_drafttradebill=(DynamicObject)oldValue; + List ids = new ArrayList<>(); + ids.add(cdm_drafttradebill.getLong("id")); + OperationResult operationResult = OperationServiceHelper.executeOperate("canceldrawbill", + "cdm_drafttradebill", + ids.toArray(new Object[]{}), OperateOption.create());//取消完成 + if (operationResult.isSuccess()){ + //成功 + logger.info("单据编号"+cdm_drafttradebill.getString("billno")+"取消完成成功"); + }else { + //失败 + logger.info("单据编号"+cdm_drafttradebill.getString("billno")+"取消完成失败"); + this.getView().showSuccessNotification("单据编号"+cdm_drafttradebill.getString("billno")+"取消确认完成失败,请检查并手动取消完成"); + } + this.getModel().setValue("draftbill",null); + this.getModel().setValue("settletnumber",null); + } + this.getView().invokeOperation("drawauto"); + }else { + DynamicObject cdm_drafttradebill=(DynamicObject)oldValue; + List ids = new ArrayList<>(); + ids.add(cdm_drafttradebill.getLong("id")); + OperationResult operationResult = OperationServiceHelper.executeOperate("canceldrawbill", + "cdm_drafttradebill", + ids.toArray(new Object[]{}), OperateOption.create());//取消完成 + if (operationResult.isSuccess()){ + //成功 + logger.info("单据编号"+cdm_drafttradebill.getString("billno")+"取消完成成功"); + }else { + //失败 + logger.info("单据编号"+cdm_drafttradebill.getString("billno")+"取消完成失败"); + this.getView().showSuccessNotification("单据编号"+cdm_drafttradebill.getString("billno")+"取消确认完成失败,请检查并手动取消完成"); + } + this.getModel().setValue("draftbill",null); + this.getModel().setValue("settletnumber",null); + } + } + } + } + public void afterBindData(EventObject e) { + DynamicObject settleType; + Object value = this.getModel().getValue("settletype"); + settleType=value != null ? (DynamicObject)value : null; + if (EmptyUtil.isNoEmpty(settleType)) { + if ("电汇".equals(settleType.getString("name"))){ + this.getView().setVisible(true, new String[]{"settletnumber"}); + 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,(DynamicObject)this.getModel().getValue("shkd_ywcl")); + args.setCancel(true); + } + + } + + public void doDraw(ConvertOpParameter opParameter, ListSelectedRowCollection srcRows,DynamicObject cdm_drafttradebill) { + 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 dataEntitys = result.loadTargetDataObjects(refProvider,this.getView().getModel().getDataEntityType()); + DynamicObject dynamicObject = dataEntitys.get(0); + if (cdm_drafttradebill!=null){ + dynamicObject.set("shkd_ywcl",cdm_drafttradebill); + } + for (int i = 0; i < update_fk.size(); i++) { + if (this.getModel().getValue(update_fk.get(i))!=null&& !this.getModel().getValue(update_fk.get(i)).equals("")){ + dynamicObject.set(update_fk.get(i),this.getModel().getValue(update_fk.get(i))); + } + } + for (int i = 0; i < update_sk.size(); i++) { + if (this.getModel().getValue(update_sk.get(i))!=null&& !this.getModel().getValue(update_sk.get(i)).equals("")){ + dynamicObject.set(update_sk.get(i),this.getModel().getValue(update_sk.get(i))); + } + } + for (int i = 0; i < update_qt.size(); i++) { + if (this.getModel().getValue(update_qt.get(i))!=null&& !this.getModel().getValue(update_qt.get(i)).equals("")){ + dynamicObject.set(update_qt.get(i),this.getModel().getValue(update_qt.get(i))); + } + } + ((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()); + logger.info("单据编号"+this.getModel().getValue("billno")+"拉单成功,正在对编号"+cdm_drafttradebill.getString("billno")+"业务处理进行交易成功"); + if (cdm_drafttradebill!=null){ + List ids = new ArrayList<>(); + ids.add(cdm_drafttradebill.getLong("id")); + OperationResult operationResult = OperationServiceHelper.executeOperate("drawbillsave", + "cdm_drafttradebill", + ids.toArray(new Object[]{}), OperateOption.create());//确认完成 + if (operationResult.isSuccess()){ + //成功 + logger.info("单据编号"+cdm_drafttradebill.getString("billno")+"确认完成成功"); + }else { + //失败 + logger.info("单据编号"+cdm_drafttradebill.getString("billno")+"确认完成失败"); +// this.getView().showSuccessNotification("取消确认完成失败,请检查并手动取消完成"); + } + + } + 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 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 loadRules(String sourceEntityNumber, String targetEntityNumber) { + List rules = ConvertRuleCache.loadRules(sourceEntityNumber, targetEntityNumber); + List enableRules = new ArrayList(); + Iterator var5 = rules.iterator(); + + while(var5.hasNext()) { + ConvertRuleElement rule = (ConvertRuleElement)var5.next(); + if (rule.isEnabled()) { + enableRules.add(rule); + } + } + + return enableRules; + } +} diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/PaymentProcessingBillPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/PaymentProcessingBillPlugin.java index c12b97d..fa4a9f0 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/PaymentProcessingBillPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/form/PaymentProcessingBillPlugin.java @@ -1,29 +1,9 @@ package shkd.sys.sys.plugin.form; -import dm.jdbc.util.StringUtil; import kd.bos.bill.AbstractBillPlugIn; -import kd.bos.data.BusinessDataReader; -import kd.bos.dataentity.OperateOption; 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.PropertyChangedArgs; import kd.bos.entity.operate.result.OperationResult; import kd.bos.form.FormShowParameter; -import kd.bos.form.IPageCache; import kd.bos.form.control.Control; import kd.bos.form.control.Toolbar; import kd.bos.form.control.events.AfterShowTipsEvent; @@ -31,49 +11,33 @@ import kd.bos.form.control.events.BeforeShowTipsEvent; import kd.bos.form.control.events.ItemClickEvent; import kd.bos.form.control.events.TipsListener; import kd.bos.form.events.AfterDoOperationEventArgs; -import kd.bos.form.events.BeforeDoOperationEventArgs; import kd.bos.form.field.FieldEdit; -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.LogFactory; import kd.bos.orm.query.QCP; import kd.bos.orm.query.QFilter; import kd.bos.servicehelper.BusinessDataServiceHelper; -import kd.bos.servicehelper.botp.ConvertServiceHelper; -import kd.bos.servicehelper.operation.OperationServiceHelper; import kd.bos.servicehelper.operation.SaveServiceHelper; -import kd.fi.cas.util.EmptyUtil; import kd.sdk.plugin.Plugin; -import kd.tmc.cdm.common.constant.CdmEntityConst; import shkd.sys.sys.mservice.ApiService; -import java.util.*; +import java.util.ArrayList; +import java.util.EventObject; +import java.util.List; import static kd.bos.servicehelper.workflow.WorkflowServiceHelper.abandonByBusienssKey; /** * 单据界面插件 */ -public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements Plugin, BeforeF7SelectListener, TipsListener { +public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements Plugin, TipsListener { private static final Log logger = LogFactory.getLog(PaymentProcessingBillPlugin.class); - public static final List update_sk = Arrays.asList("payeename","payeebanknum","recaccbankname","payeecurrency","payeebank","payeebankname","recbanknumber");//拉单需要更新的收款方 - public static final List update_fk = Arrays.asList("org", "payeracctbank", "payerbank");//拉单需要更新的付款方 - public static final List update_qt = Arrays.asList("paymenttype");//拉单需要更新的其他字段 - @Override public void registerListener(EventObject e) { Toolbar tbmain = this.getView().getControl("tbmain"); tbmain.addItemClickListener(this); - RefBillEdit shkd_ywcl = this.getView().getControl("shkd_ywcl");//业务处理 - shkd_ywcl.addBeforeF7SelectListener(this); - FieldEdit actpayamt = getControl("actpayamt"); actpayamt.addTipsListener(this); } @@ -133,277 +97,6 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P } } - public void propertyChanged(PropertyChangedArgs e) { - String key = e.getProperty().getName(); - ChangeData[] changeData = e.getChangeSet(); - Object newValue = changeData[0].getNewValue(); - Object oldValue = changeData[0].getOldValue(); - DynamicObject settleType; - Object value = this.getModel().getValue("settletype"); - settleType=value != null ? (DynamicObject)value : null; - if (newValue != oldValue) { - DynamicObject applyDo; - switch (key) { - case "settletype": - if (EmptyUtil.isNoEmpty(settleType)) { - if ("电汇".equals(settleType.getString("name"))){ - this.getView().setVisible(true, new String[]{"settletnumber"}); - this.getView().setVisible(true, new String[]{"draftbill"}); - } - } - break; - case "paymentchannel": - if (EmptyUtil.isNoEmpty(settleType)) { - if ("电汇".equals(settleType.getString("name"))){ - this.getView().setVisible(true, new String[]{"settletnumber"}); - this.getView().setVisible(true, new String[]{"draftbill"}); - } - } - break; - } - } - - if ("shkd_ywcl".equals(key)){ - if (newValue != oldValue) { - if (newValue!=null){ - if(oldValue!=null){ - DynamicObject cdm_drafttradebill=(DynamicObject)oldValue; - List ids = new ArrayList<>(); - ids.add(cdm_drafttradebill.getLong("id")); - OperationResult operationResult = OperationServiceHelper.executeOperate("canceldrawbill", - "cdm_drafttradebill", - ids.toArray(new Object[]{}), OperateOption.create());//取消完成 - if (operationResult.isSuccess()){ - //成功 - logger.info("单据编号"+cdm_drafttradebill.getString("billno")+"取消完成成功"); - }else { - //失败 - logger.info("单据编号"+cdm_drafttradebill.getString("billno")+"取消完成失败"); - this.getView().showSuccessNotification("单据编号"+cdm_drafttradebill.getString("billno")+"取消确认完成失败,请检查并手动取消完成"); - } - this.getModel().setValue("draftbill",null); - this.getModel().setValue("settletnumber",null); - } - this.getView().invokeOperation("drawauto"); - }else { - DynamicObject cdm_drafttradebill=(DynamicObject)oldValue; - List ids = new ArrayList<>(); - ids.add(cdm_drafttradebill.getLong("id")); - OperationResult operationResult = OperationServiceHelper.executeOperate("canceldrawbill", - "cdm_drafttradebill", - ids.toArray(new Object[]{}), OperateOption.create());//取消完成 - if (operationResult.isSuccess()){ - //成功 - logger.info("单据编号"+cdm_drafttradebill.getString("billno")+"取消完成成功"); - }else { - //失败 - logger.info("单据编号"+cdm_drafttradebill.getString("billno")+"取消完成失败"); - this.getView().showSuccessNotification("单据编号"+cdm_drafttradebill.getString("billno")+"取消确认完成失败,请检查并手动取消完成"); - } - this.getModel().setValue("draftbill",null); - this.getModel().setValue("settletnumber",null); - } - } - } - } - public void afterBindData(EventObject e) { - DynamicObject settleType; - Object value = this.getModel().getValue("settletype"); - settleType=value != null ? (DynamicObject)value : null; - if (EmptyUtil.isNoEmpty(settleType)) { - if ("电汇".equals(settleType.getString("name"))){ - this.getView().setVisible(true, new String[]{"settletnumber"}); - 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,(DynamicObject)this.getModel().getValue("shkd_ywcl")); - args.setCancel(true); - } - - } - - public void doDraw(ConvertOpParameter opParameter, ListSelectedRowCollection srcRows,DynamicObject cdm_drafttradebill) { - 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 dataEntitys = result.loadTargetDataObjects(refProvider,this.getView().getModel().getDataEntityType()); - DynamicObject dynamicObject = dataEntitys.get(0); - if (cdm_drafttradebill!=null){ - dynamicObject.set("shkd_ywcl",cdm_drafttradebill); - } - for (int i = 0; i < update_fk.size(); i++) { - if (this.getModel().getValue(update_fk.get(i))!=null&& !this.getModel().getValue(update_fk.get(i)).equals("")){ - dynamicObject.set(update_fk.get(i),this.getModel().getValue(update_fk.get(i))); - } - } - for (int i = 0; i < update_sk.size(); i++) { - if (this.getModel().getValue(update_sk.get(i))!=null&& !this.getModel().getValue(update_sk.get(i)).equals("")){ - dynamicObject.set(update_sk.get(i),this.getModel().getValue(update_sk.get(i))); - } - } - for (int i = 0; i < update_qt.size(); i++) { - if (this.getModel().getValue(update_qt.get(i))!=null&& !this.getModel().getValue(update_qt.get(i)).equals("")){ - dynamicObject.set(update_qt.get(i),this.getModel().getValue(update_qt.get(i))); - } - } - ((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()); - logger.info("单据编号"+this.getModel().getValue("billno")+"拉单成功,正在对编号"+cdm_drafttradebill.getString("billno")+"业务处理进行交易成功"); - if (cdm_drafttradebill!=null){ - List ids = new ArrayList<>(); - ids.add(cdm_drafttradebill.getLong("id")); - OperationResult operationResult = OperationServiceHelper.executeOperate("drawbillsave", - "cdm_drafttradebill", - ids.toArray(new Object[]{}), OperateOption.create());//确认完成 - if (operationResult.isSuccess()){ - //成功 - logger.info("单据编号"+cdm_drafttradebill.getString("billno")+"确认完成成功"); - }else { - //失败 - logger.info("单据编号"+cdm_drafttradebill.getString("billno")+"确认完成失败"); -// this.getView().showSuccessNotification("取消确认完成失败,请检查并手动取消完成"); - } - - } - 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 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 loadRules(String sourceEntityNumber, String targetEntityNumber) { - List rules = ConvertRuleCache.loadRules(sourceEntityNumber, targetEntityNumber); - List enableRules = new ArrayList(); - Iterator var5 = rules.iterator(); - - while(var5.hasNext()) { - ConvertRuleElement rule = (ConvertRuleElement)var5.next(); - if (rule.isEnabled()) { - enableRules.add(rule); - } - } - - return enableRules; - } @Override public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) { diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/ElectronicPayDealListPlugin.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/ElectronicPayDealListPlugin.java index 0e2bdc5..79efb67 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/ElectronicPayDealListPlugin.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/ElectronicPayDealListPlugin.java @@ -1,20 +1,25 @@ package shkd.sys.sys.plugin.list; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.datamodel.ListSelectedRow; +import kd.bos.entity.datamodel.ListSelectedRowCollection; import kd.bos.form.IPageCache; import kd.bos.form.control.events.BeforeItemClickEvent; +import kd.bos.list.BillList; import kd.bos.list.IListView; import kd.bos.list.plugin.AbstractListPlugin; import kd.bos.logging.Log; import kd.bos.logging.LogFactory; -import org.apache.commons.lang3.StringUtils; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.SaveServiceHelper; +import kd.bos.util.CollectionUtils; +import kd.bos.util.StringUtils; import shkd.sys.sys.plugin.list.domain.OverTimeVarietyEnum; import java.time.Duration; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; -import java.util.EventObject; -import java.util.List; -import java.util.Map; +import java.util.*; public class ElectronicPayDealListPlugin extends AbstractListPlugin { @@ -34,29 +39,45 @@ public class ElectronicPayDealListPlugin extends AbstractListPlugin { Map> qtqyrz = OverTimeVarietyEnum.qtqyrz; List list = qtqyrz.get(billFormId); if (list!=null&&list.contains(itemKey)){ - // 定义日期时间格式 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); - IPageCache iPageCache =this.getPageCache(); - - String LastTime = iPageCache.get("LastTime"); - if(!StringUtils.isEmpty(LastTime)){ - // 获取当前时间 - LocalDateTime currentTime = LocalDateTime.now(); - LocalDateTime localDateTime = LocalDateTime.parse(LastTime, formatter); - // 计算当前时间与另一个时间的时间差 - Duration duration = Duration.between(localDateTime, currentTime); - - // 判断时间差是否超过 10 秒 - if (duration.getSeconds() <= 10) { - this.getView().showTipNotification("该按钮点击间隔需要超过十秒"); - evt.setCancel(true); - }else { - iPageCache.put("LastTime",currentTime.format(formatter)); + try { + // 获取勾选的单据ID + BillList billList = (BillList)this.getControl("billlistap"); + ListSelectedRowCollection selectedRows = billList.getSelectedRows(); + Set setIds = new HashSet<>(); + if (CollectionUtils.isNotEmpty(selectedRows)) { + for (ListSelectedRow selectedRow : selectedRows) { + setIds.add(toLong(selectedRow.getPrimaryKeyValue())); + } } - }else { - iPageCache.put("LastTime",LocalDateTime.now().format(formatter)); + List longs = new ArrayList<>(setIds); + for (int i = 0; i < longs.size(); i++) { + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(longs.get(i), "cdm_electronic_pay_deal"); + dynamicObject.set("shkd_lock",false); + SaveServiceHelper.save(new DynamicObject[]{dynamicObject}); + } + evt.setCancel(true); + this.getView().invokeOperation("refresh"); + } catch (Exception e) { + logger.error(e.getMessage()); } - } } + + public static Long toLong(Object o) { + if (o == null) { + return 0L; + } + String s = String.valueOf(o); + if (StringUtils.isEmpty(s)) { + return 0L; + } + try { + int index = s.indexOf("."); + index = index > -1 ? index : s.length(); + return Long.parseLong(s.substring(0, index)); + } catch (NumberFormatException e) { + logger.error("数字转化错误", e); + } + return 0L; + } } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/domain/OverTimeVarietyEnum.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/domain/OverTimeVarietyEnum.java index 7750b35..6d764d1 100644 --- a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/domain/OverTimeVarietyEnum.java +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/list/domain/OverTimeVarietyEnum.java @@ -4,7 +4,7 @@ import java.util.*; public class OverTimeVarietyEnum { public static final Map> qtqyrz = new HashMap() {{ - put("cdm_electronic_pay_deal", new ArrayList<>(Arrays.asList("querynotepayable"))); + put("cdm_electronic_pay_deal", new ArrayList<>(Arrays.asList("unlock"))); put("银行借款合同", new ArrayList<>(Arrays.asList("其他权益融资"))); }}; } diff --git a/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/DeleteDrafttradebillOP.java b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/DeleteDrafttradebillOP.java new file mode 100644 index 0000000..ffd6898 --- /dev/null +++ b/sys/shkd-sys-sys/src/main/java/shkd/sys/sys/plugin/operation/DeleteDrafttradebillOP.java @@ -0,0 +1,63 @@ +package shkd.sys.sys.plugin.operation; + +import kd.bos.dataentity.OperateOption; +import kd.bos.dataentity.entity.DynamicObject; +import kd.bos.entity.operate.IOperationResult; +import kd.bos.entity.operate.result.OperationResult; +import kd.bos.entity.plugin.AbstractOperationServicePlugIn; +import kd.bos.entity.plugin.args.BeginOperationTransactionArgs; +import kd.bos.entity.plugin.args.EndOperationTransactionArgs; +import kd.bos.entity.plugin.args.ReturnOperationArgs; +import kd.bos.logging.Log; +import kd.bos.logging.LogFactory; +import kd.bos.servicehelper.BusinessDataServiceHelper; +import kd.bos.servicehelper.operation.OperationServiceHelper; +import kd.tmc.cdm.common.constant.CdmEntityConst; +import shkd.sys.sys.plugin.form.PaymentProcessingBillPlugin; + +import java.util.ArrayList; +import java.util.List; + +public class DeleteDrafttradebillOP extends AbstractOperationServicePlugIn { + + + private static final Log logger = LogFactory.getLog(DeleteDrafttradebillOP.class); + @Override + public void beginOperationTransaction(BeginOperationTransactionArgs e) { + super.beginOperationTransaction(e); + try { + DynamicObject[] dataEntities = e.getDataEntities(); + for (int i = 0; i < dataEntities.length; i++) { + long id = dataEntities[i].getLong("id"); + DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingle(id, dataEntities[i].getDataEntityType().getName()); + DynamicObject shkd_ywcl = dynamicObject.getDynamicObject("shkd_ywcl"); + if (shkd_ywcl!=null){ + List ids = new ArrayList<>(); + ids.add(shkd_ywcl.getLong("id")); + OperationResult operationResult = OperationServiceHelper.executeOperate("canceldrawbill", + "cdm_drafttradebill", + ids.toArray(new Object[]{}), OperateOption.create());//取消完成 + if (operationResult.isSuccess()){ + //成功 + logger.info("单据编号"+shkd_ywcl.getString("billno")+"取消完成成功"); + }else { + //失败 + logger.info("单据编号"+shkd_ywcl.getString("billno")+"取消完成失败,原因:"+operationResult.getMessage()); + } + } + } + } catch (Exception ex) { + logger.error(ex.getMessage()); + } + } + + @Override + public void endOperationTransaction(EndOperationTransactionArgs e) { + super.endOperationTransaction(e); + } + + @Override + public void onReturnOperation(ReturnOperationArgs e) { + super.onReturnOperation(e); + } +}