Merge remote-tracking branch 'origin/main' into main
This commit is contained in:
commit
20780f86f9
|
@ -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"));
|
||||
|
|
|
@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
|
@ -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 {
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();// 编报期间ID(name)
|
||||
String reportOrgName = hashMap.get("reportOrgName").toString();// 编报主体ID(name)
|
||||
String queryPlanning = queryPlanning(reportPeriodName, reportOrgName);
|
||||
return CustomApiResult.fail("404", queryPlanning);
|
||||
}
|
||||
|
|
|
@ -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";
|
||||
// 付款银行编码
|
||||
|
|
|
@ -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.forEach,bank → {}", 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.forEach,bank → {}", 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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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"});
|
||||
}
|
||||
|
|
|
@ -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});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue