Просмотр исходного кода

[账期调整][修改][修改生成逻辑]

release_toaliyun_real
luozukai 7 лет назад
Родитель
Сommit
5c5bdecec5
4 измененных файлов: 149 добавлений и 62 удалений
  1. +63
    -34
      mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java
  2. +54
    -25
      mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java
  3. +9
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxTopicServiceImpl.java
  4. +23
    -0
      mallinkService/src/main/java/com/iformall/utils/DateUtils.java

+ 63
- 34
mallinkService/src/main/java/com/iformall/service/impl/WxPropertyContractServiceImpl.java Просмотреть файл

@@ -292,11 +292,11 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
//生成预览账单
if(CollectionUtils.isEmpty(billList) ||
(!wxPropertyContract.getReceivePeriod().equals(record.getReceivePeriod())
||!wxPropertyContract.getPrice().equals(record.getPrice())
||!wxPropertyContract.getDeposit().equals(record.getDeposit())
||!wxPropertyContract.getAdjustPeriod().equals(record.getAdjustPeriod())
|| !DateUtils.date2String(wxPropertyContract.getRentalStartDate(),"yyyy-MM-dd").equals(DateUtils.date2String(record.getRentalStartDate(),"yyyy-MM-dd"))
)){
||!wxPropertyContract.getPrice().equals(record.getPrice())
||!wxPropertyContract.getDeposit().equals(record.getDeposit())
||!wxPropertyContract.getAdjustPeriod().equals(record.getAdjustPeriod())
|| !DateUtils.date2String(wxPropertyContract.getRentalStartDate(),"yyyy-MM-dd").equals(DateUtils.date2String(record.getRentalStartDate(),"yyyy-MM-dd"))
)){
wxBillPropertyMapper.deletePreviewBill(record);
//重新生成
wxPropertyContract.setPrice(record.getPrice());
@@ -342,20 +342,20 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
//wxBillProperty.setMerchantId(record.getMerchantId());
//List<Map<String, Object>> billPropertyList = wxBillPropertyMapper.queryBillPropertyList(wxBillProperty);
//if (billPropertyList.size() == 0) {
//预览账单改为正式,并写入商户id
WxBillProperty billProperty = new WxBillProperty();
billProperty.setPropertyContractId(id);
billProperty.setIsPreview(EnumIsPreview.NO.getCode());
billProperty.setMerchantId(record.getMerchantId());
wxBillPropertyMapper.updatePreviewStatus(billProperty);
WxMerchant wxMerchant = new WxMerchant();
wxMerchant.setId(record.getMerchantId());
wxMerchant.setTenantId(record.getTenantId());
//物业账单
//buildProperty(wxMerchant,null);
//物业押金账单
buildDeposit(wxMerchant,id);
//预览账单改为正式,并写入商户id
WxBillProperty billProperty = new WxBillProperty();
billProperty.setPropertyContractId(id);
billProperty.setIsPreview(EnumIsPreview.NO.getCode());
billProperty.setMerchantId(record.getMerchantId());
wxBillPropertyMapper.updatePreviewStatus(billProperty);
WxMerchant wxMerchant = new WxMerchant();
wxMerchant.setId(record.getMerchantId());
wxMerchant.setTenantId(record.getTenantId());
//物业账单
//buildProperty(wxMerchant,null);
//物业押金账单
buildDeposit(wxMerchant,id);
//}
}
return new ResultData(Result.SUCCESS, "操作成功");
@@ -587,7 +587,9 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
if(receivePeriod > 1) {
needPayDouble += price * extralease;
}
needPayDouble += oneDayProce * endDateInt;
if(!isFirstDay(wxPropertyContract.getRentalStartDate())) { //残月才加
needPayDouble += oneDayProce * endDateInt;
}
}else{
//[A/31 *(31-12+1)]+A+A
needPayDouble = oneDayProce * (DateUtils.getMonthDayCount(wxBillProperty.getStarttime())-startDateInt+1);
@@ -615,32 +617,58 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
Date firstDay = DateUtils.getFirstDayForCurrMonth(wxBillProperty.getStarttime());
instance.clear();
instance.setTime(firstDay);

//最后一期有余,加上残月,(不整除时,最后一个月有余,否则为0)
if(receivePeriod > 1) {
if(isLastYesr) {
instance.add(dayType, extralease);
}else{
if(isFirstDay(wxPropertyContract.getRentalStartDate())){
if(receivePeriod > 1) {
if(isLastYesr && extralease > 0) {
instance.add(dayType, extralease);
}else{
instance.add(dayType, receivePeriod);
}
}else {
instance.add(dayType, receivePeriod);
}
}else{
if(receivePeriod > 1) {
if(isLastYesr) {
instance.add(dayType, extralease);
}else{
instance.add(dayType, receivePeriod);
}
}
if(isLastYesr) {
instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1);
}
}
if(isLastYesr) {
instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1);
}

instance.add(Calendar.DAY_OF_MONTH, -1);
wxBillProperty.setEndtime(instance.getTime());

//逻辑同计算endtime
double needPayDouble = 0;
double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxBillProperty.getEndtime());
if(receivePeriod > 1) {
if(isLastYesr) {
needPayDouble += price * extralease;
}else{
if(isFirstDay(wxPropertyContract.getRentalStartDate())){
if(receivePeriod > 1) {
if(isLastYesr && extralease > 0) {
needPayDouble += price * extralease;
}else{
needPayDouble += price * receivePeriod;
}
}else {
needPayDouble += price * receivePeriod;
}
}
if(isLastYesr) {
needPayDouble += oneDayProce * endDateInt;
}else{
if(receivePeriod > 1) {
if(isLastYesr) {
needPayDouble += price * extralease;
}else{
needPayDouble += price * receivePeriod;
}
}
if(isLastYesr) {
needPayDouble += oneDayProce * endDateInt;
}
}
DecimalFormat format = new DecimalFormat("0");
needpay = Integer.parseInt(format.format(needPayDouble)); //分做四舍五入
@@ -990,3 +1018,4 @@ public class WxPropertyContractServiceImpl implements WxPropertyContractService
}

}


