@@ -136,12 +136,12 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
//查询rent_info 包括shopId
for (int i = 0; i < size; i++) {
JSONObject rentInfoObject = rentInfoArray.getJSONObject(i);
Double rentPrice = rentInfoObject.getDouble ("rentPrice");
Long price = wxPropertyContract.getPrice()/100 ;
String rentPrice = rentInfoObject.getString ("rentPrice");
String price = wxPropertyContract.getPrice() ;
if(rentPrice == null){
if(StringUtils.isNotBlank(wxPropertyContract.getRentArea()) && !"0".equals(wxPropertyContract.getRentArea()) && !"0.00".equals(wxPropertyContract.getRentArea())&& !"0.0".equals(wxPropertyContract.getRentArea()) ) {
Double rentArea = Double.parseDouble(wxPropertyContract.getRentArea());
rentPrice = new BigDecimal((double) price / rentArea).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue ();
rentPrice = new BigDecimal(price).divide(new BigDecimal(rentArea),wxPropertyContract.getDecimalSize(), BigDecimal.ROUND_HALF_UP).toPlainString ();
rentInfoObject.put("rentPrice", rentPrice);
}
}
@@ -150,12 +150,11 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
}else{
if(StringUtils.isNotBlank(wxPropertyContract.getRentArea()) && !"0".equals(wxPropertyContract.getRentArea()) && !"0.00".equals(wxPropertyContract.getRentArea())&& !"0.0".equals(wxPropertyContract.getRentArea()) ) {
if(StringUtils.isNotBlank(wxPropertyContract.getRentArea()) && !"0".equals(wxPropertyContract.getRentArea()) && !"0.00".equals(wxPropertyContract.getRentArea())) {
Lo ng price = wxPropertyContract.getPrice();
Stri ng price = wxPropertyContract.getPrice();
Double rentArea = Double.parseDouble(wxPropertyContract.getRentArea()) * 100;
Double rentPrice = new BigDecimal((double) price / rentArea).setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
rentPrice = rentPrice * 100;
if (rentPrice > 0) {
wxPropertyContract.setRentPrice(rentPrice.toString());
BigDecimal rentPrice = new BigDecimal(price).divide(new BigDecimal(rentArea),wxPropertyContract.getDecimalSize(), BigDecimal.ROUND_HALF_UP);
if (rentPrice.compareTo(new BigDecimal(0)) > 0) {
wxPropertyContract.setRentPrice(rentPrice.toPlainString());
} else {
wxPropertyContract.setRentPrice("0");
}
@@ -170,8 +169,8 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
wxPropertyContract.setPriceUnit(EnumPriceUnit.D.getCode());
}
wxPropertyContract.setPrice(wxPropertyContract.getPrice() != null ? wxPropertyContract.getPrice() : 0 );
wxPropertyContract.setDeposit(wxPropertyContract.getDeposit() != null ? wxPropertyContract.getDeposit() : 0 );
wxPropertyContract.setPrice(StringUtils.isNotBlank(wxPropertyContract.getPrice()) ? wxPropertyContract.getPrice() : "0" );
wxPropertyContract.setDeposit(StringUtils.isNotBlank(wxPropertyContract.getDeposit()) ? wxPropertyContract.getDeposit() : "0" );
result.put("wxPropertyContract", wxPropertyContract);
//关联的商户
@@ -263,9 +262,9 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
bill.setPeriod(count);
bill.setIsPreview(EnumIsPreview.YES.getCode());
bill.setShopInfo(getShopInfoStr(record));
bill.setRevenue(0L );
bill.setRevenue("0" );
bill.setLatePayRatio(0);
bill.setPay(0L );
bill.setPay("0" );
bill.setIsDel(EnumDelStatus.NOT_DEL.getCode());
//bill.setShopId(record.getShopId());
bill.setExpiredDay(0L);
@@ -274,9 +273,9 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
bill.setStatus(EnumBillRentStatus.PAID.getCode());
bill.setPayDate(date);
}
BigDecimal servicePay = new BigDecimal(bill.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 2 , BigDecimal.ROUND_HALF_UP);
bill.setServiceChargePay(servicePay.intValue ());
bill.setOwe(bill.getReceivePay() + bill.getServiceChargePay ());
BigDecimal servicePay = new BigDecimal(bill.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(100), record.getDecimalSize() , BigDecimal.ROUND_HALF_UP);
bill.setServiceChargePay(servicePay.toPlainString ());
bill.setOwe(new BigDecimal(bill.getReceivePay()).add(new BigDecimal(bill.getServiceChargePay())).toPlainString ());
count++;
}
wxBillPropertyMapper.insertBills(record.getPreviewBillRentList());
@@ -416,8 +415,8 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
record.setRentalEndDate(wxRentContract.getRentalEndDate());
record.setStartDate(wxRentContract.getStartDate());
record.setEndDate(wxRentContract.getEndDate());
record.setPrice(record.getPrice() != null ? record.getPrice() : 0 );
record.setDeposit(record.getDeposit() != null ? record.getDeposit() : 0 );
record.setPrice(StringUtils.isNotBlank(record.getPrice()) ? record.getPrice() : "0" );
record.setDeposit(StringUtils.isNotBlank(record.getDeposit()) ? record.getDeposit() : "0" );
record.setUpdatetime(new Date());
//如果是合并合同 物业合同的状态为 意向
@@ -464,9 +463,8 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
}
wxPropertyContractMapper.updateById(wxPropertyContract);
//建立账单
if (record.getMerchantId() != null
&& record.getReceivePeriod() != null &&
record.getPrice() > 0) {
if (record.getMerchantId() != null && record.getReceivePeriod() != null
&& new BigDecimal(record.getPrice()).compareTo(new BigDecimal(0)) > 0) {
//预览账单改为正式,并写入商户id
updatePropertyPreviewBill(record);
}
@@ -480,7 +478,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
billProperty.setIsPreview(EnumIsPreview.NO.getCode());
billProperty.setMerchantId(record.getMerchantId());
wxBillPropertyMapper.updatePreviewStatus(billProperty);
if(record.getDeposit() > 0) {
if(new BigDecimal( record.getDeposit()).compareTo(new BigDecimal(0) ) > 0) {
buildDeposit(record);
}
}
@@ -489,15 +487,15 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
public void buildDeposit(WxPropertyContract record) {
Long propertyContractId = record.getId();
WxPropertyContract wxPropertyContract = wxPropertyContractMapper.selectById(propertyContractId);
if (wxPropertyContract != null && wxPropertyContract.getDeposit() > 0) {
if (wxPropertyContract != null && new BigDecimal( wxPropertyContract.getDeposit()).compareTo(new BigDecimal(0) ) > 0) {
//找到计租方式
int dayType = wxPropertyContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode()) ? Calendar.DAY_OF_MONTH : Calendar.MONTH;
final IdWorker idWorker = IdWorker.get();
WxBillPropertyDeposit wxBillDeposit = new WxBillPropertyDeposit();
wxBillDeposit.setId(idWorker.nextId());
wxBillDeposit.setPropertyContractId(wxPropertyContract.getId());
wxBillDeposit.setPay(0L );
Lo ng needpay = wxPropertyContract.getDeposit();
wxBillDeposit.setPay("0" );
Stri ng needpay = wxPropertyContract.getDeposit();
wxBillDeposit.setNeedPay(needpay);
wxBillDeposit.setReceivePay(needpay);
wxBillDeposit.setOwe(needpay);
@@ -550,7 +548,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
return JSONObject.toJSONString(shopInfo);
}
public List<WxBillProperty> buildRentMonth(WxMerchant wxMerchant, Long userId, WxPropertyContract wxPropertyContract, int receivePeriod, Integer lease, Date rentalStartDate, Lo ng price, Integer isPreview,boolean saveDb) {
public List<WxBillProperty> buildRentMonth(WxMerchant wxMerchant, Long userId, WxPropertyContract wxPropertyContract, int receivePeriod, Integer lease, Date rentalStartDate, Stri ng price, Integer isPreview,boolean saveDb) {
String adjustRatio = wxPropertyContract.getAdjustRatio();
String rentInfo = wxPropertyContract.getRentInfo();
Map<String, Object> shopInfo = new HashMap<>();
@@ -565,24 +563,24 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
List<Integer> integers = JSONArray.parseArray(adjustRatio, Integer.class);
integers.add(0, 0);
int size = integers.size();
long[] priceArr = new lo ng[size];
String[] priceArr = new Stri ng[size];
priceArr[0] = price;
//判断年租金调整方式
if (wxPropertyContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.RATIO.getCode())) {
double priceD = price ;
BigDecimal priceD = new BigDecimal(price) ;
for (int i = 1; i < size; i++) {
priceD = priceD + priceD * integers.get(i) / 10000.0 ;
priceArr[i] = new BigDecimal(priceD).setScale(0, RoundingMode.HALF_EVEN).longValue ();
priceD = priceD.add(priceD.multiply(new BigDecimal(integers.get(i))).divide(new BigDecimal(100))) ;
priceArr[i] = priceD.setScale(wxPropertyContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString ();
}
} else if (wxPropertyContract.getAdjustRatioWay().equals(EnumRentContractAdjustRatioWay.MONEY.getCode())) {
long priceD = price ;
BigDecimal priceD = new BigDecimal(price) ;
for (int i = 1; i < size; i++) {
priceD = priceD + integers.get(i );
priceArr[i] = new BigDecimal(priceD).setScale(0, RoundingMode.HALF_EVEN).longValue ();
priceD = priceD.add(new BigDecimal(integers.get(i)) );
priceArr[i] = priceD.setScale(wxPropertyContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString ();
}
} else {
for (int i = 1; i < size; i++) {
priceArr[i] = new BigDecimal(integers.get(i)).setScale(0, RoundingMode.HALF_EVEN).longValue ();
priceArr[i] = new BigDecimal(integers.get(i)).setScale(wxPropertyContract.getDecimalSize(), RoundingMode.HALF_EVEN).toPlainString ();
}
}
@@ -626,7 +624,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
return resultList;
}
public Map<String, Object> buildRent(int receivePeriod,lo ng[] priceArrs, List<Date> yearList,int dayType, WxPropertyContract wxPropertyContract, Long userId, WxMerchant wxMerchant, int billcount, Integer isPreview,Map<String, Object> shopInfo,boolean saveDb) {
public Map<String, Object> buildRent(int receivePeriod,Stri ng[] priceArrs, List<Date> yearList,int dayType, WxPropertyContract wxPropertyContract, Long userId, WxMerchant wxMerchant, int billcount, Integer isPreview,Map<String, Object> shopInfo,boolean saveDb) {
WxPayAccountBill wxPayAccountBill = wxPayAccountBillService.getByTenantInfo(wxPropertyContract);
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
Map<String,Object> resultMap = new HashedMap();
@@ -656,7 +654,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
for (int i = 0; i < billTimeVoList.size(); i++) {
BillTimeVo billTimeVo = billTimeVoList.get(i);
//计算金额
long needpay = 0 ;
String needpay = "0" ;
boolean flag = false;
if(yearList.size() > 1) {
@@ -669,8 +667,8 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
//如果是计算账单金额&cross 拆分日期进行计算
if(!saveDb && billTimeVo.getEndDate().after(endDate)) {
long needpayFront = 0 ;
long needpayAfter = 0 ;
String needpayFront = "0" ;
String needpayAfter = "0" ;
//同一天,算一天
if(sd.format(billTimeVo.getStartDate()).equals(sd.format(billTimeVo.getEndDate()))){
needpayFront = getNeedPayMoney(wxPropertyContract,priceArrs[index-1],billTimeVo.getStartDate(),endDate,i,billTimeVoList.size(),saveDb,dayType,receivePeriod);
@@ -705,7 +703,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
wxBillProperty.setIsPreview(isPreview);
wxBillProperty.setId(idWorker.nextId());
wxBillProperty.setPropertyContractId(wxPropertyContract.getId());
wxBillProperty.setPay(0L );
wxBillProperty.setPay("0" );
wxBillProperty.setStarttime(billTimeVo.getStartDate());
wxBillProperty.setEndtime(billTimeVo.getEndDate());
wxBillProperty.setReceiveDate(billTimeVo.getReceiveDate());
@@ -733,9 +731,9 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
wxBillProperty.setLatePayRatio(0);
//计算手续费
BigDecimal servicePay = new BigDecimal(wxBillProperty.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(10000), 2 , BigDecimal.ROUND_HALF_UP);
wxBillProperty.setServiceChargePay(servicePay.intValue ());
wxBillProperty.setOwe(wxBillProperty.getReceivePay() + wxBillProperty.getServiceChargePay ());
BigDecimal servicePay = new BigDecimal(wxBillProperty.getReceivePay()).multiply(new BigDecimal(wxPayAccountBill.getServiceChargeRate())).divide(new BigDecimal(100), wxPropertyContract.getDecimalSize() , BigDecimal.ROUND_HALF_UP);
wxBillProperty.setServiceChargePay(servicePay.toPlainString ());
wxBillProperty.setOwe(new BigDecimal(wxBillProperty.getReceivePay()).add(new BigDecimal(wxBillProperty.getServiceChargePay())).toPlainString ());
resultList.add(wxBillProperty);
}
@@ -748,13 +746,13 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
return resultMap;
}
public long getNeedPayMoney(WxPropertyContract wxRentContract,lo ng price,Date startDate,Date endDate,int i,int billTimeVoListSize,boolean saveDb,int dayType,int receivePeriod){
lo ng needpay;
public String getNeedPayMoney(WxPropertyContract wxRentContract,Stri ng price,Date startDate,Date endDate,int i,int billTimeVoListSize,boolean saveDb,int dayType,int receivePeriod){
Stri ng needpay;
//按日
if (wxRentContract.getPriceUnit().equals(EnumPriceUnit.D.getCode())){
BigDecimal priceD = new BigDecimal(price);
String needpayD = WxRentContractHelper.getNeedPay(wxRentContract.getDecimalSize(),new BigDecimal(0),priceD,startDate,endDate);
needpay = new Double(ne edpayD).longValue() ;
needpay = needpayD;
}else{
//年 需要除12
BigDecimal priceD = new BigDecimal(price);
@@ -764,7 +762,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
//生成金额直接计算
if(!saveDb){
needpay = new Double( WxRentContractHelper.getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,false)).longValue( );
needpay = WxRentContractHelper.getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,false);
return needpay;
}
@@ -777,18 +775,18 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
if(sdMR.format(startDate).equals(sdMR.format(wxRentContract.getStartDate())) && sdMR.format(endDate).equals(sdMR.format(wxRentContract.getEndDate())) ){
int months = WxRentContractHelper.getMonths(sdM.format(startDate)+"-01",sdM.format(endDate)+"-01");
months++;
needpay = new BigDecimal(months).multiply(priceD).longValue ();
needpay = new BigDecimal(months).multiply(priceD).toPlainString ();
}else {
needpay = new Double( WxRentContractHelper.getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,false)).longValue( );
needpay = WxRentContractHelper.getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,false);
}
}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 BigDecimal(months).multiply(priceD).longValue ();
needpay = new BigDecimal(months).multiply(priceD).toPlainString ();
}else{
needpay = new Double( WxRentContractHelper.getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,false)).longValue( );
needpay = WxRentContractHelper.getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,false);
}
}else{
if(isFirstDay(startDate)){
@@ -796,9 +794,9 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
if(isFirstDay(startDate)){
months++;
}
needpay = new BigDecimal(months).multiply(priceD).longValue ();
needpay = new BigDecimal(months).multiply(priceD).toPlainString ();
}else{
needpay = new Double( WxRentContractHelper.getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,false)).longValue( );
needpay = WxRentContractHelper.getMonthNeedPay(wxRentContract.getDecimalSize(),priceD, startDate, endDate,dayType,receivePeriod,false);
}
}
}else{//中间
@@ -806,7 +804,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
if(isFirstDay(startDate)){
months++;
}
needpay = new BigDecimal(months).multiply(priceD).longValue ();
needpay = new BigDecimal(months).multiply(priceD).toPlainString ();
}
}
return needpay;
@@ -874,7 +872,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
rentalStartDate = wxPropertyContract.getStartDate();
}
propertyContract.setRentalStartDate(rentalStartDate);
Lo ng price = propertyContract.getPrice();
Stri ng price = propertyContract.getPrice();
//按月计租
result = buildRentMonth(wxMerchant, userId, propertyContract, receivePeriod, lease, rentalStartDate, price,isPreview,saveDb);