出差申请单保存0.2, 获取申请人的默认部门作为申请部门和费用承担部门

This commit is contained in:
李靖 2024-05-15 14:14:41 +08:00
parent 37169f571b
commit 3f5368b44b
1 changed files with 54 additions and 14 deletions

View File

@ -1,6 +1,13 @@
package shkd.fi.er.plugin;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.openapi.api.plugin.ApiSavePlugin;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.QueryServiceHelper;
import kd.bos.servicehelper.user.UserServiceHelper;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import java.math.BigDecimal;
import java.util.HashMap;
@ -8,21 +15,43 @@ import java.util.List;
import java.util.Map;
public class SaveTripBaseBillApiSavePlugin implements ApiSavePlugin {
private QFilter[] qList;
private String getUserDeptNumber(String userNumber) {
QFilter filter = new QFilter("number", QCP.equals, userNumber);
QFilter[] qList = {filter};
// DynamicObject queryOrg = BusinessDataServiceHelper.loadSingle("bos_user", qList);
DynamicObjectCollection list = QueryServiceHelper
.query("bos_user","id, entryentity.*, entryentity.dpt.*", qList);
for(DynamicObject queryOrg : list) {
long id = (long)queryOrg.get("id");
long dptId = (long)queryOrg.get("entryentity.dpt.id");
String dptNumber = queryOrg.getString("entryentity.dpt.number");
boolean isPartJob = queryOrg.getBoolean("entryentity.ispartjob");
// 返回不是兼职的部门
if(!isPartJob){
return dptNumber ;
}
}
return null;
}
@Override
public List<Map<String, Object>> preHandleRequestData(List<Map<String, Object>> reqData) {
for(Map<String, Object> temp1 : reqData) {
Map<String, Object> tempMap = null;
for (Map<String, Object> temp1 : reqData) {
Object multitravelers = temp1.get("multitravelers");
if(temp1.containsKey("tripentry")){
List<Map<String, Object>> tripentryList = (List<Map<String, Object>>)temp1.get("tripentry");
if (temp1.containsKey("tripentry")) {
List<Map<String, Object>> tripentryList = (List<Map<String, Object>>) temp1.get("tripentry");
BigDecimal amount = BigDecimal.ZERO;
for(Map<String, Object> tripentry : tripentryList) {
amount = amount.add((BigDecimal)tripentry.get("triporiamount"));
for (Map<String, Object> tripentry : tripentryList) {
amount = amount.add((BigDecimal) tripentry.get("triporiamount"));
tripentry.put("travelers", multitravelers);
if(!tripentry.containsKey("tripexpenseitem")){
Map<String, Object> tripexpenseitem = new HashMap<String, Object>();
if (!tripentry.containsKey("tripexpenseitem")) {
tempMap = new HashMap<String, Object>();
//费用项目默认差旅费FYXM0015
tripexpenseitem.put("number", "FYXM0015");
tripentry.put("tripexpenseitem", tripexpenseitem);
tempMap.put("number", "FYXM0015");
tripentry.put("tripexpenseitem", tempMap);
//交通工具默认其它工具 [1:飞机, 2:火车, 3:汽车, 4:轮船, 5:其他工具]
tripentry.put("vehicles", "5");
}
@ -30,14 +59,25 @@ public class SaveTripBaseBillApiSavePlugin implements ApiSavePlugin {
temp1.put("amount", amount);
temp1.put("approveamount", amount);
}
if(!temp1.containsKey("triptype")){
Map<String, Object> triptype = new HashMap<String, Object>();
if (!temp1.containsKey("triptype")) {
tempMap = new HashMap<String, Object>();
//出差类型默认值普通出差001
triptype.put("number", "001");
temp1.put("triptype", triptype);
tempMap.put("number", "001");
temp1.put("triptype", tempMap);
}
temp1.put("istravelers", true);
// temp1.put("billstatus", "C");
Map<String, Object> applierMap = (Map<String, Object>)temp1.get("applier");
String deptNumber = getUserDeptNumber(String.valueOf(applierMap.get("number")));//10000872
if (!temp1.containsKey("org")) {
tempMap = new HashMap<String, Object>();
tempMap.put("number", deptNumber);
temp1.put("org", tempMap);
}
if (!temp1.containsKey("costdept")) {
tempMap = new HashMap<String, Object>();
tempMap.put("number", deptNumber);
temp1.put("costdept", tempMap);
}
}
return reqData;
}