| @@ -207,7 +207,7 @@ public class WxRentContractController extends WxContractBaseController { | |||
| MallUserInfo user = getUser(); | |||
| wxRentContract.updateTenantInfo(user); | |||
| wxRentContract.setAdjustPeriodHandle(); | |||
| wxRentContract.setRentPriceHandle(); | |||
| //wxRentContract.setRentPriceHandle(); | |||
| Date oldDate = wxRentContract.getRentalStartDate(); | |||
| if(wxRentContract.getRentStartType()!=null &&wxRentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){ | |||
| wxRentContract.setRentalStartDate(wxRentContract.getStartDate()); | |||
| @@ -230,7 +230,7 @@ public class WxRentContractController extends WxContractBaseController { | |||
| MallUserInfo user = getUser(); | |||
| wxRentContract.updateTenantInfo(user); | |||
| wxRentContract.setAdjustPeriodHandle(); | |||
| wxRentContract.setRentPriceHandle(); | |||
| //wxRentContract.setRentPriceHandle(); | |||
| Date oldDate = wxRentContract.getRentalStartDate(); | |||
| if(wxRentContract.getRentStartType()!=null && wxRentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){ | |||
| wxRentContract.setRentalStartDate(wxRentContract.getStartDate()); | |||
| @@ -277,7 +277,7 @@ public class WxRentContractController extends WxContractBaseController { | |||
| MallUserInfo user = getUser(); | |||
| rentContract.updateTenantInfo(user); | |||
| rentContract.setAdjustPeriodHandle(); | |||
| rentContract.setRentPriceHandle(); | |||
| //rentContract.setRentPriceHandle(); | |||
| Date oldDate = rentContract.getRentalStartDate(); | |||
| if(rentContract.getRentStartType()!=null && rentContract.getRentStartType().equals(EnumRentStartType.STARTTIME.getCode())){ | |||
| rentContract.setRentalStartDate(rentContract.getStartDate()); | |||
| @@ -165,27 +165,27 @@ public class WxSettleMerchantController extends BaseController { | |||
| if (null == rpage || null == rpage.getList() || rpage.getList().size() <= 0 ) { | |||
| return new ResultData(Result.ERROR,"租金合同无对应账单"); | |||
| } | |||
| Long all = 0L; | |||
| BigDecimal all = new BigDecimal(0); | |||
| List<WxBillRent> blist = rpage.getList(); | |||
| for (int i = 0 ; i < blist.size() ; i ++) { | |||
| WxBillRent r = blist.get(i); | |||
| Long _np = 0L; | |||
| BigDecimal _np = new BigDecimal(0); | |||
| if (null != r.getNeedPay()) { | |||
| _np = r.getNeedPay(); | |||
| _np = new BigDecimal(r.getNeedPay()); | |||
| } | |||
| Long _bmf = 0L; | |||
| BigDecimal _bmf = new BigDecimal(0); | |||
| if (null != r.getBussinessManageFeeNeedPay()) { | |||
| _bmf = r.getBussinessManageFeeNeedPay(); | |||
| _bmf = new BigDecimal(r.getBussinessManageFeeNeedPay()); | |||
| } | |||
| Long _omf = 0L; | |||
| BigDecimal _omf = new BigDecimal(0); | |||
| if (null != r.getOperatingManageFeeNeedPay()) { | |||
| _omf = r.getOperatingManageFeeNeedPay(); | |||
| _omf = new BigDecimal(r.getOperatingManageFeeNeedPay()); | |||
| } | |||
| all = all + _np + _bmf + _omf; | |||
| all = all.add(_np).add(_bmf).add(_omf); | |||
| } | |||
| Map retMap = new HashMap(); | |||
| retMap.put("rent", rent); | |||
| retMap.put("money", new BigDecimal(all).divide(new BigDecimal(100)).setScale(2,BigDecimal.ROUND_HALF_UP)); | |||
| retMap.put("money", all.toPlainString()); | |||
| return new ResultData(retMap); | |||
| } | |||
| @@ -16,7 +16,7 @@ ALTER TABLE wx_bill_rent MODIFY COLUMN `revenue` VARCHAR(30); | |||
| ALTER TABLE wx_bill_rent MODIFY COLUMN `late_pay_price` VARCHAR(30); | |||
| ALTER TABLE wx_bill_rent MODIFY COLUMN `join_rent_price` VARCHAR(30); | |||
| ALTER TABLE wx_bill_rent MODIFY COLUMN `service_charge_pay` VARCHAR(30); | |||
| ALTER TABLE wx_bill_rent MODIFY COLUMN `service_charge_pay` VARCHAR(30); | |||
| ALTER TABLE wx_bill_rent MODIFY COLUMN `contract_need_pay` VARCHAR(30); | |||
| ALTER TABLE wx_bill_rent_deposit MODIFY COLUMN `receive_pay` VARCHAR(30); | |||
| @@ -96,11 +96,12 @@ public class WxBillRent extends TenantEntity { | |||
| private Integer isDel; | |||
| @io.swagger.annotations.ApiModelProperty(value="原合同应收金额",name="contractNeedPay") | |||
| private Long contractNeedPay; | |||
| @Excel(name = "原合同应收金额(元)", width = 20, orderNum = "6") | |||
| @TableField(exist = false) | |||
| private String contractNeedPayStr; | |||
| private String contractNeedPay; | |||
| // @TableField(exist = false) | |||
| // private String contractNeedPayStr; | |||
| // public String getContractNeedPayStr() { | |||
| // return new BigDecimal(contractNeedPay == null ? 0 : contractNeedPay).divide(new BigDecimal(100)).toPlainString(); | |||
| @@ -351,8 +351,8 @@ public class WxRentContract extends TenantEntity { | |||
| @io.swagger.annotations.ApiModelProperty(value = "审批时带的物业合同编号,租金+物业时用", name = "propertyId") | |||
| private Long propertyId; | |||
| // @io.swagger.annotations.ApiModelProperty(value = "租金信息", name = "rentInfo") | |||
| // private String rentInfo; | |||
| @io.swagger.annotations.ApiModelProperty(value = "租金信息", name = "rentInfo") | |||
| private String rentInfo; | |||
| @io.swagger.annotations.ApiModelProperty(value = "上传文件名", name = "fileNames") | |||
| private String fileNames; | |||
| @@ -62,7 +62,7 @@ public class WxRentContractHelper { | |||
| if (rentArea == null || rentArea.equalsIgnoreCase("NaN")) { | |||
| rentArea = "0"; | |||
| } | |||
| priceArr[i] = new BigDecimal(priceStr).multiply(new BigDecimal(rentArea)).toPlainString(); | |||
| priceArr[i] = new BigDecimal(priceStr).multiply(new BigDecimal(rentArea)).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| List<String[]> priceList = computeRatioByShop(wxRentContract.getDecimalSize(),rentInfoArray,wxRentContract.getBussinessManagementFeeRatioWay(),priceArr,feeRatioField); | |||
| @@ -79,7 +79,7 @@ public class WxRentContractHelper { | |||
| if (rentArea == null || rentArea.equalsIgnoreCase("NaN")) { | |||
| rentArea = "0"; | |||
| } | |||
| String ratioFirstYearPrice = new BigDecimal(fee).multiply(new BigDecimal(rentArea)).toPlainString(); | |||
| String ratioFirstYearPrice = new BigDecimal(fee).multiply(new BigDecimal(rentArea)).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| return calcuteRatioByJoin(wxRentContract.getDecimalSize(),ratioWay, ratio, ratioFirstYearPrice); | |||
| } | |||
| } | |||
| @@ -145,28 +145,28 @@ public class WxRentContractHelper { | |||
| for (int i = 1; i < size; i++) { | |||
| BigDecimal divide = priceD.multiply(new BigDecimal(integers.get(i))).divide(new BigDecimal(10000)); | |||
| priceD = priceD.add(divide); | |||
| priceArrs[i] = priceD.setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[i] = priceD.setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| } else if (wxRentContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.MONEY.getCode())) { | |||
| for (int i = 1; i < size; i++) { | |||
| priceD = priceD.add(new BigDecimal(integers.get(i))); | |||
| priceArrs[i] = priceD.setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[i] = priceD.setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| } else if (wxRentContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.CUSTOM.getCode())){ | |||
| for (int i = 1; i < size; i++) { | |||
| if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { | |||
| if (EnumMissTimeType.YEAR.getCode().equals(wxRentContract.getBusDiscountTime())) { | |||
| priceArrs[i] = new BigDecimal(integers.get(i)).multiply(new BigDecimal(12)) | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| continue; | |||
| } | |||
| if (EnumMissTimeType.PERIOD.getCode().equals(wxRentContract.getBusDiscountTime())) { | |||
| priceArrs[i] = new BigDecimal(integers.get(i)).multiply(new BigDecimal(wxRentContract.getReceivePeriod())) | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| continue; | |||
| } | |||
| } | |||
| priceArrs[i] = new BigDecimal(integers.get(i)).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[i] = new BigDecimal(integers.get(i)).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| }else if (wxRentContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.FIX_RATIO.getCode())){ | |||
| for (int i = 1; i < size; i++) { | |||
| @@ -179,16 +179,16 @@ public class WxRentContractHelper { | |||
| } | |||
| if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { | |||
| if (EnumMissTimeType.YEAR.getCode().equals(wxRentContract.getBusDiscountTime())) { | |||
| priceArrs[i] = _p.multiply(new BigDecimal(12)).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[i] = _p.multiply(new BigDecimal(12)).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| continue; | |||
| } | |||
| if (EnumMissTimeType.PERIOD.getCode().equals(wxRentContract.getBusDiscountTime())) { | |||
| priceArrs[i] = _p.multiply(new BigDecimal(wxRentContract.getReceivePeriod())) | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| continue; | |||
| } | |||
| } | |||
| priceArrs[i] = _p.setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[i] = _p.setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| } | |||
| @@ -210,7 +210,7 @@ public class WxRentContractHelper { | |||
| String[] revenuePriceArrs = new String[size]; | |||
| if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_AREA_AND_JOINT.getCode())) { | |||
| String _revenuePriceD = new BigDecimal(wxRentContract.getRevenue()).multiply(new BigDecimal(wxRentContract.getPayRatio())) | |||
| .divide(new BigDecimal(100)).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| .divide(new BigDecimal(100)).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| revenuePriceArrs[0] = _revenuePriceD; | |||
| BigDecimal revenuePriceD = new BigDecimal(_revenuePriceD); | |||
| //联营扣点调整比率 | |||
| @@ -230,31 +230,31 @@ public class WxRentContractHelper { | |||
| BigDecimal _p = new BigDecimal(revenueYears.get(i)).multiply(new BigDecimal(revenueRationSets.get(i))).divide(new BigDecimal(10000)); | |||
| revenuePriceD = revenuePriceD.add(_p); | |||
| } | |||
| revenuePriceArrs[i] = revenuePriceD.setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| revenuePriceArrs[i] = revenuePriceD.setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| } else if (wxRentContract.getRevenueRatioWay().equals(EnumRentContractAdjustRatioWay.MONEY.getCode())) { | |||
| for (int i = 1; i < size; i++) { | |||
| if (revenueYears.size() == size && revenueRationSets.size() == size) { | |||
| revenuePriceD = revenuePriceD.add(new BigDecimal(revenueRationSets.get(i))); | |||
| } | |||
| revenuePriceArrs[i] = revenuePriceD.setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| revenuePriceArrs[i] = revenuePriceD.setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| } else if (wxRentContract.getRevenueRatioWay().equals(EnumRentContractAdjustRatioWay.CUSTOM.getCode())){ | |||
| for (int i = 1; i < size; i++) { | |||
| if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { | |||
| if (EnumMissTimeType.YEAR.getCode().equals(wxRentContract.getBusDiscountTime())) { | |||
| revenuePriceArrs[i] = new BigDecimal(revenueRationSets.get(i)).multiply(new BigDecimal(12)) | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| continue; | |||
| } | |||
| if (EnumMissTimeType.PERIOD.getCode().equals(wxRentContract.getBusDiscountTime())) { | |||
| revenuePriceArrs[i] = new BigDecimal(revenueRationSets.get(i)).multiply(new BigDecimal(wxRentContract.getReceivePeriod())) | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| continue; | |||
| } | |||
| } | |||
| revenuePriceArrs[i] = new BigDecimal(revenueRationSets.get(i)) | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| }else if (wxRentContract.getRevenueRatioWay().equals(EnumRentContractAdjustRatioWay.FIX_RATIO.getCode())){ | |||
| for (int i = 1; i < size; i++) { | |||
| @@ -265,16 +265,16 @@ public class WxRentContractHelper { | |||
| if (wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode())) { | |||
| if (EnumMissTimeType.YEAR.getCode().equals(wxRentContract.getBusDiscountTime())) { | |||
| revenuePriceArrs[i] = _p.multiply(new BigDecimal(12)) | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| continue; | |||
| } | |||
| if (EnumMissTimeType.PERIOD.getCode().equals(wxRentContract.getBusDiscountTime())) { | |||
| revenuePriceArrs[i] = _p.multiply(new BigDecimal(wxRentContract.getReceivePeriod())) | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| continue; | |||
| } | |||
| } | |||
| revenuePriceArrs[i] = _p.setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString(); | |||
| revenuePriceArrs[i] = _p.setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| } | |||
| } | |||
| @@ -295,21 +295,21 @@ public class WxRentContractHelper { | |||
| for (int i = 1; i < size; i++) { | |||
| BigDecimal divide = priceD.multiply(new BigDecimal(integers.get(i))).divide(new BigDecimal(100)); | |||
| priceD = priceD.add(divide); | |||
| priceArrs[i] = priceD.setScale(decimalSize, RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[i] = priceD.setScale(decimalSize, RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| } else if (ratioWay.equals(EnumRentContractAdjustRatioWay.MONEY.getCode())) { | |||
| for (int i = 1; i < size; i++) { | |||
| priceD = priceD.add(new BigDecimal(integers.get(i))); | |||
| priceArrs[i] = priceD.setScale(decimalSize, RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[i] = priceD.setScale(decimalSize, RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| } else if (ratioWay.equals(EnumRentContractAdjustRatioWay.CUSTOM.getCode())){ | |||
| for (int i = 1; i < size; i++) { | |||
| priceArrs[i] = new BigDecimal(integers.get(i)).setScale(decimalSize, RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[i] = new BigDecimal(integers.get(i)).setScale(decimalSize, RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| }else if (ratioWay.equals(EnumRentContractAdjustRatioWay.FIX_RATIO.getCode())){ | |||
| for (int i = 1; i < size; i++) { | |||
| BigDecimal _p = priceD.multiply(new BigDecimal(integers.get(i))).divide(new BigDecimal(100)); | |||
| priceArrs[i] = _p.setScale(decimalSize, RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[i] = _p.setScale(decimalSize, RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| } | |||
| return priceArrs; | |||
| @@ -356,16 +356,16 @@ public class WxRentContractHelper { | |||
| if (ratioWayType.equals(EnumRentContractAdjustRatioWay.RATIO.getCode())) { | |||
| BigDecimal multiply = new BigDecimal(priceList.get(i)[j]).multiply(new BigDecimal(adjustRatio.getString(i)).divide(new BigDecimal(100))); | |||
| BigDecimal price = new BigDecimal(priceList.get(i)[j]).add(multiply); | |||
| priceArrs[j] = price.setScale(decimalSize, RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[j] = price.setScale(decimalSize, RoundingMode.HALF_UP).toPlainString(); | |||
| }else if (ratioWayType.equals(EnumRentContractAdjustRatioWay.MONEY.getCode())) { | |||
| BigDecimal price = new BigDecimal(priceList.get(i)[j]).add(new BigDecimal(adjustRatio.getString(i)).multiply(new BigDecimal(100))); | |||
| priceArrs[j] = price.setScale(decimalSize, RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[j] = price.setScale(decimalSize, RoundingMode.HALF_UP).toPlainString(); | |||
| }else if (ratioWayType.equals(EnumRentContractAdjustRatioWay.CUSTOM.getCode())) { | |||
| BigDecimal price = new BigDecimal(adjustRatio.getString(i)).multiply(new BigDecimal(100)); | |||
| priceArrs[j] = price.setScale(decimalSize, RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[j] = price.setScale(decimalSize, RoundingMode.HALF_UP).toPlainString(); | |||
| }else if (ratioWayType.equals(EnumRentContractAdjustRatioWay.FIX_RATIO.getCode())) { | |||
| BigDecimal price = new BigDecimal(priceList.get(i)[j]).multiply(new BigDecimal(adjustRatio.getString(i)).divide(new BigDecimal(100))); | |||
| priceArrs[j] = price.setScale(decimalSize, RoundingMode.HALF_EVEN).toPlainString(); | |||
| priceArrs[j] = price.setScale(decimalSize, RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| } | |||
| priceList.add(priceArrs); | |||
| @@ -374,31 +374,31 @@ public class WxRentContractHelper { | |||
| } | |||
| //查询月账单需要支付的金额 | |||
| public static long getNeedPayMoney(WxRentContract wxRentContract,long price,Date startDate,Date endDate,int i,int billTimeVoListSize,boolean saveDb,int dayType,int receivePeriod,boolean part,boolean monthCalDay){ | |||
| long needpay; | |||
| public static String getNeedPayMoney(WxRentContract wxRentContract,String price,Date startDate,Date endDate,int i,int billTimeVoListSize,boolean saveDb,int dayType,int receivePeriod,boolean part,boolean monthCalDay){ | |||
| String needpay; | |||
| //按日 | |||
| if (wxRentContract.getPriceUnit().equals(EnumPriceUnit.D.getCode())){ | |||
| Double priceD = new Double(price); | |||
| double needpayD = WxRentContractHelper.getNeedPay(0,priceD,startDate,endDate); | |||
| BigDecimal priceD = new BigDecimal(price); | |||
| String needpayD = WxRentContractHelper.getNeedPay(wxRentContract.getDecimalSize(),new BigDecimal(0),priceD,startDate,endDate); | |||
| //取整 | |||
| //needpay = new Double(needpayD).longValue(); | |||
| //四舍五入 | |||
| needpay = new BigDecimal(needpayD).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); | |||
| needpay = new BigDecimal(needpayD).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| }else{ | |||
| Double priceD = new Double(price); | |||
| BigDecimal priceD = new BigDecimal(price); | |||
| if (EnumRentContractType.RENT_BY_JOINT.getCode().equals(wxRentContract.getType())) { | |||
| //设置跳点率为年周期 price不变 | |||
| if (EnumMissTimeType.PERIOD.getCode().equals(wxRentContract.getBusDiscountTime())) { | |||
| return priceD.longValue(); | |||
| return priceD.toPlainString(); | |||
| } | |||
| //年或者设置跳点率为年周期 除12 | |||
| if (EnumMissTimeType.YEAR.getCode().equals(wxRentContract.getBusDiscountTime())) { | |||
| priceD = new Double(price) / 12; | |||
| priceD = new BigDecimal(price).divide(new BigDecimal(12),wxRentContract.getDecimalSize(),RoundingMode.HALF_UP).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP); | |||
| } | |||
| }else{ | |||
| //年 除12 | |||
| if(EnumPriceUnit.Y.getCode().equals(wxRentContract.getPriceUnit())){ | |||
| priceD = new Double(price)/12; | |||
| priceD = new BigDecimal(price).divide(new BigDecimal(12),wxRentContract.getDecimalSize(),RoundingMode.HALF_UP).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP); | |||
| } | |||
| } | |||
| @@ -406,7 +406,7 @@ public class WxRentContractHelper { | |||
| //生成金额直接计算 | |||
| if(!saveDb){ | |||
| //needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,part)).longValue(); | |||
| needpay = new BigDecimal(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,part)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); | |||
| needpay = new BigDecimal(getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,part)).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| return needpay; | |||
| } | |||
| @@ -421,20 +421,22 @@ public class WxRentContractHelper { | |||
| instance.add(Calendar.DATE, -1); | |||
| if(sd.format(instance.getTime()).equals(sd.format(endDate))){ | |||
| int months = WxRentContractHelper.getMonths(sdM.format(startDate)+"-01",sdM.format(DateUtils.getDaySet(endDate,Calendar.DATE,1))+"-01"); | |||
| needpay = new Double(months * priceD).longValue(); | |||
| needpay = new BigDecimal(months).multiply(priceD).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| }else{ | |||
| //needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).longValue(); | |||
| needpay = new BigDecimal(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); | |||
| needpay = new BigDecimal(getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,false)) | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| }else if(i == 0){//第一期 | |||
| if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())){ | |||
| if(isFirstDay(startDate)){ | |||
| int months = WxRentContractHelper.getMonths(sdM.format(startDate)+"-01",sdM.format(endDate)+"-01"); | |||
| months++; | |||
| needpay = new Double(months * priceD).longValue(); | |||
| needpay = new BigDecimal(months).multiply(priceD).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| }else{ | |||
| //needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).longValue(); | |||
| needpay = new BigDecimal(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); | |||
| needpay = new BigDecimal(getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,false)) | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| }else{ | |||
| if(isFirstDay(startDate)){ | |||
| @@ -442,10 +444,11 @@ public class WxRentContractHelper { | |||
| if(isFirstDay(startDate)){ | |||
| months++; | |||
| } | |||
| needpay = new Double(months * priceD).longValue(); | |||
| needpay = new BigDecimal(months).multiply(priceD).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| }else{ | |||
| //needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).longValue(); | |||
| needpay = new BigDecimal(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); | |||
| needpay = new BigDecimal(getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,false)) | |||
| .setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| } | |||
| }else{//中间 | |||
| @@ -456,9 +459,10 @@ public class WxRentContractHelper { | |||
| //如果当月费用需要按天计算 | |||
| if (monthCalDay) { | |||
| //needpay = new Double(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).longValue(); | |||
| needpay = new BigDecimal(getMonthNeedPay(priceD, startDate, endDate,dayType,receivePeriod,false)).setScale(0, BigDecimal.ROUND_HALF_UP).longValue(); | |||
| needpay = new BigDecimal(getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,false)) | |||
| .setScale(wxRentContract.getDecimalSize(), BigDecimal.ROUND_HALF_UP).toPlainString(); | |||
| }else { | |||
| needpay = new Double(months * priceD).longValue(); | |||
| needpay = new BigDecimal(months).multiply(priceD).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| } | |||
| } | |||
| @@ -481,17 +485,17 @@ public class WxRentContractHelper { | |||
| * @param end | |||
| * @return | |||
| */ | |||
| public static double getMonthNeedPay(Double price,Date start,Date end,int dayType,int receivePeriod,boolean part){ | |||
| public static String getMonthNeedPay(Integer decimalSize,BigDecimal price,Date start,Date end,int dayType,int receivePeriod,boolean part){ | |||
| SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); | |||
| SimpleDateFormat sdM = new SimpleDateFormat("yyyy-MM"); | |||
| SimpleDateFormat sdD = new SimpleDateFormat("d"); | |||
| Double total = new Double(0); | |||
| BigDecimal total = new BigDecimal(0); | |||
| int[] diff; | |||
| //同一天 | |||
| if(sd.format(start).equals(sd.format(end))){ | |||
| int dayCount = DateUtils.getMonthDayCount(start); | |||
| return 1 * (price/dayCount); | |||
| return price.divide(new BigDecimal(dayCount),decimalSize,BigDecimal.ROUND_HALF_UP).toPlainString(); | |||
| } | |||
| //同月 | |||
| @@ -499,8 +503,8 @@ public class WxRentContractHelper { | |||
| diff = DateUtils.getDiff(start,end); | |||
| int dayCount = DateUtils.getMonthDayCount(start); | |||
| total += (diff[1]+1) * (price/dayCount); | |||
| return total; | |||
| total = total.add(new BigDecimal((diff[1]+1)).multiply(price).divide(new BigDecimal(dayCount),decimalSize,BigDecimal.ROUND_HALF_UP)); | |||
| return total.toPlainString(); | |||
| } | |||
| //判断是否满足整月 | |||
| @@ -523,25 +527,25 @@ public class WxRentContractHelper { | |||
| if(isFullMonth){ | |||
| int months = getMonths(sdM.format(start)+"-01",sdM.format(DateUtils.getDaySet(end,Calendar.DATE,1))+"-01"); | |||
| return (months) * price; | |||
| return new BigDecimal(months).multiply(price).setScale(decimalSize, RoundingMode.HALF_UP).toPlainString(); | |||
| } | |||
| //第一个月 | |||
| Date lastMonthDay = DateUtils.getLastDayForMonth(start); | |||
| diff = DateUtils.getDiff(start,lastMonthDay); | |||
| int dayCount = DateUtils.getMonthDayCount(start); | |||
| total += (diff[1]+1) * (price/dayCount); | |||
| total = total.add(new BigDecimal((diff[1]+1)).multiply(price).divide(new BigDecimal(dayCount),decimalSize,BigDecimal.ROUND_HALF_UP)); | |||
| //中间月份 | |||
| Date newStartDate = DateUtils.getDaySet(lastMonthDay,Calendar.DATE,1); | |||
| int months = getMonths(sdM.format(newStartDate)+"-01",sdM.format(end)+"-01"); | |||
| total += months * price; | |||
| total = total.add(new BigDecimal(months).multiply(price)); | |||
| //最后一个月 | |||
| diff = DateUtils.getDiff(DateUtils.getFirstDayForCurrMonth(end),end); | |||
| dayCount = DateUtils.getMonthDayCount(end); | |||
| total += (diff[1]+1) * (price/dayCount); | |||
| return total; | |||
| total = total.add(new BigDecimal((diff[1]+1)).multiply(price).divide(new BigDecimal(dayCount),decimalSize,BigDecimal.ROUND_HALF_UP)); | |||
| return total.toPlainString(); | |||
| } | |||
| public static int getMonths(String startStr,String endStr){ | |||
| @@ -559,40 +563,40 @@ public class WxRentContractHelper { | |||
| * @param end | |||
| * @return | |||
| */ | |||
| public static double getNeedPay(long monthPrice,Double dayPrice,Date start,Date end){ | |||
| public static String getNeedPay(Integer decimalSize,BigDecimal monthPrice,BigDecimal dayPrice,Date start,Date end){ | |||
| SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); | |||
| SimpleDateFormat sdM = new SimpleDateFormat("yyyy-MM"); | |||
| Double total; | |||
| BigDecimal total; | |||
| int[] diff; | |||
| int dayCount = DateUtils.getMonthDayCount(start); | |||
| double price; | |||
| if(monthPrice > 0){ | |||
| price = (double) monthPrice/dayCount; | |||
| BigDecimal price; | |||
| if(monthPrice.compareTo(new BigDecimal(0)) > 0){ | |||
| price = monthPrice.divide(new BigDecimal(dayCount),decimalSize,BigDecimal.ROUND_HALF_UP); | |||
| }else{ | |||
| price = dayPrice; | |||
| } | |||
| //同一天 | |||
| if(sd.format(start).equals(sd.format(end))){ | |||
| return 1 * price; //算1天 | |||
| return price.toPlainString(); //算1天 | |||
| } | |||
| //同月 | |||
| if(sdM.format(start).equals(sdM.format(end))){ | |||
| diff = DateUtils.getDiff(start,end); | |||
| return (diff[1]+1) * price; | |||
| return new BigDecimal((diff[1]+1)).multiply(price).setScale(decimalSize, BigDecimal.ROUND_HALF_UP).toPlainString(); | |||
| } | |||
| Date currEnd = DateUtils.getLastDayForMonth(start); | |||
| diff = DateUtils.getDiff(start,currEnd); | |||
| total = (diff[1]+1) * price; | |||
| total = new BigDecimal((diff[1]+1)).multiply(price).setScale(decimalSize, BigDecimal.ROUND_HALF_UP); | |||
| int warnCount = 0; | |||
| while (true){ | |||
| Date monthStartDate = DateUtils.getDaySet(currEnd,Calendar.DATE,1); | |||
| dayCount = DateUtils.getMonthDayCount(monthStartDate); | |||
| if(monthPrice > 0){ | |||
| price = (double) monthPrice/dayCount; | |||
| if(monthPrice.compareTo(new BigDecimal(0)) > 0){ | |||
| price = monthPrice.divide(new BigDecimal(dayCount),decimalSize,BigDecimal.ROUND_HALF_UP); | |||
| }else{ | |||
| price = dayPrice; | |||
| } | |||
| @@ -600,12 +604,12 @@ public class WxRentContractHelper { | |||
| //最后一个月 | |||
| if(sdM.format(monthStartDate).equals(sdM.format(end))){ | |||
| diff = DateUtils.getDiff(monthStartDate,end); | |||
| total += price * (diff[1]+1); | |||
| total = total.add(price.multiply(new BigDecimal((diff[1]+1))).setScale(decimalSize, BigDecimal.ROUND_HALF_UP)); | |||
| break; | |||
| }else{ | |||
| currEnd = DateUtils.getLastDayForMonth(monthStartDate); | |||
| diff = DateUtils.getDiff(monthStartDate,currEnd); | |||
| total += price * (diff[1]+1); | |||
| total = total.add(price.multiply(new BigDecimal((diff[1]+1))).setScale(decimalSize, BigDecimal.ROUND_HALF_UP)); | |||
| } | |||
| //预警 | |||
| @@ -616,7 +620,7 @@ public class WxRentContractHelper { | |||
| } | |||
| warnCount ++; | |||
| } | |||
| return total; | |||
| return total.setScale(decimalSize, BigDecimal.ROUND_HALF_UP).toPlainString(); | |||
| } | |||
| } | |||
| @@ -780,7 +780,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| wxBillDeposit.setPayDate(date); | |||
| Long owe = (Long) bill.get("owe"); | |||
| wxBillDeposit.setPay(wxBillDeposit.getPay() + owe); | |||
| wxBillDeposit.setOwe(0L); | |||
| wxBillDeposit.setOwe("0"); | |||
| wxBillDeposit.setStatus(EnumBillDailyStatus.PAID.getCode()); | |||
| wxBillDeposit.setPayDate(date); | |||
| wxBillDeposit.setUpdatetime(date); | |||
| @@ -825,7 +825,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| wxBillRent.setPayDate(date); | |||
| Long owe = (Long) bill.get("owe"); | |||
| wxBillRent.setPay(wxBillRent.getPay() + owe); | |||
| wxBillRent.setOwe(0L); | |||
| wxBillRent.setOwe("0"); | |||
| wxBillRent.setStatus(EnumBillDailyStatus.PAID.getCode()); | |||
| wxBillRent.setPayDate(date); | |||
| wxBillRent.setUpdatetime(date); | |||
| @@ -1153,238 +1153,238 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| @Override | |||
| public ResultData updateReceivePay(WxBillAll wxBillAll, MallUserInfo user,boolean forcePaid) { | |||
| Integer billType = wxBillAll.getBillTypeValue(); | |||
| Long oldPrice = wxBillAll.getOldPrice(); | |||
| Long newPrice = wxBillAll.getNewPrice(); | |||
| Long oldLatePrice = wxBillAll.getOldLatePrice(); | |||
| Long newLatePrice = wxBillAll.getNewLatePrice(); | |||
| Long id = wxBillAll.getId(); | |||
| Date updateDate = new Date(); | |||
| if (billType.equals(EnumBillTypeParam.RENT.getCode())) { | |||
| WxBillRent dbBill = wxBillRentMapper.selectById(id); | |||
| WxBillRent wxBillRent = new WxBillRent(); | |||
| wxBillRent.setId(id); | |||
| wxBillRent.setUpdatetime(updateDate); | |||
| if (forcePaid) { | |||
| wxBillRent.setReceivePay(dbBill.getPay()); | |||
| wxBillRent.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| wxBillRent.setOwe(0L); | |||
| wxBillRentMapper.updateById(wxBillRent); | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, dbBill.getPay(), dbBill.getPay(), user); | |||
| }else { | |||
| if (oldLatePrice != null) { | |||
| wxBillRent.setLatePayPrice(newLatePrice); | |||
| wxBillRent.setOwe(dbBill.getReceivePay() + dbBill.getServiceChargePay() + newLatePrice - dbBill.getPay()); | |||
| wxBillRentMapper.updateById(wxBillRent); | |||
| addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY, id, oldLatePrice, newLatePrice, user); | |||
| } else { | |||
| //租赁账单更新 | |||
| wxBillRent.setReceivePay(newPrice); | |||
| long latePayPrice = dbBill.getLatePayPrice() == null ? 0 : dbBill.getLatePayPrice(); | |||
| wxBillRent.setOwe(newPrice + dbBill.getServiceChargePay() + latePayPrice - dbBill.getPay()); | |||
| if (newPrice.equals(dbBill.getPay())) { | |||
| wxBillRent.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| } | |||
| wxBillRentMapper.updateById(wxBillRent); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| } | |||
| } | |||
| } else if (billType.equals(EnumBillTypeParam.RENT_DEPOSIT.getCode())) { | |||
| WxBillDeposit dbBill = wxBillDepositMapper.selectById(id); | |||
| if (dbBill != null) { | |||
| WxBillDeposit wxBillDeposit = new WxBillDeposit(); | |||
| wxBillDeposit.setId(id); | |||
| Long billDepositOldPrce = oldPrice; | |||
| Long billDepositNewPrce = newPrice; | |||
| //租赁押金账单更新 | |||
| if (forcePaid) { | |||
| wxBillDeposit.setReceivePay(dbBill.getPay()); | |||
| wxBillDeposit.setOwe(0L); | |||
| wxBillDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| billDepositOldPrce = dbBill.getPay(); | |||
| billDepositNewPrce = dbBill.getPay(); | |||
| }else { | |||
| wxBillDeposit.setReceivePay(newPrice); | |||
| wxBillDeposit.setOwe(newPrice - dbBill.getPay()); | |||
| if (newPrice.equals(dbBill.getPay())) { | |||
| wxBillDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| } | |||
| wxBillDeposit.setUpdatetime(updateDate); | |||
| } | |||
| wxBillDepositMapper.updateById(wxBillDeposit); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.DEPOSIT_MODIFY, id, billDepositOldPrce, billDepositNewPrce, user); | |||
| } | |||
| WxBillPropertyDeposit propertyDeposit = wxBillPropertyDepositMapper.selectById(id); | |||
| if (propertyDeposit != null) { | |||
| //物业押金账单更新 | |||
| WxBillPropertyDeposit wxBillPropertyDeposit = new WxBillPropertyDeposit(); | |||
| wxBillPropertyDeposit.setId(id); | |||
| Long billPropertyDepositOldPrce = oldPrice; | |||
| Long billPropertyDepositNewPrce = newPrice; | |||
| if (forcePaid) { | |||
| wxBillPropertyDeposit.setReceivePay(propertyDeposit.getPay()); | |||
| wxBillPropertyDeposit.setOwe(0L); | |||
| wxBillPropertyDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| billPropertyDepositOldPrce = propertyDeposit.getPay(); | |||
| billPropertyDepositNewPrce = propertyDeposit.getPay(); | |||
| }else { | |||
| wxBillPropertyDeposit.setReceivePay(newPrice); | |||
| wxBillPropertyDeposit.setOwe(newPrice - propertyDeposit.getPay()); | |||
| if (newPrice.equals(propertyDeposit.getPay())) { | |||
| wxBillPropertyDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| } | |||
| } | |||
| wxBillPropertyDeposit.setUpdatetime(updateDate); | |||
| wxBillPropertyDepositMapper.updateById(wxBillPropertyDeposit); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, billPropertyDepositOldPrce, billPropertyDepositNewPrce, user); | |||
| } | |||
| } else if (billType.equals(EnumBillTypeParam.PROPERTY.getCode())) { | |||
| WxBillProperty dbBill = wxBillPropertyMapper.selectById(id); | |||
| //物业账单更新 | |||
| WxBillProperty wxBillProperty = new WxBillProperty(); | |||
| wxBillProperty.setId(id); | |||
| wxBillProperty.setUpdatetime(updateDate); | |||
| if (forcePaid) { | |||
| wxBillProperty.setReceivePay(dbBill.getPay()); | |||
| wxBillProperty.setOwe(0L); | |||
| wxBillProperty.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| wxBillPropertyMapper.updateById(wxBillProperty); | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, dbBill.getPay(), dbBill.getPay(), user); | |||
| }else { | |||
| if (oldLatePrice != null) { | |||
| wxBillProperty.setLatePayPrice(newLatePrice); | |||
| wxBillProperty.setOwe(dbBill.getReceivePay() + dbBill.getServiceChargePay() + newLatePrice - dbBill.getPay()); | |||
| wxBillPropertyMapper.updateById(wxBillProperty); | |||
| addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY, id, oldLatePrice, newLatePrice, user); | |||
| } else { | |||
| wxBillProperty.setReceivePay(newPrice); | |||
| long latePayPrice = dbBill.getLatePayPrice() == null ? 0 : dbBill.getLatePayPrice(); | |||
| wxBillProperty.setOwe(newPrice + dbBill.getServiceChargePay() + latePayPrice - dbBill.getPay()); | |||
| if (newPrice.equals(dbBill.getPay())) { | |||
| wxBillProperty.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| } | |||
| wxBillPropertyMapper.updateById(wxBillProperty); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| } | |||
| } | |||
| } else if (billType.equals(EnumBillTypeParam.PROPERTY_DEPOSIT.getCode())) { | |||
| WxBillPropertyDeposit dbBill = wxBillPropertyDepositMapper.selectById(id); | |||
| //物业押金账单更新 | |||
| WxBillPropertyDeposit wxBillPropertyDeposit = new WxBillPropertyDeposit(); | |||
| wxBillPropertyDeposit.setId(id); | |||
| Long billPropertyDepositOldPrce = oldPrice; | |||
| Long billPropertyDepositNewPrce = newPrice; | |||
| if (forcePaid) { | |||
| wxBillPropertyDeposit.setReceivePay(dbBill.getPay()); | |||
| wxBillPropertyDeposit.setOwe(0L); | |||
| wxBillPropertyDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| billPropertyDepositOldPrce = dbBill.getPay(); | |||
| billPropertyDepositNewPrce = dbBill.getPay(); | |||
| }else { | |||
| wxBillPropertyDeposit.setReceivePay(newPrice); | |||
| wxBillPropertyDeposit.setOwe(newPrice - dbBill.getPay()); | |||
| if (newPrice.equals(dbBill.getPay())) { | |||
| wxBillPropertyDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| } | |||
| } | |||
| wxBillPropertyDeposit.setUpdatetime(updateDate); | |||
| wxBillPropertyDepositMapper.updateById(wxBillPropertyDeposit); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, billPropertyDepositOldPrce, billPropertyDepositNewPrce, user); | |||
| } else if (billType.equals(EnumBillTypeParam.WATER.getCode())) { | |||
| //水费账单更新 | |||
| updateDailyBill(id, newPrice, updateDate,forcePaid); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| } else if (billType.equals(EnumBillTypeParam.POWER.getCode())) { | |||
| //电费账单更新 | |||
| updateDailyBill(id, newPrice, updateDate,forcePaid); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| } else if (billType.equals(EnumBillTypeParam.AIR_CONDITIONING.getCode())) { | |||
| //空调费账单更新 | |||
| updateDailyBill(id, newPrice, updateDate,forcePaid); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| } else if (billType.equals(EnumBillTypeParam.ROUTINE.getCode())) { | |||
| WxBillOther dbBill = wxBillOtherMapper.selectById(id); | |||
| //其他费用账单更新 | |||
| WxBillOther wxBillOther = new WxBillOther(); | |||
| wxBillOther.setId(id); | |||
| if (forcePaid) { | |||
| wxBillOther.setReceivePay(dbBill.getPay()); | |||
| wxBillOther.setOwe(0L); | |||
| wxBillOther.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| }else { | |||
| wxBillOther.setReceivePay(newPrice); | |||
| wxBillOther.setOwe(newPrice + dbBill.getServiceChargePay() - dbBill.getPay()); | |||
| if (newPrice.equals(dbBill.getPay())) { | |||
| wxBillOther.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| } | |||
| } | |||
| wxBillOther.setUpdatetime(updateDate); | |||
| wxBillOtherMapper.updateById(wxBillOther); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| } else if (billType.equals(EnumBillTypeParam.ATHER_DEPOSIT.getCode())) { | |||
| WxBillOtherDeposit dbBill = wxBillOtherDepositMapper.selectById(id); | |||
| //其他押金账单更新 | |||
| WxBillOtherDeposit wxBillOtherDeposit = new WxBillOtherDeposit(); | |||
| wxBillOtherDeposit.setId(id); | |||
| if (forcePaid) { | |||
| wxBillOtherDeposit.setReceivePay(dbBill.getPay()); | |||
| wxBillOtherDeposit.setOwe(0L); | |||
| wxBillOtherDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| }else { | |||
| wxBillOtherDeposit.setReceivePay(newPrice); | |||
| wxBillOtherDeposit.setOwe(newPrice + dbBill.getServiceChargePay() - dbBill.getPay()); | |||
| if (newPrice.equals(dbBill.getPay())) { | |||
| wxBillOtherDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| } | |||
| } | |||
| wxBillOtherDeposit.setUpdatetime(updateDate); | |||
| wxBillOtherDepositMapper.updateById(wxBillOtherDeposit); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| }if (billType.equals(EnumBillTypeParam.RENT_BUSSINESS_MANAGE.getCode()) || billType.equals(EnumBillTypeParam.RENT_OPERATING_MANAGE.getCode())) { | |||
| WxBillRentManage dbBill = wxBillRentManageMapper.selectById(id); | |||
| WxBillRentManage wxBillRent = new WxBillRentManage(); | |||
| wxBillRent.setId(id); | |||
| wxBillRent.setUpdatetime(updateDate); | |||
| if (forcePaid) { | |||
| wxBillRent.setReceivePay(dbBill.getPay()); | |||
| wxBillRent.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| wxBillRent.setOwe(0L); | |||
| wxBillRentManageMapper.updateById(wxBillRent); | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, dbBill.getPay(), dbBill.getPay(), user); | |||
| }else { | |||
| if (oldLatePrice != null) { | |||
| wxBillRent.setLatePayPrice(newLatePrice); | |||
| wxBillRent.setOwe(dbBill.getReceivePay() + dbBill.getServiceChargePay() + newLatePrice - dbBill.getPay()); | |||
| wxBillRentManageMapper.updateById(wxBillRent); | |||
| addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY, id, oldLatePrice, newLatePrice, user); | |||
| } else { | |||
| //租赁账单更新 | |||
| wxBillRent.setReceivePay(newPrice); | |||
| long latePayPrice = dbBill.getLatePayPrice() == null ? 0 : dbBill.getLatePayPrice(); | |||
| wxBillRent.setOwe(newPrice + dbBill.getServiceChargePay() + latePayPrice - dbBill.getPay()); | |||
| if (newPrice.equals(dbBill.getPay())) { | |||
| wxBillRent.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| } | |||
| wxBillRentManageMapper.updateById(wxBillRent); | |||
| //账单日志 | |||
| addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| } | |||
| } | |||
| } else { | |||
| logger.info("未找到账单类型"); | |||
| } | |||
| // Integer billType = wxBillAll.getBillTypeValue(); | |||
| // Long oldPrice = wxBillAll.getOldPrice(); | |||
| // Long newPrice = wxBillAll.getNewPrice(); | |||
| // Long oldLatePrice = wxBillAll.getOldLatePrice(); | |||
| // Long newLatePrice = wxBillAll.getNewLatePrice(); | |||
| // Long id = wxBillAll.getId(); | |||
| // Date updateDate = new Date(); | |||
| // if (billType.equals(EnumBillTypeParam.RENT.getCode())) { | |||
| // WxBillRent dbBill = wxBillRentMapper.selectById(id); | |||
| // WxBillRent wxBillRent = new WxBillRent(); | |||
| // wxBillRent.setId(id); | |||
| // wxBillRent.setUpdatetime(updateDate); | |||
| // if (forcePaid) { | |||
| // wxBillRent.setReceivePay(dbBill.getPay()); | |||
| // wxBillRent.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // wxBillRent.setOwe("0"); | |||
| // wxBillRentMapper.updateById(wxBillRent); | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, dbBill.getPay(), dbBill.getPay(), user); | |||
| // }else { | |||
| // if (oldLatePrice != null) { | |||
| // wxBillRent.setLatePayPrice(newLatePrice); | |||
| // wxBillRent.setOwe(dbBill.getReceivePay() + dbBill.getServiceChargePay() + newLatePrice - dbBill.getPay()); | |||
| // wxBillRentMapper.updateById(wxBillRent); | |||
| // addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY, id, oldLatePrice, newLatePrice, user); | |||
| // } else { | |||
| // //租赁账单更新 | |||
| // wxBillRent.setReceivePay(newPrice); | |||
| // long latePayPrice = dbBill.getLatePayPrice() == null ? 0 : dbBill.getLatePayPrice(); | |||
| // wxBillRent.setOwe(newPrice + dbBill.getServiceChargePay() + latePayPrice - dbBill.getPay()); | |||
| // if (newPrice.equals(dbBill.getPay())) { | |||
| // wxBillRent.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // } | |||
| // wxBillRentMapper.updateById(wxBillRent); | |||
| // //账单日志 | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| // } | |||
| // } | |||
| // } else if (billType.equals(EnumBillTypeParam.RENT_DEPOSIT.getCode())) { | |||
| // WxBillDeposit dbBill = wxBillDepositMapper.selectById(id); | |||
| // if (dbBill != null) { | |||
| // WxBillDeposit wxBillDeposit = new WxBillDeposit(); | |||
| // wxBillDeposit.setId(id); | |||
| // Long billDepositOldPrce = oldPrice; | |||
| // Long billDepositNewPrce = newPrice; | |||
| // //租赁押金账单更新 | |||
| // if (forcePaid) { | |||
| // wxBillDeposit.setReceivePay(dbBill.getPay()); | |||
| // wxBillDeposit.setOwe(0L); | |||
| // wxBillDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // billDepositOldPrce = dbBill.getPay(); | |||
| // billDepositNewPrce = dbBill.getPay(); | |||
| // }else { | |||
| // wxBillDeposit.setReceivePay(newPrice); | |||
| // wxBillDeposit.setOwe(newPrice - dbBill.getPay()); | |||
| // if (newPrice.equals(dbBill.getPay())) { | |||
| // wxBillDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // } | |||
| // wxBillDeposit.setUpdatetime(updateDate); | |||
| // } | |||
| // wxBillDepositMapper.updateById(wxBillDeposit); | |||
| // //账单日志 | |||
| // addBillAction(EnumBillAction.DEPOSIT_MODIFY, id, billDepositOldPrce, billDepositNewPrce, user); | |||
| // } | |||
| // | |||
| // WxBillPropertyDeposit propertyDeposit = wxBillPropertyDepositMapper.selectById(id); | |||
| // if (propertyDeposit != null) { | |||
| // //物业押金账单更新 | |||
| // WxBillPropertyDeposit wxBillPropertyDeposit = new WxBillPropertyDeposit(); | |||
| // wxBillPropertyDeposit.setId(id); | |||
| // Long billPropertyDepositOldPrce = oldPrice; | |||
| // Long billPropertyDepositNewPrce = newPrice; | |||
| // if (forcePaid) { | |||
| // wxBillPropertyDeposit.setReceivePay(propertyDeposit.getPay()); | |||
| // wxBillPropertyDeposit.setOwe(0L); | |||
| // wxBillPropertyDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // billPropertyDepositOldPrce = propertyDeposit.getPay(); | |||
| // billPropertyDepositNewPrce = propertyDeposit.getPay(); | |||
| // }else { | |||
| // wxBillPropertyDeposit.setReceivePay(newPrice); | |||
| // wxBillPropertyDeposit.setOwe(newPrice - propertyDeposit.getPay()); | |||
| // if (newPrice.equals(propertyDeposit.getPay())) { | |||
| // wxBillPropertyDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // } | |||
| // } | |||
| // wxBillPropertyDeposit.setUpdatetime(updateDate); | |||
| // wxBillPropertyDepositMapper.updateById(wxBillPropertyDeposit); | |||
| // //账单日志 | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, billPropertyDepositOldPrce, billPropertyDepositNewPrce, user); | |||
| // } | |||
| // } else if (billType.equals(EnumBillTypeParam.PROPERTY.getCode())) { | |||
| // WxBillProperty dbBill = wxBillPropertyMapper.selectById(id); | |||
| // //物业账单更新 | |||
| // WxBillProperty wxBillProperty = new WxBillProperty(); | |||
| // wxBillProperty.setId(id); | |||
| // wxBillProperty.setUpdatetime(updateDate); | |||
| // if (forcePaid) { | |||
| // wxBillProperty.setReceivePay(dbBill.getPay()); | |||
| // wxBillProperty.setOwe(0L); | |||
| // wxBillProperty.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // wxBillPropertyMapper.updateById(wxBillProperty); | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, dbBill.getPay(), dbBill.getPay(), user); | |||
| // }else { | |||
| // if (oldLatePrice != null) { | |||
| // wxBillProperty.setLatePayPrice(newLatePrice); | |||
| // wxBillProperty.setOwe(dbBill.getReceivePay() + dbBill.getServiceChargePay() + newLatePrice - dbBill.getPay()); | |||
| // wxBillPropertyMapper.updateById(wxBillProperty); | |||
| // addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY, id, oldLatePrice, newLatePrice, user); | |||
| // } else { | |||
| // wxBillProperty.setReceivePay(newPrice); | |||
| // long latePayPrice = dbBill.getLatePayPrice() == null ? 0 : dbBill.getLatePayPrice(); | |||
| // wxBillProperty.setOwe(newPrice + dbBill.getServiceChargePay() + latePayPrice - dbBill.getPay()); | |||
| // if (newPrice.equals(dbBill.getPay())) { | |||
| // wxBillProperty.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // } | |||
| // wxBillPropertyMapper.updateById(wxBillProperty); | |||
| // //账单日志 | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| // } | |||
| // } | |||
| // } else if (billType.equals(EnumBillTypeParam.PROPERTY_DEPOSIT.getCode())) { | |||
| // WxBillPropertyDeposit dbBill = wxBillPropertyDepositMapper.selectById(id); | |||
| // //物业押金账单更新 | |||
| // WxBillPropertyDeposit wxBillPropertyDeposit = new WxBillPropertyDeposit(); | |||
| // wxBillPropertyDeposit.setId(id); | |||
| // Long billPropertyDepositOldPrce = oldPrice; | |||
| // Long billPropertyDepositNewPrce = newPrice; | |||
| // if (forcePaid) { | |||
| // wxBillPropertyDeposit.setReceivePay(dbBill.getPay()); | |||
| // wxBillPropertyDeposit.setOwe(0L); | |||
| // wxBillPropertyDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // billPropertyDepositOldPrce = dbBill.getPay(); | |||
| // billPropertyDepositNewPrce = dbBill.getPay(); | |||
| // }else { | |||
| // wxBillPropertyDeposit.setReceivePay(newPrice); | |||
| // wxBillPropertyDeposit.setOwe(newPrice - dbBill.getPay()); | |||
| // if (newPrice.equals(dbBill.getPay())) { | |||
| // wxBillPropertyDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // } | |||
| // } | |||
| // wxBillPropertyDeposit.setUpdatetime(updateDate); | |||
| // wxBillPropertyDepositMapper.updateById(wxBillPropertyDeposit); | |||
| // //账单日志 | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, billPropertyDepositOldPrce, billPropertyDepositNewPrce, user); | |||
| // | |||
| // } else if (billType.equals(EnumBillTypeParam.WATER.getCode())) { | |||
| // //水费账单更新 | |||
| // updateDailyBill(id, newPrice, updateDate,forcePaid); | |||
| // //账单日志 | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| // } else if (billType.equals(EnumBillTypeParam.POWER.getCode())) { | |||
| // //电费账单更新 | |||
| // updateDailyBill(id, newPrice, updateDate,forcePaid); | |||
| // //账单日志 | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| // } else if (billType.equals(EnumBillTypeParam.AIR_CONDITIONING.getCode())) { | |||
| // //空调费账单更新 | |||
| // updateDailyBill(id, newPrice, updateDate,forcePaid); | |||
| // //账单日志 | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| // } else if (billType.equals(EnumBillTypeParam.ROUTINE.getCode())) { | |||
| // WxBillOther dbBill = wxBillOtherMapper.selectById(id); | |||
| // //其他费用账单更新 | |||
| // WxBillOther wxBillOther = new WxBillOther(); | |||
| // wxBillOther.setId(id); | |||
| // if (forcePaid) { | |||
| // wxBillOther.setReceivePay(dbBill.getPay()); | |||
| // wxBillOther.setOwe(0L); | |||
| // wxBillOther.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // }else { | |||
| // wxBillOther.setReceivePay(newPrice); | |||
| // wxBillOther.setOwe(newPrice + dbBill.getServiceChargePay() - dbBill.getPay()); | |||
| // if (newPrice.equals(dbBill.getPay())) { | |||
| // wxBillOther.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // } | |||
| // } | |||
| // wxBillOther.setUpdatetime(updateDate); | |||
| // wxBillOtherMapper.updateById(wxBillOther); | |||
| // //账单日志 | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| // } else if (billType.equals(EnumBillTypeParam.ATHER_DEPOSIT.getCode())) { | |||
| // WxBillOtherDeposit dbBill = wxBillOtherDepositMapper.selectById(id); | |||
| // //其他押金账单更新 | |||
| // WxBillOtherDeposit wxBillOtherDeposit = new WxBillOtherDeposit(); | |||
| // wxBillOtherDeposit.setId(id); | |||
| // if (forcePaid) { | |||
| // wxBillOtherDeposit.setReceivePay(dbBill.getPay()); | |||
| // wxBillOtherDeposit.setOwe(0L); | |||
| // wxBillOtherDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // }else { | |||
| // wxBillOtherDeposit.setReceivePay(newPrice); | |||
| // wxBillOtherDeposit.setOwe(newPrice + dbBill.getServiceChargePay() - dbBill.getPay()); | |||
| // if (newPrice.equals(dbBill.getPay())) { | |||
| // wxBillOtherDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // } | |||
| // } | |||
| // wxBillOtherDeposit.setUpdatetime(updateDate); | |||
| // wxBillOtherDepositMapper.updateById(wxBillOtherDeposit); | |||
| // //账单日志 | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| // }if (billType.equals(EnumBillTypeParam.RENT_BUSSINESS_MANAGE.getCode()) || billType.equals(EnumBillTypeParam.RENT_OPERATING_MANAGE.getCode())) { | |||
| // WxBillRentManage dbBill = wxBillRentManageMapper.selectById(id); | |||
| // WxBillRentManage wxBillRent = new WxBillRentManage(); | |||
| // wxBillRent.setId(id); | |||
| // wxBillRent.setUpdatetime(updateDate); | |||
| // if (forcePaid) { | |||
| // wxBillRent.setReceivePay(dbBill.getPay()); | |||
| // wxBillRent.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // wxBillRent.setOwe(0L); | |||
| // wxBillRentManageMapper.updateById(wxBillRent); | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, dbBill.getPay(), dbBill.getPay(), user); | |||
| // }else { | |||
| // if (oldLatePrice != null) { | |||
| // wxBillRent.setLatePayPrice(newLatePrice); | |||
| // wxBillRent.setOwe(dbBill.getReceivePay() + dbBill.getServiceChargePay() + newLatePrice - dbBill.getPay()); | |||
| // wxBillRentManageMapper.updateById(wxBillRent); | |||
| // addBillAction(EnumBillAction.UPDATE_LATE_PAY_MONEY, id, oldLatePrice, newLatePrice, user); | |||
| // } else { | |||
| // //租赁账单更新 | |||
| // wxBillRent.setReceivePay(newPrice); | |||
| // long latePayPrice = dbBill.getLatePayPrice() == null ? 0 : dbBill.getLatePayPrice(); | |||
| // wxBillRent.setOwe(newPrice + dbBill.getServiceChargePay() + latePayPrice - dbBill.getPay()); | |||
| // if (newPrice.equals(dbBill.getPay())) { | |||
| // wxBillRent.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| // } | |||
| // wxBillRentManageMapper.updateById(wxBillRent); | |||
| // //账单日志 | |||
| // addBillAction(EnumBillAction.UPDATE_BILL, id, oldPrice, newPrice, user); | |||
| // } | |||
| // } | |||
| // } else { | |||
| // logger.info("未找到账单类型"); | |||
| // } | |||
| return new ResultData(); | |||
| } | |||
| @@ -1775,68 +1775,68 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| @Override | |||
| public void importBill(String importKey, WxBillExcelTemplate bill, MallUserInfo user) { | |||
| //租金 | |||
| Integer billType = bill.getBillType(); | |||
| if (billType.equals(EnumBillExcelTemplate.SHOP_RENT.getCode()) || billType.equals(EnumBillExcelTemplate.POINT_RENT.getCode())) { | |||
| WxBillRent rentQuery = new WxBillRent(); | |||
| rentQuery.updateTenantInfo(user); | |||
| rentQuery.setMerchantId(bill.getMerchantId()); | |||
| rentQuery.setStarttime(bill.getStarttime()); | |||
| rentQuery.setEndtime(bill.getEndtime()); | |||
| if (billType.equals(EnumBillExcelTemplate.SHOP_RENT.getCode())) { | |||
| rentQuery.setRentShopType(EnumRentShopType.SHOP.getCode()); | |||
| } else { | |||
| rentQuery.setRentShopType(EnumRentShopType.POINT.getCode()); | |||
| } | |||
| rentQuery.setIsPreview(EnumIsPreview.NO.getCode()); | |||
| WxBillRent rent = wxBillRentMapper.selectBillOne(rentQuery); | |||
| if (rent != null && !rent.getStatus().equals(EnumBillRentStatus.PAID.getCode())) { | |||
| long pay = new BigDecimal(bill.getPayStr()).multiply(new BigDecimal(100)).longValueExact(); | |||
| WxBillRent expiredDayAndStatus = getExpiredDayAndStatus(bill.getReceiveDate(), bill.getPayDate(), rent.getOwe(), pay, true); | |||
| rent.setExpiredDay(expiredDayAndStatus.getExpiredDay()); | |||
| rent.setStatus(expiredDayAndStatus.getStatus()); | |||
| rent.setPay(rent.getPay() + pay); | |||
| rent.setOwe(rent.getOwe() - pay); | |||
| rent.setPayDate(bill.getPayDate()); | |||
| rent.setReceiveDate(bill.getReceiveDate()); | |||
| wxBillRentMapper.updateById(rent); | |||
| if (pay > 0) { | |||
| addActionImport(rent.getId(), bill.getPayWay(), bill.getPayDate(), user, bill.getPayStr()); | |||
| } | |||
| } | |||
| } else if (billType.equals(EnumBillExcelTemplate.SHOP_PROPERTY.getCode()) || billType.equals(EnumBillExcelTemplate.POINT_PROPERTY.getCode())) { | |||
| WxBillProperty propertyQuery = new WxBillProperty(); | |||
| propertyQuery.updateTenantInfo(user); | |||
| propertyQuery.setMerchantId(bill.getMerchantId()); | |||
| propertyQuery.setStarttime(bill.getStarttime()); | |||
| propertyQuery.setEndtime(bill.getEndtime()); | |||
| if (billType.equals(EnumBillExcelTemplate.SHOP_PROPERTY.getCode())) { | |||
| propertyQuery.setRentShopType(EnumRentShopType.SHOP.getCode()); | |||
| } else { | |||
| propertyQuery.setRentShopType(EnumRentShopType.POINT.getCode()); | |||
| } | |||
| propertyQuery.setIsPreview(EnumIsPreview.NO.getCode()); | |||
| WxBillProperty property = wxBillPropertyMapper.selectBillOne(propertyQuery); | |||
| if (property != null && !property.getStatus().equals(EnumBillRentStatus.PAID.getCode())) { | |||
| long pay = new BigDecimal(bill.getPayStr()).multiply(new BigDecimal(100)).longValueExact(); | |||
| WxBillRent expiredDayAndStatus = getExpiredDayAndStatus(bill.getReceiveDate(), bill.getPayDate(), property.getOwe(), pay, true); | |||
| property.setExpiredDay(expiredDayAndStatus.getExpiredDay()); | |||
| property.setStatus(expiredDayAndStatus.getStatus()); | |||
| property.setPay(property.getPay() + pay); | |||
| property.setOwe(property.getOwe() - pay); | |||
| property.setPayDate(bill.getPayDate()); | |||
| property.setReceiveDate(bill.getReceiveDate()); | |||
| wxBillPropertyMapper.updateById(property); | |||
| if (pay > 0) { | |||
| addActionImport(property.getId(), bill.getPayWay(), bill.getPayDate(), user, bill.getPayStr()); | |||
| } | |||
| } | |||
| } else { | |||
| logger.error("账单导入失败"); | |||
| } | |||
| //记数 | |||
| stringRedisTemplate.opsForHash().increment(importKey, "processCount", 1); | |||
| stringRedisTemplate.expire(importKey, 10, TimeUnit.SECONDS); | |||
| // //租金 | |||
| // Integer billType = bill.getBillType(); | |||
| // if (billType.equals(EnumBillExcelTemplate.SHOP_RENT.getCode()) || billType.equals(EnumBillExcelTemplate.POINT_RENT.getCode())) { | |||
| // WxBillRent rentQuery = new WxBillRent(); | |||
| // rentQuery.updateTenantInfo(user); | |||
| // rentQuery.setMerchantId(bill.getMerchantId()); | |||
| // rentQuery.setStarttime(bill.getStarttime()); | |||
| // rentQuery.setEndtime(bill.getEndtime()); | |||
| // if (billType.equals(EnumBillExcelTemplate.SHOP_RENT.getCode())) { | |||
| // rentQuery.setRentShopType(EnumRentShopType.SHOP.getCode()); | |||
| // } else { | |||
| // rentQuery.setRentShopType(EnumRentShopType.POINT.getCode()); | |||
| // } | |||
| // rentQuery.setIsPreview(EnumIsPreview.NO.getCode()); | |||
| // WxBillRent rent = wxBillRentMapper.selectBillOne(rentQuery); | |||
| // if (rent != null && !rent.getStatus().equals(EnumBillRentStatus.PAID.getCode())) { | |||
| // long pay = new BigDecimal(bill.getPayStr()).multiply(new BigDecimal(100)).longValueExact(); | |||
| // WxBillRent expiredDayAndStatus = getExpiredDayAndStatus(bill.getReceiveDate(), bill.getPayDate(), rent.getOwe(), pay, true); | |||
| // rent.setExpiredDay(expiredDayAndStatus.getExpiredDay()); | |||
| // rent.setStatus(expiredDayAndStatus.getStatus()); | |||
| // rent.setPay(rent.getPay() + pay); | |||
| // rent.setOwe(rent.getOwe() - pay); | |||
| // rent.setPayDate(bill.getPayDate()); | |||
| // rent.setReceiveDate(bill.getReceiveDate()); | |||
| // wxBillRentMapper.updateById(rent); | |||
| // if (pay > 0) { | |||
| // addActionImport(rent.getId(), bill.getPayWay(), bill.getPayDate(), user, bill.getPayStr()); | |||
| // } | |||
| // } | |||
| // } else if (billType.equals(EnumBillExcelTemplate.SHOP_PROPERTY.getCode()) || billType.equals(EnumBillExcelTemplate.POINT_PROPERTY.getCode())) { | |||
| // WxBillProperty propertyQuery = new WxBillProperty(); | |||
| // propertyQuery.updateTenantInfo(user); | |||
| // propertyQuery.setMerchantId(bill.getMerchantId()); | |||
| // propertyQuery.setStarttime(bill.getStarttime()); | |||
| // propertyQuery.setEndtime(bill.getEndtime()); | |||
| // if (billType.equals(EnumBillExcelTemplate.SHOP_PROPERTY.getCode())) { | |||
| // propertyQuery.setRentShopType(EnumRentShopType.SHOP.getCode()); | |||
| // } else { | |||
| // propertyQuery.setRentShopType(EnumRentShopType.POINT.getCode()); | |||
| // } | |||
| // propertyQuery.setIsPreview(EnumIsPreview.NO.getCode()); | |||
| // WxBillProperty property = wxBillPropertyMapper.selectBillOne(propertyQuery); | |||
| // if (property != null && !property.getStatus().equals(EnumBillRentStatus.PAID.getCode())) { | |||
| // long pay = new BigDecimal(bill.getPayStr()).multiply(new BigDecimal(100)).longValueExact(); | |||
| // WxBillRent expiredDayAndStatus = getExpiredDayAndStatus(bill.getReceiveDate(), bill.getPayDate(), property.getOwe(), pay, true); | |||
| // property.setExpiredDay(expiredDayAndStatus.getExpiredDay()); | |||
| // property.setStatus(expiredDayAndStatus.getStatus()); | |||
| // property.setPay(property.getPay() + pay); | |||
| // property.setOwe(property.getOwe() - pay); | |||
| // property.setPayDate(bill.getPayDate()); | |||
| // property.setReceiveDate(bill.getReceiveDate()); | |||
| // wxBillPropertyMapper.updateById(property); | |||
| // if (pay > 0) { | |||
| // addActionImport(property.getId(), bill.getPayWay(), bill.getPayDate(), user, bill.getPayStr()); | |||
| // } | |||
| // } | |||
| // } else { | |||
| // logger.error("账单导入失败"); | |||
| // } | |||
| // //记数 | |||
| // stringRedisTemplate.opsForHash().increment(importKey, "processCount", 1); | |||
| // stringRedisTemplate.expire(importKey, 10, TimeUnit.SECONDS); | |||
| } | |||
| public void addActionImport(Long billId, String payWay, Date payDate, MallUserInfo user, String pay) { | |||
| @@ -1,5 +1,6 @@ | |||
| package com.iformall.service.impl; | |||
| import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; | |||
| import com.github.pagehelper.PageHelper; | |||
| import com.github.pagehelper.PageInfo; | |||
| import com.iformall.common.ErrorCode; | |||
| @@ -64,16 +65,16 @@ public class WxBillDepositServiceImpl implements WxBillDepositService { | |||
| @Override | |||
| public void computeTotalMoney(WxPayAccountBill wxPayAccountBill, WxBillDeposit deposit) { | |||
| if (deposit.getReceivePay() != null) { | |||
| Long receivePayB = deposit.getReceivePay(); | |||
| String receivePayB = deposit.getReceivePay(); | |||
| BigDecimal servicePay; | |||
| if (deposit.getServiceChargePay() != null) { | |||
| servicePay = new BigDecimal(deposit.getServiceChargePay()); | |||
| } else { | |||
| servicePay = new BigDecimal(receivePayB).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP); | |||
| servicePay = new BigDecimal(receivePayB).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 10, BigDecimal.ROUND_HALF_UP); | |||
| } | |||
| Long realReceivePay = servicePay.longValue() + receivePayB; | |||
| deposit.setRealReceivePay(realReceivePay); | |||
| deposit.setServiceChargePay(servicePay.intValue()); | |||
| BigDecimal realReceivePay = servicePay.add(new BigDecimal(receivePayB)); | |||
| deposit.setRealReceivePay(realReceivePay.toPlainString()); | |||
| deposit.setServiceChargePay(servicePay.toPlainString()); | |||
| } | |||
| } | |||
| @@ -126,9 +127,9 @@ public class WxBillDepositServiceImpl implements WxBillDepositService { | |||
| @Override | |||
| public ResultData saveOrUpdate(WxBillDeposit record, MallUserInfo user) { | |||
| int receivepay = record.getReceivePay() == null ? 0 : record.getReceivePay().intValue(); | |||
| int pay = record.getPay()==null?0:record.getPay().intValue(); | |||
| if(pay>receivepay){ | |||
| String receivepay = StringUtils.isBlank(record.getReceivePay()) ? "0" : record.getReceivePay(); | |||
| String pay = StringUtils.isBlank(record.getPay()) ? "0":record.getPay(); | |||
| if(new BigDecimal(pay).compareTo(new BigDecimal(receivepay)) > 0){ | |||
| return new ResultData(ErrorCode.BILL_PAY_ERROR.getCode(), "实收金额不能大于实际应收金额"); | |||
| } | |||
| Date date = new Date(); | |||
| @@ -138,7 +139,7 @@ public class WxBillDepositServiceImpl implements WxBillDepositService { | |||
| record.setId(idWorker.nextId()); | |||
| record.setCreatetime(date); | |||
| record.setUpdatetime(date); | |||
| record.setOwe(record.getReceivePay() - record.getPay()); | |||
| record.setOwe(new BigDecimal(receivepay).subtract(new BigDecimal(pay)).toPlainString()); | |||
| record.setIsDel(EnumDelStatus.NOT_DEL.getCode()); | |||
| try { | |||
| wxBillDepositMapper.insert(record); | |||
| @@ -153,10 +154,10 @@ public class WxBillDepositServiceImpl implements WxBillDepositService { | |||
| if(wxBillDeposit==null){ | |||
| return new ResultData(ErrorCode.BILL_RENT_DEPOSIT_IS_NOT_FOUND); | |||
| } | |||
| Long addpay = wxBillDeposit.getPay(); | |||
| String addpay = wxBillDeposit.getPay(); | |||
| wxBillDeposit.setPay(record.getPay()); | |||
| wxBillDeposit.setReceivePay(record.getReceivePay()); | |||
| wxBillDeposit.setOwe(record.getReceivePay() - record.getPay()); | |||
| wxBillDeposit.setOwe(new BigDecimal(receivepay).subtract(new BigDecimal(pay)).toPlainString()); | |||
| if (record.getPay().equals(record.getReceivePay())) { | |||
| wxBillDeposit.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| Date receiveDate = wxBillDeposit.getReceiveDate(); | |||
| @@ -175,24 +176,24 @@ public class WxBillDepositServiceImpl implements WxBillDepositService { | |||
| logger.error("更新租赁押金账单失败,e:" + e.getMessage()); | |||
| throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); | |||
| } | |||
| //日志 | |||
| WxBillAction wxBillAction = new WxBillAction(); | |||
| wxBillAction.setBillId(wxBillDeposit.getId()); | |||
| String message = EnumBillPayWay.getEnum(record.getPayWay()).getMessage(); | |||
| String price = new BigDecimal(record.getPay() - addpay).divide(new BigDecimal(100)).toPlainString(); | |||
| wxBillAction.setDetails(message + price + "元"); | |||
| wxBillAction.setAction(EnumBillAction.OFFLINE_PAY.getCode()); | |||
| wxBillAction.setUserId(user.getId()); | |||
| wxBillAction.setUserName(user.getName()); | |||
| wxBillAction.setPhone(user.getPhone()); | |||
| wxBillAction.updateTenantInfo(user); | |||
| wxBillAction.setPayDate(wxBillDeposit.getPayDate()); | |||
| try { | |||
| wxBillActionService.save(wxBillAction); | |||
| } catch (Exception e) { | |||
| logger.error("添加租赁押金账单行为日志,e:" + e.getMessage()); | |||
| throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); | |||
| } | |||
| // //日志 | |||
| // WxBillAction wxBillAction = new WxBillAction(); | |||
| // wxBillAction.setBillId(wxBillDeposit.getId()); | |||
| // String message = EnumBillPayWay.getEnum(record.getPayWay()).getMessage(); | |||
| // String price = new BigDecimal(record.getPay() - addpay).divide(new BigDecimal(100)).toPlainString(); | |||
| // wxBillAction.setDetails(message + price + "元"); | |||
| // wxBillAction.setAction(EnumBillAction.OFFLINE_PAY.getCode()); | |||
| // wxBillAction.setUserId(user.getId()); | |||
| // wxBillAction.setUserName(user.getName()); | |||
| // wxBillAction.setPhone(user.getPhone()); | |||
| // wxBillAction.updateTenantInfo(user); | |||
| // wxBillAction.setPayDate(wxBillDeposit.getPayDate()); | |||
| // try { | |||
| // wxBillActionService.save(wxBillAction); | |||
| // } catch (Exception e) { | |||
| // logger.error("添加租赁押金账单行为日志,e:" + e.getMessage()); | |||
| // throw new MallinkException(ErrorCode.DB_FAIL.getCode(), "DB FAILD " + e.getMessage()); | |||
| // } | |||
| return new ResultData(Result.SUCCESS, "更新租赁押金账单成功", wxBillDeposit); | |||
| } | |||
| } | |||
| @@ -268,7 +269,7 @@ public class WxBillDepositServiceImpl implements WxBillDepositService { | |||
| return new ResultData(ErrorCode.BILL_RENT_DEPOSIT_IS_NOT_FOUND); | |||
| } | |||
| wxBillDeposit.setReceivePay(record.getReceivePay()); | |||
| wxBillDeposit.setOwe(record.getReceivePay() - record.getPay()); | |||
| wxBillDeposit.setOwe(new BigDecimal(record.getReceivePay()).subtract(new BigDecimal(record.getPay())).toPlainString()); | |||
| wxBillDeposit.setUpdatetime(new Date()); | |||
| try { | |||
| wxBillDepositMapper.updateById(wxBillDeposit); | |||
| @@ -153,9 +153,9 @@ public class WxBillRentManageServiceImpl implements WxBillRentManageService { | |||
| @Override | |||
| public ResultData saveOrUpdate(WxBillRentManage record, MallUserInfo user) { | |||
| int receivepay = record.getRealReceivePay() == null ? 0 : record.getRealReceivePay().intValue(); | |||
| int pay = record.getPay()==null?0:record.getPay().intValue(); | |||
| if(pay>receivepay){ | |||
| String receivepay = StringUtils.isBlank(record.getRealReceivePay()) ? "0" : record.getRealReceivePay(); | |||
| String pay = StringUtils.isBlank(record.getPay()) ? "0" : record.getPay(); | |||
| if(new BigDecimal(pay).compareTo(new BigDecimal(receivepay)) > 0 ){ | |||
| return new ResultData(ErrorCode.BILL_PAY_ERROR.getCode(), "实收金额不能大于实际应收总金额"); | |||
| } | |||
| Date date = new Date(); | |||
| @@ -164,7 +164,7 @@ public class WxBillRentManageServiceImpl implements WxBillRentManageService { | |||
| record.setId(idWorker.nextId()); | |||
| record.setCreatetime(date); | |||
| record.setUpdatetime(date); | |||
| record.setOwe(record.getReceivePay()-record.getPay()); | |||
| record.setOwe(new BigDecimal(receivepay).subtract(new BigDecimal(pay)).toPlainString()); | |||
| record.setIsDel(EnumDelStatus.NOT_DEL.getCode()); | |||
| try { | |||
| wxBillRentManageMapper.insert(record); | |||
| @@ -183,18 +183,18 @@ public class WxBillRentManageServiceImpl implements WxBillRentManageService { | |||
| String price = ""; | |||
| String message =""; | |||
| if(record.getServiceChargePayUpdate() != null){ | |||
| Double l = Double.valueOf(record.getServiceChargePayUpdate())*100; | |||
| wxBillRent.setServiceChargePay(l.intValue()); | |||
| long latePayPrice = wxBillRent.getLatePayPrice() == null ? 0 : wxBillRent.getLatePayPrice(); | |||
| wxBillRent.setOwe(wxBillRent.getReceivePay() + latePayPrice + wxBillRent.getServiceChargePay() - wxBillRent.getPay()); | |||
| wxBillRent.setServiceChargePay(record.getServiceChargePayUpdate()); | |||
| String latePayPrice = StringUtils.isBlank(wxBillRent.getLatePayPrice()) ? "0" : wxBillRent.getLatePayPrice(); | |||
| wxBillRent.setOwe(new BigDecimal(wxBillRent.getReceivePay()).add(new BigDecimal(latePayPrice)).add(new BigDecimal(wxBillRent.getServiceChargePay())) | |||
| .subtract(new BigDecimal(wxBillRent.getPay())).toPlainString()); | |||
| }else{ | |||
| Long addpay = wxBillRent.getPay(); | |||
| String addpay = wxBillRent.getPay(); | |||
| wxBillRent.setLatePayRatio(record.getLatePayRatio()); | |||
| wxBillRent.setLatePayTime(record.getLatePayTime()); | |||
| wxBillRent.setLatePayStatus(record.getLatePayStatus()); | |||
| wxBillRent.setPay(record.getPay()); | |||
| wxBillRent.setReceivePay(record.getReceivePay()); | |||
| wxBillRent.setOwe(record.getRealReceivePay() - record.getPay()); | |||
| wxBillRent.setOwe(new BigDecimal(receivepay).subtract(new BigDecimal(pay)).toPlainString()); | |||
| if (record.getPay().equals(record.getRealReceivePay())) { | |||
| wxBillRent.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| Date payDate = record.getPayDate(); | |||
| @@ -208,7 +208,7 @@ public class WxBillRentManageServiceImpl implements WxBillRentManageService { | |||
| wxBillRent.setPayDate(record.getPayDate()); | |||
| wxBillRent.setUpdatetime(date); | |||
| wxBillRent.setPayWay(record.getPayWay()); | |||
| price = new BigDecimal(record.getPay() - addpay).divide(new BigDecimal(100)).toPlainString(); | |||
| price = new BigDecimal(record.getPay()).subtract(new BigDecimal(addpay)).toPlainString(); | |||
| } | |||
| try { | |||
| @@ -251,7 +251,7 @@ public class WxBillRentManageServiceImpl implements WxBillRentManageService { | |||
| record.updateTenantInfo(tenantEntity); | |||
| PageInfo<WxBillRentManage> page = getBillRentManageList(1, 1, record, wxPayAccountBill); | |||
| WxBillRentManage rentManage = page.getList().get(0); | |||
| rentManage.setOwe(rentManage.getRealReceivePay() - rentManage.getPay()); | |||
| rentManage.setOwe(new BigDecimal(rentManage.getRealReceivePay()).subtract(new BigDecimal(rentManage.getPay())).toPlainString()); | |||
| return rentManage; | |||
| } | |||
| @@ -265,21 +265,21 @@ public class WxBillRentManageServiceImpl implements WxBillRentManageService { | |||
| public void computeTotalMoney(WxPayAccountBill wxPayAccountBill, WxBillRentManage rent) { | |||
| if (rent.getReceivePay() != null) { | |||
| if (rent.getLatePayPrice() == null) { | |||
| rent.setLatePayPrice(0L); | |||
| rent.setLatePayPrice("0"); | |||
| } | |||
| BigDecimal servicePay; | |||
| if (rent.getServiceChargePay() != null) { | |||
| servicePay = new BigDecimal(rent.getServiceChargePay()); | |||
| } else { | |||
| servicePay = new BigDecimal(rent.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP); | |||
| servicePay = new BigDecimal(rent.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 10, BigDecimal.ROUND_HALF_UP); | |||
| } | |||
| Long realReceivePay = servicePay.longValue() + rent.getLatePayPrice() + rent.getReceivePay(); | |||
| rent.setRealReceivePay(realReceivePay); | |||
| rent.setServiceChargePay(servicePay.intValue()); | |||
| BigDecimal realReceivePay = servicePay.add(new BigDecimal(rent.getLatePayPrice()).add(new BigDecimal(rent.getReceivePay()))); | |||
| rent.setRealReceivePay(realReceivePay.toPlainString()); | |||
| rent.setServiceChargePay(servicePay.toPlainString()); | |||
| if (!rent.getStatus().equals(EnumBillRentStatus.NOT_PAID.getCode())) { | |||
| rent.setOwe(0L); | |||
| rent.setOwe("0"); | |||
| } else { | |||
| rent.setOwe(realReceivePay - rent.getPay()); | |||
| rent.setOwe(realReceivePay.subtract(new BigDecimal(rent.getPay())).toPlainString()); | |||
| } | |||
| } | |||
| } | |||
| @@ -288,8 +288,8 @@ public class WxBillRentManageServiceImpl implements WxBillRentManageService { | |||
| public ResultData updateLatePayMoney(WxBillRentManage record, MallUserInfo user) { | |||
| WxBillRentManage rent = wxBillRentManageMapper.selectById(record.getId()); | |||
| if(record.getLatePayMoneyUpdate() != null) { | |||
| rent.setLatePayPrice(Long.parseLong(record.getLatePayMoneyUpdate()) * 100); | |||
| rent.setOwe(rent.getReceivePay() + rent.getLatePayPrice() + rent.getServiceChargePay() - rent.getPay()); | |||
| rent.setLatePayPrice(record.getLatePayMoneyUpdate()); | |||
| rent.setOwe(new BigDecimal(rent.getReceivePay()).add(new BigDecimal(rent.getLatePayPrice())).add(new BigDecimal(rent.getServiceChargePay())).subtract(new BigDecimal(rent.getPay())).toPlainString()); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| WxBillAction billAction = new WxBillAction(); | |||
| billAction.setId(idWorker.nextId()); | |||
| @@ -76,7 +76,7 @@ public class WxBillRentServiceImpl implements WxBillRentService { | |||
| public void computeTotalMoney(WxPayAccountBill wxPayAccountBill, WxBillRent rent) { | |||
| if (rent.getReceivePay() != null) { | |||
| if (rent.getLatePayPrice() == null) { | |||
| rent.setLatePayPrice(0L); | |||
| rent.setLatePayPrice("0"); | |||
| } | |||
| BigDecimal servicePay; | |||
| if (rent.getServiceChargePay() != null) { | |||
| @@ -165,9 +165,9 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| } | |||
| //init rentPrice | |||
| if(StringUtils.isNotBlank(wxRentContract.getRentPrice())){ | |||
| wxRentContract.setRentPrice(Double.parseDouble(wxRentContract.getRentPrice())/100 + ""); | |||
| } | |||
| //if(StringUtils.isNotBlank(wxRentContract.getRentPrice())){ | |||
| //wxRentContract.setRentPrice(Double.parseDouble(wxRentContract.getRentPrice())/100 + ""); | |||
| //} | |||
| //init 租赁单价 | |||
| String rentInfo = wxRentContract.getRentInfo(); | |||
| @@ -177,13 +177,13 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| //查询rent_info 包括shopId | |||
| for (int i = 0; i < size; i++) { | |||
| JSONObject rentInfoObject = rentInfoArray.getJSONObject(i); | |||
| Double rentPrice = rentInfoObject.getDouble("rentPrice"); | |||
| BigDecimal rentPrice = rentInfoObject.getBigDecimal("rentPrice"); | |||
| //wxRentContract.setShopId(rentInfoObject.getLong("shopId")); | |||
| String price = wxRentContract.getPrice(); | |||
| if(rentPrice == null){ | |||
| if(StringUtils.isNotBlank(wxRentContract.getRentArea()) && !"0".equals(wxRentContract.getRentArea()) && !"0.00".equals(wxRentContract.getRentArea()) && !"0.0".equals(wxRentContract.getRentArea()) ) { | |||
| Double rentArea = Double.parseDouble(wxRentContract.getRentArea()); | |||
| rentPrice = new BigDecimal(price).divide(new BigDecimal(rentArea)).setScale(wxRentContract.getDecimalSize(), BigDecimal.ROUND_HALF_UP).doubleValue(); | |||
| rentPrice = new BigDecimal(price).divide(new BigDecimal(rentArea),wxRentContract.getDecimalSize(), BigDecimal.ROUND_HALF_UP); | |||
| rentInfoObject.put("rentPrice", rentPrice); | |||
| } | |||
| } | |||
| @@ -194,8 +194,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| if(StringUtils.isNotBlank(wxRentContract.getRentArea()) && !"0".equals(wxRentContract.getRentArea()) && !"0.00".equals(wxRentContract.getRentArea()) && !"0.0".equals(wxRentContract.getRentArea()) ) { | |||
| String price = wxRentContract.getPrice(); | |||
| Double rentArea = Double.parseDouble(wxRentContract.getRentArea()); | |||
| Double rentPrice = new BigDecimal(price).divide(new BigDecimal(rentArea)).setScale(wxRentContract.getDecimalSize(), BigDecimal.ROUND_HALF_UP).doubleValue(); | |||
| if(rentPrice > 0){ | |||
| BigDecimal rentPrice = new BigDecimal(price).divide(new BigDecimal(rentArea),wxRentContract.getDecimalSize(), BigDecimal.ROUND_HALF_UP); | |||
| if(rentPrice.compareTo(new BigDecimal(0)) > 0){ | |||
| wxRentContract.setRentPrice(rentPrice.toString()); | |||
| }else{ | |||
| wxRentContract.setRentPrice("0"); | |||
| @@ -740,7 +740,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| bill.setShopId(shopIds.get(0)); | |||
| } | |||
| setManageExpiredDay(bill,Calendar.MONTH,record.getReceivePeriod()); | |||
| if (bill.getReceivePay().equals(0L)) { | |||
| if (bill.getReceivePay().equals("0")) { | |||
| bill.setStatus(EnumBillRentStatus.PAID.getCode()); | |||
| bill.setPayDate(date); | |||
| } | |||
| @@ -1295,19 +1295,22 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| return shopInfoStr; | |||
| } | |||
| private String getRentPriceInfo(WxRentContract wxRentContract, long contractNeedPay){ | |||
| if(contractNeedPay == 0l){ | |||
| private String getRentPriceInfo(WxRentContract wxRentContract, BigDecimal contractNeedPay){ | |||
| if(contractNeedPay.compareTo(new BigDecimal(0)) == 0){ | |||
| return null; | |||
| } | |||
| long rentPrice = 0l, siteMoney = 0l, facilityMoney = 0l, administratorMoney = 0l,managementMoney = 0l; | |||
| BigDecimal rentPrice = new BigDecimal(0), siteMoney = new BigDecimal(0), facilityMoney = new BigDecimal(0), administratorMoney = new BigDecimal(0),managementMoney = new BigDecimal(0); | |||
| if(!wxRentContract.getType().equals(EnumRentContractType.RENT_BY_JOINT.getCode()) && | |||
| !wxRentContract.getType().equals(EnumRentContractType.RENT_BY_COUNT.getCode()) | |||
| && !wxRentContract.getType().equals(EnumRentContractType.RENT_BY_CUSTOMIZE.getCode())){ | |||
| if(wxRentContract.getRentInputWay().equals(EnumRentContractRentInputWay.PART.getCode())){ | |||
| String rentInfo = wxRentContract.getRentInfo(); | |||
| JSONArray rentInfoArray = JSONArray.parseArray(rentInfo); | |||
| long[] priceList = WxRentContractHelper.computeRentPriceByShop(wxRentContract).get(0); | |||
| long sum = Arrays.stream(priceList).sum(); | |||
| String[] priceList = WxRentContractHelper.computeRentPriceByShop(wxRentContract).get(0); | |||
| BigDecimal sum = new BigDecimal(0); | |||
| for (int i = 0 ; i < priceList.length ; i++) { | |||
| sum = sum.add(new BigDecimal(priceList[i])); | |||
| } | |||
| int size = rentInfoArray.size(); | |||
| for (int i = 0;i < size;i++) { | |||
| BigDecimal a=new BigDecimal(0),b=new BigDecimal(0),c=new BigDecimal(0),d=new BigDecimal(0),e=new BigDecimal(0); | |||
| @@ -1343,23 +1346,24 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| } | |||
| } | |||
| rentPrice += new BigDecimal(contractNeedPay).multiply(new BigDecimal(priceList[i])).divide(new BigDecimal(sum),2,BigDecimal.ROUND_HALF_UP) | |||
| .multiply(a).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); | |||
| siteMoney += new BigDecimal(contractNeedPay).multiply(new BigDecimal(priceList[i])).divide(new BigDecimal(sum),2,BigDecimal.ROUND_HALF_UP) | |||
| .multiply(b).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); | |||
| facilityMoney += new BigDecimal(contractNeedPay).multiply(new BigDecimal(priceList[i])).divide(new BigDecimal(sum),2,BigDecimal.ROUND_HALF_UP) | |||
| .multiply(c).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); | |||
| administratorMoney += new BigDecimal(contractNeedPay).multiply(new BigDecimal(priceList[i])).divide(new BigDecimal(sum),2,BigDecimal.ROUND_HALF_UP) | |||
| .multiply(d).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); | |||
| managementMoney += new BigDecimal(contractNeedPay).multiply(new BigDecimal(priceList[i])).divide(new BigDecimal(sum),2,BigDecimal.ROUND_HALF_UP) | |||
| .multiply(e).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); | |||
| rentPrice =rentPrice.add(contractNeedPay.multiply(new BigDecimal(priceList[i])).divide(sum,wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP) | |||
| .multiply(a).divide(a.add(b).add(c).add(d).add(e),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP)); | |||
| siteMoney =siteMoney.add(contractNeedPay.multiply(new BigDecimal(priceList[i])).divide(sum,wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP) | |||
| .multiply(b).divide(a.add(b).add(c).add(d).add(e),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP)); | |||
| facilityMoney =facilityMoney.add(contractNeedPay.multiply(new BigDecimal(priceList[i])).divide(sum,wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP) | |||
| .multiply(c).divide(a.add(b).add(c).add(d).add(e),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP)); | |||
| administratorMoney =administratorMoney.add(contractNeedPay.multiply(new BigDecimal(priceList[i])).divide(sum,wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP) | |||
| .multiply(d).divide(a.add(b).add(c).add(d).add(e),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP)); | |||
| managementMoney =managementMoney.add(contractNeedPay.multiply(new BigDecimal(priceList[i])).divide(sum,wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP) | |||
| .multiply(e).divide(a.add(b).add(c).add(d).add(e),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP)); | |||
| } | |||
| }else{ | |||
| BigDecimal a=new BigDecimal(0),b=new BigDecimal(0),c=new BigDecimal(0),d=new BigDecimal(0),e=new BigDecimal(0); | |||
| String rentPrice1 = wxRentContract.getRentPrice(); | |||
| if(StringUtils.isNotBlank(rentPrice1)){ | |||
| a = new BigDecimal(rentPrice1).divide(new BigDecimal(100)); | |||
| //a = new BigDecimal(rentPrice1).divide(new BigDecimal(100)); | |||
| a = new BigDecimal(rentPrice1); | |||
| } | |||
| String otherRentPriceInfo1 = wxRentContract.getOtherRentPriceInfo(); | |||
| if(StringUtils.isNotBlank(otherRentPriceInfo1)){ | |||
| @@ -1384,11 +1388,11 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| e = new BigDecimal(managementMoney1); | |||
| } | |||
| } | |||
| rentPrice = new BigDecimal(contractNeedPay).multiply(a).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); | |||
| siteMoney = new BigDecimal(contractNeedPay).multiply(b).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); | |||
| facilityMoney = new BigDecimal(contractNeedPay).multiply(c).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); | |||
| administratorMoney = new BigDecimal(contractNeedPay).multiply(d).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); | |||
| managementMoney = new BigDecimal(contractNeedPay).multiply(e).divide(a.add(b).add(c).add(d).add(e),2,BigDecimal.ROUND_HALF_UP).setScale(0,BigDecimal.ROUND_HALF_UP).longValue(); | |||
| rentPrice = contractNeedPay.multiply(a).divide(a.add(b).add(c).add(d).add(e),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); | |||
| siteMoney = contractNeedPay.multiply(b).divide(a.add(b).add(c).add(d).add(e),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); | |||
| facilityMoney = contractNeedPay.multiply(c).divide(a.add(b).add(c).add(d).add(e),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); | |||
| administratorMoney = contractNeedPay.multiply(d).divide(a.add(b).add(c).add(d).add(e),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); | |||
| managementMoney = contractNeedPay.multiply(e).divide(a.add(b).add(c).add(d).add(e),wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP).setScale(wxRentContract.getDecimalSize(),BigDecimal.ROUND_HALF_UP); | |||
| } | |||
| }else{ | |||
| rentPrice = contractNeedPay; | |||
| @@ -1396,11 +1400,11 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| Map<String,String> resultMap = new HashedMap(); | |||
| resultMap.put("rentPrice",new BigDecimal(rentPrice).divide(new BigDecimal(100)).toString()); | |||
| resultMap.put("siteMoney",new BigDecimal(siteMoney).divide(new BigDecimal(100)).toString()); | |||
| resultMap.put("facilityMoney",new BigDecimal(facilityMoney).divide(new BigDecimal(100)).toString()); | |||
| resultMap.put("administratorMoney",new BigDecimal(administratorMoney).divide(new BigDecimal(100)).toString()); | |||
| resultMap.put("managementMoney",new BigDecimal(managementMoney).divide(new BigDecimal(100)).toString()); | |||
| resultMap.put("rentPrice",rentPrice.toString()); | |||
| resultMap.put("siteMoney",siteMoney.toString()); | |||
| resultMap.put("facilityMoney",facilityMoney.toString()); | |||
| resultMap.put("administratorMoney",administratorMoney.toString()); | |||
| resultMap.put("managementMoney",managementMoney.toString()); | |||
| return JSON.toJSONString(resultMap); | |||
| } | |||
| @@ -1448,11 +1452,11 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| for (int i = 0; i < billTimeVoList.size(); i++) { | |||
| BillTimeVo billTimeVo = billTimeVoList.get(i); | |||
| //计算金额 | |||
| BigDecimal needpay = new BigDecimal(0); | |||
| String needpay = "0"; | |||
| //商业管理费 | |||
| BigDecimal bussinessManageFeeNeedpay = new BigDecimal(0); | |||
| String bussinessManageFeeNeedpay = "0"; | |||
| //营业管理费 | |||
| BigDecimal operatingManageFeeNeedpay = new BigDecimal(0); | |||
| String operatingManageFeeNeedpay = "0"; | |||
| boolean flag = false; | |||
| //此处逻辑处理这一年和下一年交接那一期账单。 | |||
| @@ -1465,16 +1469,16 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| index++; | |||
| //如果是计算账单金额&cross 拆分日期进行计算 | |||
| if(billTimeVo.getEndDate().after(endDate)) { | |||
| long needpayFront = 0; | |||
| long needpayAfter = 0; | |||
| String needpayFront = "0"; | |||
| String needpayAfter = "0"; | |||
| //商业管理费 | |||
| long bussinessManageFeeNeedpayFront = 0; | |||
| long bussinessManageFeeNeedpayAfter = 0; | |||
| String bussinessManageFeeNeedpayFront = "0"; | |||
| String bussinessManageFeeNeedpayAfter = "0"; | |||
| //营业管理费 | |||
| long operatingManageFeeNeedpayFront = 0; | |||
| long operatingManageFeeNeedpayAfter = 0; | |||
| String operatingManageFeeNeedpayFront = "0"; | |||
| String operatingManageFeeNeedpayAfter = "0"; | |||
| //同一天,算一天 | |||
| if(sd.format(billTimeVo.getStartDate()).equals(sd.format(billTimeVo.getEndDate()))){ | |||
| @@ -1534,9 +1538,9 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| } | |||
| } | |||
| } | |||
| needpay = needpayFront+needpayAfter; | |||
| bussinessManageFeeNeedpay = bussinessManageFeeNeedpayFront + bussinessManageFeeNeedpayAfter; | |||
| operatingManageFeeNeedpay = operatingManageFeeNeedpayFront + operatingManageFeeNeedpayAfter; | |||
| needpay = new BigDecimal(needpayFront).add(new BigDecimal(needpayAfter)).toPlainString(); | |||
| bussinessManageFeeNeedpay = new BigDecimal(bussinessManageFeeNeedpayFront).add(new BigDecimal(bussinessManageFeeNeedpayAfter)).toPlainString(); | |||
| operatingManageFeeNeedpay = new BigDecimal(operatingManageFeeNeedpayFront).add(new BigDecimal(operatingManageFeeNeedpayAfter)).toPlainString(); | |||
| flag = true; | |||
| } | |||
| if(index >= yearList.size()-1){ | |||
| @@ -1565,13 +1569,13 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| wxBillRent.setIsPreview(isPreview); | |||
| wxBillRent.setId(idWorker.nextId()); | |||
| wxBillRent.setRentContractId(wxRentContract.getId()); | |||
| wxBillRent.setPay(0L); | |||
| wxBillRent.setPay("0"); | |||
| wxBillRent.setStarttime(billTimeVo.getStartDate()); | |||
| wxBillRent.setEndtime(billTimeVo.getEndDate()); | |||
| wxBillRent.setReceiveDate(billTimeVo.getReceiveDate()); | |||
| wxBillRent.setContractNeedPay(needpay); | |||
| wxBillRent.setRentPriceInfo(getRentPriceInfo(wxRentContract,needpay)); | |||
| wxBillRent.setRentPriceInfo(getRentPriceInfo(wxRentContract,new BigDecimal(needpay))); | |||
| wxBillRent.setNeedPay(needpay); | |||
| wxBillRent.setOwe(needpay); | |||
| wxBillRent.setReceivePay(needpay); | |||
| @@ -1582,7 +1586,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| //截止收租日在当前时间之前 | |||
| Date date = new Date(); | |||
| setExpiredDay(wxBillRent,dayType,receivePeriod); | |||
| wxBillRent.setRevenue(0L); | |||
| wxBillRent.setRevenue("0"); | |||
| wxBillRent.updateTenantInfo(wxRentContract); | |||
| wxBillRent.setMerchantId(wxRentContract.getMerchantId()); | |||
| wxBillRent.setUserId(userId); | |||
| @@ -1598,19 +1602,20 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| wxBillRent.setLatePayRatio(0); | |||
| //计算手续费 | |||
| BigDecimal servicePay = new BigDecimal(wxBillRent.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP); | |||
| wxBillRent.setServiceChargePay(servicePay.intValue()); | |||
| wxBillRent.setOwe(wxBillRent.getReceivePay() + wxBillRent.getServiceChargePay()); | |||
| BigDecimal servicePay = new BigDecimal(wxBillRent.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())) | |||
| .divide(new BigDecimal(10000), wxRentContract.getDecimalSize(), BigDecimal.ROUND_HALF_UP); | |||
| wxBillRent.setServiceChargePay(servicePay.toPlainString()); | |||
| wxBillRent.setOwe(new BigDecimal(wxBillRent.getReceivePay()).add(new BigDecimal(wxBillRent.getServiceChargePay())).toPlainString()); | |||
| resultList.add(wxBillRent); | |||
| //商业管理费账单 | |||
| if (null != bussinessManagerPriceArrs && bussinessManagerPriceArrs.length > 0 && bussinessManageFeeNeedpay > 0) { | |||
| manageList.add(setManageRent(wxBillRent,EnumRentContractManageFeeType.RENT_BUSSINESS_MANAGE_FEE,bussinessManageFeeNeedpay,wxPayAccountBill.getServiceChargeRate(),dayType,receivePeriod)); | |||
| if (null != bussinessManagerPriceArrs && bussinessManagerPriceArrs.length > 0 && new BigDecimal(bussinessManageFeeNeedpay).compareTo(new BigDecimal(0)) > 0) { | |||
| manageList.add(setManageRent(wxRentContract.getDecimalSize(),wxBillRent,EnumRentContractManageFeeType.RENT_BUSSINESS_MANAGE_FEE,bussinessManageFeeNeedpay,wxPayAccountBill.getServiceChargeRate(),dayType,receivePeriod)); | |||
| } | |||
| //营业管理费账单 | |||
| if (null != operationManagerPriceArrs && operationManagerPriceArrs.length > 0 && operatingManageFeeNeedpay > 0 ) { | |||
| manageList.add(setManageRent(wxBillRent,EnumRentContractManageFeeType.RENT_OPERATING_MANAGE_FEE,operatingManageFeeNeedpay,wxPayAccountBill.getServiceChargeRate(),dayType,receivePeriod)); | |||
| if (null != operationManagerPriceArrs && operationManagerPriceArrs.length > 0 && new BigDecimal(operatingManageFeeNeedpay).compareTo(new BigDecimal(0)) > 0 ) { | |||
| manageList.add(setManageRent(wxRentContract.getDecimalSize(),wxBillRent,EnumRentContractManageFeeType.RENT_OPERATING_MANAGE_FEE,operatingManageFeeNeedpay,wxPayAccountBill.getServiceChargeRate(),dayType,receivePeriod)); | |||
| } | |||
| } | |||
| @@ -1627,7 +1632,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| } | |||
| private WxBillRentManage setManageRent(WxBillRent wxBillRent,EnumRentContractManageFeeType feeType,Long needPay,Integer serviceChargeRate,int dayType,int receivePeriod) { | |||
| private WxBillRentManage setManageRent(Integer decimalSize,WxBillRent wxBillRent,EnumRentContractManageFeeType feeType,String needPay,Integer serviceChargeRate,int dayType,int receivePeriod) { | |||
| WxBillRentManage manage = new WxBillRentManage(); | |||
| manage.initByBillRent(wxBillRent); | |||
| final IdWorker idWorker = IdWorker.get(); | |||
| @@ -1638,9 +1643,9 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| manage.setOwe(needPay); | |||
| setManageExpiredDay(manage,dayType,receivePeriod); | |||
| //计算手续费 | |||
| BigDecimal servicePay = new BigDecimal(needPay).multiply(new BigDecimal(serviceChargeRate)).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP); | |||
| manage.setServiceChargePay(servicePay.intValue()); | |||
| manage.setOwe(needPay + manage.getServiceChargePay()); | |||
| BigDecimal servicePay = new BigDecimal(needPay).multiply(new BigDecimal(serviceChargeRate)).divide(new BigDecimal(10000), decimalSize, BigDecimal.ROUND_HALF_UP); | |||
| manage.setServiceChargePay(servicePay.toPlainString()); | |||
| manage.setOwe(new BigDecimal(needPay).add(new BigDecimal(manage.getServiceChargePay())).toPlainString()); | |||
| return manage; | |||
| } | |||
| @@ -1949,7 +1954,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| //建立账单 | |||
| //自定义账单无单价,为能生成账单,设置该值 | |||
| if (EnumRentContractType.RENT_BY_CUSTOMIZE.getCode() == record.getType()) { | |||
| record.setPrice(1L); | |||
| record.setPrice("0.01"); | |||
| } | |||
| if (record != null && | |||
| record.getMerchantId() != null && | |||
| @@ -1963,7 +1968,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| // WxMerchant wxMerchant = new WxMerchant(); | |||
| // wxMerchant.setId(record.getMerchantId()); | |||
| // wxMerchant.updateTenantInfo(record); | |||
| if(record.getDeposit() > 0) { | |||
| if(new BigDecimal(record.getDeposit()).compareTo(new BigDecimal(0)) > 0) { | |||
| //押金 | |||
| buildDeposit( null, id); | |||
| } | |||
| @@ -2766,7 +2771,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| public void areaWay(WxRentContract wxRentContract, Map<String, Object> result, Integer lease, int extralease, int extracount, int paycount, int index, int count, BigDecimal rentPrice) { | |||
| long[] priceArrs = new long[]{}; | |||
| String[] priceArrs = new String[]{}; | |||
| List<String> adjustRatioList = new ArrayList<>(); | |||
| adjustRatioList.add(0, "0"); | |||
| if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) { | |||
| @@ -2784,16 +2789,16 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| } | |||
| adjustRatioList.add(adjustRatioStr.toString()); | |||
| } | |||
| List<long[]> priceList = WxRentContractHelper.computeRentPriceByShop(wxRentContract); | |||
| List<String[]> priceList = WxRentContractHelper.computeRentPriceByShop(wxRentContract); | |||
| int size = priceList.size(); | |||
| priceArrs = new long[size]; | |||
| priceArrs = new String[size]; | |||
| for (int i = 0; i < size; i++) { | |||
| long[] priceInt = priceList.get(i); | |||
| long sum = 0; | |||
| for (long p : priceInt) { | |||
| sum += p; | |||
| String[] priceInt = priceList.get(i); | |||
| BigDecimal sum = new BigDecimal(0); | |||
| for (String p : priceInt) { | |||
| sum = sum.add(new BigDecimal(p)); | |||
| } | |||
| priceArrs[i] = sum; | |||
| priceArrs[i] = sum.toPlainString(); | |||
| } | |||
| } else { | |||
| String adjustRatio = wxRentContract.getAdjustRatio(); | |||
| @@ -2832,15 +2837,15 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| result.put("rentalEndDateDay" + i, enddate.substring(8)); | |||
| if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) { | |||
| rentPrice = new BigDecimal(priceArrs[i]).divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | |||
| rentPrice = new BigDecimal(priceArrs[i]).divide(new BigDecimal(100)).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN); | |||
| result.put("priceRentUpper" + i, PriceUtil.digitUppercase(rentPrice.doubleValue())); | |||
| result.put("priceRent" + i, rentPrice.doubleValue()); | |||
| result.put("priceRent" + i, rentPrice.toPlainString()); | |||
| result.put("adjustRatio" + i, adjustRatioList.get(i)); | |||
| } else { | |||
| rentPrice = rentPrice.multiply(new BigDecimal(adjustRatioList.get(i))) | |||
| .add(rentPrice).setScale(2, RoundingMode.HALF_EVEN); | |||
| .add(rentPrice).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN); | |||
| result.put("priceRentUpper" + i, PriceUtil.digitUppercase(rentPrice.doubleValue())); | |||
| result.put("priceRent" + i, rentPrice.doubleValue()); | |||
| result.put("priceRent" + i, rentPrice.toPlainString()); | |||
| result.put("adjustRatio" + i, adjustRatioList.get(i)); | |||
| } | |||
| result.put("payRatio" + i, payRatioStr); | |||
| @@ -2871,14 +2876,14 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| result.put("rentalEndDateDay" + count, enddate.substring(8)); | |||
| if (wxRentContract.getRentShopType().equals(EnumRentShopType.SHOP.getCode())) { | |||
| rentPrice = new BigDecimal(priceArrs[count]).divide(new BigDecimal(100)).setScale(2, RoundingMode.HALF_EVEN); | |||
| rentPrice = new BigDecimal(priceArrs[count]).divide(new BigDecimal(100)).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN); | |||
| result.put("priceRentUpper" + count, PriceUtil.digitUppercase(rentPrice.doubleValue())); | |||
| result.put("priceRent" + count, rentPrice.doubleValue()); | |||
| result.put("priceRent" + count, rentPrice.toPlainString()); | |||
| } else { | |||
| rentPrice = rentPrice.multiply(new BigDecimal(adjustRatioList.get(count))) | |||
| .add(rentPrice).setScale(2, RoundingMode.HALF_EVEN); | |||
| .add(rentPrice).setScale(wxRentContract.getDecimalSize(), RoundingMode.HALF_EVEN); | |||
| result.put("priceRentUpper" + count, PriceUtil.digitUppercase(rentPrice.doubleValue())); | |||
| result.put("priceRent" + count, rentPrice.doubleValue()); | |||
| result.put("priceRent" + count, rentPrice.toPlainString()); | |||
| } | |||
| } | |||
| @@ -3266,44 +3271,43 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| WxBillRent br = billList.get(j); | |||
| try { | |||
| //判断账单是否跨月,如果跨月,需要按照每月来查询解单金额 | |||
| int needPay = 0 ; | |||
| BigDecimal needPay = new BigDecimal(0) ; | |||
| int months = DateUtils.monthsBetween(br.getStarttime(), br.getEndtime()); | |||
| if ( months > 0 ) { | |||
| for (int i = 0 ; i <= months ; i++ ) { | |||
| int _money = 0; | |||
| BigDecimal _money = new BigDecimal(0); | |||
| if (i == 0 ) { | |||
| _money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), br.getStarttime(), | |||
| _money = sumTradeDailyBySameMonthDay(wxRentContract.getDecimalSize(),bq, wxRentContract.getMerchantId(), br.getStarttime(), | |||
| DateUtils.getLastDayForMonth(br.getStarttime())); | |||
| }else if (i == months){ | |||
| _money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), | |||
| _money = sumTradeDailyBySameMonthDay(wxRentContract.getDecimalSize(),bq, wxRentContract.getMerchantId(), | |||
| DateUtils.getFirstDayForCurrMonth(DateUtils.getTimeAfterMonths(i,br.getStarttime())), | |||
| DateUtils.getDayEnd(DateUtils.getTimeAfterDays(-1, br.getEndtime()))); | |||
| }else { | |||
| Date _date = DateUtils.getTimeAfterMonths(i,br.getStarttime()); | |||
| _money = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), | |||
| _money = sumTradeDailyBySameMonthDay(wxRentContract.getDecimalSize(),bq, wxRentContract.getMerchantId(), | |||
| DateUtils.getFirstDayForCurrMonth(_date), | |||
| DateUtils.getLastDayForMonth(_date)); | |||
| } | |||
| needPay = needPay + _money; | |||
| needPay = needPay.add(_money); | |||
| } | |||
| }else { | |||
| //同一个月 | |||
| //合同账单结束的时间是00:00:00,取日期要取前一天 | |||
| needPay = sumTradeDailyBySameMonthDay(bq, wxRentContract.getMerchantId(), | |||
| needPay = sumTradeDailyBySameMonthDay(wxRentContract.getDecimalSize(),bq, wxRentContract.getMerchantId(), | |||
| br.getStarttime(), DateUtils.getDayEnd(br.getEndtime())); | |||
| } | |||
| needPay = new BigDecimal(needPay).multiply(new BigDecimal(wxRentContract.getPayRatio())) | |||
| .divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP).intValue(); | |||
| Long oldNeedPay = br.getNeedPay(); | |||
| if (needPay > br.getNeedPay()) { | |||
| Long newPay = Long.parseLong(String.valueOf(needPay)); | |||
| br.setNeedPay(newPay); | |||
| br.setOwe(newPay); | |||
| br.setReceivePay(newPay); | |||
| needPay = needPay.multiply(new BigDecimal(wxRentContract.getPayRatio())) | |||
| .divide(new BigDecimal(10000), wxRentContract.getDecimalSize(), BigDecimal.ROUND_HALF_UP); | |||
| String oldNeedPay = br.getNeedPay(); | |||
| if (needPay.compareTo(new BigDecimal(br.getNeedPay())) > 0) { | |||
| br.setNeedPay(needPay.toPlainString()); | |||
| br.setOwe(needPay.toPlainString()); | |||
| br.setReceivePay(needPay.toPlainString()); | |||
| br.setUpdatetime(new Date()); | |||
| BigDecimal servicePay = new BigDecimal(br.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 2, BigDecimal.ROUND_HALF_UP); | |||
| br.setServiceChargePay(servicePay.intValue()); | |||
| br.setOwe(br.getReceivePay() + br.getServiceChargePay()); | |||
| BigDecimal servicePay = new BigDecimal(br.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), wxRentContract.getDecimalSize(), BigDecimal.ROUND_HALF_UP); | |||
| br.setServiceChargePay(servicePay.toPlainString()); | |||
| br.setOwe(new BigDecimal(br.getReceivePay()).add(new BigDecimal(br.getServiceChargePay())).toPlainString()); | |||
| br.setComments("原金额["+oldNeedPay+"(分)]小于解单金额["+needPay+"(分)],系统自动更新"); | |||
| wxBillRentMapper.updateById(br); | |||
| } | |||
| @@ -3314,7 +3318,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| } | |||
| } | |||
| private int sumTradeDailyBySameMonthDay(TenantEntity tenantEntity,Long merchantId,Date begin ,Date end) { | |||
| private BigDecimal sumTradeDailyBySameMonthDay(Integer decimalSize,TenantEntity tenantEntity,Long merchantId,Date begin ,Date end) { | |||
| //如果有按月的,则取按月来算 | |||
| WxMerchantTradeDaily tdq = new WxMerchantTradeDaily(); | |||
| tdq.updateTenantInfo(tenantEntity); | |||
| @@ -3328,7 +3332,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| Date _lastDay = DateUtils.getLastDayForMonth(begin); | |||
| if (begin.equals(_fistDay) && end.equals(_lastDay)) { | |||
| //满月 | |||
| return monthSums; | |||
| return new BigDecimal(monthSums); | |||
| }else { | |||
| //根据天数计算 | |||
| int monthDays = DateUtils.daysBetween(_fistDay, _lastDay)+1; | |||
| @@ -3336,8 +3340,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| if (_days == 0) { | |||
| _days = 1;//当天 | |||
| } | |||
| BigDecimal servicePay = new BigDecimal(monthSums).multiply(new BigDecimal(_days)).divide(new BigDecimal(monthDays), 2, BigDecimal.ROUND_HALF_UP); | |||
| return servicePay.intValue(); | |||
| BigDecimal servicePay = new BigDecimal(monthSums).multiply(new BigDecimal(_days)).divide(new BigDecimal(monthDays), decimalSize, BigDecimal.ROUND_HALF_UP); | |||
| return servicePay; | |||
| } | |||
| }else { | |||
| WxMerchantTradeDaily tdq1 = new WxMerchantTradeDaily(); | |||
| @@ -3347,7 +3351,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||
| tdq1.setStartTime(DateUtils.format(begin)); | |||
| tdq1.setEndTime(DateUtils.format(end)); | |||
| String sumMoney = wxMerchantTradeDailyMapper.findSumMoney(tdq1); | |||
| return Integer.parseInt(sumMoney); | |||
| return new BigDecimal(sumMoney); | |||
| } | |||
| } | |||
| } | |||
| @@ -161,6 +161,8 @@ public class PriceUtilV2 { | |||
| BigDecimal a = new BigDecimal(10); | |||
| a = a.add(new BigDecimal(10)); | |||
| System.out.println(a); | |||
| BigDecimal b = a.divide(new BigDecimal(3), 3, BigDecimal.ROUND_HALF_UP); | |||
| System.out.println(b.toPlainString()); | |||
| } | |||
| @@ -18,7 +18,7 @@ | |||
| <result column="apply_pay_img" jdbcType="INTEGER" property="applyPayImg"/> | |||
| <result column="apply_update_time" jdbcType="INTEGER" property="applyUpdateTime"/> | |||
| <result column="is_del" jdbcType="INTEGER" property="isDel"/> | |||
| <result column="contract_need_pay" jdbcType="BIGINT" property="contractNeedPay"/> | |||
| <result column="contract_need_pay" jdbcType="VARCHAR" property="contractNeedPay"/> | |||
| <result column="rent_price_info" jdbcType="VARCHAR" property="rentPriceInfo"/> | |||
| <result column="need_pay" jdbcType="VARCHAR" property="needPay"/> | |||
| <result column="bussiness_manage_fee_need_pay" jdbcType="VARCHAR" property="bussinessManageFeeNeedPay"/> | |||