|
|
@@ -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动态参数内容
|