diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/emp/vo/StUserBalanceVo.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/emp/vo/StUserBalanceVo.java new file mode 100644 index 0000000..82e4d53 --- /dev/null +++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/emp/vo/StUserBalanceVo.java @@ -0,0 +1,58 @@ +package org.jeecg.emp.vo; + +import lombok.Data; + +import java.math.BigDecimal; + +@Data +public class StUserBalanceVo { + /** + * 用户id + */ + private String id; + /** + * 姓名 + */ + private String realname; + /** + * 卡号 + */ + private String cardCode; + /** + * 卡状态 + */ + private String cardCodeStatus; + /** + * 卡状态 + */ + private String cardCodeStatusName; + /** + * 电话 + */ + private String phone; + /** + * 工号 + */ + private String workNo; + /** + * 身份证号 + */ + private String cardNo; + /** + * 部门id + */ + private String departIds; + /** + * 用户类型 0正式 1非正式 2家庭成员 + */ + private String userType; + /** + * 食堂id + */ + private String canteenId; + /** + * 账户余额 + */ + private BigDecimal balance; + +} diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StClientMemberLevelDeductRuleVo.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StClientMemberLevelDeductRuleVo.java index 1b1f1e6..41c4d60 100644 --- a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StClientMemberLevelDeductRuleVo.java +++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StClientMemberLevelDeductRuleVo.java @@ -9,8 +9,10 @@ import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.Data; import org.jeecg.common.system.base.entity.JeecgEntity; +import org.jeecg.restaurant.entity.SlBaseDinnerTime; import java.io.Serializable; +import java.util.List; /** * 扣费规则 @@ -66,4 +68,6 @@ public class StClientMemberLevelDeductRuleVo extends JeecgEntity implements Seri @Schema(title = "是否支持透支消费(0:不支持,1:支持)") private Integer isOverdraftDine; + + private List dinnerTimes; } diff --git a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StRfidVo.java b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StRfidVo.java index 733b7a5..4802f19 100644 --- a/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StRfidVo.java +++ b/jeecg-module-system/jeecg-system-api/jeecg-system-local-api/src/main/java/org/jeecg/payment/vo/StRfidVo.java @@ -34,4 +34,13 @@ public class StRfidVo { //本次扣费金额(后端根据规则计算) private BigDecimal spendMoney; + /** + * 二次扣费标记 1 是; 0 否 + */ + private Integer secondChargeFlag; + + /** + * 自定义扣费标记 1 是 ; 0 否 + */ + private Integer isCustom; } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/controller/CqBaseEmployeePayController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/controller/CqBaseEmployeePayController.java index 7354493..165810b 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/controller/CqBaseEmployeePayController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/controller/CqBaseEmployeePayController.java @@ -249,4 +249,85 @@ public class CqBaseEmployeePayController extends JeecgController editBuildCardCode(@RequestBody SysUserSub sysUserSub) { + if(StringUtils.isBlank(sysUserSub.getId())){ + return Result.error("用户ID不能为空"); + } + if(StringUtils.isBlank(sysUserSub.getCardCode())){ + return Result.error("卡号不能为空"); + } + + SysUserSub sysUserSub1 = sysUserSubService.getById(sysUserSub.getId()); + if(null == sysUserSub1){ + return Result.error("用户不存在"); + } + //家庭用户 + if(sysUserSub1.getUserType() == 2){ + return Result.error("家庭用户不支持操作"); + } + sysUserSub.setCardCodeStatus(1); + Result result = cqBaseEmployeeService.updateEmpSub(sysUserSub); + return result; + } + + + /** + * 非正式+正式员工解绑卡 + * + * @return + */ + @AutoLog(value = " 非正式+正式员工解绑卡") + @Operation(summary = " 非正式+正式员工解绑卡", description = " 非正式+正式员工解绑卡") + @PostMapping(value = "/editUnBuildCardCode") + public Result editUnBuildCardCode(@RequestBody SysUserSub sysUserSub) { + if(StringUtils.isBlank(sysUserSub.getId())){ + return Result.error("用户ID不能为空"); + } + if(StringUtils.isBlank(sysUserSub.getCardCode())){ + return Result.error("卡号不能为空"); + } + SysUserSub sysUserSub1 = sysUserSubService.getById(sysUserSub.getId()); + if(null == sysUserSub1){ + return Result.error("用户不存在"); + } + //家庭用户 + if(sysUserSub1.getUserType() == 2){ + return Result.error("家庭用户不支持操作"); + } + sysUserSub.setCardCodeStatus(3); + sysUserSub.setCardCode(""); + Result result = cqBaseEmployeeService.updateEmpSub(sysUserSub); + return result; + } + + /** + * 非正式+正式员工挂失 + * + * @return + */ + @AutoLog(value = " 非正式+正式员工挂失") + @Operation(summary = " 非正式+正式员工挂失", description = " 非正式+正式员工挂失") + @PostMapping(value = "/editBuildCardCodeLoss") + public Result editBuildCardCodeLoss(@RequestBody SysUserSub sysUserSub) { + if(StringUtils.isBlank(sysUserSub.getId())){ + return Result.error("用户ID不能为空"); + } + if(StringUtils.isBlank(sysUserSub.getCardCode())){ + return Result.error("卡号不能为空"); + } + SysUserSub sysUserSub1 = sysUserSubService.getById(sysUserSub.getId()); + if(null == sysUserSub1){ + return Result.error("用户不存在"); + } + //家庭用户 + if(sysUserSub1.getUserType() == 2){ + return Result.error("家庭用户不支持操作"); + } + sysUserSub.setCardCodeStatus(2); + Result result = cqBaseEmployeeService.updateEmpSub(sysUserSub); + return result; + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/mapper/CqBaseEmployeeMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/mapper/CqBaseEmployeeMapper.java index 21181e3..5c08cd7 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/mapper/CqBaseEmployeeMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/mapper/CqBaseEmployeeMapper.java @@ -1,15 +1,13 @@ package org.jeecg.emp.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Select; import org.jeecg.emp.entity.CqBaseEmployee; -import org.jeecg.emp.vo.CqBaseEmpVo; -import org.jeecg.emp.vo.DepartVo; -import org.jeecg.emp.vo.EmpInfoVo; -import org.jeecg.emp.vo.UserInfoVo; +import org.jeecg.emp.vo.*; import org.jeecg.user.entity.SysUser; import java.util.List; @@ -109,4 +107,8 @@ public interface CqBaseEmployeeMapper extends BaseMapper { EmpInfoVo getEmpInfoVoByUserId(String userId); + IPage getUserBalanceList(@Param("page") Page page, @Param("timestamp") Long timestamp); + + List getUserBalanceList(@Param("timestamp") Long timestamp); + } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/mapper/xml/CqBaseEmployeeMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/mapper/xml/CqBaseEmployeeMapper.xml index 73239c4..1e6c27b 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/mapper/xml/CqBaseEmployeeMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/mapper/xml/CqBaseEmployeeMapper.xml @@ -520,4 +520,25 @@ AND u.del_flag = 0 limit 1 + diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/service/ICqBaseEmployeeService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/service/ICqBaseEmployeeService.java index 99ec8ce..d2e5e1e 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/service/ICqBaseEmployeeService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/service/ICqBaseEmployeeService.java @@ -1,11 +1,13 @@ package org.jeecg.emp.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.common.api.vo.Result; import org.jeecg.emp.entity.CqBaseEmployee; import org.jeecg.emp.vo.CqBaseEmpVo; import org.jeecg.emp.vo.DepartVo; +import org.jeecg.emp.vo.StUserBalanceVo; import org.jeecg.user.entity.SysUser; import org.jeecg.user.entity.SysUserSub; import org.jeecg.user.vo.SysUserSubVo; @@ -40,4 +42,7 @@ public interface ICqBaseEmployeeService extends IService { public List getSecondDepartList(); List getUserList(List idCardList); + + IPage getUserBalanceList(Integer pageNo, Integer pageSize, Long timestamp); + List getUserBalanceList(Long timestamp); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/service/impl/CqBaseEmployeeServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/service/impl/CqBaseEmployeeServiceImpl.java index a9731c9..bdc3d37 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/service/impl/CqBaseEmployeeServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/emp/service/impl/CqBaseEmployeeServiceImpl.java @@ -1,6 +1,7 @@ package org.jeecg.emp.service.impl; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import lombok.extern.slf4j.Slf4j; @@ -13,6 +14,7 @@ import org.jeecg.emp.mapper.CqBaseEmployeeMapper; import org.jeecg.emp.service.ICqBaseEmployeeService; import org.jeecg.emp.vo.CqBaseEmpVo; import org.jeecg.emp.vo.DepartVo; +import org.jeecg.emp.vo.StUserBalanceVo; import org.jeecg.payment.entity.StClientMemberBalance; import org.jeecg.payment.service.IStClientMemberBalanceService; import org.jeecg.system.service.ISysPayDepartService; @@ -208,4 +210,16 @@ public class CqBaseEmployeeServiceImpl extends ServiceImpl getUserList(List idCardList) { return baseMapper.getUserList(idCardList); } + + //分页获取用户余额信息 + @Override + public IPage getUserBalanceList(Integer pageNo, Integer pageSize, Long timestamp){ + Page page = new Page<>(pageNo,pageSize); + return baseMapper.getUserBalanceList(page, timestamp); + } + + @Override + public List getUserBalanceList(Long timestamp){ + return baseMapper.getUserBalanceList(timestamp); + } } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/pay/controller/StPayController.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/pay/controller/StPayController.java index 8b254f0..648037f 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/pay/controller/StPayController.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/pay/controller/StPayController.java @@ -3,6 +3,7 @@ package org.jeecg.pay.controller; import cn.hutool.core.date.DateUtil; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.extern.slf4j.Slf4j; @@ -12,6 +13,8 @@ import org.jeecg.common.api.vo.Result; import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.util.JwtUtil; import org.jeecg.common.util.RedisUtil; +import org.jeecg.emp.service.ICqBaseEmployeeService; +import org.jeecg.emp.vo.StUserBalanceVo; import org.jeecg.equipment.entity.StEquipment; import org.jeecg.equipment.service.IStEquipmentService; import org.jeecg.payment.entity.StBbzxOrderInfo; @@ -39,7 +42,7 @@ import java.util.concurrent.CompletableFuture; */ @Tag(name = "0.食堂API接口支付相关 ") @RestController -@RequestMapping("/zhstapi/pay/") +@RequestMapping("/zhstapi/pay") @Slf4j public class StPayController { // @Autowired @@ -59,6 +62,8 @@ public class StPayController { @Resource private ISlBaseDinnerTimeService slBaseDinnerTimeService; + @Resource + private ICqBaseEmployeeService cqBaseEmployeeService; /** * 根据设备号获取token @@ -75,20 +80,6 @@ public class StPayController { if(CollectionUtils.isEmpty(stEquipmentList)){ log.error("根据设备号获取token,异常:设备编号不存在,qrcodeId="+qrcodeId); return Result.error("设备编号不存在"); - } else { -// try { -// //查询设备编码 -// StEquipment stEquipment = stEquipmentList.get(0); -// String canteenId = slBaseRestaurantService.getCanteenId(stEquipment.getCanteenId()); -// SlBaseDinnerTime slBaseDinnerTime = stBaseService.getCanteenDinnerType(canteenId); -// if(null != slBaseDinnerTime && StringUtils.isNotBlank(slBaseDinnerTime.getDinnerType())){ -// String timesName = slBaseDinnerTime.getDinnerType(); -// //异步上传设备统计信息 -// iStRfidDeviceLogService.syncUploadDeviceInfo(qrcodeId,canteenId,timesName,null,slBaseDinnerTime,null); -// } -// } catch (Exception e) { -// e.printStackTrace(); -// } } } String token = JwtUtil.signUserId("0000000000000000001", qrcodeId, qrcodeId,"4"); @@ -99,7 +90,7 @@ public class StPayController { @Operation(summary = "", description = "提供根据食堂ID获取食堂配置信息") @GetMapping(value = "/getDinnerType/byCanteenId") @AutoLog(value = "提供根据食堂ID获取食堂配置信息") - public Result getCanteenInfoByCanteenId(@RequestParam(name = "restId", required = true) String restId) { + public Result getCanteenInfoByCanteenId(@RequestParam(name = "restId", required = true) String restId) { SlBaseRestaurant slBaseRestaurant = slBaseRestaurantService.getById(restId); if(null == slBaseRestaurant){ return Result.error("食堂未找到,请检查参数"); @@ -109,11 +100,25 @@ public class StPayController { if(null == levelDeductRuleVo || null == levelDeductRuleVo.getDeductionType()){ return Result.error("食堂未设置扣费规则"); } + List list = slBaseDinnerTimeService.list(new LambdaQueryWrapper().eq(SlBaseDinnerTime::getRestId, restId)); + levelDeductRuleVo.setDinnerTimes(list); levelDeductRuleVo.setIsOverdraftDine(slBaseRestaurant.getIsOverdraftDine()); levelDeductRuleVo.setIsExternalDineFlag(slBaseRestaurant.getIsExternalDine()); return Result.OK(levelDeductRuleVo); } + @Operation(summary = "获取用户类型,余额信息", description = "获取用户类型,余额信息") + @GetMapping(value = "/getUserBalanceList") + @AutoLog(value = "获取用户类型,余额信息") + public Result getUserBalanceList(@RequestParam(name = "pageNo", required = false) Integer pageNo, + @RequestParam(name = "pageSize", required = false) Integer pageSize, + @RequestParam(name = "timestamp", required = false) Long timestamp){ + if(null == pageNo || pageSize == 0){ + return Result.OK(cqBaseEmployeeService.getUserBalanceList(timestamp)); + }else { + return Result.OK(cqBaseEmployeeService.getUserBalanceList(pageNo, pageSize, timestamp)); + } + } @@ -247,7 +252,8 @@ public class StPayController { @PostMapping(value = "/payUser/offline/v3") @AutoLog(value = "离线人脸扣费v3") public Result bindUserOfflineV3(@RequestBody StRfidoffLineVo stRfidoffLineVo) { - return iStClientMemberLevelDeductRuleService.bindUserOfflineCardCode(stRfidoffLineVo); + return iStClientMemberLevelDeductRuleService. + bindUserOfflineCardCode(stRfidoffLineVo); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/payment/service/impl/StClientMemberLevelDeductRuleServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/payment/service/impl/StClientMemberLevelDeductRuleServiceImpl.java index 647151d..c7a36c0 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/payment/service/impl/StClientMemberLevelDeductRuleServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/payment/service/impl/StClientMemberLevelDeductRuleServiceImpl.java @@ -298,6 +298,73 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl(uniqueMap.values()); } + //用户一天 一餐 不是二次扣费的数据 , 只留一条 + public List processUserMealDataSimplified(List dataList) { + if (dataList == null || dataList.isEmpty()) { + return new ArrayList<>(); + } + String restId = dataList.get(0).getRestId(); + List dinnerTimeList = stBaseDinnerTimeService.list(new LambdaQueryWrapper() + .eq(SlBaseDinnerTime::getRestId, restId) + .orderByAsc(SlBaseDinnerTime::getEndTime)); + + // 按用户ID、日期、餐次分组,然后处理每组数据 + return dataList.stream() + .collect(Collectors.groupingBy(vo -> + vo.getUserId() + "_" + DateUtils.formatDate(new Date(Long.parseLong(vo.getDateTime())), "yyyy-MM-dd") + "_" + getDinnerType(dinnerTimeList,vo.getDateTime()))) + .values() + .stream() + .flatMap(group -> { + // 分离二次扣费和非二次扣费数据 + List secondCharge = group.stream() + .filter(vo -> vo.getSecondChargeFlag() != null && vo.getSecondChargeFlag() == 1) + .collect(Collectors.toList()); + + List nonSecondCharge = group.stream() + .filter(vo -> vo.getSecondChargeFlag() == null || vo.getSecondChargeFlag() == 0) + .collect(Collectors.toList()); + + // 非二次扣费数据只保留一条 + List resultGroup = new ArrayList<>(); + if (!nonSecondCharge.isEmpty()) { + StRfidVo stRfidVo = nonSecondCharge.stream() + .min((vo1, vo2) -> compareByDateTime(vo1.getDateTime(), vo2.getDateTime())) + .orElse(nonSecondCharge.get(0)); + resultGroup.add(stRfidVo); + } + resultGroup.addAll(secondCharge); + + return resultGroup.stream(); + }) + .collect(Collectors.toList()); + } + + /** + * 比较两个时间戳 + */ + private int compareByDateTime(String dateTime1, String dateTime2) { + try { + long time1 = Long.parseLong(dateTime1); + long time2 = Long.parseLong(dateTime2); + return Long.compare(time1, time2); + } catch (Exception e) { + return 0; + } + } + + /** + * 获取餐次类型 + */ + private String getDinnerType(List dinnerTimeList,String dateTime) { + try { + SlBaseDinnerTime dinnerTime = stBaseDinnerTimeService.getCanteenDinnerTypeByDateTime(dinnerTimeList, dateTime); + return dinnerTime != null ? dinnerTime.getDinnerType() : "UNKNOWN"; + } catch (Exception e) { + return "UNKNOWN"; + } + } + + /** * 食堂扣费主接口 */ @@ -309,8 +376,10 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl> userListMaps = voListAll.stream().collect(Collectors.groupingBy(StRfidVo::getUserId)); for (Map.Entry> userListMap : userListMaps.entrySet()) { @@ -322,18 +391,18 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl 1){//离线扣费 //加异步处理 List finalVoListAll = value; - //过滤时间小于1分钟的记录 CompletableFuture.runAsync(() -> { unifiedDeductionInterface(finalVoListAll,restId,deviceCode,levelDeductRuleVo,false); }); @@ -378,6 +447,20 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl voList = entry.getValue(); for (StRfidVo stRfidVo : voList) { // 改用普通for循环,方便控制流程 + //判断用户本餐是否已经有数据 + if(stRfidVo.getSecondChargeFlag() == null || stRfidVo.getSecondChargeFlag() == 0){ + long count = iStBbzxOrderInfoService.count(new LambdaQueryWrapper() + .eq(StBbzxOrderInfo::getMemberId, stRfidVo.getUserId()) + .eq(StBbzxOrderInfo::getDinnerType, entry.getKey()) + .eq(StBbzxOrderInfo::getCanteenId, restId) + .eq(StBbzxOrderInfo::getStatus, 5) + .eq(StBbzxOrderInfo::getEatDay, DateUtils.formatDate(new Date(Long.parseLong(stRfidVo.getDateTime())), "yyyy-MM-dd")) + ); + if(count > 0){ + errorMessages = "用户本餐已扣费"; + continue; + } + } stRfidVo.setDeviceCode(deviceCode); stRfidVo.setRestId(restId); if(!online){ @@ -409,12 +492,12 @@ public class StClientMemberLevelDeductRuleServiceImpl extends JeecgServiceImpl 0) { + Integer isCustom = stRfidVo.getIsCustom(); + if (isCustom != null && isCustom == 1) { // 自定义金额方式 - spendMoneyBudgeted = moneyCustom; + spendMoneyBudgeted = stRfidVo.getSpendMoney(); deductionType = 4; } else { deductionType = 1; diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/restaurant/service/ISlBaseDinnerTimeService.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/restaurant/service/ISlBaseDinnerTimeService.java index bc5c6ca..388dcc7 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/restaurant/service/ISlBaseDinnerTimeService.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/restaurant/service/ISlBaseDinnerTimeService.java @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.extension.service.IService; import org.jeecg.restaurant.entity.SlBaseDinnerTime; import java.util.Date; +import java.util.List; /** * @Description: 食堂餐次定义 @@ -16,4 +17,12 @@ public interface ISlBaseDinnerTimeService extends IService { SlBaseDinnerTime getCanteenDinnerType(String canteenId, Date dataTime); SlBaseDinnerTime getCanteenDinnerType(String canteenId); + + /** + * 根据时间戳获取对应餐次 + * @param list 餐次列表(食堂对应已排序处理好的) + * @param dataTime 时间戳 + * @return 对应餐次 + */ + SlBaseDinnerTime getCanteenDinnerTypeByDateTime(List list, String dataTime); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/restaurant/service/impl/SlBaseDinnerTimeServiceImpl.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/restaurant/service/impl/SlBaseDinnerTimeServiceImpl.java index b97dbc8..6e805d3 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/restaurant/service/impl/SlBaseDinnerTimeServiceImpl.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/restaurant/service/impl/SlBaseDinnerTimeServiceImpl.java @@ -5,11 +5,14 @@ import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; import org.jeecg.common.util.DateUtils; import org.jeecg.restaurant.entity.SlBaseDinnerTime; import org.jeecg.restaurant.mapper.SlBaseDinnerTimeMapper; import org.jeecg.restaurant.service.ISlBaseDinnerTimeService; import org.springframework.stereotype.Service; + +import java.time.*; import java.util.Date; import java.util.List; @@ -61,4 +64,24 @@ public class SlBaseDinnerTimeServiceImpl extends ServiceImpl list, String dataTime) { + for (SlBaseDinnerTime slBaseDinnerTime : list) { + DateTime endTime = DateUtil.parse(DateUtil.today() + " " + slBaseDinnerTime.getEndTime()); + Date date = new Date(); + + if(StringUtils.isNotBlank(dataTime)){ + long timestamp = Long.parseLong(dataTime); + date = new Date(timestamp); + endTime = DateUtil.parse(DateUtils.formatDate(date,"yyyy-MM-dd") + " " + slBaseDinnerTime.getEndTime()); + + } + if (DateUtil.compare(date, endTime) <= 0) { + return slBaseDinnerTime; + } + } + return list.get(list.size() - 1); + } + }