收入、支出合同确认单删除时反审核对应合同结算单,并发送消息给结算单发起人

This commit is contained in:
zhangzhiguo 2025-10-23 11:17:18 +08:00
parent cfc9ec22b0
commit e75ccb8f5d
2 changed files with 220 additions and 0 deletions

View File

@ -0,0 +1,107 @@
package zcgj.zcdev.zcdev.pr.plugin.operate;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.LocaleString;
import kd.bos.entity.operate.OperateOptionConst;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.PreparePropertysEventArgs;
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.message.api.MessageChannels;
import kd.bos.metadata.dao.MetaCategory;
import kd.bos.metadata.dao.MetadataDao;
import kd.bos.metadata.form.FormMetadata;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.DeleteServiceHelper;
import kd.bos.servicehelper.operation.OperationServiceHelper;
import kd.bos.servicehelper.workflow.MessageCenterServiceHelper;
import kd.bos.workflow.engine.msg.info.MessageInfo;
import java.util.ArrayList;
import java.util.List;
/**
* 支出财务确认单删除时退回支出合同结算单
*/
public class InFinaceconfirmBackSettleOp extends AbstractOperationServicePlugIn {
private static final Log log = LogFactory.getLog(InFinaceconfirmBackSettleOp.class);
//OperationResult result = OperationServiceHelper.executeOperate("submit", "ec_out_contract_settle", new DynamicObject[]{outContractSettle}, option);
//
public void onPreparePropertys(PreparePropertysEventArgs e) {
e.getFieldKeys().add("zcgj_ec_in_contractid"); //支出结算单id
}
@Override
public void endOperationTransaction(EndOperationTransactionArgs e) {
String operationKey = e.getOperationKey();
DynamicObject[] dataEntities = e.getDataEntities();
switch (operationKey) {
case "delback"://删除
delOutFincBackSettle(dataEntities, true);
break;
}
}
protected void delOutFincBackSettle(DynamicObject[] dataEntities, boolean isSubmit){
List<DynamicObject> updateData = new ArrayList<>();
for (DynamicObject dataEntity : dataEntities) {
long id = dataEntity.getLong("id");
long contractseetid = dataEntity.getLong("zcgj_ec_in_contractid");
DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(contractseetid, "ec_in_contract_settle");
String billstatus = outContractSettle.getString("billstatus");
if(billstatus.equals("C")){
OperateOption option= OperateOption.create();
option.setVariableValue(OperateOptionConst.ISHASRIGHT, String.valueOf(true));//跳过权限校验
OperationResult result = OperationServiceHelper.executeOperate("unaudit", "ec_in_contract_settle", new DynamicObject[]{outContractSettle}, option);
if(result.isSuccess()){
QFilter idFilter = new QFilter("id", "=", id);
int zcgjEcInFinaceconfirm = DeleteServiceHelper.delete("zcgj_ec_in_finaceconfirm", new QFilter[]{idFilter});
DynamicObject creator = outContractSettle.getDynamicObject("creator");
long userId = creator.getLong("id");
String billno = outContractSettle.getString("billno");
List<Long> userids= new ArrayList<Long>();
userids.add(userId);
sendMessage(userids,"ec_in_contract_settle",billno);
}else{
log.info("InFinaceconfirmBackSettleOp:"+result.getMessage());
}
}
}
}
//结算单的创建人
//支出合同结算单XXXX已被驳回
public void sendMessage(List<Long> userIds,String entityNumber,String billno) {
String id = MetadataDao.getIdByNumber(entityNumber, MetaCategory.Form);
FormMetadata formMeta = (FormMetadata) MetadataDao.readRuntimeMeta(id, MetaCategory.Form);
//单据名称
String billName = formMeta.getName().getLocaleValue();
//messageinfo 使用工作流包下的对象
MessageInfo messageInfo = new MessageInfo();
messageInfo.setTitle(billName+"-驳回提醒");
LocaleString localeString = new LocaleString();
localeString.setLocaleValue_zh_CN("收入合同结算单"+billno+"已被驳回。");
messageInfo.setMessageContent(localeString);
messageInfo.setUserIds(userIds);
//messageInfo.setType(MessageInfo.TYPE_TASK);
messageInfo.setType(MessageInfo.TYPE_MESSAGE);
messageInfo.setTag(billName+"-驳回提醒");
messageInfo.setEntityNumber(entityNumber);
messageInfo.setNotifyType(MessageChannels.MC.getNumber());
MessageCenterServiceHelper.sendMessage(messageInfo);
}
}

