| | |
| | | import com.ruoyi.procurementrecord.mapper.ReturnManagementMapper; |
| | | import com.ruoyi.procurementrecord.pojo.ReturnManagement; |
| | | import com.ruoyi.sales.mapper.SalesLedgerMapper; |
| | | import com.ruoyi.sales.mapper.SalesQuotationMapper; |
| | | import com.ruoyi.sales.pojo.SalesLedger; |
| | | import com.ruoyi.sales.pojo.SalesQuotation; |
| | | import com.ruoyi.sales.vo.CustomerTransactionsDetailsVo; |
| | | import com.ruoyi.sales.vo.CustomerTransactionsVo; |
| | | import lombok.AllArgsConstructor; |
| | |
| | | public class CustomerServiceImpl extends ServiceImpl<CustomerMapper, Customer> implements ICustomerService { |
| | | @Autowired |
| | | private SalesLedgerMapper salesLedgerMapper; |
| | | @Autowired |
| | | private SalesQuotationMapper salesQuotationMapper; |
| | | @Autowired |
| | | private ReturnManagementMapper returnManagementMapper; |
| | | @Autowired |
| | |
| | | public int updateCustomer(Customer customer) { |
| | | LoginUser loginUser = SecurityUtils.getLoginUser(); |
| | | Long tenantId = loginUser.getTenantId(); |
| | | validateCustomerEditPermission(customer.getId()); |
| | | customer.setTenantId(tenantId); |
| | | return customerMapper.updateById(customer); |
| | | } |
| | |
| | | if (!returnManagements.isEmpty()) { |
| | | throw new RuntimeException("客户档案下有销售退货,请先删除销售退货"); |
| | | } |
| | | |
| | | // 检查是否有销售报价关联 |
| | | List<SalesQuotation> salesQuotations = salesQuotationMapper.selectList(new QueryWrapper<SalesQuotation>().lambda().in(SalesQuotation::getCustomerId, idList)); |
| | | if (!salesQuotations.isEmpty()) { |
| | | throw new RuntimeException("客户档案下有销售报价,请先删除销售报价"); |
| | | } |
| | | |
| | | // 查询是否有已分配的公海客户 |
| | | List<Customer> assignedPools = customerMapper.selectList( |
| | | new QueryWrapper<Customer>().lambda() |
| | |
| | | public void recycleCustomer(CustomerDto customerDto) { |
| | | Customer customer = customerMapper.selectById(customerDto.getId()); |
| | | if (customer.getType() == 1 && customer.getIsAssigned() == 1) { // 公海且已分配 |
| | | validatePublicSeaRecyclePermission(customer.getId()); |
| | | customer.setIsAssigned(0); |
| | | customer.setUsageStatus(0L); |
| | | customer.setUsageUser(0L); |
| | |
| | | return this.updateById(customer); |
| | | } |
| | | |
| | | private void validateCustomerEditPermission(Long customerId) { |
| | | Customer customer = customerMapper.selectById(customerId); |
| | | if (customer == null) { |
| | | throw new RuntimeException("客户档案不存在"); |
| | | } |
| | | if (!hasSalesModuleReference(customerId)) { |
| | | return; |
| | | } |
| | | if (Objects.equals(customer.getType(), 0)) { |
| | | throw new RuntimeException("已被销售模块引用的私海客户不能编辑"); |
| | | } |
| | | if (Objects.equals(customer.getType(), 1) && Objects.equals(customer.getIsAssigned(), 1)) { |
| | | throw new RuntimeException("已领用并且被销售模块引用的公海客户不能编辑"); |
| | | } |
| | | } |
| | | |
| | | private void validatePublicSeaRecyclePermission(Long customerId) { |
| | | if (hasSalesModuleReference(customerId)) { |
| | | throw new RuntimeException("已领用并且被销售模块引用的公海客户不能回收"); |
| | | } |
| | | } |
| | | |
| | | private boolean hasSalesModuleReference(Long customerId) { |
| | | Long salesLedgerCount = salesLedgerMapper.selectCount(new QueryWrapper<SalesLedger>().lambda() |
| | | .eq(SalesLedger::getCustomerId, customerId)); |
| | | if (salesLedgerCount != null && salesLedgerCount > 0) { |
| | | return true; |
| | | } |
| | | Long salesQuotationCount = salesQuotationMapper.selectCount(new QueryWrapper<SalesQuotation>().lambda() |
| | | .eq(SalesQuotation::getCustomerId, customerId)); |
| | | if (salesQuotationCount != null && salesQuotationCount > 0) { |
| | | return true; |
| | | } |
| | | Long returnManagementCount = returnManagementMapper.selectCount(new QueryWrapper<ReturnManagement>().lambda() |
| | | .eq(ReturnManagement::getCustomerId, customerId)); |
| | | return returnManagementCount != null && returnManagementCount > 0; |
| | | } |
| | | |
| | | @Override |
| | | public IPage<CustomerTransactionsVo> customewTransactions(Page page, String customerName) { |
| | | return customerMapper.customewTransactions(page, customerName); |