| | |
| | | |
| | | exportProcessContractToWord(exportProcessContract); |
| | | } |
| | | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public AjaxResult importSalsesLedger(MultipartFile file) { |
| | |
| | | continue; |
| | | } |
| | | |
| | | if (importDto.getQuantity() == null ) { |
| | | if (importDto.getQuantity() == null) { |
| | | errorMessages.add(String.format("第%d行:数量不能为空", rowNum)); |
| | | skipCount++; |
| | | continue; |
| | |
| | | salesLedger.setCustomerId(matchedCustomer.getId()); |
| | | salesLedger.setCustomerContractNo(matchedCustomer.getTaxpayerIdentificationNumber()); |
| | | Date date = importDto.getOrderDate(); |
| | | if (ObjectUtils.isEmpty(date)){ |
| | | if (ObjectUtils.isEmpty(date)) { |
| | | date = lastDate; |
| | | } |
| | | lastDate = date; |
| | |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public int addOrUpdateSalesLedger(SalesLedgerDto salesLedgerDto) { |
| | | // 1. 校验客户信息 |
| | | CustomerPrivatePoolDto customer = customerPrivatePoolMapper.selectInfo(salesLedgerDto.getCustomerId()); |
| | | if (customer == null) { |
| | | throw new BaseException("客户不存在"); |
| | | } |
| | | // 必须填写销售合同号 |
| | | // 1. 校验客户信息 |
| | | CustomerPrivatePoolDto customer = customerPrivatePoolMapper.selectInfo(salesLedgerDto.getCustomerId()); |
| | | if (customer == null) { |
| | | throw new BaseException("客户不存在"); |
| | | } |
| | | // 必须填写销售合同号 |
| | | // Assert.notNull(salesLedgerDto.getSalesContractNo(), "销售合同号不能为空"); |
| | | |
| | | // 2. DTO转Entity |
| | | SalesLedger salesLedger = convertToEntity(salesLedgerDto); |
| | | salesLedger.setCustomerName(customer.getCustomerName()); |
| | | salesLedger.setTenantId(customer.getTenantId()); |
| | | // 2. DTO转Entity |
| | | SalesLedger salesLedger = convertToEntity(salesLedgerDto); |
| | | salesLedger.setCustomerName(customer.getCustomerName()); |
| | | salesLedger.setTenantId(customer.getTenantId()); |
| | | |
| | | // 3. 新增或更新主表 |
| | | if (salesLedger.getId() == null) { |
| | | // 为空 自动生成 |
| | | String contractNo =StrUtil.isBlank(salesLedgerDto.getSalesContractNo())? generateSalesContractNoBy8Date():salesLedgerDto.getSalesContractNo(); |
| | | // 不能有重复数据的合同号 |
| | | Assert.isTrue(salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>() |
| | | .eq(SalesLedger::getSalesContractNo, contractNo) |
| | | .last("limit 1")) == null, contractNo+"合同号已存在"); |
| | | salesLedger.setSalesContractNo(contractNo); |
| | | salesLedgerMapper.insert(salesLedger); |
| | | } else { |
| | | salesLedger.setSalesContractNo(null); |
| | | salesLedgerMapper.updateById(salesLedger); |
| | | } |
| | | // 3. 新增或更新主表 |
| | | if (salesLedger.getId() == null) { |
| | | // 为空 自动生成 |
| | | String contractNo = StrUtil.isBlank(salesLedgerDto.getSalesContractNo()) ? generateSalesContractNoBy8Date() : salesLedgerDto.getSalesContractNo(); |
| | | // 不能有重复数据的合同号 |
| | | Assert.isTrue(salesLedgerMapper.selectOne(new LambdaQueryWrapper<SalesLedger>() |
| | | .eq(SalesLedger::getSalesContractNo, contractNo) |
| | | .last("limit 1")) == null, contractNo + "合同号已存在"); |
| | | salesLedger.setSalesContractNo(contractNo); |
| | | salesLedgerMapper.insert(salesLedger); |
| | | } else { |
| | | salesLedger.setSalesContractNo(null); |
| | | salesLedgerMapper.updateById(salesLedger); |
| | | } |
| | | |
| | | // 4. 处理子表数据 |
| | | List<SalesLedgerProduct> productList = salesLedgerDto.getProductData(); |
| | | for (SalesLedgerProduct product : productList) { |
| | | //空的先新增基础数据 非空直接往下走 |
| | | if (ObjectUtils.isEmpty(product.getProductModelId())) { |
| | | ProductModelAnticlockwiseDto productModelAnticlockwiseDto = new ProductModelAnticlockwiseDto(); |
| | | productModelAnticlockwiseDto.setModel(product.getSpecificationModel()); |
| | | productModelAnticlockwiseDto.setProductName(product.getProductCategory()); |
| | | productModelAnticlockwiseDto.setUnit(product.getUnit()); |
| | | productModelAnticlockwiseDto.setSubUnit(product.getUnit()); |
| | | Long productModelId = productModelService.productModelAnticlockwise(productModelAnticlockwiseDto); |
| | | product.setProductModelId(productModelId); |
| | | } |
| | | } |
| | | if (productList != null && !productList.isEmpty()) { |
| | | handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType())); |
| | | updateMainContractAmount( |
| | | salesLedger.getId(), |
| | | productList, |
| | | SalesLedgerProduct::getTaxInclusiveTotalPrice, |
| | | salesLedgerMapper, |
| | | SalesLedger.class |
| | | ); |
| | | } |
| | | // 4. 处理子表数据 |
| | | List<SalesLedgerProduct> productList = salesLedgerDto.getProductData(); |
| | | for (SalesLedgerProduct product : productList) { |
| | | //空的先新增基础数据 非空直接往下走 |
| | | ProductModelAnticlockwiseDto productModelAnticlockwiseDto = new ProductModelAnticlockwiseDto(); |
| | | productModelAnticlockwiseDto.setModel(product.getSpecificationModel()); |
| | | productModelAnticlockwiseDto.setProductName(product.getProductCategory()); |
| | | productModelAnticlockwiseDto.setUnit(product.getUnit()); |
| | | productModelAnticlockwiseDto.setSubUnit(product.getUnit()); |
| | | Long productModelId = productModelService.productModelAnticlockwise(productModelAnticlockwiseDto); |
| | | product.setProductModelId(productModelId); |
| | | } |
| | | if (productList != null && !productList.isEmpty()) { |
| | | handleSalesLedgerProducts(salesLedger.getId(), productList, EnumUtil.fromCode(SaleEnum.class, salesLedgerDto.getType())); |
| | | updateMainContractAmount( |
| | | salesLedger.getId(), |
| | | productList, |
| | | SalesLedgerProduct::getTaxInclusiveTotalPrice, |
| | | salesLedgerMapper, |
| | | SalesLedger.class |
| | | ); |
| | | } |
| | | try { |
| | | |
| | | // 5. 迁移临时文件到正式目录 |
| | |
| | | return entity; |
| | | } |
| | | |
| | | public String generateSalesContractNoBy8Date(){ |
| | | public String generateSalesContractNoBy8Date() { |
| | | String yyMM = DateUtil.format(new Date(), "yyMM"); |
| | | // 查询一个月有多少订单 |
| | | Date begin = DateUtil.beginOfMonth(new Date()); |
| | |
| | | Long seq = Optional.of(count).orElse(0L) + 1; |
| | | return String.format("%s%04d", yyMM, seq); |
| | | } |
| | | |
| | | |
| | | |
| | | @Transactional(readOnly = true) |