Przeglądaj źródła

商旅对账单:
1.新增上级领导,并且按照上级领导创建对账单
2.新增部门秘书会审

lisheng 1 tydzień temu
rodzic
commit
4b20283e52

+ 5 - 0
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/common/constant/travelcheck/BusTravelCheckBillConstant.java

@@ -20,6 +20,11 @@ public interface BusTravelCheckBillConstant extends BillConstant {
 
     String NCKD_BZHZ_AMTSUM = "nckd_bzhz_amtsum"; // 补贴金额合计
 
+    /**
+     * 部门领导
+     */
+    String NCKD_UPAUDITOR = "nckd_upauditor";
+
     String NCKD_DEPSECRETARY = "nckd_depsecretary"; // 部门秘书
 
     String NCKD_NCKD_SOURCEBILLID = "nckd_sourcebillid"; // 底稿确认单

+ 5 - 0
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/common/constant/travelcheck/DepSecretaryConstant.java

@@ -10,6 +10,11 @@ public interface DepSecretaryConstant extends BillConstant {
      */
     String NCKD_SECRETARY = "nckd_secretary";
 
+    /**
+     * 上级领导
+     */
+    String NCKD_UPAUDITOR = "nckd_upauditor";
+
     String ENTITYID_ENTRY = "nckd_reladepentry";
 
     /**

+ 27 - 0
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/common/constant/travelcheck/FinanceBillConfirmConstant.java

@@ -66,6 +66,11 @@ public interface FinanceBillConfirmConstant extends BillConstant {
 
         String ENTITYID = "nckd_bz_entry";
 
+        /**
+         * 部门领导
+         */
+        String NCKD_BZ_USERLEADER = "nckd_bz_userleader";
+
         /**
          * 法人主体
          */
@@ -156,6 +161,11 @@ public interface FinanceBillConfirmConstant extends BillConstant {
     interface NCKD_SL_ENTRY {
 
         String ENTITYID = "nckd_sl_entry";
+
+        /**
+         * 部门领导
+         */
+        String NCKD_SL_USERLEADER = "nckd_sl_userleader";
         /**
          * 法人主体
          */
@@ -238,6 +248,10 @@ public interface FinanceBillConfirmConstant extends BillConstant {
      */
     interface NCKD_YC_ENTRY {
         String ENTITYID = "nckd_yc_entry";
+        /**
+         * 部门领导
+         */
+        String NCKD_YC_USERLEADER = "nckd_yc_userleader";
         /**
          * 法人主体
          */
@@ -303,6 +317,11 @@ public interface FinanceBillConfirmConstant extends BillConstant {
      */
     interface NCKD_CB_ENTRY {
         String ENTITYID = "nckd_cb_entry";
+
+        /**
+         * 部门领导
+         */
+        String NCKD_CB_USERLEADER = "nckd_cb_userleader";
         /**
          * 法人主体
          */
@@ -389,6 +408,10 @@ public interface FinanceBillConfirmConstant extends BillConstant {
         String ENTITYID = "nckd_tg_entry";
 
         String  NCKD_TG_SRCENTRYID = "nckd_tg_srcentryid";
+        /**
+         * 部门领导
+         */
+        String NCKD_TG_USERLEADER = "nckd_tg_userleader";
 
         /**
          * 部门秘书
@@ -467,6 +490,10 @@ public interface FinanceBillConfirmConstant extends BillConstant {
         String ENTITYID = "nckd_zs_entry";
 
         String  NCKD_ZS_SRCENTRYID = "nckd_zs_srcentryid";
+        /**
+         * 部门领导
+         */
+        String NCKD_ZS_USERLEADER = "nckd_zs_userleader";
 
         /**
          * 部门秘书

+ 255 - 0
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/form/travelcheck/BusTravelCheckSecretaryEdit.java

@@ -0,0 +1,255 @@
+package nckd.jimin.jyyy.fi.plugin.form.travelcheck;
+
+import kd.bos.bill.AbstractBillPlugIn;
+import kd.bos.context.RequestContext;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.form.events.BeforeDoOperationEventArgs;
+import kd.bos.form.operate.FormOperate;
+import kd.bos.org.utils.DynamicObjectUtils;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.operation.SaveServiceHelper;
+import nckd.jimin.jyyy.fi.common.constant.travelcheck.BusTravelCheckBillConstant;
+import nckd.jimin.jyyy.fi.common.constant.travelcheck.FinanceBillConfirmConstant;
+import nckd.jimin.jyyy.fi.common.constant.travelcheck.TripReqBillConstant;
+
+import java.util.EventObject;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+public class BusTravelCheckSecretaryEdit extends AbstractBillPlugIn implements FinanceBillConfirmConstant {
+    @Override
+    public void beforeBindData(EventObject e) {
+        super.beforeBindData(e);
+        loadDataFromConfirmBill();
+
+    }
+
+    /**
+     * 从财务确认单上带出数据
+     */
+    protected void loadDataFromConfirmBill(){
+        long currUserId = RequestContext.get().getCurrUserId();
+        DynamicObject dataEntity = getModel().getDataEntity(true);
+        DynamicObjectCollection bzEntryCol = dataEntity.getDynamicObjectCollection(NCKD_BZ_ENTRY.ENTITYID);
+        bzEntryCol.removeIf(bzEntry -> bzEntry.getDynamicObject(NCKD_BZ_ENTRY.NCKD_BZ_DEPSECRETARY).getLong(ID) != currUserId);
+
+        // 部门秘书补助关联的出差人信息
+        List<Object> bzApplierIdList = bzEntryCol.stream()
+                .filter(bzEntry -> bzEntry.getDynamicObject(NCKD_BZ_ENTRY.NCKD_BZ_TRAVELER) != null && bzEntry.getDynamicObject(NCKD_BZ_ENTRY.NCKD_BZ_DEPSECRETARY) != null)
+                .filter(bzEntry -> bzEntry.getDynamicObject(NCKD_BZ_ENTRY.NCKD_BZ_DEPSECRETARY).getLong(ID) == currUserId)
+                .map(bzEntry -> bzEntry.getDynamicObject(NCKD_BZ_ENTRY.NCKD_BZ_TRAVELER).getPkValue())
+                .collect(Collectors.toList());
+
+        DynamicObjectCollection supEntryCol = dataEntity.getDynamicObjectCollection(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.ENTITYID);
+        supEntryCol.removeIf(supEntry -> supEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL) != null
+                && supEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL).getDynamicObject(TripReqBillConstant.APPLIER) != null
+                && !bzApplierIdList.contains(supEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL).getDynamicObject(TripReqBillConstant.APPLIER).getLong(ID)));
+
+        DynamicObjectCollection slEntryCol = dataEntity.getDynamicObjectCollection(NCKD_SL_ENTRY.ENTITYID);
+        slEntryCol.removeIf(slEntry -> slEntry.getDynamicObject(NCKD_SL_ENTRY.NCKD_SL_DEPSECRETARY).getLong( ID) != currUserId);
+
+        DynamicObjectCollection ycEntryCol = dataEntity.getDynamicObjectCollection(NCKD_YC_ENTRY.ENTITYID);
+        ycEntryCol.removeIf(ycEntry -> ycEntry.getDynamicObject(NCKD_YC_ENTRY.NCKD_YC_DEPSECRETARY).getLong( ID) != currUserId);
+
+        DynamicObjectCollection cbEntryCol = dataEntity.getDynamicObjectCollection(NCKD_CB_ENTRY.ENTITYID);
+        cbEntryCol.removeIf(cbEntry -> cbEntry.getDynamicObject(NCKD_CB_ENTRY.NCKD_CB_DEPSECRETARY).getLong( ID) != currUserId);
+
+        DynamicObjectCollection tgEntryCol = dataEntity.getDynamicObjectCollection(NCKD_TG_ENTRY.ENTITYID);
+        tgEntryCol.removeIf(tgEntry -> tgEntry.getDynamicObject(NCKD_TG_ENTRY.NCKD_TG_DEPSECRETARY).getLong( ID) != currUserId);
+
+        DynamicObjectCollection zsEntryCol = dataEntity.getDynamicObjectCollection(NCKD_ZS_ENTRY.ENTITYID);
+        zsEntryCol.removeIf(zsEntry -> zsEntry.getDynamicObject(NCKD_ZS_ENTRY.NCKD_ZS_DEPSECRETARY).getLong( ID) != currUserId);
+
+    }
+    @Override
+    public void beforeDoOperation(BeforeDoOperationEventArgs args) {
+        super.beforeDoOperation(args);
+        FormOperate operate = (FormOperate)args.getSource();
+        String operateKey = operate.getOperateKey();
+        // 财务会审保存
+        if("approve_save".equals(operateKey)){
+            // 反写对账单
+            writeBackCheckBill();
+            // 反写确认单
+            writeBackConfirmBill();
+        }
+    }
+
+    protected void writeBackCheckBill(){
+        DynamicObject dataEntity = getModel().getDataEntity(true);
+        Object billId = dataEntity.getPkValue();
+        DynamicObject checkBillInfo = BusinessDataServiceHelper.loadSingle(billId, BusTravelCheckBillConstant.ENTITYID);
+        DynamicObjectCollection bzEntryCol = dataEntity.getDynamicObjectCollection(NCKD_BZ_ENTRY.ENTITYID);
+        long currUserId = RequestContext.get().getCurrUserId();
+        Map<Long, DynamicObject> bzSrcEntryMap = bzEntryCol.stream().collect(Collectors.toMap(bzEntry -> bzEntry.getLong(ID), bzEntry -> bzEntry));
+        DynamicObjectCollection checkBzEntryCol = checkBillInfo.getDynamicObjectCollection(NCKD_BZ_ENTRY.ENTITYID);
+        for(DynamicObject checkBzEntry : checkBzEntryCol){
+            if(bzSrcEntryMap.containsKey(checkBzEntry.getLong(ID))){
+                DynamicObject bzEntryInfo = bzSrcEntryMap.get(checkBzEntry.getLong(ID));
+                DynamicObjectUtils.copy(bzEntryInfo, checkBzEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            }
+        }
+
+        // 通过出差人 来创建
+        DynamicObjectCollection supEntryCol = dataEntity.getDynamicObjectCollection(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.ENTITYID);
+        DynamicObjectCollection checkSupEntryCol = checkBillInfo.getDynamicObjectCollection(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.ENTITYID);
+
+        // 部门秘书补助关联的出差人信息
+        List<Object> bzApplierIdList = bzEntryCol.stream()
+                .map(bzEntry -> bzEntry.getDynamicObject(NCKD_BZ_ENTRY.NCKD_BZ_TRAVELER).getPkValue())
+                .collect(Collectors.toList());
+
+        checkSupEntryCol.removeIf(checkSupEntry -> checkSupEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL) != null
+                && checkSupEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL).getDynamicObject(TripReqBillConstant.APPLIER) != null
+                && bzApplierIdList.contains(checkSupEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL).getDynamicObject(TripReqBillConstant.APPLIER).getLong(ID)));
+
+        for(DynamicObject supEntry : supEntryCol){
+            DynamicObject checkSupEntry = checkSupEntryCol.addNew();
+            DynamicObjectUtils.copy(supEntry, checkSupEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+        }
+
+        DynamicObjectCollection slSrcEntryCol = dataEntity.getDynamicObjectCollection(NCKD_SL_ENTRY.ENTITYID);
+        Map<Long, DynamicObject> slSrcEntryMap = slSrcEntryCol.stream().collect(Collectors.toMap(slEntry -> slEntry.getLong(ID), slEntry -> slEntry));
+        DynamicObjectCollection checkSlEntryCol = checkBillInfo.getDynamicObjectCollection(NCKD_SL_ENTRY.ENTITYID);
+        for(DynamicObject checkSlEntry : checkSlEntryCol){
+            if(slSrcEntryMap.containsKey(checkSlEntry.getLong(ID))){
+                DynamicObject slEntryInfo = slSrcEntryMap.get(checkSlEntry.getPkValue());
+                DynamicObjectUtils.copy(slEntryInfo, checkSlEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            }
+        }
+
+        DynamicObjectCollection ycSrcEntryCol = dataEntity.getDynamicObjectCollection(NCKD_YC_ENTRY.ENTITYID);
+        Map<Long, DynamicObject> ycSrcEntryMap = ycSrcEntryCol.stream().collect(Collectors.toMap(ycEntry -> ycEntry.getLong(ID), ycEntry -> ycEntry));
+        DynamicObjectCollection checkYcEntryCol = checkBillInfo.getDynamicObjectCollection(NCKD_YC_ENTRY.ENTITYID);
+        for(DynamicObject checkYcEntry : checkYcEntryCol){
+            if(ycSrcEntryMap.containsKey(checkYcEntry.getLong(ID))){
+                DynamicObject ycEntryInfo = ycSrcEntryMap.get(checkYcEntry.getLong(ID));
+                DynamicObjectUtils.copy(ycEntryInfo, checkYcEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            }
+        }
+
+
+        DynamicObjectCollection cbSrcEntryCol = dataEntity.getDynamicObjectCollection(NCKD_CB_ENTRY.ENTITYID);
+        Map<Long, DynamicObject> cbSrcEntryMap = cbSrcEntryCol.stream().collect(Collectors.toMap(cbEntry -> cbEntry.getLong(ID), cbEntry -> cbEntry));
+        DynamicObjectCollection checkCbEntryCol = checkBillInfo.getDynamicObjectCollection(NCKD_CB_ENTRY.ENTITYID);
+        for(DynamicObject checkCbEntry : checkCbEntryCol){
+            if(cbSrcEntryMap.containsKey(checkCbEntry.getLong(ID))){
+                DynamicObject cbEntryInfo = cbSrcEntryMap.get(checkCbEntry.getLong(ID));
+                DynamicObjectUtils.copy(cbEntryInfo, checkCbEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            }
+        }
+
+        DynamicObjectCollection tgSrcEntryCol = dataEntity.getDynamicObjectCollection(NCKD_TG_ENTRY.ENTITYID);
+        Map<Long, DynamicObject> tgSrcEntryMap = tgSrcEntryCol.stream().collect(Collectors.toMap(tgEntry -> tgEntry.getLong(ID), tgEntry -> tgEntry));
+        DynamicObjectCollection checkTgEntryCol = checkBillInfo.getDynamicObjectCollection(NCKD_TG_ENTRY.ENTITYID);
+        for(DynamicObject checkTgEntry : checkTgEntryCol){
+            if(tgSrcEntryMap.containsKey(checkTgEntry.getLong(ID))){
+                DynamicObject tgEntryInfo = tgSrcEntryMap.get(checkTgEntry.getLong(ID));
+                DynamicObjectUtils.copy(tgEntryInfo, checkTgEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            }
+        }
+
+        DynamicObjectCollection zsSrcEntryCol = dataEntity.getDynamicObjectCollection(NCKD_ZS_ENTRY.ENTITYID);
+        Map<Long, DynamicObject> zsSrcEntryMap = zsSrcEntryCol.stream().collect(Collectors.toMap(zsEntry -> zsEntry.getLong(ID), zsEntry -> zsEntry));
+        DynamicObjectCollection checkZsEntryCol = checkBillInfo.getDynamicObjectCollection(NCKD_ZS_ENTRY.ENTITYID);
+        for(DynamicObject checkZsEntry : checkZsEntryCol){
+            if(zsSrcEntryMap.containsKey(checkZsEntry.getLong(ID))){
+                DynamicObject zsEntryInfo = zsSrcEntryMap.get(checkZsEntry.getLong(ID));
+                DynamicObjectUtils.copy(zsEntryInfo, checkZsEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            }
+        }
+
+        SaveServiceHelper.save(new DynamicObject[]{ checkBillInfo});
+    }
+    protected void writeBackConfirmBill(){
+        DynamicObject dataEntity = getModel().getDataEntity(true);
+        long checkBillId = dataEntity.getLong(BusTravelCheckBillConstant.ID);
+        long confirmBillId = dataEntity.getLong(BusTravelCheckBillConstant.NCKD_NCKD_SOURCEBILLID);
+        DynamicObject confirmBillInfo = BusinessDataServiceHelper.loadSingle(confirmBillId, FinanceBillConfirmConstant.ENTITYID);
+        DynamicObjectCollection bzEntryCol = dataEntity.getDynamicObjectCollection(NCKD_BZ_ENTRY.ENTITYID);
+        long currUserId = RequestContext.get().getCurrUserId();
+        Map<Long, DynamicObject> bzSrcEntryMap = bzEntryCol.stream().collect(Collectors.toMap(bzEntry -> bzEntry.getLong(NCKD_BZ_ENTRY.NCKD_BZ_SRCENTRYID), bzEntry -> bzEntry));
+        DynamicObjectCollection confirmBzEntryCol = confirmBillInfo.getDynamicObjectCollection(NCKD_BZ_ENTRY.ENTITYID);
+        for(DynamicObject confirmBzEntry : confirmBzEntryCol){
+            if(bzSrcEntryMap.containsKey(confirmBzEntry.getLong(ID))){
+                DynamicObject bzEntryInfo = bzSrcEntryMap.get(confirmBzEntry.getLong(ID));
+                DynamicObjectUtils.copy(bzEntryInfo, confirmBzEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            }
+        }
+
+        DynamicObjectCollection supEntryCol = dataEntity.getDynamicObjectCollection(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.ENTITYID);
+
+        DynamicObjectCollection confirmSupEntryCol = confirmBillInfo.getDynamicObjectCollection(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.ENTITYID);
+
+        // 部门秘书补助关联的出差人信息
+        List<Object> bzApplierIdList = bzEntryCol.stream()
+                .map(bzEntry -> bzEntry.getDynamicObject(NCKD_BZ_ENTRY.NCKD_BZ_TRAVELER).getPkValue())
+                .collect(Collectors.toList());
+
+        confirmSupEntryCol.removeIf(confirmSupEntry -> confirmSupEntry.getLong(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_SRCCHECKID) == checkBillId
+                && confirmSupEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL) != null
+                && confirmSupEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL).getDynamicObject(TripReqBillConstant.APPLIER) != null
+                && bzApplierIdList.contains(confirmSupEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL).getDynamicObject(TripReqBillConstant.APPLIER).getLong(ID)));
+
+        for(DynamicObject supEntry : supEntryCol){
+            DynamicObject confirmSupEntry = confirmSupEntryCol.addNew();
+            DynamicObjectUtils.copy(supEntry, confirmSupEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            confirmSupEntry.set(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_SRCCHECKID, checkBillId);
+        }
+
+        DynamicObjectCollection slSrcEntryCol = dataEntity.getDynamicObjectCollection(NCKD_SL_ENTRY.ENTITYID);
+        Map<Long, DynamicObject> slSrcEntryMap = slSrcEntryCol.stream().collect(Collectors.toMap(slEntry -> slEntry.getLong(NCKD_SL_ENTRY.NCKD_SL_SRCENTRYID), slEntry -> slEntry));
+        DynamicObjectCollection confirmSlEntryCol = confirmBillInfo.getDynamicObjectCollection(NCKD_SL_ENTRY.ENTITYID);
+        for(DynamicObject confirmSlEntry : confirmSlEntryCol){
+            if(slSrcEntryMap.containsKey(confirmSlEntry.getLong(ID))){
+                DynamicObject slEntryInfo = slSrcEntryMap.get(confirmSlEntry.getLong(ID));
+                DynamicObjectUtils.copy(slEntryInfo, confirmSlEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            }
+        }
+
+        DynamicObjectCollection ycSrcEntryCol = dataEntity.getDynamicObjectCollection(NCKD_YC_ENTRY.ENTITYID);
+        Map<Long, DynamicObject> ycSrcEntryMap = ycSrcEntryCol.stream().collect(Collectors.toMap(ycEntry -> ycEntry.getLong(NCKD_YC_ENTRY.NCKD_YC_SRCENTRYID), ycEntry -> ycEntry));
+        DynamicObjectCollection confirmYcEntryCol = confirmBillInfo.getDynamicObjectCollection(NCKD_YC_ENTRY.ENTITYID);
+        for(DynamicObject confirmYcEntry : confirmYcEntryCol){
+            if(ycSrcEntryMap.containsKey(confirmYcEntry.getLong(ID))){
+                DynamicObject ycEntryInfo = ycSrcEntryMap.get(confirmYcEntry.getLong(ID));
+                DynamicObjectUtils.copy(ycEntryInfo, confirmYcEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            }
+        }
+
+
+        DynamicObjectCollection cbSrcEntryCol = dataEntity.getDynamicObjectCollection(NCKD_CB_ENTRY.ENTITYID);
+        Map<Long, DynamicObject> cbSrcEntryMap = cbSrcEntryCol.stream().collect(Collectors.toMap(cbEntry -> cbEntry.getLong(NCKD_CB_ENTRY.NCKD_CB_SRCENTRYID), cbEntry -> cbEntry));
+        DynamicObjectCollection confirmCbEntryCol = confirmBillInfo.getDynamicObjectCollection(NCKD_CB_ENTRY.ENTITYID);
+        for(DynamicObject confirmCbEntry : confirmCbEntryCol){
+            if(cbSrcEntryMap.containsKey(confirmCbEntry.getLong(ID))){
+                DynamicObject cbEntryInfo = cbSrcEntryMap.get(confirmCbEntry.getLong(ID));
+                DynamicObjectUtils.copy(cbEntryInfo, confirmCbEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            }
+        }
+
+        DynamicObjectCollection tgSrcEntryCol = dataEntity.getDynamicObjectCollection(NCKD_TG_ENTRY.ENTITYID);
+        Map<Long, DynamicObject> tgSrcEntryMap = tgSrcEntryCol.stream().collect(Collectors.toMap(tgEntry -> tgEntry.getLong(NCKD_TG_ENTRY.NCKD_TG_SRCENTRYID), tgEntry -> tgEntry));
+        DynamicObjectCollection confirmTgEntryCol = confirmBillInfo.getDynamicObjectCollection(NCKD_TG_ENTRY.ENTITYID);
+        for(DynamicObject confirmTgEntry : confirmTgEntryCol){
+            if(tgSrcEntryMap.containsKey(confirmTgEntry.getLong(ID))){
+                DynamicObject tgEntryInfo = tgSrcEntryMap.get(confirmTgEntry.getLong(ID));
+                DynamicObjectUtils.copy(tgEntryInfo, confirmTgEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            }
+        }
+
+        DynamicObjectCollection zsSrcEntryCol = dataEntity.getDynamicObjectCollection(NCKD_ZS_ENTRY.ENTITYID);
+        Map<Long, DynamicObject> zsSrcEntryMap = zsSrcEntryCol.stream().collect(Collectors.toMap(zsEntry -> zsEntry.getLong(NCKD_ZS_ENTRY.NCKD_ZS_SRCENTRYID), zsEntry -> zsEntry));
+        DynamicObjectCollection confirmZsEntryCol = confirmBillInfo.getDynamicObjectCollection(NCKD_ZS_ENTRY.ENTITYID);
+        for(DynamicObject confirmZsEntry : confirmZsEntryCol){
+            if(zsSrcEntryMap.containsKey(confirmZsEntry.getLong(ID))){
+                DynamicObject zsEntryInfo = zsSrcEntryMap.get(confirmZsEntry.getLong(ID));
+                DynamicObjectUtils.copy(zsEntryInfo, confirmZsEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
+            }
+        }
+
+        SaveServiceHelper.save(new DynamicObject[]{ confirmBillInfo});
+    }
+}

+ 31 - 30
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/operate/travelcheck/FinanceBillConfirmOp.java

@@ -131,44 +131,44 @@ public class FinanceBillConfirmOp extends AbstractOperationServicePlugIn {
     protected void createBusTravelCheckBill(DynamicObject confirmBillInfo){
         // 根据部门秘书创建商旅对账单
         confirmBillInfo = BusinessDataServiceHelper.loadSingle(confirmBillInfo.getPkValue(),confirmBillInfo.getDynamicObjectType().getName());
-        Set<Long> allDepSecretaryIds = new HashSet<>();
+        Set<Long> allSecretaryLeaderIds = new HashSet<>();
         // 补助部门秘书
         confirmBillInfo.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.ENTITYID).stream()
-                .filter(r -> r.getDynamicObject(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_DEPSECRETARY) != null)
-                .forEach(r -> allDepSecretaryIds.add(r.getDynamicObject(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_DEPSECRETARY).getLong(FinanceBillConfirmConstant.ID)));
+                .filter(r -> r.getDynamicObject(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_USERLEADER) != null)
+                .forEach(r -> allSecretaryLeaderIds.add(r.getDynamicObject(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_USERLEADER).getLong(FinanceBillConfirmConstant.ID)));
 
         confirmBillInfo.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_SL_ENTRY.ENTITYID).stream()
-                .filter(r -> r.getDynamicObject(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_DEPSECRETARY) != null)
-                .forEach(r -> allDepSecretaryIds.add(r.getDynamicObject(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_DEPSECRETARY).getLong(FinanceBillConfirmConstant.ID)));
+                .filter(r -> r.getDynamicObject(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_USERLEADER) != null)
+                .forEach(r -> allSecretaryLeaderIds.add(r.getDynamicObject(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_USERLEADER).getLong(FinanceBillConfirmConstant.ID)));
 
         confirmBillInfo.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_YC_ENTRY.ENTITYID).stream()
-                .filter(r -> r.getDynamicObject(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_DEPSECRETARY) != null)
-                .forEach(r -> allDepSecretaryIds.add(r.getDynamicObject(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_DEPSECRETARY).getLong(FinanceBillConfirmConstant.ID)));
+                .filter(r -> r.getDynamicObject(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_USERLEADER) != null)
+                .forEach(r -> allSecretaryLeaderIds.add(r.getDynamicObject(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_USERLEADER).getLong(FinanceBillConfirmConstant.ID)));
 
         confirmBillInfo.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_CB_ENTRY.ENTITYID).stream()
-                .filter(r -> r.getDynamicObject(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_DEPSECRETARY) != null)
-                .forEach(r -> allDepSecretaryIds.add(r.getDynamicObject(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_DEPSECRETARY).getLong(FinanceBillConfirmConstant.ID)));
+                .filter(r -> r.getDynamicObject(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_USERLEADER) != null)
+                .forEach(r -> allSecretaryLeaderIds.add(r.getDynamicObject(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_USERLEADER).getLong(FinanceBillConfirmConstant.ID)));
 
         confirmBillInfo.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_TG_ENTRY.ENTITYID).stream()
-                .filter(r -> r.getDynamicObject(FinanceBillConfirmConstant.NCKD_TG_ENTRY.NCKD_TG_DEPSECRETARY) != null)
-                .forEach(r -> allDepSecretaryIds.add(r.getDynamicObject(FinanceBillConfirmConstant.NCKD_TG_ENTRY.NCKD_TG_DEPSECRETARY).getLong(FinanceBillConfirmConstant.ID)));
+                .filter(r -> r.getDynamicObject(FinanceBillConfirmConstant.NCKD_TG_ENTRY.NCKD_TG_USERLEADER) != null)
+                .forEach(r -> allSecretaryLeaderIds.add(r.getDynamicObject(FinanceBillConfirmConstant.NCKD_TG_ENTRY.NCKD_TG_USERLEADER).getLong(FinanceBillConfirmConstant.ID)));
 
         confirmBillInfo.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.ENTITYID).stream()
-                .filter(r -> r.getDynamicObject(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.NCKD_ZS_DEPSECRETARY) != null)
-                .forEach(r -> allDepSecretaryIds.add(r.getDynamicObject(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.NCKD_ZS_DEPSECRETARY).getLong(FinanceBillConfirmConstant.ID)));
+                .filter(r -> r.getDynamicObject(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.NCKD_ZS_USERLEADER) != null)
+                .forEach(r -> allSecretaryLeaderIds.add(r.getDynamicObject(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.NCKD_ZS_USERLEADER).getLong(FinanceBillConfirmConstant.ID)));
 
         String checkMonth = confirmBillInfo.getString(FinanceBillConfirmConstant.NCKD_CHECKMONTH);
         DynamicObject confirmBill = confirmBillInfo;
-        allDepSecretaryIds.forEach(r -> createCheckBill(r, checkMonth,confirmBill));
+        allSecretaryLeaderIds.forEach(r -> createCheckBill(r, checkMonth,confirmBill));
     }
 
-    protected void createCheckBill(Long secretaryId, String checkMonth , DynamicObject confirmBillInfo){
+    protected void createCheckBill(Long secretaryLeaderId, String checkMonth , DynamicObject confirmBillInfo){
         long confirmBillId = confirmBillInfo.getLong(FinanceBillConfirmConstant.ID);
         // 查询是否存在
         QFilter qFilter = new QFilter(BusTravelCheckBillConstant.NCKD_NCKD_SOURCEBILLID, QCP.equals,confirmBillId);
-        qFilter.and(BusTravelCheckBillConstant.NCKD_DEPSECRETARY, QCP.equals, secretaryId);
+        qFilter.and(BusTravelCheckBillConstant.NCKD_UPAUDITOR, QCP.equals, secretaryLeaderId);
         if(ORM.create().exists(BusTravelCheckBillConstant.ENTITYID, qFilter.toArray())){
-            logger.info("部门秘书【{}}】已存在商旅对账单【{}}】", secretaryId, checkMonth);
+            logger.info("部门领导【{}}】已存在商旅对账单【{}}】", secretaryLeaderId, checkMonth);
             return;
         }
 
@@ -177,7 +177,8 @@ public class FinanceBillConfirmOp extends AbstractOperationServicePlugIn {
 
         String number = CodeRuleServiceHelper.getNumber(BusTravelCheckBillConstant.ENTITYID, busCheckBill, null);
         busCheckBill.set(BusTravelCheckBillConstant.KEY_BILLNO, number);
-        busCheckBill.set(BusTravelCheckBillConstant.NCKD_DEPSECRETARY, secretaryId);
+        //busCheckBill.set(BusTravelCheckBillConstant.NCKD_DEPSECRETARY, secretaryId);
+        busCheckBill.set(BusTravelCheckBillConstant.NCKD_UPAUDITOR, secretaryLeaderId);
         busCheckBill.set(BusTravelCheckBillConstant.NCKD_CHECKMONTH, checkMonth);
         busCheckBill.set(BusTravelCheckBillConstant.NCKD_NCKD_SOURCEBILLID, confirmBillId);
         busCheckBill.set(BusTravelCheckBillConstant.KEY_BILLSTATUS,"A");
@@ -187,8 +188,8 @@ public class FinanceBillConfirmOp extends AbstractOperationServicePlugIn {
         DynamicObjectCollection checkBzEntryCol = busCheckBill.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.ENTITYID);
         DynamicObjectCollection confirmBzEntryCol = confirmBillInfo.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.ENTITYID);
         for(DynamicObject confirmBzEntry : confirmBzEntryCol){
-            DynamicObject depSecretary = confirmBzEntry.getDynamicObject(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_DEPSECRETARY);
-            if(depSecretary != null && depSecretary.getLong(FinanceBillConfirmConstant.ID) == secretaryId){
+            DynamicObject depSecretary = confirmBzEntry.getDynamicObject(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_USERLEADER);
+            if(depSecretary != null && depSecretary.getLong(FinanceBillConfirmConstant.ID) == secretaryLeaderId){
                 DynamicObject checkEntry = checkBzEntryCol.addNew();
                 checkEntry.set(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_SRCENTRYID, confirmBzEntry.getPkValue());
                 DynamicObjectUtils.copy(confirmBzEntry, checkEntry, BusTravelCheckBillConstant.COPY_IGNOREFILED);
@@ -198,8 +199,8 @@ public class FinanceBillConfirmOp extends AbstractOperationServicePlugIn {
         DynamicObjectCollection checkSlEntryCol = busCheckBill.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_SL_ENTRY.ENTITYID);
         DynamicObjectCollection confirmSlEntryCol = confirmBillInfo.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_SL_ENTRY.ENTITYID);
         for(DynamicObject confirmSlEntry : confirmSlEntryCol){
-            DynamicObject depSecretary = confirmSlEntry.getDynamicObject(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_DEPSECRETARY);
-            if(depSecretary != null && depSecretary.getLong(FinanceBillConfirmConstant.ID) == secretaryId){
+            DynamicObject depSecretary = confirmSlEntry.getDynamicObject(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_USERLEADER);
+            if(depSecretary != null && depSecretary.getLong(FinanceBillConfirmConstant.ID) == secretaryLeaderId){
                 DynamicObject checkEntry = checkSlEntryCol.addNew();
                 checkEntry.set(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_SRCENTRYID, confirmSlEntry.getPkValue());
                 DynamicObjectUtils.copy(confirmSlEntry, checkEntry, BusTravelCheckBillConstant.COPY_IGNOREFILED);
@@ -209,8 +210,8 @@ public class FinanceBillConfirmOp extends AbstractOperationServicePlugIn {
         DynamicObjectCollection checkYcEntryCol = busCheckBill.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_YC_ENTRY.ENTITYID);
         DynamicObjectCollection confirmYcEntryCol = confirmBillInfo.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_YC_ENTRY.ENTITYID);
         for(DynamicObject confirmYcEntry : confirmYcEntryCol){
-            DynamicObject depSecretary = confirmYcEntry.getDynamicObject(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_DEPSECRETARY);
-            if(depSecretary != null && depSecretary.getLong(FinanceBillConfirmConstant.ID) == secretaryId){
+            DynamicObject depSecretary = confirmYcEntry.getDynamicObject(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_USERLEADER);
+            if(depSecretary != null && depSecretary.getLong(FinanceBillConfirmConstant.ID) == secretaryLeaderId){
                 DynamicObject checkEntry = checkYcEntryCol.addNew();
                 checkEntry.set(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_SRCENTRYID, confirmYcEntry.getPkValue());
                 DynamicObjectUtils.copy(confirmYcEntry, checkEntry, BusTravelCheckBillConstant.COPY_IGNOREFILED);
@@ -220,8 +221,8 @@ public class FinanceBillConfirmOp extends AbstractOperationServicePlugIn {
         DynamicObjectCollection checkCbEntryCol = busCheckBill.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_CB_ENTRY.ENTITYID);
         DynamicObjectCollection confirmCbEntryCol = confirmBillInfo.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_CB_ENTRY.ENTITYID);
         for(DynamicObject confirmCbEntry : confirmCbEntryCol){
-            DynamicObject depSecretary = confirmCbEntry.getDynamicObject(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_DEPSECRETARY);
-            if(depSecretary != null && depSecretary.getLong(FinanceBillConfirmConstant.ID) == secretaryId){
+            DynamicObject depSecretary = confirmCbEntry.getDynamicObject(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_USERLEADER);
+            if(depSecretary != null && depSecretary.getLong(FinanceBillConfirmConstant.ID) == secretaryLeaderId){
                 DynamicObject checkEntry = checkCbEntryCol.addNew();
                 checkEntry.set(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_SRCENTRYID, confirmCbEntry.getPkValue());
                 DynamicObjectUtils.copy(confirmCbEntry, checkEntry, BusTravelCheckBillConstant.COPY_IGNOREFILED);
@@ -231,8 +232,8 @@ public class FinanceBillConfirmOp extends AbstractOperationServicePlugIn {
         DynamicObjectCollection checkTgEntryCol = busCheckBill.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_TG_ENTRY.ENTITYID);
         DynamicObjectCollection confirmTgEntryCol = confirmBillInfo.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_TG_ENTRY.ENTITYID);
         for(DynamicObject confirmTgEntry : confirmTgEntryCol){
-            DynamicObject depSecretary = confirmTgEntry.getDynamicObject(FinanceBillConfirmConstant.NCKD_TG_ENTRY.NCKD_TG_DEPSECRETARY);
-            if(depSecretary != null && depSecretary.getLong(FinanceBillConfirmConstant.ID) == secretaryId){
+            DynamicObject depSecretary = confirmTgEntry.getDynamicObject(FinanceBillConfirmConstant.NCKD_TG_ENTRY.NCKD_TG_USERLEADER);
+            if(depSecretary != null && depSecretary.getLong(FinanceBillConfirmConstant.ID) == secretaryLeaderId){
                 DynamicObject checkEntry = checkTgEntryCol.addNew();
                 checkEntry.set(FinanceBillConfirmConstant.NCKD_TG_ENTRY.NCKD_TG_SRCENTRYID, confirmTgEntry.getPkValue());
                 DynamicObjectUtils.copy(confirmTgEntry, checkEntry, BusTravelCheckBillConstant.COPY_IGNOREFILED);
@@ -242,8 +243,8 @@ public class FinanceBillConfirmOp extends AbstractOperationServicePlugIn {
         DynamicObjectCollection checkZsEntryCol = busCheckBill.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.ENTITYID);
         DynamicObjectCollection confirmZsEntryCol = confirmBillInfo.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.ENTITYID);
         for(DynamicObject confirmZsEntry : confirmZsEntryCol){
-            DynamicObject depSecretary = confirmZsEntry.getDynamicObject(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.NCKD_ZS_DEPSECRETARY);
-            if(depSecretary != null && depSecretary.getLong(FinanceBillConfirmConstant.ID) == secretaryId){
+            DynamicObject depSecretary = confirmZsEntry.getDynamicObject(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.NCKD_ZS_USERLEADER);
+            if(depSecretary != null && depSecretary.getLong(FinanceBillConfirmConstant.ID) == secretaryLeaderId){
                 DynamicObject checkEntry = checkZsEntryCol.addNew();
                 checkEntry.set(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.NCKD_ZS_SRCENTRYID, confirmZsEntry.getPkValue());
                 DynamicObjectUtils.copy(confirmZsEntry, checkEntry, BusTravelCheckBillConstant.COPY_IGNOREFILED);

+ 12 - 6
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/task/TravelFinanConfirmCreateTask.java

@@ -952,7 +952,11 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
             long deptId = userInfo.getLong("entryentity.dpt");
             DynamicObject orgRelation = BusinessDataServiceHelper.loadSingle("bos_org_orgrelation_dept", "fromorg", new QFilter("toorg", QCP.equals, deptId).toArray());
             DynamicObject company = Objects.isNull(orgRelation)?null:orgRelation.getDynamicObject("fromorg");
-            DynamicObject travelDeptSecretary = getTravelDeptSecretary(traveler.getLong(FinanceBillConfirmConstant.ID), deptId);
+            // 部门秘书设置
+            DynamicObject deptSecretarySetting = getTravelDeptSecretary(traveler.getLong(FinanceBillConfirmConstant.ID), deptId);
+            DynamicObject travelDeptSecretary = Optional.ofNullable(deptSecretarySetting).map(r -> r.getDynamicObject(DepSecretaryConstant.NCKD_SECRETARY)).orElse(null);
+
+            DynamicObject secretaryUpAuditor = Optional.ofNullable(deptSecretarySetting).map(r -> r.getDynamicObject(DepSecretaryConstant.NCKD_UPAUDITOR)).orElse(null);
 
             DynamicObject legalPerson = BusinessDataServiceHelper.loadSingle("hrpi_empentrel","enterprise",new QFilter[]{
                     new QFilter("person.number", QCP.equals, userInfo.getString("number")),
@@ -972,6 +976,7 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
                 entry.set(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_LEGAL, legalPersonEmpentrel);
 
                 entry.set(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_DEPSECRETARY, travelDeptSecretary);
+                entry.set(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_USERLEADER, secretaryUpAuditor);
                 // 收款信息通过薪酬发放设置hsas_paysetting中获取
                 DynamicObject hrPaySetting = QueryServiceHelper.queryOne("hsas_paysetting", "entryentity.perbankcard.bankcardnum,entryentity.perbankcard.bankdeposit", new QFilter[]{
                         new QFilter("salaryfile.person.number", QCP.equals, traveler.getString("number")),
@@ -990,6 +995,7 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
                 entry.set(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_COMPANY, company);
                 entry.set(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_LEGAL, legalPersonEmpentrel);
                 entry.set(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_DEPSECRETARY, travelDeptSecretary);
+                entry.set(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_USERLEADER, secretaryUpAuditor);
             }
 
             if(FinanceBillConfirmConstant.NCKD_YC_ENTRY.ENTITYID.equals(entryEntityName)){
@@ -999,6 +1005,7 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
                 entry.set(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_LEGAL, legalPersonEmpentrel);
 
                 entry.set(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_DEPSECRETARY, travelDeptSecretary);
+                entry.set(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_USERLEADER, secretaryUpAuditor);
             }
             if(FinanceBillConfirmConstant.NCKD_CB_ENTRY.ENTITYID.equals(entryEntityName)){
                 entry.set(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_DEPFULLNAME, userInfo.getString("entryentity.orgstructure.fullname"));
@@ -1007,18 +1014,21 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
                 entry.set(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_LEGAL, legalPersonEmpentrel);
 
                 entry.set(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_DEPSECRETARY, travelDeptSecretary);
+                entry.set(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_USERLEADER, secretaryUpAuditor);
             }
 
             if(FinanceBillConfirmConstant.NCKD_TG_ENTRY.ENTITYID.equals(entryEntityName)){
                 entry.set(FinanceBillConfirmConstant.NCKD_TG_ENTRY.NCKD_TG_DEPFULLNAME, userInfo.getString("entryentity.orgstructure.fullname"));
                 entry.set(FinanceBillConfirmConstant.NCKD_TG_ENTRY.NCKD_TG_POST, userInfo.getString("entryentity.post.name"));
                 entry.set(FinanceBillConfirmConstant.NCKD_TG_ENTRY.NCKD_TG_DEPSECRETARY, travelDeptSecretary);
+                entry.set(FinanceBillConfirmConstant.NCKD_TG_ENTRY.NCKD_TG_USERLEADER, secretaryUpAuditor);
             }
 
             if(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.ENTITYID.equals(entryEntityName)){
                 entry.set(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.NCKD_ZS_DEPFULLNAME, userInfo.getString("entryentity.orgstructure.fullname"));
                 entry.set(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.NCKD_ZS_POST, userInfo.getString("entryentity.post.name"));
                 entry.set(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.NCKD_ZS_DEPSECRETARY, travelDeptSecretary);
+                entry.set(FinanceBillConfirmConstant.NCKD_ZS_ENTRY.NCKD_ZS_USERLEADER, secretaryUpAuditor);
             }
         }
     }
@@ -1314,11 +1324,7 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
             checkOrg = deptId;
         }
         // 查询部门秘书配置
-        DynamicObject depSecretaryInfo = QueryServiceHelper.queryOne(DepSecretaryConstant.ENTITYID, DepSecretaryConstant.NCKD_SECRETARY,
+        return BusinessDataServiceHelper.loadSingle(DepSecretaryConstant.ENTITYID, String.join(",", DepSecretaryConstant.NCKD_SECRETARY, DepSecretaryConstant.NCKD_UPAUDITOR),
                 new QFilter(CommonUtils.join(DepSecretaryConstant.ENTITYID_ENTRY, DepSecretaryConstant.NCKD_ORG), QCP.equals, checkOrg).toArray());
-        if(depSecretaryInfo != null){
-            return BusinessDataServiceHelper.loadSingleFromCache(depSecretaryInfo.getLong(DepSecretaryConstant.NCKD_SECRETARY),"bos_user");
-        }
-        return null;
     }
 }