diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java index 107ad5f5e..9fa8bef3f 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -16,6 +16,7 @@ import com.iformall.service.WxBillRentService; import com.iformall.service.WxPayAccountBillService; import com.iformall.service.WxRentContractService; import com.iformall.service.WxShopService; +import com.iformall.utils.DateUtils; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import org.apache.commons.lang3.StringUtils; @@ -25,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.text.SimpleDateFormat; import java.util.HashMap; import java.util.Map; @@ -45,6 +47,21 @@ public class WxRentContractController extends BaseController { @Autowired private WxShopService wxShopService; + @GetMapping("getDateDiff") + @ApiImplicitParams({ + @ApiImplicitParam(name = "startDate", value = "开始时间", dataType = "string", paramType = "query", required = true), + @ApiImplicitParam(name = "endtDate", value = "结束时间", dataType = "string", paramType = "query", required = true)}) + @SystemControllerLog(description = "获取两个时间相差,返回n月零n天") + public ResultData getDateDiff(String startDate, String endtDate) throws Exception{ + logger.debug("[" + getIpAddr() + "] WxRentContractController::getTimeDiff"); + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); + int[] array = DateUtils.getDiff(sd.parse(startDate),sd.parse(endtDate)); + Map map = new HashMap<>(); + map.put("month",array[0]); + map.put("day",array[1]); + return new ResultData(map); + } + @GetMapping("list") @ApiImplicitParams({ @ApiImplicitParam(name = "pageNum", value = "页数", dataType = "int", paramType = "query", required = true), 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 d7aed7f2a..72bf802ed 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -1038,15 +1038,8 @@ public class WxRentContractServiceImpl implements WxRentContractService { if(wxRentContract.getRentalEndDate().after(wxBillRent.getEndtime())) { wxBillRent.setEndtime(wxRentContract.getRentalEndDate()); } - ZoneId zone = ZoneId.systemDefault(); - LocalDateTime localDateTime = LocalDateTime.ofInstant(wxBillRent.getStarttime().toInstant(), zone); - LocalDate startLocalDate = localDateTime.toLocalDate(); - - localDateTime = LocalDateTime.ofInstant(wxBillRent.getEndtime().toInstant(), zone); - LocalDate endLocalDate = localDateTime.toLocalDate(); - - int[] diff = DateUtils.getDiff(startLocalDate,endLocalDate); + int[] diff = DateUtils.getDiff(wxBillRent.getStarttime(),wxBillRent.getEndtime()); needpay = diff[0]*price; double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxRentContract.getRentalEndDate()); diff --git a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java index 54992f50b..7a3d661f6 100755 --- a/mallinkService/src/main/java/com/iformall/utils/DateUtils.java +++ b/mallinkService/src/main/java/com/iformall/utils/DateUtils.java @@ -6,7 +6,9 @@ import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.Period; +import java.time.ZoneId; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -1087,11 +1089,17 @@ public class DateUtils { /** * 计算两个时间 相差n个月 零n天 - * @param start - * @param end * @return */ - public static int[] getDiff(LocalDate start,LocalDate end) { + public static int[] getDiff(Date startDate,Date endDate) { + ZoneId zone = ZoneId.systemDefault(); + + LocalDateTime localDateTime = LocalDateTime.ofInstant(startDate.toInstant(), zone); + LocalDate start = localDateTime.toLocalDate(); + + localDateTime = LocalDateTime.ofInstant(endDate.toInstant(), zone); + LocalDate end = localDateTime.toLocalDate(); + if (!start.isBefore(end)) { throw new IllegalArgumentException("Start must not be before end."); }