+ 54
- 25
mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java Просмотреть файл

@@ -813,7 +813,7 @@ public class WxRentContractServiceImpl implements WxRentContractService {

public Map<String, Object> buildRent(int lease, int receivePeriod, int price, Date startdate, int dayType, WxRentContract wxRentContract, Long userId, WxMerchant wxMerchant, int billcount, Integer isPreview, Map<String, Object> shopInfo,boolean isLastYesr) {
System.out.println("------lease:"+lease+"receivePeriod:"+receivePeriod+"price:"+price+"start:"+DateUtils.date2String(startdate,"yyyy-MM-dd")
+"dayType:"+dayType+"billcount:"+billcount);
+"dayType:"+dayType+"billcount:"+billcount);

String shopInfoStr = null;
if (shopInfo != null) {
@@ -840,12 +840,12 @@ public class WxRentContractServiceImpl implements WxRentContractService {
int paycount = lease / receivePeriod + extracount;
int index = paycount - 1;
final IdWorker idWorker = IdWorker.get();
//自然月,而且残月,周期整除,n+1,最后一个周期作为残月
//自然月计租,而且残月,周期整除,n+1,最后一个周期作为残月
if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode())
&& !isFirstDay(wxRentContract.getRentalStartDate())
&& !isFirstDay(wxRentContract.getRentalStartDate())
&& (wxRentContract.getLease() % wxRentContract.getReceivePeriod() == 0)
&& isLastYesr
){
){
paycount ++;
}
for(int i = 0; i < paycount; i++){
@@ -933,7 +933,9 @@ public class WxRentContractServiceImpl implements WxRentContractService {
if(receivePeriod > 1) {
needPayDouble += price * extralease;
}
needPayDouble += oneDayProce * endDateInt;
if(!isFirstDay(wxRentContract.getRentalStartDate())) { //残月才加
needPayDouble += oneDayProce * endDateInt;
}
}else{
//[A/31 *(31-12+1)]+A+A
needPayDouble = oneDayProce * (DateUtils.getMonthDayCount(wxBillRent.getStarttime())-startDateInt+1);
@@ -961,32 +963,58 @@ public class WxRentContractServiceImpl implements WxRentContractService {
Date firstDay = DateUtils.getFirstDayForCurrMonth(wxBillRent.getStarttime());
instance.clear();
instance.setTime(firstDay);

//最后一期有余,加上残月,(不整除时,最后一个月有余,否则为0)
if(receivePeriod > 1) {
if(isLastYesr) {
instance.add(dayType, extralease);
}else{
if(isFirstDay(wxRentContract.getRentalStartDate())){
if(receivePeriod > 1) {
if(isLastYesr && extralease > 0) {
instance.add(dayType, extralease);
}else{
instance.add(dayType, receivePeriod);
}
}else {
instance.add(dayType, receivePeriod);
}
}else{
if(receivePeriod > 1) {
if(isLastYesr) {
instance.add(dayType, extralease);
}else{
instance.add(dayType, receivePeriod);
}
}
if(isLastYesr) {
instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1);
}
}
if(isLastYesr) {
instance.add(Calendar.DAY_OF_MONTH, rentStartDateInt - 1);
}

instance.add(Calendar.DAY_OF_MONTH, -1);
wxBillRent.setEndtime(instance.getTime());

//逻辑同计算endtime
double needPayDouble = 0;
double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxBillRent.getEndtime());
if(receivePeriod > 1) {
if(isLastYesr) {
needPayDouble += price * extralease;
}else{
if(isFirstDay(wxRentContract.getRentalStartDate())){
if(receivePeriod > 1) {
if(isLastYesr && extralease > 0) {
needPayDouble += price * extralease;
}else{
needPayDouble += price * receivePeriod;
}
}else {
needPayDouble += price * receivePeriod;
}
}
if(isLastYesr) {
needPayDouble += oneDayProce * endDateInt;
}else{
if(receivePeriod > 1) {
if(isLastYesr) {
needPayDouble += price * extralease;
}else{
needPayDouble += price * receivePeriod;
}
}
if(isLastYesr) {
needPayDouble += oneDayProce * endDateInt;
}
}
DecimalFormat format = new DecimalFormat("0");
needpay = Integer.parseInt(format.format(needPayDouble)); //分做四舍五入
@@ -1406,13 +1434,13 @@ public class WxRentContractServiceImpl implements WxRentContractService {

// List<Map<String, Object>> billRentList = wxBillRentMapper.queryBillRentList(wxBillRent);
// if (billRentList.size() == 0) {
WxMerchant wxMerchant = new WxMerchant();
wxMerchant.setId(record.getMerchantId());
wxMerchant.setTenantId(record.getTenantId());
//租金
WxMerchant wxMerchant = new WxMerchant();
wxMerchant.setId(record.getMerchantId());
wxMerchant.setTenantId(record.getTenantId());
//租金
// buildRent(wxMerchant, null,null);
//押金
buildDeposit(wxMerchant, null,id);
//押金
buildDeposit(wxMerchant, null,id);
// }
}
//作废合同
@@ -1982,3 +2010,4 @@ public class WxRentContractServiceImpl implements WxRentContractService {
}

}


+ 9
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxTopicServiceImpl.java Просмотреть файл

@@ -75,11 +75,17 @@ public class WxTopicServiceImpl implements WxTopicService {
query.setBeginTime(record.getBeginTime());
query.setEndTime(record.getEndTime());
}
List<WxTopic> topicList = wxTopicMapper.findExist(query);
if (CollectionUtils.isNotEmpty(topicList)) {
return new ResultData(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION.getCode(), "["+topicList.get(0).getName()+"]正在活动中,截止至"+ DateUtils.date2String(topicList.get(0).getEndTime(),"yyyy-MM-dd"));
WxTopic dbquery = new WxTopic();
dbquery.setTenantId(record.getTenantId());
dbquery.setStatus(EnumWxTopicStatus.VAILD.getCode());
List<WxTopic> onLineTopicList = wxTopicMapper.findList(dbquery);
for (WxTopic topic:onLineTopicList) {
if (query.getBeginTime().after(topic.getBeginTime()) && query.getEndTime().before(topic.getEndTime())) {
return new ResultData(ErrorCode.SYS_REPEAT_SUBMIT_EXCEPTION.getCode(), "[" + topic.getName() + "]正在活动中,截止至" + DateUtils.date2String(topic.getEndTime(), "yyyy-MM-dd"));
}
}
}

if (record.getId() == null) {
final IdWorker idWorker = IdWorker.get();
record.setId(idWorker.nextId());


+ 23
- 0
mallinkService/src/main/java/com/iformall/utils/DateUtils.java Просмотреть файл

@@ -1060,4 +1060,27 @@ public class DateUtils {
return getFirstDayForCurrMonth(d);
}

/**
* 判断时间是否在时间段内
* @param nowTime
* @param beginTime
* @param endTime
* @return
*/
public static boolean belongCalendar(Date nowTime, Date beginTime, Date endTime) {
Calendar date = Calendar.getInstance();
date.setTime(nowTime);
Calendar begin = Calendar.getInstance();
begin.setTime(beginTime);
Calendar end = Calendar.getInstance();
end.setTime(endTime);
if (date.after(begin) && date.before(end)) {
return true;
} else if (nowTime.compareTo(beginTime) == 0 || nowTime.compareTo(endTime) == 0) {
return true;
} else {
return false;
}
}

}

Загрузка…
Отмена
Сохранить