| | |
| | | |
| | | private String remark; |
| | | |
| | | private String importFileName; |
| | | |
| | | public String getImportFileName() { |
| | | return importFileName; |
| | | } |
| | | |
| | | public void setImportFileName(String importFileName) { |
| | | this.importFileName = importFileName; |
| | | } |
| | | |
| | | public String getFeeTypeCd() { |
| | | return feeTypeCd; |
| | |
| | | <!-- 查询费用导入信息 add by wuxw 2018-07-03 --> |
| | | <select id="getImportFeeInfo" parameterType="Map" resultType="Map"> |
| | | select t.fee_type_cd,t.fee_type_cd feeTypeCd,t.secondary_fee_type_cd,t.secondary_fee_type_cd secondaryFeeTypeCd,s.secondary_fee_type_cd_name,s.secondary_fee_type_cd_name secondaryFeeTypeCdName,t.status_cd,t.status_cd statusCd,t.import_fee_id,t.import_fee_id |
| | | importFeeId,t.community_id,t.community_id communityId,t.create_time createTime,d.name feeTypeCdName,remark |
| | | importFeeId,t.community_id,t.community_id communityId,t.create_time createTime,d.name feeTypeCdName,remark, t.import_file_name, t.import_file_name importFileName |
| | | from import_fee t |
| | | left join secondary_fee_type_cd_tb s on s.secondary_fee_type_cd = t.secondary_fee_type_cd |
| | | left join t_dict d on t.fee_type_cd = d.status_cd and d.table_name = 'pay_fee_config' and d.table_columns = 'fee_type_cd' |
| | |
| | | planned_announcement_start, planned_announcement_end, published_announcement_start, |
| | | published_announcement_end, quota, owners_committee_resolution, owners_committee_consultation, |
| | | withdrawal_encountered_problem, shortage_or_arrears, road_name, lane, door, room, |
| | | door_room_number, owner_address, start_date, end_date, management_fee_ratio, |
| | | first_planned_payment_amount, planned_payment_date, category, reimburser, |
| | | actual_payment_amount, actual_payment_date, payee_name, id_card_number, |
| | | bank_name, bank_account, remarks, acceptance_date, audit_date, |
| | | print_total, arrival_total, fund_arrival_rate, fund_shortage_amount, |
| | | management_fee, payable_amountA, payable_amountB, payable_amountC, |
| | | planned_pay_total, actual_pay_total, unpaid_total, advance_amount, |
| | | unpaid_by_arrival, pending_payA, pending_payB, pending_payC |
| | | door_room_number, owner_address, start_date, end_date |
| | | ) VALUES ( |
| | | #{id}, #{auxiliaryColumn}, #{flowNumber}, #{serialNumber}, #{projectCode}, #{projectName}, |
| | | #{year}, #{month}, #{day}, #{date}, #{projectContent}, #{managementOfficeAmount}, |
| | |
| | | #{plannedAnnouncementStart}, #{plannedAnnouncementEnd}, #{publishedAnnouncementStart}, |
| | | #{publishedAnnouncementEnd}, #{quota}, #{ownersCommitteeResolution}, #{ownersCommitteeConsultation}, |
| | | #{withdrawalEncounteredProblem}, #{shortageOrArrears}, #{roadName}, #{lane}, #{door}, #{room}, |
| | | #{doorRoomNumber}, #{ownerAddress}, #{startDate}, #{endDate}, #{managementFeeRatio}, |
| | | #{firstPlannedPaymentAmount}, #{plannedPaymentDate}, #{category}, #{reimburser}, |
| | | #{actualPaymentAmount}, #{actualPaymentDate}, #{payeeName}, #{idCardNumber}, |
| | | #{bankName}, #{bankAccount}, #{remarks}, #{acceptanceDate}, #{auditDate}, |
| | | #{printTotal}, #{arrivalTotal}, #{fundArrivalRate}, #{fundShortageAmount}, |
| | | #{managementFee}, #{payableAmountA}, #{payableAmountB}, #{payableAmountC}, |
| | | #{plannedPayTotal}, #{actualPayTotal}, #{unpaidTotal}, #{advanceAmount}, |
| | | #{unpaidByArrival}, #{pendingPayA}, #{pendingPayB}, #{pendingPayC} |
| | | ) |
| | | #{doorRoomNumber}, #{ownerAddress}, #{startDate}, #{endDate} |
| | | ); |
| | | </insert> |
| | | |
| | | <!-- 批量新增SQL ID:batchInsertMaintenancePayment --> |
| | |
| | | planned_announcement_start, planned_announcement_end, published_announcement_start, |
| | | published_announcement_end, quota, owners_committee_resolution, owners_committee_consultation, |
| | | withdrawal_encountered_problem, shortage_or_arrears, road_name, lane, door, room, |
| | | door_room_number, owner_address, start_date, end_date, management_fee_ratio, |
| | | door_room_number, owner_address, start_date, end_date, |
| | | first_planned_payment_amount, planned_payment_date, category, reimburser, |
| | | actual_payment_amount, actual_payment_date, payee_name, id_card_number, |
| | | bank_name, bank_account, remarks, acceptance_date, audit_date, |
| | | print_total, arrival_total, fund_arrival_rate, fund_shortage_amount, |
| | | management_fee, payable_amountA, payable_amountB, payable_amountC, |
| | | planned_pay_total, actual_pay_total, unpaid_total, advance_amount, |
| | | unpaid_by_arrival, pending_payA, pending_payB, pending_payC |
| | | bank_name, bank_account, remarks, acceptance_date, audit_date |
| | | ) VALUES |
| | | <foreach collection="list" item="po" separator=","> |
| | | ( |
| | |
| | | #{po.plannedAnnouncementStart}, #{po.plannedAnnouncementEnd}, #{po.publishedAnnouncementStart}, |
| | | #{po.publishedAnnouncementEnd}, #{po.quota}, #{po.ownersCommitteeResolution}, #{po.ownersCommitteeConsultation}, |
| | | #{po.withdrawalEncounteredProblem}, #{po.shortageOrArrears}, #{po.roadName}, #{po.lane}, #{po.door}, #{po.room}, |
| | | #{po.doorRoomNumber}, #{po.ownerAddress}, #{po.startDate}, #{po.endDate}, #{po.managementFeeRatio}, |
| | | #{po.doorRoomNumber}, #{po.ownerAddress}, #{po.startDate}, #{po.endDate}, |
| | | #{po.firstPlannedPaymentAmount}, #{po.plannedPaymentDate}, #{po.category}, #{po.reimburser}, |
| | | #{po.actualPaymentAmount}, #{po.actualPaymentDate}, #{po.payeeName}, #{po.idCardNumber}, |
| | | #{po.bankName}, #{po.bankAccount}, #{po.remarks}, #{po.acceptanceDate}, #{po.auditDate}, |
| | | #{po.printTotal}, #{po.arrivalTotal}, #{po.fundArrivalRate}, #{po.fundShortageAmount}, |
| | | #{po.managementFee}, #{po.payableAmountA}, #{po.payableAmountB}, #{po.payableAmountC}, |
| | | #{po.plannedPayTotal}, #{po.actualPayTotal}, #{po.unpaidTotal}, #{po.advanceAmount}, |
| | | #{po.unpaidByArrival}, #{po.pendingPayA}, #{po.pendingPayB}, #{po.pendingPayC} |
| | | #{po.bankName}, #{po.bankAccount}, #{po.remarks}, #{po.acceptanceDate}, #{po.auditDate} |
| | | ) |
| | | </foreach> |
| | | </insert> |
| | |
| | | private JSONArray covertToData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) { |
| | | JSONArray datas = new JSONArray(); |
| | | |
| | | // 空列表直接返回空JSONArray |
| | | if (assetImportLogDetailDtos == null || assetImportLogDetailDtos.size() < 1) { |
| | | return datas; |
| | | } |
| | | |
| | | JSONObject data = null; |
| | | Object contentObj = null; |
| | | |
| | | for (AssetImportLogDetailDto assetImportLogDetailDto : assetImportLogDetailDtos) { |
| | | // 将DTO转换为JSONObject |
| | | data = BeanConvertUtil.beanCovertJson(assetImportLogDetailDto); |
| | | if (!StringUtil.isEmpty(assetImportLogDetailDto.getContent())) { |
| | | data.putAll(JSONObject.parseObject(assetImportLogDetailDto.getContent())); |
| | | contentObj = assetImportLogDetailDto.getContent(); |
| | | |
| | | // 处理content字段(真实值为String[],包含null、字符串、数字、布尔值) |
| | | if (contentObj != null && contentObj instanceof String[]) { |
| | | String[] contentArray = (String[]) contentObj; |
| | | // 转换String[]为JSONArray,保留原有数据类型(null、字符串等) |
| | | JSONArray contentJsonArray = new JSONArray(); |
| | | for (Object item : contentArray) { // 用Object接收,兼容数组内的null和各种类型 |
| | | contentJsonArray.add(item); |
| | | } |
| | | // 将数组存入JSONObject,key为"content" |
| | | data.put("content", contentJsonArray); |
| | | } else if (contentObj != null && contentObj instanceof String) { |
| | | // 兼容可能的字符串格式(保留原有逻辑) |
| | | String contentStr = (String) contentObj; |
| | | if (!StringUtil.isEmpty(contentStr)) { |
| | | try { |
| | | // 若字符串是JSON对象/数组,分别解析 |
| | | if (contentStr.startsWith("{")) { |
| | | data.putAll(JSONObject.parseObject(contentStr)); |
| | | } else if (contentStr.startsWith("[")) { |
| | | data.put("content", JSONArray.parseArray(contentStr)); |
| | | } else { |
| | | data.put("content", contentStr); |
| | | } |
| | | } catch (Exception e) { |
| | | // 非JSON格式字符串直接存入 |
| | | data.put("content", contentStr); |
| | | } |
| | | } |
| | | } |
| | | |
| | | datas.add(data); |
| | | } |
| | | |
| | |
| | | Assert.hasKeyAndValue(reqJson, "cityCode", "请求报文中未包含cityCode"); |
| | | Assert.hasKeyAndValue(reqJson, "payFeeMonth", "请求报文中未包含payFeeMonth"); |
| | | Assert.hasKeyAndValue(reqJson, "feePrice", "请求报文中未包含feePrice"); |
| | | Assert.hasKeyAndValue(reqJson, "takeTime", "请求报文中未包含接管日期"); |
| | | //属性校验 |
| | | Assert.judgeAttrValue(reqJson); |
| | | |
| | |
| | | import java.math.BigDecimal; |
| | | import java.text.ParseException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Calendar; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * 签报收支款数据导入适配器(适配"Z三、模版签报收支款情况-V5-20251127.xlsx"的"荣顺苑签报单"sheet) |
| | | * 前端请求需传入:param.append('importAdapt', "importReportMainV2QueueData") |
| | |
| | | private MaintenancePaymentPo buildMaintenancePaymentPo(JSONArray cellArray) throws ParseException { |
| | | MaintenancePaymentPo po = new MaintenancePaymentPo(); |
| | | // 基础字段(直接映射Excel单元格) |
| | | po.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_maintenanceId)); // 主键ID |
| | | long longId = UUID.randomUUID().getMostSignificantBits() & Long.MAX_VALUE; // 避免负数 |
| | | po.setId(longId+""); // 主键ID |
| | | po.setAuxiliaryColumn(getCellValue(cellArray, 0)); // 第1列:辅助列 |
| | | po.setFlowNumber(getCellValue(cellArray, 1)); // 第2列:流转编号 |
| | | po.setSerialNumber(parseInteger(getCellValue(cellArray, 2))); // 第3列:序号 |
| | |
| | | int arrivalDateCol, int arrivalAmountCol, |
| | | int withdrawerCol, int shortageCol) throws ParseException { |
| | | MpPaymentRecordPo po = new MpPaymentRecordPo(); |
| | | po.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_paymentRecordId)); |
| | | |
| | | long longId = UUID.randomUUID().getMostSignificantBits() & Long.MAX_VALUE; // 避免负数 |
| | | po.setId(longId+""); |
| | | po.setMpId(flowNumber + "_PRINT" + printTimes); // mp_id = 流转编号_打印次数(确保唯一) |
| | | po.setFirstPrintDate(parseDate(getCellValue(cellArray, dateCol))); |
| | | po.setResolutionNumber(getCellValue(cellArray, resolutionCol)); |
| | |
| | | */ |
| | | private MpFifthPaymentRecordPo buildMpFifthPaymentRecordPo(JSONArray cellArray, String flowNumber) throws ParseException { |
| | | MpFifthPaymentRecordPo po = new MpFifthPaymentRecordPo(); |
| | | po.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_fifthPaymentId)); |
| | | long longId = UUID.randomUUID().getMostSignificantBits() & Long.MAX_VALUE; // 避免负数 |
| | | po.setId(longId+""); |
| | | po.setMpId(flowNumber + "_FIFTH"); // mp_id = 流转编号_FIFTH |
| | | // 第五次拟付实付数据(第106-111列) |
| | | po.setFifthPlannedPaymentAmount(parseBigDecimal(getCellValue(cellArray, 137))); // 第五次拟付金额 |
| | |
| | | database: 0 |
| | | host: localhost |
| | | port: 6379 |
| | | password: redis2020 |
| | | password: |
| | | pool: |
| | | max-active: 300 |
| | | max-wait: 3000 |
| | |
| | | spring: |
| | | profiles: |
| | | active: dev |
| | | active: debug |
| | | |
| | | import: |
| | | line: |