diff --git a/mallinkAdmin/src/main/resources/db/migration/V201907301607__L_ALTER_BILL.sql b/mallinkAdmin/src/main/resources/db/migration/V201907301607__L_ALTER_BILL.sql new file mode 100644 index 000000000..a4af96deb --- /dev/null +++ b/mallinkAdmin/src/main/resources/db/migration/V201907301607__L_ALTER_BILL.sql @@ -0,0 +1,2 @@ +alter table wx_bill_action modify `createtime` DATETIME NULL DEFAULT CURRENT_TIMESTAMP; +alter table wx_bill_action modify `updatetime` DATETIME NULL DEFAULT CURRENT_TIMESTAMP; diff --git a/mallinkSchedule/src/main/java/com/iformall/schedule/LatePayBillActionSchedule.java b/mallinkSchedule/src/main/java/com/iformall/schedule/LatePayBillActionSchedule.java index 10f5eb281..584561448 100644 --- a/mallinkSchedule/src/main/java/com/iformall/schedule/LatePayBillActionSchedule.java +++ b/mallinkSchedule/src/main/java/com/iformall/schedule/LatePayBillActionSchedule.java @@ -42,13 +42,11 @@ public class LatePayBillActionSchedule { for (WxBillRent wxBillRent : billRentList) { WxBillAction billAction = new WxBillAction(); billAction.setId(idWorker.nextId()); - billAction.setCreatetime(new Date()); billAction.setUserName("系统端"); billAction.setAction(EnumBillAction.UPDATE_LATE_PAY_MONEY.getCode()); billAction.setBillId(wxBillRent.getId()); BigDecimal divide = new BigDecimal(wxBillRent.getOwe()).multiply(new BigDecimal(wxBillRent.getLatePayRatio())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); billAction.setDetails("系统计入"+ divide.toString()+"元"); - billAction.setUpdatetime(new Date()); wxBillActionMapper.insertSelective(billAction); } @@ -56,13 +54,11 @@ public class LatePayBillActionSchedule { for (WxBillProperty wxBillRent : billPropertyList) { WxBillAction billAction = new WxBillAction(); billAction.setId(idWorker.nextId()); - billAction.setCreatetime(new Date()); billAction.setUserName("系统端"); billAction.setAction(EnumBillAction.UPDATE_LATE_PAY_MONEY.getCode()); billAction.setBillId(wxBillRent.getId()); BigDecimal divide = new BigDecimal(wxBillRent.getOwe()).multiply(new BigDecimal(wxBillRent.getLatePayRatio())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); billAction.setDetails("系统计入"+ divide.toString()+"元"); - billAction.setUpdatetime(new Date()); wxBillActionMapper.insertSelective(billAction); } logger.info("账单滞纳金更新结束"); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyServiceImpl.java index 77bbf3793..fe89ff46f 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillPropertyServiceImpl.java @@ -58,15 +58,17 @@ public class WxBillPropertyServiceImpl implements WxBillPropertyService { List billRentList = wxBillPropertyMapper.queryBillPropertyList(record); PageInfo pageInfo = new PageInfo<>(billRentList); billRentList.stream().forEach(b -> { - if(EnumBillRentStatus.WAIT_PAY.getCode().equals(b.getLatePayStatus()) && b.getLatePayRatio() != null){ - int latePayDay = 1; //默认第二天开始叫滞纳金 + if(b.getLatePayRatio() != null && b.getLatePayRatio() > 0){ + int latePayDay = 1; //默认第次日开始交滞纳金 if(b.getLatePayDay() != null){ latePayDay = b.getLatePayDay(); } Date startPay = DateUtils.getDaySet(b.getReceiveDate(),Calendar.DATE,latePayDay); - long dayCount = DateUtils.startToEnd(new Date(),startPay); - Double d = new Double(dayCount * b.getLatePayRatio()/10000 * b.getOwe()); - b.setLatePayPrice(d.longValue()); + long dayCount = DateUtils.startToEnd(startPay,new Date()); + if(dayCount >0) { + BigDecimal divide = new BigDecimal(b.getOwe()).multiply(new BigDecimal(b.getLatePayRatio())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); + b.setLatePayPrice(divide.longValue()); + } } }); return pageInfo; @@ -116,7 +118,21 @@ public class WxBillPropertyServiceImpl implements WxBillPropertyService { public WxBillProperty getById(Long id) { WxBillProperty record = new WxBillProperty(); record.setId(id); - return wxBillPropertyMapper.queryBillPropertyList(record).get(0); + WxBillProperty b = wxBillPropertyMapper.queryBillPropertyList(record).get(0); + + if(b.getLatePayRatio() != null && b.getLatePayRatio() > 0){ + int latePayDay = 1; //默认第次日开始交滞纳金 + if(b.getLatePayDay() != null){ + latePayDay = b.getLatePayDay(); + } + Date startPay = DateUtils.getDaySet(b.getReceiveDate(),Calendar.DATE,latePayDay); + long dayCount = DateUtils.startToEnd(startPay,new Date()); + if(dayCount >0) { + BigDecimal divide = new BigDecimal(b.getOwe()).multiply(new BigDecimal(b.getLatePayRatio())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); + b.setLatePayPrice(divide.longValue()); + } + } + return b; } @Override @@ -212,6 +228,20 @@ public class WxBillPropertyServiceImpl implements WxBillPropertyService { updateBillStatus(record); PageHelper.startPage(pageIndex, pageSize); List billRentList = wxBillPropertyMapper.queryBillPropertyList(record); + billRentList.stream().forEach(b -> { + if(b.getLatePayRatio() != null && b.getLatePayRatio() > 0){ + int latePayDay = 1; //默认第次日开始交滞纳金 + if(b.getLatePayDay() != null){ + latePayDay = b.getLatePayDay(); + } + Date startPay = DateUtils.getDaySet(b.getReceiveDate(),Calendar.DATE,latePayDay); + long dayCount = DateUtils.startToEnd(startPay,new Date()); + if(dayCount >0) { + BigDecimal divide = new BigDecimal(b.getOwe()).multiply(new BigDecimal(b.getLatePayRatio())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); + b.setLatePayPrice(divide.longValue()); + } + } + }); PageInfo pageInfo = new PageInfo<>(billRentList); return pageInfo; } @@ -271,7 +301,24 @@ public class WxBillPropertyServiceImpl implements WxBillPropertyService { @Override public void exportBill(HttpServletRequest request, HttpServletResponse response, WxBillProperty wxBillProperty) { String billName = wxBillProperty.getRentShopType().equals(EnumRentShopType.SHOP.getCode()) ? "商铺物业账单" : "多经点位物业账单"; - Map> collect = wxBillPropertyMapper.queryBillPropertyList(wxBillProperty).parallelStream() + + List billPropertyList = wxBillPropertyMapper.queryBillPropertyList(wxBillProperty); + billPropertyList.stream().forEach(b -> { + if(b.getLatePayRatio() != null && b.getLatePayRatio() > 0){ + int latePayDay = 1; //默认第次日开始交滞纳金 + if(b.getLatePayDay() != null){ + latePayDay = b.getLatePayDay(); + } + Date startPay = DateUtils.getDaySet(b.getReceiveDate(),Calendar.DATE,latePayDay); + long dayCount = DateUtils.startToEnd(startPay,new Date()); + if(dayCount >0) { + BigDecimal divide = new BigDecimal(b.getOwe()).multiply(new BigDecimal(b.getLatePayRatio())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); + b.setLatePayPrice(divide.longValue()); + } + } + }); + + Map> collect = billPropertyList.parallelStream() .collect(Collectors.groupingBy(WxBillProperty::getMerchantId)); Set>> entries = collect.entrySet(); List datalist = new ArrayList<>(); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java index c1040fa4c..8010b2594 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxBillRentServiceImpl.java @@ -57,15 +57,17 @@ public class WxBillRentServiceImpl implements WxBillRentService { PageHelper.startPage(pageIndex, pageSize); List billRentList = wxBillRentMapper.queryBillRentList(record); billRentList.stream().forEach(b -> { - if(EnumBillRentStatus.WAIT_PAY.getCode().equals(b.getLatePayStatus()) && b.getLatePayRatio() != null){ - int latePayDay = 1; //默认第二天开始叫滞纳金 + if(b.getLatePayRatio() != null && b.getLatePayRatio() > 0){ + int latePayDay = 1; //默认第次日开始交滞纳金 if(b.getLatePayDay() != null){ latePayDay = b.getLatePayDay(); } Date startPay = DateUtils.getDaySet(b.getReceiveDate(),Calendar.DATE,latePayDay); - long dayCount = DateUtils.startToEnd(new Date(),startPay); - Double d = new Double(dayCount * b.getLatePayRatio()/10000 * b.getOwe()); - b.setLatePayPrice(d.longValue()); + long dayCount = DateUtils.startToEnd(startPay,new Date()); + if(dayCount >0) { + BigDecimal divide = new BigDecimal(b.getOwe()).multiply(new BigDecimal(b.getLatePayRatio())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); + b.setLatePayPrice(divide.longValue()); + } } }); PageInfo pageInfo = new PageInfo<>(billRentList); @@ -116,7 +118,21 @@ public class WxBillRentServiceImpl implements WxBillRentService { public WxBillRent getById(Long id) { WxBillRent record = new WxBillRent(); record.setId(id); - return wxBillRentMapper.queryBillRentList(record).get(0); + WxBillRent b = wxBillRentMapper.queryBillRentList(record).get(0); + + if(b.getLatePayRatio() != null && b.getLatePayRatio() > 0){ + int latePayDay = 1; //默认第次日开始交滞纳金 + if(b.getLatePayDay() != null){ + latePayDay = b.getLatePayDay(); + } + Date startPay = DateUtils.getDaySet(b.getReceiveDate(),Calendar.DATE,latePayDay); + long dayCount = DateUtils.startToEnd(startPay,new Date()); + if(dayCount >0) { + BigDecimal divide = new BigDecimal(b.getOwe()).multiply(new BigDecimal(b.getLatePayRatio())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); + b.setLatePayPrice(divide.longValue()); + } + } + return b; } @Override @@ -211,6 +227,20 @@ public class WxBillRentServiceImpl implements WxBillRentService { updateBillStatus(record); PageHelper.startPage(pageIndex, pageSize); List billRentList = wxBillRentMapper.queryBillRentList(record); + billRentList.stream().forEach(b -> { + if(b.getLatePayRatio() != null && b.getLatePayRatio() > 0){ + int latePayDay = 1; //默认第次日开始交滞纳金 + if(b.getLatePayDay() != null){ + latePayDay = b.getLatePayDay(); + } + Date startPay = DateUtils.getDaySet(b.getReceiveDate(),Calendar.DATE,latePayDay); + long dayCount = DateUtils.startToEnd(startPay,new Date()); + if(dayCount >0) { + BigDecimal divide = new BigDecimal(b.getOwe()).multiply(new BigDecimal(b.getLatePayRatio())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); + b.setLatePayPrice(divide.longValue()); + } + } + }); PageInfo pageInfo = new PageInfo<>(billRentList); return pageInfo; } @@ -307,7 +337,23 @@ public class WxBillRentServiceImpl implements WxBillRentService { @Override public void exportBill(HttpServletRequest request, HttpServletResponse response, WxBillRent wxBillRent) { String billName = wxBillRent.getRentShopType().equals(EnumRentShopType.SHOP.getCode()) ? "商铺租金账单" : "多经点位租金账单"; - Map> collect = wxBillRentMapper.queryBillRentList(wxBillRent).parallelStream() + List billRentList = wxBillRentMapper.queryBillRentList(wxBillRent); + billRentList.stream().forEach(b -> { + if(b.getLatePayRatio() != null && b.getLatePayRatio() > 0){ + int latePayDay = 1; //默认第次日开始交滞纳金 + if(b.getLatePayDay() != null){ + latePayDay = b.getLatePayDay(); + } + Date startPay = DateUtils.getDaySet(b.getReceiveDate(),Calendar.DATE,latePayDay); + long dayCount = DateUtils.startToEnd(startPay,new Date()); + if(dayCount >0) { + BigDecimal divide = new BigDecimal(b.getOwe()).multiply(new BigDecimal(b.getLatePayRatio())).divide(new BigDecimal(100), 2, BigDecimal.ROUND_HALF_UP); + b.setLatePayPrice(divide.longValue()); + } + } + }); + + Map> collect = billRentList.parallelStream() .collect(Collectors.groupingBy(WxBillRent::getMerchantId)); Set>> entries = collect.entrySet(); List datalist = new ArrayList<>(); diff --git a/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml b/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml index d433f9668..68a882bd3 100644 --- a/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml +++ b/mallinkService/src/main/resources/mapper/WxBillRentMapper.xml @@ -97,8 +97,7 @@ case when br.status=1 then br.owe else 0 end owe,br.`status`,br.`need_pay`,r.merchant_name, s.shop_number,br.`updatetime`,br.`merchant_id`,br.`rent_shop_type`,r.type as rent_type, r.pay_ratio,br.`revenue`,br.`late_pay_ratio`,br.`late_pay_time`,br.`period`,br.`rent_contract_id`, - d.receive_pay deposit,d.`status`,br.late_pay_price - deposit_status,br.shop_info,br.pay_way,br.late_pay_status,br.`comments`,br.starttime,br.endtime, + d.receive_pay deposit,d.`status`,br.late_pay_price,br.shop_info,br.pay_way,br.late_pay_status,br.`comments`,br.starttime,br.endtime, r.late_pay_day,r.late_pay_ratio from wx_bill_rent br left join wx_shop s on br.shop_id=s.id