Merge remote-tracking branch 'origin/main' into main

This commit is contained in:
陈绍鑫 2025-06-23 17:32:59 +08:00
commit 20780f86f9
12 changed files with 433 additions and 89 deletions

View File

@ -27,6 +27,8 @@ import java.util.Iterator;
import java.util.Map;
import java.util.Objects;
import static shkd.sys.sys.midservice.utils.MobApproveListServiceHelper.allowMobApprove;
public class ToDoResendTack extends AbstractTask {
private static final Log logger = LogFactory.getLog(ToDoResendTack.class);
@ -186,6 +188,11 @@ public class ToDoResendTack extends AbstractTask {
ErrorCode errorCode = new ErrorCode("error_code", "AES加密出现异常请联系运维人员排查");
throw new KDException(errorCode, e);
}
//判断是否移动端
boolean allowMobApprove = allowMobApprove(next.get("fid"));
if(allowMobApprove){
continue;
}
switch (t_status) {
case "0":
//标题
@ -233,7 +240,6 @@ public class ToDoResendTack extends AbstractTask {
form.append("\"pendingAttr\":");
form.append("\"0\"");
form.append("}");
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(),title,next.getLong("fid").toString(),userName,next.getString("fbillno"));
if(Objects.equals(shkd_type,"0")){
// eoss 环境
CreateToDoHandler.get_CreateToDoHandler().sendCreateToDo(form.toString(),title,next.getLong("fid").toString(),userName,next.getString("fbillno"));

View File

@ -22,6 +22,8 @@ import java.util.List;
import java.util.Map;
import java.util.Objects;
import static shkd.sys.sys.midservice.utils.MobApproveListServiceHelper.allowMobApprove;
/**
* @Description:
* @Author: FangShiXiao
@ -37,19 +39,24 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
public void createToDo(MessageContext ctx, ToDoInfo todoInfo) {
logger.info("###创建待办_createToDo");
Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type");
if(Objects.equals(shkd_type,"0")){
// eoss 环境
getToDoFormal(ctx,todoInfo);
}else if(Objects.equals(shkd_type,"1")){
//新eoss 环境
getToDoNew(ctx,todoInfo);
}else if(Objects.equals(shkd_type,"2")){
//二套环境
getToDoNew(ctx,todoInfo);
getToDoFormal(ctx,todoInfo);
//判断是否需要发送待办链接true为不推送false为推送
boolean b = allowMobApprove(ctx, todoInfo);
logger.info("###推送结果为:"+b+"(true为不推送false为推送)");
if(!b){
Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type");
if(Objects.equals(shkd_type,"0")){
// eoss 环境
getToDoFormal(ctx,todoInfo);
}else if(Objects.equals(shkd_type,"1")){
//新eoss 环境
getToDoNew(ctx,todoInfo);
}else if(Objects.equals(shkd_type,"2")){
//二套环境
getToDoNew(ctx,todoInfo);
getToDoFormal(ctx,todoInfo);
}
logger.info("###结束待办_createToDo");
}
logger.info("###结束待办_createToDo");
/* //几个待办
List<Long> userIds = todoInfo.getUserIds();
DynamicObjectCollection query = QueryServiceHelper.query("bos_user", "id,name,number" +
@ -107,36 +114,42 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
//已办
public void dealToDo(MessageContext ctx, ToDoInfo info){
logger.info("###创建已办_dealToDo");
Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type");
if(Objects.equals(shkd_type,"0")){
// eoss 环境
getDealFormal(ctx,info);
}else if(Objects.equals(shkd_type,"1")){
// eoss 环境
getDealNew(ctx,info);
}else if(Objects.equals(shkd_type,"2")){
//二套环境
getDealNew(ctx,info);
getDealFormal(ctx,info);
boolean b = allowMobApprove(ctx, info);
logger.info("###推送结果为:"+b+"(true为不推送false为推送)");
if(!b){
Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type");
if(Objects.equals(shkd_type,"0")){
// eoss 环境
getDealFormal(ctx,info);
}else if(Objects.equals(shkd_type,"1")){
// eoss 环境
getDealNew(ctx,info);
}else if(Objects.equals(shkd_type,"2")){
//二套环境
getDealNew(ctx,info);
getDealFormal(ctx,info);
}
logger.info("###结束已办_dealToDo");
}
logger.info("###结束已办_dealToDo");
}
//撤销
public void deleteToDo(MessageContext ctx, ToDoInfo info){
logger.info("###创建撤销_deleteToDo");
Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type");
if(Objects.equals(shkd_type,"0")){
// eoss 环境
getDeleteFormal(ctx,info);
}else if(Objects.equals(shkd_type,"1")){
// eoss 环境
getDeleteNew(ctx,info);
}else if(Objects.equals(shkd_type,"2")){
//二套环境
getDeleteNew(ctx,info);
getDeleteFormal(ctx,info);
}
boolean b = allowMobApprove(ctx, info);
logger.info("###推送结果为:"+b+"(true为不推送false为推送)");
if(!b){
Object shkd_type = SystemParamServiceHelper.getPublicParameter("shkd_type");
if(Objects.equals(shkd_type,"0")){
// eoss 环境
getDeleteFormal(ctx,info);
}else if(Objects.equals(shkd_type,"1")){
// eoss 环境
getDeleteNew(ctx,info);
}else if(Objects.equals(shkd_type,"2")){
//二套环境
getDeleteNew(ctx,info);
getDeleteFormal(ctx,info);
}
/* List<Long> userIds = info.getUserIds();
DynamicObjectCollection query = QueryServiceHelper.query("bos_user", "id,name,phone,username", new QFilter[]{new QFilter("id", "in", userIds)});
DynamicObject dynamicObject = QueryServiceHelper.queryOne("wf_hitaskinst", "billno",
@ -152,7 +165,8 @@ public class BacklogServiceHandle extends AbstractServiceHandler {
}
}*/
logger.info("###结束撤销_deleteToDo");
logger.info("###结束撤销_deleteToDo");
}
}
/***

View File

@ -0,0 +1,89 @@
package shkd.sys.sys.midservice.utils;
import com.bes.admin.jeemx.util.ObjectUtil;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.workflow.engine.msg.ctx.MessageContext;
import kd.bos.workflow.engine.msg.info.ToDoInfo;
import java.util.Iterator;
import java.util.Map;
/**
* @Author 方世筱
* @Date 2025/6/20 0020 13:46
* @Version 1.0
*/
public class MobApproveListServiceHelper {
public static boolean allowMobApprove(String entityNumber,String billType,String procDefNumber,String nodeKey){
QFilter[] qFilters = new QFilter[]{
//实体编码=传入参数
//生效
new QFilter("shkd_entitynumber","=",entityNumber),
new QFilter("shkd_enable","=",true)
};
Map<Object, DynamicObject> objectDynamicObjectMap = BusinessDataServiceHelper.loadFromCache(
"shkd_mobapprovelist", "id,shkd_nolimitbilltype,shkd_nolimitprocess," +
"shkd_nolimitnode,shkd_billtype,shkd_processnum,shkd_nodenum", qFilters);
if(objectDynamicObjectMap != null && objectDynamicObjectMap.size()>0){
Iterator<Map.Entry<Object, DynamicObject>> iterator = objectDynamicObjectMap.entrySet().iterator();
while(iterator.hasNext()){
Map.Entry<Object, DynamicObject> next = iterator.next();
DynamicObject config = next.getValue();
//限定单据类型且不一致
if(!config.getBoolean("shkd_nolimitbilltype") && !ObjectUtil.equals(billType,config.getString("shkd_billtype"))){
continue;
}
//限定流程且不一致
if(!config.getBoolean("shkd_nolimitprocess") && !ObjectUtil.equals(procDefNumber,config.getString("shkd_processnum"))){
continue;
}
//限定节点且不一致
if(!config.getBoolean("shkd_nolimitnode") && !ObjectUtil.equals(nodeKey,config.getString("shkd_nodenum"))){
continue;
}
//符合条件
return true;
}
}
return false;
}
public static boolean allowMobApprove(MessageContext ctx, ToDoInfo todoInfo){
String entityNumber=ctx.getEntityNumber();
String billType = "";
DynamicObject object = BusinessDataServiceHelper.loadSingleFromCache("wf_hitaskinst", "entityname",
new QFilter[]{new QFilter("id", "=", todoInfo.getTaskId())});
if(object != null){
billType = object.getString("entityname");
}
String elementId = ctx.getElementId();
int i = elementId.lastIndexOf("_");
//流程
String procDefNumber = elementId.substring(0, i);
//节点
String nodeKey = elementId.substring(i + 1);
return allowMobApprove(entityNumber,billType,procDefNumber,nodeKey);
}
public static boolean allowMobApprove(Object taskId){
DynamicObject object = BusinessDataServiceHelper.loadSingleFromCache("wf_hitaskinst",
"entitynumber,entityname,taskdefkey",
new QFilter[]{new QFilter("id", "=", taskId)});
if(object != null){
String entityNumber = object.getString("entitynumber");
String billType = object.getString("entityname");
String elementId = object.getString("taskdefkey");
int i = elementId.lastIndexOf("_");
//流程
String procDefNumber = elementId.substring(0, i);
//节点
String nodeKey = elementId.substring(i + 1);
return allowMobApprove(entityNumber,billType,procDefNumber,nodeKey);
}
return false;
}
}

View File

@ -315,7 +315,8 @@ public class ApiService {
case "https://10.1.9.43/iuap-api-auth/yonbip/ctm/api/settlement/feedback":
saveResponseBody = pushBill(token, saveUrl, saveRequestBody);
jsonObject = JSON.parseObject(saveResponseBody);
if (jsonObject.getJSONObject("data").getIntValue("successnum") > 0) {
code = jsonObject.getString("code");
if ("200".equals(code)) {
if ("TS".equals(dynamic.getString("bankpaystatus"))) {
dynamic.set("shkd_pushstatus", "已结算");
} else {

View File

@ -185,12 +185,15 @@ public class PlanningService {
* @return
*/
public static String queryPlanning(String reportPeriod, String reportOrg) {
logger.info("查询计划编制入参reportPeriod={},reportOrg={}", reportPeriod, reportOrg);
DynamicObject[] fpm_member1 = BusinessDataServiceHelper.load("fpm_member", "id,name,number", new QFilter("name", QCP.equals, reportPeriod).toArray());
if (fpm_member1 == null || fpm_member1.length == 0) {
logger.info("查询编报期间fpm_member1 == null || fpm_member1.length == 0");
return null;
}
DynamicObject[] fpm_member2 = BusinessDataServiceHelper.load("fpm_member", "id,name,number", new QFilter("name", QCP.equals, reportOrg).toArray());
if (fpm_member2 == null || fpm_member2.length == 0) {
logger.info("查询编报主体fpm_member2 == null || fpm_member2.length == 0");
return null;
}
ReportDataQParam reportDataQParam = new ReportDataQParam();

View File

@ -5,6 +5,8 @@ import com.alibaba.fastjson.JSONObject;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
@ -24,13 +26,30 @@ public class BalanceExpansion implements IFillBankBalance {
@Override
public void fillExtBankBalance(DynamicObject bankBalance, String balanceString) {
JSONObject jsonObject = JSON.parseObject(balanceString);
logger.info("bankBalance数据{}balanceString数据{}", bankBalance, jsonObject);
Object balance = jsonObject.get("depositBalance");
BigDecimal depositBalance = BigDecimal.ZERO;
Object balanceDateTimeObj = jsonObject.get("balanceDateTime");
if (balanceDateTimeObj != null && !"".equals(balanceDateTimeObj.toString())) {
String balanceDateTimeStr = balanceDateTimeObj.toString();// 格式为 "yyyy-MM-dd'T'HH:mm:ss"2025-06-09T14:06:03.064
LocalDateTime balanceDateTime;
try {
balanceDateTime = LocalDateTime.parse(balanceDateTimeStr, DateTimeFormatter.ISO_LOCAL_DATE_TIME);
} catch (Exception e) {
logger.warn("balanceString数据{}\n时间格式错误无法解析{}", balanceString, e);
return;
}
LocalDateTime now = LocalDateTime.now();
if (balance != null && !"".equals(balance.toString())) {
depositBalance = new BigDecimal(balance.toString());
if (now.toLocalDate().isEqual(balanceDateTime.toLocalDate())) {
// 当前日期与 balanceDateTime 是同一天
// 执行相应的逻辑
logger.info("bankBalance数据{}balanceString数据{}", bankBalance, jsonObject);
Object balance = jsonObject.get("depositBalance");
BigDecimal depositBalance = BigDecimal.ZERO;
if (balance != null && !"".equals(balance.toString())) {
depositBalance = new BigDecimal(balance.toString());
}
bankBalance.set("shkd_depositbalance", depositBalance);
}
}
bankBalance.set("shkd_depositbalance", depositBalance);
}
}

View File

@ -119,8 +119,8 @@ public class InterfacePracticePlug extends AbstractListPlugin implements Seriali
*/
@ApiPostMapping(value = "planAdjustment_query", desc = "计划编制查询")
public CustomApiResult<@ApiResponseBody("返回参数") String> planAdjustment_query(@ApiParam(value = "查询字段值") HashMap<String, Object> hashMap) {
String reportPeriodName = hashMap.get("reportPeriodName").toString();// 编报期间ID
String reportOrgName = hashMap.get("reportOrgName").toString();// 编报主体ID
String reportPeriodName = hashMap.get("reportPeriodName").toString();// 编报期间IDname
String reportOrgName = hashMap.get("reportOrgName").toString();// 编报主体IDname
String queryPlanning = queryPlanning(reportPeriodName, reportOrgName);
return CustomApiResult.fail("404", queryPlanning);
}

View File

@ -24,6 +24,7 @@ import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@ -68,7 +69,7 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
Map<String, Object> billtype = (Map<String, Object>) map.get("billtype");
String billtype_number = billtype.get("number").toString();
if ("cas_paybill_other_BT_S".equals(billtype_number) && "共享系统".equals(shkd_businessname)) {
logger.info("进入付款处理单API");
logger.info("单据类型 → 其他付款,推送系统 → 共享系统");
// 收款人ID
fieldName1 = "payee";
// 付款银行编码
@ -177,7 +178,7 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
}
}
else if ("cas_paybill_syn_BT_S".equals(billtype_number) && "共享系统".equals(shkd_businessname)) {// BIP传的跨主体调拨
logger.info("进入付款处理单API");
logger.info("单据类型 → 同名转账,推送系统 → 共享系统");
// 收款人ID
fieldName1 = "payee";
// 付款银行编码
@ -286,7 +287,7 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
}
}
else if ("cas_paybill_span_BT_S".equals(billtype_number) && "共享系统".equals(shkd_businessname)) {// BIP传的同名转账
logger.info("进入付款处理单API");
logger.info("单据类型 → 跨主体调拨,推送系统 → 共享系统");
// 收款人ID
fieldName1 = "payee";
// 付款银行编码
@ -395,7 +396,7 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
}
}
else if ("cas_paybill_other_BT_S".equals(billtype_number) && "XK".equals(shkd_businessname)) {//星空推送的其他单据类型付款单
logger.info("进入付款处理单API");
logger.info("单据类型 → 其他付款,推送系统 → XK");
// 收款人ID
fieldName1 = "payee";
// 付款银行编码
@ -429,11 +430,26 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
map.put("payeetype", "bos_org");
map.put("payeeformid", "bos_org");
} else if ("FIN_OTHERS".equals(payeetype)) {
payeetype = "other";
map.put("payeetype", "other");
map.put("payeeformid", "other");
payeetype = "bd_supplier";
map.put("payeetype", "bd_supplier");
map.put("payeeformid", "bd_supplier");
}
// 赋值付款金额折本位币
map.put("localamt", map.get("actpayamt"));
// 赋值分录应付折本币
List<Map<String, Object>> entryList = (List<Map<String, Object>>) map.get("entry");
if (entryList != null && !entryList.isEmpty()) {
Map<String, Object> stringObjectMap = entryList.get(0);
// 获取 e_payableamt 的值
stringObjectMap.put("e_payablelocamt", stringObjectMap.get("e_payableamt"));
map.put("entry", entryList);
}
Map<String, Object> payeebank = (Map<String, Object>) map.get("payeebank");
String payeebank_number = payeebank.get("number").toString();
DynamicObject[] bd_bebank = BusinessDataServiceHelper.load("bd_bebank", "id,number,provincetxt,citytxt", new QFilter("number", QCP.equals, payeebank_number).toArray());
@ -470,12 +486,18 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
// 如果为供应商或者客户
if ("bd_supplier".equals(payeetype)) {
logger.info("收款人类型 → 供应商");
Map<String, Object> societycreditcode = new HashMap<>();
societycreditcode.put("societycreditcode", map.get("payeenumber").toString());
map.put("shkd_supplier", societycreditcode);
logger.info("收款人ID{}", map.get("payeenumber"));
DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,number,name,societycreditcode,entry_bank,entry_bank.bankaccount,entry_bank.accountname,entry_bank.bank", new QFilter("societycreditcode", QCP.equals, map.get("payeenumber").toString()).toArray());
DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id," +
"number,name,societycreditcode,shkd_xknumber,entry_bank,entry_bank.bankaccount,entry_bank.accountname," +
"entry_bank.bank",
new QFilter("societycreditcode", QCP.equals, map.get("payeenumber").toString())
.or("shkd_xknumber", QCP.equals, map.get("payeenumber").toString())
.or("name", QCP.equals, map.get("payeename").toString()).toArray());
if (objects.length > 0) {
DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank");
@ -488,6 +510,7 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
//收款人编码
}
} else if ("bd_customer".equals(payeetype)) {
logger.info("收款人类型 → 客户");
Map<String, Object> societycreditcode = new HashMap<>();
societycreditcode.put("societycreditcode", map.get("payeenumber").toString());
map.put("shkd_customer", societycreditcode);
@ -505,13 +528,16 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
//收款人编码
}
} else if ("bos_user".equals(payeetype)) {
logger.info("收款人类型 → 人员");
Map<String, Object> user_number = new HashMap<>();
user_number.put("number", map.get("payernumber").toString());
user_number.put("number", map.get("payeenumber").toString());
logger.info("收款人编码:{}", map.get("payeenumber"));
map.put("shkd_user", user_number);
DynamicObject[] objects = BusinessDataServiceHelper.load(payertype.toString(), "id,name,number,username", new QFilter("number", QCP.equals, map.get("payernumber").toString()).toArray());
DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype.toString(), "id,name,number,username", new QFilter("number", QCP.equals, map.get("payeenumber").toString()).toArray());
logger.info("人员查询,通过人员工号查对应的人员数据长度:{}", objects.length);
if (objects.length > 0) {
// 款人编码
map.put("payernumber", objects[0].getString("number"));
// 款人编码
map.put("payeenumber", objects[0].getString("number"));
// 付款人ID
map.put(fieldName1, objects[0].getPkValue());
}
@ -531,6 +557,42 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
}
}
else if ("cas_paybill_span_BT_S".equals(billtype_number) && "XK".equals(shkd_businessname)) {// 星空传的跨主体调拨
logger.info("单据类型 → 跨主体调拨,推送系统 → XK");
if ("BD_Supplier".equals(payeetype)) {
payeetype = "bd_supplier";
map.put("payeetype", "bd_supplier");
map.put("payeeformid", "bd_supplier");
} else if ("BD_Customer".equals(payeetype)) {
payeetype = "bd_customer";
map.put("payeetype", "bd_customer");
map.put("payeeformid", "bd_customer");
} else if ("BD_Empinfo".equals(payeetype)) {
payeetype = "bos_user";
map.put("payeetype", "bos_user");
map.put("payeeformid", "bos_user");
} else if ("ORG_Organizations".equals(payeetype)) {
payeetype = "bos_org";
map.put("payeetype", "bos_org");
map.put("payeeformid", "bos_org");
} else if ("FIN_OTHERS".equals(payeetype)) {
payeetype = "bd_supplier";
map.put("payeetype", "bd_supplier");
map.put("payeeformid", "bd_supplier");
}
// 赋值付款金额折本位币
map.put("localamt", map.get("actpayamt"));
// 赋值分录应付折本币
List<Map<String, Object>> entryList = (List<Map<String, Object>>) map.get("entry");
if (entryList != null && !entryList.isEmpty()) {
Map<String, Object> stringObjectMap = entryList.get(0);
// 获取 e_payableamt 的值
stringObjectMap.put("e_payablelocamt", stringObjectMap.get("e_payableamt"));
map.put("entry", entryList);
}
fieldName1 = "payee";// 收款人ID
// 付款银行编码
fieldName2 = "payerbank";
@ -581,7 +643,42 @@ public class PayBillApiSavePlugin implements ApiSavePlugin {
}
}
else if ("cas_paybill_syn_BT_S".equals(billtype_number) && "XK".equals(shkd_businessname)) {// 星空传的同名转账
logger.info("同名转账");
logger.info("单据类型 → 同名转账,推送系统 → XK");
if ("BD_Supplier".equals(payeetype)) {
payeetype = "bd_supplier";
map.put("payeetype", "bd_supplier");
map.put("payeeformid", "bd_supplier");
} else if ("BD_Customer".equals(payeetype)) {
payeetype = "bd_customer";
map.put("payeetype", "bd_customer");
map.put("payeeformid", "bd_customer");
} else if ("BD_Empinfo".equals(payeetype)) {
payeetype = "bos_user";
map.put("payeetype", "bos_user");
map.put("payeeformid", "bos_user");
} else if ("ORG_Organizations".equals(payeetype)) {
payeetype = "bos_org";
map.put("payeetype", "bos_org");
map.put("payeeformid", "bos_org");
} else if ("FIN_OTHERS".equals(payeetype)) {
payeetype = "bd_supplier";
map.put("payeetype", "bd_supplier");
map.put("payeeformid", "bd_supplier");
}
// 赋值付款金额折本位币
map.put("localamt", map.get("actpayamt"));
// 赋值分录应付折本币
List<Map<String, Object>> entryList = (List<Map<String, Object>>) map.get("entry");
if (entryList != null && !entryList.isEmpty()) {
Map<String, Object> stringObjectMap = entryList.get(0);
// 获取 e_payableamt 的值
stringObjectMap.put("e_payablelocamt", stringObjectMap.get("e_payableamt"));
map.put("entry", entryList);
}
// 收款人ID
fieldName1 = "payee";
// 付款银行编码

View File

@ -25,7 +25,7 @@ public class TicketRegistration implements Serializable, ApiSavePlugin {
@Override
public List<Map<String, Object>> preHandleRequestData(List<Map<String, Object>> reqData) {
logger.info("进入TicketRegistration");
logger.info("进入TicketRegistration,接口调用接口参数:{}\n数据长度{}", reqData, reqData.size());
for (Map<String, Object> map : reqData) {
String payeetype = map.get("payeetype").toString();
/**
@ -41,23 +41,28 @@ public class TicketRegistration implements Serializable, ApiSavePlugin {
logger.info("进入收票登记");
Map<String, Object> deliver = (Map<String, Object>) map.get("deliver");
String deliveraccountbase = map.get("deliveraccountbase").toString();// 交票人账号
logger.info("收票登记→收票人账号:{}", deliveraccountbase);
String deliver_number = deliver.get("number").toString();
DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype, "id,number," +
"name,societycreditcode,entry_bank,entry_bank.bankaccount,entry_bank.accountname,entry_bank.bank",
new QFilter("societycreditcode", QCP.equals, deliver_number).toArray());
if (objects.length > 0) {
logger.info("进入收票登记→objects.length > 0");
DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank");
dynamicObjectCollection.forEach(dynamicObject -> {
if (dynamicObject.getString("bankaccount").equals(deliveraccountbase)) {
Object bank = dynamicObject.get("bank");
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("bd_bebank", "id,number", new QFilter("id", QCP.equals, bank).toArray());
Map<String, Object> deliveropenbank = new HashMap<>();
deliveropenbank.put("number", dynamicObjects[0].getString("number"));
map.put("deliveropenbank", deliveropenbank);
map.put("deliveropenbanknum", dynamicObjects[0].getString("number"));
}
});
// DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank");
//
// for (DynamicObject dynamicObject : dynamicObjectCollection) {
// logger.info("进入收票登记→objects.length > 0→dynamicObjectCollection.forEach\nbankaccount → {}", dynamicObject.getString("bankaccount"));
// if (dynamicObject.getString("bankaccount").equals(deliveraccountbase)) {
// DynamicObject bank = dynamicObject.getDynamicObject("bank");
// logger.info("进入收票登记→objects.length > 0→dynamicObjectCollection.forEachbank → {}", bank);
// Map<String, Object> deliveropenbank = new HashMap<>();
// deliveropenbank.put("number", bank.getString("number"));
// map.put("deliveropenbank", deliveropenbank);
// map.put("deliveropenbanknum", bank.getString("number"));
// // 跳出循环
// break;
// }
// }
Map<String, Object> societycreditcode = new HashMap<>();
societycreditcode.put("number", objects[0].getString("number"));
map.put("deliver", societycreditcode);
@ -68,23 +73,29 @@ public class TicketRegistration implements Serializable, ApiSavePlugin {
logger.info("进入开票登记");
Map<String, Object> deliver = (Map<String, Object>) map.get("receiver");
String receiveraccount = map.get("receiveraccount").toString();// 收款人账号
logger.info("开票登记→收款人账号:{}", receiveraccount);
String receiver_number = deliver.get("number").toString();
DynamicObject[] objects = BusinessDataServiceHelper.load(payeetype, "id,number," +
"name,societycreditcode,entry_bank,entry_bank.bankaccount,entry_bank.accountname,entry_bank.bank",
new QFilter("societycreditcode", QCP.equals, receiver_number).toArray());
if (objects.length > 0) {
logger.info("进入开票登记→objects.length > 0");
DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank");
dynamicObjectCollection.forEach(dynamicObject -> {
if (dynamicObject.getString("bankaccount").equals(receiveraccount)) {
Object bank = dynamicObject.get("bank");
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("bd_bebank", "id,number", new QFilter("id", QCP.equals, bank).toArray());
Map<String, Object> receiverbank = new HashMap<>();
receiverbank.put("number", dynamicObjects[0].getString("number"));
map.put("receiverbank", receiverbank);
map.put("receiverbankno", dynamicObjects[0].getString("number"));
}
});
// DynamicObjectCollection dynamicObjectCollection = objects[0].getDynamicObjectCollection("entry_bank");
//
// for (DynamicObject dynamicObject : dynamicObjectCollection) {
// logger.info("进入开票登记→objects.length > 0→dynamicObjectCollection.forEach\nbankaccount → {}", dynamicObject.getString("bankaccount"));
// if (dynamicObject.getString("bankaccount").equals(receiveraccount)) {
// DynamicObject bank = dynamicObject.getDynamicObject("bank");
// logger.info("进入开票登记→objects.length > 0→dynamicObjectCollection.forEachbank → {}", bank);
// Map<String, Object> receiverbank = new HashMap<>();
// receiverbank.put("number", bank.getString("number"));
// map.put("receiverbank", receiverbank);
// map.put("receiverbankno", bank.getString("number"));
// // 跳出循环
// break;
// }
// }
Map<String, Object> societycreditcode = new HashMap<>();
societycreditcode.put("number", objects[0].getString("number"));
map.put("receiver", societycreditcode);

View File

@ -123,6 +123,7 @@ public class ApiTestBillPlugin extends AbstractBillPlugIn implements Plugin {
Path path = Paths.get(dynamic.getString("filepath"));
String upfileName = path.getFileName().toString();
String dataUrl = convertUrlToBase64DataUrl(pdfUrl);
logger.info("pdfUrl" + dataUrl);
this.getView().showTipNotification("dataUrl" + dataUrl + "\n文件名" + upfileName);
}

View File

@ -8,6 +8,8 @@ import kd.bos.entity.operate.result.OperationResult;
import kd.bos.ext.fi.bei.util.EmptyUtil;
import kd.bos.form.control.Toolbar;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.i18n.mservice.I18nServiceHelper;
import kd.bos.i18n.mservice.utils.AmountConvertResult;
import kd.bos.logging.Log;
import kd.bos.logging.LogFactory;
import kd.bos.orm.query.QCP;
@ -88,6 +90,7 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P
}
}
public void propertyChanged(PropertyChangedArgs e) {
String key = e.getProperty().getName();
ChangeData[] changeData = e.getChangeSet();
@ -95,13 +98,13 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P
Object oldValue = changeData[0].getOldValue();
DynamicObject settleType;
Object value = this.getModel().getValue("settletype");
settleType=value != null ? (DynamicObject)value : null;
settleType = value != null ? (DynamicObject) value : null;
if (newValue != oldValue) {
DynamicObject applyDo;
switch (key) {
case "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[]{"draftbill"});
}
@ -109,21 +112,35 @@ public class PaymentProcessingBillPlugin extends AbstractBillPlugIn implements P
break;
case "paymentchannel":
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[]{"draftbill"});
}
}
break;
case "actpayamt":
// newValue 转换为字符串
String valueStr = newValue.toString();
String formattedValue = String.format("%.2f", Double.parseDouble(valueStr));
AmountConvertResult amountConvertResult = I18nServiceHelper.amountConvertUppercase(
"ZH", "CNY", formattedValue, "false");
if (amountConvertResult.isSuccess()) {
this.getModel().setValue("shkd_zwamount", amountConvertResult.getResult());
break;
}
}
}
}
public void afterBindData(EventObject e) {
DynamicObject settleType;
Object value = this.getModel().getValue("settletype");
settleType=value != null ? (DynamicObject)value : null;
settleType = value != null ? (DynamicObject) value : null;
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[]{"draftbill"});
}

View File

@ -0,0 +1,86 @@
package shkd.sys.sys.plugin.operation;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.plugin.AbstractOperationServicePlugIn;
import kd.bos.entity.plugin.args.AfterOperationArgs;
import kd.bos.i18n.mservice.I18nServiceHelper;
import kd.bos.i18n.mservice.utils.AmountConvertResult;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import java.math.BigDecimal;
import java.util.Date;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import kd.fi.cas.helper.CasBotpHelper;
import kd.sdk.plugin.Plugin;
/**
* 单据操作插件
* 修复付款单和应收票据关联关系
*/
public class PaymentSlipAssociationFixed extends AbstractOperationServicePlugIn implements Plugin {
@Override
public void afterExecuteOperationTransaction(AfterOperationArgs e) {
super.afterExecuteOperationTransaction(e);
DynamicObject[] dataEntities = e.getDataEntities();
DynamicObject dataEntity = dataEntities[0];
// 付款单
DynamicObject fkDynamicObject = BusinessDataServiceHelper.loadSingle(dataEntity.getPkValue(), dataEntity.getDynamicObjectType());
// 付款金额
BigDecimal actpayamt = fkDynamicObject.getBigDecimal("actpayamt");
String formattedValue = String.format("%.2f", Double.parseDouble(actpayamt.toString()));
// 大写金额
String shkdZwamount = fkDynamicObject.getString("shkd_zwamount");
AmountConvertResult amountConvertResult = I18nServiceHelper.amountConvertUppercase(
"ZH", "CNY", formattedValue, "false");
if (amountConvertResult.isSuccess() && !shkdZwamount.equals(amountConvertResult.getResult())) {
fkDynamicObject.set("shkd_zwamount", amountConvertResult.getResult());
}
// 来源系统
Object businessnameObj = fkDynamicObject.get("shkd_businessname");
// 付款单关联票据分录
String blEntryKey = fkDynamicObject.getDataEntityType().getName() + "_bl";
DynamicObjectCollection dynamicObjectCollection = fkDynamicObject.getDynamicObjectCollection(blEntryKey);
// 票据关联付款单不为空说明已经关联了
if (!dynamicObjectCollection.isEmpty()) {
return;
}
if (dataEntity.get("settletnumber") != null) {
String settletnumber = dataEntity.getString("settletnumber");//结算号
DynamicObject[] dynamicObjects = BusinessDataServiceHelper.load("cdm_payablebill", "id,draftbillno", new QFilter("draftbillno", QCP.equals, settletnumber).toArray());
if (businessnameObj != null && "XK".equals(businessnameObj.toString()) && dynamicObjects.length > 0) {
// 写入付款单关联票据关联关系
DynamicObject linkRow = new DynamicObject(dynamicObjectCollection.getDynamicObjectType());
linkRow.set(blEntryKey + "_basedataid", dynamicObjects[0].getPkValue());
dynamicObjectCollection.add(linkRow);
SaveServiceHelper.save(new DynamicObject[]{fkDynamicObject});
// 写入票据关联付款单关联关系
DynamicObject kpdjDynamicObject = BusinessDataServiceHelper.loadSingle(dynamicObjects[0].getPkValue(), dynamicObjects[0].getDynamicObjectType());
DynamicObjectCollection releatedcasbillentrys = kpdjDynamicObject.getDynamicObjectCollection("releatedcasbillentrys");
DynamicObject kpLinkRow = new DynamicObject(releatedcasbillentrys.getDynamicObjectType());
kpLinkRow.set("rel_billtype", "cas_paybill");// 关联单据类型
kpLinkRow.set("rel_billno", fkDynamicObject.getString("billno"));// 关联单据编号
kpLinkRow.set("rel_billid", fkDynamicObject.getPkValue());// 关联单据ID
kpLinkRow.set("rel_bizdate", fkDynamicObject.get("bizdate"));// 出纳单据业务日期
kpLinkRow.set("rel_billamount", fkDynamicObject.get("actpayamt"));// 关联单据金额
kpLinkRow.set("rel_createtime", new Date());// 关联信息创建时间
kpLinkRow.set("rel_modifytime", new Date());// 记录修改时间
releatedcasbillentrys.add(kpLinkRow);
SaveServiceHelper.save(new DynamicObject[]{kpdjDynamicObject});
}
}
}
}