doc/ºÓÄϺױÚÌìãå¸Ö»¯²£Á§³§.sql
@@ -38,4 +38,14 @@ ADD COLUMN remark VARCHAR(500) DEFAULT NULL COMMENT '夿³¨'; ALTER TABLE sales_ledger_product_process CHANGE COLUMN remark code VARCHAR(255) COMMENT 'ç¼ç '; CHANGE COLUMN remark code VARCHAR(255) COMMENT 'ç¼ç '; ALTER TABLE `product-inventory-management-hbtmblc`.`sales_ledger_product` MODIFY COLUMN `width` decimal(20, 15) NULL DEFAULT NULL COMMENT '宽(mm)' AFTER `is_checked`, MODIFY COLUMN `height` decimal(20, 15) NULL DEFAULT NULL COMMENT 'é«(mm)' AFTER `width`, MODIFY COLUMN `actual_piece_area` decimal(20, 15) NULL DEFAULT NULL COMMENT 'å®é åçé¢ç§¯(ã¡)' AFTER `height`, MODIFY COLUMN `actual_total_area` decimal(20, 15) NULL DEFAULT NULL COMMENT 'å®é æ»é¢ç§¯(ã¡)' AFTER `actual_piece_area`, MODIFY COLUMN `settle_piece_area` decimal(20, 15) NULL DEFAULT NULL COMMENT 'ç»ç®åçé¢ç§¯(ã¡)' AFTER `actual_total_area`, MODIFY COLUMN `settle_total_area` decimal(20, 15) NULL DEFAULT NULL COMMENT 'ç»ç®æ»é¢ç§¯(ã¡)' AFTER `settle_piece_area`, ADD COLUMN `perimeter` decimal(20, 15) NULL COMMENT 'å¨é¿' AFTER `settle_total_area`, ADD COLUMN `heavy_box` decimal(20, 15) NULL COMMENT 'éç®±' AFTER `perimeter`; src/main/java/com/ruoyi/sales/pojo/SalesLedgerProduct.java
@@ -270,6 +270,18 @@ @ApiModelProperty("ç»ç®æ»é¢ç§¯(ã¡)") private BigDecimal settleTotalArea; /** * å¨é¿ */ @ApiModelProperty("å¨é¿(cm)") private BigDecimal perimeter; /** * å¨é¿ */ @ApiModelProperty("éç®±") private BigDecimal heavyBox; @TableField(exist = false) @ApiModelProperty("éå®äº§åé¢å¤å å·¥") private List<SalesLedgerProductProcess> salesProductProcessList; src/main/java/com/ruoyi/sales/pojo/SalesLedgerProductProcessBind.java
@@ -32,7 +32,7 @@ private Integer id; @ApiModelProperty(value = "éå®å°è´¦äº§åä¿¡æ¯ID") private Integer salesLedgerProductId; private Long salesLedgerProductId; @ApiModelProperty(value = "éå®äº§åå å·¥æç»ID") private Integer salesLedgerProductProcessId; src/main/java/com/ruoyi/sales/service/ISalesLedgerProductProcessBindService.java
@@ -1,7 +1,10 @@ package com.ruoyi.sales.service; import com.ruoyi.sales.pojo.SalesLedgerProductProcess; import com.ruoyi.sales.pojo.SalesLedgerProductProcessBind; import com.baomidou.mybatisplus.extension.service.IService; import java.util.List; /** * <p> @@ -13,4 +16,6 @@ */ public interface ISalesLedgerProductProcessBindService extends IService<SalesLedgerProductProcessBind> { void updateProductProcessBind(List<SalesLedgerProductProcess> list, Long salesLedgerProductId); } src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductProcessBindServiceImpl.java
@@ -1,10 +1,14 @@ package com.ruoyi.sales.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.sales.pojo.SalesLedgerProductProcess; import com.ruoyi.sales.pojo.SalesLedgerProductProcessBind; import com.ruoyi.sales.mapper.SalesLedgerProductProcessBindMapper; import com.ruoyi.sales.service.ISalesLedgerProductProcessBindService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Service; import java.util.List; /** * <p> @@ -17,4 +21,19 @@ @Service public class SalesLedgerProductProcessBindServiceImpl extends ServiceImpl<SalesLedgerProductProcessBindMapper, SalesLedgerProductProcessBind> implements ISalesLedgerProductProcessBindService { @Override public void updateProductProcessBind(List<SalesLedgerProductProcess> list, Long salesLedgerProductId) { if (list == null || list.isEmpty()) { return; } // å æ¸ 空åæå ¥ baseMapper.delete(new LambdaQueryWrapper<SalesLedgerProductProcessBind>().in(SalesLedgerProductProcessBind::getSalesLedgerProductId, salesLedgerProductId)); list.forEach(s -> { SalesLedgerProductProcessBind salesLedgerProductProcessBind = new SalesLedgerProductProcessBind(); salesLedgerProductProcessBind.setSalesLedgerProductId(salesLedgerProductId); salesLedgerProductProcessBind.setSalesLedgerProductProcessId(s.getId()); salesLedgerProductProcessBind.setQuantity(s.getQuantity()); baseMapper.insert(salesLedgerProductProcessBind); }); } } src/main/java/com/ruoyi/sales/service/impl/SalesLedgerProductServiceImpl.java
@@ -24,9 +24,8 @@ import com.ruoyi.sales.mapper.SalesLedgerMapper; import com.ruoyi.sales.mapper.SalesLedgerProductMapper; import com.ruoyi.sales.mapper.ShippingInfoMapper; import com.ruoyi.sales.pojo.SalesLedger; import com.ruoyi.sales.pojo.SalesLedgerProduct; import com.ruoyi.sales.pojo.ShippingInfo; import com.ruoyi.sales.pojo.*; import com.ruoyi.sales.service.ISalesLedgerProductProcessBindService; import com.ruoyi.sales.service.ISalesLedgerProductService; import com.ruoyi.stock.mapper.StockInventoryMapper; import com.ruoyi.stock.pojo.StockInventory; @@ -84,7 +83,7 @@ private StockUtils stockUtils; private final ISalesLedgerProductProcessBindService salesLedgerProductProcessBindService; @Autowired private ProductStructureMapper productStructureMapper; @@ -104,14 +103,14 @@ // queryWrapper.eq(SalesLedgerProduct::getSalesLedgerId, salesLedgerProduct.getSalesLedgerId()) // .eq(SalesLedgerProduct::getType, salesLedgerProduct.getType()); List<SalesLedgerProduct> salesLedgerProducts = salesLedgerProductMapper.selectSalesLedgerProductList(salesLedgerProduct); if(!CollectionUtils.isEmpty(salesLedgerProducts)){ if (!CollectionUtils.isEmpty(salesLedgerProducts)) { salesLedgerProducts.forEach(item -> { // åè´§ä¿¡æ¯ ShippingInfo shippingInfo = shippingInfoMapper.selectOne(new LambdaQueryWrapper<ShippingInfo>() .eq(ShippingInfo::getSalesLedgerProductId, item.getId()) .orderByDesc(ShippingInfo::getCreateTime) .last("limit 1")); if(shippingInfo != null){ if (shippingInfo != null) { item.setShippingDate(shippingInfo.getShippingDate()); item.setShippingCarNumber(shippingInfo.getShippingCarNumber()); item.setShippingStatus(shippingInfo.getStatus()); @@ -131,8 +130,8 @@ BigDecimal noInvoiceNum = BigDecimal.ZERO; BigDecimal noInvoiceAmount = BigDecimal.ZERO; for (InvoiceRegistrationProductDto registrationProductDto : invoiceRegistrationProductDtoList) { if(ledgerProduct.getId().intValue() == registrationProductDto.getSalesLedgerProductId()){ invoiceNum = invoiceNum.add(registrationProductDto.getInvoiceNum()); if (ledgerProduct.getId().intValue() == registrationProductDto.getSalesLedgerProductId()) { invoiceNum = invoiceNum.add(registrationProductDto.getInvoiceNum()); invoiceAmount = invoiceAmount.add(registrationProductDto.getInvoiceAmount()); } } @@ -166,7 +165,7 @@ //å é¤åè´§ä¿¡æ¯ List<ShippingInfo> shippingInfos = shippingInfoMapper.selectList(new LambdaQueryWrapper<ShippingInfo>() .in(ShippingInfo::getSalesLedgerProductId, Arrays.asList(ids))); if(!CollectionUtils.isEmpty(shippingInfos)){ if (!CollectionUtils.isEmpty(shippingInfos)) { shippingInfoService.delete(shippingInfos.stream().map(ShippingInfo::getId).collect(Collectors.toList())); } @@ -203,12 +202,12 @@ @Transactional(rollbackFor = Exception.class) public int addOrUpdateSalesLedgerProduct(SalesLedgerProduct salesLedgerProduct) { // å¾ åæ¬¾ï¼ä»æ¬¾ if(salesLedgerProduct.getType().equals(1)){ if (salesLedgerProduct.getType().equals(1)) { salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getInvoiceTotal())); //æªå¼ç¥¨æ°é+éé¢ salesLedgerProduct.setNoInvoiceNum(salesLedgerProduct.getQuantity()); salesLedgerProduct.setNoInvoiceAmount(salesLedgerProduct.getTaxInclusiveTotalPrice()); }else{ } else { salesLedgerProduct.setPendingTicketsTotal(salesLedgerProduct.getTaxInclusiveTotalPrice().subtract(salesLedgerProduct.getTicketsTotal())); // æªæ¥ç¥¨æ°é+éé¢ salesLedgerProduct.setFutureTickets(salesLedgerProduct.getQuantity()); @@ -258,6 +257,9 @@ PurchaseLedger.class ); } // æ¸ ç©ºéå®äº§åç»å®çå å·¥ salesLedgerProductProcessBindService.updateProductProcessBind(salesLedgerProduct.getSalesProductProcessList(), salesLedgerProduct.getId()); } return result; } @@ -279,7 +281,7 @@ List<ProcessRoute> processRoutes = processRouteMapper.selectList(new QueryWrapper<ProcessRoute>().lambda() .eq(ProcessRoute::getProductModelId, salesLedgerProduct.getProductModelId()) .orderByDesc(ProcessRoute::getCreateTime)); if (processRoutes.size()>0){ if (processRoutes.size() > 0) { ProcessRoute processRoute = processRoutes.get(0); //æ°å¢ç产订åå·¥èºè·¯çº¿ä¸»è¡¨ ProductProcessRoute productProcessRoute = new ProductProcessRoute(); @@ -316,7 +318,7 @@ } } // çæå®æ´çå·¥åå· String workOrderNoStr ="GD"+ String.format("%s%03d", datePrefix, sequenceNumber); String workOrderNoStr = "GD" + String.format("%s%03d", datePrefix, sequenceNumber); ProductWorkOrder productWorkOrder = new ProductWorkOrder(); productWorkOrder.setProductProcessRouteItemId(productProcessRouteItem.getId()); productWorkOrder.setProductOrderId(productOrder.getId()); @@ -431,9 +433,9 @@ IPage<SalesLedgerProductDto> salesLedgerProductDtoIPage = salesLedgerProductMapper.listPage(page, salesLedgerProduct); salesLedgerProductDtoIPage.getRecords().forEach(item -> { // å¤æç¶æ if(item.getTaxInclusiveTotalPrice().compareTo(item.getInvoiceTotal()) == 0){ if (item.getTaxInclusiveTotalPrice().compareTo(item.getInvoiceTotal()) == 0) { item.setStatusName("已宿仿¬¾"); }else{ } else { item.setStatusName("æªå®æä»æ¬¾"); } }); @@ -445,9 +447,9 @@ IPage<SalesLedgerProductDto> salesLedgerProductDtoIPage = salesLedgerProductMapper.listPagePurchaseLedger(page, salesLedgerProduct); salesLedgerProductDtoIPage.getRecords().forEach(item -> { // å¤æç¶æ if(item.getTaxInclusiveTotalPrice().compareTo(item.getTicketsTotal()) == 0){ if (item.getTaxInclusiveTotalPrice().compareTo(item.getTicketsTotal()) == 0) { item.setStatusName("已宿仿¬¾"); }else{ } else { item.setStatusName("æªå®æä»æ¬¾"); } }); @@ -488,6 +490,7 @@ throw new RuntimeException("å¨ææ´æ°ä¸»è¡¨éé¢å¤±è´¥", e); } } @Override public R judgmentInventory(SalesLedgerProduct salesLedgerProduct) { //è·åäº§åææ°çå·¥èºè·¯çº¿ @@ -506,7 +509,7 @@ //æéæ°é BigDecimal multiply = salesLedgerProduct.getQuantity().multiply(productStructureDto.getUnitQuantity()); BigDecimal subtract =stockInventory.getQualitity().subtract(stockInventory.getLockedQuantity()).subtract(multiply).divide(BigDecimal.ONE, 2, RoundingMode.CEILING); BigDecimal subtract = stockInventory.getQualitity().subtract(stockInventory.getLockedQuantity()).subtract(multiply).divide(BigDecimal.ONE, 2, RoundingMode.CEILING); if (subtract.compareTo(BigDecimal.ZERO) <= 0) { count++; stringBuffer.append(productStructureDto.getProductName()) @@ -517,9 +520,9 @@ .append(System.lineSeparator()); } } if (count>0) { if (count > 0) { return R.fail(stringBuffer.toString()); }else { } else { return R.ok(); } } src/main/java/com/ruoyi/sales/service/impl/SalesLedgerServiceImpl.java
@@ -754,17 +754,8 @@ for (SalesLedgerProduct product : updateList) { product.setType(type.getCode()); salesLedgerProductMapper.updateById(product); // å®ç°å é¤ç»å®çå ¨é¨å å·¥ salesLedgerProductProcessBindService.remove(new LambdaQueryWrapper<SalesLedgerProductProcessBind>().eq(SalesLedgerProductProcessBind::getSalesLedgerProductId, product.getId())); // ç»å®äº§åé¢å¤å å·¥ List<SalesLedgerProductProcess> salesProductProcessList = product.getSalesProductProcessList(); salesProductProcessList.forEach(s -> { SalesLedgerProductProcessBind processBind = new SalesLedgerProductProcessBind(); processBind.setSalesLedgerProductId(Math.toIntExact(product.getId())); processBind.setSalesLedgerProductProcessId(s.getId()); processBind.setQuantity(s.getQuantity()); salesLedgerProductProcessBindService.save(processBind); }); // æ¸ ç©ºéå®äº§åç»å®çå å·¥ salesLedgerProductProcessBindService.updateProductProcessBind(product.getSalesProductProcessList(), product.getId()); } } // æ§è¡æå ¥æä½ @@ -776,14 +767,8 @@ salesLedgerProduct.setPendingInvoiceTotal(salesLedgerProduct.getTaxInclusiveTotalPrice()); salesLedgerProductMapper.insert(salesLedgerProduct); // ç»å®äº§åé¢å¤å å·¥ List<SalesLedgerProductProcess> salesProductProcessList = salesLedgerProduct.getSalesProductProcessList(); salesProductProcessList.forEach(s -> { SalesLedgerProductProcessBind processBind = new SalesLedgerProductProcessBind(); processBind.setSalesLedgerProductId(Math.toIntExact(salesLedgerProduct.getId())); processBind.setSalesLedgerProductProcessId(s.getId()); processBind.setQuantity(s.getQuantity()); salesLedgerProductProcessBindService.save(processBind); }); // æ¸ ç©ºéå®äº§åç»å®çå å·¥ salesLedgerProductProcessBindService.updateProductProcessBind(salesLedgerProduct.getSalesProductProcessList(), salesLedgerProduct.getId()); // æ·»å çäº§æ°æ® salesLedgerProductServiceImpl.addProductionData(salesLedgerProduct); }