|
|
@@ -5,9 +5,8 @@ import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
import nckd.base.common.constant.BaseFieldConst;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
-import java.util.Date;
|
|
|
-import java.util.LinkedHashMap;
|
|
|
-import java.util.Map;
|
|
|
+import java.util.*;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @description:国资委_单据数据转换工具类
|
|
|
@@ -86,6 +85,10 @@ public class GzwSyncBillUtils {
|
|
|
return dynamicData;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * @param dailyApply 业务招待申请单
|
|
|
+ * @return 将单据数据转换成XML动态参数内容
|
|
|
+ */
|
|
|
public static LinkedHashMap<String, Object> getDailyApplyData(DynamicObject dailyApply) {
|
|
|
//费用承担公司
|
|
|
DynamicObject costCompany = dailyApply.getDynamicObject("costcompany");
|
|
|
@@ -138,27 +141,282 @@ public class GzwSyncBillUtils {
|
|
|
|
|
|
|
|
|
LinkedHashMap<String, Object> dynamicData = new LinkedHashMap<>();
|
|
|
- dynamicData.put("uuid",dailyApply.getString(BaseFieldConst.ID));
|
|
|
- dynamicData.put("enterprise_name",orgName);
|
|
|
- dynamicData.put("credit_code",orgCode);
|
|
|
- dynamicData.put("handler",applier.getString(BaseFieldConst.NAME));
|
|
|
- dynamicData.put("dept",costDept.getString(BaseFieldConst.NAME));
|
|
|
- dynamicData.put("apply_time",DateUtil.date2str(bizDate,DateUtil.DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS));
|
|
|
- dynamicData.put("reception_type",treatType);
|
|
|
- dynamicData.put("reception_reason",description);
|
|
|
- dynamicData.put("visit_organization",visitingUnit);
|
|
|
- dynamicData.put("visit_contact",visitingContact);
|
|
|
- dynamicData.put("visit_contact_phone",visitingPhone);
|
|
|
- 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);
|
|
|
- dynamicData.put("visitor_main_post",chiefGuestTitle);
|
|
|
- dynamicData.put("entertain_per_standard",yqPerAvgStd);
|
|
|
- dynamicData.put("meal_per_standard",rcycPerAvgStd);
|
|
|
- dynamicData.put("stay_per_standard",zsPerAvgStd);
|
|
|
- dynamicData.put("souvenir_per_standard",jnpPerAvgStd);
|
|
|
- dynamicData.put("use_cars",ycQty);
|
|
|
+ dynamicData.put("uuid", dailyApply.getString(BaseFieldConst.ID));
|
|
|
+ dynamicData.put("enterprise_name", orgName);
|
|
|
+ dynamicData.put("credit_code", orgCode);
|
|
|
+ dynamicData.put("handler", applier.getString(BaseFieldConst.NAME));
|
|
|
+ dynamicData.put("dept", costDept.getString(BaseFieldConst.NAME));
|
|
|
+ dynamicData.put("apply_time", DateUtil.date2str(bizDate, DateUtil.DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS));
|
|
|
+ dynamicData.put("reception_type", treatType);
|
|
|
+ dynamicData.put("reception_reason", description);
|
|
|
+ dynamicData.put("visit_organization", visitingUnit);
|
|
|
+ dynamicData.put("visit_contact", visitingContact);
|
|
|
+ dynamicData.put("visit_contact_phone", visitingPhone);
|
|
|
+ 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);
|
|
|
+ dynamicData.put("visitor_main_post", chiefGuestTitle);
|
|
|
+ dynamicData.put("entertain_per_standard", yqPerAvgStd);
|
|
|
+ dynamicData.put("meal_per_standard", rcycPerAvgStd);
|
|
|
+ dynamicData.put("stay_per_standard", zsPerAvgStd);
|
|
|
+ dynamicData.put("souvenir_per_standard", jnpPerAvgStd);
|
|
|
+ dynamicData.put("use_cars", ycQty);
|
|
|
|
|
|
return dynamicData;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param entertainment 业务招待清单
|
|
|
+ * @return 将单据表头数据转换成XML动态参数内容
|
|
|
+ */
|
|
|
+ public static LinkedHashMap<String, Object> getEntertainmentData(DynamicObject entertainment) {
|
|
|
+ //业务招待清单uuid
|
|
|
+ String id = entertainment.getString(BaseFieldConst.ID);
|
|
|
+ //申请单据标识
|
|
|
+ String appId = entertainment.getString("nckd_appid");
|
|
|
+ //企业名称
|
|
|
+ DynamicObject company = entertainment.getDynamicObject("costcompany");
|
|
|
+ String companyName = company.getString(BaseFieldConst.NAME);
|
|
|
+ //统一社会信用代码
|
|
|
+ String orgCode = company.getString("uniformsocialcreditcode");
|
|
|
+ //填报时间
|
|
|
+ Date createTime = entertainment.getDate(BaseFieldConst.CREATE_TIME);
|
|
|
+ //经办人
|
|
|
+ DynamicObject applier = entertainment.getDynamicObject("applier");
|
|
|
+ //经办部门
|
|
|
+ DynamicObject dept = entertainment.getDynamicObject("costdept");
|
|
|
+ //招待事由
|
|
|
+ String description = entertainment.getString("description");
|
|
|
+ //来访单位
|
|
|
+ String visitingUnit = entertainment.getString("nckd_visiting_org");
|
|
|
+ //来访联系人
|
|
|
+ String contact = entertainment.getString("nckd_contact");
|
|
|
+ //来访联系电话
|
|
|
+ String contactPhone = entertainment.getString("nckd_contact_number");
|
|
|
+ //招待类型
|
|
|
+ String receptionType = entertainment.getString("nckd_reception_type");
|
|
|
+ //招待时间
|
|
|
+ Date receptionTime = entertainment.getDate("nckd_reception_time");
|
|
|
+ //实际招待人数
|
|
|
+ int actualQty = entertainment.getInt("nckd_actual_number");
|
|
|
+ //招待主宾姓名
|
|
|
+ String guestHonor = entertainment.getString("nckd_guesthonor");
|
|
|
+ //来访主宾职务
|
|
|
+ String position = entertainment.getString("nckd_position");
|
|
|
+ //车辆安排数量
|
|
|
+ int vchQty = entertainment.getInt("nckd_integerfield");
|
|
|
+ //实际费用合计
|
|
|
+ BigDecimal amount = entertainment.getBigDecimal("nckd_amountfield");
|
|
|
+
|
|
|
+ LinkedHashMap<String, Object> dynamicData = new LinkedHashMap<>();
|
|
|
+
|
|
|
+ dynamicData.put("uuid", id);
|
|
|
+ dynamicData.put("apply_uuid", appId);
|
|
|
+ dynamicData.put("enterprise_name", companyName);
|
|
|
+ dynamicData.put("credit_code", orgCode);
|
|
|
+ dynamicData.put("fill_time", DateUtil.date2str(createTime, DateUtil.DATE_TIME_FORMAT_YYYY_MM_DD_HH_MI_SS));
|
|
|
+ dynamicData.put("handler", applier.getString(BaseFieldConst.NAME));
|
|
|
+ dynamicData.put("dept", dept.getString(BaseFieldConst.NAME));
|
|
|
+ dynamicData.put("reception_type", receptionType);
|
|
|
+ dynamicData.put("reception_reason", description);
|
|
|
+ dynamicData.put("visit_organization", visitingUnit);
|
|
|
+ dynamicData.put("visit_contact", contact);
|
|
|
+ dynamicData.put("visit_contact_phone", contactPhone);
|
|
|
+ dynamicData.put("reception_time", DateUtil.date2str(receptionTime, DateUtil.DATE_FORMAT_YYYY_MM_DD));
|
|
|
+ dynamicData.put("reception_num", actualQty);
|
|
|
+ dynamicData.put("visitor_main_name", guestHonor);
|
|
|
+ dynamicData.put("visitor_main_post", position);
|
|
|
+ dynamicData.put("use_cars", vchQty);
|
|
|
+ dynamicData.put("cost_total", amount);
|
|
|
+
|
|
|
+ return dynamicData;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param entertainment 业务招待清单
|
|
|
+ * @return 将单据出席人员数据转换成XML动态参数内容
|
|
|
+ */
|
|
|
+ public static List<LinkedHashMap<String, Object>> getEntertainmentAttendeesData(DynamicObject entertainment) {
|
|
|
+ String id = entertainment.getString(BaseFieldConst.ID);
|
|
|
+ //出席人员明细
|
|
|
+ DynamicObjectCollection entryEntity = entertainment.getDynamicObjectCollection("nckd_attendeesentity");
|
|
|
+ List<LinkedHashMap<String, Object>> dataList = new ArrayList<>();
|
|
|
+ for (DynamicObject entry : entryEntity) {
|
|
|
+ String entryId = entry.getString(BaseFieldConst.ID);
|
|
|
+ String name = entry.getString("nckd_attendeesname");
|
|
|
+ String position = entry.getString("nckd_attendeesposition");
|
|
|
+
|
|
|
+ LinkedHashMap<String, Object> data = new LinkedHashMap<>();
|
|
|
+ data.put("uuid", entryId);
|
|
|
+ data.put("reception_uuid", id);
|
|
|
+ data.put("attendance", name);
|
|
|
+ data.put("attendance_post", position);
|
|
|
+ data.put("sort", "");
|
|
|
+ dataList.add(data);
|
|
|
+ }
|
|
|
+ return dataList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param entertainment 业务招待清单
|
|
|
+ * @param type 用餐类型 1宴请 2日常用餐
|
|
|
+ * @return 将单据招待明细.用餐安排数据转换成XML动态参数内容
|
|
|
+ */
|
|
|
+ public static List<LinkedHashMap<String, Object>> getEntertainmentYcData(DynamicObject entertainment, String type) {
|
|
|
+ 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(type))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<LinkedHashMap<String, Object>> dataList = new ArrayList<>();
|
|
|
+ for (DynamicObject entry : entryList) {
|
|
|
+ String entryId = entry.getString(BaseFieldConst.ID);
|
|
|
+ //招待地点
|
|
|
+ String location = entry.getString("nckd_location");
|
|
|
+ //宴请人数
|
|
|
+ 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");
|
|
|
+ //实际人均费用
|
|
|
+ BigDecimal aveAmount = entry.getBigDecimal("nckd_aveamount");
|
|
|
+ //开始时间
|
|
|
+ Date startDate = entry.getDate("nckd_startdate");
|
|
|
+ //结束时间
|
|
|
+ Date endDate = entry.getDate("nckd_enddate");
|
|
|
+ //天数
|
|
|
+ int day = DateUtil.daysBetweenIfBlankReturnZero(startDate, endDate)+1;
|
|
|
+ //是否在食堂用餐
|
|
|
+ boolean isCafeteria = entry.getBoolean("nckd_iscafeteria");
|
|
|
+
|
|
|
+ LinkedHashMap<String, Object> data = new LinkedHashMap<>();
|
|
|
+ data.put("uuid", entryId);
|
|
|
+ data.put("reception_uuid", id);
|
|
|
+ //宴请
|
|
|
+ if (type.equals("1")) {
|
|
|
+ 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));
|
|
|
+ data.put("end_time", DateUtil.date2str(endDate, DateUtil.DATE_FORMAT_YYYY_MM_DD));
|
|
|
+ data.put("days", day);
|
|
|
+ data.put("meal_in_canteen", isCafeteria ? "1" : "0");
|
|
|
+ }
|
|
|
+ data.put("banquet_count", personNum);
|
|
|
+ data.put("cost_total", totalAmount);
|
|
|
+ data.put("per_cost", aveAmount);
|
|
|
+ dataList.add(data);
|
|
|
+ }
|
|
|
+ return dataList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param entertainment 业务招待清单
|
|
|
+ * @return 将单据招待明细.住宿安排数据转换成XML动态参数内容
|
|
|
+ */
|
|
|
+ public static List<LinkedHashMap<String, Object>> getEntertainmentZsData(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("2"))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<LinkedHashMap<String, Object>> dataList = new ArrayList<>();
|
|
|
+ for (DynamicObject entry : entryList) {
|
|
|
+ String entryId = entry.getString(BaseFieldConst.ID);
|
|
|
+
|
|
|
+ //招待地点
|
|
|
+ String location = entry.getString("nckd_location");
|
|
|
+ //宴请人数
|
|
|
+ int personNum = entry.getInt("nckd_personnum");
|
|
|
+ //实际费用总额
|
|
|
+ BigDecimal totalAmount = entry.getBigDecimal("nckd_totalamount");
|
|
|
+ //实际人均费用
|
|
|
+ BigDecimal aveAmount = entry.getBigDecimal("nckd_aveamount");
|
|
|
+ //开始时间
|
|
|
+ Date startDate = entry.getDate("nckd_startdate");
|
|
|
+ //结束时间
|
|
|
+ Date endDate = entry.getDate("nckd_enddate");
|
|
|
+ //天数
|
|
|
+ int day = DateUtil.daysBetweenIfBlankReturnZero(startDate, endDate)+1;
|
|
|
+
|
|
|
+ LinkedHashMap<String, Object> data = new LinkedHashMap<>();
|
|
|
+ data.put("uuid", entryId);
|
|
|
+ data.put("reception_uuid", id);
|
|
|
+ data.put("stay_time", DateUtil.date2str(receptionTime, DateUtil.DATE_FORMAT_YYYY_MM_DD));
|
|
|
+ data.put("stay_addr", location);
|
|
|
+ data.put("stay_num", personNum);
|
|
|
+ data.put("stay_day", day);
|
|
|
+ data.put("cost_total", totalAmount);
|
|
|
+ data.put("per_cost", aveAmount);
|
|
|
+ dataList.add(data);
|
|
|
+ }
|
|
|
+ return dataList;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @param entertainment 业务招待清单
|
|
|
+ * @return 将单据招待明细.纪念品数据转换成XML动态参数内容
|
|
|
+ */
|
|
|
+ public static List<LinkedHashMap<String, Object>> getEntertainmentJnpData(DynamicObject entertainment) {
|
|
|
+ String id = entertainment.getString(BaseFieldConst.ID);
|
|
|
+ //招待明细
|
|
|
+ DynamicObjectCollection entryEntity = entertainment.getDynamicObjectCollection("nckd_entryentity");
|
|
|
+ //过滤招待项目=纪念品
|
|
|
+ List<DynamicObject> entryList = entryEntity.stream()
|
|
|
+ .filter(it -> it.getString("nckd_program").equals("4"))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ List<LinkedHashMap<String, Object>> dataList = new ArrayList<>();
|
|
|
+ for (DynamicObject entry : entryList) {
|
|
|
+ String entryId = entry.getString(BaseFieldConst.ID);
|
|
|
+ //纪念品名称
|
|
|
+ String name = entry.getString("nckd_souvenirname");
|
|
|
+ //数量
|
|
|
+ int qty = entry.getInt("nckd_souvenirnum");
|
|
|
+ //单价
|
|
|
+ BigDecimal price = entry.getBigDecimal("nckd_souveniramount");
|
|
|
+ //实际费用总额
|
|
|
+ BigDecimal totalAmount = entry.getBigDecimal("nckd_totalamount");
|
|
|
+ //实际人均费用
|
|
|
+ BigDecimal aveAmount = entry.getBigDecimal("nckd_aveamount");
|
|
|
+
|
|
|
+
|
|
|
+ LinkedHashMap<String, Object> data = new LinkedHashMap<>();
|
|
|
+ data.put("uuid", entryId);
|
|
|
+ data.put("reception_uuid", id);
|
|
|
+ data.put("souvenir_name", name);
|
|
|
+ data.put("souvenir_num", qty);
|
|
|
+ data.put("price", price);
|
|
|
+ data.put("cost_total", totalAmount);
|
|
|
+ data.put("per_cost", aveAmount);
|
|
|
+ dataList.add(data);
|
|
|
+ }
|
|
|
+ return dataList;
|
|
|
+ }
|
|
|
}
|