| | |
| | | import com.ruoyi.framework.web.domain.R; |
| | | import com.ruoyi.sales.mapper.SalesLedgerMapper; |
| | | import com.ruoyi.sales.pojo.SalesLedger; |
| | | import com.ruoyi.sales.vo.CustomerTransactionsDetailsVo; |
| | | import com.ruoyi.sales.vo.CustomerTransactionsVo; |
| | | import lombok.AllArgsConstructor; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | |
| | | import org.springframework.util.CollectionUtils; |
| | | import org.springframework.web.multipart.MultipartFile; |
| | | |
| | | import java.math.BigDecimal; |
| | | import java.time.ZoneId; |
| | | import java.util.*; |
| | | import java.util.stream.Collectors; |
| | |
| | | throw new RuntimeException("客户档案下有销售合同,请先删除销售合同"); |
| | | } |
| | | // 查询是否有已分配的公海客户 |
| | | List<Customer> assignedPools = customerMapper.selectList( |
| | | /*List<Customer> assignedPools = customerMapper.selectList( |
| | | new QueryWrapper<Customer>().lambda() |
| | | .in(Customer::getId, idList) |
| | | .eq(Customer::getType, 1). |
| | |
| | | ); |
| | | if (!assignedPools.isEmpty()) { |
| | | throw new RuntimeException("客户档案下有已分配的公海客户,请先收回"); |
| | | } |
| | | }*/ |
| | | // 删除客户的同时也需要删除对应的客户跟随、附件和回访提醒 |
| | | for (Long id : ids) { |
| | | customerFollowUpService.deleteByCustomerId(id); |
| | |
| | | } |
| | | |
| | | // 根据 type 参数设置客户类型(私海/公海) |
| | | if (type != null) { |
| | | /*if (type != null) { |
| | | userList.forEach(customer -> { |
| | | customer.setType(type); |
| | | }); |
| | | } |
| | | }*/ |
| | | this.saveOrUpdateBatch(userList); |
| | | return R.ok(true); |
| | | } catch (Exception e) { |
| | |
| | | //将客户的type改为1 且直接分配给当前用户 |
| | | Customer customer = customerMapper.selectById(id); |
| | | customer.setType(1); |
| | | customer.setIsAssigned(1); |
| | | customer.setIsAssigned(0); |
| | | return this.updateById(customer); |
| | | } |
| | | |
| | | @Override |
| | | public IPage<CustomerTransactionsVo> customewTransactions(Page page, String customerName) { |
| | | IPage<CustomerTransactionsVo> p = customerMapper.customewTransactions(page, customerName); |
| | | List<CustomerTransactionsVo> records = p.getRecords(); |
| | | if (!CollectionUtils.isEmpty(records)) { |
| | | List<Long> customerIds = records.stream().map(CustomerTransactionsVo::getCustomerId).collect(Collectors.toList()); |
| | | List<Map<String, Object>> shippedAmountList = customerMapper.getShippedAmountByCustomerIds(customerIds); |
| | | Map<Long, BigDecimal> shippedAmountMap = new HashMap<>(); |
| | | for (Map<String, Object> map : shippedAmountList) { |
| | | if (map.get("outboundAmount") != null) { |
| | | shippedAmountMap.put(((Number) map.get("customerId")).longValue(), new BigDecimal(String.valueOf(map.get("outboundAmount")))); |
| | | } |
| | | } |
| | | for (CustomerTransactionsVo vo : records) { |
| | | BigDecimal outboundAmount = shippedAmountMap.getOrDefault(vo.getCustomerId(), BigDecimal.ZERO); |
| | | vo.setShippedAmount(outboundAmount); |
| | | BigDecimal contractAmounts = vo.getContractAmounts() == null ? BigDecimal.ZERO : vo.getContractAmounts(); |
| | | BigDecimal unshippedAmount = contractAmounts.subtract(outboundAmount); |
| | | if (unshippedAmount.compareTo(BigDecimal.ZERO) < 0) { |
| | | unshippedAmount = BigDecimal.ZERO; |
| | | } |
| | | vo.setUnshippedAmount(unshippedAmount); |
| | | } |
| | | } |
| | | return p; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<CustomerTransactionsDetailsVo> customewTransactionsDetails(Page page, Long customerId) { |
| | | IPage<CustomerTransactionsDetailsVo> p = customerMapper.customewTransactionsDetails(page, customerId); |
| | | List<CustomerTransactionsDetailsVo> records = p.getRecords(); |
| | | if (!CollectionUtils.isEmpty(records)) { |
| | | List<Long> salesLedgerIds = records.stream().map(CustomerTransactionsDetailsVo::getSalesLedgerId).collect(Collectors.toList()); |
| | | List<Map<String, Object>> shippedAmountList = customerMapper.getShippedAmountBySalesLedgerIds(salesLedgerIds); |
| | | Map<Long, BigDecimal> shippedAmountMap = new HashMap<>(); |
| | | for (Map<String, Object> map : shippedAmountList) { |
| | | if (map.get("outboundAmount") != null) { |
| | | shippedAmountMap.put(((Number) map.get("salesLedgerId")).longValue(), new BigDecimal(String.valueOf(map.get("outboundAmount")))); |
| | | } |
| | | } |
| | | for (CustomerTransactionsDetailsVo vo : records) { |
| | | BigDecimal outboundAmount = shippedAmountMap.getOrDefault(vo.getSalesLedgerId(), BigDecimal.ZERO); |
| | | vo.setShippedAmount(outboundAmount); |
| | | BigDecimal contractAmount = vo.getContractAmount() == null ? BigDecimal.ZERO : vo.getContractAmount(); |
| | | BigDecimal unshippedAmount = contractAmount.subtract(outboundAmount); |
| | | if (unshippedAmount.compareTo(BigDecimal.ZERO) < 0) { |
| | | unshippedAmount = BigDecimal.ZERO; |
| | | } |
| | | vo.setUnshippedAmount(unshippedAmount); |
| | | } |
| | | } |
| | | return p; |
| | | } |
| | | |
| | | /** |
| | | * 下划线命名转驼峰命名 |
| | | */ |