提交 dc2e0616 authored 作者: liuhaiquan's avatar liuhaiquan

Merge remote-tracking branch 'origin/v5.3_driver_integral_20231009' into…

Merge remote-tracking branch 'origin/v5.3_driver_integral_20231009' into v5.3_driver_integral_20231009
......@@ -11,6 +11,7 @@ import lombok.ToString;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.time.LocalDateTime;
import java.util.List;
/**
......@@ -127,6 +128,8 @@ public class OrderChildVO {
private String loadTime;
@ApiModelProperty(value = "卸车时间", example = "")
private String unloadTime;
@ApiModelProperty(value = "司机确认交货时间", example = "")
private LocalDateTime confirmTime;
@ApiModelProperty(value = "结算时间", example = "")
private String settleTime;
@ApiModelProperty(value = "取消时间", example = "")
......
......@@ -9,6 +9,7 @@ import com.msl.common.base.Optional;
import com.msl.common.dao.BaseDao;
import org.apache.ibatis.annotations.Param;
import java.time.LocalDateTime;
import java.util.List;
/**
......@@ -29,7 +30,7 @@ public interface IntegralStatisticsDao extends BaseDao<IntegralStatisticsMapper,
Optional<IntegralStatistics> selectById(Integer id);
List<IntegralStatistics> selectByStatisticsDate(@Param("statisticsDate")String statisticsDate);
List<IntegralStatistics> selectByStatisticsDate(@Param("statisticsDate") LocalDateTime statisticsDate);
List<IntegralStatistics> selectListByStatisticsDateAndTruckNoList(@Param("statisticsDate")String statisticsDate, @Param("list")List<String> truckNoList);
......
......@@ -36,6 +36,7 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
boolean updateLoadAndUnload(OrderChild item);
boolean updatePoundAuditStatus(OrderChild item);
boolean updateDriverConfirm(OrderChild item);
boolean updateSettlement(OrderChild item);
boolean updateCancel(OrderChild item);
......@@ -73,6 +74,6 @@ public interface OrderChildDao extends BaseDao<OrderChildMapper, OrderChild, Int
int countCompleteByTruckNoAndPayFinishTime(@Param("truckNo") String truckNo,
@Param("beginTime")String beginTime,
@Param("endTime")String endTime,
@Param("list")List<String> orderNoList
@Param("list")List<String> orderGoodsNoList
);
}
......@@ -11,6 +11,7 @@ import com.msl.common.base.Optional;
import com.msl.common.dao.impl.BaseDaoImpl;
import org.springframework.stereotype.Repository;
import java.time.LocalDateTime;
import java.util.List;
/**
......@@ -62,7 +63,7 @@ public class IntegralStatisticsDaoImpl extends BaseDaoImpl<IntegralStatisticsMap
}
@Override
public List<IntegralStatistics> selectByStatisticsDate(String statisticsDate) {
public List<IntegralStatistics> selectByStatisticsDate(LocalDateTime statisticsDate) {
return list(lQrWrapper()
.eq(IntegralStatistics::getStatisticsDate, statisticsDate)
.orderByDesc(IntegralStatistics::getIntegral));
......
......@@ -114,6 +114,15 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
@Override
public boolean updateDriverConfirm(OrderChild item) {
return update(lUdWrapper()
.eq(OrderChild::getId, item.getId())
.set(OrderChild::getStatus, item.getStatus())
.set(OrderChild::getConfirmTime, item.getConfirmTime())
);
}
@Override
public boolean updateSettlement(OrderChild item) {
return update(lUdWrapper()
.eq(OrderChild::getId, item.getId())
.set(OrderChild::getStatus, item.getStatus())
......@@ -237,14 +246,14 @@ public class OrderChildDaoImpl extends BaseDaoImpl<OrderChildMapper, OrderChild,
}
@Override
public int countCompleteByTruckNoAndPayFinishTime(String truckNo, String beginTime, String endTime, List<String> orderNoList) {
public int countCompleteByTruckNoAndPayFinishTime(String truckNo, String beginTime, String endTime, List<String> orderGoodsNoList) {
return (int)count(lQrWrapper()
.eq(OrderChild::getTruckNo, truckNo)
.ge(OrderChild::getPayTime, beginTime)
.le(OrderChild::getPayTime, endTime)
.ge(OrderChild::getStatus, OrderChildEnum.Status.CREATED.getCode())
.ge(OrderChild::getStatus, OrderChildEnum.Status.UNSETTLE.getCode())
.le(OrderChild::getStatus, OrderChildEnum.Status.COMPLETE.getCode())
.in(OrderChild::getOrderNo, orderNoList)
.in(OrderChild::getOrderGoodsNo, orderGoodsNoList)
);
}
......
......@@ -7,6 +7,8 @@ import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.*;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 积分货单
......@@ -29,8 +31,8 @@ public class IntegralOrder implements HasKey<Integer> {
private String receiveAddress; //收货地址
private Integer orderType; //货单类型:1优质单 2普通单 3流水单 4支援单
private Integer truckEchelon; //车辆梯队
private String createTime; //创建时间
private String modifiedTime; //修改时间
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
@Getter
@AllArgsConstructor
......
......@@ -7,6 +7,8 @@ import com.msl.common.config.KeyColumn;
import com.msl.common.model.HasKey;
import lombok.*;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 积分记录
......@@ -23,13 +25,13 @@ public class IntegralRecord implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id; //id
private Integer statisticsId; //统计id
private String statisticsDate; //统计时间
private LocalDateTime statisticsDate; //统计时间
private String truckNo; //车牌号
private Integer integral; //获得积分
private Integer type; //类型
private String remark; //原因
private String createTime; //创建时间
private String modifiedTime; //修改时间
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
@Getter
......
......@@ -9,6 +9,8 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 积分排名统计
......@@ -25,12 +27,12 @@ public class IntegralStatistics implements HasKey<Integer> {
@TableId(value = "id", type = IdType.AUTO)
private Integer id; //id
private String truckNo; //车牌号
private String statisticsDate; //统计时间(周一)
private LocalDateTime statisticsDate; //统计时间(周一)
private Integer integralBase; //基础积分
private Integer integral; //积分
private Integer rank; //排名
private String createTime; //创建时间
private String modifiedTime; //修改时间
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
@KeyColumn("id")
@Override
......
......@@ -9,6 +9,8 @@ import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import java.time.LocalDateTime;
/**
* @Author: aiqinguo
* @Description: 积分车辆
......@@ -30,8 +32,8 @@ public class IntegralTruck implements HasKey<Integer> {
private Integer echelon; //梯队
private Integer integral; //积分
private Integer rank; //排名
private String createTime; //创建时间
private String modifiedTime; //修改时间
private LocalDateTime createTime; //创建时间
private LocalDateTime modifiedTime; //修改时间
@KeyColumn("id")
@Override
......
......@@ -76,6 +76,7 @@ public class OrderChild implements HasKey<Integer> {
private LocalDateTime loadTime; //装车时间
private LocalDateTime arriveReceiveTime; //到达目的地时间
private LocalDateTime unloadTime; //卸车时间
private LocalDateTime confirmTime; //司机确认交货时间
private LocalDateTime settleTime; //结算时间
private LocalDateTime cancelTime; //取消时间
private LocalDateTime finishTime; //完成时间
......
......@@ -2,6 +2,8 @@ package com.clx.performance.service;
import com.clx.performance.param.mq.*;
import java.time.LocalDateTime;
public interface IntegralMqHandlerService {
void truckAdd(IntegralTuckAddMqParam mq);
......@@ -21,5 +23,5 @@ public interface IntegralMqHandlerService {
void integralRealTimeStatistics(Integer statisticsId);
void integralRealTimeRankStatistics(String statisticsDate);
void integralRealTimeRankStatistics(LocalDateTime statisticsDate);
}
......@@ -3,10 +3,12 @@ package com.clx.performance.service;
import com.clx.performance.model.IntegralRecord;
import com.clx.performance.param.pc.IntegralRecordAddParam;
import java.time.LocalDateTime;
public interface IntegralRecordService {
void addRecord(IntegralRecordAddParam param);
IntegralRecord save(Integer statisticsId, String statisticsDate, String truckNo, Integer type, Integer integral, String remark);
IntegralRecord save(Integer statisticsId, LocalDateTime statisticsDate, String truckNo, Integer type, Integer integral, String remark);
}
......@@ -6,12 +6,14 @@ import com.clx.performance.param.pc.pageIntegralStatisticsDetailParam;
import com.clx.performance.vo.pc.IntegralRecordVO;
import com.clx.performance.vo.pc.IntegralStatisticsVO;
import java.time.LocalDateTime;
public interface IntegralStatisticsService {
IPage<IntegralStatisticsVO> pageStatisticsList(PageIntegralStatisticsParam param);
IPage<IntegralRecordVO> pageStatisticsDetailList(pageIntegralStatisticsDetailParam param);
int protectionIntegralCalc(String statisticsDate);
int protectionIntegralCalc(String createTime, String statisticsDate);
int protectionIntegralCalc(LocalDateTime statisticsDate);
int protectionIntegralCalc(LocalDateTime createTime, LocalDateTime statisticsDate);
}
......@@ -57,7 +57,7 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
truck.setDriverMobile(mq.getDriverMobile());
truck.setEchelon(1);
String statisticsDate = LocalDateTimeUtils.getWeekStart();
LocalDateTime statisticsDate = LocalDateTimeUtils.getStartWeek();
int protectionIntegral = integralStatisticsService.protectionIntegralCalc(statisticsDate);
int baseIntegral = 100;
......@@ -72,7 +72,7 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
IntegralStatistics statisticsNext = new IntegralStatistics();
statisticsNext.setTruckNo(truckNo);
statisticsNext.setStatisticsDate(LocalDateTimeUtils.formatTime(LocalDateTimeUtils.parseTime(statistics.getStatisticsDate()).plusDays(7)));
statisticsNext.setStatisticsDate(statistics.getStatisticsDate().plusDays(7));
statisticsNext.setIntegralBase(0);
statisticsNext.setIntegral(0);
statisticsNext.setRank(1);
......@@ -126,9 +126,9 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
@Override
@Transactional(rollbackFor = Exception.class)
public void nextWeekTruckInit(IntegralNextWeekTruckInitMqParam mq){
String statisticsDateCurrent = mq.getStatisticsDate();
LocalDateTime statisticsDateCurrent = LocalDateTimeUtils.parseTime(mq.getStatisticsDate());
String statisticsDateNext = LocalDateTimeUtils.formatTime(LocalDateTimeUtils.parseTime(statisticsDateCurrent).plusDays(7));
LocalDateTime statisticsDateNext = statisticsDateCurrent.plusDays(7);
// 查找本周车辆
List<IntegralStatistics> list = integralStatisticsDao.selectByStatisticsDate(statisticsDateCurrent);
......@@ -173,7 +173,7 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
}
// 更新本周实时排名
integralRealTimeRankStatistics(mq.getStatisticsDate());
integralRealTimeRankStatistics(LocalDateTimeUtils.parseTime(mq.getStatisticsDate()));
}
/**
......@@ -203,10 +203,10 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
* 新车保护分
*/
private void newTruckProtection(IntegralTruck truck, IntegralStatistics statistics){
String statisticsDate = statistics.getStatisticsDate();
LocalDateTime statisticsDate = statistics.getStatisticsDate();
// 超过保护期
if (LocalDateTimeUtils.parseTime(truck.getCreateTime()).isBefore(LocalDateTimeUtils.parseTime(statisticsDate).minusDays(7))) {return;}
if (truck.getCreateTime().isBefore(statisticsDate.minusDays(7))) {return;}
// 已保护不处理
IntegralRecord record = integralRecordDao.selectByStatisticsIdAndType(statistics.getId(), IntegralRecord.type.PROTECTION.getValue());
......@@ -233,7 +233,7 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
IntegralRecord record = integralRecordDao.selectByStatisticsIdAndType(statistics.getId(), IntegralRecord.type.SETTLEMENT.getValue());
if (null != record) {return;}
String statisticsDatePre = LocalDateTimeUtils.formatTime(LocalDateTimeUtils.parseTime(statistics.getStatisticsDate()).minusDays(7));
String statisticsDatePre = LocalDateTimeUtils.formatTime(statistics.getStatisticsDate().minusDays(7));
// 查找上周统计数据
IntegralStatistics statisticsPre = integralStatisticsDao.selectByTruckNoAndStatisticsDate(truck.getTruckNo(), statisticsDatePre).orNull();
......@@ -290,7 +290,7 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
integralTruckDao.updateIntegral(truck);
// 更新本周实时排名
integralRealTimeRankStatistics(mq.getStatisticsDate());
integralRealTimeRankStatistics(LocalDateTimeUtils.parseTime(mq.getStatisticsDate()));
}
......@@ -314,7 +314,7 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
IntegralTruck truck = integralTruckDao.getByTruckNo(orderChild.getTruckNo()).orNull();
if (null == truck) {return;}
List<Integer> finishStatusList = Arrays.asList(OrderChildEnum.Status.COMPLETE.getCode());
List<Integer> finishStatusList = Arrays.asList(OrderChildEnum.Status.UNSETTLE.getCode(), OrderChildEnum.Status.COMPLETE.getCode());
List<Integer> cancelStatusList = OrderChildEnum.CANCEL_lIST;;
int integral = 0;
......@@ -373,6 +373,8 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
String completeNumIntegralRemark="";
List<String> enableOrderNoList = integralOrderDao.getAllOrderNoList();
int finishNum = orderChildDao.countCompleteByTruckNoAndPayFinishTime(orderChild.getTruckNo(), LocalDateTimeUtils.formatTime(dateTimeDayStart), LocalDateTimeUtils.formatTime(dateTimeDayNext), enableOrderNoList);
log.info("司机积分,车辆完成量,truckNo:{}, sum:{}", orderChild.getChildNo(), finishNum);
if (finishNum == 1){
completeNumIntegral = 0;
}
......@@ -520,7 +522,7 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
else if (realTime >= sendAddressTime*3) {sendAddressTimeoutIntegral = -5;}
}
else if (null != sendAddressTime && null == orderChild.getArriveSendTime()){
int realTime = diffSecond(orderChild.getPayTime(), orderChild.getSettleTime());
int realTime = diffSecond(orderChild.getPayTime(), orderChild.getFinishTime());
if (realTime >= sendAddressTime*2 && realTime < sendAddressTime*3) {sendAddressTimeoutIntegral = -3;}
else if (realTime >= sendAddressTime*3) {sendAddressTimeoutIntegral = -5;}
}
......@@ -535,7 +537,7 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
else if (realTime >= receiveAddressTime*3) {receivdAddressTimeoutIntegral = -5;}
}
else if (null != receiveAddressTime && null != orderChild.getArriveSendTime() && null == orderChild.getArriveReceiveTime()){
int realTime = diffSecond(orderChild.getArriveSendTime(), orderChild.getSettleTime());
int realTime = diffSecond(orderChild.getArriveSendTime(), orderChild.getFinishTime());
if (realTime >= receiveAddressTime*2 && realTime < receiveAddressTime*3) {receivdAddressTimeoutIntegral = -3;}
else if (realTime >= receiveAddressTime*3) {receivdAddressTimeoutIntegral = -5;}
}
......@@ -578,7 +580,7 @@ public class IntegralMqHandlerServiceImpl implements IntegralMqHandlerService {
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void integralRealTimeRankStatistics(String statisticsDate){
public void integralRealTimeRankStatistics(LocalDateTime statisticsDate){
List<IntegralStatistics> list = integralStatisticsDao.selectByStatisticsDate(statisticsDate);
......
......@@ -15,6 +15,8 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.time.LocalDateTime;
@Slf4j
@Service
public class IntegralRecordServiceImpl implements IntegralRecordService {
......@@ -56,7 +58,7 @@ public class IntegralRecordServiceImpl implements IntegralRecordService {
}
@Override
public IntegralRecord save(Integer statisticsId, String statisticsDate, String truckNo, Integer type, Integer integral, String remark){
public IntegralRecord save(Integer statisticsId, LocalDateTime statisticsDate, String truckNo, Integer type, Integer integral, String remark){
IntegralRecord record = new IntegralRecord();
record.setStatisticsId(statisticsId);
record.setStatisticsDate(statisticsDate);
......
......@@ -16,6 +16,7 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.time.Duration;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
......@@ -58,23 +59,23 @@ public class IntegralStatisticsServiceImpl implements IntegralStatisticsService
* 新手积分计算
*/
@Override
public int protectionIntegralCalc(String statisticsDate){
int day = diffDay(statisticsDate, LocalDateTimeUtils.getStringDayStart());
public int protectionIntegralCalc(LocalDateTime statisticsDate) {
int day = diffDay(statisticsDate, LocalDateTimeUtils.getDayStart());
if (day >= 7) {return 0;}
return (7-day)*30;
}
@Override
public int protectionIntegralCalc(String createTime, String statisticsDate){
int day = diffDay(LocalDateTimeUtils.getStringDayStart(createTime), statisticsDate);
public int protectionIntegralCalc(LocalDateTime createTime, LocalDateTime statisticsDate){
int day = diffDay(LocalDateTimeUtils.getDayStart(createTime), statisticsDate);
if (day >= 7) {return 0;}
return (7-day)*30;
}
private int diffDay(String beginDate, String endDate){
long day = Duration.between(LocalDateTimeUtils.parseTime(beginDate), LocalDateTimeUtils.parseTime(endDate)).toDays();
private int diffDay(LocalDateTime beginDate, LocalDateTime endDate){
long day = Duration.between(beginDate, endDate).toDays();
return Long.valueOf(day).intValue();
}
......
......@@ -19,6 +19,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
......@@ -60,7 +61,7 @@ public class IntegralTruckServiceImpl implements IntegralTruckService {
truck.setDriverMobile(param.getDriverMobile());
truck.setEchelon(1);
String statisticsDate = LocalDateTimeUtils.getWeekStart();
LocalDateTime statisticsDate = LocalDateTimeUtils.getStartWeek();
int protectionIntegral = integralStatisticsService.protectionIntegralCalc(statisticsDate);
int baseIntegral = 100;
......@@ -75,7 +76,7 @@ public class IntegralTruckServiceImpl implements IntegralTruckService {
IntegralStatistics statisticsNext = new IntegralStatistics();
statisticsNext.setTruckNo(truckNo);
statisticsNext.setStatisticsDate(LocalDateTimeUtils.formatTime(LocalDateTimeUtils.parseTime(statistics.getStatisticsDate()).plusDays(7)));
statisticsNext.setStatisticsDate(statistics.getStatisticsDate().plusDays(7));
statisticsNext.setIntegralBase(0);
statisticsNext.setIntegral(0);
statisticsNext.setRank(1);
......
......@@ -898,17 +898,19 @@ public class OrderChildServiceImpl implements OrderChildService {
updateOrderGoodsComplete(orderGoods, count);
orderChild.setStatus(OrderChildEnum.Status.UNSETTLE.getCode());
orderChild.setConfirmTime(LocalDateTime.now());
orderChildDao.updateDriverConfirm(orderChild);
// 更新车辆状态
updateDriverOrderStatusDriverConfirm(orderChild.getTruckId());
// 运单结束
orderChildFinish(orderChild);
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.DRIVER_CONFIRM.getCode(),
OrderChildLogEnum.Type.DRIVER_CONFIRM.getMsg(), loginUserInfo.getUserNo(), loginUserInfo.getUserName());
// 结算
updateSettlement(orderChild);
}
@Override
......@@ -920,7 +922,7 @@ public class OrderChildServiceImpl implements OrderChildService {
// 结算完成
orderChild.setStatus(OrderChildEnum.Status.COMPLETE.getCode());
orderChildDao.updateDriverConfirm(orderChild);
orderChildDao.updateSettlement(orderChild);
// 日志
orderChildLogService.saveDriverOrderChildLog(childNo, OrderChildLogEnum.Type.SETTLEMENT.getCode(),
......@@ -974,8 +976,7 @@ public class OrderChildServiceImpl implements OrderChildService {
}
orderChild.setCancelRemark(param.getRemark());
orderChild.setCancelTime(now);
orderChild.setFinishTime(now);
orderChild.setFinishTime(orderChild.getCancelTime());
orderChild.setStatus(OrderChildEnum.Status.DRIVER_CANCEL.getCode());
// 返回吨数
......@@ -1029,8 +1030,7 @@ public class OrderChildServiceImpl implements OrderChildService {
}
orderChild.setCancelRemark(param.getRemark());
orderChild.setCancelTime(now);
orderChild.setFinishTime(now);
orderChild.setFinishTime(orderChild.getCancelTime());
orderChild.setStatus(OrderChildEnum.Status.PLATFORM_CANCEL.getCode());
// 返回吨数
......
......@@ -389,6 +389,15 @@ public class LocalDateTimeUtils {
return DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.of(LocalDate.now(), LocalTime.MIN).with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)));
}
public static String getWeekStart(String dateTime) {
return DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.of(parseLocalDate(dateTime), LocalTime.MIN).with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)));
return DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss").format(LocalDateTime.of(LocalDateTimeUtils.parseTime(dateTime).toLocalDate(), LocalTime.MIN).with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)));
}
public static LocalDateTime getStartWeek() {
return LocalDateTime.of(LocalDate.now(), LocalTime.MIN).with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
}
public static LocalDateTime getStartWeek(String dateTime) {
return LocalDateTime.of(parseLocalDate(dateTime), LocalTime.MIN).with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
}
public static LocalDateTime getStartWeek(LocalDateTime dateTime) {
return LocalDateTime.of(dateTime.toLocalDate(), LocalTime.MIN).with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论