View File

@ -0,0 +1,113 @@
package zcgj.zcdev.zcdev.pr.plugin.operate;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.dataentity.entity.LocaleString;
import kd.bos.db.tx.TX;
import kd.bos.db.tx.TXHandle;
import kd.bos.entity.operate.OperateOptionConst;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.PreparePropertysEventArgs;
import kd.bos.entity.plugin.args.EndOperationTransactionArgs;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.message.api.MessageChannels;
import kd.bos.metadata.dao.MetaCategory;
import kd.bos.metadata.dao.MetadataDao;
import kd.bos.metadata.form.FormMetadata;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.DeleteServiceHelper;
import kd.bos.servicehelper.operation.OperationServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.bos.servicehelper.workflow.MessageCenterServiceHelper;
import kd.bos.workflow.engine.msg.info.MessageInfo;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
/**
* 支出财务确认单删除时退回支出合同结算单
*/
public class OutFinaceconfirmBackSettleOp extends AbstractOperationServicePlugIn {
private static final Log log = LogFactory.getLog(OutFinaceconfirmBackSettleOp.class);
//OperationResult result = OperationServiceHelper.executeOperate("submit", "ec_out_contract_settle", new DynamicObject[]{outContractSettle}, option);
//
public void onPreparePropertys(PreparePropertysEventArgs e) {
e.getFieldKeys().add("zcgj_ec_out_contractid"); //支出结算单id
}
@Override
public void endOperationTransaction(EndOperationTransactionArgs e) {
String operationKey = e.getOperationKey();
DynamicObject[] dataEntities = e.getDataEntities();
switch (operationKey) {
case "delback"://删除
delOutFincBackSettle(dataEntities, true);
break;
}
}
protected void delOutFincBackSettle(DynamicObject[] dataEntities, boolean isSubmit){
List<DynamicObject> updateData = new ArrayList<>();
for (DynamicObject dataEntity : dataEntities) {
long id = dataEntity.getLong("id");
long contractseetid = dataEntity.getLong("zcgj_ec_out_contractid");
DynamicObject outContractSettle = BusinessDataServiceHelper.loadSingle(contractseetid, "ec_out_contract_settle");
String billstatus = outContractSettle.getString("billstatus");
if(billstatus.equals("C")){
OperateOption option= OperateOption.create();
option.setVariableValue(OperateOptionConst.ISHASRIGHT, String.valueOf(true));//跳过权限校验
OperationResult result = OperationServiceHelper.executeOperate("unaudit", "ec_out_contract_settle", new DynamicObject[]{outContractSettle}, option);
if(result.isSuccess()){
QFilter idFilter = new QFilter("id", "=", id);
int zcgjEcInFinaceconfirm = DeleteServiceHelper.delete("zcgj_ec_out_finaceconfirm", new QFilter[]{idFilter});
DynamicObject creator = outContractSettle.getDynamicObject("creator");
long userId = creator.getLong("id");
String billno = outContractSettle.getString("billno");
List<Long> userids= new ArrayList<Long>();
userids.add(userId);
sendMessage(userids,"ec_out_contract_settle",billno);
}else{
log.info("OutFinaceconfirmBackSettleOp:"+result.getMessage());
}
}
}
}
//结算单的创建人
//支出合同结算单XXXX已被驳回
public void sendMessage(List<Long> userIds,String entityNumber,String billno) {
String id = MetadataDao.getIdByNumber(entityNumber, MetaCategory.Form);
FormMetadata formMeta = (FormMetadata) MetadataDao.readRuntimeMeta(id, MetaCategory.Form);
//单据名称
String billName = formMeta.getName().getLocaleValue();
//messageinfo 使用工作流包下的对象
MessageInfo messageInfo = new MessageInfo();
messageInfo.setTitle(billName+"-驳回提醒");
LocaleString localeString = new LocaleString();
localeString.setLocaleValue_zh_CN("支出合同结算单"+billno+"已被驳回。");
messageInfo.setMessageContent(localeString);
messageInfo.setUserIds(userIds);
//messageInfo.setType(MessageInfo.TYPE_TASK);
messageInfo.setType(MessageInfo.TYPE_MESSAGE);
messageInfo.setTag(billName+"-驳回提醒");
messageInfo.setEntityNumber(entityNumber);
messageInfo.setNotifyType(MessageChannels.MC.getNumber());
MessageCenterServiceHelper.sendMessage(messageInfo);
}
}