| | |
| | | PricingRule existing = pricingRuleMapper.selectOne(qw); |
| | | |
| | | if (existing != null) { |
| | | // 更新 |
| | | existing.setFieldB(item.getUnitPrice()); |
| | | // 更新(元转分) |
| | | existing.setFieldB(yuanToFen(item.getUnitPrice())); |
| | | existing.setUpdateTime(now); |
| | | pricingRuleMapper.updateById(existing); |
| | | } else { |
| | | // 新建 |
| | | // 新建(元转分) |
| | | PricingRule rule = new PricingRule(); |
| | | rule.setType(Constants.ZERO); |
| | | rule.setFieldA(String.valueOf(item.getCategoryId())); |
| | | rule.setFieldB(item.getUnitPrice()); |
| | | rule.setFieldB(yuanToFen(item.getUnitPrice())); |
| | | rule.setCityId(request.getCityId()); |
| | | rule.setDeleted(Constants.ZERO); |
| | | rule.setCreateTime(now); |
| | |
| | | PricingRule rule = existingMap.get(String.valueOf(category.getId())); |
| | | if (rule != null) { |
| | | vo.setPricingRuleId(rule.getId()); |
| | | vo.setUnitPrice(rule.getFieldB()); |
| | | vo.setUnitPrice(fenToYuan(rule.getFieldB())); |
| | | } |
| | | return vo; |
| | | }).collect(Collectors.toList()); |
| | |
| | | |
| | | if (existing != null) { |
| | | existing.setFieldB(item.getStartDistance()); |
| | | existing.setFieldC(item.getStartPrice()); |
| | | existing.setFieldC(yuanToFen(item.getStartPrice())); |
| | | existing.setFieldD(item.getExtraDistance()); |
| | | existing.setFieldE(item.getExtraPrice()); |
| | | existing.setFieldE(yuanToFen(item.getExtraPrice())); |
| | | existing.setUpdateTime(now); |
| | | pricingRuleMapper.updateById(existing); |
| | | } else { |
| | |
| | | rule.setType(Constants.ONE); |
| | | rule.setFieldA(String.valueOf(item.getCategoryId())); |
| | | rule.setFieldB(item.getStartDistance()); |
| | | rule.setFieldC(item.getStartPrice()); |
| | | rule.setFieldC(yuanToFen(item.getStartPrice())); |
| | | rule.setFieldD(item.getExtraDistance()); |
| | | rule.setFieldE(item.getExtraPrice()); |
| | | rule.setFieldE(yuanToFen(item.getExtraPrice())); |
| | | rule.setCityId(request.getCityId()); |
| | | rule.setDeleted(Constants.ZERO); |
| | | rule.setCreateTime(now); |
| | |
| | | if (rule != null) { |
| | | vo.setPricingRuleId(rule.getId()); |
| | | vo.setStartDistance(rule.getFieldB()); |
| | | vo.setStartPrice(rule.getFieldC()); |
| | | vo.setStartPrice(fenToYuan(rule.getFieldC())); |
| | | vo.setExtraDistance(rule.getFieldD()); |
| | | vo.setExtraPrice(rule.getFieldE()); |
| | | vo.setExtraPrice(fenToYuan(rule.getFieldE())); |
| | | } |
| | | return vo; |
| | | }).collect(Collectors.toList()); |
| | |
| | | |
| | | Date now = new Date(); |
| | | for (StoreDepositItemDTO item : request.getItems()) { |
| | | // 元转分 |
| | | String depositFen = String.valueOf(new BigDecimal(item.getDepositAmount()) |
| | | .multiply(new BigDecimal("100")) |
| | | .setScale(0, BigDecimal.ROUND_HALF_UP) |
| | | .longValue()); |
| | | QueryWrapper<PricingRule> qw = new QueryWrapper<>(); |
| | | qw.lambda() |
| | | .eq(PricingRule::getType, Constants.THREE) |
| | |
| | | PricingRule existing = pricingRuleMapper.selectOne(qw); |
| | | |
| | | if (existing != null) { |
| | | existing.setFieldB(item.getDepositAmount()); |
| | | existing.setFieldB(depositFen); |
| | | existing.setUpdateTime(now); |
| | | pricingRuleMapper.updateById(existing); |
| | | } else { |
| | | PricingRule rule = new PricingRule(); |
| | | rule.setType(Constants.THREE); |
| | | rule.setFieldA(String.valueOf(item.getFieldType())); |
| | | rule.setFieldB(item.getDepositAmount()); |
| | | rule.setFieldB(depositFen); |
| | | rule.setCityId(request.getCityId()); |
| | | rule.setDeleted(Constants.ZERO); |
| | | rule.setCreateTime(now); |
| | |
| | | PricingRule rule = existingMap.get(String.valueOf(i)); |
| | | if (rule != null) { |
| | | vo.setPricingRuleId(rule.getId()); |
| | | vo.setDepositAmount(rule.getFieldB()); |
| | | vo.setDepositAmount(fenToYuan(rule.getFieldB())); |
| | | } |
| | | result.add(vo); |
| | | } |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void batchSaveRevenueShare(RevenueShareSaveDTO request) { |
| | | // 校验:必须包含 fieldType 0-4 各一条 |
| | | // 校验:必须包含 fieldType 0-6 各一条 |
| | | Set<Integer> fieldTypes = request.getItems().stream() |
| | | .map(RevenueShareItemDTO::getFieldType) |
| | | .collect(Collectors.toSet()); |
| | | if (fieldTypes.size() != Constants.FIVE) { |
| | | if (fieldTypes.size() != Constants.SEVEN) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), |
| | | "必须包含企业寄(0)、个人寄(1)、企业取(2)、个人取(3)、配送员(4)共5条数据"); |
| | | "必须包含异地企业寄(0)、异地个人寄(1)、异地企业取(2)、异地个人取(3)、配送员(4)、就地企业存(5)、就地个人存(6)共7条数据"); |
| | | } |
| | | for (int i = 0; i <= Constants.FOUR; i++) { |
| | | for (int i = 0; i <= Constants.SIX; i++) { |
| | | if (!fieldTypes.contains(i)) { |
| | | throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), |
| | | "缺少类型" + i + "的数据"); |
| | |
| | | Map<String, PricingRule> existingMap = rules.stream() |
| | | .collect(Collectors.toMap(PricingRule::getFieldA, r -> r)); |
| | | |
| | | // 固定返回5条:企业寄(0)、个人寄(1)、企业取(2)、个人取(3)、配送员(4) |
| | | // 固定返回7条:异地企业寄(0)、异地个人寄(1)、异地企业取(2)、异地个人取(3)、配送员(4)、就地企业存(5)、就地个人存(6) |
| | | List<RevenueShareVO> result = new ArrayList<>(); |
| | | String[] typeNames = {"企业寄", "个人寄", "企业取", "个人取", "配送员"}; |
| | | for (int i = 0; i <= Constants.FOUR; i++) { |
| | | String[] typeNames = {"异地企业寄件", "异地个人寄件", "异地企业取件", "异地个人取件", "配送员", "就地企业存件", "就地个人存件"}; |
| | | for (int i = 0; i <= Constants.SIX; i++) { |
| | | RevenueShareVO vo = new RevenueShareVO(); |
| | | vo.setFieldType(i); |
| | | vo.setFieldTypeName(typeNames[i]); |
| | |
| | | return result; |
| | | } |
| | | |
| | | private String yuanToFen(String yuan) { |
| | | if (yuan == null || yuan.isEmpty()) return "0"; |
| | | return String.valueOf(new BigDecimal(yuan) |
| | | .multiply(new BigDecimal("100")) |
| | | .setScale(0, RoundingMode.HALF_UP) |
| | | .longValue()); |
| | | } |
| | | |
| | | private String fenToYuan(String fen) { |
| | | if (fen == null || fen.isEmpty()) return "0"; |
| | | return new BigDecimal(fen) |
| | | .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP) |
| | | .toPlainString(); |
| | | } |
| | | |
| | | } |