From c4bcad97614ab206a934d13f8b42230d0c7c70d2 Mon Sep 17 00:00:00 2001 From: luozukai Date: Wed, 29 May 2019 14:06:28 +0800 Subject: [PATCH] =?UTF-8?q?[bug][=E4=BF=AE=E6=94=B9][1001665]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/app/WxAppinfoController.java | 27 +++--- .../contract/WxRentContractController.java | 4 + .../iformall/domain/po/WxRentContract.java | 8 ++ .../impl/WxRentContractServiceImpl.java | 95 ++++++++++++++----- 4 files changed, 99 insertions(+), 35 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/app/WxAppinfoController.java b/mallinkAdmin/src/main/java/com/iformall/controller/app/WxAppinfoController.java index 793afbaa7..ad0162d41 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/app/WxAppinfoController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/app/WxAppinfoController.java @@ -24,7 +24,6 @@ import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.core.task.AsyncTaskExecutor; import org.springframework.web.bind.annotation.*; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -33,6 +32,8 @@ import java.io.*; import java.util.List; import java.util.Map; import java.util.UUID; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; @RestController @RequestMapping("wxAppinfo") @@ -57,26 +58,25 @@ public class WxAppinfoController extends BaseController { @Autowired private UploadController uploadController; - @Autowired - private AsyncTaskExecutor asyncTaskExecutor; - @Autowired private WxCouponChannelMapper wxCouponChannelMapper; + ExecutorService fixedThreadPool = Executors.newFixedThreadPool(100); + @ApiOperation("加载老数据二维码") @GetMapping("/updateQrCode") public void updateQrCode(String p)throws ServletException, IOException { - if("xlldxx".equals(p)){ + if("xlldxx".equals(p)) { String pageUrl = "pages/index/index"; List list = wxMerchantMapper.findQrcodeEmptyList(); - for (WxMerchant merchant:list) { - asyncTaskExecutor.execute(new Runnable() { + for (WxMerchant merchant : list) { + fixedThreadPool.execute(new Runnable() { @Override public void run() { String param = merchant.getWeappScene(); - ResultData resultData = exportQrcode(null,null,merchant.getTenantId(),1,pageUrl,param,0,"","","店铺详情",true); - Map map = (Map)resultData.data; + ResultData resultData = exportQrcode(null, null, merchant.getTenantId(), 1, pageUrl, param, 0, "", "", "店铺详情", true); + Map map = (Map) resultData.data; String url = map.get("url"); merchant.setQrCode(url); wxMerchantMapper.updateByPrimaryKeySelective(merchant); @@ -94,7 +94,7 @@ public class WxAppinfoController extends BaseController { List list = wxCouponChannelMapper.findQrcodeEmptyList(); for (WxCouponChannel couponChannel:list) { - asyncTaskExecutor.execute(new Runnable() { + fixedThreadPool.execute(new Runnable() { @Override public void run() { String param = couponChannel.getWeappScene(); @@ -146,9 +146,9 @@ public class WxAppinfoController extends BaseController { } public ResultData exportQrcode(HttpServletRequest request, HttpServletResponse response, - String tenantId, int type, String pageUrl, String sceneParam, - int withText, String text1, String text2, - String name,boolean upload) { + String tenantId, int type, String pageUrl, String sceneParam, + int withText, String text1, String text2, + String name,boolean upload) { // type 0 有限二维码, 1 无限制二维码 // withText 0 不带字 1. 带下面的字,2 带下面的两行字 WxAppinfo appinfo = wxAppinfoService.getCAppInfo(tenantId); @@ -280,3 +280,4 @@ public class WxAppinfoController extends BaseController { } + 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 bc2c73869..093282474 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/contract/WxRentContractController.java @@ -95,6 +95,7 @@ public class WxRentContractController extends BaseController { MallUserInfo user = getUser(); wxRentContract.setTenantId(user.getTenantId()); wxRentContract.setAdjustPeriodHandle(); + wxRentContract.setRentPriceHandle(); return wxRentContractService.update(wxRentContract, user.getId(),user.getName()); } @@ -110,6 +111,7 @@ public class WxRentContractController extends BaseController { MallUserInfo user = getUser(); wxRentContract.setTenantId(user.getTenantId()); wxRentContract.setAdjustPeriodHandle(); + wxRentContract.setRentPriceHandle(); return wxRentContractService.update(wxRentContract, user.getId(),user.getName()); } @@ -120,6 +122,7 @@ public class WxRentContractController extends BaseController { MallUserInfo user = getUser(); wxRentContract.setTenantId(user.getTenantId()); wxRentContract.setAdjustPeriodHandle(); + wxRentContract.setRentPriceHandle(); return wxRentContractService.updateFile(wxRentContract, user.getId(),user.getName()); } @@ -258,3 +261,4 @@ public class WxRentContractController extends BaseController { } } + diff --git a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java index 9dd7baf9b..de5274366 100644 --- a/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java +++ b/mallinkService/src/main/java/com/iformall/domain/po/WxRentContract.java @@ -6,6 +6,7 @@ import com.iformall.enums.EnumRentContractAdjustPeriod; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; +import org.apache.commons.lang3.StringUtils; import javax.persistence.Id; import javax.persistence.Table; @@ -301,4 +302,11 @@ public class WxRentContract extends BaseEntity { } } + public void setRentPriceHandle() { + if(StringUtils.isNotBlank(rentPrice)) { + rentPrice = Double.parseDouble(rentPrice) * 100 +""; + } + } + } + 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 8b3e645bd..9f8343ccf 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxRentContractServiceImpl.java @@ -20,6 +20,7 @@ import com.iformall.utils.PriceUtil; import com.iformall.utils.WordUtil; import org.apache.commons.collections.map.HashedMap; import org.apache.commons.lang3.StringUtils; +import org.apache.poi.ss.usermodel.DateUtil; import org.apache.shiro.SecurityUtils; import org.flowable.engine.RuntimeService; import org.flowable.engine.TaskService; @@ -123,6 +124,11 @@ public class WxRentContractServiceImpl implements WxRentContractService { result.put("totalPeriodDay",array[1]); } + //init rentPrice + if(StringUtils.isNotBlank(wxRentContract.getRentPrice())){ + wxRentContract.setRentPrice(Double.parseDouble(wxRentContract.getRentPrice())/100 + ""); + } + //init 租赁单价 String rentInfo = wxRentContract.getRentInfo(); if(StringUtils.isNotBlank(rentInfo)){ @@ -924,19 +930,17 @@ public class WxRentContractServiceImpl implements WxRentContractService { long needpay; //当天也算,加1天 - Date newEndDate = DateUtils.getDaySet(wxBillRent.getEndtime(),Calendar.DATE,1); + //Date newEndDate = DateUtils.getDaySet(wxBillRent.getEndtime(),Calendar.DATE,1); //按日 if(wxRentContract.getAdjustPeriod().equals(EnumRentContractAdjustPeriod.ADJUST_PERIOD_DAY.getCode())){ - int dayCount = DateUtils.daysBetween(wxBillRent.getStarttime(),newEndDate); - needpay = dayCount*price; + double needpayD = this.getNeedPay(0,price,wxBillRent.getStarttime(),wxBillRent.getEndtime()); + needpay = new Double(needpayD).longValue(); }else{ //按月 - int[] diff = DateUtils.getDiff(wxBillRent.getStarttime(),newEndDate); - needpay = diff[0]*price; - - double oneDayProce = (double) price/DateUtils.getMonthDayCount(wxRentContract.getRentalEndDate()); - needpay += diff[1] * oneDayProce; + double needpayD = this.getNeedPay(price,0,wxBillRent.getStarttime(),wxBillRent.getEndtime()); + needpay = new Double(needpayD).longValue(); } + wxBillRent.setNeedPay(needpay); wxBillRent.setOwe(needpay); wxBillRent.setReceivePay(needpay); @@ -1728,25 +1732,71 @@ public class WxRentContractServiceImpl implements WxRentContractService { return wxRentContractMapper.getShopType(wxRentContract); } - public static void main(String[] args) throws Exception{ + /** + * 按日计租 根据每月的日期总数计算needpay + * @param monthPrice + * @param start + * @param end + * @return + */ + public double getNeedPay(long monthPrice,long dayPrice,Date start,Date end){ SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); -// Date start = sd.parse("2019-05-24"); -// Date end = sd.parse("2020-06-24"); - Date start = sd.parse("2019-05-24"); - Date end = sd.parse("2019-08-10"); + SimpleDateFormat sdM = new SimpleDateFormat("MM"); + Double total; + + int dayCount = DateUtils.getMonthDayCount(start); + double price; + if(monthPrice > 0){ + price = (double) monthPrice/dayCount; + }else{ + price = dayPrice; + } + Date currEnd = DateUtils.getLastDayForMonth(start); + int[] diff = DateUtils.getDiff(start,currEnd); + total = (diff[1]+1) * price; - Integer adjustPeriod = EnumRentContractAdjustPeriod.ADJUST_PERIOD_NAR_MONTH.getCode(); - Integer dayType = Calendar.MONTH; - int receivePeriod = 2; + if(sdM.format(start).equals(sdM.format(end))){ + return total; + } + System.out.println("-------total:"+total); - List list = initBillTimeList(start,end,adjustPeriod,dayType,receivePeriod); - for (BillTimeVo b:list) { - System.out.print(sd.format(b.getStartDate())); - System.out.print(" "+sd.format(b.getEndDate())); - System.out.print(" "+sd.format(b.getReceiveDate())); + while (true){ + Date monthStartDate = DateUtils.getDaySet(currEnd,Calendar.DATE,1); + dayCount = DateUtils.getMonthDayCount(monthStartDate); + if(monthPrice > 0){ + price = (double) monthPrice/dayCount; + }else{ + price = dayPrice; + } - System.out.println(); + System.out.println("-------monthStartDate:"+sd.format(monthStartDate)); + + //最后一个月 + if(sdM.format(monthStartDate).equals(sdM.format(end))){ + System.out.println("-----------"); + System.out.println(sd.format(monthStartDate)); + System.out.println(sd.format(end)); + + diff = DateUtils.getDiff(monthStartDate,end); + total += price * (diff[1] +1); + break; + }else{ + currEnd = DateUtils.getLastDayForMonth(monthStartDate); + diff = DateUtils.getDiff(monthStartDate,currEnd); + total += price * (diff[1] +1); + } + System.out.println("-------total:"+total); } + return total; + } + + public static void main(String[] args) throws Exception{ + long tprice = 100; + SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); + Date start = sd.parse("2019-05-28"); + Date end = sd.parse("2019-07-05"); + + System.out.println("===="+new WxRentContractServiceImpl().getNeedPay(tprice,0,start,end));; } public static List initBillTimeList(Date start,Date end,Integer adjustPeriod,Integer dayType,int receivePeriod){ @@ -1804,3 +1854,4 @@ public class WxRentContractServiceImpl implements WxRentContractService { } +