This commit is contained in:
zt
2025-01-15 11:36:55 +08:00
parent 2091903f79
commit 74cbeb1068
9 changed files with 271 additions and 156 deletions

View File

@ -32,4 +32,6 @@ public class MemberGroupBaseVO {
@Schema(description = "食堂Id", example = "1")
private Long carteenId;
@Schema(description = "类型", example = "1")
private Integer type;
}

View File

@ -91,4 +91,9 @@ public class OrderDetailsRespVO {
private BigDecimal refundAmount;
private String faceData;
/**
* 补贴金额
*/
private BigDecimal subsidyAmount;
}

View File

@ -21,7 +21,6 @@ public class MemberTagBaseVO {
* 减免类型1-比例2-固定金额
*/
@Schema(description = "减免类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
@NotNull(message = "减免类型不能为空")
private String type;
/**
* 比例
@ -52,5 +51,28 @@ public class MemberTagBaseVO {
* 晚
*/
private BigDecimal night;
/**
* 早餐比例
*/
private Integer morningProportion;
/**
* 午餐比例
*/
private Integer noonProportion;
/**
* 晚餐比例
*/
private Integer nightProportion;
/**
* 早上基础价钱
*/
private BigDecimal morningBase;
/**
* 中午基础价钱
*/
private BigDecimal noonBase;
/**
* 晚上基础价钱
*/
private BigDecimal nightBase;
}

View File

@ -80,4 +80,9 @@ public class AppOrderRespVO {
private BigDecimal refundAmount;
private String faceData;
/**
* 补贴金额
*/
private BigDecimal subsidyAmount;
}

View File

@ -50,4 +50,9 @@ public class MemberGroupDO extends BaseDO {
* 食堂Id
*/
private Long carteenId;
/**
* 1-行政服务中心2-区管单位3-盈创力和4-私人5-其他单位
*/
private Integer type;
}

View File

@ -109,4 +109,9 @@ public class DishOrderDO extends BaseDO {
private Boolean billingExist;
private String billingNum;
/**
* 补贴金额
*/
private BigDecimal subsidyAmount;
}

View File

@ -66,4 +66,29 @@ public class MemberTagDO extends BaseDO {
*/
private BigDecimal night;
/**
* 早餐比例
*/
private Integer morningProportion;
/**
* 午餐比例
*/
private Integer noonProportion;
/**
* 晚餐比例
*/
private Integer nightProportion;
/**
* 早上基础价钱
*/
private BigDecimal morningBase;
/**
* 中午基础价钱
*/
private BigDecimal noonBase;
/**
* 晚上基础价钱
*/
private BigDecimal nightBase;
}

View File

@ -79,9 +79,12 @@ public class DeductionServiceImpl implements DeductionService {
//BigDecimal money = user.getMoney();
//计算减免价格
BigDecimal reductionAmount = BigDecimal.ZERO;
//补贴
BigDecimal subsidyAmount = BigDecimal.ZERO;
if (total.compareTo(BigDecimal.ZERO) > 0) {
reductionAmount = userService.getReductionAmount(userId, total, dishOrderDO.getCreateTime());
subsidyAmount = userService.getReductionAmount(userId, total, dishOrderDO.getCreateTime());
}
dishOrderDO.setSubsidyAmount(subsidyAmount);
if (dishOrderDO.getReductionAmount().compareTo(BigDecimal.ZERO) > 0) {
reductionAmount = reductionAmount.add(dishOrderDO.getReductionAmount());
dishOrderDO.setReductionAmount(reductionAmount);
@ -90,6 +93,7 @@ public class DeductionServiceImpl implements DeductionService {
}
dishOrderDO.setReductionState(reductionAmount.compareTo(BigDecimal.ZERO) > 0 ? "1" : "0");
//计算减免后的总价
reductionAmount = reductionAmount.add(subsidyAmount);
if (total.compareTo(reductionAmount) < 0) {
total = BigDecimal.ZERO;
} else {

View File

@ -65,6 +65,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.annotations.VisibleForTesting;
import com.sun.org.apache.bcel.internal.generic.NEW;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@ -582,6 +583,7 @@ public class MemberUserServiceImpl implements MemberUserService {
return suggestion(userId, startDate, endDate, Boolean.TRUE, null);
}
}
public List<Map> suggestion(Long userId, LocalDateTime startDate, LocalDateTime endDate, Boolean bol, Long orderId) {
//查询今天的订单
List<Long> collect = new ArrayList<>();
@ -678,10 +680,10 @@ public class MemberUserServiceImpl implements MemberUserService {
}
/**
* @return
* @Description: 根据营养名称进行分组计算值
* @Author: qjq
* @Date: 2024/4/12 下午2:44
* @return
*/
public List<DishesNutritionRespDTO> groupingBy(List<DishesNutritionRespDTO> list) {
List<DishesNutritionRespDTO> list1 = new ArrayList<>();
@ -701,6 +703,7 @@ public class MemberUserServiceImpl implements MemberUserService {
}
return list1;
}
public void computePercentage(List<DishesNutritionRespDTO> list) {
//获取所有营养数量
BigDecimal sum = list.stream()
@ -831,6 +834,7 @@ public class MemberUserServiceImpl implements MemberUserService {
public MemberUserDO getByFaceId(Long faceId) {
return memberUserMapper.selectOne(new LambdaQueryWrapper<MemberUserDO>().eq(MemberUserDO::getFaceId, faceId).last("limit 1"));
}
@Override
public MemberUserDO getByMobile(Long mobile) {
return memberUserMapper.selectOne(new LambdaQueryWrapper<MemberUserDO>().eq(MemberUserDO::getMobile, mobile).last("limit 1"));
@ -865,56 +869,93 @@ public class MemberUserServiceImpl implements MemberUserService {
return map;
}
// public BigDecimal countAmount(MemberTagDO memberTagDO, BigDecimal money, String timePeriod ){
// if(memberTagDO.getType().equals("1")){
// if (memberTagDO.getTimeFlag().equals("0")){
// return money.multiply(memberTagDO.getProportion()).setScale(2, RoundingMode.HALF_UP);
// }else {
// BigDecimal bigDecimal;
// switch (timePeriod){
// case "2":
// bigDecimal = money.multiply(memberTagDO.getMorning()).setScale(2, RoundingMode.HALF_UP);
// break;
// case "3":
// bigDecimal = money.multiply(memberTagDO.getNoon()).setScale(2, RoundingMode.HALF_UP);
// break;
// case "4":
// bigDecimal = money.multiply(memberTagDO.getNight()).setScale(2, RoundingMode.HALF_UP);
// break;
// default:
// bigDecimal = BigDecimal.ZERO;
// break;
// }
// return bigDecimal;
// }
//
// }
// if(memberTagDO.getType().equals("2")){
// if (memberTagDO.getTimeFlag().equals("0")){
// return memberTagDO.getAmount();
// }else {
// BigDecimal bigDecimal;
// switch (timePeriod){
// case "2":
// bigDecimal = memberTagDO.getMorning();
// break;
// case "3":
// bigDecimal = memberTagDO.getNoon();
// break;
// case "4":
// bigDecimal = memberTagDO.getNight();
// break;
// default:
// bigDecimal = BigDecimal.ZERO;
// break;
// }
// return bigDecimal;
// }
//
// }
// return BigDecimal.ZERO;
// }
public BigDecimal countAmount(MemberTagDO memberTagDO, BigDecimal money, String timePeriod) {
if(memberTagDO.getType().equals("1")){
if (memberTagDO.getTimeFlag().equals("0")){
return money.multiply(memberTagDO.getProportion()).setScale(2, RoundingMode.HALF_UP);
}else {
BigDecimal bigDecimal;
BigDecimal bigDecimal= BigDecimal.ZERO;
BigDecimal oneHundred = new BigDecimal("100");
switch (timePeriod) {
case "2":
bigDecimal = money.multiply(memberTagDO.getMorning()).setScale(2, RoundingMode.HALF_UP);
if(money.compareTo(memberTagDO.getMorningBase())>0){
BigDecimal subsidy = money.multiply(new BigDecimal(memberTagDO.getMorningProportion())).divide(oneHundred, 2, RoundingMode.HALF_UP);
if(subsidy.compareTo(memberTagDO.getMorning())>0){
subsidy = memberTagDO.getMorning();
}
bigDecimal = subsidy;
}
break;
case "3":
bigDecimal = money.multiply(memberTagDO.getNoon()).setScale(2, RoundingMode.HALF_UP);
if(money.compareTo(memberTagDO.getNoonBase())>0){
BigDecimal subsidy = money.multiply(new BigDecimal(memberTagDO.getNoonProportion())).divide(oneHundred, 2, RoundingMode.HALF_UP);
if(subsidy.compareTo(memberTagDO.getNoon())>0){
subsidy = memberTagDO.getNoon();
}
bigDecimal = subsidy;
}
break;
case "4":
bigDecimal = money.multiply(memberTagDO.getNight()).setScale(2, RoundingMode.HALF_UP);
if(money.compareTo(memberTagDO.getNightBase())>0){
BigDecimal subsidy = money.multiply(new BigDecimal(memberTagDO.getNightProportion())).divide(oneHundred, 2, RoundingMode.HALF_UP);
if(subsidy.compareTo(memberTagDO.getNight())>0){
subsidy = memberTagDO.getNight();
}
bigDecimal = subsidy;
}
break;
default:
bigDecimal = BigDecimal.ZERO;
break;
}
return bigDecimal;
}
}
if(memberTagDO.getType().equals("2")){
if (memberTagDO.getTimeFlag().equals("0")){
return memberTagDO.getAmount();
}else {
BigDecimal bigDecimal;
switch (timePeriod){
case "2":
bigDecimal = memberTagDO.getMorning();
break;
case "3":
bigDecimal = memberTagDO.getNoon();
break;
case "4":
bigDecimal = memberTagDO.getNight();
break;
default:
bigDecimal = BigDecimal.ZERO;
break;
}
return bigDecimal;
}
}
return BigDecimal.ZERO;
}
@Override
@Transactional(rollbackFor = Exception.class)
public boolean delete(Long userId) {
@ -959,7 +1000,8 @@ public class MemberUserServiceImpl implements MemberUserService {
ObjectMapper objectMapper = new ObjectMapper();
try {
// 读取 JSON 文件并转换为 List<Person>
List<UserJson> people = objectMapper.readValue(new File(filePath), new TypeReference<List<UserJson>>() {});
List<UserJson> people = objectMapper.readValue(new File(filePath), new TypeReference<List<UserJson>>() {
});
ArrayList<MemberUserDO> updateList = new ArrayList<>();
for (UserJson userJson : people) {