Преглед на файлове

商旅对账单:
1.修复机票金额计算错误
2.修复点击出差人超链接跳转无数据问题

lisheng преди 1 ден
родител
ревизия
50cac2d9da

+ 10 - 0
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/common/util/CommonUtils.java

@@ -20,6 +20,7 @@ import nckd.jimin.jyyy.fi.common.constant.BillTypeConstants;
 
 
 import java.math.BigDecimal;
+import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.stream.Collectors;
@@ -187,6 +188,15 @@ public class CommonUtils {
         return idMap;
     }
 
+    public static Date parseDate(String date){
+        try {
+            return PERIOD_FORMAT.parse(date);
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+        return null ;
+    }
+
     public static int getDaysByWorkCalandar(Date startTime, Date endTime,DynamicObject org){
         // 获取组织下的工作日历
         DynamicObject workCalendar = getWorkCalandar(org.getLong("id"));

+ 46 - 4
code/jyyy/nckd-jimin-jyyy-fi/src/main/java/nckd/jimin/jyyy/fi/plugin/form/travelcheck/BusTravelCommonEdit.java

@@ -1,6 +1,7 @@
 package nckd.jimin.jyyy.fi.plugin.form.travelcheck;
 
 import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
 import kd.bos.form.ShowType;
 import kd.bos.form.control.EntryGrid;
 import kd.bos.form.events.HyperLinkClickEvent;
@@ -10,14 +11,19 @@ import kd.bos.list.ListFilterParameter;
 import kd.bos.list.ListShowParameter;
 import kd.bos.orm.query.QCP;
 import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.QueryServiceHelper;
+import kd.bos.util.CollectionUtils;
 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.TravelFinanDraftConstant;
 import nckd.jimin.jyyy.fi.common.constant.travelcheck.TripReqBillConstant;
 import nckd.jimin.jyyy.fi.common.util.CommonUtils;
 
+import java.util.Arrays;
+import java.util.Date;
 import java.util.EventObject;
 import java.util.List;
+import java.util.stream.Collectors;
 
 public class BusTravelCommonEdit extends AbstractFormPlugin implements FinanceBillConfirmConstant, HyperLinkClickListener {
 
@@ -68,16 +74,35 @@ public class BusTravelCommonEdit extends AbstractFormPlugin implements FinanceBi
             DynamicObject entryInfo = getModel().getEntryRowEntity(NCKD_SL_ENTRY.ENTITYID, rowIndex);
 
             DynamicObject traveler = entryInfo.getDynamicObject(NCKD_SL_ENTRY.NCKD_SL_TRAVELER);
+            String period = dataEntity.getString(NCKD_CHECKMONTH);
+            Date periodStartDate = CommonUtils.parseDate(period);
+            Date periodEndDate = CommonUtils.getFirstDayOfNextMonth(periodStartDate);
+
+            DynamicObjectCollection checkingBillCol = QueryServiceHelper.query("er_checkingbill", "billnum", new QFilter[]{
+                    new QFilter("periodstartdate", QCP.large_equals, periodStartDate),
+                    new QFilter("periodenddate", QCP.less_than, periodEndDate),
+                    new QFilter("operationtype", QFilter.in, Arrays.asList("1","2","4","5","6")),
+            });
+            if(CollectionUtils.isEmpty(checkingBillCol)){
+                return;
+            }
+            List<String> billNumList = checkingBillCol.stream().map(r -> r.getString("billnum")).collect(Collectors.toList());
+            DynamicObjectCollection slOrderDataCol = QueryServiceHelper.query("er_allcheckingbill",
+                    "id,oabillnum,server,sourcebookedid.id applierId,totalamount,operationtype,ordernum", new QFilter[]{
+                            new QFilter("checkingbillnum", QCP.in, billNumList),
+                            new QFilter("sourcebookedid", QCP.equals, traveler.getLong(ID))
+                    });
+            List<Long> idList = slOrderDataCol.stream().map(r -> r.getLong("id")).collect(Collectors.toList());
 
             ListShowParameter showParameter = new ListShowParameter();
             showParameter.setBillFormId("er_allcheckingbill");
             showParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
             showParameter.setShowFilter(false);
+
             // 查询出差人下的单据
             ListFilterParameter listFilterParameter = showParameter.getListFilterParameter();
             List<QFilter> qFilters = listFilterParameter.getQFilters();
-            qFilters.add(new QFilter(NCKD_SL_CONFRMID, QCP.equals, confirmBilId));
-            qFilters.add(new QFilter("sourcebookedid", QCP.equals, traveler.getLong(ID)));
+            qFilters.add(new QFilter("id", QCP.in, idList));
             this.getView().showForm(showParameter);
         }
 
@@ -87,6 +112,24 @@ public class BusTravelCommonEdit extends AbstractFormPlugin implements FinanceBi
 
             DynamicObject traveler = entryInfo.getDynamicObject(NCKD_YC_ENTRY.NCKD_YC_TRAVELER);
 
+            String period = dataEntity.getString(NCKD_CHECKMONTH);
+            Date periodStartDate = CommonUtils.parseDate(period);
+            Date periodEndDate = CommonUtils.getFirstDayOfNextMonth(periodStartDate);
+            DynamicObjectCollection checkingBillCol = QueryServiceHelper.query("er_checkingbill", "billnum", new QFilter[]{
+                    new QFilter("periodstartdate", QCP.large_equals, periodStartDate),
+                    new QFilter("periodenddate", QCP.less_than, periodEndDate),
+                    new QFilter("operationtype", QFilter.equals, "3"),
+            });
+            List<String> billNumList = checkingBillCol.stream().map(r -> r.getString("billnum")).collect(Collectors.toList());
+            // 查询用车结算单
+            DynamicObjectCollection vehicleCheckCol = QueryServiceHelper.query("er_vehiclecheckingbill",
+                    "id,oabillnum,server,sourcebookedid.id applierId,totalamount,vehicletype", new QFilter[]{
+                            new QFilter("checkingbillnum", QCP.in, billNumList),
+                            new QFilter("sourcebookedid", QCP.equals, traveler.getLong(ID))
+                    });
+
+            List<Long> idList = vehicleCheckCol.stream().map(r -> r.getLong("id")).collect(Collectors.toList());
+
             ListShowParameter showParameter = new ListShowParameter();
             showParameter.setBillFormId("er_vehiclecheckingbill");
             showParameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
@@ -94,8 +137,7 @@ public class BusTravelCommonEdit extends AbstractFormPlugin implements FinanceBi
             // 查询出差人下的单据
             ListFilterParameter listFilterParameter = showParameter.getListFilterParameter();
             List<QFilter> qFilters = listFilterParameter.getQFilters();
-            qFilters.add(new QFilter(NCKD_YC_CONFRMID, QCP.equals, confirmBilId));
-            qFilters.add(new QFilter("sourcebookedid", QCP.equals, traveler.getLong(ID)));
+            qFilters.add(new QFilter("id", QCP.in, idList));
             this.getView().showForm(showParameter);
         }
     }

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

@@ -545,7 +545,7 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
 
                 if(isOverDiscount){
                     // 机票价格-标准价格*0.6
-                    tgEntry.set(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_EXCSTAMT, standPrice.subtract(standPrice.multiply(new BigDecimal(0.6))));
+                    tgEntry.set(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_EXCSTAMT, ticketPrice.subtract(standPrice.multiply(new BigDecimal(0.6))));
                 }
                 String standardInfo = "";
                 // 通过员工的岗位,查询对应的报销级别