Просмотр исходного кода

商旅对账单:
1.修复商旅对账及商旅会审反写确认单补助未涵盖逻辑

lisheng 3 дней назад
Родитель
Сommit
76e5c3ac75

+ 21 - 16
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/form/travelcheck/BusTravelCheckApproveEdit.java

@@ -11,6 +11,7 @@ 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;
@@ -35,6 +36,11 @@ public class BusTravelCheckApproveEdit extends AbstractBillPlugIn implements Fin
         DynamicObjectCollection bzEntryCol = dataEntity.getDynamicObjectCollection(NCKD_BZ_ENTRY.ENTITYID);
         bzEntryCol.removeIf(bzEntry -> bzEntry.getDynamicObject(NCKD_BZ_ENTRY.NCKD_BZ_TRAVELER).getLong(ID) != currUserId);
 
+        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
+                && supEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL).getDynamicObject(TripReqBillConstant.APPLIER).getLong( ID) != currUserId);
+
         DynamicObjectCollection slEntryCol = dataEntity.getDynamicObjectCollection(NCKD_SL_ENTRY.ENTITYID);
         slEntryCol.removeIf(slEntry -> slEntry.getDynamicObject(NCKD_SL_ENTRY.NCKD_SL_TRAVELER).getLong( ID) != currUserId);
 
@@ -70,7 +76,7 @@ public class BusTravelCheckApproveEdit extends AbstractBillPlugIn implements Fin
         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){
@@ -80,17 +86,16 @@ public class BusTravelCheckApproveEdit extends AbstractBillPlugIn implements Fin
             }
         }
 
+        // 通过出差人 来创建
         DynamicObjectCollection supEntryCol = dataEntity.getDynamicObjectCollection(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.ENTITYID);
-        List<Long> supEntryIdList = supEntryCol.stream().map(confirmSupEntry -> confirmSupEntry.getLong(BusTravelCheckBillConstant.ID)).collect(Collectors.toList());
-
         DynamicObjectCollection checkSupEntryCol = checkBillInfo.getDynamicObjectCollection(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.ENTITYID);
-        checkSupEntryCol.removeIf(confirmSupEntry -> supEntryIdList.contains(confirmSupEntry.getLong(BusTravelCheckBillConstant.ID)));
-        checkSupEntryCol.removeIf(confirmSupEntry -> confirmSupEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL) == null);
 
-        Map<Long, DynamicObject> checkSupEntryMap = checkSupEntryCol.stream().collect(Collectors.toMap(supEntry -> supEntry.getLong(ID), supEntry -> supEntry));
+        checkSupEntryCol.removeIf(checkSupEntry -> checkSupEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL) != null
+            && checkSupEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL).getDynamicObject(TripReqBillConstant.APPLIER) != null
+            && checkSupEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL).getDynamicObject(TripReqBillConstant.APPLIER).getLong(ID) == currUserId);
+
         for(DynamicObject supEntry : supEntryCol){
-            Long supEntryId = supEntry.getLong(BusTravelCheckBillConstant.ID);
-            DynamicObject checkSupEntry = checkSupEntryMap.getOrDefault(supEntryId, checkSupEntryCol.addNew());
+            DynamicObject checkSupEntry = checkSupEntryCol.addNew();
             DynamicObjectUtils.copy(supEntry, checkSupEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
         }
 
@@ -149,11 +154,11 @@ public class BusTravelCheckApproveEdit extends AbstractBillPlugIn implements Fin
     }
     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){
@@ -162,20 +167,20 @@ public class BusTravelCheckApproveEdit extends AbstractBillPlugIn implements Fin
                 DynamicObjectUtils.copy(bzEntryInfo, confirmBzEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
             }
         }
-        // 补助未涵盖反写确认单
+        // 通过商旅对账ID反写
         DynamicObjectCollection supEntryCol = dataEntity.getDynamicObjectCollection(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.ENTITYID);
 
         DynamicObjectCollection confirmSupEntryCol = confirmBillInfo.getDynamicObjectCollection(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.ENTITYID);
 
-        List<Long> supEntryIdList = supEntryCol.stream().map(confirmSupEntry -> confirmSupEntry.getLong(BusTravelCheckBillConstant.ID)).collect(Collectors.toList());
-        confirmSupEntryCol.removeIf(confirmSupEntry -> supEntryIdList.contains(confirmSupEntry.getLong(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_SRCCHECKID)));
-        confirmSupEntryCol.removeIf(confirmSupEntry -> confirmSupEntry.getLong(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_SRCCHECKID) == 0L);
+        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
+                && confirmSupEntry.getDynamicObject(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_TRIPREQBILL).getDynamicObject(TripReqBillConstant.APPLIER).getLong(ID) == currUserId);
         // 删除来源确认单的数据
         for(DynamicObject supEntry : supEntryCol){
-            Long supEntryId = supEntry.getLong(BusTravelCheckBillConstant.ID);
             DynamicObject confirmSupEntry = confirmSupEntryCol.addNew();
             DynamicObjectUtils.copy(supEntry, confirmSupEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
-            confirmSupEntry.set(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_SRCCHECKID, supEntryId);
+            confirmSupEntry.set(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_SRCCHECKID, checkBillId);
         }
 
         DynamicObjectCollection slSrcEntryCol = dataEntity.getDynamicObjectCollection(NCKD_SL_ENTRY.ENTITYID);

+ 4 - 4
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/operate/travelcheck/BusTravelCheckBillOp.java

@@ -90,15 +90,15 @@ public class BusTravelCheckBillOp extends AbstractOperationServicePlugIn {
 
         // 补助未涵盖反写确认单
         DynamicObjectCollection supEntryCol = dataEntity.getDynamicObjectCollection(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.ENTITYID);
+        // 通过商旅对账ID反写
 
         DynamicObjectCollection confirmSupEntryCol = confirmBillInfo.getDynamicObjectCollection(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.ENTITYID);
         // 删除来源确认单的数据
-        Map<Long, DynamicObject> confirmSupEntryMap = confirmSupEntryCol.stream().collect(Collectors.toMap(confirmSupEntry -> confirmSupEntry.getLong(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_SRCCHECKID), confirmSupEntry -> confirmSupEntry));
+        confirmSupEntryCol.removeIf(r -> r.getLong(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_SRCCHECKID) == checkBillId);
         for(DynamicObject supEntry : supEntryCol){
-            Long supEntryId = supEntry.getLong(BusTravelCheckBillConstant.ID);
-            DynamicObject confirmSupEntry = confirmSupEntryMap.getOrDefault(supEntryId, confirmSupEntryCol.addNew());
+            DynamicObject confirmSupEntry = confirmSupEntryCol.addNew();
             DynamicObjectUtils.copy(supEntry, confirmSupEntry,BusTravelCheckBillConstant.COPY_IGNOREFILED);
-            confirmSupEntry.set(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_SRCCHECKID, supEntryId);
+            confirmSupEntry.set(BusTravelCheckBillConstant.NCKD_BZ_SUPDATA.NCKD_SRCCHECKID, checkBillId);
         }
 
         DynamicObjectCollection slSrcEntryCol = dataEntity.getDynamicObjectCollection(FinanceBillConfirmConstant.NCKD_SL_ENTRY.ENTITYID);