diff --git a/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java b/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java index 8da4601..35a6cb5 100644 --- a/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java +++ b/src/main/java/com/sqx/modules/artificer/service/impl/OrdersServiceImpl.java @@ -254,6 +254,480 @@ public class OrdersServiceImpl extends ServiceImpl implements return result; } + /** + * 获取总花费时间 + * @param duration 服务时长 + * @param serveTime 服务时间 + * @param value1 是否开启忙时 + * @param tripWay 出行方式 + * @param artificerId 技师ID + * @return + */ + private Map getTaskTime(Integer duration,String serveTime,String value1,Integer tripWay,Long artificerId){ + Map map = new HashMap<>(); + + String beforeTime = commonInfoService.findOne(457).getValue(); + int beforeTimeInt = Integer.parseInt(beforeTime); + + String afterTime = commonInfoService.findOne(458).getValue(); + int afterTimeInt = Integer.parseInt(afterTime); + + String jyValue = commonInfoService.findOne(392).getValue(); + int jyMinuteInt = Integer.parseInt(jyValue); + + int cxsjInt = 0; + if(Objects.nonNull(tripWay)){ + if(tripWay.equals(1)){ + String cxsj = commonInfoService.findOne(454).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + if(tripWay.equals(2)){ + String cxsj = commonInfoService.findOne(455).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + if(tripWay.equals(3)){ + String cxsj = commonInfoService.findOne(456).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + } + beforeTimeInt = beforeTimeInt + cxsjInt; //服务时间前锁单时间 + int minute=0; + int i = 0; + int f = 0; + int a = 0; + if ("是".equals(value1)) { + minute = jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + if (beforeTimeInt % minute == 0) { + f = beforeTimeInt / minute; + } else { + f = beforeTimeInt / minute; + f++; + } + if (afterTimeInt % minute == 0) { + a = afterTimeInt / minute; + } else { + a = afterTimeInt / minute; + a++; + } + } + List allTime = new ArrayList<>(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + Date parse = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm"); + //服务时间前锁单时间判断 + if (f > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < f; j++) { + calendar.add(Calendar.MINUTE, -minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + //服务时间后锁单时间判断 + if (i > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + //服务中锁单时间判断 + if (a > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + calendar.add(Calendar.MINUTE, minute*i); + for (int j = 0; j < a; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + allTime.sort(Comparator.naturalOrder()); + map.put("timeList",allTime); + map.put("code","0"); + return map; + } + + /** + * 获取总花费时间,包含当前订单中得时间 + * @param duration 服务时长 + * @param serveTime 服务时间 + * @param value1 是否开启忙时 + * @param tripWay 出行方式 + * @param artificerId 技师ID + * @param ordersId 订单ID + * @return + */ + private Map getTaskTimeIncudeOrders(Integer duration,String serveTime,String value1,Integer tripWay,Long artificerId,Long ordersId){ + Map map = new HashMap<>(); + + String beforeTime = commonInfoService.findOne(457).getValue(); + int beforeTimeInt = Integer.parseInt(beforeTime); + + String afterTime = commonInfoService.findOne(458).getValue(); + int afterTimeInt = Integer.parseInt(afterTime); + + String jyValue = commonInfoService.findOne(392).getValue(); + int jyMinuteInt = Integer.parseInt(jyValue); + + int cxsjInt = 0; + if(Objects.nonNull(tripWay)){ + if(tripWay.equals(1)){ + String cxsj = commonInfoService.findOne(454).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + if(tripWay.equals(2)){ + String cxsj = commonInfoService.findOne(455).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + if(tripWay.equals(3)){ + String cxsj = commonInfoService.findOne(456).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + } + beforeTimeInt = beforeTimeInt + cxsjInt; //服务时间前锁单时间 + int minute=0; + int i = 0; + int f = 0; + int a = 0; + if ("是".equals(value1)) { + minute = jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + if (beforeTimeInt % minute == 0) { + f = beforeTimeInt / minute; + } else { + f = beforeTimeInt / minute; + f++; + } + if (afterTimeInt % minute == 0) { + a = afterTimeInt / minute; + } else { + a = afterTimeInt / minute; + a++; + } + } + List allTime = new ArrayList<>(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + Date parse = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm"); + //服务时间前锁单时间判断 + if (f > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < f; j++) { + calendar.add(Calendar.MINUTE, -minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", ordersId) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + //服务时间后锁单时间判断 + if (i > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", ordersId) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + //服务中锁单时间判断 + if (a > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + calendar.add(Calendar.MINUTE, minute*i); + for (int j = 0; j < a; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", ordersId) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + allTime.sort(Comparator.naturalOrder()); + map.put("timeList",allTime); + map.put("code","0"); + return map; + } + + /** + * 获取加钟总花费时间 + * @param duration 服务时长 + * @param serveTime 服务时间 + * @param value1 是否开启忙时 + * @param artificerId 技师ID + * @return + */ + private Map getAddTaskTime(Integer duration,String serveTime,String value1,Long artificerId){ + Map map = new HashMap<>(); + String jyValue = commonInfoService.findOne(392).getValue(); + int jyMinuteInt = Integer.parseInt(jyValue); + int minute=0; + int i = 0; + if ("是".equals(value1)) { + minute = jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + } + List allTime = new ArrayList<>(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + Date parse = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm"); + //服务时间后锁单时间判断 + if (i > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + allTime.sort(Comparator.naturalOrder()); + map.put("timeList",allTime); + map.put("code","0"); + return map; + } + + /** + * 插入技师占用时间表 + * @param allTime 时间集合 + * @param artificerId 技师ID + * @param ordersId 订单ID + */ + private void insertArtificerTime(List allTime,Long artificerId,Long ordersId){ + if(allTime!=null && allTime.size()>0) { + for (int i=0; i allTime = new ArrayList<>(); + Date parse = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm"); + if (f > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < f; j++) { + calendar.add(Calendar.MINUTE, -minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + } + } + //服务时间后锁单时间判断 + if (i > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + } + } + if (a > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + calendar.add(Calendar.MINUTE, minute*i); + for (int j = 0; j < a; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + } + } + allTime.add(serveTime); + allTime.sort(Comparator.naturalOrder()); + for(String item : allTime){ + System.out.println(item); + } + + Integer duration2 = 110; + int ii = 0; + if ("是".equals(value1)) { + minute = jyMinuteInt; + if (duration2 % minute == 0) { + ii = duration2 / minute; + } else { + ii = duration2 / minute; + ii++; + } + } + + String serveTime2 = "2024-07-08 17:30"; + String date1 = serveTime2.substring(0, 10); + String time1 = serveTime2.substring(11, 16); + System.out.println(date1); + System.out.println(time1); + List allTime2 = new ArrayList<>(); + Date parse2 = DateUtils.stringToDate(serveTime2,"yyyy-MM-dd HH:mm"); + //服务时间后锁单时间判断 + if (ii > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse2); + for (int j = 0; j < ii; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime2.add(format); + } + } + + allTime2.sort(Comparator.naturalOrder()); + for(String item : allTime2){ + System.out.println(item); + } + + } + @Override public Result insertOrders(Orders orders) { String msg = ""; @@ -405,42 +879,7 @@ public class OrdersServiceImpl extends ServiceImpl implements payMoney = payMoney.subtract(orders.getCouponMoney()); String value1 = commonInfoService.findOne(395).getValue(); - int i = 0; - //1.锁定本单服务时间问题 - //项目时间 - Integer duration = massageType.getDuration(); - //精油 - String jyValue = commonInfoService.findOne(392).getValue(); -// //中医 -// String zyValue = commonInfoService.findOne(436).getValue(); - int minute=0; - int jyMinuteInt = Integer.parseInt(jyValue); - // todo 这块只是满足当时的需求 (后续有变化需要改动!!!) -// int zyMinuteInt = Integer.parseInt(zyValue); - //公交1h,出租30 , 免费 1h(加出行时间) Integer tripWay = orders.getTripWay(); - if(Objects.nonNull(tripWay)&&(tripWay==1 || tripWay==3)){ - duration=duration+30; - } - if ("是".equals(value1)) { - if(orders.getClassifyId() == 91){ - minute=jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - }else{ - minute=jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - } - } BigDecimal taxiMoney = BigDecimal.ZERO; if (orders.getParentId() == null || orders.getParentId() == 0) { @@ -450,29 +889,16 @@ public class OrdersServiceImpl extends ServiceImpl implements ArtificerTime artificerTime = artificerTimeService.getOne( new QueryWrapper() .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); if (artificerTime != null) { return Result.error("预约时间正忙,请更换其他时间!"); } - if (i > 1) { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf.parse(serveTime); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 1; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } - } + Map map = getTaskTime(massageType.getDuration(),serveTime,value1,tripWay,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); } TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); @@ -494,24 +920,9 @@ public class OrdersServiceImpl extends ServiceImpl implements if ("是".equals(value1)) { ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); - String date = null; - String time = null; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf.parse(serveTime); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 0; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } + Map map = getAddTaskTime(orders.getDuration(),serveTime,value1,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); } } } @@ -592,44 +1003,46 @@ public class OrdersServiceImpl extends ServiceImpl implements ordersMassage.setOrdersId(orders.getOrdersId()); ordersMassageService.save(ordersMassage); } - if (orders.getParentId() == null || orders.getParentId() == 0) { - String serveTime = orders.getServeTime(); - if (i > 0) { - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf1.parse(serveTime); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - //3.预约时间前及服务完成时间后问题 - DateTime dateTime = DateUtil.offsetMinute(parse, -30); - Calendar calendar1 = Calendar.getInstance(); - calendar1.setTime(dateTime); - String format1 = sdf1.format(calendar1.getTime()); - String date1 = format1.substring(0, 10); - String time1 = format1.substring(11, 16); - ArtificerTime artificerTime1 = new ArtificerTime(); - artificerTime1.setArtificerId(orders.getArtificerId()); - artificerTime1.setArtificerDate(date1); - artificerTime1.setArtificerTime(time1); - artificerTime1.setClassify(1); - artificerTime1.setOrdersId(orders.getOrdersId()); - artificerTime1.setCreateTime(DateUtils.format(new Date())); - artificerTimeService.save(artificerTime1); - for (int j = 0; j < i; j++) { - String format = sdf1.format(calendar.getTime()); - String date = format.substring(0, 10); - String time = format.substring(11, 16); - ArtificerTime artificerTime = new ArtificerTime(); - artificerTime.setArtificerId(orders.getArtificerId()); - artificerTime.setArtificerDate(date); - artificerTime.setArtificerTime(time); - artificerTime.setClassify(1); - artificerTime.setOrdersId(orders.getOrdersId()); - artificerTime.setCreateTime(DateUtils.format(new Date())); - artificerTimeService.save(artificerTime); - calendar.add(Calendar.MINUTE, minute); - } - } + //todo 改成支付时插入技师占用时间表 +// if (orders.getParentId() == null || orders.getParentId() == 0) { +// String serveTime = orders.getServeTime(); +// if (i > 0) { +// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); +// Date parse = sdf1.parse(serveTime); +// Calendar calendar = Calendar.getInstance(); +// calendar.setTime(parse); +// //3.预约时间前及服务完成时间后问题 +// DateTime dateTime = DateUtil.offsetMinute(parse, -30); +// Calendar calendar1 = Calendar.getInstance(); +// calendar1.setTime(dateTime); +// String format1 = sdf1.format(calendar1.getTime()); +// String date1 = format1.substring(0, 10); +// String time1 = format1.substring(11, 16); +// ArtificerTime artificerTime1 = new ArtificerTime(); +// artificerTime1.setArtificerId(orders.getArtificerId()); +// artificerTime1.setArtificerDate(date1); +// artificerTime1.setArtificerTime(time1); +// artificerTime1.setClassify(1); +// artificerTime1.setOrdersId(orders.getOrdersId()); +// artificerTime1.setCreateTime(DateUtils.format(new Date())); +// artificerTimeService.save(artificerTime1); +// +// for (int j = 0; j < i; j++) { +// String format = sdf1.format(calendar.getTime()); +// String date = format.substring(0, 10); +// String time = format.substring(11, 16); +// ArtificerTime artificerTime = new ArtificerTime(); +// artificerTime.setArtificerId(orders.getArtificerId()); +// artificerTime.setArtificerDate(date); +// artificerTime.setArtificerTime(time); +// artificerTime.setClassify(1); +// artificerTime.setOrdersId(orders.getOrdersId()); +// artificerTime.setCreateTime(DateUtils.format(new Date())); +// artificerTimeService.save(artificerTime); +// calendar.add(Calendar.MINUTE, minute); +// } +// } // todo 这块只是满足当时的需求注释的 (后续有变化需要改动!!!) // else { // String date = serveTime.substring(0, 10); @@ -643,7 +1056,7 @@ public class OrdersServiceImpl extends ServiceImpl implements // artificerTime.setCreateTime(DateUtils.format(new Date())); // artificerTimeService.save(artificerTime); // } - } +// } return Result.success().put("data", orders); } @@ -692,42 +1105,7 @@ public class OrdersServiceImpl extends ServiceImpl implements orders.setVipRate(new BigDecimal(100)); String value1 = commonInfoService.findOne(395).getValue(); - int i = 0; - //1.锁定本单服务时间问题 - //项目时间 - Integer duration = userPackageDetail.getDuration(); - //精油 - String jyValue = commonInfoService.findOne(392).getValue(); -// //中医 -// String zyValue = commonInfoService.findOne(436).getValue(); - int minute=0; - int jyMinuteInt = Integer.parseInt(jyValue); - // todo 这块只是满足当时的需求 (后续有变化需要改动!!!) -// int zyMinuteInt = Integer.parseInt(zyValue); - //公交1h,出租30 , 免费 1h(加出行时间) Integer tripWay = orders.getTripWay(); - if(Objects.nonNull(tripWay)&&(tripWay==1 || tripWay==3)){ - duration=duration+30; - } - if ("是".equals(value1)) { - if(orders.getClassifyId() == 91){ - minute=jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - }else{ - minute=jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - } - } BigDecimal taxiMoney = BigDecimal.ZERO; if (orders.getParentId() == null || orders.getParentId() == 0) { @@ -737,29 +1115,16 @@ public class OrdersServiceImpl extends ServiceImpl implements ArtificerTime artificerTime = artificerTimeService.getOne( new QueryWrapper() .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); if (artificerTime != null) { return Result.error("预约时间正忙,请更换其他时间!"); } - if (i > 1) { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf.parse(serveTime); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 1; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } - } + Map map = getTaskTime(userPackageDetail.getDuration(),serveTime,value1,tripWay,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); } TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); @@ -781,24 +1146,9 @@ public class OrdersServiceImpl extends ServiceImpl implements if ("是".equals(value1)) { ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); - String date = null; - String time = null; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf.parse(serveTime); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 0; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } + Map map = getAddTaskTime(userPackageDetail.getDuration(),serveTime,value1,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); } } } @@ -872,44 +1222,45 @@ public class OrdersServiceImpl extends ServiceImpl implements ordersMassage.setOrdersId(orders.getOrdersId()); ordersMassageService.save(ordersMassage); } - if (orders.getParentId() == null || orders.getParentId() == 0) { - String serveTime = orders.getServeTime(); - if (i > 0) { - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf1.parse(serveTime); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - //3.预约时间前及服务完成时间后问题 - DateTime dateTime = DateUtil.offsetMinute(parse, -30); - Calendar calendar1 = Calendar.getInstance(); - calendar1.setTime(dateTime); - String format1 = sdf1.format(calendar1.getTime()); - String date1 = format1.substring(0, 10); - String time1 = format1.substring(11, 16); - ArtificerTime artificerTime1 = new ArtificerTime(); - artificerTime1.setArtificerId(orders.getArtificerId()); - artificerTime1.setArtificerDate(date1); - artificerTime1.setArtificerTime(time1); - artificerTime1.setClassify(1); - artificerTime1.setOrdersId(orders.getOrdersId()); - artificerTime1.setCreateTime(DateUtils.format(new Date())); - artificerTimeService.save(artificerTime1); - - for (int j = 0; j < i; j++) { - String format = sdf1.format(calendar.getTime()); - String date = format.substring(0, 10); - String time = format.substring(11, 16); - ArtificerTime artificerTime = new ArtificerTime(); - artificerTime.setArtificerId(orders.getArtificerId()); - artificerTime.setArtificerDate(date); - artificerTime.setArtificerTime(time); - artificerTime.setClassify(1); - artificerTime.setOrdersId(orders.getOrdersId()); - artificerTime.setCreateTime(DateUtils.format(new Date())); - artificerTimeService.save(artificerTime); - calendar.add(Calendar.MINUTE, minute); - } - } + //todo 改成支付时插入技师占用时间表 +// if (orders.getParentId() == null || orders.getParentId() == 0) { +// String serveTime = orders.getServeTime(); +// if (i > 0) { +// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); +// Date parse = sdf1.parse(serveTime); +// Calendar calendar = Calendar.getInstance(); +// calendar.setTime(parse); +// //3.预约时间前及服务完成时间后问题 +// DateTime dateTime = DateUtil.offsetMinute(parse, -30); +// Calendar calendar1 = Calendar.getInstance(); +// calendar1.setTime(dateTime); +// String format1 = sdf1.format(calendar1.getTime()); +// String date1 = format1.substring(0, 10); +// String time1 = format1.substring(11, 16); +// ArtificerTime artificerTime1 = new ArtificerTime(); +// artificerTime1.setArtificerId(orders.getArtificerId()); +// artificerTime1.setArtificerDate(date1); +// artificerTime1.setArtificerTime(time1); +// artificerTime1.setClassify(1); +// artificerTime1.setOrdersId(orders.getOrdersId()); +// artificerTime1.setCreateTime(DateUtils.format(new Date())); +// artificerTimeService.save(artificerTime1); +// +// for (int j = 0; j < i; j++) { +// String format = sdf1.format(calendar.getTime()); +// String date = format.substring(0, 10); +// String time = format.substring(11, 16); +// ArtificerTime artificerTime = new ArtificerTime(); +// artificerTime.setArtificerId(orders.getArtificerId()); +// artificerTime.setArtificerDate(date); +// artificerTime.setArtificerTime(time); +// artificerTime.setClassify(1); +// artificerTime.setOrdersId(orders.getOrdersId()); +// artificerTime.setCreateTime(DateUtils.format(new Date())); +// artificerTimeService.save(artificerTime); +// calendar.add(Calendar.MINUTE, minute); +// } +// } // todo 这块只是满足当时的需求注释的 (后续有变化需要改动!!!) // else { // String date = serveTime.substring(0, 10); @@ -923,7 +1274,7 @@ public class OrdersServiceImpl extends ServiceImpl implements // artificerTime.setCreateTime(DateUtils.format(new Date())); // artificerTimeService.save(artificerTime); // } - } +// } return Result.success().put("data", orders); } @@ -983,39 +1334,7 @@ public class OrdersServiceImpl extends ServiceImpl implements } String value1 = commonInfoService.findOne(395).getValue(); - int i = 0; - //1.锁定本单服务时间问题 - //项目时间 - Integer duration = massageType.getDuration(); - //精油 - String jyValue = commonInfoService.findOne(392).getValue(); - - int minute = 0; - int jyMinuteInt = Integer.parseInt(jyValue); - //公交1h,出租30 , 免费 1h(加出行时间) Integer tripWay = orders.getTripWay(); - if (Objects.nonNull(tripWay) && (tripWay == 1 || tripWay == 3)) { - duration = duration + 30; - } - if ("是".equals(value1)) { - if (orders.getClassifyId() == 91) { - minute = jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - } else { - minute = jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - } - } String serveTime = orders.getServeTime(); String date = serveTime.substring(0, 10); @@ -1023,27 +1342,16 @@ public class OrdersServiceImpl extends ServiceImpl implements ArtificerTime artificerTime = artificerTimeService.getOne( new QueryWrapper() .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); if (artificerTime != null) { return Result.error("预约时间正忙,请更换其他时间!"); } - if (i > 1) { - Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm"); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 1; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = DateUtils.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } - } + + Map map = getTaskTime(orders.getDuration(),serveTime,value1,tripWay,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); } TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); @@ -1197,12 +1505,18 @@ public class OrdersServiceImpl extends ServiceImpl implements } Long massageTypeId; BigDecimal price = BigDecimal.ZERO; + int timeDifference = 0;//服务时长差 if (orders.getOrdersMassageList() != null) { List ordersMassageList = orders.getOrdersMassageList(); massageTypeId = ordersMassageList.get(0).getMassageId(); MassageType massageType = massageTypeService.getById(massageTypeId); for (OrdersMassage ordersMassage : ordersMassageList) { - orders.setDuration(massageType.getDuration()); + if(massageType.getDuration().compareTo(oldOrders.getDuration()) > 0){ + orders.setDuration(massageType.getDuration()); + timeDifference = massageType.getDuration()-oldOrders.getDuration(); + }else{ + orders.setDuration(oldOrders.getDuration()); + } orders.setMassageNum(ordersMassage.getNum()); price = massageType.getPrice().multiply(BigDecimal.valueOf(ordersMassage.getNum())); } @@ -1217,6 +1531,17 @@ public class OrdersServiceImpl extends ServiceImpl implements } else { return Result.error("当前订单没有选择服务项目!"); } + + String value1 = commonInfoService.findOne(395).getValue(); + if ("是".equals(value1)) { + ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getOrdersId()).last(" order by artificer_time_id desc limit 1 ")); + String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); + Map map = getAddTaskTime(timeDifference,serveTime,value1,oldOrders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + } + //使用原价计算差额 orders.setUserId(oldOrders.getUserId()); orders.setUserName(oldOrders.getUserName()); @@ -1340,40 +1665,9 @@ public class OrdersServiceImpl extends ServiceImpl implements return Result.error("当前套餐类订单无法修改项目,如需更改请取消单据重新下单!"); } UserPackageDetail userPackageDetail = userPackageDetailService.getById(massageTypeId); - //修改套餐类订单 + String value1 = commonInfoService.findOne(395).getValue(); - int i = 0; - //1.锁定本单服务时间问题 - //项目时间 - Integer duration = userPackageDetail.getDuration(); - //精油 - String jyValue = commonInfoService.findOne(392).getValue(); - int minute = 0; - int jyMinuteInt = Integer.parseInt(jyValue); - //公交1h,出租30 , 免费 1h(加出行时间) Integer tripWay = orders.getTripWay(); - if (Objects.nonNull(tripWay) && (tripWay == 1 || tripWay == 3)) { - duration = duration + 30; - } - if ("是".equals(value1)) { - if (orders.getClassifyId() == 91) { - minute = jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - } else { - minute = jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - } - } BigDecimal taxiMoney = BigDecimal.ZERO; if (orders.getParentId() == null || orders.getParentId() == 0) { @@ -1383,28 +1677,16 @@ public class OrdersServiceImpl extends ServiceImpl implements ArtificerTime artificerTime = artificerTimeService.getOne( new QueryWrapper() .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); if (artificerTime != null) { return Result.error("预约时间正忙,请更换其他时间!"); } - if (i > 1) { - Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm"); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 1; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = DateUtils.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } - } + Map map = getTaskTime(userPackageDetail.getDuration(),serveTime,value1,tripWay,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); } TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); @@ -1419,23 +1701,9 @@ public class OrdersServiceImpl extends ServiceImpl implements if ("是".equals(value1)) { ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); - String date = null; - String time = null; - Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm"); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 0; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = DateUtils.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } + Map map = getAddTaskTime(userPackageDetail.getDuration(),serveTime,value1,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); } } } @@ -1630,38 +1898,7 @@ public class OrdersServiceImpl extends ServiceImpl implements payMoney = payMoney.subtract(orders.getCouponMoney()); String value1 = commonInfoService.findOne(395).getValue(); - int i = 0; - //1.锁定本单服务时间问题 - //项目时间 - Integer duration = massageType.getDuration(); - //精油 - String jyValue = commonInfoService.findOne(392).getValue(); - int minute = 0; - int jyMinuteInt = Integer.parseInt(jyValue); - //公交1h,出租30 , 免费 1h(加出行时间) Integer tripWay = orders.getTripWay(); - if (Objects.nonNull(tripWay) && (tripWay == 1 || tripWay == 3)) { - duration = duration + 30; - } - if ("是".equals(value1)) { - if (orders.getClassifyId() == 91) { - minute = jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - } else { - minute = jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - } - } BigDecimal taxiMoney = BigDecimal.ZERO; if (orders.getParentId() == null || orders.getParentId() == 0) { @@ -1671,28 +1908,16 @@ public class OrdersServiceImpl extends ServiceImpl implements ArtificerTime artificerTime = artificerTimeService.getOne( new QueryWrapper() .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); if (artificerTime != null) { return Result.error("预约时间正忙,请更换其他时间!"); } - if (i > 1) { - Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm"); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 1; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = DateUtils.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } - } + Map map = getTaskTime(massageType.getDuration(),serveTime,value1,tripWay,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); } TravelPriceVo travelPriceVo = travelConfService.calcTravelPrice(orders.getArtificerId(), orders.getLongitude(), orders.getLatitude()); @@ -1707,23 +1932,9 @@ public class OrdersServiceImpl extends ServiceImpl implements if ("是".equals(value1)) { ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); - String date = null; - String time = null; - Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm"); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 0; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = DateUtils.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } + Map map = getAddTaskTime(massageType.getDuration(),serveTime,value1,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); } } } @@ -1845,40 +2056,9 @@ public class OrdersServiceImpl extends ServiceImpl implements if(serveTimeDate.getTime() < (new Date()).getTime()){ return Result.error("服务时间不能晚于当前时间!"); } - String value1 = commonInfoService.findOne(395).getValue(); - int i = 0; - //1.锁定本单服务时间问题 - //项目时间 - Integer duration = massageType.getDuration(); - //精油 - String jyValue = commonInfoService.findOne(392).getValue(); - int minute = 0; - int jyMinuteInt = Integer.parseInt(jyValue); - //公交1h,出租30 , 免费 1h(加出行时间) + String value1 = commonInfoService.findOne(395).getValue(); Integer tripWay = orders.getTripWay(); - if (Objects.nonNull(tripWay) && (tripWay == 1 || tripWay == 3)) { - duration = duration + 30; - } - if ("是".equals(value1)) { - if (orders.getClassifyId() == 91) { - minute = jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - } else { - minute = jyMinuteInt; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } - } - } String serveTime = orders.getServeTime(); String date = serveTime.substring(0, 10); @@ -1886,28 +2066,17 @@ public class OrdersServiceImpl extends ServiceImpl implements ArtificerTime artificerTime = artificerTimeService.getOne( new QueryWrapper() .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", orders.getOrdersId()) + .last("limit 1")); if (artificerTime != null) { return Result.error("预约时间正忙,请更换其他时间!"); } - if (i > 1) { - Date parse = DateUtils.stringToDate(serveTime, "yyyy-MM-dd HH:mm"); - ; - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 1; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = DateUtils.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( - new QueryWrapper() - .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if (artificerTime != null) { - return Result.error("预约时间正忙,请更换其他时间!"); - } - } + + Map map = getTaskTimeIncudeOrders(massageType.getDuration(),serveTime,value1,tripWay,orders.getArtificerId(),orders.getOrdersId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); } Artificer artificer = artificerService.getById(orders.getArtificerId()); @@ -2058,6 +2227,26 @@ public class OrdersServiceImpl extends ServiceImpl implements ordersMassage.setOrdersId(orders.getOrdersId()); ordersMassageService.save(ordersMassage); } + + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOrdersId())); + //插入技师占用时间表时间差数据 + List allTime = (ArrayList)map.get("timeList"); + if(allTime!=null && allTime.size()>0) { + for (int x=0;x implements ordersMassageService.save(ordersMassage); } +// //删除技师占用时间表旧数据 +// artificerTimeService.remove(new QueryWrapper().eq("orders_id", oldOrders.getOrdersId())); +// //插入技师占用时间表新数据 +// List allTime = (ArrayList)map.get("timeList"); +// if(allTime!=null && allTime.size()>0) { +// for (int x=0;x implements ordersOld.setOneUserMoney(oneUserMoney); pingMoney = pingMoney.subtract(oneUserMoney); ordersOld.setPingMoney(pingMoney); - baseMapper.updateById(ordersOld);//原单暂变成挂单状态 return Result.success().put("data", orders); } @@ -2720,6 +2928,8 @@ public class OrdersServiceImpl extends ServiceImpl implements } } baseMapper.updateById(orders); + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOrdersId())); if(orders.getOldOrdersId()!=null && orders.getOldOrdersId() !=0){ Orders ordersOld = new Orders(); ordersOld.setOrdersId(orders.getOldOrdersId()); @@ -2736,6 +2946,7 @@ public class OrdersServiceImpl extends ServiceImpl implements } baseMapper.updateById(ordersOld);//原单暂变成挂单状态 } + return Result.success(); } @@ -3011,8 +3222,9 @@ public class OrdersServiceImpl extends ServiceImpl implements userService.sendWxMessage(apkey, data, userEntity.getWxOpenId()); } } - baseMapper.updateById(orders); + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOrdersId())); if(orders.getOldOrdersId()!=null && orders.getOldOrdersId() !=0){ Orders ordersOld = new Orders(); ordersOld.setOrdersId(orders.getOldOrdersId()); @@ -3253,6 +3465,8 @@ public class OrdersServiceImpl extends ServiceImpl implements orders.setTaxiMoney(BigDecimal.ZERO); orders.setStatus(4); baseMapper.updateById(orders); + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOrdersId())); cancelSupplementOrders(userId, orders.getOldOrdersId(), isAuto, 1);//退原单,原单的车费已被退/扣,所以只退项目 }else{ BigDecimal taxiMoney = orders.getTaxiMoney(); @@ -3263,7 +3477,10 @@ public class OrdersServiceImpl extends ServiceImpl implements orders.setArtificerMoney(artificerMoney); orders.setSumArtificerMoney(artificerMoney); baseMapper.updateById(orders); + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOrdersId())); } + } if(type == 2){ //退项目费 @@ -3438,7 +3655,8 @@ public class OrdersServiceImpl extends ServiceImpl implements userMoneyDetailsService.save(userMoneyDetails); orders.setStatus(4); baseMapper.updateById(orders); - + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOrdersId())); Artificer artificer2 = artificerService.getById(orders.getArtificerId()); if (userId != null && artificer2.getUserId().equals(userId)) { BigDecimal newCreditScore = BigDecimal.ZERO; @@ -3693,6 +3911,8 @@ public class OrdersServiceImpl extends ServiceImpl implements orders.setTaxiMoney(BigDecimal.ZERO); orders.setStatus(4); baseMapper.updateById(orders); + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOrdersId())); cancelSupplementOrders(userId, orders.getOldOrdersId(), isAuto, 1);//退原单,原单的车费已被退/扣,所以只退项目 }else{ BigDecimal taxiMoney = orders.getTaxiMoney(); @@ -3703,7 +3923,10 @@ public class OrdersServiceImpl extends ServiceImpl implements orders.setArtificerMoney(artificerMoney); orders.setSumArtificerMoney(artificerMoney); baseMapper.updateById(orders); + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOrdersId())); } + } if(type == 2){ //退项目费 @@ -3810,6 +4033,8 @@ public class OrdersServiceImpl extends ServiceImpl implements userMoneyDetailsService.save(userMoneyDetails); orders.setStatus(4); baseMapper.updateById(orders); + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOrdersId())); Artificer artificer2 = artificerService.getById(orders.getArtificerId()); if (userId != null && artificer2.getUserId().equals(userId)) { @@ -4017,8 +4242,11 @@ public class OrdersServiceImpl extends ServiceImpl implements orders.setArtificerTaxiMoney(BigDecimal.ZERO); orders.setPingTaxiMoney(BigDecimal.ZERO); orders.setStatus(4); - UserEntity userEntity = userService.selectUserById(orders.getUserId()); + baseMapper.updateById(orders); + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOrdersId())); + UserEntity userEntity = userService.selectUserById(orders.getUserId()); List ordersMassageList = ordersMassageService.list(new QueryWrapper().eq("orders_id", orders.getOrdersId())); MassageType massageType = massageTypeService.getById(ordersMassageList.get(0).getMassageId()); //超过十个字 则截取 @@ -4051,8 +4279,6 @@ public class OrdersServiceImpl extends ServiceImpl implements userService.sendWxMessage(apkey, data, userEntity.getWxOpenId()); } - - baseMapper.updateById(orders); return Result.success(); } @@ -4434,55 +4660,107 @@ public class OrdersServiceImpl extends ServiceImpl implements duration = massageType.getDuration(); String value1 = commonInfoService.findOne(395).getValue(); if ("是".equals(value1)) { - String value = commonInfoService.findOne(392).getValue(); - int minute = Integer.parseInt(value); - int i = 1; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); - String date = null; - String time = null; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf.parse(serveTime); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 0; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( + Map map = getAddTaskTime(orders.getDuration(),serveTime,value1,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + } + }else{ + String value1 = commonInfoService.findOne(395).getValue(); + if ("是".equals(value1)) { + if(orders.getIsSupplement() != null){ + if(orders.getIsSupplement() == 1){ + String serveTime = orders.getServeTime(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + Map map = getTaskTime(orders.getDuration(),orders.getServeTime(),value1,orders.getTripWay(),orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + }else if(orders.getIsSupplement() == 2){ + Orders oldOrders = baseMapper.selectById(orders.getOrdersId()); + int timeDifference = orders.getDuration()-oldOrders.getDuration(); + if(timeDifference>0){ + ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getOrdersId()).last(" order by artificer_time_id desc limit 1 ")); + String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); + Map map = getAddTaskTime(timeDifference,serveTime,value1,oldOrders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + //技师占用时间表插入新订单号的多出来的服务时间 + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + }else{ + //技师占用时间表插入新订单号的同时间 + List artificerTimeList = artificerTimeService.list(new QueryWrapper().eq("orders_id", orders.getOrdersId()).last(" order by artificer_time_id")); + if(artificerTimeList!=null && artificerTimeList.size()>0){ + for(int i=0; i() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", orders.getOrdersId()) + .last("limit 1")); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + Map map = getTaskTimeIncudeOrders(orders.getDuration(),orders.getServeTime(),value1,orders.getTripWay(),orders.getArtificerId(),orders.getOldOrdersId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOldOrdersId())); + //插入技师占用时间表新订单 + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + //插入技师占用时间表原订单 + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOldOrdersId()); + } + }else{ + String serveTime = orders.getServeTime(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( new QueryWrapper() .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); if (artificerTime != null) { return Result.error("预约时间正忙,请更换其他时间!"); } - } - - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - calendar.setTime(parse); - for (int j = 0; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf1.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = new ArtificerTime(); - artificerTime.setArtificerId(orders.getArtificerId()); - artificerTime.setArtificerDate(date); - artificerTime.setArtificerTime(time); - artificerTime.setClassify(1); - artificerTime.setOrdersId(orders.getParentId()); - artificerTime.setCreateTime(DateUtils.format(new Date())); - artificerTimeService.save(artificerTime); + Map map = getTaskTime(orders.getDuration(),orders.getServeTime(),value1,orders.getTripWay(),orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); } } - } SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // if (type == 2) { @@ -4758,55 +5036,107 @@ public class OrdersServiceImpl extends ServiceImpl implements duration = massageType.getDuration(); String value1 = commonInfoService.findOne(395).getValue(); if ("是".equals(value1)) { - String value = commonInfoService.findOne(392).getValue(); - int minute = Integer.parseInt(value); - int i = 1; - if (duration % minute == 0) { - i = duration / minute; - } else { - i = duration / minute; - i++; - } ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); - String date = null; - String time = null; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf.parse(serveTime); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(parse); - for (int j = 0; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = artificerTimeService.getOne( + Map map = getAddTaskTime(orders.getDuration(),serveTime,value1,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + insertArtificerTime((ArrayList)map.get("timeList"),orders1.getArtificerId(),orders1.getOrdersId()); + } + }else{ + String value1 = commonInfoService.findOne(395).getValue(); + if ("是".equals(value1)) { + if(orders.getIsSupplement() != null){ + if(orders.getIsSupplement() == 1){ + String serveTime = orders.getServeTime(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + Map map = getTaskTime(orders.getDuration(),orders.getServeTime(),value1,orders.getTripWay(),orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + }else if(orders.getIsSupplement() == 2){ + Orders oldOrders = baseMapper.selectById(orders.getOrdersId()); + int timeDifference = orders.getDuration()-oldOrders.getDuration(); + if(timeDifference>0){ + ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getOrdersId()).last(" order by artificer_time_id desc limit 1 ")); + String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); + Map map = getAddTaskTime(timeDifference,serveTime,value1,oldOrders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + //技师占用时间表插入新订单号的多出来的服务时间 + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + }else{ + //技师占用时间表插入新订单号的同时间 + List artificerTimeList = artificerTimeService.list(new QueryWrapper().eq("orders_id", orders.getOrdersId()).last(" order by artificer_time_id")); + if(artificerTimeList!=null && artificerTimeList.size()>0){ + for(int i=0; i() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", orders.getOrdersId()) + .last("limit 1")); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + Map map = getTaskTimeIncudeOrders(orders.getDuration(),orders.getServeTime(),value1,orders.getTripWay(),orders.getArtificerId(),orders.getOldOrdersId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOldOrdersId())); + //插入技师占用时间表新订单 + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + //插入技师占用时间表原订单 + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOldOrdersId()); + } + }else{ + String serveTime = orders.getServeTime(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( new QueryWrapper() .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); if (artificerTime != null) { return Result.error("预约时间正忙,请更换其他时间!"); } - } - - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - calendar.setTime(parse); - for (int j = 0; j < i; j++) { - calendar.add(Calendar.MINUTE, minute); - String format = sdf1.format(calendar.getTime()); - date = format.substring(0, 10); - time = format.substring(11, 16); - artificerTime = new ArtificerTime(); - artificerTime.setArtificerId(orders.getArtificerId()); - artificerTime.setArtificerDate(date); - artificerTime.setArtificerTime(time); - artificerTime.setClassify(1); - artificerTime.setOrdersId(orders.getParentId()); - artificerTime.setCreateTime(DateUtils.format(new Date())); - artificerTimeService.save(artificerTime); + Map map = getTaskTime(orders.getDuration(),orders.getServeTime(),value1,orders.getTripWay(),orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); } } - } SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // if (type == 2) { @@ -5235,8 +5565,6 @@ public class OrdersServiceImpl extends ServiceImpl implements @Transactional @Override public Result accomplishOrders(Long ordersId, Integer type, String accomplishLongitude, String accomplishLatitude,String jsFwcn,String jsPjtag,String jsTsbz,String earlyFinishReason) { - log.error("accomplishOrders:4881:"+accomplishLongitude); - log.error("accomplishOrders:4881:"+accomplishLatitude); try { Orders orders = baseMapper.selectById(ordersId); if (StringUtil.isEmpty(accomplishLatitude)) { @@ -5258,8 +5586,6 @@ public class OrdersServiceImpl extends ServiceImpl implements GlobalCoordinates target = new GlobalCoordinates(Double.parseDouble(accomplishLatitude), Double.parseDouble(accomplishLongitude)); Integer distances = (int) LonLatUtil.getDistanceMeter(source, target, Ellipsoid.Sphere); String value = commonInfoService.findOne(373).getValue(); - log.error("accomplishOrders:4881:"+distances); - log.error("accomplishOrders:4881:"+value); if (distances < Integer.parseInt(value)) { return Result.error("请离开当前位置" + value + "m后点击完成!"); } @@ -5406,6 +5732,7 @@ public class OrdersServiceImpl extends ServiceImpl implements userMoneyDetailsService.save(userMoneyDetails); } } + orders.setEndTimes(DateUtils.format(new Date())); orders.setJsFwcn(jsFwcn); orders.setJsPjtag(jsPjtag); @@ -5413,6 +5740,21 @@ public class OrdersServiceImpl extends ServiceImpl implements orders.setEarlyFinishReason(earlyFinishReason); //修改订单表类型 baseMapper.updateById(orders); + + //删除技师占用时间表完成时间后的数据 + String afterTime = commonInfoService.findOne(458).getValue(); + int afterTimeInt = Integer.parseInt(afterTime); + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.MINUTE, afterTimeInt); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + String date1 = format.substring(0, 10); + String time1 = format.substring(11, 16); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("orders_id",orders.getOrdersId()); + queryWrapper.ge("artificer_date",date1); + queryWrapper.gt("artificer_time",time1); + artificerTimeService.remove(queryWrapper); + //修改订单下所有加钟的状态为待评价 UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("parent_id", orders.getOrdersId()); @@ -5652,6 +5994,21 @@ public class OrdersServiceImpl extends ServiceImpl implements orders.setStatus(5); //修改订单表类型 baseMapper.updateById(orders); + + //删除技师占用时间表完成时间后的数据 + String afterTime = commonInfoService.findOne(458).getValue(); + int afterTimeInt = Integer.parseInt(afterTime); + Calendar calendar = Calendar.getInstance(); + calendar.add(Calendar.MINUTE, afterTimeInt); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + String date1 = format.substring(0, 10); + String time1 = format.substring(11, 16); + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("orders_id",orders.getOrdersId()); + queryWrapper.ge("artificer_date",date1); + queryWrapper.gt("artificer_time",time1); + artificerTimeService.remove(queryWrapper); + //修改订单下所有加钟的状态为待评价 UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.eq("parent_id", orders.getOrdersId()); diff --git a/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java b/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java index f8ee3ce..eb6028f 100644 --- a/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java +++ b/src/main/java/com/sqx/modules/pay/controller/app/AliPayController.java @@ -147,9 +147,363 @@ public class AliPayController { private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + /** + * 获取总花费时间 + * @param duration 服务时长 + * @param serveTime 服务时间 + * @param value1 是否开启忙时 + * @param tripWay 出行方式 + * @param artificerId 技师ID + * @return + */ + private Map getTaskTime(Integer duration,String serveTime,String value1,Integer tripWay,Long artificerId){ + Map map = new HashMap<>(); + + String beforeTime = commonInfoService.findOne(457).getValue(); + int beforeTimeInt = Integer.parseInt(beforeTime); + + String afterTime = commonInfoService.findOne(458).getValue(); + int afterTimeInt = Integer.parseInt(afterTime); + + String jyValue = commonInfoService.findOne(392).getValue(); + int jyMinuteInt = Integer.parseInt(jyValue); + + int cxsjInt = 0; + if(Objects.nonNull(tripWay)){ + if(tripWay.equals(1)){ + String cxsj = commonInfoService.findOne(454).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + if(tripWay.equals(2)){ + String cxsj = commonInfoService.findOne(455).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + if(tripWay.equals(3)){ + String cxsj = commonInfoService.findOne(456).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + } + beforeTimeInt = beforeTimeInt + cxsjInt; //服务时间前锁单时间 + int minute=0; + int i = 0; + int f = 0; + int a = 0; + if ("是".equals(value1)) { + minute = jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + if (beforeTimeInt % minute == 0) { + f = beforeTimeInt / minute; + } else { + f = beforeTimeInt / minute; + f++; + } + if (afterTimeInt % minute == 0) { + a = afterTimeInt / minute; + } else { + a = afterTimeInt / minute; + a++; + } + } + List allTime = new ArrayList<>(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + Date parse = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm"); + //服务时间前锁单时间判断 + if (f > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < f; j++) { + calendar.add(Calendar.MINUTE, -minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + //服务时间后锁单时间判断 + if (i > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + //服务中锁单时间判断 + if (a > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + calendar.add(Calendar.MINUTE, minute*i); + for (int j = 0; j < a; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + allTime.sort(Comparator.naturalOrder()); + map.put("timeList",allTime); + map.put("code","0"); + return map; + } + + /** + * 获取总花费时间,包含当前订单中得时间 + * @param duration 服务时长 + * @param serveTime 服务时间 + * @param value1 是否开启忙时 + * @param tripWay 出行方式 + * @param artificerId 技师ID + * @param ordersId 订单ID + * @return + */ + private Map getTaskTimeIncudeOrders(Integer duration,String serveTime,String value1,Integer tripWay,Long artificerId,Long ordersId){ + Map map = new HashMap<>(); + + String beforeTime = commonInfoService.findOne(457).getValue(); + int beforeTimeInt = Integer.parseInt(beforeTime); + + String afterTime = commonInfoService.findOne(458).getValue(); + int afterTimeInt = Integer.parseInt(afterTime); + + String jyValue = commonInfoService.findOne(392).getValue(); + int jyMinuteInt = Integer.parseInt(jyValue); + + int cxsjInt = 0; + if(Objects.nonNull(tripWay)){ + if(tripWay.equals(1)){ + String cxsj = commonInfoService.findOne(454).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + if(tripWay.equals(2)){ + String cxsj = commonInfoService.findOne(455).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + if(tripWay.equals(3)){ + String cxsj = commonInfoService.findOne(456).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + } + beforeTimeInt = beforeTimeInt + cxsjInt; //服务时间前锁单时间 + int minute=0; + int i = 0; + int f = 0; + int a = 0; + if ("是".equals(value1)) { + minute = jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + if (beforeTimeInt % minute == 0) { + f = beforeTimeInt / minute; + } else { + f = beforeTimeInt / minute; + f++; + } + if (afterTimeInt % minute == 0) { + a = afterTimeInt / minute; + } else { + a = afterTimeInt / minute; + a++; + } + } + List allTime = new ArrayList<>(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + Date parse = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm"); + //服务时间前锁单时间判断 + if (f > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < f; j++) { + calendar.add(Calendar.MINUTE, -minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", ordersId) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + //服务时间后锁单时间判断 + if (i > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", ordersId) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + //服务中锁单时间判断 + if (a > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + calendar.add(Calendar.MINUTE, minute*i); + for (int j = 0; j < a; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", ordersId) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + allTime.sort(Comparator.naturalOrder()); + map.put("timeList",allTime); + map.put("code","0"); + return map; + } + + /** + * 获取加钟总花费时间 + * @param duration 服务时长 + * @param serveTime 服务时间 + * @param value1 是否开启忙时 + * @param artificerId 技师ID + * @return + */ + private Map getAddTaskTime(Integer duration,String serveTime,String value1,Long artificerId){ + Map map = new HashMap<>(); + String jyValue = commonInfoService.findOne(392).getValue(); + int jyMinuteInt = Integer.parseInt(jyValue); + int minute=0; + int i = 0; + if ("是".equals(value1)) { + minute = jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + } + List allTime = new ArrayList<>(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + Date parse = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm"); + //服务时间后锁单时间判断 + if (i > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + allTime.sort(Comparator.naturalOrder()); + map.put("timeList",allTime); + map.put("code","0"); + return map; + } + + /** + * 插入技师占用时间表 + * @param allTime 时间集合 + * @param artificerId 技师ID + * @param ordersId 订单ID + */ + private void insertArtificerTime(List allTime,Long artificerId,Long ordersId){ + if(allTime!=null && allTime.size()>0) { + for (int i=0; i params = new HashMap(); Map requestParams = request.getParameterMap(); @@ -165,6 +519,7 @@ public class AliPayController { //valueStr = new String(valueStr.getBytes("ISO-8859-1"), "utf-8"); params.put(name, valueStr); } + String resultStr = "fail"; try { log.info("回调成功!!!"); boolean flag = AlipaySignature.rsaCheckV1(params, commonInfoService.findOne(64).getValue(), AliPayConstants.CHARSET, "RSA2"); @@ -326,49 +681,49 @@ public class AliPayController { ordersService.updateById(orders); if(orders.getParentId()!=null && orders.getParentId()!=0){ - String value1 = commonInfoService.findOne(395).getValue(); - OrdersMassage ordersMassage = ordersMassageService.getOne(new QueryWrapper().eq("orders_id", orders.getOrdersId())); - MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); - Integer duration=massageType.getDuration(); Calendar calendar=Calendar.getInstance(); - if("是".equals(value1)){ - - ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); - String serveTime = artificerTime.getArtificerDate()+" "+artificerTime.getArtificerTime(); - String value = commonInfoService.findOne(392).getValue(); - int minute = Integer.parseInt(value); - int i=1; - if(duration%minute==0){ - i=duration/minute; - }else{ - i=duration/minute; - i++; - } - - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = null; - try { - parse = sdf1.parse(serveTime); - } catch (ParseException e) { - e.printStackTrace(); - } - - calendar.setTime(parse); - for(int j=0;j().eq("orders_id", orders.getOrdersId())); +// MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); +// Integer duration=massageType.getDuration(); +// if("是".equals(value1)){ +// +// ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); +// String serveTime = artificerTime.getArtificerDate()+" "+artificerTime.getArtificerTime(); +// String value = commonInfoService.findOne(392).getValue(); +// int minute = Integer.parseInt(value); +// int i=1; +// if(duration%minute==0){ +// i=duration/minute; +// }else{ +// i=duration/minute; +// i++; +// } +// +// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); +// Date parse = null; +// try { +// parse = sdf1.parse(serveTime); +// } catch (ParseException e) { +// e.printStackTrace(); +// } +// +// calendar.setTime(parse); +// for(int j=0;j().eq("orders_id", orders1.getOrdersId())); - massageType = massageTypeService.getById(ordersMassage.getMassageId()); - duration=massageType.getDuration(); +// ordersMassage = ordersMassageService.getOne(new QueryWrapper().eq("orders_id", orders1.getOrdersId())); +// massageType = massageTypeService.getById(ordersMassage.getMassageId()); +// duration=massageType.getDuration(); String endTime = orders1.getEndTime(); Date date = DateUtils.stringToDate(endTime, "yyyy-MM-dd HH:mm:ss"); calendar=Calendar.getInstance(); if(date.getTime()>System.currentTimeMillis()){ calendar.setTime(date); } - calendar.add(Calendar.MINUTE,duration); + calendar.add(Calendar.MINUTE,orders.getDuration()); orders1.setEndTime(endTime); } orders1.setAddPrice(orders.getPrice()); @@ -775,13 +1130,24 @@ public class AliPayController { } } } + } else { + String outTradeNo = params.get("out_trade_no"); + PayDetails payDetails = payDetailsDao.selectByOrderId(outTradeNo); + if (payDetails.getState() == 0) { + if(payDetails.getType()==1){ + artificerTimeService.remove(new QueryWrapper().eq("orders_id", payDetails.getOrderId())); + payDetailsDao.deleteById(payDetails.getId()); + } + } } - + resultStr = "success"; } } catch (AlipayApiException e) { + resultStr = "fail"; e.printStackTrace(); log.info("回调验证失败!!!"); } + return resultStr; } @Login @@ -799,51 +1165,121 @@ public class AliPayController { if(orders.getParentId()!=null && orders.getParentId()!=0){ Orders orders1 = ordersDao.selectById(orders.getParentId()); OrdersMassage ordersMassage = ordersMassageService.getOne(new QueryWrapper().eq("orders_id", orders1.getOrdersId())); - MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); - if(massageType.getAddNum()==null || massageType.getAddNum()==0){ + MassageType massageType = null; + if(orders1.getUserPackageDetailId() !=null){ + UserPackageDetail userPackageDetail = userPackageDetailService.getById(ordersMassage.getMassageId()); + massageType = massageTypeService.getById(userPackageDetail.getMassageTypeId()); + }else{ + massageType = massageTypeService.getById(ordersMassage.getMassageId()); + } + if (massageType.getAddNum() == null || massageType.getAddNum() == 0) { return Result.error("当前项目不允许加钟!"); - }else if(massageType.getAddNum()>0){ - if(orders1.getAddNum()!=null && orders1.getAddNum()>=massageType.getAddNum()){ + } else if (massageType.getAddNum() > 0) { + if (orders1.getAddNum() != null && orders1.getAddNum().intValue() >= massageType.getAddNum().intValue()) { return Result.error("当前项目已超过最大加钟次数!"); } } - Integer duration=massageType.getDuration(); String value1 = commonInfoService.findOne(395).getValue(); - if("是".equals(value1)){ - String value = commonInfoService.findOne(392).getValue(); - int minute = Integer.parseInt(value); - int i=1; - if(duration%minute==0){ - i=duration/minute; - }else{ - i=duration/minute; - i++; - } + if ("是".equals(value1)) { ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); - String serveTime = artificerTime.getArtificerDate()+" "+artificerTime.getArtificerTime(); - String date=null; - String time=null; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = null; - try { - parse = sdf.parse(serveTime); - } catch (ParseException e) { - e.printStackTrace(); + String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); + Map map = getAddTaskTime(orders.getDuration(),serveTime,value1,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); } - Calendar calendar=Calendar.getInstance(); - calendar.setTime(parse); - for(int j=0;j() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + Map map = getTaskTime(orders.getDuration(),orders.getServeTime(),value1,orders.getTripWay(),orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + }else if(orders.getIsSupplement() == 2){ + Orders oldOrders = ordersDao.selectById(orders.getOrdersId()); + int timeDifference = orders.getDuration()-oldOrders.getDuration(); + if(timeDifference>0){ + ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getOrdersId()).last(" order by artificer_time_id desc limit 1 ")); + String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); + Map map = getAddTaskTime(timeDifference,serveTime,value1,oldOrders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + //技师占用时间表插入新订单号的多出来的服务时间 + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + }else{ + //技师占用时间表插入新订单号的同时间 + List artificerTimeList = artificerTimeService.list(new QueryWrapper().eq("orders_id", orders.getOrdersId()).last(" order by artificer_time_id")); + if(artificerTimeList!=null && artificerTimeList.size()>0){ + for(int i=0; i() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", orders.getOrdersId()) + .last("limit 1")); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + Map map = getTaskTimeIncudeOrders(orders.getDuration(),orders.getServeTime(),value1,orders.getTripWay(),orders.getArtificerId(),orders.getOldOrdersId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOldOrdersId())); + //插入技师占用时间表新订单 + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + //插入技师占用时间表原订单 + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOldOrdersId()); + } + }else{ + String serveTime = orders.getServeTime(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( new QueryWrapper() .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if(artificerTime!=null){ + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { return Result.error("预约时间正忙,请更换其他时间!"); } + Map map = getTaskTime(orders.getDuration(),orders.getServeTime(),value1,orders.getTripWay(),orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); } } } @@ -1175,49 +1611,49 @@ public class AliPayController { ordersService.updateById(orders); if(orders.getParentId()!=null && orders.getParentId()!=0){ - String value1 = commonInfoService.findOne(395).getValue(); - OrdersMassage ordersMassage = ordersMassageService.getOne(new QueryWrapper().eq("orders_id", orders.getOrdersId())); - MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); - Integer duration=massageType.getDuration(); Calendar calendar=Calendar.getInstance(); - if("是".equals(value1)){ - - ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); - String serveTime = artificerTime.getArtificerDate()+" "+artificerTime.getArtificerTime(); - String value = commonInfoService.findOne(392).getValue(); - int minute = Integer.parseInt(value); - int i=1; - if(duration%minute==0){ - i=duration/minute; - }else{ - i=duration/minute; - i++; - } - - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = null; - try { - parse = sdf1.parse(serveTime); - } catch (ParseException e) { - e.printStackTrace(); - } - - calendar.setTime(parse); - for(int j=0;j().eq("orders_id", orders.getOrdersId())); +// MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); +// Integer duration=massageType.getDuration(); +// if("是".equals(value1)){ +// +// ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); +// String serveTime = artificerTime.getArtificerDate()+" "+artificerTime.getArtificerTime(); +// String value = commonInfoService.findOne(392).getValue(); +// int minute = Integer.parseInt(value); +// int i=1; +// if(duration%minute==0){ +// i=duration/minute; +// }else{ +// i=duration/minute; +// i++; +// } +// +// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); +// Date parse = null; +// try { +// parse = sdf1.parse(serveTime); +// } catch (ParseException e) { +// e.printStackTrace(); +// } +// +// calendar.setTime(parse); +// for(int j=0;j().eq("orders_id", orders1.getOrdersId())); - massageType = massageTypeService.getById(ordersMassage.getMassageId()); - duration=massageType.getDuration(); +// ordersMassage = ordersMassageService.getOne(new QueryWrapper().eq("orders_id", orders1.getOrdersId())); +// massageType = massageTypeService.getById(ordersMassage.getMassageId()); +// duration=massageType.getDuration(); String endTime = orders1.getEndTime(); Date date = DateUtils.stringToDate(endTime, "yyyy-MM-dd HH:mm:ss"); calendar=Calendar.getInstance(); if(date.getTime()>System.currentTimeMillis()){ calendar.setTime(date); } - calendar.add(Calendar.MINUTE,duration); + calendar.add(Calendar.MINUTE,orders.getDuration()); orders1.setEndTime(endTime); } orders1.setAddPrice(orders.getPrice()); diff --git a/src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java b/src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java index 97cb453..e92d77b 100644 --- a/src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java +++ b/src/main/java/com/sqx/modules/pay/service/impl/WxServiceImpl.java @@ -138,6 +138,360 @@ public class WxServiceImpl implements WxService { private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + /** + * 获取总花费时间 + * @param duration 服务时长 + * @param serveTime 服务时间 + * @param value1 是否开启忙时 + * @param tripWay 出行方式 + * @param artificerId 技师ID + * @return + */ + private Map getTaskTime(Integer duration,String serveTime,String value1,Integer tripWay,Long artificerId){ + Map map = new HashMap<>(); + + String beforeTime = commonInfoService.findOne(457).getValue(); + int beforeTimeInt = Integer.parseInt(beforeTime); + + String afterTime = commonInfoService.findOne(458).getValue(); + int afterTimeInt = Integer.parseInt(afterTime); + + String jyValue = commonInfoService.findOne(392).getValue(); + int jyMinuteInt = Integer.parseInt(jyValue); + + int cxsjInt = 0; + if(Objects.nonNull(tripWay)){ + if(tripWay.equals(1)){ + String cxsj = commonInfoService.findOne(454).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + if(tripWay.equals(2)){ + String cxsj = commonInfoService.findOne(455).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + if(tripWay.equals(3)){ + String cxsj = commonInfoService.findOne(456).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + } + beforeTimeInt = beforeTimeInt + cxsjInt; //服务时间前锁单时间 + int minute=0; + int i = 0; + int f = 0; + int a = 0; + if ("是".equals(value1)) { + minute = jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + if (beforeTimeInt % minute == 0) { + f = beforeTimeInt / minute; + } else { + f = beforeTimeInt / minute; + f++; + } + if (afterTimeInt % minute == 0) { + a = afterTimeInt / minute; + } else { + a = afterTimeInt / minute; + a++; + } + } + List allTime = new ArrayList<>(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + Date parse = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm"); + //服务时间前锁单时间判断 + if (f > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < f; j++) { + calendar.add(Calendar.MINUTE, -minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + //服务时间后锁单时间判断 + if (i > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + //服务中锁单时间判断 + if (a > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + calendar.add(Calendar.MINUTE, minute*i); + for (int j = 0; j < a; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + allTime.sort(Comparator.naturalOrder()); + map.put("timeList",allTime); + map.put("code","0"); + return map; + } + + /** + * 获取总花费时间,包含当前订单中得时间 + * @param duration 服务时长 + * @param serveTime 服务时间 + * @param value1 是否开启忙时 + * @param tripWay 出行方式 + * @param artificerId 技师ID + * @param ordersId 订单ID + * @return + */ + private Map getTaskTimeIncudeOrders(Integer duration,String serveTime,String value1,Integer tripWay,Long artificerId,Long ordersId){ + Map map = new HashMap<>(); + + String beforeTime = commonInfoService.findOne(457).getValue(); + int beforeTimeInt = Integer.parseInt(beforeTime); + + String afterTime = commonInfoService.findOne(458).getValue(); + int afterTimeInt = Integer.parseInt(afterTime); + + String jyValue = commonInfoService.findOne(392).getValue(); + int jyMinuteInt = Integer.parseInt(jyValue); + + int cxsjInt = 0; + if(Objects.nonNull(tripWay)){ + if(tripWay.equals(1)){ + String cxsj = commonInfoService.findOne(454).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + if(tripWay.equals(2)){ + String cxsj = commonInfoService.findOne(455).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + if(tripWay.equals(3)){ + String cxsj = commonInfoService.findOne(456).getValue(); + cxsjInt = Integer.parseInt(cxsj); + } + } + beforeTimeInt = beforeTimeInt + cxsjInt; //服务时间前锁单时间 + int minute=0; + int i = 0; + int f = 0; + int a = 0; + if ("是".equals(value1)) { + minute = jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + if (beforeTimeInt % minute == 0) { + f = beforeTimeInt / minute; + } else { + f = beforeTimeInt / minute; + f++; + } + if (afterTimeInt % minute == 0) { + a = afterTimeInt / minute; + } else { + a = afterTimeInt / minute; + a++; + } + } + List allTime = new ArrayList<>(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + Date parse = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm"); + //服务时间前锁单时间判断 + if (f > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < f; j++) { + calendar.add(Calendar.MINUTE, -minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", ordersId) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + //服务时间后锁单时间判断 + if (i > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", ordersId) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + //服务中锁单时间判断 + if (a > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + calendar.add(Calendar.MINUTE, minute*i); + for (int j = 0; j < a; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", ordersId) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + allTime.sort(Comparator.naturalOrder()); + map.put("timeList",allTime); + map.put("code","0"); + return map; + } + + /** + * 获取加钟总花费时间 + * @param duration 服务时长 + * @param serveTime 服务时间 + * @param value1 是否开启忙时 + * @param artificerId 技师ID + * @return + */ + private Map getAddTaskTime(Integer duration,String serveTime,String value1,Long artificerId){ + Map map = new HashMap<>(); + String jyValue = commonInfoService.findOne(392).getValue(); + int jyMinuteInt = Integer.parseInt(jyValue); + int minute=0; + int i = 0; + if ("是".equals(value1)) { + minute = jyMinuteInt; + if (duration % minute == 0) { + i = duration / minute; + } else { + i = duration / minute; + i++; + } + } + List allTime = new ArrayList<>(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + Date parse = DateUtils.stringToDate(serveTime,"yyyy-MM-dd HH:mm"); + //服务时间后锁单时间判断 + if (i > 0) { + Calendar calendar = Calendar.getInstance(); + calendar.setTime(parse); + for (int j = 0; j < i; j++) { + calendar.add(Calendar.MINUTE, minute); + String format = DateUtils.format(calendar.getTime(),"yyyy-MM-dd HH:mm"); + allTime.add(format); + date = format.substring(0, 10); + time = format.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", artificerId) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + map.put("code","1"); + } + } + } + allTime.sort(Comparator.naturalOrder()); + map.put("timeList",allTime); + map.put("code","0"); + return map; + } + + /** + * 插入技师占用时间表 + * @param allTime 时间集合 + * @param artificerId 技师ID + * @param ordersId 订单ID + */ + private void insertArtificerTime(List allTime,Long artificerId,Long ordersId){ + if(allTime!=null && allTime.size()>0) { + for (int i=0; i().eq("orders_id", orders1.getOrdersId())); - MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); - if(massageType.getAddNum()==null || massageType.getAddNum()==0){ + MassageType massageType = null; + if(orders1.getUserPackageDetailId() !=null){ + UserPackageDetail userPackageDetail = userPackageDetailService.getById(ordersMassage.getMassageId()); + massageType = massageTypeService.getById(userPackageDetail.getMassageTypeId()); + }else{ + massageType = massageTypeService.getById(ordersMassage.getMassageId()); + } + if (massageType.getAddNum() == null || massageType.getAddNum() == 0) { return Result.error("当前项目不允许加钟!"); - }else if(massageType.getAddNum()>0){ - if(orders1.getAddNum()!=null && orders1.getAddNum()>=massageType.getAddNum()){ + } else if (massageType.getAddNum() > 0) { + if (orders1.getAddNum() != null && orders1.getAddNum().intValue() >= massageType.getAddNum().intValue()) { return Result.error("当前项目已超过最大加钟次数!"); } } - Integer duration=massageType.getDuration(); String value1 = commonInfoService.findOne(395).getValue(); - if("是".equals(value1)){ - String value = commonInfoService.findOne(392).getValue(); - int minute = Integer.parseInt(value); - int i=1; - if(duration%minute==0){ - i=duration/minute; - }else{ - i=duration/minute; - i++; - } + if ("是".equals(value1)) { ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); - String serveTime = artificerTime.getArtificerDate()+" "+artificerTime.getArtificerTime(); - String date=null; - String time=null; - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf.parse(serveTime); - Calendar calendar=Calendar.getInstance(); - calendar.setTime(parse); - for(int j=0;j map = getAddTaskTime(orders.getDuration(),serveTime,value1,orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + } + }else{ + String value1 = commonInfoService.findOne(395).getValue(); + if ("是".equals(value1)) { + if(orders.getIsSupplement() != null){ + if(orders.getIsSupplement() == 1){ + String serveTime = orders.getServeTime(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( + new QueryWrapper() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + Map map = getTaskTime(orders.getDuration(),orders.getServeTime(),value1,orders.getTripWay(),orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + }else if(orders.getIsSupplement() == 2){ + Orders oldOrders = ordersDao.selectById(orders.getOrdersId()); + int timeDifference = orders.getDuration()-oldOrders.getDuration(); + if(timeDifference>0){ + ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getOrdersId()).last(" order by artificer_time_id desc limit 1 ")); + String serveTime = artificerTime.getArtificerDate() + " " + artificerTime.getArtificerTime(); + Map map = getAddTaskTime(timeDifference,serveTime,value1,oldOrders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + //技师占用时间表插入新订单号的多出来的服务时间 + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + }else{ + //技师占用时间表插入新订单号的同时间 + List artificerTimeList = artificerTimeService.list(new QueryWrapper().eq("orders_id", orders.getOrdersId()).last(" order by artificer_time_id")); + if(artificerTimeList!=null && artificerTimeList.size()>0){ + for(int i=0; i() + .eq("artificer_id", orders.getArtificerId()) + .eq("artificer_date", date) + .eq("artificer_time", time) + .ne("orders_id", orders.getOrdersId()) + .last("limit 1")); + if (artificerTime != null) { + return Result.error("预约时间正忙,请更换其他时间!"); + } + Map map = getTaskTimeIncudeOrders(orders.getDuration(),orders.getServeTime(),value1,orders.getTripWay(),orders.getArtificerId(),orders.getOldOrdersId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + //删除技师占用时间表数据 + artificerTimeService.remove(new QueryWrapper().eq("orders_id", orders.getOldOrdersId())); + //插入技师占用时间表新订单 + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); + //插入技师占用时间表原订单 + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOldOrdersId()); + } + }else{ + String serveTime = orders.getServeTime(); + String date = serveTime.substring(0, 10); + String time = serveTime.substring(11, 16); + ArtificerTime artificerTime = artificerTimeService.getOne( new QueryWrapper() .eq("artificer_id", orders.getArtificerId()) - .eq("artificer_date", date).eq("artificer_time", time)); - if(artificerTime!=null){ + .eq("artificer_date", date) + .eq("artificer_time", time) + .last("limit 1")); + if (artificerTime != null) { return Result.error("预约时间正忙,请更换其他时间!"); } + Map map = getTaskTime(orders.getDuration(),orders.getServeTime(),value1,orders.getTripWay(),orders.getArtificerId()); + if(map.get("code").toString().equals("1")){ + return Result.error("预约时间正忙,请更换其他时间!"); + } + insertArtificerTime((ArrayList)map.get("timeList"),orders.getArtificerId(),orders.getOrdersId()); } } } + PayDetails payDetails1 = payDetailsDao.selectByOrderId(orders.getOrdersNo()); if(payDetails1==null){ PayDetails payDetails = new PayDetails(); @@ -781,43 +1211,43 @@ public class WxServiceImpl implements WxService { ordersService.updateById(orders); if(orders.getParentId()!=null && orders.getParentId()!=0){ - String value1 = commonInfoService.findOne(395).getValue(); - OrdersMassage ordersMassage = ordersMassageService.getOne(new QueryWrapper().eq("orders_id", orders.getOrdersId())); - MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); - Integer duration=massageType.getDuration(); Calendar calendar=Calendar.getInstance(); - if("是".equals(value1)){ - ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); - String serveTime = artificerTime.getArtificerDate()+" "+artificerTime.getArtificerTime(); - String value = commonInfoService.findOne(392).getValue(); - int minute = Integer.parseInt(value); - int i=1; - if(duration%minute==0){ - i=duration/minute; - }else{ - i=duration/minute; - i++; - } - - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf1.parse(serveTime); - - calendar.setTime(parse); - for(int j=0;j().eq("orders_id", orders.getOrdersId())); +// MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); +// Integer duration=massageType.getDuration(); +// if("是".equals(value1)){ +// ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); +// String serveTime = artificerTime.getArtificerDate()+" "+artificerTime.getArtificerTime(); +// String value = commonInfoService.findOne(392).getValue(); +// int minute = Integer.parseInt(value); +// int i=1; +// if(duration%minute==0){ +// i=duration/minute; +// }else{ +// i=duration/minute; +// i++; +// } +// +// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); +// Date parse = sdf1.parse(serveTime); +// +// calendar.setTime(parse); +// for(int j=0;j().eq("orders_id", orders1.getOrdersId())); - massageType = massageTypeService.getById(ordersMassage.getMassageId()); - duration=massageType.getDuration(); +// ordersMassage = ordersMassageService.getOne(new QueryWrapper().eq("orders_id", orders1.getOrdersId())); +// massageType = massageTypeService.getById(ordersMassage.getMassageId()); +// duration=massageType.getDuration(); String endTime = orders1.getEndTime(); Date date = DateUtils.stringToDate(endTime, "yyyy-MM-dd HH:mm:ss"); calendar=Calendar.getInstance(); if(date.getTime()>System.currentTimeMillis()){ calendar.setTime(date); } - calendar.add(Calendar.MINUTE,duration); + calendar.add(Calendar.MINUTE,orders.getDuration()); orders1.setEndTime(endTime); } orders1.setAddPrice(orders.getPrice()); @@ -1419,43 +1849,43 @@ public class WxServiceImpl implements WxService { ordersService.updateById(orders); if(orders.getParentId()!=null && orders.getParentId()!=0){ - String value1 = commonInfoService.findOne(395).getValue(); - OrdersMassage ordersMassage = ordersMassageService.getOne(new QueryWrapper().eq("orders_id", orders.getOrdersId())); - MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); - Integer duration=massageType.getDuration(); Calendar calendar=Calendar.getInstance(); - if("是".equals(value1)){ - ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); - String serveTime = artificerTime.getArtificerDate()+" "+artificerTime.getArtificerTime(); - String value = commonInfoService.findOne(392).getValue(); - int minute = Integer.parseInt(value); - int i=1; - if(duration%minute==0){ - i=duration/minute; - }else{ - i=duration/minute; - i++; - } - - SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); - Date parse = sdf1.parse(serveTime); - - calendar.setTime(parse); - for(int j=0;j().eq("orders_id", orders.getOrdersId())); +// MassageType massageType = massageTypeService.getById(ordersMassage.getMassageId()); +// Integer duration=massageType.getDuration(); +// if("是".equals(value1)){ +// ArtificerTime artificerTime = artificerTimeService.getOne(new QueryWrapper().eq("orders_id", orders.getParentId()).last(" order by artificer_time_id desc limit 1 ")); +// String serveTime = artificerTime.getArtificerDate()+" "+artificerTime.getArtificerTime(); +// String value = commonInfoService.findOne(392).getValue(); +// int minute = Integer.parseInt(value); +// int i=1; +// if(duration%minute==0){ +// i=duration/minute; +// }else{ +// i=duration/minute; +// i++; +// } +// +// SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm"); +// Date parse = sdf1.parse(serveTime); +// +// calendar.setTime(parse); +// for(int j=0;j().eq("orders_id", orders1.getOrdersId())); - massageType = massageTypeService.getById(ordersMassage.getMassageId()); - duration=massageType.getDuration(); +// ordersMassage = ordersMassageService.getOne(new QueryWrapper().eq("orders_id", orders1.getOrdersId())); +// massageType = massageTypeService.getById(ordersMassage.getMassageId()); +// duration=massageType.getDuration(); String endTime = orders1.getEndTime(); Date date = DateUtils.stringToDate(endTime, "yyyy-MM-dd HH:mm:ss"); calendar=Calendar.getInstance(); if(date.getTime()>System.currentTimeMillis()){ calendar.setTime(date); } - calendar.add(Calendar.MINUTE,duration); + calendar.add(Calendar.MINUTE,orders.getAddTime()); orders1.setEndTime(endTime); } orders1.setAddPrice(orders.getPrice()); @@ -1870,6 +2300,21 @@ public class WxServiceImpl implements WxService { xmlBack = "" + "" + "" + " "; } } else { + if (out_trade_no != null) { + //支付失败或者取消,删除技师占用表数据 + PayDetails payDetails = payDetailsDao.selectByOrderId(out_trade_no); + if (payDetails.getState() == 0){ + if(payDetails.getType()==1){ + artificerTimeService.remove(new QueryWrapper().eq("orders_id", payDetails.getOrderId())); + payDetailsDao.deleteById(payDetails.getId()); + System.err.println("微信手机支付回调成功订单号:" + out_trade_no + ""); + xmlBack = "" + "" + "" + " "; + } + } + }else { + System.err.println("微信手机支付回调成功订单号:" + out_trade_no + ""); + xmlBack = "" + "" + "" + " "; + } } return xmlBack; } else { diff --git a/src/main/resources/mapper/artificer/OrdersDao.xml b/src/main/resources/mapper/artificer/OrdersDao.xml index de34441..2307fac 100644 --- a/src/main/resources/mapper/artificer/OrdersDao.xml +++ b/src/main/resources/mapper/artificer/OrdersDao.xml @@ -1142,7 +1142,7 @@ where a.status in (3,5) and a.artificer_id = ${userId} and a.end_times BETWEEN #{startTime} and #{endTime} and a.parent_id = 0 - order serve_time by desc + order by serve_time desc