Răsfoiți Sursa

商旅对账测试问题修复

lisheng 1 săptămână în urmă
părinte
comite
a3b07be6f0

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

@@ -63,6 +63,11 @@ public interface FinanceBillConfirmConstant extends BillConstant {
     interface NCKD_BZ_ENTRY{
 
         String ENTITYID = "nckd_bz_entry";
+
+        /**
+         * 法人主体
+         */
+        String NCKD_BZ_LEGAL = "nckd_bz_legal";
         String  NCKD_BZ_SRCENTRYID = "nckd_bz_srcentryid";
         /**
          * 部门秘书
@@ -149,6 +154,10 @@ public interface FinanceBillConfirmConstant extends BillConstant {
     interface NCKD_SL_ENTRY {
 
         String ENTITYID = "nckd_sl_entry";
+        /**
+         * 法人主体
+         */
+        String NCKD_SL_LEGAL = "nckd_sl_legal";
         String  NCKD_SL_SRCENTRYID = "nckd_sl_srcentryid";
 
         /**
@@ -227,7 +236,10 @@ public interface FinanceBillConfirmConstant extends BillConstant {
      */
     interface NCKD_YC_ENTRY {
         String ENTITYID = "nckd_yc_entry";
-
+        /**
+         * 法人主体
+         */
+        String NCKD_YC_LEGAL = "nckd_yc_legal";
         String  NCKD_YC_SRCENTRYID = "nckd_yc_srcentryid";
 
         /**
@@ -289,6 +301,10 @@ public interface FinanceBillConfirmConstant extends BillConstant {
      */
     interface NCKD_CB_ENTRY {
         String ENTITYID = "nckd_cb_entry";
+        /**
+         * 法人主体
+         */
+        String NCKD_CB_LEGAL = "nckd_cb_legal";
 
         String  NCKD_CB_SRCENTRYID = "nckd_cb_srcentryid";
 

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

@@ -55,6 +55,9 @@ public interface TravelFinanDraftConstant extends BillConstant {
        String NCKD_FROM = "nckd_from"; //出发地
         String NCKD_TO = "nckd_to"; //目的地
 
+        String NCKD_ORDERSTATUS = "nckd_orderstatus"; //订单状态
+        String NCKD_ORDERTYPE = "nckd_ordertype"; //订单类型
+
     }
 
     /**

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

@@ -220,23 +220,6 @@ public class CommonUtils {
 
     public static BigDecimal getBzAmount(DynamicObject applier){
         String userNumber = applier.getString("number");
-        // 查询职级
-        DynamicObject jobLeverInfo = QueryServiceHelper.queryOne(BillTypeConstants.HRPI_EMPJOBREL, "joblevel.id", new QFilter[]{
-                new QFilter("businessstatus", QCP.equals, "1"),
-                new QFilter("datastatus", QCP.equals, "1"),
-                new QFilter("iscurrentversion", QCP.equals, "1"),
-                new QFilter("person.number", QCP.equals, userNumber)
-        });
-        if(jobLeverInfo != null){
-            DynamicObject jobLeverStandard = QueryServiceHelper.queryOne("nckd_checkstandard", "nckd_amount", new QFilter[]{
-                    new QFilter("nckd_type", QCP.equals, "002"),
-                    new QFilter("nckd_classify", QCP.equals, "001"),
-                    new QFilter("nckd_multi_joblever.fbasedataid", QCP.equals, jobLeverInfo.getLong("joblevel.id"))
-            });
-            if(jobLeverStandard != null){
-                return jobLeverStandard.getBigDecimal("nckd_amount");
-            }
-        }
 
         // 查询人员职级
         DynamicObject positionInfo = QueryServiceHelper.queryOne(BillTypeConstants.HRPI_EMPPOSORGREL, "position.id", new QFilter[]{
@@ -257,6 +240,23 @@ public class CommonUtils {
             }
         }
 
+        // 查询职级
+        DynamicObject jobLeverInfo = QueryServiceHelper.queryOne(BillTypeConstants.HRPI_EMPJOBREL, "joblevel.id", new QFilter[]{
+                new QFilter("businessstatus", QCP.equals, "1"),
+                new QFilter("datastatus", QCP.equals, "1"),
+                new QFilter("iscurrentversion", QCP.equals, "1"),
+                new QFilter("person.number", QCP.equals, userNumber)
+        });
+        if(jobLeverInfo != null){
+            DynamicObject jobLeverStandard = QueryServiceHelper.queryOne("nckd_checkstandard", "nckd_amount", new QFilter[]{
+                    new QFilter("nckd_type", QCP.equals, "002"),
+                    new QFilter("nckd_classify", QCP.equals, "001"),
+                    new QFilter("nckd_multi_joblever.fbasedataid", QCP.equals, jobLeverInfo.getLong("joblevel.id"))
+            });
+            if(jobLeverStandard != null){
+                return jobLeverStandard.getBigDecimal("nckd_amount");
+            }
+        }
         return BigDecimal.ZERO;
     }
 

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

@@ -713,8 +713,9 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
                     .stream().map(r -> r.getBigDecimal("servicefee")).reduce(BigDecimal.ZERO, BigDecimal::add);
             slEntry.set(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_TRAINSERVICEFEE, trainServiceAmount);
 
-            BigDecimal trainTotalAmount = trainCheckingCol
-                    .stream().map(r -> r.getBigDecimal("ticketprice")).reduce(BigDecimal.ZERO, BigDecimal::add);
+            BigDecimal trainTotalAmount = dataList.stream()
+                    .filter(r -> "6".equals(r.getString("operationtype")))
+                    .map(r -> r.getBigDecimal("totalamount")).reduce(BigDecimal.ZERO, BigDecimal::add);
             slEntry.set(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_TRAINPAYAMT, trainTotalAmount);
             // 对机票订单金额合计
             List<String> planNoList = dataList.stream()
@@ -841,10 +842,24 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
             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 legalPerson = BusinessDataServiceHelper.loadSingle("hrpi_empentrel","enterprise",new QFilter[]{
+                    new QFilter("person.number", QCP.equals, userInfo.getString("number")),
+                    new QFilter("businessstatus", QCP.equals, "1"),
+                    new QFilter("iscurrentversion", QCP.equals, "1"),
+                    new QFilter("datastatus", QCP.equals, "1"),
+            });
+            DynamicObject legalPersonEmpentrel = null;
+            if(legalPerson != null){
+                legalPersonEmpentrel = legalPerson.getDynamicObject("enterprise");
+            }
+
             if (FinanceBillConfirmConstant.NCKD_BZ_ENTRY.ENTITYID.equals(entryEntityName)) {
                 entry.set(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_DEPFULLNAME, userInfo.getString("entryentity.orgstructure.fullname"));
                 entry.set(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_POST, userInfo.getString("entryentity.post.name"));
                 entry.set(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_COMPANY, company);
+                entry.set(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_LEGAL, legalPersonEmpentrel);
+
                 entry.set(FinanceBillConfirmConstant.NCKD_BZ_ENTRY.NCKD_BZ_DEPSECRETARY, travelDeptSecretary);
                 // 收款信息通过薪酬发放设置hsas_paysetting中获取
                 DynamicObject hrPaySetting = QueryServiceHelper.queryOne("hsas_paysetting", "entryentity.perbankcard.bankcardnum,entryentity.perbankcard.bankdeposit", new QFilter[]{
@@ -862,6 +877,7 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
                 entry.set(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_DEPFULLNAME, userInfo.getString("entryentity.orgstructure.fullname"));
                 entry.set(FinanceBillConfirmConstant.NCKD_SL_ENTRY.NCKD_SL_POST, userInfo.getString("entryentity.post.name"));
                 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);
             }
 
@@ -869,12 +885,16 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
                 entry.set(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_DEPFULLNAME, userInfo.getString("entryentity.orgstructure.fullname"));
                 entry.set(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_POST, userInfo.getString("entryentity.post.name"));
                 entry.set(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_COMPANY, company);
+                entry.set(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_LEGAL, legalPersonEmpentrel);
+
                 entry.set(FinanceBillConfirmConstant.NCKD_YC_ENTRY.NCKD_YC_DEPSECRETARY, travelDeptSecretary);
             }
             if(FinanceBillConfirmConstant.NCKD_CB_ENTRY.ENTITYID.equals(entryEntityName)){
                 entry.set(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_DEPFULLNAME, userInfo.getString("entryentity.orgstructure.fullname"));
                 entry.set(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_POST, userInfo.getString("entryentity.post.name"));
                 entry.set(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_COMPANY, company);
+                entry.set(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_LEGAL, legalPersonEmpentrel);
+
                 entry.set(FinanceBillConfirmConstant.NCKD_CB_ENTRY.NCKD_CB_DEPSECRETARY, travelDeptSecretary);
             }
 
@@ -903,13 +923,19 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
         DynamicObject[] tripReqBillArray = BusinessDataServiceHelper.load(tripReqBillIdList.toArray(), EntityMetadataCache.getDataEntityType(TripReqBillConstant.ENTITYID_F7));
         List<String> tripReqBillNumberList = Arrays.stream(tripReqBillArray).map(r -> r.getString(TripReqBillConstant.BILLNO)).collect(Collectors.toList());
         // 获取关联的火车订单
-        Map<String, List<DynamicObject>> trainBillMap = QueryServiceHelper.query("er_trainbill", "oabillnum,ordernum,departtime,arrivetime,departcity,arrivecity,totalamount",
+        Map<String, List<DynamicObject>> trainBillMap = QueryServiceHelper.query("er_trainbill", "oabillnum,ordernum,departtime,arrivetime,departcity,arrivecity,totalamount,orderstatus,ordertype",
+                        new QFilter("oabillnum", QCP.in, tripReqBillNumberList).toArray())
+                .stream()
+                .collect(Collectors.groupingBy(r -> r.getString("oabillnum")));
+
+        // 获取机票订单
+        Map<String, List<DynamicObject>> planBillMap = QueryServiceHelper.query("er_planebill", "oabillnum,ordernum,takeofftime,landingtime,fromcityname,tocityname,totalamount,orderstatus,ordertype",
                         new QFilter("oabillnum", QCP.in, tripReqBillNumberList).toArray())
                 .stream()
                 .collect(Collectors.groupingBy(r -> r.getString("oabillnum")));
 
         // 获取机票订单
-        Map<String, List<DynamicObject>> planBillMap = QueryServiceHelper.query("er_planebill", "oabillnum,ordernum,takeofftime,landingtime,fromcityname,tocityname,totalamount",
+        Map<String, List<DynamicObject>> hotelBillMap = QueryServiceHelper.query("er_hotelbill", "oabillnum,ordernum,checkindate,checkoutdate,cityname,totalamount,orderstatus,ordertype",
                         new QFilter("oabillnum", QCP.in, tripReqBillNumberList).toArray())
                 .stream()
                 .collect(Collectors.groupingBy(r -> r.getString("oabillnum")));
@@ -933,13 +959,22 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
                 List<DynamicObject> trainBillList = trainBillMap.get(billno);
                 trainBillList.stream().forEach(trainBill -> getDraftData(draftEntryCol.addNew(),"6",trainBill.getString("ordernum"),
                         trainBill.getDate("departtime"),trainBill.getDate("arrivetime"),
-                        trainBill.getString("departcity"),trainBill.getString("arrivecity"), trainBill.getBigDecimal("totalamount")));
+                        trainBill.getString("departcity"),trainBill.getString("arrivecity"), trainBill.getBigDecimal("totalamount"),
+                        trainBill.getString("orderstatus"),trainBill.getString("ordertype")));
             }
             if(planBillMap.containsKey(billno) && planBillMap.get(billno) != null){
                 List<DynamicObject> planBillList = planBillMap.get(billno);
                 planBillList.stream().forEach(planBill -> getDraftData(draftEntryCol.addNew(),"2",planBill.getString("ordernum"),
                         planBill.getDate("takeofftime"),planBill.getDate("landingtime"),
-                        planBill.getString("fromcityname"),planBill.getString("tocityname"),planBill.getBigDecimal("totalamount")));
+                        planBill.getString("fromcityname"),planBill.getString("tocityname"),planBill.getBigDecimal("totalamount"),
+                        planBill.getString("orderstatus"),planBill.getString("ordertype")));
+            }
+            if(hotelBillMap.containsKey(billno) && hotelBillMap.get(billno) != null){
+                List<DynamicObject> hotelBillList = hotelBillMap.get(billno);
+                hotelBillList.stream().forEach(hotelBill -> getDraftData(draftEntryCol.addNew(),"1",hotelBill.getString("ordernum"),
+                        hotelBill.getDate("checkindate"),hotelBill.getDate("checkoutdate"),
+                        null,hotelBill.getString("cityname"),hotelBill.getBigDecimal("totalamount"),
+                        hotelBill.getString("orderstatus"),hotelBill.getString("ordertype")));
             }
             if(tripReimInvoiceData.containsKey(billno) && tripReimInvoiceData.get(billno) != null){
                 List<DynamicObject> tripReimInvoiceList = tripReimInvoiceData.get(billno);
@@ -952,6 +987,9 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
             // 获取draftEntryCol所有的开始时间和结束时间,在获取其中的最早时间和最晚时间
             List<Date> allDateList = new ArrayList<>();
             for(DynamicObject draftEntry : draftEntryCol){
+                if("1".equals(draftEntry.getString(TravelFinanDraftConstant.NCKD_DETAILENTITY.NCKD_SOURCE))){
+                    continue;
+                }
                 Date startDate = draftEntry.getDate(TravelFinanDraftConstant.NCKD_DETAILENTITY.NCKD_STARTDATE);
                 Date endDate = draftEntry.getDate(TravelFinanDraftConstant.NCKD_DETAILENTITY.NCKD_FINISHDATE);
                 if(startDate != null){
@@ -995,6 +1033,123 @@ public class TravelFinanConfirmCreateTask extends AbstractTask {
         return draftEntry;
     }
 
+    protected DynamicObject getDraftData( DynamicObject draftEntry , String source, String orderNum, Date startTime,
+                                          Date endTime , String from , String to , BigDecimal amount , String sourceStatus , String orderType){
+        DynamicObject draftData = getDraftData(draftEntry, source, orderNum, startTime, endTime, from, to, amount);
+        String sourceStatusValue = "";
+        //国内火车
+        if("6".equals(orderType)){
+            switch (sourceStatus) {
+                case "1":
+                    sourceStatusValue = "已出票";
+                    break;
+                case "2":
+                    sourceStatusValue = "已改签";
+                    break;
+                case "3":
+                    sourceStatusValue = "已退票";
+                    break;
+                case "4":
+                    sourceStatusValue = "出票失败";
+                    break;
+                case "5":
+                    sourceStatusValue = "出票失败退款";
+                    break;
+                case "6":
+                    sourceStatusValue = "改签中";
+                    break;
+                case "7":
+                    sourceStatusValue = "退票中";
+                    break;
+                default:
+                    sourceStatusValue = "未知";
+                    break;
+            }
+
+            //国内机票
+        }else if("2".equals(orderType)){
+            switch (sourceStatus) {
+                case "40000":
+                    sourceStatusValue = "已出票";
+                    break;
+                case "50301":
+                    sourceStatusValue = "改签中";
+                    break;
+                case "50302":
+                    sourceStatusValue = "已改签";
+                    break;
+                case "50201":
+                    sourceStatusValue = "退票中";
+                    break;
+                case "50202":
+                    sourceStatusValue = "已退票";
+                    break;
+                case "10000":
+                    sourceStatusValue = "已提交";
+                    break;
+                case "20000":
+                    sourceStatusValue = "已预订";
+                    break;
+                case "40100":
+                    sourceStatusValue = "出票中";
+                    break;
+                case "50203":
+                    sourceStatusValue = "已部分出票";
+                    break;
+                case "55555":
+                    sourceStatusValue = "改签失败";
+                    break;
+                case "55554":
+                    sourceStatusValue = "改签已取消";
+                    break;
+                case "30000":
+                    sourceStatusValue = "已取消";
+                    break;
+                default:
+                    sourceStatusValue = "未知";
+                    break;
+            }
+
+            //国内酒店
+        }else if("1".equals(orderType)){
+            switch (sourceStatus) {
+                case "1":
+                    sourceStatusValue = "待审批";
+                    break;
+                case "2":
+                    sourceStatusValue = "待支付";
+                    break;
+                case "3":
+                    sourceStatusValue = "待确认";
+                    break;
+                case "5":
+                    sourceStatusValue = "已确认";
+                    break;
+                case "6":
+                    sourceStatusValue = "满房";
+                    break;
+                case "7":
+                    sourceStatusValue = "已离店";
+                    break;
+                case "8":
+                    sourceStatusValue = "待退订";
+                    break;
+                case "10":
+                    sourceStatusValue = "已退订";
+                    break;
+                case "14":
+                    sourceStatusValue = "已取消";
+                    break;
+                default:
+                    sourceStatusValue = "未知";
+                    break;
+            }
+        }
+        draftData.set(TravelFinanDraftConstant.NCKD_DETAILENTITY.NCKD_ORDERSTATUS, sourceStatusValue);
+        draftData.set(TravelFinanDraftConstant.NCKD_DETAILENTITY.NCKD_ORDERTYPE, orderType);
+        return draftEntry;
+    }
+
 
 
     protected Map<String, List<DynamicObject>> getTripReimInvoiceData(List<String> tripReqBillNumberList){