diff --git a/mallinkService/src/main/java/com/iformall/enums/EnumRentContractStatus.java b/mallinkService/src/main/java/com/iformall/enums/EnumRentContractStatus.java index 3ba4a1044..18005d0c5 100644 --- a/mallinkService/src/main/java/com/iformall/enums/EnumRentContractStatus.java +++ b/mallinkService/src/main/java/com/iformall/enums/EnumRentContractStatus.java @@ -1,8 +1,10 @@ package com.iformall.enums; + /** - * Created by Stormeye on 2018/08/09. + * @author gongbiao */ + public enum EnumRentContractStatus { WAIT_SIGN(1, "待签约"), diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java index beee20b93..96a305401 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxMerchantServiceImpl.java @@ -225,7 +225,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxRentContract.setStatus(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()); wxRentContractMapper.updateByPrimaryKeySelective(wxRentContract); //创建账单 - buildRent(wxRentContract); + buildRent(wxMerchant); //创建押金 buildDeposit(wxMerchant); } @@ -333,10 +333,10 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxAppinfo.setTenantId(wxMerchant.getTenantId()); wxAppinfo.setType(EnumAppType.B.getCode()); List list = wxAppinfoMapper.findList(wxAppinfo); - if(list.size()==0){ + if (list.size() == 0) { return new ResultData(ErrorCode.APP_ID_NOT_FOUND); } - wxAppinfo=list.get(0); + wxAppinfo = list.get(0); List bUsers = wxMerchant.getbUsers(); //删除之前的关联用户 @@ -457,7 +457,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxRentContract.setStatus(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()); wxRentContractMapper.updateByPrimaryKeySelective(wxRentContract); //创建账单 - buildRent(wxRentContract); + buildRent(wxMerchant); //创建押金 buildDeposit(wxMerchant); } @@ -576,7 +576,6 @@ public class WxMerchantServiceImpl implements WxMerchantService { List list = wxRentContractMapper.findList(wxRentContract); if (list.size() > 0) { wxRentContract = list.get(0); - Integer receivePeriod = wxRentContract.getReceivePeriod(); final IdWorker idWorker = IdWorker.get(); WxBillDeposit wxBillDeposit = new WxBillDeposit(); wxBillDeposit.setId(idWorker.nextId()); @@ -622,17 +621,21 @@ public class WxMerchantServiceImpl implements WxMerchantService { } @Transactional(rollbackFor = {Exception.class}) - public void buildRent(WxRentContract wxRentContract) { + public void buildRent(WxMerchant wxMerchant) { //获取用户 MallUserInfo user = (MallUserInfo) SecurityUtils.getSubject().getSession().getAttribute("userSession"); - + WxRentContract wxRentContract = new WxRentContract(); + wxRentContract.setMerchantId(wxMerchant.getId()); //根据商户ID找出合同 List list = wxRentContractMapper.findList(wxRentContract); if (list.size() > 0) { wxRentContract = list.get(0); - Integer receivePeriod = wxRentContract.getReceivePeriod(); - int paycount = 12 / receivePeriod.intValue(); + int receivePeriod = wxRentContract.getReceivePeriod().intValue(); + Integer lease = wxRentContract.getLease(); + int extralease = lease % receivePeriod; + int extracount = extralease > 0 ? 1 : 0; + int paycount = lease / receivePeriod + extracount; final IdWorker idWorker = IdWorker.get(); for (int i = 0; i < paycount; i++) { WxBillRent wxBillRent = new WxBillRent(); @@ -640,14 +643,20 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxBillRent.setRentContractId(wxRentContract.getId()); wxBillRent.setReceivePay(0); wxBillRent.setPay(0); - int needpay = wxRentContract.getPrice(); + int needpay = wxRentContract.getPrice() * receivePeriod; + if (extracount > 0) { + if (i == paycount - 1) { + needpay = wxRentContract.getPrice() * extralease; + } + } + wxBillRent.setNeedPay(needpay); wxBillRent.setOwe(needpay); Date date = new Date(); Calendar instance = Calendar.getInstance(); instance.setTime(wxRentContract.getRentalStartDate()); - instance.add(Calendar.MONTH, receivePeriod.intValue() * i); + instance.add(Calendar.MONTH, receivePeriod * i); instance.add(Calendar.DAY_OF_MONTH, -1); Date time = instance.getTime(); wxBillRent.setReceiveDate(time); @@ -659,7 +668,7 @@ public class WxMerchantServiceImpl implements WxMerchantService { wxBillRent.setReceiveDate(time); } else {//截止收租日在当前时间之后 Calendar now = Calendar.getInstance(); - now.add(Calendar.MONTH, receivePeriod.intValue()); + now.add(Calendar.MONTH, receivePeriod); Date currenttime = now.getTime(); //当前日期加上周期后小于截止收租日就是没有到期,否则当前待缴 if (currenttime.before(wxBillRent.getReceiveDate())) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java index 2e17775bb..b0c5d3dc4 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java @@ -114,6 +114,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService } return new ResultData(Result.SUCCESS, "保存物业合同信息成功", record); } else {//更新物业合同信息 + Calendar instance = Calendar.getInstance(); instance.setTime(record.getRentalStartDate()); instance.add(Calendar.MONTH, record.getLease()); @@ -122,12 +123,15 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService record.setPrice(record.getPrice() != null ? record.getPrice() * 100 : 0); record.setDeposit(record.getDeposit() != null ? record.getDeposit() * 100 : 0); record.setUpdatetime(new Date()); + if(record.getPrice()==0 || record.getDeposit()==0){ + record.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); + } try { wxPropertyContractMapper.updateByPrimaryKeySelective(record); //建立账单 if (record.getMerchantId() != null && record.getStatus().equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()) - && record.getReceivePeriod() != null) { + && record.getReceivePeriod() != null && record.getDeposit()>0 && record.getPrice()>0) { WxBillProperty wxBillProperty = new WxBillProperty(); wxBillProperty.setMerchantId(record.getMerchantId()); List> billPropertyList = wxBillPropertyMapper.queryBillPropertyList(wxBillProperty); @@ -215,8 +219,11 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService List list = wxPropertyContractMapper.findList(wxPropertyContract); if (list.size() > 0) { wxPropertyContract = list.get(0); - Integer receivePeriod = wxPropertyContract.getReceivePeriod(); - int paycount = 12 / receivePeriod.intValue(); + int receivePeriod = wxPropertyContract.getReceivePeriod().intValue(); + Integer lease = wxPropertyContract.getLease(); + int extralease =lease%receivePeriod; + int extracount=extralease>0?1:0; + int paycount = lease / receivePeriod+extracount; final IdWorker idWorker = IdWorker.get(); for (int i = 0; i < paycount; i++) { WxBillProperty wxBillRent = new WxBillProperty(); @@ -224,14 +231,19 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService wxBillRent.setPropertyContractId(wxPropertyContract.getId()); wxBillRent.setReceivePay(0); wxBillRent.setPay(0); - int needpay = wxPropertyContract.getPrice(); + int needpay = wxPropertyContract.getPrice()*receivePeriod; + if(extracount>0){ + if(i==paycount-1){ + needpay = wxPropertyContract.getPrice()*extralease; + } + } wxBillRent.setNeedPay(needpay); wxBillRent.setOwe(needpay); Date date = new Date(); Calendar instance = Calendar.getInstance(); instance.setTime(wxPropertyContract.getRentalStartDate()); - instance.add(Calendar.MONTH, receivePeriod.intValue() * i); + instance.add(Calendar.MONTH, receivePeriod * i); instance.add(Calendar.DAY_OF_MONTH, -1); Date time = instance.getTime(); wxBillRent.setReceiveDate(time); @@ -243,7 +255,7 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService wxBillRent.setReceiveDate(time); } else {//截止收租日在当前时间之后 Calendar now = Calendar.getInstance(); - now.add(Calendar.MONTH, receivePeriod.intValue()); + now.add(Calendar.MONTH, receivePeriod); Date currenttime = now.getTime(); //当前日期加上周期后小于截止收租日就是没有到期,否则当前待缴 if (currenttime.before(wxBillRent.getReceiveDate())) { diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java index 6e88ac771..9b4f80845 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -124,12 +124,14 @@ public class WxRentContractServiceImpl implements WxRentContractService { record.setPrice(record.getPrice() != null ? record.getPrice() * 100 : 0); record.setDeposit(record.getDeposit() != null ? record.getDeposit() * 100 : 0); record.setUpdatetime(new Date()); + if(record.getPrice()==0 || record.getDeposit()==0){ + record.setStatus(EnumRentContractStatus.WAIT_SIGN.getCode()); + } try { wxRentContractMapper.updateByPrimaryKeySelective(record); - //建立账单 if (record.getMerchantId() != null && record.getStatus().equals(EnumRentContractStatus.SIGNED_RENT_UNPAID.getCode()) - && record.getReceivePeriod() != null) { + && record.getReceivePeriod() != null && record.getDeposit()>0 && record.getPrice()>0) { WxBillRent wxBillRent = new WxBillRent(); wxBillRent.setMerchantId(record.getMerchantId()); List> billRentList = wxBillRentMapper.queryBillRentList(wxBillRent); @@ -218,8 +220,11 @@ public class WxRentContractServiceImpl implements WxRentContractService { List list = wxRentContractMapper.findList(wxRentContract); if (list.size() > 0) { wxRentContract = list.get(0); - Integer receivePeriod = wxRentContract.getReceivePeriod(); - int paycount = 12 / receivePeriod.intValue(); + int receivePeriod = wxRentContract.getReceivePeriod().intValue(); + Integer lease = wxRentContract.getLease(); + int extralease =lease%receivePeriod; + int extracount=extralease>0?1:0; + int paycount = lease / receivePeriod+extracount; final IdWorker idWorker = IdWorker.get(); for (int i = 0; i < paycount; i++) { WxBillRent wxBillRent = new WxBillRent(); @@ -227,14 +232,19 @@ public class WxRentContractServiceImpl implements WxRentContractService { wxBillRent.setRentContractId(wxRentContract.getId()); wxBillRent.setReceivePay(0); wxBillRent.setPay(0); - int needpay = wxRentContract.getPrice(); + int needpay = wxRentContract.getPrice()*receivePeriod; + if(extracount>0){ + if(i==paycount-1){ + needpay = wxRentContract.getPrice()*extralease; + } + } wxBillRent.setNeedPay(needpay); wxBillRent.setOwe(needpay); Date date = new Date(); Calendar instance = Calendar.getInstance(); instance.setTime(wxRentContract.getRentalStartDate()); - instance.add(Calendar.MONTH, receivePeriod.intValue() * i); + instance.add(Calendar.MONTH, receivePeriod* i); instance.add(Calendar.DAY_OF_MONTH, -1); Date time = instance.getTime(); wxBillRent.setReceiveDate(time); @@ -246,7 +256,7 @@ public class WxRentContractServiceImpl implements WxRentContractService { wxBillRent.setReceiveDate(time); } else {//截止收租日在当前时间之后 Calendar now = Calendar.getInstance(); - now.add(Calendar.MONTH, receivePeriod.intValue()); + now.add(Calendar.MONTH, receivePeriod); Date currenttime = now.getTime(); //当前日期加上周期后小于截止收租日就是没有到期,否则当前待缴 if (currenttime.before(wxBillRent.getReceiveDate())) {