| | |
| | | updateReqVO.setOwnerUserId(null).setStatusTypeId(null); // ä¸å
è®¸æ´æ°çåæ®µ |
| | | // 1.1 æ ¡éªåå¨ |
| | | CrmBusinessDO oldBusiness = validateBusinessExists(updateReqVO.getId()); |
| | | // 1.2 æ ¡éªäº§åé¡¹çæææ§ |
| | | List<CrmBusinessProductDO> businessProducts = validateBusinessProducts(updateReqVO.getProducts()); |
| | | // 1.2 æ ¡éªäº§åé¡¹çæææ§ï¼ä¼ å
¥æ§äº§åå表ç¨äºåå¹¶ null åæ®µï¼ |
| | | List<CrmBusinessProductDO> oldProducts = businessProductMapper.selectListByBusinessId(updateReqVO.getId()); |
| | | List<CrmBusinessProductDO> businessProducts = validateBusinessProducts(updateReqVO.getProducts(), oldProducts); |
| | | // 1.3 æ ¡éªå
³èåæ®µ |
| | | validateRelationDataExists(updateReqVO); |
| | | |
| | |
| | | updateBusinessProduct(updateObj.getId(), businessProducts); |
| | | |
| | | // 3. è®°å½æä½æ¥å¿ä¸ä¸æ |
| | | updateReqVO.setOwnerUserId(oldBusiness.getOwnerUserId()); // é¿å
æä½æ¥å¿åºç°âå é¤è´è´£äººâçæ
åµ |
| | | updateReqVO.setOwnerUserId(oldBusiness.getOwnerUserId()); // é¿å
æä½æ¥å¿åºç°"å é¤è´è´£äºº"çæ
åµ |
| | | LogRecordContext.putVariable(DiffParseFunction.OLD_OBJECT, BeanUtils.toBean(oldBusiness, CrmBusinessSaveReqVO.class)); |
| | | LogRecordContext.putVariable("businessName", oldBusiness.getName()); |
| | | } |
| | |
| | | } |
| | | |
| | | private List<CrmBusinessProductDO> validateBusinessProducts(List<CrmBusinessSaveReqVO.BusinessProduct> list) { |
| | | return validateBusinessProducts(list, Collections.emptyList()); |
| | | } |
| | | |
| | | /** |
| | | * æ ¡éªäº§åé¡¹çæææ§ï¼æ´æ°åºæ¯åå¹¶æ§æ°æ®ï¼ |
| | | * |
| | | * @param list åç«¯ä¼ å
¥ç产åå表 |
| | | * @param oldProducts å·²æäº§åå表ï¼ç¨äºåå¹¶ null åæ®µï¼ |
| | | * @return å¤çåç产å DO å表 |
| | | */ |
| | | private List<CrmBusinessProductDO> validateBusinessProducts(List<CrmBusinessSaveReqVO.BusinessProduct> list, |
| | | List<CrmBusinessProductDO> oldProducts) { |
| | | // 1. æ ¡éªç©æåå¨ |
| | | Set<Long> itemIds = convertSet(list, CrmBusinessSaveReqVO.BusinessProduct::getItemId); |
| | | Map<Long, MdmItemRespDTO> itemMap = mdmItemApi.getItemMap(itemIds); |
| | |
| | | throw exception(PRODUCT_NOT_EXISTS); |
| | | } |
| | | } |
| | | // 2. 转å为 CrmBusinessProductDO å表 |
| | | return convertList(list, o -> BeanUtils.toBean(o, CrmBusinessProductDO.class, |
| | | item -> item.setTotalPrice(MoneyUtils.priceMultiply(item.getBusinessPrice(), item.getCount())))); |
| | | // 2. æå»ºæ§äº§å Mapï¼æ id ç´¢å¼ï¼ |
| | | Map<Long, CrmBusinessProductDO> oldProductMap = convertMap(oldProducts, CrmBusinessProductDO::getId); |
| | | // 3. 转å为 CrmBusinessProductDO å表ï¼åå¹¶æ§æ°æ®ï¼ |
| | | return convertList(list, o -> { |
| | | CrmBusinessProductDO product = BeanUtils.toBean(o, CrmBusinessProductDO.class); |
| | | // æ´æ°åºæ¯ï¼å¦æäº§åå·²æ id ä¸ææ§æ°æ®ï¼ååå¹¶ null åæ®µ |
| | | if (o.getId() != null && oldProductMap.containsKey(o.getId())) { |
| | | CrmBusinessProductDO old = oldProductMap.get(o.getId()); |
| | | if (product.getBusinessPrice() == null) { |
| | | product.setBusinessPrice(old.getBusinessPrice()); |
| | | } |
| | | if (product.getItemPrice() == null) { |
| | | product.setItemPrice(old.getItemPrice()); |
| | | } |
| | | if (product.getCount() == null) { |
| | | product.setCount(old.getCount()); |
| | | } |
| | | if (product.getItemUnitId() == null) { |
| | | product.setItemUnitId(old.getItemUnitId()); |
| | | } |
| | | } |
| | | // ä¼å
使ç¨åç«¯ä¼ å
¥ç totalPriceï¼å¦åéè¿ businessPrice * count è®¡ç® |
| | | if (o.getTotalPrice() != null) { |
| | | product.setTotalPrice(o.getTotalPrice()); |
| | | } else { |
| | | product.setTotalPrice(MoneyUtils.priceMultiply(product.getBusinessPrice(), product.getCount())); |
| | | } |
| | | return product; |
| | | }); |
| | | } |
| | | |
| | | private void calculateTotalPrice(CrmBusinessDO business, List<CrmBusinessProductDO> businessProducts) { |
| | | business.setTotalProductPrice(getSumValue(businessProducts, CrmBusinessProductDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)); |
| | | BigDecimal discountPrice = MoneyUtils.priceMultiplyPercent(business.getTotalProductPrice(), business.getDiscountPercent()); |
| | | business.setTotalPrice(business.getTotalProductPrice().subtract(discountPrice)); |
| | | // totalProductPriceï¼ä¼å
使ç¨åç«¯ä¼ å
¥å¼ï¼å¦åä»äº§åæ±æ» |
| | | if (business.getTotalProductPrice() == null) { |
| | | business.setTotalProductPrice(getSumValue(businessProducts, CrmBusinessProductDO::getTotalPrice, BigDecimal::add, BigDecimal.ZERO)); |
| | | } |
| | | // totalPriceï¼ä¼å
使ç¨åç«¯ä¼ å
¥å¼ï¼å¦åæææ£è®¡ç® |
| | | if (business.getTotalPrice() == null) { |
| | | BigDecimal discountPrice = MoneyUtils.priceMultiplyPercent(business.getTotalProductPrice(), business.getDiscountPercent()); |
| | | business.setTotalPrice(business.getTotalProductPrice().subtract(discountPrice)); |
| | | } |
| | | } |
| | | |
| | | @Override |