| @@ -24,7 +24,6 @@ import org.apache.commons.lang3.StringUtils; | |||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.core.task.AsyncTaskExecutor; | |||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||
| import javax.servlet.ServletException; | import javax.servlet.ServletException; | ||||
| import javax.servlet.http.HttpServletRequest; | import javax.servlet.http.HttpServletRequest; | ||||
| @@ -33,6 +32,8 @@ import java.io.*; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| import java.util.UUID; | import java.util.UUID; | ||||
| import java.util.concurrent.ExecutorService; | |||||
| import java.util.concurrent.Executors; | |||||
| @RestController | @RestController | ||||
| @RequestMapping("wxAppinfo") | @RequestMapping("wxAppinfo") | ||||
| @@ -57,26 +58,25 @@ public class WxAppinfoController extends BaseController { | |||||
| @Autowired | @Autowired | ||||
| private UploadController uploadController; | private UploadController uploadController; | ||||
| @Autowired | |||||
| private AsyncTaskExecutor asyncTaskExecutor; | |||||
| @Autowired | @Autowired | ||||
| private WxCouponChannelMapper wxCouponChannelMapper; | private WxCouponChannelMapper wxCouponChannelMapper; | ||||
| ExecutorService fixedThreadPool = Executors.newFixedThreadPool(100); | |||||
| @ApiOperation("加载老数据二维码") | @ApiOperation("加载老数据二维码") | ||||
| @GetMapping("/updateQrCode") | @GetMapping("/updateQrCode") | ||||
| public void updateQrCode(String p)throws ServletException, IOException { | public void updateQrCode(String p)throws ServletException, IOException { | ||||
| if("xlldxx".equals(p)){ | |||||
| if("xlldxx".equals(p)) { | |||||
| String pageUrl = "pages/index/index"; | String pageUrl = "pages/index/index"; | ||||
| List<WxMerchant> list = wxMerchantMapper.findQrcodeEmptyList(); | List<WxMerchant> list = wxMerchantMapper.findQrcodeEmptyList(); | ||||
| for (WxMerchant merchant:list) { | |||||
| asyncTaskExecutor.execute(new Runnable() { | |||||
| for (WxMerchant merchant : list) { | |||||
| fixedThreadPool.execute(new Runnable() { | |||||
| @Override | @Override | ||||
| public void run() { | public void run() { | ||||
| String param = merchant.getWeappScene(); | String param = merchant.getWeappScene(); | ||||
| ResultData resultData = exportQrcode(null,null,merchant.getTenantId(),1,pageUrl,param,0,"","","店铺详情",true); | |||||
| Map<String,String> map = (Map)resultData.data; | |||||
| ResultData resultData = exportQrcode(null, null, merchant.getTenantId(), 1, pageUrl, param, 0, "", "", "店铺详情", true); | |||||
| Map<String, String> map = (Map) resultData.data; | |||||
| String url = map.get("url"); | String url = map.get("url"); | ||||
| merchant.setQrCode(url); | merchant.setQrCode(url); | ||||
| wxMerchantMapper.updateByPrimaryKeySelective(merchant); | wxMerchantMapper.updateByPrimaryKeySelective(merchant); | ||||
| @@ -94,7 +94,7 @@ public class WxAppinfoController extends BaseController { | |||||
| List<WxCouponChannel> list = wxCouponChannelMapper.findQrcodeEmptyList(); | List<WxCouponChannel> list = wxCouponChannelMapper.findQrcodeEmptyList(); | ||||
| for (WxCouponChannel couponChannel:list) { | for (WxCouponChannel couponChannel:list) { | ||||
| asyncTaskExecutor.execute(new Runnable() { | |||||
| fixedThreadPool.execute(new Runnable() { | |||||
| @Override | @Override | ||||
| public void run() { | public void run() { | ||||
| String param = couponChannel.getWeappScene(); | String param = couponChannel.getWeappScene(); | ||||
| @@ -146,9 +146,9 @@ public class WxAppinfoController extends BaseController { | |||||
| } | } | ||||
| public ResultData exportQrcode(HttpServletRequest request, HttpServletResponse response, | 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 无限制二维码 | // type 0 有限二维码, 1 无限制二维码 | ||||
| // withText 0 不带字 1. 带下面的字,2 带下面的两行字 | // withText 0 不带字 1. 带下面的字,2 带下面的两行字 | ||||
| WxAppinfo appinfo = wxAppinfoService.getCAppInfo(tenantId); | WxAppinfo appinfo = wxAppinfoService.getCAppInfo(tenantId); | ||||
| @@ -280,3 +280,4 @@ public class WxAppinfoController extends BaseController { | |||||
| } | } | ||||
| @@ -95,6 +95,7 @@ public class WxRentContractController extends BaseController { | |||||
| MallUserInfo user = getUser(); | MallUserInfo user = getUser(); | ||||
| wxRentContract.setTenantId(user.getTenantId()); | wxRentContract.setTenantId(user.getTenantId()); | ||||
| wxRentContract.setAdjustPeriodHandle(); | wxRentContract.setAdjustPeriodHandle(); | ||||
| wxRentContract.setRentPriceHandle(); | |||||
| return wxRentContractService.update(wxRentContract, user.getId(),user.getName()); | return wxRentContractService.update(wxRentContract, user.getId(),user.getName()); | ||||
| } | } | ||||
| @@ -110,6 +111,7 @@ public class WxRentContractController extends BaseController { | |||||
| MallUserInfo user = getUser(); | MallUserInfo user = getUser(); | ||||
| wxRentContract.setTenantId(user.getTenantId()); | wxRentContract.setTenantId(user.getTenantId()); | ||||
| wxRentContract.setAdjustPeriodHandle(); | wxRentContract.setAdjustPeriodHandle(); | ||||
| wxRentContract.setRentPriceHandle(); | |||||
| return wxRentContractService.update(wxRentContract, user.getId(),user.getName()); | return wxRentContractService.update(wxRentContract, user.getId(),user.getName()); | ||||
| } | } | ||||
| @@ -120,6 +122,7 @@ public class WxRentContractController extends BaseController { | |||||
| MallUserInfo user = getUser(); | MallUserInfo user = getUser(); | ||||
| wxRentContract.setTenantId(user.getTenantId()); | wxRentContract.setTenantId(user.getTenantId()); | ||||
| wxRentContract.setAdjustPeriodHandle(); | wxRentContract.setAdjustPeriodHandle(); | ||||
| wxRentContract.setRentPriceHandle(); | |||||
| return wxRentContractService.updateFile(wxRentContract, user.getId(),user.getName()); | return wxRentContractService.updateFile(wxRentContract, user.getId(),user.getName()); | ||||
| } | } | ||||
| @@ -258,3 +261,4 @@ public class WxRentContractController extends BaseController { | |||||
| } | } | ||||
| } | } | ||||
| @@ -6,6 +6,7 @@ import com.iformall.enums.EnumRentContractAdjustPeriod; | |||||
| import lombok.Data; | import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | import lombok.EqualsAndHashCode; | ||||
| import lombok.ToString; | import lombok.ToString; | ||||
| import org.apache.commons.lang3.StringUtils; | |||||
| import javax.persistence.Id; | import javax.persistence.Id; | ||||
| import javax.persistence.Table; | 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 +""; | |||||
| } | |||||
| } | |||||
| } | } | ||||
| @@ -20,6 +20,7 @@ import com.iformall.utils.PriceUtil; | |||||
| import com.iformall.utils.WordUtil; | import com.iformall.utils.WordUtil; | ||||
| import org.apache.commons.collections.map.HashedMap; | import org.apache.commons.collections.map.HashedMap; | ||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import org.apache.poi.ss.usermodel.DateUtil; | |||||
| import org.apache.shiro.SecurityUtils; | import org.apache.shiro.SecurityUtils; | ||||
| import org.flowable.engine.RuntimeService; | import org.flowable.engine.RuntimeService; | ||||
| import org.flowable.engine.TaskService; | import org.flowable.engine.TaskService; | ||||
| @@ -123,6 +124,11 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| result.put("totalPeriodDay",array[1]); | result.put("totalPeriodDay",array[1]); | ||||
| } | } | ||||
| //init rentPrice | |||||
| if(StringUtils.isNotBlank(wxRentContract.getRentPrice())){ | |||||
| wxRentContract.setRentPrice(Double.parseDouble(wxRentContract.getRentPrice())/100 + ""); | |||||
| } | |||||
| //init 租赁单价 | //init 租赁单价 | ||||
| String rentInfo = wxRentContract.getRentInfo(); | String rentInfo = wxRentContract.getRentInfo(); | ||||
| if(StringUtils.isNotBlank(rentInfo)){ | if(StringUtils.isNotBlank(rentInfo)){ | ||||
| @@ -924,19 +930,17 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| long needpay; | long needpay; | ||||
| //当天也算,加1天 | //当天也算,加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())){ | 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{ | }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.setNeedPay(needpay); | ||||
| wxBillRent.setOwe(needpay); | wxBillRent.setOwe(needpay); | ||||
| wxBillRent.setReceivePay(needpay); | wxBillRent.setReceivePay(needpay); | ||||
| @@ -1728,25 +1732,71 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| return wxRentContractMapper.getShopType(wxRentContract); | 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"); | 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<BillTimeVo> 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<BillTimeVo> initBillTimeList(Date start,Date end,Integer adjustPeriod,Integer dayType,int receivePeriod){ | public static List<BillTimeVo> initBillTimeList(Date start,Date end,Integer adjustPeriod,Integer dayType,int receivePeriod){ | ||||
| @@ -1804,3 +1854,4 @@ public class WxRentContractServiceImpl implements WxRentContractService { | |||||
| } | } | ||||