Bläddra i källkod

国资委对接优化

dingsixi 5 dagar sedan
förälder
incheckning
bc6bc5d69a

+ 70 - 19
base/nckd-base-common/src/main/java/nckd/base/common/utils/GzwSyncBillUtils.java

@@ -58,6 +58,10 @@ public class GzwSyncBillUtils {
      * 设置国资委采集平台对应的表名(业务审批记录)
      */
     public final static String BIZ_APPROVE_RECORD = "biz_approve_record";
+    /**
+     * 设置国资委采集平台对应的表名(业务招待清单-用餐安排-宴请用餐-酒水明细)
+     */
+    public final static String BIZ_DRINK_DETAIL = "biz_drink_detail";
 
     /**
      * @param bizPolicy 业务招待制度
@@ -123,22 +127,24 @@ public class GzwSyncBillUtils {
         String chiefGuestTitle = dailyApply.getString("nckd_zw");
         //用餐类型
         String type = dailyApply.getString("nckd_combofield");
+        //来访单位性质
+        String visitUnitType = dailyApply.getString("nckd_combofield1");
         //费用明细
         DynamicObjectCollection entryEntity = dailyApply.getDynamicObjectCollection("expenseentryentity");
         //宴请人均标准
-        DynamicObject yqEntry = entryEntity.stream().filter(it -> ObjectUtils.isNotEmpty(it.get("treatway")) && type.equals("1") && it.getString("treatway").equals("1")).findAny().orElse(null);
+        DynamicObject yqEntry = entryEntity.stream().filter(it -> ObjectUtils.isNotEmpty(it.get("treatway")) && it.getString("treatway").equals("1")).findAny().orElse(null);
         BigDecimal yqPerAvgStd = null == yqEntry ? BigDecimal.ZERO : yqEntry.getBigDecimal("nckd_decimalfield");
         //日常用餐人均标准
-        DynamicObject rcycEntry = entryEntity.stream().filter(it -> ObjectUtils.isNotEmpty(it.get("treatway")) && type.equals("2") && it.getString("treatway").equals("1")).findAny().orElse(null);
-        BigDecimal rcycPerAvgStd = null == rcycEntry ? BigDecimal.ZERO :  rcycEntry.getBigDecimal("nckd_decimalfield");
+        DynamicObject rcycEntry = entryEntity.stream().filter(it -> ObjectUtils.isNotEmpty(it.get("treatway")) && it.getString("treatway").equals("2")).findAny().orElse(null);
+        BigDecimal rcycPerAvgStd = null == rcycEntry ? BigDecimal.ZERO : rcycEntry.getBigDecimal("nckd_decimalfield");
         //住宿人均标准
-        DynamicObject zsEntry = entryEntity.stream().filter(it -> ObjectUtils.isNotEmpty(it.get("treatway")) && it.getString("treatway").equals("2")).findAny().orElse(null);
+        DynamicObject zsEntry = entryEntity.stream().filter(it -> ObjectUtils.isNotEmpty(it.get("treatway")) && it.getString("treatway").equals("3")).findAny().orElse(null);
         BigDecimal zsPerAvgStd = null == zsEntry ? BigDecimal.ZERO : zsEntry.getBigDecimal("nckd_decimalfield");
         //纪念品人均标准
-        DynamicObject jnpEntry = entryEntity.stream().filter(it -> ObjectUtils.isNotEmpty(it.get("treatway")) && it.getString("treatway").equals("4")).findAny().orElse(null);
+        DynamicObject jnpEntry = entryEntity.stream().filter(it -> ObjectUtils.isNotEmpty(it.get("treatway")) && it.getString("treatway").equals("5")).findAny().orElse(null);
         BigDecimal jnpPerAvgStd = null == jnpEntry ? BigDecimal.ZERO : jnpEntry.getBigDecimal("nckd_decimalfield");
         //用车数量
-        DynamicObject ycEntry = entryEntity.stream().filter(it -> ObjectUtils.isNotEmpty(it.get("treatway")) && it.getString("treatway").equals("5")).findAny().orElse(null);
+        DynamicObject ycEntry = entryEntity.stream().filter(it -> ObjectUtils.isNotEmpty(it.get("treatway")) && it.getString("treatway").equals("6")).findAny().orElse(null);
         BigDecimal ycQty = null == ycEntry ? BigDecimal.ZERO : ycEntry.getBigDecimal("nckd_integerfield");
 
 
@@ -154,6 +160,7 @@ public class GzwSyncBillUtils {
         dynamicData.put("visit_organization", visitingUnit);
         dynamicData.put("visit_contact", visitingContact);
         dynamicData.put("visit_contact_phone", visitingPhone);
+        dynamicData.put("visit_org_type", visitUnitType);
         dynamicData.put("expect_visit_time", DateUtil.date2str(expectedVisitTime, DateUtil.DATE_FORMAT_YYYY_MM_DD));
         dynamicData.put("expect_visitors", expectedVisitorCount);
         dynamicData.put("visitor_main_name", chiefGuestName);
@@ -193,6 +200,8 @@ public class GzwSyncBillUtils {
         String visitingUnit = entertainment.getString("nckd_visiting_org");
         //来访联系人
         String contact = entertainment.getString("nckd_contact");
+        //来访单位性质
+        String visitUnitType = entertainment.getString("nckd_combofield1");
         //来访联系电话
         String contactPhone = entertainment.getString("nckd_contact_number");
         //招待类型
@@ -210,6 +219,7 @@ public class GzwSyncBillUtils {
         //实际费用合计
         BigDecimal amount = entertainment.getBigDecimal("nckd_amountfield");
 
+
         LinkedHashMap<String, Object> dynamicData = new LinkedHashMap<>();
 
         dynamicData.put("uuid", id);
@@ -224,6 +234,7 @@ public class GzwSyncBillUtils {
         dynamicData.put("visit_organization", visitingUnit);
         dynamicData.put("visit_contact", contact);
         dynamicData.put("visit_contact_phone", contactPhone);
+        dynamicData.put("visit_org_type", visitUnitType);
         dynamicData.put("reception_time", DateUtil.date2str(receptionTime, DateUtil.DATE_FORMAT_YYYY_MM_DD));
         dynamicData.put("reception_num", actualQty);
         dynamicData.put("visitor_main_name", guestHonor);
@@ -273,7 +284,8 @@ public class GzwSyncBillUtils {
         //过滤招待项目=用餐安排、用餐类型
         List<DynamicObject> entryList = entryEntity.stream()
                 .filter(it -> it.getString("nckd_program").equals("1")
-                        && it.getString("nckd_mealtype").equals(type))
+                        && it.getString("nckd_mealtype").equals(type)
+                )
                 .collect(Collectors.toList());
 
         List<LinkedHashMap<String, Object>> dataList = new ArrayList<>();
@@ -285,14 +297,6 @@ public class GzwSyncBillUtils {
             int personNum = entry.getInt("nckd_personnum");
             //是否含酒水
             boolean isHJS = entry.getBoolean("nckd_checkboxfield");
-            //酒水名称
-            String beveragesName = entry.getString("nckd_beveragesname");
-            //酒水数量
-            int beveragesNum = entry.getInt("nckd_beveragesnum");
-            //单价
-            BigDecimal price = entry.getBigDecimal("nckd_beveragesamount");
-            //是否在单位领用
-            boolean isUnit = entry.getBoolean("nckd_isunit");
             //实际费用总额
             BigDecimal totalAmount = entry.getBigDecimal("nckd_totalamount");
             //实际人均费用
@@ -314,10 +318,6 @@ public class GzwSyncBillUtils {
                 data.put("entertain_time", DateUtil.date2str(receptionTime, DateUtil.DATE_FORMAT_YYYY_MM_DD));
                 data.put("entertain_addr", location);
                 data.put("has_drinks", isHJS ? "1" : "0");
-                data.put("drinks_name", beveragesName);
-                data.put("drinks_num", beveragesNum);
-                data.put("price", price);
-                data.put("use_from_org", isUnit ? "1" : "0");
             } else {
                 //日常用餐
                 data.put("start_time", DateUtil.date2str(startDate, DateUtil.DATE_FORMAT_YYYY_MM_DD));
@@ -333,6 +333,57 @@ public class GzwSyncBillUtils {
         return dataList;
     }
 
+    /**
+     * @param entertainment 业务招待清单
+     * @param type          用餐类型 1宴请 2日常用餐
+     * @return 将单据招待明细.用餐安排数据转换成XML动态参数内容
+     */
+    public static List<LinkedHashMap<String, Object>> getEntertainmentYcBeveragesData(DynamicObject entertainment) {
+        String id = entertainment.getString(BaseFieldConst.ID);
+        //招待时间
+        Date receptionTime = entertainment.getDate("nckd_reception_time");
+        //招待明细
+        DynamicObjectCollection entryEntity = entertainment.getDynamicObjectCollection("nckd_entryentity");
+        //过滤招待项目=用餐安排、用餐类型 、 是否含酒水
+        List<DynamicObject> entryList = entryEntity.stream()
+                .filter(it -> it.getString("nckd_program").equals("1")
+                        && it.getString("nckd_mealtype").equals("1")
+                        && it.getBoolean("nckd_checkboxfield")
+                )
+                .collect(Collectors.toList());
+
+        List<LinkedHashMap<String, Object>> dataList = new ArrayList<>();
+        for (DynamicObject entry : entryList) {
+            String entryId = entry.getString(BaseFieldConst.ID);
+
+            //酒水名称
+            String beveragesName = entry.getString("nckd_beveragesname");
+            //酒水数量
+            int beveragesNum = entry.getInt("nckd_beveragesnum");
+            //酒水类型
+            String beveragesType = entry.getString("nckd_combofield2");
+            //酒水容量(ml)
+            int beveragesMl = entry.getInt("nckd_integerfield1");
+            //单价
+            BigDecimal price = entry.getBigDecimal("nckd_beveragesamount");
+            //是否在单位领用
+            boolean isUnit = entry.getBoolean("nckd_isunit");
+
+            LinkedHashMap<String, Object> data = new LinkedHashMap<>();
+            data.put("uuid", entryId);
+            data.put("entertain_uuid", entryId);
+            data.put("drinks_name", beveragesName);
+            data.put("drinks_type", beveragesType);
+            data.put("capacity", beveragesMl);
+            data.put("drinks_num", beveragesNum);
+            data.put("price", price);
+            data.put("use_from_org", isUnit ? "1" : "0");
+
+            dataList.add(data);
+        }
+        return dataList;
+    }
+
     /**
      * @param entertainment 业务招待清单
      * @return 将单据招待明细.住宿安排数据转换成XML动态参数内容

+ 5 - 0
nckd-fi/src/main/java/nckd/fi/er/opplugin/EntertainmentPushOpPlugin.java

@@ -25,6 +25,8 @@ public class EntertainmentPushOpPlugin extends GzwPushOpPlugin {
         configs.add(new ResCodeConfig(GzwSyncBillUtils.BIZ_ATTEND, GzwCommonUtils.getResMap(GzwSyncBillUtils.BIZ_ATTEND, resParam)));
         // 业务招待清单-用餐安排-宴请
         configs.add(new ResCodeConfig(GzwSyncBillUtils.BIZ_ENTERTAIN, GzwCommonUtils.getResMap(GzwSyncBillUtils.BIZ_ENTERTAIN, resParam)));
+        //业务招待清单-用餐安排-宴请用餐-酒水明细
+        configs.add(new ResCodeConfig(GzwSyncBillUtils.BIZ_DRINK_DETAIL, GzwCommonUtils.getResMap(GzwSyncBillUtils.BIZ_DRINK_DETAIL, resParam)));
         // 业务招待清单-用餐安排- 日常用餐
         configs.add(new ResCodeConfig(GzwSyncBillUtils.BIZ_MEAL, GzwCommonUtils.getResMap(GzwSyncBillUtils.BIZ_MEAL, resParam)));
         // 业务招待清单-住宿安排
@@ -50,6 +52,9 @@ public class EntertainmentPushOpPlugin extends GzwPushOpPlugin {
             case GzwSyncBillUtils.BIZ_ENTERTAIN:
                 // 业务招待清单-用餐安排-宴请
                 return GzwSyncBillUtils.getEntertainmentYcData(bill, "1");
+            case GzwSyncBillUtils.BIZ_DRINK_DETAIL:
+                // 业务招待清单-用餐安排-宴请用餐-酒水明细
+                return GzwSyncBillUtils.getEntertainmentYcBeveragesData(bill);
             case GzwSyncBillUtils.BIZ_MEAL:
                 // 业务招待清单-用餐安排- 日常用餐
                 return GzwSyncBillUtils.getEntertainmentYcData(bill, "2");