|
@@ -4,10 +4,6 @@ import kd.bos.algo.DataSet;
|
|
|
import kd.bos.context.RequestContext;
|
|
|
import kd.bos.dataentity.entity.DynamicObject;
|
|
|
import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
-import kd.bos.db.DB;
|
|
|
-import kd.bos.db.DBRoute;
|
|
|
-import kd.bos.entity.EntityMetadataCache;
|
|
|
-import kd.bos.entity.MainEntityType;
|
|
|
import kd.bos.exception.KDException;
|
|
|
import kd.bos.logging.BizLog;
|
|
|
import kd.bos.orm.ORM;
|
|
@@ -17,8 +13,8 @@ import kd.bos.schedule.api.StopTask;
|
|
|
import kd.bos.schedule.executor.AbstractTask;
|
|
|
import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
|
import kd.bos.servicehelper.QueryServiceHelper;
|
|
|
+import kd.bos.util.StringUtils;
|
|
|
import kd.bos.workflow.engine.msg.info.MessageInfo;
|
|
|
-import kd.cosmic.jkjt.tmc.bei.common.CommonUtils;
|
|
|
import kd.cosmic.jkjt.tmc.bei.common.DateUtils;
|
|
|
import kd.cosmic.jkjt.tmc.bei.common.FeishuSendMessageUtils;
|
|
|
import kd.cosmic.jkjt.tmc.bei.common.constant.BeiBeTransDetailConstant;
|
|
@@ -41,6 +37,10 @@ public class OtherAccountMsgWarnTask extends AbstractTask implements StopTask {
|
|
|
public void execute(RequestContext requestContext, Map<String, Object> map) throws KDException {
|
|
|
// 查询生效的账户大额交易通知配置
|
|
|
Set<Long> largeTransIdConfig = getMsgWarnConfig();
|
|
|
+ Object changeMinute = map.get("changeMinute");
|
|
|
+ if(map.containsKey("changeMinute") && StringUtils.isNotEmpty((String)changeMinute)){
|
|
|
+ changeMinute = Integer.parseInt((String) changeMinute);
|
|
|
+ }
|
|
|
largeTransIdConfig.forEach(configId -> transConfigSendMessage(configId));
|
|
|
}
|
|
|
|
|
@@ -60,15 +60,28 @@ public class OtherAccountMsgWarnTask extends AbstractTask implements StopTask {
|
|
|
DynamicObject company = msgWarnConfig.getDynamicObject(MsgWarnConfigConstant.KEY_NCKD_COMPANY);
|
|
|
DynamicObject financeDirectors = msgWarnConfig.getDynamicObject(MsgWarnConfigConstant.KEY_NCKD_FINANCE_DIRECTOR);
|
|
|
DynamicObject financeLeader = msgWarnConfig.getDynamicObject(MsgWarnConfigConstant.KEY_NCKD_FINANCE_LEADER);
|
|
|
-
|
|
|
+ DynamicObject unitDirectors = msgWarnConfig.getDynamicObject(MsgWarnConfigConstant.KEY_NCKD_UNIT_DIRECTOR);
|
|
|
+ DynamicObject unitLeader = msgWarnConfig.getDynamicObject(MsgWarnConfigConstant.KEY_NCKD_UNIT_LEADER);
|
|
|
// 没有设置接收人时跳过
|
|
|
- if(financeDirectors == null || financeLeader == null){
|
|
|
+ if(financeDirectors == null && financeLeader == null && unitDirectors == null && unitLeader == null){
|
|
|
BizLog.log("消息接收人为空,不进行消息发送。");
|
|
|
return;
|
|
|
}
|
|
|
- List<Long> receiverIdList = new ArrayList<>();
|
|
|
- receiverIdList.add(financeDirectors.getLong("id"));
|
|
|
- receiverIdList.add(financeLeader.getLong("id"));
|
|
|
+ Set<Long> receiverIdSet = new HashSet<>();
|
|
|
+ if(financeDirectors != null) {
|
|
|
+ receiverIdSet.add(financeDirectors.getLong("id"));
|
|
|
+ }
|
|
|
+ if(financeLeader != null) {
|
|
|
+ receiverIdSet.add(financeLeader.getLong("id"));
|
|
|
+ }
|
|
|
+ if(unitDirectors != null) {
|
|
|
+ receiverIdSet.add(unitDirectors.getLong("id"));
|
|
|
+ }
|
|
|
+ if(unitLeader != null) {
|
|
|
+ receiverIdSet.add(unitLeader.getLong("id"));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
Date beginDate = DateUtils.getMinutesBefore(changeMinute);
|
|
|
DynamicObjectCollection transDetailData = getTransDetailData(company, beginDate);
|
|
|
if(transDetailData == null || transDetailData.isEmpty()){
|
|
@@ -76,23 +89,23 @@ public class OtherAccountMsgWarnTask extends AbstractTask implements StopTask {
|
|
|
return;
|
|
|
}
|
|
|
for(DynamicObject transDetail : transDetailData){
|
|
|
- String uniqueKey = String.join("-", WARTYPE.getValue(),transDetail.getString("foppunit"));
|
|
|
+ String uniqueKey = String.join("-", WARTYPE.getValue(),transDetail.getString("billno"));
|
|
|
if(ORM.create().exists("nckd_msgwarnlog",new QFilter("nckd_unique_key", QCP.equals,uniqueKey).toArray())){
|
|
|
// 消息如果已发送,就不在执行
|
|
|
continue;
|
|
|
}
|
|
|
- String messageContent = getMcCenterMessage(company.getString("name"),transDetail);
|
|
|
+ String messageContent = getMcCenterMessage(transDetail);
|
|
|
|
|
|
MessageInfo messageInfo = new MessageInfo();
|
|
|
messageInfo.setTitle(String.join("-",WARTYPE.getName()));
|
|
|
- messageInfo.setUserIds(receiverIdList);
|
|
|
+ messageInfo.setUserIds(new ArrayList<>(receiverIdSet));
|
|
|
messageInfo.setContent(messageContent);
|
|
|
messageInfo.setTag(WARTYPE.getName());
|
|
|
messageInfo.setSenderId(RequestContext.get().getCurrUserId());
|
|
|
messageInfo.setEntityNumber("nckd_msgwarnconfig");
|
|
|
messageInfo.setBizDataId(configId);
|
|
|
|
|
|
- String feishuMessage = MsgWarnTemplateConstant.getFeishuTemplate(WARTYPE.getName(),messageContent);
|
|
|
+ String feishuMessage = MsgWarnTemplateConstant.getFeishuTemplate(WARTYPE.getName(),messageContent,MsgWarnTemplateConstant.TEMPLATESTR_OTHERACCOUNT);
|
|
|
MsgWarnMessageInfo warnMessageInfo = new MsgWarnMessageInfo(WARTYPE.getValue(),
|
|
|
company.getString("name"),
|
|
|
uniqueKey,
|
|
@@ -103,17 +116,15 @@ public class OtherAccountMsgWarnTask extends AbstractTask implements StopTask {
|
|
|
|
|
|
}
|
|
|
|
|
|
- protected String getMcCenterMessage(String payerAccount , DynamicObject transDetail) {
|
|
|
- Long accountBankId = transDetail.getLong("faccountbankid");
|
|
|
- DynamicObject accountBank = QueryServiceHelper.queryOne("bd_accountbanks", "bankaccountnumber,bank.name",
|
|
|
- new QFilter("id", QCP.equals,accountBankId).toArray());
|
|
|
- return MsgWarnTemplateConstant.formatDailyMessage(
|
|
|
- payerAccount,
|
|
|
- accountBank.getString("bankaccountnumber"),
|
|
|
- accountBank.getString("bank.name"),
|
|
|
- transDetail.getString("foppunit"),
|
|
|
- transDetail.getString("totaltimes"),
|
|
|
- transDetail.getBigDecimal("totalamount").setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString());
|
|
|
+ protected String getMcCenterMessage(DynamicObject transDetail) {
|
|
|
+ return MsgWarnTemplateConstant.formatOtherAccountMessage(
|
|
|
+ transDetail.getString("company.name"),
|
|
|
+ transDetail.getString("accountbank.bankaccountnumber"),
|
|
|
+ transDetail.getString("bank.name"),
|
|
|
+ transDetail.getBigDecimal("debitamount").setScale(2, BigDecimal.ROUND_HALF_UP).toPlainString(),
|
|
|
+ transDetail.getString(BeiBeTransDetailConstant.KEY_OPPUNIT),
|
|
|
+ transDetail.getString(BeiBeTransDetailConstant.KEY_DESCRIPTION),
|
|
|
+ DateUtils.formatDate(transDetail.getDate(BeiBeTransDetailConstant.KEY_BIZTIME)));
|
|
|
}
|
|
|
|
|
|
protected DynamicObjectCollection getTransDetailData(DynamicObject company , Date beginDate){
|
|
@@ -138,17 +149,11 @@ public class OtherAccountMsgWarnTask extends AbstractTask implements StopTask {
|
|
|
}
|
|
|
// 除默认付款付之外的付款
|
|
|
filterList.add(new QFilter("accountbank.isdefaultpay", QFilter.equals, false));
|
|
|
-
|
|
|
+ filterList.add(new QFilter("length(oppunit)", QCP.less_equals,4));
|
|
|
+ // 付款金额大于0
|
|
|
+ filterList.add(new QFilter(BeiBeTransDetailConstant.KEY_DEBITAMOUNT, QFilter.large_than, BigDecimal.ZERO));
|
|
|
return QueryServiceHelper.queryDataSet(this.getClass().getName() ,BeiBeTransDetailConstant.ENTITYID,
|
|
|
"id,billno,company.name,accountbank.name,accountbank.bankaccountnumber,bank.name,debitamount,oppunit,description,bizdate,biztime",
|
|
|
filterList.toArray(new QFilter[0]),"bizdate desc");
|
|
|
}
|
|
|
-
|
|
|
- protected Long getDefualtAccountBankId(DynamicObject company){
|
|
|
- DynamicObject accountBankBill = QueryServiceHelper.queryOne("bd_accountbanks", "id", new QFilter[]{
|
|
|
- new QFilter("company", QCP.equals, company.getPkValue()),
|
|
|
- new QFilter("isdefaultpay", QCP.equals, true)
|
|
|
- });
|
|
|
- return accountBankBill == null ? null : accountBankBill.getLong("id");
|
|
|
- }
|
|
|
}
|