java110-bean/src/main/java/com/java110/dto/importData/Vtil.java
@@ -1,5 +1,6 @@ package com.java110.dto.importData; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.YearMonth; @@ -8,6 +9,7 @@ import java.time.format.ResolverStyle; import java.time.temporal.TemporalAdjusters; import java.util.Calendar; import java.util.Date; import java.util.Locale; public class Vtil { @@ -84,8 +86,17 @@ } } public static String defaultValueToDate(Object o, String state) { public static BigDecimal defaultNum(Object o) { if (o == null || o.toString().isEmpty()) { return new BigDecimal(0); } try { return o == null ? new BigDecimal(0) : new BigDecimal(o.toString()); }catch (Exception e) { throw new IllegalArgumentException("数值转换错误!:" + o.toString()); } } public static String defaultValueToDate(Object o, String state, Object value) { // 空值直接返回null(原有逻辑) if (o == null || o.toString().isEmpty() || o.toString().equals("0")) { return null; @@ -112,10 +123,192 @@ return lastDay.toString(); } } catch (DateTimeParseException e) { // 不是20xx/01格式,忽略解析异常,执行原有逻辑 try { ymFormatter = DateTimeFormatter.ofPattern("yyyy-M") .withLocale(Locale.CHINA) .withResolverStyle(ResolverStyle.LENIENT); // 宽松解析,兼容各种合法格式 // 先解析为YearMonth(专门处理年月的类,不会缺少日期维度) YearMonth yearMonth = YearMonth.parse(input, ymFormatter); // 根据state参数处理日期 if ("start".equals(state)) { // state为start时返回当月第一天 LocalDate firstDay = yearMonth.atDay(1); return firstDay.toString(); } else if ("end".equals(state)) { // state为end时返回当月最后一天 LocalDate lastDay = yearMonth.atEndOfMonth(); return lastDay.toString(); } } catch (DateTimeParseException e1) { try { ymFormatter = DateTimeFormatter.ofPattern("yyyy.M") .withLocale(Locale.CHINA) .withResolverStyle(ResolverStyle.LENIENT); // 宽松解析,兼容各种合法格式 // 先解析为YearMonth(专门处理年月的类,不会缺少日期维度) YearMonth yearMonth = YearMonth.parse(input, ymFormatter); // 根据state参数处理日期 if ("start".equals(state)) { // state为start时返回当月第一天 LocalDate firstDay = yearMonth.atDay(1); return firstDay.toString(); } else if ("end".equals(state)) { // state为end时返回当月最后一天 LocalDate lastDay = yearMonth.atEndOfMonth(); return lastDay.toString(); } } catch (Exception e3) { try { try { // 尝试将对象转换为数字(兼容Excel日期序列号,如44747) double excelDateNum = Double.parseDouble(o.toString()); // Excel 1900日期系统基准(修正闰日bug,实际基准是1899-12-30) Calendar calendar = Calendar.getInstance(); calendar.set(1899, 11, 30, 0, 0, 0); // 月份从0开始,11代表12月 calendar.set(Calendar.MILLISECOND, 0); // 计算对应的实际日期 calendar.add(Calendar.DAY_OF_MONTH, (int) excelDateNum); // 格式化为yyyy-MM-dd的日期字符串 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(calendar.getTime()); } catch (NumberFormatException e6) { // 非数字类型,执行原有逻辑返回toString() return defaultValue(value, null); } } catch (Exception e2) { } } } } // 非目标格式或state不匹配时,返回原始字符串(原有逻辑) return input; return defaultValue(value, null); } public static String defaultValueToDate(Object o, String state) { return defaultValueToDate(o, state, o); } /** * 处理数字字符串,按指定小数位数截取,特殊值返回默认值 * @param count 待处理的数字字符串 * @param i 保留的小数位数 * @param value 默认返回值(当count为空/为null/为0时) * @return 处理后的字符串 */ public static String processCount(String count, Integer i, String value) { // 1. 处理count为空、null或"0"的情况,直接返回默认值value if (count == null || count.trim().isEmpty() || "0".equals(count.trim())) { return value; } // 2. 处理保留小数位数为null或负数的边界情况(默认保留0位小数) int keepDecimalPlaces = (i == null || i < 0) ? 0 : i; // 3. 分割整数部分和小数部分 String[] parts = count.split("\\."); String integerPart = parts[0]; String decimalPart = parts.length > 1 ? parts[1] : ""; // 4. 截取小数部分到指定长度(不足则补0,超过则截断) StringBuilder resultBuilder = new StringBuilder(integerPart); if (keepDecimalPlaces > 0) { resultBuilder.append("."); // 截取小数部分,长度不超过keepDecimalPlaces String truncatedDecimal = decimalPart.length() >= keepDecimalPlaces ? decimalPart.substring(0, keepDecimalPlaces) : String.format("%-" + keepDecimalPlaces + "s", decimalPart).replace(' ', '0'); resultBuilder.append(truncatedDecimal); } return resultBuilder.toString(); } /** * 增强版日期处理工具方法 * @param date 原始日期对象(可为null或无效对象) * @param test 标识:start-当月第一天;end-当月最后一天;空/null-原日期 * @param format 目标日期格式(如yyyy-MM-dd HH:mm:ss) * @param timeText 时分秒控制:start-00:00:00;end-23:59:59(逻辑同test) * @param configDate date异常时返回的兜底值 * @return 处理后的日期字符串(异常时返回configDate) */ public static String processDateEnhanced(Date date, String test, String format, String timeText, String configDate) { // 1. 优先处理date为空/异常的情况,直接返回兜底值configDate if (date == null) { return configDate; } // 2. 校验格式参数,若格式为空/无效,也返回兜底值 if (format == null || format.trim().isEmpty()) { return configDate; } Calendar calendar = null; try { // 3. 尝试初始化Calendar并设置日期,捕获解析/转换异常 calendar = Calendar.getInstance(); calendar.setTime(date); } catch (Exception e) { // date无法解析(如非标准日期对象),返回兜底值 return configDate; } // 4. 统一处理test和timeText的大小写,避免匹配问题 String testNormalized = (test == null) ? "" : test.trim().toLowerCase(); String timeTextNormalized = (timeText == null) ? "" : timeText.trim().toLowerCase(); // 5. 调整日期(start/end) if ("start".equals(testNormalized)) { // start:当月第一天 calendar.set(Calendar.DAY_OF_MONTH, 1); } else if ("end".equals(testNormalized)) { // end:当月最后一天(自动适配大小月/2月) calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); } // test为空/其他值:不调整日期 // 6. 调整时分秒(基于timeText) if ("start".equals(timeTextNormalized)) { // start:00:00:00.000 calendar.set(Calendar.HOUR_OF_DAY, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); } else if ("end".equals(timeTextNormalized)) { // end:23:59:59.999 calendar.set(Calendar.HOUR_OF_DAY, 23); calendar.set(Calendar.MINUTE, 59); calendar.set(Calendar.SECOND, 59); calendar.set(Calendar.MILLISECOND, 999); } // timeText为空/其他值:不调整时分秒 // 7. 按指定格式格式化日期并返回 try { SimpleDateFormat sdf = new SimpleDateFormat(format); return sdf.format(calendar.getTime()); } catch (Exception e) { // 格式化失败(如格式字符串非法),返回兜底值 return configDate; } } public static String getMonth(String month) { try { if (month.length() == 1) { month = "0" + month; } } catch (Exception e) { return month; } return month; } } java110-bean/src/main/java/com/java110/dto/owner/OwnerCarDto.java
@@ -48,6 +48,26 @@ private String carTypeName; private String carNum; private String carNumLike; private String carNumLikeRight_; private String unitPricePerMonth; public String getUnitPricePerMonth() { return unitPricePerMonth; } public void setUnitPricePerMonth(String unitPricePerMonth) { this.unitPricePerMonth = unitPricePerMonth; } public String getCarNumLikeRight_() { return carNumLikeRight_; } public void setCarNumLikeRight_(String carNumLikeRight_) { this.carNumLikeRight_ = carNumLikeRight_; } private String memberCarNum; private String memberCarNumLike; private String[] carNums; java110-bean/src/main/java/com/java110/po/car/OwnerCarPo.java
@@ -42,6 +42,53 @@ private String unitPricePerMonth; // 单价(元/月) private String annualReceivableAmount; // 年应收款 private String parkingType; private String roadName; private String floorNum; private String unitNum; private String roomNum; public String getRoadName() { return roadName; } public void setRoadName(String roadName) { this.roadName = roadName; } public String getFloorNum() { return floorNum; } public void setFloorNum(String floorNum) { this.floorNum = floorNum; } public String getUnitNum() { return unitNum; } public void setUnitNum(String unitNum) { this.unitNum = unitNum; } public String getRoomNum() { return roomNum; } public void setRoomNum(String roomNum) { this.roomNum = roomNum; } public String getParkingType() { return parkingType; } public void setParkingType(String parkingType) { this.parkingType = parkingType; } public String getCarId() { return carId; } java110-bean/src/main/java/com/java110/po/fee/FeeAttrPo.java
@@ -19,6 +19,18 @@ private String specCd; private String value; public FeeAttrPo(String feeId, String communityId, String attrId, String specCd, String value) { this.feeId = feeId; this.communityId = communityId; this.attrId = attrId; this.specCd = specCd; this.value = value; } public FeeAttrPo() { } public String getFeeId() { return feeId; } java110-bean/src/main/java/com/java110/po/meter/MeterWaterPo.java
@@ -43,6 +43,7 @@ private String amountDifference; // 比较金额差额 private String autoDeduction; // 自动扣款 private String remark2; // 备注2 private String remark3; // 备注3 private String address; private String writeTime; private String writer; @@ -102,6 +103,14 @@ return payDate; } public String getRemark3() { return remark3; } public void setRemark3(String remark3) { this.remark3 = remark3; } public void setPayDate(String payDate) { this.payDate = payDate; } java110-bean/src/main/java/com/java110/po/meter/PhoneBillFlow.java
@@ -237,6 +237,16 @@ private String feeId; private String remark3; public String getRemark3() { return remark3; } public void setRemark3(String remark3) { this.remark3 = remark3; } public Integer getPage() { return page; } java110-bean/src/main/java/com/java110/po/oweFeeCallable/OweFeeCallablePo.java
@@ -51,7 +51,68 @@ private String endTime; private String createTime; private String receivableAmount; /** * 到账金额 */ private String receivedAmount; /** * 差额原因 */ private String differenceReason; /** * 到账时间 */ private String receiptTime; /** * 收款人 */ private String payee; public String getReceivableAmount() { return receivableAmount; } public void setReceivableAmount(String receivableAmount) { this.receivableAmount = receivableAmount; } public String getReceivedAmount() { return receivedAmount; } public void setReceivedAmount(String receivedAmount) { this.receivedAmount = receivedAmount; } public String getDifferenceReason() { return differenceReason; } public void setDifferenceReason(String differenceReason) { this.differenceReason = differenceReason; } public String getReceiptTime() { return receiptTime; } public void setReceiptTime(String receiptTime) { this.receiptTime = receiptTime; } public String getPayee() { return payee; } public void setPayee(String payee) { this.payee = payee; } public String getRemark() { return remark; java110-db/src/main/resources/mapper/community/RoomServiceDaoImplMapper.xml
@@ -369,7 +369,7 @@ left join building_owner bo on bo.owner_id = borr.owner_id WHERE 1 =1 <if test="communityId !=null and communityId != ''"> AND t.`community_id` = #{communityId} AND t.`community_id` in (#{communityId},'9999') </if> and t.status_cd ='0' <if test="floorId !=null and floorId != ''"> @@ -440,9 +440,6 @@ <foreach collection="states" item="item" open="(" close=")" separator=","> #{item} </foreach> </if> <if test="communityId !=null and communityId != ''"> and t.community_id= #{communityId} </if> <if test="communityIds != null"> and t.community_id in @@ -866,6 +863,9 @@ <if test="roomSubType !=null and roomSubType != ''"> and t.room_sub_type= #{roomSubType} </if> <if test="propertyType !=null and propertyType != ''"> and t.property_type= #{propertyType} </if> <if test="states != null"> and t.state in <foreach collection="states" item="item" open="(" close=")" separator=","> java110-db/src/main/resources/mapper/community/UnitServiceDaoImplMapper.xml
@@ -97,7 +97,7 @@ left join f_floor ff on t.`floor_id` = ff.`floor_id` and ff.status_cd = '0' where 1 =1 <if test="communityId!=null and communityId != ''"> AND ff.community_id = #{communityId} AND ff.community_id in (#{communityId},'9999') </if> <if test="floorId !=null and floorId != ''"> and t.floor_id= #{floorId} java110-db/src/main/resources/mapper/fee/FeeConfigServiceDaoImplMapper.xml
@@ -177,6 +177,9 @@ <if test="secondaryFeeTypeCd !=null and secondaryFeeTypeCd != ''"> and t.secondary_fee_type_cd= #{secondaryFeeTypeCd} </if> <if test="secondaryFeeTypeCdName !=null and secondaryFeeTypeCdName != ''"> and s.secondary_fee_type_cd_name = #{secondaryFeeTypeCdName} </if> <if test="computingFormula !=null and computingFormula != ''"> and t.computing_formula= #{computingFormula} </if> java110-db/src/main/resources/mapper/fee/FeeServiceDaoImplMapper.xml
@@ -196,7 +196,7 @@ and t.end_time > #{nowDate} </if> <if test="communityId !=null and communityId != ''"> and t.community_id= #{communityId} and t.community_id= in (#{communityId},'9999') and pfc.community_id in (#{communityId},'9999') </if> <if test="bId !=null and bId != ''"> java110-db/src/main/resources/mapper/fee/MeterWaterServiceDaoImplMapper.xml
@@ -663,7 +663,7 @@ <if test="accountNumber !=null and accountNumber != ''"> and t.account_number= #{accountNumber} </if> <if test="meterReadBookNo !=null and meterReadBookNo != ''"> <if test="meterReadBookNo !=null"> and t.meter_read_book_no= #{meterReadBookNo} </if> <if test="waterConsumption !=null and waterConsumption != ''"> java110-db/src/main/resources/mapper/fee/OweFeeCallableV1ServiceDaoImplMapper.xml
@@ -4,12 +4,12 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="oweFeeCallableV1ServiceDaoImpl"> <!-- 保存催缴记录信息 add by wuxw 2018-07-03 --> <insert id="saveOweFeeCallableInfo" parameterType="Map"> insert into owe_fee_callable( remark,ofc_id,owner_id,callable_way,fee_id,payer_obj_name,owner_name,config_id,fee_name,staff_name, amountd_owed,state,community_id,payer_obj_type,staff_id,payer_obj_id,start_time,end_time,create_time amountd_owed,state,community_id,payer_obj_type,staff_id,payer_obj_id,start_time,end_time,create_time, receivable_amount,received_amount,difference_reason,receipt_time,payee ) values ( #{remark},#{ofcId},#{ownerId},#{callableWay},#{feeId},#{payerObjName},#{ownerName},#{configId},#{feeName},#{staffName}, #{amountdOwed},#{state},#{communityId},#{payerObjType},#{staffId},#{payerObjId},#{startTime},#{endTime}, @@ -18,25 +18,23 @@ </if> <if test="createTime != null"> #{createTime} </if> </if>, #{receivableAmount},#{receivedAmount},#{differenceReason},#{receiptTime},#{payee} ) </insert> <insert id="saveOweFeeCallables" parameterType="Map"> insert into owe_fee_callable( remark,ofc_id,owner_id,callable_way,fee_id,payer_obj_name,owner_name,config_id,fee_name,staff_name, amountd_owed,state,community_id,payer_obj_type,staff_id,payer_obj_id,start_time,end_time amountd_owed,state,community_id,payer_obj_type,staff_id,payer_obj_id,start_time,end_time, receivable_amount,received_amount,difference_reason,receipt_time,payee ) values <foreach collection="oweFeeCallablePos" item="item" separator=","> (#{item.remark},#{item.ofcId},#{item.ownerId},#{item.callableWay},#{item.feeId},#{item.payerObjName},#{item.ownerName},#{item.configId},#{item.feeName}, #{item.staffName},#{item.amountdOwed},#{item.state},#{item.communityId},#{item.payerObjType},#{item.staffId},#{item.payerObjId},#{item.startTime}, #{item.endTime}) #{item.endTime},#{item.receivableAmount},#{item.receivedAmount},#{item.differenceReason},#{item.receiptTime},#{item.payee}) </foreach> </insert> <!-- 查询催缴记录信息 add by wuxw 2018-07-03 --> <select id="getOweFeeCallableInfo" parameterType="Map" resultType="Map"> @@ -46,6 +44,8 @@ staffName,t.amountd_owed,t.amountd_owed amountdOwed,t.state,t.community_id,t.community_id communityId,t.payer_obj_type,t.payer_obj_type payerObjType,t.staff_id,t.staff_id staffId,t.payer_obj_id,t.payer_obj_id payerObjId,t.start_time startTime,t.end_time endTime,t.create_time createTime, t.receivable_amount receivableAmount,t.received_amount receivedAmount,t.difference_reason differenceReason, t.receipt_time receiptTime,t.payee payee, td.`name` callableWayName,td1.name stateName from owe_fee_callable t left join t_dict td on t.callable_way = td.status_cd and td.table_name = 'owe_fee_callable' and td.table_columns = 'callable_way' @@ -101,13 +101,26 @@ <if test="payerObjId !=null and payerObjId != ''"> and t.payer_obj_id= #{payerObjId} </if> <if test="receivableAmount !=null and receivableAmount != ''"> and t.receivable_amount= #{receivableAmount} </if> <if test="receivedAmount !=null and receivedAmount != ''"> and t.received_amount= #{receivedAmount} </if> <if test="differenceReason !=null and differenceReason != ''"> and t.difference_reason= #{differenceReason} </if> <if test="receiptTime !=null and receiptTime != ''"> and t.receipt_time= #{receiptTime} </if> <if test="payee !=null and payee != ''"> and t.payee= #{payee} </if> order by t.create_time desc <if test="page != -1 and page != null "> limit #{page}, #{row} </if> </select> <!-- 修改催缴记录信息 add by wuxw 2018-07-03 --> <update id="updateOweFeeCallableInfo" parameterType="Map"> @@ -160,11 +173,25 @@ <if test="payerObjId !=null and payerObjId != ''"> , t.payer_obj_id= #{payerObjId} </if> <if test="receivableAmount !=null and receivableAmount != ''"> , t.receivable_amount= #{receivableAmount} </if> <if test="receivedAmount !=null and receivedAmount != ''"> , t.received_amount= #{receivedAmount} </if> <if test="differenceReason !=null and differenceReason != ''"> , t.difference_reason= #{differenceReason} </if> <if test="receiptTime !=null and receiptTime != ''"> , t.receipt_time= #{receiptTime} </if> <if test="payee !=null and payee != ''"> , t.payee= #{payee} </if> where 1=1 <if test="ofcId !=null and ofcId != ''"> and t.ofc_id= #{ofcId} </if> </update> <!-- 查询催缴记录数量 add by wuxw 2018-07-03 --> @@ -221,8 +248,21 @@ <if test="payerObjId !=null and payerObjId != ''"> and t.payer_obj_id= #{payerObjId} </if> <if test="receivableAmount !=null and receivableAmount != ''"> and t.receivable_amount= #{receivableAmount} </if> <if test="receivedAmount !=null and receivedAmount != ''"> and t.received_amount= #{receivedAmount} </if> <if test="differenceReason !=null and differenceReason != ''"> and t.difference_reason= #{differenceReason} </if> <if test="receiptTime !=null and receiptTime != ''"> and t.receipt_time= #{receiptTime} </if> <if test="payee !=null and payee != ''"> and t.payee= #{payee} </if> </select> </mapper> </mapper> java110-db/src/main/resources/mapper/report/ReportCommunityServiceDaoImplMapper.xml
@@ -272,7 +272,7 @@ and t.status_cd = '0' and u.unit_id = #{unitId} <if test="communityId !=null and communityId != ''"> and t.community_id= #{communityId} and t.community_id in (#{communityId},'9999') </if> order by CONVERT(t.layer, SIGNED), CONVERT(t.room_num, SIGNED) </select> java110-db/src/main/resources/mapper/store/ContractServiceDaoImplMapper.xml
@@ -406,10 +406,10 @@ <if test="contractNameLike !=null and contractNameLike != ''"> and t.contract_name like concat('%',#{contractNameLike},'%') </if> <if test="startTime !=null"> <if test="startTime !=null and startTime != ''"> and t.start_time= #{startTime} </if> <if test="endTime !=null "> <if test="endTime !=null and endTime != ''"> and t.end_time <= #{endTime} </if> <if test="queryStartTime !=null and queryStartTime != ''"> java110-db/src/main/resources/mapper/user/OwnerCarServiceDaoImplMapper.xml
@@ -361,6 +361,24 @@ <if test="carBrand !=null and carBrand != ''"> and t.car_brand= #{carBrand} </if> <if test="parkingType !=null and parkingType != ''"> and t.parking_type= #{parkingType} </if> <if test="roadName !=null and roadName != ''"> and t.road_name= #{roadName} </if> <if test="floorNum !=null and floorNum != ''"> and t.floor_num= #{floorNum} </if> <if test="unitNum !=null and unitNum != ''"> and t.unit_num= #{unitNum} </if> <if test="unitPricePerMonth !=null and unitPricePerMonth != ''"> and t.unit_price_per_month= #{unitPricePerMonth} </if> <if test="roomNum !=null and roomNum != ''"> and t.room_num= #{roomNum} </if> <if test="carType !=null and carType != ''"> and t.car_type= #{carType} </if> @@ -379,6 +397,9 @@ <if test="carNumLike !=null and carNumLike != ''"> and t.car_num like concat('%',#{carNumLike},'%') </if> <if test="carNumLikeRight_ !=null and carNumLikeRight_ != ''"> and t.car_num like concat(#{carNumLikeRight_},'%') </if> <if test="memberCarNum !=null and memberCarNum != ''"> and moc.car_num= #{memberCarNum} </if> java110-db/src/main/resources/mapper/user/OwnerCarV1ServiceDaoImplMapper.xml
@@ -9,10 +9,10 @@ <!-- 新增字段:first_payment_date、payment_deadline_date、unit_price_per_month、annual_receivable_amount --> <insert id="saveOwnerCarInfo" parameterType="Map"> insert into owner_car(car_brand, car_num, ps_id, remark, owner_id, car_type_cd, user_id, car_id, car_color, car_type, start_time, end_time, state, community_id, member_id, b_id,lease_type, first_payment_date, payment_deadline_date, unit_price_per_month, annual_receivable_amount) car_type, road_name, floor_num, unit_num, room_num, start_time, end_time, state, community_id, member_id, b_id,lease_type, first_payment_date, payment_deadline_date, unit_price_per_month, annual_receivable_amount, parking_type) values (#{carBrand}, #{carNum}, #{psId}, #{remark}, #{ownerId}, #{carTypeCd}, #{userId}, #{carId}, #{carColor}, #{carType}, #{carType},#{roadName},#{floorNum},#{unitNum},#{roomNum}, <!-- 正确处理start_time:为空则赋值NULL,否则取参数值 --> <choose> <when test="startTime == null or startTime == ''">NULL</when> @@ -24,7 +24,7 @@ <otherwise>#{endTime}</otherwise> </choose>, #{state}, #{communityId}, #{memberId}, '-1',#{leaseType}, #{firstPaymentDate}, #{paymentDeadlineDate}, #{unitPricePerMonth}, #{annualReceivableAmount}) #{firstPaymentDate}, #{paymentDeadlineDate}, #{unitPricePerMonth}, #{annualReceivableAmount}, #{parkingType}) </insert> @@ -219,6 +219,9 @@ <if test="remark !=null and remark != ''"> and t.remark= #{remark} </if> <if test="parkingType !=null and parkingType != ''"> and t.parking_type= #{parkingType} </if> <if test="statusCd !=null and statusCd != ''"> and t.status_cd= #{statusCd} </if> java110-db/src/main/resources/mapper/user/OwnerServiceDaoImplMapper.xml
@@ -687,7 +687,7 @@ <if test="roomId !=null and roomId != ''"> AND r.`room_id` = #{roomId} </if> <if test="roomIds != null "> <if test="roomIds != null and roomIds.length > 0"> and r.room_id in <foreach collection="roomIds" item="item" open="(" close=")" separator=","> #{item} java110-db/src/main/resources/mapper/user/OwnerV1ServiceDaoImplMapper.xml
@@ -86,7 +86,7 @@ and t.state= #{state} </if> <if test="communityId !=null and communityId != ''"> and t.community_id= #{communityId} and t.community_id in (#{communityId}, '9999') </if> <if test="age !=null and age != ''"> and t.age= #{age} java110-interface/src/main/java/com/java110/intf/fee/IMeterWaterInnerServiceSMO.java
@@ -41,6 +41,9 @@ @RequestMapping(value = "/queryMeterWatersCount", method = RequestMethod.POST) int queryMeterWatersCount(@RequestBody MeterWaterDto meterWaterDto); @RequestMapping(value = "/queryMeterWatersCountByPo", method = RequestMethod.POST) int queryMeterWatersCountByPo(@RequestBody MeterWaterPo meterWaterDto); /** * <p>添加抄表对象</p> java110-interface/src/main/java/com/java110/intf/fee/IPayFeeV1InnerServiceSMO.java
@@ -65,4 +65,5 @@ */ @RequestMapping(value = "/queryPayFeesCount", method = RequestMethod.POST) int queryPayFeesCount(@RequestBody PayFeeDto payFeeDto); int queryPayFeesCountByPo(@RequestBody PayFeePo payFeePo); } java110-utils/src/main/java/com/java110/utils/util/ImportExcelUtils.java
@@ -60,9 +60,43 @@ * @return */ public static final Sheet getSheet(Workbook wb, String sheetName) { return wb.getSheet(sheetName); // 空值校验,避免空指针 if (wb == null || sheetName == null) { return null; } // 标准化目标名称:去除两端空格,中间多个空格合并为一个 String normalizedTarget = normalizeSheetName(sheetName); // 遍历所有sheet,逐个匹配标准化后的名称 for (int i = 0; i < wb.getNumberOfSheets(); i++) { Sheet sheet = wb.getSheetAt(i); if (sheet == null) { continue; } String originalSheetName = sheet.getSheetName(); // 标准化当前sheet名称 String normalizedSheet = normalizeSheetName(originalSheetName); // 匹配成功则返回该sheet if (normalizedTarget.equals(normalizedSheet)) { return sheet; } } // 无匹配的sheet返回null(保持和原方法一致的返回逻辑) return null; } private static String normalizeSheetName(String name) { if (name == null) { return ""; } // 步骤1:去除两端空格 // 步骤2:将中间的多个连续空格(包括制表符、换行符等空白)替换为单个空格 return name.trim().replaceAll("\\s+", " "); } /** * 获取Sheet页面(按页标) * service-api/src/main/java/com/java110/api/importData/adapt/ImportContractCleaningAdapt.java
@@ -53,7 +53,7 @@ List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); ImportOwnerRoomDto importOwnerRoomDto = null; for (int osIndex = 0; osIndex < oList.size(); osIndex++) { if (osIndex < 6) { if (osIndex < 5) { continue; } service-api/src/main/java/com/java110/api/importData/adapt/ImportElectricityFeeV2DataCleaningAdapt.java
@@ -49,7 +49,7 @@ sheet = ImportExcelUtils.getSheet(workbook, "电费流水"); List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); for (int osIndex = 0; osIndex < oList.size(); osIndex++) { if (osIndex < 8) { if (osIndex < 9) { continue; } Object[] os = oList.get(osIndex); @@ -74,8 +74,8 @@ Date date = new Date(); date.setYear(defaultInteger(os[18]) - 1900); date.setMonth(defaultInteger(os[19])); po.setCurReadingTime(defaultInteger(os[18]) + "-" + defaultInteger(os[19]) + "-01 00:00:00"); po.setPreReadingTime(DateUtil.getAddMonthStringA(DateUtil.getDateFromStringA(po.getCurReadingTime()), -1)); po.setPreReadingTime(defaultInteger(os[18]) + "-" + defaultInteger(os[19]) + "-01 00:00:00"); po.setCurReadingTime(Vtil.processDateEnhanced(DateUtil.getDateFromStringA(po.getPreReadingTime()), "end", DateUtil.DATE_FORMATE_STRING_A, null ,null)); po.setStatusCd("0"); po.setUserId(paramIn.getString("userId")); po.setRemark(ValueUtil.defaultValue(os[28])); service-api/src/main/java/com/java110/api/importData/adapt/ImportMeterWaterFeeV2DataCleaningAdapt.java
@@ -72,8 +72,8 @@ Date date = new Date(); date.setYear(defaultInteger(os[18]) - 1900); date.setMonth(defaultInteger(os[19])); po.setCurReadingTime(defaultInteger(os[18]) + "-" + defaultInteger(os[19]) + "-01 00:00:00"); po.setPreReadingTime(DateUtil.getAddMonthStringA(DateUtil.getDateFromStringA(po.getCurReadingTime()), -1)); po.setPreReadingTime(defaultInteger(os[18]) + "-" + defaultInteger(os[19]) + "-01 00:00:00"); po.setCurReadingTime(Vtil.processDateEnhanced(DateUtil.getDateFromStringA(po.getPreReadingTime()), "end", DateUtil.DATE_FORMATE_STRING_A, null ,null)); po.setStatusCd("0"); po.setUserId(ValueUtil.defaultValue(paramIn.getString("userId"))); po.setConfigId(ValueUtil.defaultValue(paramIn.getString("configId"),"9220260120546511533")); service-api/src/main/java/com/java110/api/importData/adapt/ImportOwnerCarV2DataCleaningAdapt.java
@@ -3,6 +3,7 @@ import com.alibaba.fastjson.JSONObject; import com.java110.api.importData.DefaultImportDataAdapt; import com.java110.api.importData.IImportDataCleaningAdapt; import com.java110.dto.importData.Vtil; import com.java110.dto.owner.OwnerCarDto; import com.java110.dto.system.ComponentValidateResult; import com.java110.intf.user.IOwnerV1InnerServiceSMO; @@ -53,13 +54,16 @@ OwnerCarDto importOwnerCar = null; for (int osIndex = 0; osIndex < oList.size(); osIndex++) { Object[] os = oList.get(osIndex); if (osIndex <= 6) { // 第一行是 头部信息 直接跳过 if (osIndex < 3) { // 第一行是 头部信息 直接跳过 continue; } if (StringUtil.isNullOrNone(os[0])) { continue; } Assert.hasValue(os[8], (osIndex + 1) + "行车牌号不能为空"); // Assert.hasValue(os[8], (osIndex + 1) + "行车牌号不能为空"); if (os[8] == null || os[8].equals("")) { os[8] = "空"; } if (defaultValue(os[1]).isEmpty() && defaultValue(os[2]).isEmpty()) { throw new IllegalArgumentException((osIndex + 1) + "行小区编码和小区名称必填其一"); } @@ -71,12 +75,12 @@ // Assert.hasValue(os[6], (osIndex + 1) + "颜色不能为空"); // Assert.hasValue(os[7], (osIndex + 1) + "停车场不能为空"); // Assert.hasValue(os[8], (osIndex + 1) + "车位不能为空"); Assert.hasValue(os[14], (osIndex + 1) + "行起租时间不能为空"); // Assert.hasValue(os[14], (osIndex + 1) + "行起租时间不能为空"); // Assert.hasValue(os[15], (osIndex + 1) + "截止时间不能为空"); Assert.hasValue(os[12], (osIndex + 1) + "行停车类型不能为空"); // Assert.hasValue(os[11], (osIndex + 1) + "停车场类型不能为空"); String startTime = os.length >= 14 && os[14] != null ? excelDoubleToDate(os[14].toString()):""; String endTime = os.length >= 15 && os[15] != null ? excelDoubleToDate(os[15].toString()):""; String startTime = os.length >= 14 && os[14] != null ? Vtil.defaultValueToDate(os[14], "start") : null; String endTime = os.length >= 15 && os[15] != null ? Vtil.defaultValueToDate(os[15], "end") : null; // Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行开始时间格式错误 请填写YYYY-MM-DD文本格式"); // Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD文本格式"); importOwnerCar = new OwnerCarDto(); @@ -112,13 +116,16 @@ importOwnerCar = null; for (int osIndex = 0; osIndex < oList.size(); osIndex++) { Object[] os = oList.get(osIndex); if (osIndex <= 6) { // 第一行是 头部信息 直接跳过 if (osIndex < 3) { // 第一行是 头部信息 直接跳过 continue; } if (StringUtil.isNullOrNone(os[0])) { continue; } Assert.hasValue(os[8], (osIndex + 1) + "行车牌号不能为空"); // Assert.hasValue(os[8], (osIndex + 1) + "行车牌号不能为空"); if (os[8] == null || os[8].equals("")) { os[8] = "空"; } if (defaultValue(os[1]).isEmpty() && defaultValue(os[2]).isEmpty()) { throw new IllegalArgumentException((osIndex + 1) + "行小区编码和小区名称必填其一"); } @@ -130,12 +137,12 @@ // Assert.hasValue(os[6], (osIndex + 1) + "颜色不能为空"); // Assert.hasValue(os[7], (osIndex + 1) + "停车场不能为空"); // Assert.hasValue(os[8], (osIndex + 1) + "车位不能为空"); Assert.hasValue(os[14], (osIndex + 1) + "行起租时间不能为空"); // Assert.hasValue(os[14], (osIndex + 1) + "行起租时间不能为空"); // Assert.hasValue(os[15], (osIndex + 1) + "截止时间不能为空"); Assert.hasValue(os[12], (osIndex + 1) + "行停车类型不能为空"); // Assert.hasValue(os[11], (osIndex + 1) + "停车场类型不能为空"); String startTime = os.length >= 14 && os[14] != null ? excelDoubleToDate(os[14].toString()):""; String endTime = os.length >= 15 && os[15] != null ? excelDoubleToDate(os[15].toString()):""; String startTime = os.length >= 14 && os[14] != null ? Vtil.defaultValueToDate(os[14], "start") : null; String endTime = os.length >= 15 && os[15] != null ? Vtil.defaultValueToDate(os[15], "end") : null; // Assert.isDate(startTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行开始时间格式错误 请填写YYYY-MM-DD文本格式"); // Assert.isDate(endTime, DateUtil.DATE_FORMATE_STRING_B, (osIndex + 1) + "行结束时间格式错误 请填写YYYY-MM-DD文本格式"); importOwnerCar = new OwnerCarDto(); @@ -157,6 +164,11 @@ importOwnerCar.setCommunityId(result.getCommunityId()); importOwnerCar.setUserId(result.getUserId()); importOwnerCar.setOtherItem(os); importOwnerCar.setRoadName(defaultValue(os[3])); importOwnerCar.setFloorNum(defaultValue(os[4])); importOwnerCar.setUnitNum(defaultValue(os[5])); importOwnerCar.setRoomNum(defaultValue(os[6])); importOwnerCar.setParkingType(defaultValue(os[12])); ownerCars.add(importOwnerCar); } } service-api/src/main/java/com/java110/api/importData/adapt/ImportPropertyWhiteListfFlowAdapt.java
@@ -92,6 +92,7 @@ sheet = ImportExcelUtils.getSheet(workbook, "白单流水 导入新模板"); List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); PropertyWhiteListFlowDto white = null; List<Map<String, Object>> maps = BeanConvertUtil.beanCovertMapListC(communityInnerServiceSMOImpl.queryCommunitys(new CommunityDto())); for (int osIndex = 0; osIndex < oList.size(); osIndex++) { Object[] os = oList.get(osIndex); if (osIndex == 0) { // 第一行是 头部信息 直接跳过 @@ -113,14 +114,13 @@ inputTime = Vtil.defaultValueToDate(os[24]); } white.setChargeTime(chargeTime);//收费时间 white.setInvoiceReceiptNo(Vtil.defaultValueToDate(os[4]));//发票 white.setInvoiceReceiptNo(Vtil.defaultValue(os[4]));//发票 white.setRoomId(os[5] == null ? null : os[5].toString());//房号 white.setPropertyAddress(os[5] == null ? null : os[5].toString());//业主地址 white.setDoorRoomNum((os[6] == null ? "" : os[6].toString() + "-") + (os[7] == null ? "" : os[7].toString() + "-") + (os[8] == null ? "" : os[8].toString()) );//门市号 if (white.getDoorRoomNum().isEmpty()){ white.setDoorRoomNum(null); } List<Map<String, Object>> maps = BeanConvertUtil.beanCovertMapListC(communityInnerServiceSMOImpl.queryCommunitys(new CommunityDto())); setCommunityId(white, os, maps); white.setSecondaryFeeTypeCd(os[13] == null ? null : os[13].toString());//收费内容 white.setChargeAmount(os[14] == null ? null : os[14].toString());//收费金额 service-api/src/main/java/com/java110/api/importData/adapt/ImportRoomOwnerDataV2CleaningAdapt.java
@@ -48,7 +48,7 @@ List<Object[]> oList = ImportExcelUtils.listFromSheet(sheet); ImportOwnerRoomDto importOwnerRoomDto = null; for (int osIndex = 0; osIndex < oList.size(); osIndex++) { if (osIndex < 8) { if (osIndex < 5) { continue; } @@ -76,7 +76,7 @@ sheet = ImportExcelUtils.getSheet(workbook, " 商铺物业费 导入新模板"); oList = ImportExcelUtils.listFromSheet(sheet); for (int osIndex = 0; osIndex < oList.size(); osIndex++) { if (osIndex < 8) { if (osIndex < 5) { continue; } service-fee/src/main/java/com/java110/fee/cmd/fee/ListFeeCmd.java
@@ -297,6 +297,9 @@ Integer.parseInt(feeDto.getDecimalPlace()))); BigDecimal curFeePrice = new BigDecimal(feeDto.getFeePrice()); curFeePrice = curFeePrice.multiply(new BigDecimal(oweMonth)); if (curFeePrice.doubleValue() == -1) { curFeePrice = BigDecimal.valueOf(0); } feeDto.setAmountOwed(MoneyUtil.computePriceScale(curFeePrice.doubleValue(), feeDto.getScale(), Integer.parseInt(feeDto.getDecimalPlace())) + ""); //动态费用 if ("4004".equals(computingFormula) service-fee/src/main/java/com/java110/fee/smo/impl/MeterWaterInnerServiceSMOImpl.java
@@ -132,6 +132,11 @@ } @Override public int queryMeterWatersCountByPo(MeterWaterPo meterWaterDto) { return meterWaterServiceDaoImpl.queryMeterWatersCount(BeanConvertUtil.beanCovertMap(meterWaterDto)); } @Override public int saveMeterWaters(@RequestBody List<MeterWaterPo> meterWaterPos) { List<Map> fees = new ArrayList<>(); for (MeterWaterPo payFeePo : meterWaterPos) { service-fee/src/main/java/com/java110/fee/smo/impl/PayFeeV1InnerServiceSMOImpl.java
@@ -102,4 +102,9 @@ return payFeeV1ServiceDaoImpl.queryPayFeesCount(BeanConvertUtil.beanCovertMap(payFeeDto)); } @Override public int queryPayFeesCountByPo(PayFeePo payFeePo) { return payFeeV1ServiceDaoImpl.queryPayFeesCount(BeanConvertUtil.beanCovertMap(payFeePo)); } } service-job/src/main/java/com/java110/job/importData/DefaultImportData.java
@@ -4,6 +4,7 @@ import com.java110.intf.common.IAssetImportLogDetailInnerServiceSMO; import com.java110.po.log.AssetImportLogDetailPo; import com.java110.utils.util.ExceptionUtil; import org.apache.kafka.common.protocol.types.Field; import org.springframework.beans.factory.annotation.Autowired; public class DefaultImportData { @@ -30,4 +31,14 @@ tmpAssetImportOwnerRoomPo.setMessage(message); assetImportLogDetailInnerServiceSMOImpl.updateAssetImportLogDetail(tmpAssetImportOwnerRoomPo); } protected void updateImportLogDetailState(String detailId, String message) { String state = AssetImportLogDetailDto.STATE_FAIL_IMPORT; AssetImportLogDetailPo tmpAssetImportOwnerRoomPo = new AssetImportLogDetailPo(); tmpAssetImportOwnerRoomPo.setDetailId(detailId); tmpAssetImportOwnerRoomPo.setState(state); tmpAssetImportOwnerRoomPo.setMessage(message); assetImportLogDetailInnerServiceSMOImpl.updateAssetImportLogDetail(tmpAssetImportOwnerRoomPo); } } service-job/src/main/java/com/java110/job/importData/ImportDataExecutor.java
@@ -86,7 +86,11 @@ = ApplicationContextFactory.getBean("assetImportLogInnerServiceSMOImpl", IAssetImportLogInnerServiceSMO.class); } Assert.hasLength(importDataDto.getLogId(), "未包含导入数据"); Assert.hasLength(importDataDto.getCommunityId(), "未包含小区信息"); if (!importDataDto.getBusinessAdapt().equals("importContractV2")){ Assert.hasLength(importDataDto.getCommunityId(), "未包含小区信息"); } AssetImportLogDto assetImportLogDto = new AssetImportLogDto(); assetImportLogDto.setLogId(importDataDto.getLogId()); service-job/src/main/java/com/java110/job/importData/adapt/ImportContractQueueDataAdapt.java
@@ -100,6 +100,18 @@ contractDto.setAdContractInfo(adContractInfo); contractDto.setContractPaymentStatus(contractPaymentStatus); contractDto.setContractCollectionDetailDtos(contractCollectionDetail); contractDto.setContractCode(contractPo.getContractCode()); contractDto.setStartTime(Vtil.defaultValueToDate(contractPo.getStartTime(), "start", null)); contractDto.setEndTime(Vtil.defaultValueToDate(contractPo.getEndTime(), "end", null)); contractPo.setStartTime(contractDto.getStartTime()); contractPo.setEndTime(contractDto.getEndTime()); contractDto.setContractId(null); int i = contractInnerServiceSMOImpl.queryContractsCount(contractDto); if (i > 0) { throw new IllegalArgumentException("重复的合同"); } contractDto.setContractId(contractPo.getContractId()); contractPo.setOperator("-"); contractPo.setOperatorLink("-"); contractPo.setContractParentId(""); service-job/src/main/java/com/java110/job/importData/adapt/ImportElectricityFeeV2QueueDataAdapt.java
@@ -87,8 +87,11 @@ payFeePo.setEndTime(po.getPreReadingTime()); payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM); payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE); payFeePo.setState(FeeDto.STATE_FINISH); int i = meterWaterInnerServiceSMOImpl.queryMeterWatersCount(BeanConvertUtil.covertBean(BeanConvertUtil.beanCovertMap(po), MeterWaterDto.class)); payFeePo.setState(FeeDto.STATE_DOING); if (po.getRemark3() != null){ po.setRemark(Vtil.defaultValue(po.getRemark()) + po.getRemark3()); } int i = meterWaterInnerServiceSMOImpl.queryMeterWatersCountByPo(po); if (i > 0) { throw new IllegalArgumentException("重复的电费导入"); } @@ -137,11 +140,16 @@ ownerDto.setRoomId(reqJson.getString("objId")); List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByRoom(ownerDto); if (ownerDtos != null && ownerDtos.size() > 0) { feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID); feeAttrPo.setValue(ownerDtos.get(0).getOwnerId()); if (ownerDtos.size() > 1) { feeAttrPo.setValue("导入信息中不存在业主"); }else { feeAttrPo.setValue(ownerDtos.get(0).getOwnerId()); } feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); @@ -152,7 +160,11 @@ feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK); feeAttrPo.setValue(ownerDtos.get(0).getLink()); if (ownerDtos.size() > 1) { feeAttrPo.setValue("导入信息中不存在业主"); }else { feeAttrPo.setValue(ownerDtos.get(0).getLink()); } feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); @@ -163,7 +175,11 @@ feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME); feeAttrPo.setValue(ownerDtos.get(0).getName()); if (ownerDtos.size() > 1) { feeAttrPo.setValue("导入信息中不存在业主"); }else { feeAttrPo.setValue(ownerDtos.get(0).getName()); } feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); @@ -175,9 +191,9 @@ private void validateRoom(MeterWaterPo po, AssetImportLogDetailDto assetImportLogDetailDto) { RoomDto roomDto = new RoomDto(); roomDto.setCommunityId(po.getCommunityId()); roomDto.setRoadName(po.getRoadName()); roomDto.setFloorNum(Vtil.defaultValueToNumber(po.getFloorNum())); roomDto.setCommunityId(po.getCommunityId()); roomDto.setUnitNum(Vtil.defaultValueToNumber(po.getUnitNum())); roomDto.setRoomNum(Vtil.defaultValueToNumber(po.getRoomNum())); if (roomDto.getRoomNum().isEmpty()) { @@ -185,7 +201,10 @@ } List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto); if (roomDtos.isEmpty()) { throw new IllegalArgumentException("未查询到房屋:" + po.getObjName()); po.setObjId("1"); po.setRemark3("\n\n房屋:" + roomDto.getCommunityId() + "-" + roomDto.getRoadName() + "-" + roomDto.getFloorNum() + "-" + roomDto.getUnitNum() + "-" + roomDto.getRoomNum() + "不存在,该费用存入公司账户"); // ImportOwnerRoomDto importOwnerRoomDto = new ImportOwnerRoomDto();//房屋 // importOwnerRoomDto.setRoomId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_roomId)); // importOwnerRoomDto.setOwnerId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId)); service-job/src/main/java/com/java110/job/importData/adapt/ImportHistoryFeeDetailQueueDataAdapt.java
@@ -350,6 +350,9 @@ } try{ if(assetImportLogDetailDto.getOutTime() == null) { assetImportLogDetailDto.setOutTime("2050-01-01 23:59:59"); } if(!(ListUtil.isNull(importRoomFees))){ if (DateUtil.getDateFromStringB(data.getString("chargeStart").split(" ")[0]).getTime() < DateUtil.getDateFromStringB(assetImportLogDetailDto.getTakeTime().split(" ")[0]).getTime() && !assetImportLogDetailDto.getState().equals("1100") && !assetImportLogDetailDto.getState().equals("1300")){ ImportRoomFee original = importRoomFees.get(0); service-job/src/main/java/com/java110/job/importData/adapt/ImportMeterWaterFeeV2QueueDataAdapt.java
@@ -93,10 +93,14 @@ payFeePo.setEndTime(po.getPreReadingTime()); payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM); payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE); payFeePo.setState(FeeDto.STATE_FINISH); payFeePo.setState(FeeDto.STATE_DOING); payFeePo.setIncomeObjId("102025062610470035"); int i = meterWaterInnerServiceSMOImpl.queryMeterWatersCount(BeanConvertUtil.covertBean(BeanConvertUtil.beanCovertMap(po), MeterWaterDto.class)); if (po.getRemark3() != null){ po.setRemark(Vtil.defaultValue(po.getRemark()) + po.getRemark3()); } int i = meterWaterInnerServiceSMOImpl.queryMeterWatersCountByPo(po); if (i > 0) { throw new IllegalArgumentException("重复的水费导入"); } @@ -147,7 +151,11 @@ feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID); feeAttrPo.setValue(ownerDtos.get(0).getOwnerId()); if (ownerDtos.size() > 1) { feeAttrPo.setValue("导入信息中不存在业主"); }else { feeAttrPo.setValue(ownerDtos.get(0).getOwnerId()); } feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); @@ -158,7 +166,11 @@ feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK); feeAttrPo.setValue(ownerDtos.get(0).getLink()); if (ownerDtos.size() > 1) { feeAttrPo.setValue("导入信息中不存在业主"); }else { feeAttrPo.setValue(ownerDtos.get(0).getLink()); } feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); @@ -169,7 +181,11 @@ feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(reqJson.getString("communityId")); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME); feeAttrPo.setValue(ownerDtos.get(0).getName()); if (ownerDtos.size() > 1) { feeAttrPo.setValue("导入信息中不存在业主"); }else { feeAttrPo.setValue(ownerDtos.get(0).getName()); } feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); @@ -181,9 +197,9 @@ private void validateRoom(MeterWaterPo po, AssetImportLogDetailDto assetImportLogDetailDto) { RoomDto roomDto = new RoomDto(); roomDto.setCommunityId(po.getCommunityId()); roomDto.setRoadName(po.getRoadName()); roomDto.setFloorNum(Vtil.defaultValueToNumber(po.getFloorNum())); roomDto.setCommunityId(po.getCommunityId()); roomDto.setUnitNum(Vtil.defaultValueToNumber(po.getUnitNum())); roomDto.setRoomNum(Vtil.defaultValueToNumber(po.getRoomNum())); if (roomDto.getRoomNum().isEmpty()) { @@ -191,7 +207,11 @@ } List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto); if (roomDtos.isEmpty()) { throw new IllegalArgumentException("未查询到房屋:" + po.getObjName()); po.setObjId("1"); po.setRemark3("\n\n房屋:" + roomDto.getCommunityId() + "-" + roomDto.getRoadName() + "-" + roomDto.getFloorNum() + "-" + roomDto.getUnitNum() + "-" + roomDto.getRoomNum() + "不存在,该费用存入公司账户"); // throw new IllegalArgumentException("未查询到房屋:" + po.getObjName()); // ImportOwnerRoomDto importOwnerRoomDto = new ImportOwnerRoomDto();//房屋 // importOwnerRoomDto.setRoomId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_roomId)); // importOwnerRoomDto.setOwnerId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ownerId)); service-job/src/main/java/com/java110/job/importData/adapt/ImportOwnerCarQueueV2DataAdapt.java
@@ -6,6 +6,7 @@ import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.community.CommunityDto; import com.java110.dto.dict.DictDto; import com.java110.dto.fee.FeeConfigDto; import com.java110.dto.importData.*; import com.java110.dto.log.AssetImportLogDetailDto; import com.java110.dto.oweFeeCallable.OweFeeCallableDto; @@ -21,7 +22,11 @@ import com.java110.intf.community.IParkingSpaceV1InnerServiceSMO; import com.java110.intf.community.IRoomInnerServiceSMO; import com.java110.intf.dev.IDictV1InnerServiceSMO; import com.java110.intf.fee.IFeeAttrInnerServiceSMO; import com.java110.intf.fee.IFeeConfigInnerServiceSMO; import com.java110.intf.fee.IOweFeeCallableV1InnerServiceSMO; import com.java110.intf.fee.IPayFeeV1InnerServiceSMO; import com.java110.intf.user.IOwnerCarInnerServiceSMO; import com.java110.intf.user.IOwnerCarV1InnerServiceSMO; import com.java110.intf.user.IOwnerRoomRelInnerServiceSMO; import com.java110.intf.user.IOwnerV1InnerServiceSMO; @@ -29,6 +34,8 @@ import com.java110.job.importData.IImportDataAdapt; import com.java110.po.car.OwnerCarPo; import com.java110.po.dict.DictPo; import com.java110.po.fee.FeeAttrPo; import com.java110.po.fee.PayFeePo; import com.java110.po.oweFeeCallable.OweFeeCallablePo; import com.java110.po.owner.OwnerPo; import com.java110.po.parking.ParkingAreaPo; @@ -36,6 +43,7 @@ import com.java110.po.room.ApplyRoomDiscountPo; import com.java110.po.room.LitigationInfoPo; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.DateUtil; import com.java110.utils.util.ListUtil; import com.java110.utils.util.StringUtil; import org.mybatis.spring.SqlSessionTemplate; @@ -62,6 +70,13 @@ @Autowired private IOwnerCarV1InnerServiceSMO ownerCarV1InnerServiceSMOImpl; @Autowired private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl; @Autowired private IPayFeeV1InnerServiceSMO payFeeV1InnerServiceSMO; @Autowired private IFeeAttrInnerServiceSMO feeAttrInnerServiceSMO; @Autowired private IApplyRoomDiscountServiceDao applyRoomDiscountServiceDaoImpl; @@ -94,6 +109,10 @@ @Autowired IOwnerRoomRelInnerServiceSMO ownerRoomRelInnerServiceSMOImpl; @Autowired private IOwnerCarInnerServiceSMO ownerCarInnerServiceSMOImpl; @Override public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) { importDatas(assetImportLogDetailDtos); @@ -105,11 +124,24 @@ for (AssetImportLogDetailDto assetImportLogDetailDto : infos) { try { doImportData(assetImportLogDetailDto); OwnerCarDto ownerCarDto = null; doImportData(assetImportLogDetailDto,ownerCarDto); updateImportLogDetailState(assetImportLogDetailDto.getDetailId()); } catch (Exception e) { e.printStackTrace(); updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e); if (e.getMessage().contains("for column 'end_time' at row 1")){ updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), "注销日期格式错误!"); } else if (e.getMessage().contains("for column 'start_time' at row 1")){ updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), "启用日期格式错误!"); } // else if (e.getMessage().contains("### Error updating database")){ // updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), "未知错误,请联系管理员"); // } else { updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e); } } } @@ -120,13 +152,13 @@ * * @param assetImportLogDetailDto */ private void doImportData(AssetImportLogDetailDto assetImportLogDetailDto) { private void doImportData(AssetImportLogDetailDto assetImportLogDetailDto,OwnerCarDto ownerCarDto) throws Exception { JSONObject data = JSONObject.parseObject(assetImportLogDetailDto.getContent()); String[] o = JSON.parseObject(data.getString("otherItem"), String[].class); String otherItem = data.getString("otherItem"); data.put("otherItem", null); OwnerCarDto ownerCarDto = BeanConvertUtil.covertBean(data, OwnerCarDto.class); ownerCarDto = BeanConvertUtil.covertBean(data, OwnerCarDto.class); if (ownerCarDto.getOwnerName() == null || "".equals(ownerCarDto.getOwnerName())) { RoomDto roomDto = new RoomDto(); roomDto.setRoadName(ownerCarDto.getRoadName()); @@ -134,18 +166,23 @@ roomDto.setCommunityId(ownerCarDto.getCommunityId()); roomDto.setUnitNum(ownerCarDto.getUnitNum()); roomDto.setRoomNum(ownerCarDto.getRoomNum()); if (Vtil.defaultValue(roomDto.getRoomNum()).equals("")){ roomDto.setPropertyType("商铺"); } List<RoomDto> roomDtos = iroomInnerServiceSMOImpl.queryRooms(roomDto); if (roomDtos.isEmpty()) { throw new IllegalArgumentException("未填写业主且房屋不存在"); ownerCarDto.setRemark("房屋:" + roomDto.getRoadName() + "-" + roomDto.getFloorNum() + "-" + roomDto.getUnitNum() + "-" + Vtil.defaultValue(ownerCarDto.getRoomName()) + "未查询到"); // throw new IllegalArgumentException("未填写业主且房屋不存在"); } else if (roomDtos.size() > 1) { throw new IllegalArgumentException("该房屋存在多个业主"); ownerCarDto.setRemark("房屋:" + roomDto.getRoadName() + "-" + roomDto.getFloorNum() + "-" + roomDto.getUnitNum() + "-" + Vtil.defaultValue(ownerCarDto.getRoomName()) + "查询到多个房屋"); } else { OwnerRoomRelDto ownerRoomRelDto = new OwnerRoomRelDto(); ownerRoomRelDto.setRoomId(roomDtos.get(0).getRoomId()); List<OwnerRoomRelDto> ownerRoomRelDtos = ownerRoomRelInnerServiceSMOImpl.queryOwnerRoomRels(ownerRoomRelDto); if (ownerRoomRelDtos.isEmpty()) { throw new IllegalArgumentException("未填写业主且该房屋未绑定业主"); ownerCarDto.setRemark("房屋:" + roomDto.getRoadName() + "-" + roomDto.getFloorNum() + "-" + roomDto.getUnitNum() + "-" + Vtil.defaultValue(ownerCarDto.getRoomName()) + "未查询到业主"); // throw new IllegalArgumentException("未填写业主且该房屋未绑定业主"); } else { OwnerDto ownerDto = new OwnerDto(); ownerDto.setOwnerId(ownerRoomRelDtos.get(0).getOwnerId()); @@ -153,6 +190,7 @@ if (ownerDtos.isEmpty()) { throw new IllegalArgumentException("未知错误:00022"); } else { ownerCarDto.setOwnerId(ownerDtos.get(0).getOwnerId()); ownerCarDto.setOwnerName(ownerDtos.get(0).getName()); } } @@ -164,6 +202,9 @@ Object[] os = ownerCarDto.getOtherItem(); String communityId = ownerCarDto.getCommunityId(); JSONArray objects = JSONObject.parseArray(otherItem); OwnerCarDto carDto = new OwnerCarDto(); carDto.setCommunityId(ownerCarDto.getCommunityId()); carDto.setCarNum(ownerCarDto.getCarNum()); communityDto.setCommunityCode(defaultValue(os[1])); communityDto.setName(defaultValue(os[2])); List<CommunityDto> communityDtos = communityV1InnerServiceSMOImpl.queryCommunitys(communityDto); @@ -174,14 +215,21 @@ ownerCarDto.setCommunityId(communityDtos.get(0).getCommunityId()); communityDto.setCommunityId(communityDtos.get(0).getCommunityId()); //todo 导入业主信息 importOwnerData(ownerCarDto, os); // //todo 导入业主信息 // importOwnerData(ownerCarDto, os); OwnerCarPo ownerCarPo = BeanConvertUtil.covertBean(ownerCarDto, OwnerCarPo.class); ownerCarPo.setStartTime(ownerCarDto.getLogStartTime()); ownerCarPo.setEndTime(ownerCarDto.getLogEndTime()); //获取房屋名称 String carTypeCd = defaultValue(os[13]); String carTypeCd = defaultValue(os[12]); if (!carTypeCd.equals("")){ DictDto dictDto = new DictDto(); dictDto.setTableName("owner_car"); @@ -195,7 +243,6 @@ dictPo.setTableName("owner_car"); dictPo.setTableColumns("car_type_cd"); dictPo.setName(carTypeCd); dictPo.setDescription(carTypeCd); dictPo.setStatusCd(dictDtos1.get(dictDtos1.size() - 1).getStatusCd() + 100); int i = dictV1InnerServiceSMOImpl.saveDict(dictPo); if (i == 0) { @@ -208,6 +255,28 @@ else { ownerCarPo.setCarTypeCd("1001"); //默认主车辆 } int i1 = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(carDto); if (i1 > 0) { carDto.setOwnerId(ownerCarDto.getOwnerId()); carDto.setParkingType(Vtil.defaultValue(os[13])); carDto.setCarNum(null); carDto.setCarNumLikeRight_(ownerCarDto.getCarNum()); carDto.setRoadName(defaultValue(os[3])); carDto.setFloorNum(defaultValue(os[4])); carDto.setUnitNum(defaultValue(os[5])); carDto.setRoomNum(defaultValue(os[6])); carDto.setCarTypeCd(ownerCarPo.getCarTypeCd()); carDto.setUnitPricePerMonth(defaultValue(os[18])); int i2 = ownerCarInnerServiceSMOImpl.queryOwnerCarsCount(carDto); if (i2 > 0) { throw new IllegalArgumentException("重复的车辆:" + ownerCarDto.getCarNum()); } else { ownerCarDto.setCarNum(ownerCarDto.getCarNum() + "_" + i1); } } ParkingAreaDto parkingAreaDto = new ParkingAreaDto(); parkingAreaDto.setNum(ownerCarDto.getAreaNum()); @@ -284,6 +353,9 @@ roomDto.setFloorNum(defaultValue(os[4])); roomDto.setUnitNum(defaultValue(os[5])); roomDto.setRoomNum(defaultValue(os[6])); if (roomDto.getRoomNum() == null || roomDto.getRoomNum().equals("")) { roomDto.setPropertyType("商铺"); } List<RoomDto> roomDtos = iroomInnerServiceSMOImpl.queryRooms(roomDto); if (ListUtil.isNull(roomDtos)) { throw new IllegalArgumentException("未查询到房间"); @@ -494,6 +566,13 @@ //导入车辆 saveFee(ownerCarPo, os, ownerCarDto, assetImportLogDetailDto); ownerCarPo.setParkingType(Vtil.defaultValue(os[12])); ownerCarPo.setRoadName(defaultValue(os[3])); ownerCarPo.setFloorNum(defaultValue(os[4])); ownerCarPo.setUnitNum(defaultValue(os[5])); ownerCarPo.setRoomNum(defaultValue(os[6])); ownerCarV1InnerServiceSMOImpl.saveOwnerCar(ownerCarPo); ParkingSpacePo parkingSpacePo = new ParkingSpacePo(); parkingSpacePo.setPsId(psId); //车位id @@ -501,6 +580,52 @@ parkingSpaceV1InnerServiceSMOImpl.updateParkingSpace(parkingSpacePo); } public void saveFee(OwnerCarPo ownerCarPo, Object[] os, OwnerCarDto ownerCarDto, AssetImportLogDetailDto assetImportLogDetailDto) { List<FeeConfigDto> feeDtos = null; if (!ownerCarPo.getCommunityId().isEmpty()){ FeeConfigDto feeConfigDto = new FeeConfigDto(); feeConfigDto.setCommunityId(ownerCarPo.getCommunityId()); feeConfigDto.setSquarePrice(Vtil.processCount(ownerCarPo.getUnitPricePerMonth(), 2, null)); switch (Vtil.defaultValue(os[12])) { case "地面停车": feeConfigDto.setFeeTypeCd("630000003");break; case "地下停车": feeConfigDto.setFeeTypeCd("630000004");break; default: feeConfigDto.setFeeTypeCds(new String[]{"630000003","630000004"}); } if (feeConfigDto.getSquarePrice() == null) { throw new IllegalArgumentException("未查询到收费项"); } feeDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto); if (feeDtos.isEmpty()) { throw new IllegalArgumentException("单价`"+ownerCarPo.getUnitPricePerMonth()+"`未查询到收费项"); } } FeeConfigDto feeDto = feeDtos.get(0); PayFeePo payFeePo = new PayFeePo(); payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId)); payFeePo.setbId("-1"); payFeePo.setFeeTypeCd(feeDto.getFeeTypeCd()); payFeePo.setSecondaryFeeTypeCd(feeDto.getSecondaryFeeTypeCd()); payFeePo.setCommunityId(ownerCarDto.getCommunityId()); payFeePo.setPayerObjId(ownerCarPo.getCarId()); payFeePo.setIncomeObjId("102025062610470035"); payFeePo.setStartTime(Vtil.processDateEnhanced(ownerCarDto.getStartTime(), null, "yyyy-MM-dd HH:mm:ss", "start", feeDto.getStartTime())); payFeePo.setEndTime(payFeePo.getStartTime()); payFeePo.setUserId(ownerCarPo.getUserId()); payFeePo.setStatusCd("0"); payFeePo.setFeeFlag(feeDto.getFeeFlag()); payFeePo.setConfigId(feeDto.getConfigId()); payFeePo.setState("2008001"); payFeePo.setPayerObjType("6666"); payFeePo.setBatchId(assetImportLogDetailDto.getLogId()); payFeeV1InnerServiceSMO.savePayFee(payFeePo); List<FeeAttrPo> feeAttrPos = new ArrayList<>(); feeAttrPos.add( new FeeAttrPo(payFeePo.getFeeId(), payFeePo.getCommunityId(), GenerateCodeFactory.getGeneratorId("11"), "390010" , Vtil.processDateEnhanced(ownerCarDto.getEndTime(), null, "yyyy-MM-dd HH:mm:ss", "end", feeDto.getEndTime()))); feeAttrPos.add(new FeeAttrPo(payFeePo.getFeeId(), payFeePo.getCommunityId(), GenerateCodeFactory.getGeneratorId("11"), "390012" , "(" + ownerCarPo.getCarNum() + ")")); feeAttrInnerServiceSMO.saveFeeAttrs(feeAttrPos); } private String defaultValueToDate(Object o) { return o == null ? null : o.toString(); } service-job/src/main/java/com/java110/job/importData/adapt/ImportPhoneBillFeeV2QueueDataAdapt.java
@@ -32,6 +32,7 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @Service("importPhoneBillFeeV2QueueData") @@ -91,8 +92,10 @@ po.setId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_waterId)); po.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId)); sqlSessionTemplate.insert("phoneBillFlowServiceDaoImpl.savePhoneBillFlowInfo", BeanConvertUtil.beanCovertMap(po)); // addFee(po, data, assetImportLogDetailDto.getLogId(), assetImportLogDetailDto); if (po.getRemark3() != null){ po.setRemark1(Vtil.defaultValue(po.getRemark1()) + po.getRemark3()); } addFee(po, data, assetImportLogDetailDto.getLogId(), assetImportLogDetailDto); int i = 1; } @@ -110,19 +113,31 @@ payFeePo.setConfigId(Vtil.defaultValue(po.getConfigId(), "922026012136272690")); payFeePo.setPayerObjId(po.getRoomId()); payFeePo.setBatchId(batchId); payFeePo.setStartTime(po.getYear() + "-" + po.getMonth() + "-" + "01"); payFeePo.setEndTime(po.getYear() + "-" + po.getMonth() + "-" + DateUtil.getTotalDaysInMonth(Integer.parseInt(po.getYear()), Integer.parseInt(po.getMonth()))); payFeePo.setStartTime(po.getYear() + "-" + Vtil.getMonth(po.getMonth()) + "-" + "01"); payFeePo.setEndTime(Vtil.processDateEnhanced(DateUtil.getDateFromStringB(payFeePo.getStartTime()), "end", DateUtil.DATE_FORMATE_STRING_B, null ,"").split(" ")[0]); payFeePo.setPayerObjType(FeeDto.PAYER_OBJ_TYPE_ROOM); payFeePo.setbId("-1"); payFeePo.setFeeFlag(FeeDto.FEE_FLAG_ONCE); payFeePo.setState(FeeDto.STATE_FINISH); payFeePo.setState(FeeDto.STATE_DOING); payFeePo.setIncomeObjId("102025062610470035"); payFeePo.setUserId("-1"); reqJson.put("feeId", payFeePo.getFeeId()); payFeePo.setUserId("-1");; String id = po.getId(); po.setId(null); Object o = ((HashMap) sqlSessionTemplate.selectList("phoneBillFlowServiceDaoImpl.queryPhoneBillFlowsCount", BeanConvertUtil.beanCovertMap(po)).get(0)).get("count"); if (Integer.parseInt(Vtil.defaultValue(o, "1")) != 0) { throw new IllegalArgumentException("重复的话费"); } po.setId(id); // reqJson.put("feeId", payFeePo.getFeeId()); // String id = payFeePo.getFeeId(); // payFeePo.setFeeId(null); int i = payFeeV1InnerServiceSMOImpl.queryPayFeesCountByPo(payFeePo); // if (i > 0) { // throw new IllegalArgumentException("重复的话费"); // } // payFeePo.setFeeId(id); sqlSessionTemplate.insert("phoneBillFlowServiceDaoImpl.savePhoneBillFlowInfo", BeanConvertUtil.beanCovertMap(po)); int flag = payFeeV1InnerServiceSMOImpl.savePayFee(payFeePo); if (flag < 1) { throw new CmdException("保存数据失败"); @@ -155,11 +170,16 @@ ownerDto.setRoomId(reqJson.getString("objId")); List<OwnerDto> ownerDtos = ownerInnerServiceSMOImpl.queryOwnersByRoom(ownerDto); if (ownerDtos != null && ownerDtos.size() > 0) { feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(po.getCommunityId()); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_ID); feeAttrPo.setValue(ownerDtos.get(0).getOwnerId()); if (ownerDtos.size() > 1) { feeAttrPo.setValue("导入信息中不存在业主"); }else { feeAttrPo.setValue(ownerDtos.get(0).getOwnerId()); } feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); @@ -170,7 +190,11 @@ feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(po.getCommunityId()); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_LINK); feeAttrPo.setValue(ownerDtos.get(0).getLink()); if (ownerDtos.size() > 1) { feeAttrPo.setValue("导入信息中不存在业主"); }else { feeAttrPo.setValue(ownerDtos.get(0).getLink()); } feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); @@ -181,7 +205,11 @@ feeAttrPo = new FeeAttrPo(); feeAttrPo.setCommunityId(po.getCommunityId()); feeAttrPo.setSpecCd(FeeAttrDto.SPEC_CD_OWNER_NAME); feeAttrPo.setValue(ownerDtos.get(0).getName()); if (ownerDtos.size() > 1) { feeAttrPo.setValue("导入信息中不存在业主"); }else { feeAttrPo.setValue(ownerDtos.get(0).getName()); } feeAttrPo.setFeeId(payFeePo.getFeeId()); feeAttrPo.setAttrId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); flag = feeAttrInnerServiceSMOImpl.saveFeeAttr(feeAttrPo); @@ -206,7 +234,10 @@ } List<RoomDto> roomDtos = roomInnerServiceSMOImpl.queryRooms(roomDto); if (roomDtos.isEmpty()) { throw new IllegalArgumentException("未查询到房屋:" + po.getAddress()); po.setRoomId("1"); po.setRemark3("\n\n房屋:" + roomDto.getCommunityId() + "-" + roomDto.getRoadName() + "-" + roomDto.getFloorNum() + "-" + roomDto.getUnitNum() + "-" + roomDto.getRoomNum() + "不存在,该费用存入公司账户"); // ImportOwnerRoomDto importOwnerRoomDto = new ImportOwnerRoomDto();//房屋 // importOwnerRoomDto.setUserId(po.getUserId()); // importOwnerRoomDto.setRoomId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_roomId)); service-job/src/main/java/com/java110/job/importData/adapt/ImportRoomOwnerV2QueueDataAdapt.java
@@ -5,6 +5,8 @@ import com.java110.core.factory.GenerateCodeFactory; import com.java110.dto.community.CommunityDto; import com.java110.dto.dict.DictDto; import com.java110.dto.fee.FeeConfigDto; import com.java110.dto.fee.FeeDto; import com.java110.dto.importData.*; import com.java110.dto.log.AssetImportLogDetailDto; import com.java110.dto.menu.MenuDto; @@ -12,17 +14,21 @@ import com.java110.dto.owner.OwnerDto; import com.java110.dto.room.RoomDto; import com.java110.fee.api.ApplyRoomDiscountApi; import com.java110.fee.bmo.fee.IFeeBMO; import com.java110.fee.dao.IApplyRoomDiscountServiceDao; import com.java110.fee.dao.IPayFeeConfigV1ServiceDao; import com.java110.intf.community.ICommunityInnerServiceSMO; import com.java110.intf.community.IImportOwnerRoomInnerServiceSMO; import com.java110.intf.community.IMenuInnerServiceSMO; import com.java110.intf.dev.IDictV1InnerServiceSMO; import com.java110.intf.fee.IOweFeeCallableV1InnerServiceSMO; import com.java110.intf.fee.*; import com.java110.intf.user.IOwnerInnerServiceSMO; import com.java110.intf.user.IOwnerV1InnerServiceSMO; import com.java110.job.importData.DefaultImportData; import com.java110.job.importData.IImportDataAdapt; import com.java110.po.dict.DictPo; import com.java110.po.fee.FeeAttrPo; import com.java110.po.fee.PayFeePo; import com.java110.po.oweFeeCallable.OweFeeCallablePo; import com.java110.po.owner.OwnerPo; import com.java110.po.room.ApplyRoomDiscountPo; @@ -31,6 +37,7 @@ import com.java110.utils.cache.MappingCache; import com.java110.utils.util.Assert; import com.java110.utils.util.BeanConvertUtil; import com.java110.utils.util.DateUtil; import org.mybatis.spring.SqlSessionTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -73,7 +80,15 @@ @Autowired private ICommunityInnerServiceSMO communityInnerServiceSMOImpl; @Autowired private IFeeConfigInnerServiceSMO feeConfigInnerServiceSMOImpl; @Autowired private IPayFeeV1InnerServiceSMO payFeeV1InnerServiceSMO; @Autowired private IFeeAttrInnerServiceSMO feeAttrInnerServiceSMO; @Override public void importData(List<AssetImportLogDetailDto> assetImportLogDetailDtos) { importDatas(assetImportLogDetailDtos); @@ -90,7 +105,12 @@ updateImportLogDetailState(assetImportLogDetailDto.getDetailId()); } catch (Exception e) { e.printStackTrace(); updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e); if (e.getMessage().contains("### Error updating database")){ updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), "未知错误,请联系管理员"); } else { updateImportLogDetailState(assetImportLogDetailDto.getDetailId(), e); } } } @@ -123,32 +143,32 @@ DictDto dictDto = new DictDto(); dictDto.setTableName("building_room"); dictDto.setTableColumns("room_sub_type"); dictDto.setName(defaultValue(objects.get(1))); dictDto.setName(Vtil.defaultValue(objects.get(1))); List<DictDto> dictDtos = dictV1InnerServiceSMOImpl.queryDictAndSpecs(dictDto); if (dictDtos.isEmpty()) { DictPo dictPo = new DictPo(); dictPo.setStatusCd(GenerateCodeFactory.getGeneratorId("2")); dictPo.setTableName("building_room"); dictPo.setTableColumns("room_sub_type"); dictPo.setName(defaultValue(objects.get(1))); dictPo.setName(Vtil.defaultValue(objects.get(1))); dictV1InnerServiceSMOImpl.saveDict(dictPo); dictDtos = dictV1InnerServiceSMOImpl.queryDictAndSpecs(dictDto); if (dictDtos.isEmpty()) { throw new IllegalArgumentException("导入失败:字典中不存在物业类型:" + defaultValue(objects.get(1))); throw new IllegalArgumentException("导入失败:字典中不存在物业类型:" + Vtil.defaultValue(objects.get(1))); } } importOwnerRoomDto.setRoomSubType(dictDtos.get(0).getStatusCd()); //---------- importOwnerRoomDto.setPropertyType(defaultValue(objects.get(2)));//住宅类型 importOwnerRoomDto.setPropertyType(Vtil.defaultValue(objects.get(2)));//住宅类型 //--------匹配小区 CommunityDto communityDto = new CommunityDto(); communityDto.setCommunityCode(defaultValue(objects.get(3))); communityDto.setName(defaultValue(objects.get(4))); communityDto.setCommunityCode(Vtil.defaultValue(objects.get(3))); communityDto.setName(Vtil.defaultValue(objects.get(4))); List<CommunityDto> communityDtos = communityInnerServiceSMOImpl.queryCommunitys(communityDto); if (communityDtos.isEmpty()) { throw new IllegalArgumentException("导入失败:小区中不存在小区编码为‘" + defaultValue(objects.get(1)) + "’的小区"); throw new IllegalArgumentException("导入失败:小区中不存在小区编码为‘" + Vtil.defaultValue(objects.get(1)) + "’的小区"); } else if (communityDtos.size() > 1) { String communityNames = communityDtos.stream() .map(CommunityDto::getName) // 提取每个小区的名称 @@ -160,13 +180,14 @@ importOwnerRoomDto.setCommunityId(communityId);//小区编号 //--------- importOwnerRoomDto.setRoadName(defaultValue(objects.get(5)));//路名 importOwnerRoomDto.setFloorNum(defaultValue(objects.get(6)));//弄 importOwnerRoomDto.setUnitNum(defaultValue(objects.get(7)));//门 importOwnerRoomDto.setRoomNum(defaultValue(objects.get(8)));//室 importOwnerRoomDto.setDoorRoomNum(defaultValue(objects.get(9)));//门市号 importOwnerRoomDto.setPropertyAddress(defaultValue(objects.get(10)));//业主地址 importOwnerRoomDto.setRoomBuyer(defaultValue(objects.get(11)));//购房人 importOwnerRoomDto.setRoadName(Vtil.defaultValue(objects.get(5)));//路名 importOwnerRoomDto.setFloorNum(Vtil.defaultValue(objects.get(6)));//弄 importOwnerRoomDto.setUnitNum(Vtil.defaultValue(objects.get(7)));//门 importOwnerRoomDto.setRoomNum(Vtil.defaultValue(objects.get(8)));//室 importOwnerRoomDto.setDoorRoomNum(Vtil.defaultValue(objects.get(9)));//门市号 importOwnerRoomDto.setPropertyAddress(Vtil.defaultValue(objects.get(10)));//业主地址 importOwnerRoomDto.setRoomBuyer(Vtil.defaultValue(objects.get(11)));//购房人 RoomDto roomDto = new RoomDto(); roomDto.setCommunityId(importOwnerRoomDto.getCommunityId()); @@ -174,16 +195,30 @@ roomDto.setFloorNum(importOwnerRoomDto.getFloorNum()); roomDto.setUnitNum(importOwnerRoomDto.getUnitNum()); roomDto.setRoomNum(importOwnerRoomDto.getRoomNum()); if (roomDto.getRoomNum() ==null || roomDto.getRoomNum().equals("")){ roomDto.setPropertyType("商铺"); } List<Object> objects1 = sqlSessionTemplate.selectList("roomServiceDaoImpl.getRoomInfo", BeanConvertUtil.beanCovertMap(roomDto)); if (!objects1.isEmpty()) { throw new IllegalArgumentException("重复的房屋"); } List<FeeConfigDto> feeDtos = null; if (!importOwnerRoomDto.getCommunityId().isEmpty()){ FeeConfigDto feeConfigDto = new FeeConfigDto(); feeConfigDto.setCommunityId(importOwnerRoomDto.getCommunityId()); feeConfigDto.setSecondaryFeeTypeCdName(importOwnerRoomDto.getPropertyType()); feeDtos = feeConfigInnerServiceSMOImpl.queryFeeConfigs(feeConfigDto); if (feeDtos.isEmpty()) { throw new IllegalArgumentException("物业类型`"+importOwnerRoomDto.getPropertyType()+"`未查询到收费项"); } } //---------家庭成员、租客 OwnerPo ownerPoTo3 = new OwnerPo();// if (!defaultValue(objects.get(13)).isEmpty()) { String link = defaultValue(objects.get(13)); if (!Vtil.defaultValue(objects.get(13)).isEmpty()) { String link = Vtil.defaultValue(objects.get(13)); OwnerDto ownerDto = new OwnerDto(); ownerDto.setLink(link); ownerDto.setCommunityId(communityId); @@ -196,15 +231,15 @@ ownerPoTo3.setState(OwnerDto.STATE_FINISH); ownerPoTo3.setPersonType(OwnerDto.PERSON_TYPE_PERSON); ownerPoTo3.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_MEMBER); ownerPoTo3.setName(defaultValue(objects.get(12))); ownerPoTo3.setName(Vtil.defaultValue(objects.get(12))); ownerPoTo3.setLink(link); ownerPoTo3.setSex("2"); ownerPoTo3.setPersonRole(OwnerDto.PERSON_ROLE_MEMBER); } OwnerPo ownerPoTo2 = new OwnerPo();//TODO 租客未导入 if (!defaultValue(objects.get(15)).isEmpty()) { String link = defaultValue(objects.get(15)); if (!Vtil.defaultValue(objects.get(15)).isEmpty()) { String link = Vtil.defaultValue(objects.get(15)); OwnerDto ownerDto = new OwnerDto(); ownerDto.setLink(link); ownerDto.setCommunityId(communityId); @@ -218,41 +253,41 @@ ownerPoTo2.setState(OwnerDto.STATE_FINISH); ownerPoTo2.setPersonType(OwnerDto.PERSON_ROLE_RENT); ownerPoTo2.setOwnerTypeCd(OwnerDto.OWNER_TYPE_CD_MEMBER); ownerPoTo2.setName(defaultValue(objects.get(21+a))); ownerPoTo2.setName(Vtil.defaultValue(objects.get(21+a))); ownerPoTo2.setLink(link); ownerPoTo2.setSex("2"); ownerPoTo2.setPersonRole(OwnerDto.PERSON_ROLE_MEMBER); } //--------- importOwnerRoomDto.setBuiltUpArea(defaultValue(objects.get(16+a)));//面积 importOwnerRoomDto.setRoomArea(defaultValue(objects.get(16+a)));//面积 importOwnerRoomDto.setRoomRent(defaultValue(objects.get(16+a)));//面积 importOwnerRoomDto.setBuyDate(defaultValueToDate(objects.get(20+a)));//购入日期 importOwnerRoomDto.setSellDate(defaultValueToDate(objects.get(22+a)));//卖出日期 importOwnerRoomDto.setSellState(defaultValue(objects.get(23+a)));//房屋状态 importOwnerRoomDto.setBuiltUpArea(Vtil.defaultValue(objects.get(16)));//面积 importOwnerRoomDto.setRoomArea(Vtil.defaultValue(objects.get(16)));//面积 importOwnerRoomDto.setRoomRent(Vtil.defaultValue(objects.get(16)));//面积 importOwnerRoomDto.setBuyDate(Vtil.defaultValueToDate(objects.get(28)));//购入日期 importOwnerRoomDto.setSellDate(Vtil.defaultValueToDate(objects.get(26)));//卖出日期 importOwnerRoomDto.setSellState(Vtil.defaultValue(objects.get(23+a)));//房屋状态 importOwnerRoomDto.setEoc(defaultNum(objects.get(24+a)).toString());//设备运行费 importOwnerRoomDto.setEoc(Vtil.defaultNum(objects.get(24+a)).toString());//设备运行费 //-----TODO 待导入 催缴信息 if (!defaultValue(objects.get(27)).isEmpty()) { if (!Vtil.defaultValue(objects.get(31)).isEmpty()) { OwnerCollectionDto ownerCollection = new OwnerCollectionDto(); ownerCollection.setOwnerId(importOwnerRoomDto.getOwnerId()); ownerCollection.setRoomId(importOwnerRoomDto.getRoomId()); ownerCollection.setCollectionStartDate(defaultValueToDate(objects.get(25+a))); ownerCollection.setCollectionEndDate(defaultValueToDate(objects.get(26+a))); ownerCollection.setAmount(defaultValue(objects.get(27+a))); ownerCollection.setFirstCollector(defaultValue(objects.get(28+a))); ownerCollection.setSecondCollectorName(defaultValue(objects.get(29+a))); ownerCollection.setSecondCollectorPhone(defaultValue(objects.get(30+a))); ownerCollection.setSecondCollectorAddress(defaultValue(objects.get(31+a))); ownerCollection.setReceiptNumber(defaultValue(objects.get(32+a))); ownerCollection.setReceiptPhotoUrl(defaultValue(objects.get(33+a))); ownerCollection.setRemark(defaultValue(objects.get(34+a))); ownerCollection.setCollectionStartDate(Vtil.defaultValueToDate(objects.get(25+a))); ownerCollection.setCollectionEndDate(Vtil.defaultValueToDate(objects.get(26+a))); ownerCollection.setAmount(Vtil.defaultValue(objects.get(27+a))); ownerCollection.setFirstCollector(Vtil.defaultValue(objects.get(28+a))); ownerCollection.setSecondCollectorName(Vtil.defaultValue(objects.get(29+a))); ownerCollection.setSecondCollectorPhone(Vtil.defaultValue(objects.get(30+a))); ownerCollection.setSecondCollectorAddress(Vtil.defaultValue(objects.get(31+a))); ownerCollection.setReceiptNumber(Vtil.defaultValue(objects.get(32+a))); ownerCollection.setReceiptPhotoUrl(Vtil.defaultValue(objects.get(33+a))); ownerCollection.setRemark(Vtil.defaultValue(objects.get(34+a))); } //----- //-----打折信息 TODO 未添加重复校验 if (!defaultValue(objects.get(38+a)).isEmpty()) { if (!Vtil.defaultValue(objects.get(42)).isEmpty()) { ApplyRoomDiscountPo applyRoomDiscountPo = new ApplyRoomDiscountPo();//打折 applyRoomDiscountPo.setArdId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_ardId)); applyRoomDiscountPo.setCommunityId(importOwnerRoomDto.getCommunityId()); @@ -260,50 +295,40 @@ applyRoomDiscountPo.setRoomName(importOwnerRoomDto.getPropertyAddress()); applyRoomDiscountPo.setDiscountId("132025112781200067"); applyRoomDiscountPo.setApplyType("152025112756040048"); applyRoomDiscountPo.setFixedDiscountValue(defaultNum(objects.get(36+a))); applyRoomDiscountPo.setDiscountedAmount(defaultNum(objects.get(37+a))); // 2. 定义格式化器(注意:SimpleDateFormat 线程不安全,每次使用新建实例) SimpleDateFormat sdf = new SimpleDateFormat("yyyy/M"); try { SimpleDateFormat outputSdf = new SimpleDateFormat("yyyy-MM-dd"); applyRoomDiscountPo.setStartTime(defaultValueToDate(objects.get(38+a))); applyRoomDiscountPo.setEndTime(defaultValueToDate(objects.get(39+a))); }catch (Exception e){ throw new IllegalArgumentException("导入失败:处理折扣日期区间时出错"); } applyRoomDiscountPo.setDiscountArchiveDate(defaultValueToDate(objects.get(40+a))); applyRoomDiscountPo.setCreateRemark(defaultValue(objects.get(41+a))); applyRoomDiscountPo.setCheckRemark("审批人:" + defaultValue(objects.get(42+a))); applyRoomDiscountPo.setReviewRemark("审批人:" + defaultValue(objects.get(43+a))); applyRoomDiscountPo.setFixedDiscountValue(Vtil.defaultNum(objects.get(36+a))); applyRoomDiscountPo.setDiscountedAmount(Vtil.defaultNum(objects.get(37+a))); applyRoomDiscountPo.setStartTime(Vtil.defaultValueToDate(objects.get(38+a),"start", null)); applyRoomDiscountPo.setEndTime(Vtil.defaultValueToDate(objects.get(39+a), "end", null)); applyRoomDiscountPo.setDiscountArchiveDate(Vtil.defaultValueToDate(objects.get(40+a))); applyRoomDiscountPo.setCreateRemark(Vtil.defaultValue(objects.get(41+a))); applyRoomDiscountPo.setCheckRemark("审批人:" + Vtil.defaultValue(objects.get(42+a))); applyRoomDiscountPo.setReviewRemark("审批人:" + Vtil.defaultValue(objects.get(43+a))); applyRoomDiscountPo.setCreateUserTel("无"); applyRoomDiscountPo.setCreateUserName("由系统导入"); applyRoomDiscountPo.setState("4"); applyRoomDiscountPo.setStatusCd("0"); applyRoomDiscountPo.setInUse("0"); applyRoomDiscountPo.setReturnWay("1001"); applyRoomDiscountPo.setRelatedAttachments(defaultValue(objects.get(44+a))); applyRoomDiscountPo.setRelatedAttachments(Vtil.defaultValue(objects.get(44+a))); try { applyRoomDiscountServiceDaoImpl.saveApplyRoomDiscountInfo(BeanConvertUtil.beanCovertMap(applyRoomDiscountPo)); }catch (Exception e){ throw new IllegalArgumentException("导入失败:打折信息导入存在错误"); } } //----- //-----业主信息 importOwnerRoomDto.setTel(defaultValue(objects.get(45+a)));//手机号 importOwnerRoomDto.setIdCard(defaultValue(objects.get(46+a)));//身份证 importOwnerRoomDto.setAddress(defaultValue(objects.get(47+a)));//TODO 导入逻辑未添加该字段 联络地址 importOwnerRoomDto.setSex(defaultValue(objects.get(48+a)).equals("") ?"2" : defaultValue(objects.get(48+a))); importOwnerRoomDto.setOwnerName(defaultValue(objects.get(11))); importOwnerRoomDto.setHouseholdPoliceStation(defaultValue(objects.get(50+a))); importOwnerRoomDto.setPropertyCertificateNo(defaultValue(objects.get(51+a))); importOwnerRoomDto.setIsEvChargerInstalled(defaultValue(objects.get(52+a))); importOwnerRoomDto.setTel(Vtil.defaultValue(objects.get(45+a)));//手机号 importOwnerRoomDto.setIdCard(Vtil.defaultValue(objects.get(46+a)));//身份证 importOwnerRoomDto.setAddress(Vtil.defaultValue(objects.get(47+a)));//TODO 导入逻辑未添加该字段 联络地址 importOwnerRoomDto.setSex(Vtil.defaultValue(objects.get(48+a)).equals("") ?"2" : Vtil.defaultValue(objects.get(48+a))); importOwnerRoomDto.setOwnerName(Vtil.defaultValue(objects.get(11))); importOwnerRoomDto.setHouseholdPoliceStation(Vtil.defaultValue(objects.get(50+a))); importOwnerRoomDto.setPropertyCertificateNo(Vtil.defaultValue(objects.get(51+a))); importOwnerRoomDto.setIsEvChargerInstalled(Vtil.defaultValue(objects.get(52+a))); if (Vtil.defaultValue(objects.get(57+a),null) != null) { if (Vtil.defaultValue(objects.get(61),null) != null) { OweFeeCallablePo oweFeeCallablePo = new OweFeeCallablePo(); oweFeeCallablePo.setOfcId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_attrId)); oweFeeCallablePo.setAmountdOwed("0"); @@ -315,23 +340,23 @@ oweFeeCallablePo.setConfigId(""); oweFeeCallablePo.setOwnerId(importOwnerRoomDto.getOwnerId()); oweFeeCallablePo.setOwnerName(importOwnerRoomDto.getOwnerName()); oweFeeCallablePo.setPayerObjId(""); oweFeeCallablePo.setPayerObjId(importOwnerRoomDto.getRoomId()); oweFeeCallablePo.setPayerObjName(importOwnerRoomDto.getPropertyAddress()); oweFeeCallablePo.setPayerObjType("3333"); oweFeeCallablePo.setRemark(defaultValue(objects.get(57+a))); oweFeeCallablePo.setRemark(Vtil.defaultValue(objects.get(57+a)) + "\n\n催收时段:" + Vtil.defaultValueToDate(objects.get(61))); oweFeeCallablePo.setStaffId("302025062612580518"); oweFeeCallablePo.setStaffName("刘志勇"); oweFeeCallablePo.setState(OweFeeCallableDto.STATE_COMPLETE); oweFeeCallablePo.setStartTime(defaultValueToDate(objects.get(56+a)));//TODO 时间段需要拆分 oweFeeCallablePo.setEndTime(defaultValueToDate(objects.get(56+a))); oweFeeCallablePo.setCreateTime(defaultValueToDate(objects.get(53+a))); // oweFeeCallablePo.setStartTime(Vtil.defaultValueToDate(objects.get(61)));//TODO 时间段需要拆分 // oweFeeCallablePo.setEndTime(Vtil.defaultValueToDate(objects.get(61))); oweFeeCallablePo.setCreateTime(Vtil.defaultValueToDate(objects.get(53+a))); int flag = oweFeeCallableV1InnerServiceSMOImpl.saveOweFeeCallable(oweFeeCallablePo); if (flag < 1) { throw new IllegalArgumentException("催收信息导入失败"); } for (int i = 0; i < 5 ; i++) { int index = i*4 + 59+a; int index = i*4 + 65; if(objects.get(index) == null){ break; } @@ -340,11 +365,11 @@ houseMailRecord.setOwnerId(importOwnerRoomDto.getOwnerId()); houseMailRecord.setHouseId(importOwnerRoomDto.getRoomId()); houseMailRecord.setCallableId(oweFeeCallablePo.getOfcId()); houseMailRecord.setCreateTime(defaultValueToDate(objects.get(index))); houseMailRecord.setMailNo(defaultValue(objects.get(index+1))); houseMailRecord.setServiceFee(defaultValue(objects.get(index+2))); houseMailRecord.setMailResult(defaultValue(objects.get(index+3))); houseMailRecord.setRemark(defaultValue(objects.get(79+a))); houseMailRecord.setCreateTime(Vtil.defaultValueToDate(objects.get(index))); houseMailRecord.setMailNo(Vtil.defaultValue(objects.get(index+1))); houseMailRecord.setServiceFee(Vtil.defaultValue(objects.get(index+2))); houseMailRecord.setMailResult(Vtil.defaultValue(objects.get(index+3))); houseMailRecord.setRemark(Vtil.defaultValue(objects.get(79+a))); int save = applyRoomDiscountServiceDaoImpl.saveHouseMailRecord(BeanConvertUtil.beanCovertMap(houseMailRecord)); } @@ -352,18 +377,18 @@ //----对方收款单位表 PayeeReceiveInfoPo payeeReceiveInfoPo = new PayeeReceiveInfoPo(); payeeReceiveInfoPo.setCallableId(oweFeeCallablePo.getOfcId()); payeeReceiveInfoPo.setCallerName(defaultValue(objects.get(80+a))); payeeReceiveInfoPo.setContactInfo(defaultValue(objects.get(81+a))); payeeReceiveInfoPo.setPayeeInfo(defaultValue(objects.get(82+a))); payeeReceiveInfoPo.setInvoiceNo(defaultValue(objects.get(83+a))); payeeReceiveInfoPo.setInvoiceDate(objects.getDate(84+a)); payeeReceiveInfoPo.setReceiptNo(defaultValue(objects.get(85+a))); payeeReceiveInfoPo.setReceiptDate(objects.getDate(86+a)); payeeReceiveInfoPo.setReceiptNote(defaultValue(objects.get(87+a))); payeeReceiveInfoPo.setReceiptNoteDate(objects.getDate(88+a)); payeeReceiveInfoPo.setImageFile(defaultValue(objects.get(89+a))); payeeReceiveInfoPo.setOurCompanyReceiveDate(objects.getDate(90+a)); payeeReceiveInfoPo.setAttachmentFile(defaultValue(objects.get(91+a))); payeeReceiveInfoPo.setCallerName(Vtil.defaultValue(objects.get(88))); payeeReceiveInfoPo.setContactInfo(Vtil.defaultValue(objects.get(89))); payeeReceiveInfoPo.setPayeeInfo(Vtil.defaultValue(objects.get(90))); payeeReceiveInfoPo.setInvoiceNo(Vtil.defaultValue(objects.get(91))); payeeReceiveInfoPo.setInvoiceDate(objects.getDate(92)); payeeReceiveInfoPo.setReceiptNo(Vtil.defaultValue(objects.get(93))); payeeReceiveInfoPo.setReceiptDate(objects.getDate(94)); payeeReceiveInfoPo.setReceiptNote(Vtil.defaultValue(objects.get(95))); payeeReceiveInfoPo.setReceiptNoteDate(objects.getDate(96)); payeeReceiveInfoPo.setImageFile(Vtil.defaultValue(objects.get(97))); payeeReceiveInfoPo.setOurCompanyReceiveDate(objects.getDate(98)); payeeReceiveInfoPo.setAttachmentFile(Vtil.defaultValue(objects.get(99))); payeeReceiveInfoPo.setOwnerId(importOwnerRoomDto.getOwnerId()); payeeReceiveInfoPo.setRoomId(importOwnerRoomDto.getRoomId()); int insert = sqlSessionTemplate.insert("payeeReceiveInfoServiceDaoImpl.savePayeeReceiveInfo", @@ -372,102 +397,103 @@ //---- //----法院审理程序 if (!defaultValue(objects.get(132+a)).isEmpty()) { if (!Vtil.defaultValue(objects.get(141)).isEmpty()) { CourtTrialProcedure courtTrialProcedure = new CourtTrialProcedure(); courtTrialProcedure.setCallableId(oweFeeCallablePo.getOfcId()); courtTrialProcedure.setOwnerId(importOwnerRoomDto.getOwnerId()); courtTrialProcedure.setAcceptCourtName(defaultValue(objects.get(132+a))); courtTrialProcedure.setJudgeName(defaultValue(objects.get(133+a))); courtTrialProcedure.setJudgeContact(defaultValue(objects.get(134+a))); courtTrialProcedure.setJudgeNoticeAcceptDate(defaultValueToDate(objects.get(135+a))); courtTrialProcedure.setCourtMediationDate(defaultValueToDate(objects.get(136+a))); courtTrialProcedure.setMediationResult(defaultValue(objects.get(137+a))); courtTrialProcedure.setSubpoenaSignDate(defaultValueToDate(objects.get(138+a))); courtTrialProcedure.setUndeliveredDate(defaultValueToDate(objects.get(139+a))); courtTrialProcedure.setCourtSessionDate1(defaultValueToDate(objects.get(140+a))); courtTrialProcedure.setCourtSessionDate2(defaultValueToDate(objects.get(141+a))); courtTrialProcedure.setCaseNumber(defaultValue(objects.get(142+a))); courtTrialProcedure.setCourtSessionResult(defaultValue(objects.get(143+a))); courtTrialProcedure.setJudgmentDate(defaultValueToDate(objects.get(144+a))); courtTrialProcedure.setJudgmentResult(defaultValue(objects.get(145+a))); courtTrialProcedure.setRemark(defaultValue(objects.get(146+a))); courtTrialProcedure.setAcceptCourtName(Vtil.defaultValue(objects.get(132+a))); courtTrialProcedure.setJudgeName(Vtil.defaultValue(objects.get(133+a))); courtTrialProcedure.setJudgeContact(Vtil.defaultValue(objects.get(134+a))); courtTrialProcedure.setJudgeNoticeAcceptDate(Vtil.defaultValueToDate(objects.get(135+a))); courtTrialProcedure.setCourtMediationDate(Vtil.defaultValueToDate(objects.get(136+a))); courtTrialProcedure.setMediationResult(Vtil.defaultValue(objects.get(137+a))); courtTrialProcedure.setSubpoenaSignDate(Vtil.defaultValueToDate(objects.get(138+a))); courtTrialProcedure.setUndeliveredDate(Vtil.defaultValueToDate(objects.get(139+a))); courtTrialProcedure.setCourtSessionDate1(Vtil.defaultValueToDate(objects.get(140+a))); courtTrialProcedure.setCourtSessionDate2(Vtil.defaultValueToDate(objects.get(141+a))); courtTrialProcedure.setCaseNumber(Vtil.defaultValue(objects.get(142+a))); courtTrialProcedure.setCourtSessionResult(Vtil.defaultValue(objects.get(143+a))); courtTrialProcedure.setJudgmentDate(Vtil.defaultValueToDate(objects.get(144+a))); courtTrialProcedure.setJudgmentResult(Vtil.defaultValue(objects.get(145+a))); courtTrialProcedure.setRemark(Vtil.defaultValue(objects.get(146+a))); applyRoomDiscountServiceDaoImpl.saveCourtTrialProcedure(BeanConvertUtil.beanCovertMap(courtTrialProcedure)); } //----- //法院执行程序 if (!defaultValue(objects.get(147+a)).isEmpty()) { if (!Vtil.defaultValue(objects.get(147+a)).isEmpty()) { CourtExecutionProcedure courtExecutionProcedure = new CourtExecutionProcedure(); courtExecutionProcedure.setCallableId(oweFeeCallablePo.getOfcId()); courtExecutionProcedure.setOwnerId(importOwnerRoomDto.getOwnerId()); courtExecutionProcedure.setApplyTime(defaultValueToDate(objects.get(147+a))); courtExecutionProcedure.setJudgmentDocNumber(defaultValue(objects.get(148+a))); courtExecutionProcedure.setArrearsPeriod(defaultValue(objects.get(149+a))); courtExecutionProcedure.setArrearsAmount(defaultValue(objects.get(150+a))); courtExecutionProcedure.setLateFee(defaultValue(objects.get(151+a))); courtExecutionProcedure.setAcceptanceFee(defaultValue(objects.get(152+a))); courtExecutionProcedure.setOtherFee(defaultValue(objects.get(153+a))); courtExecutionProcedure.setTotalAmount(defaultValue(objects.get(154+a))); courtExecutionProcedure.setRemark(defaultValue(objects.get(160+a))); courtExecutionProcedure.setApplyTime(Vtil.defaultValueToDate(objects.get(147+a))); courtExecutionProcedure.setJudgmentDocNumber(Vtil.defaultValue(objects.get(148+a))); courtExecutionProcedure.setArrearsPeriod(Vtil.defaultValue(objects.get(149+a))); courtExecutionProcedure.setArrearsAmount(Vtil.defaultValue(objects.get(150+a))); courtExecutionProcedure.setLateFee(Vtil.defaultValue(objects.get(151+a))); courtExecutionProcedure.setAcceptanceFee(Vtil.defaultValue(objects.get(152+a))); courtExecutionProcedure.setOtherFee(Vtil.defaultValue(objects.get(153+a))); courtExecutionProcedure.setTotalAmount(Vtil.defaultValue(objects.get(154+a))); courtExecutionProcedure.setRemark(Vtil.defaultValue(objects.get(160+a))); applyRoomDiscountServiceDaoImpl.saveCourtExecutionProcedure(BeanConvertUtil.beanCovertMap(courtExecutionProcedure)); } } //----添加电联 List<MailCallRecord> mailCallRecords = new ArrayList<MailCallRecord>(); for (int i = 0 ; i < 9 ; i++) { int index = i * 3 + 92; if(defaultValue(objects.get(index)).isEmpty()){ //----添加电联 List<Object> mailCallRecords = new ArrayList<Object>(); for (int i = 0 ; i < 9 ; i++) { int index = i * 3 + 86; if(Vtil.defaultValue(objects.get(index)).isEmpty()){ // if (i == 0){ // MailCallRecord mailCallRecord = new MailCallRecord(); // mailCallRecord.setRemark(objects.get(115).toString()); // // int save = applyRoomDiscountServiceDaoImpl.saveMailCallRecord(BeanConvertUtil.beanCovertMap(mailCallRecord)); // } break; break; } MailCallRecord mailCallRecord = new MailCallRecord(); mailCallRecord.setMailId(oweFeeCallablePo.getOfcId()); mailCallRecord.setCallDate(Vtil.defaultValueToDate(objects.get(index + (i == 0 ? 0 : 12)))); mailCallRecord.setCallResult(Vtil.defaultValue(objects.get(index+1 + (i == 0 ? 0 : 12)))); mailCallRecord.setCallContact(Vtil.defaultValue(objects.get(index+2 + 12))); mailCallRecord.setRemark(Vtil.defaultValue(objects.get(125))); mailCallRecords.add(mailCallRecord); } MailCallRecord mailCallRecord = new MailCallRecord(); mailCallRecord.setMailId(importOwnerRoomDto.getOwnerId()); mailCallRecord.setCallDate(defaultValueToDate(objects.get(index))); mailCallRecord.setCallResult(defaultValue(objects.get(index+1))); mailCallRecord.setCallContact(defaultValue(objects.get(index+2))); mailCallRecord.setRemark(defaultValue(objects.get(119))); mailCallRecords.add(mailCallRecord); if (mailCallRecords.size() > 0) { Map<String, Object> param = new HashMap<>(); param.put("mailCallRecordList", BeanConvertUtil.beanCovertMapList(mailCallRecords)); sqlSessionTemplate.insert("mailCallRecordServiceDaoImpl.batchSaveMailCallRecord", param); } //---- } if (mailCallRecords.size() > 0) { Map<String, Object> param = new HashMap<>(); param.put("mailCallRecordList", BeanConvertUtil.beanCovertMap(mailCallRecords)); sqlSessionTemplate.insert("mailCallRecordServiceDaoImpl.batchSaveMailCallRecord", param); } //---- //产调日期 if (!defaultValue(objects.get(120)).isEmpty()) { if (!Vtil.defaultValue(objects.get(126)).isEmpty()) { OwnerPropertySurvey ownerPropertySurvey = new OwnerPropertySurvey(); ownerPropertySurvey.setOwnerId(importOwnerRoomDto.getOwnerId()); ownerPropertySurvey.setRoomId(importOwnerRoomDto.getRoomId()); ownerPropertySurvey.setSurveyWarrantApplyDate(defaultValueToDate(objects.get(123))); ownerPropertySurvey.setPropertySurveyDate(defaultValueToDate(objects.get(120))); ownerPropertySurvey.setName(defaultValue(objects.get(121))); ownerPropertySurvey.setExtraDate(defaultValueToDate(objects.get(122))); ownerPropertySurvey.setSurveyWarrantApplyDate(Vtil.defaultValueToDate(objects.get(129))); ownerPropertySurvey.setPropertySurveyDate(Vtil.defaultValueToDate(objects.get(126))); ownerPropertySurvey.setName(Vtil.defaultValue(objects.get(127))); ownerPropertySurvey.setExtraDate(Vtil.defaultValueToDate(objects.get(128))); int save = applyRoomDiscountServiceDaoImpl.saveOwnerPropertySurvey(BeanConvertUtil.beanCovertMap(ownerPropertySurvey)); } //---- //诉讼 if (!defaultValue(objects.get(124)).isEmpty()) { if (!Vtil.defaultValue(objects.get(130)).isEmpty()) { LitigationInfoPo litigationInfoPo = new LitigationInfoPo(); litigationInfoPo.setLitigationDate(defaultValue(objects.get(124))); litigationInfoPo.setArrearsPeriod(defaultValue(objects.get(125))); litigationInfoPo.setArrearsAmount(defaultValue(objects.get(126))); litigationInfoPo.setLateFee(defaultValue(objects.get(127))); litigationInfoPo.setAcceptanceFee(defaultValue(objects.get(128))); litigationInfoPo.setOtherFee(defaultValue(objects.get(129))); litigationInfoPo.setTotalAmount(defaultValue(objects.get(130))); litigationInfoPo.setSubmitter(defaultValue(objects.get(131))); litigationInfoPo.setLitigationDate(Vtil.defaultValue(objects.get(130))); litigationInfoPo.setArrearsPeriod(Vtil.defaultValue(objects.get(131))); litigationInfoPo.setArrearsAmount(Vtil.defaultValue(objects.get(132))); litigationInfoPo.setLateFee(Vtil.defaultValue(objects.get(133))); litigationInfoPo.setAcceptanceFee(Vtil.defaultValue(objects.get(134))); litigationInfoPo.setOtherFee(Vtil.defaultValue(objects.get(135))); litigationInfoPo.setTotalAmount(Vtil.defaultValue(objects.get(136))); litigationInfoPo.setSubmitter(Vtil.defaultValue(objects.get(137))); litigationInfoPo.setOwnerId(importOwnerRoomDto.getOwnerId()); sqlSessionTemplate.insert("litigationInfoServiceDaoImpl.saveLitigationInfo", BeanConvertUtil.beanCovertMap(litigationInfoPo)); @@ -488,41 +514,33 @@ ownerV1InnerServiceSMOImpl.saveOwner(ownerPoTo3); } } } private String defaultValueToDate(Object o) { // 空值直接返回null(原有逻辑) if (o == null || o.toString().isEmpty() || o.toString().equals("0")) { return null; for (int i = 0 ; i < feeDtos.size(); i++) { FeeConfigDto feeDto = feeDtos.get(i); PayFeePo payFeePo = new PayFeePo(); payFeePo.setFeeId(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_feeId)); payFeePo.setbId("-1"); payFeePo.setFeeTypeCd(feeDto.getFeeTypeCd()); payFeePo.setSecondaryFeeTypeCd(feeDto.getSecondaryFeeTypeCd()); payFeePo.setCommunityId(importOwnerRoomDto.getCommunityId()); payFeePo.setPayerObjId(importOwnerRoomDto.getRoomId()); payFeePo.setIncomeObjId("102025062610470035"); payFeePo.setStartTime(feeDto.getStartTime()); payFeePo.setEndTime(feeDto.getStartTime()); payFeePo.setUserId(importOwnerRoomDto.getUserId()); payFeePo.setStatusCd("0"); payFeePo.setFeeFlag(feeDto.getFeeFlag()); payFeePo.setConfigId(feeDto.getConfigId()); payFeePo.setState("2008001"); payFeePo.setPayerObjType("3333"); payFeePo.setBatchId(assetImportLogDetailDto.getLogId()); payFeeV1InnerServiceSMO.savePayFee(payFeePo); List<FeeAttrPo> feeAttrPos = new ArrayList<>(); feeAttrPos.add(new FeeAttrPo(payFeePo.getFeeId(), payFeePo.getCommunityId(), GenerateCodeFactory.getGeneratorId("11"), "390007" , importOwnerRoomDto.getOwnerId())); feeAttrPos.add(new FeeAttrPo(payFeePo.getFeeId(), payFeePo.getCommunityId(), GenerateCodeFactory.getGeneratorId("11"), "390010" , feeDto.getEndTime().split(" ")[0] + " 23:59:59")); feeAttrPos.add(new FeeAttrPo(payFeePo.getFeeId(), payFeePo.getCommunityId(), GenerateCodeFactory.getGeneratorId("11"), "390009" , importOwnerRoomDto.getTel())); feeAttrPos.add(new FeeAttrPo(payFeePo.getFeeId(), payFeePo.getCommunityId(), GenerateCodeFactory.getGeneratorId("11"), "390008" , importOwnerRoomDto.getOwnerName())); feeAttrPos.add(new FeeAttrPo(payFeePo.getFeeId(), payFeePo.getCommunityId(), GenerateCodeFactory.getGeneratorId("11"), "390012" , importOwnerRoomDto.getDoorRoomNum())); int i1 = feeAttrInnerServiceSMO.saveFeeAttrs(feeAttrPos); } try { // 尝试将对象转换为数字(兼容Excel日期序列号,如44747) double excelDateNum = Double.parseDouble(o.toString()); // Excel 1900日期系统基准(修正闰日bug,实际基准是1899-12-30) Calendar calendar = Calendar.getInstance(); calendar.set(1899, 11, 30, 0, 0, 0); // 月份从0开始,11代表12月 calendar.set(Calendar.MILLISECOND, 0); // 计算对应的实际日期 calendar.add(Calendar.DAY_OF_MONTH, (int) excelDateNum); // 格式化为yyyy-MM-dd的日期字符串 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); return sdf.format(calendar.getTime()); } catch (NumberFormatException e) { // 非数字类型,执行原有逻辑返回toString() return o.toString(); } } public String defaultValue(Object o) { return o == null ? "" : o.toString(); } public BigDecimal defaultNum(Object o) { return o == null ? new BigDecimal(0) : new BigDecimal(o.toString()); } } service-user/src/test/java/com/java110/user/CgfTesdt.java
New file @@ -0,0 +1,10 @@ package com.java110.user; import com.java110.dto.importData.Vtil; public class CgfTesdt { public static void main(String[] args) { System.out.println(Vtil.defaultValueToDate("续约","end",null));; } } springboot/src/main/java/com/java110/boot/BootApplicationStart.java
@@ -178,9 +178,9 @@ restTemplate.getInterceptors().add(java110RestTemplateInterceptor); //设置超时时间 HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory(); httpRequestFactory.setConnectionRequestTimeout(10000); httpRequestFactory.setConnectTimeout(10000); httpRequestFactory.setReadTimeout(10000); httpRequestFactory.setConnectionRequestTimeout(20000); httpRequestFactory.setConnectTimeout(20000); httpRequestFactory.setReadTimeout(20000); restTemplate.setRequestFactory(httpRequestFactory); return restTemplate; } @@ -191,9 +191,9 @@ Java110FeignClientInterceptor okHttpLoggingInterceptor) { okhttp3.OkHttpClient.Builder ClientBuilder = new okhttp3.OkHttpClient.Builder() .readTimeout(30, TimeUnit.SECONDS) //读取超时 .connectTimeout(10, TimeUnit.SECONDS) //连接超时 .connectTimeout(20, TimeUnit.SECONDS) //连接超时 .writeTimeout(60, TimeUnit.SECONDS) //写入超时 .connectionPool(new ConnectionPool(10 /*maxIdleConnections*/, 3, TimeUnit.MINUTES)) .connectionPool(new ConnectionPool(20 /*maxIdleConnections*/, 3, TimeUnit.MINUTES)) .addInterceptor(okHttpLoggingInterceptor); return ClientBuilder.build(); }