src/main/java/com/ruoyi/inventory/controller/StockInController.java
@@ -12,7 +12,10 @@ import com.ruoyi.inventory.excel.StockInExcelDto; import com.ruoyi.inventory.service.StockInService; import com.ruoyi.inventory.pojo.StockIn; import com.ruoyi.purchase.dto.ProductRecordDto; import com.ruoyi.purchase.dto.PurchaseLedgerDto; import com.ruoyi.purchase.pojo.ProductRecord; import com.ruoyi.purchase.service.IProductRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.util.CollectionUtils; import org.springframework.web.bind.annotation.*; @@ -26,6 +29,12 @@ public class StockInController{ @Autowired private StockInService stockInService; @Autowired private IProductRecordService productRecordService; @GetMapping("/productlist") public AjaxResult list(String purchaseContractNumber) { return AjaxResult.success(productRecordService.selectProductRecordListByPuechaserId(purchaseContractNumber)); } @GetMapping("/listPage") public AjaxResult listPage(Page page, StockinDto stockinDto) { @@ -35,6 +44,11 @@ @PostMapping("/add") public AjaxResult add(@RequestBody StockIn stockIn) { stockInService.saveStockin(stockIn); return AjaxResult.success(); } @PostMapping("/addstockinList") public AjaxResult addstockinList(@RequestBody List<StockIn> stockInList) { stockInService.addstockin(stockInList); return AjaxResult.success(); } @@ -63,4 +77,9 @@ public void export(HttpServletResponse response, StockinDto stockinDto) { stockInService.stockinExport(response, stockinDto); } @PostMapping("/batchSave") public AjaxResult batchSaveStockin(@RequestBody List<StockIn> stockInList) { stockInService.batchSaveStockin(stockInList); return AjaxResult.success(); } } src/main/java/com/ruoyi/inventory/controller/StockManagementController.java
@@ -22,6 +22,11 @@ public class StockManagementController { @Autowired private StockManagementService stockManagementService; // æ ¹æ®idæ¥è¯¢ @RequestMapping("/{id}") public AjaxResult getStockManageById(@PathVariable Long id) { return success(stockManagementService.getStockManageById(id)); } // æ´æ°åºå @PutMapping("/update") @@ -51,4 +56,5 @@ public AjaxResult stockout(@RequestBody StockManagement stockManagement) { return success(stockManagementService.stockout(stockManagement)); } } src/main/java/com/ruoyi/inventory/controller/StockOutController.java
@@ -27,11 +27,11 @@ @Autowired private StockManagementMapper stockManagementMapper; @PostMapping("/add") public AjaxResult add(@RequestBody StockOut stockout) { stockOutService.saveStockout(stockout); return AjaxResult.success(); } // @PostMapping("/add") // public AjaxResult add(@RequestBody StockOut stockout) { // stockOutService.saveStockout(stockout); // return AjaxResult.success(); // } @RequestMapping("/{id}") public AjaxResult getStockOutById(@PathVariable Long id) { src/main/java/com/ruoyi/inventory/dto/StockManagementDto.java
@@ -8,7 +8,7 @@ public class StockManagementDto extends StockManagement { private String supplierName; private String productCategory; private String productName; private String unit; /** * å«ç¨åä»· @@ -32,9 +32,9 @@ /** * è§æ ¼åå· */ private String specificationModel; private String model; /** * å ¥åºäºº */ private String nickname; private String nickName; } src/main/java/com/ruoyi/inventory/dto/StockinDto.java
@@ -16,16 +16,16 @@ /** * å ¥åºäºº */ private String nickname; private String nickName; @ApiModelProperty(value = "产å大类") private String productCategory; private String productName; /** * è§æ ¼åå· */ @ApiModelProperty(value = "è§æ ¼åå·") private String specificationModel; private String model; @ApiModelProperty(value = "åä½") private String unit; /** src/main/java/com/ruoyi/inventory/dto/StockoutDto.java
@@ -10,7 +10,7 @@ private String supplierName; private String unit; private String productCategory; private String productName; /** * å«ç¨åä»· */ @@ -34,9 +34,9 @@ /** * è§æ ¼åå· */ private String specificationModel; private String model; /** * å ¥åºäºº */ private String nickname; private String nickName; } src/main/java/com/ruoyi/inventory/mapper/StockProductMapper.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/inventory/pojo/StockIn.java
@@ -23,14 +23,9 @@ private Integer id; /** * 产åid */ private Integer productRecordid; /** * å ¥åºæ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date inboundTime; /** @@ -53,6 +48,7 @@ * å ¥åºäºº */ private Long userId; private Long productrecordId; // tenant_id /** * ç§æ·ID src/main/java/com/ruoyi/inventory/pojo/StockManagement.java
@@ -22,10 +22,7 @@ */ private Integer id; /** * 产åid */ private Integer productRecordid; private Long productrecordId; /** * å½ååºåé @@ -35,9 +32,9 @@ private String inboundBatch; private Integer supplierId; @JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date boundTime; @JsonFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date inboundTime; /** src/main/java/com/ruoyi/inventory/pojo/StockOut.java
@@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import lombok.Data; /** @@ -21,14 +22,12 @@ */ private Integer id; /** * 产åid */ private Integer productRecordid; private Long productrecordId; /** * åºåºæ¶é´ */ @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") private Date inboundTime; /** @@ -52,7 +51,7 @@ * åºåºäºº */ private Long userId; private Integer stockmanageId; @TableField(fill = FieldFill.INSERT) private Long tenantId; src/main/java/com/ruoyi/inventory/pojo/StockProduct.java
ÎļþÒÑɾ³ý src/main/java/com/ruoyi/inventory/service/StockInService.java
@@ -19,10 +19,12 @@ StockIn getStockInById(Long id); boolean updateStockIn(StockIn stockIn); void updateStockIn(StockIn stockIn); int delStockin(List<Integer> ids); // PageInfo<StockinProcuct> getStockInPage(Integer pageNum, Integer pageSize, StockInQueryDTO query); IPage<StockIn> selectStockInPage(Page page, StockinDto stockinDto); void stockinExport(HttpServletResponse response, StockinDto stockinDto); int addstockin (List<StockIn> stockIns); void batchSaveStockin(List<StockIn> stockInList); } src/main/java/com/ruoyi/inventory/service/StockManagementService.java
@@ -18,4 +18,6 @@ void stockManageExport(HttpServletResponse response, StockManagementDto stockManagementdto); int stockout(StockManagement stockManagement); int addStockManage(StockManagement stockManagement); // æ ¹æ®idæ¥è¯¢ StockManagement getStockManageById(Long id); } src/main/java/com/ruoyi/inventory/service/StockOutService.java
@@ -15,7 +15,7 @@ int delStockOut(List<Integer> ids); StockOut getStockOutById(Long id); void saveStockout(StockOut stockout); // void saveStockout(StockOut stockout); int updateStockOut(StockOut stockOut); IPage<StockoutDto> selectStockOutPage(Page page, StockoutDto stockoutDto); void stockoutExport(HttpServletResponse response, StockoutDto stockoutDto); src/main/java/com/ruoyi/inventory/service/impl/StockInServiceImpl.java
@@ -14,6 +14,7 @@ import com.ruoyi.inventory.mapper.StockInMapper; import com.ruoyi.inventory.pojo.StockManagement; import com.ruoyi.inventory.service.StockInService; import com.ruoyi.purchase.dto.ProductRecordDto; import com.ruoyi.purchase.dto.PurchaseLedgerDto; import com.ruoyi.purchase.mapper.ProductRecordMapper; import com.ruoyi.purchase.pojo.ProductRecord; @@ -45,42 +46,66 @@ */ @Override @Transactional(rollbackFor = Exception.class) // public void saveStockin(StockIn stockIn) { //éè¦å å¤æäº§åè®°å½è¡¨ä¸æ¯å¦æè¯¥äº§å ProductRecord productRecord = productRecordMapper.selectById(stockIn.getProductRecordid()); if (productRecord == null) { throw new RuntimeException("产åè®°å½è¡¨ä¸æ²¡æè¯¥äº§å"); } // éè¦å 夿ä¾åºåè¡¨ä¸æ¯å¦æè¯¥ä¾åºå SupplierManage supplierManage = supplierManageMapper.selectById(stockIn.getSupplierId()); if (supplierManage == null) { throw new RuntimeException("ä¾åºåè¡¨ä¸æ²¡æè¯¥ä¾åºå"); } // éè¦å 夿åºå管çè¡¨ä¸æ¯å¦æè¯¥äº§å LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(StockManagement::getProductRecordid, stockIn.getProductRecordid()); queryWrapper.eq(StockManagement::getSupplierId, stockIn.getSupplierId()); queryWrapper.eq(StockManagement::getUserId, stockIn.getUserId()); StockManagement stockManagement = stockManagementMapper.selectOne(queryWrapper); if (stockManagement == null) { // å¦ææ²¡æè¯¥äº§åï¼éè¦å æ°å¢åºå管ç表 stockManagement = new StockManagement(); stockManagement.setProductRecordid(stockIn.getProductRecordid()); stockManagement.setSupplierId(stockIn.getSupplierId()); //éè¦å 夿éè´è®°å½è¡¨ä¸æ¯å¦æè¯¥äº§åçéè´è®°å½ // æ ¹æ®äº§åidæ¥è¯¢éè´è®°å½è¡¨ ProductRecordDto productRecordDto = productRecordMapper.selectProductRecordById(stockIn.getProductrecordId()); if (productRecordDto != null) { // æ·»å å ¥åºè®°å½ååºå管çè®°å½ stockIn.setInboundTime(new Date()); // èªå¨çææ¹æ¬¡ç String batchCode = "RK" + System.currentTimeMillis(); stockIn.setInboundBatch(batchCode); stockIn.setSupplierId(productRecordDto.getSupplierId()); stockInMapper.insert(stockIn); // å¨åºå管çè¡¨ä¸æ·»å åºå管çè®°å½ StockManagement stockManagement = new StockManagement(); stockManagement.setProductrecordId(productRecordDto.getId()); stockManagement.setStockQuantity(stockIn.getInboundQuantity()); stockManagement.setInboundTime(stockIn.getInboundTime()); stockManagement.setBoundTime(new Date()); stockManagement.setInboundBatch(stockIn.getInboundBatch()); stockManagement.setUserId(stockIn.getUserId()); stockManagement.setSupplierId(productRecordDto.getSupplierId()); stockManagement.setBoundTime(stockIn.getInboundTime()); stockManagementMapper.insert(stockManagement); }else { throw new RuntimeException("éè´è®°å½è¡¨ä¸æ²¡æè¯¥äº§åçéè´è®°å½"); } } @Override @Transactional(rollbackFor = Exception.class) public void batchSaveStockin(List<StockIn> stockInList) { if (stockInList == null || stockInList.isEmpty()) { throw new RuntimeException("å ¥åºå表ä¸è½ä¸ºç©º"); } Date currentTime = new Date(); for (StockIn stockIn : stockInList) { // æ ¹æ®äº§åidæ¥è¯¢éè´è®°å½è¡¨ ProductRecordDto productRecordDto = productRecordMapper.selectProductRecordById(stockIn.getProductrecordId()); if (productRecordDto == null) { throw new RuntimeException("éè´è®°å½è¡¨ä¸æ²¡æäº§åID为" + stockIn.getProductrecordId() + "çéè´è®°å½"); } // è®¾ç½®å ¥åºæ¶é´åæ¹æ¬¡ç stockIn.setInboundTime(currentTime); String batchCode = "RK" + System.currentTimeMillis() + "-" + stockIn.getProductrecordId(); stockIn.setInboundBatch(batchCode); stockIn.setSupplierId(productRecordDto.getSupplierId()); // æ·»å å ¥åºè®°å½ stockInMapper.insert(stockIn); // å¨åºå管çè¡¨ä¸æ·»å åºå管çè®°å½ StockManagement stockManagement = new StockManagement(); stockManagement.setProductrecordId(productRecordDto.getId()); stockManagement.setStockQuantity(stockIn.getInboundQuantity()); stockManagement.setInboundTime(stockIn.getInboundTime()); stockManagement.setInboundBatch(stockIn.getInboundBatch()); stockManagement.setUserId(stockIn.getUserId()); stockManagement.setSupplierId(productRecordDto.getSupplierId()); stockManagement.setBoundTime(stockIn.getInboundTime()); stockManagementMapper.insert(stockManagement); } // 妿æè¯¥äº§åï¼éè¦å æ´æ°åºå管ç表 stockManagement.setStockQuantity(stockManagement.getStockQuantity() + stockIn.getInboundQuantity()); stockManagement.setInboundTime(stockIn.getInboundTime()); stockManagement.setBoundTime(new Date()); stockManagement.setUserId(stockIn.getUserId()); stockManagementMapper.updateById(stockManagement); // éè¦å æ°å¢åºåå ¥åºè¡¨ stockInMapper.insert(stockIn); } @Override//æ ¹æ®idè·ååºåå ¥åºä¿¡æ¯ @@ -88,75 +113,20 @@ StockIn stockIn = stockInMapper.selectById(id); return stockIn; } @Override @Transactional(rollbackFor = Exception.class) public boolean updateStockIn(StockIn stockIn) { // 1. åæ°æ ¡éª if (stockIn == null || stockIn.getId() == null) { throw new IllegalArgumentException("å ¥åºè®°å½IDä¸è½ä¸ºç©º"); public void updateStockIn(StockIn stockIn) { // éè¦å 夿éè´è®°å½è¡¨ä¸æ¯å¦æè¯¥äº§åçéè´è®°å½ LambdaQueryWrapper<ProductRecord> queryWrapper1 = new LambdaQueryWrapper<>(); queryWrapper1.eq(ProductRecord::getId, stockIn.getProductrecordId()); ProductRecord productRecord = productRecordMapper.selectOne(queryWrapper1); if (productRecord!= null) { stockIn.setInboundTime(stockIn.getInboundTime()); stockInMapper.updateById(stockIn); } else { throw new RuntimeException("éè´è®°å½è¡¨ä¸æ²¡æè¯¥äº§åçéè´è®°å½"); } // 2. è·ååå§è®°å½ StockIn original = stockInMapper.selectById(stockIn.getId()); if (original == null) { throw new RuntimeException("è¦ä¿®æ¹çå ¥åºè®°å½ä¸åå¨ï¼ID: " + stockIn.getId()); } // 3. æ£æ¥å ³èæ°æ® // 3.1 æ£æ¥äº§å if (stockIn.getProductRecordid() != null && productRecordMapper.selectById(stockIn.getProductRecordid()) == null) { throw new RuntimeException("产åè®°å½ä¸åå¨ï¼ID: " + stockIn.getProductRecordid()); } // 3.2 æ£æ¥ä¾åºå if (stockIn.getSupplierId() != null && supplierManageMapper.selectById(stockIn.getSupplierId()) == null) { throw new RuntimeException("ä¾åºåä¸åå¨ï¼ID: " + stockIn.getSupplierId()); } // 4. ç¡®å®æç»ä½¿ç¨çåIDå¼ Integer finalProductId = stockIn.getProductRecordid() != null ? stockIn.getProductRecordid() : original.getProductRecordid(); Integer finalSupplierId = stockIn.getSupplierId() != null ? stockIn.getSupplierId() : original.getSupplierId(); Long finalUserId = stockIn.getUserId() != null ? stockIn.getUserId() : original.getUserId(); // 5. å¤çåºåè®°å½ï¼ç¡®ä¿åå¨å¯¹åºè®°å½ï¼ LambdaQueryWrapper<StockManagement> wrapper = new LambdaQueryWrapper<>(); wrapper.eq(StockManagement::getProductRecordid, finalProductId) .eq(StockManagement::getSupplierId, finalSupplierId) .eq(StockManagement::getUserId, finalUserId); StockManagement stock = stockManagementMapper.selectOne(wrapper); // è®¡ç®æ°éååï¼å¦ææä¿®æ¹ï¼ Integer quantityChange = stockIn.getInboundQuantity() != null ? stockIn.getInboundQuantity() - original.getInboundQuantity() : 0; if (stock == null) { // 5.1 ä¸åå¨åå建æ°è®°å½ stock = new StockManagement(); stock.setProductRecordid(finalProductId); stock.setSupplierId(finalSupplierId); stock.setUserId(finalUserId); // åå§åºå = åå§åºå + ååéï¼èèä¿®æ¹åçå¼ï¼ stock.setStockQuantity(original.getInboundQuantity() + quantityChange); stockManagementMapper.insert(stock); } else if (quantityChange != 0) { // 5.2 åå¨ä¸æ°éæåååæ´æ° stock.setStockQuantity(stock.getStockQuantity() + quantityChange); stockManagementMapper.updateById(stock); } // 6. æ´æ°å ¥åºè®°å½ int updateResult = stockInMapper.updateById(stockIn); if (updateResult <= 0) { throw new RuntimeException("å ¥åºè®°å½æ´æ°å¤±è´¥"); } return updateResult > 0; } @@ -181,4 +151,12 @@ ExcelUtil<StockInExcelDto> util = new ExcelUtil<StockInExcelDto>(StockInExcelDto.class); util.exportExcel(response, stockInExcelDtoList, "ä¾åºå导åº"); } @Override public int addstockin(List<StockIn> stockIns) { for (StockIn stockIn : stockIns) { saveStockin(stockIn); } return 1; } } src/main/java/com/ruoyi/inventory/service/impl/StockManagementServiceImpl.java
@@ -14,12 +14,15 @@ import com.ruoyi.inventory.pojo.StockManagement; import com.ruoyi.inventory.pojo.StockOut; import com.ruoyi.inventory.service.StockManagementService; import com.ruoyi.purchase.dto.ProductRecordDto; import com.ruoyi.purchase.mapper.ProductRecordMapper; import com.ruoyi.purchase.pojo.ProductRecord; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.util.Date; import java.util.List; @Service @@ -59,52 +62,57 @@ } @Override @Transactional(rollbackFor = Exception.class) public int stockout(StockManagement stockManagement) { // éè¦è¿è¡å¤æï¼åºåæ°éæ¯å¦è¶³å¤ StockManagement stockManagement1 = stockManagementMapper.selectById(stockManagement.getId()); // å¨åç«¯å ¶å®å°±ç©¿äº3个æ°ï¼æ°éï¼åºåºäººï¼æ¶é´ï¼åªéè¦è¿è¡å¤æï¼åºåæ°éæ¯å¦è¶³å¤å³å¯,æä¸ç§æ åµ StockOut stockOut = new StockOut(); LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(StockManagement::getId, stockManagement.getId()); StockManagement stockManagement1 = stockManagementMapper.selectOne(queryWrapper); if (stockManagement1.getStockQuantity() < stockManagement.getStockQuantity()) { throw new RuntimeException("åºåæ°éä¸è¶³"); }else if (stockManagement1.getStockQuantity().equals(stockManagement.getStockQuantity())){ // åå»çæ°éè¦å¨åºåºè®°å½è¡¨ä¸å 䏿¡æ°æ® StockOut stockOut = new StockOut(); stockOut.setInboundQuantity(stockManagement.getStockQuantity()); stockOut.setProductRecordid(stockManagement1.getProductRecordid()); stockOut.setSupplierId(stockManagement1.getSupplierId()); stockOut.setUserId(stockManagement.getUserId()); stockOut.setInboundTime(stockManagement1.getBoundTime()); stockOutMapper.insert(stockOut); return stockManagementMapper.deleteById(stockManagement.getId()); } else if (stockManagement1.getStockQuantity() > stockManagement.getStockQuantity()) { stockManagement1.setStockQuantity(stockManagement1.getStockQuantity() - stockManagement.getStockQuantity()); stockManagementMapper.updateById(stockManagement1); } else { stockManagement1.setStockQuantity(stockManagement1.getStockQuantity() - stockManagement.getStockQuantity()); StockOut stockOut = new StockOut(); stockOut.setInboundQuantity(stockManagement.getStockQuantity()); stockOut.setProductRecordid(stockManagement1.getProductRecordid()); stockOut.setSupplierId(stockManagement1.getSupplierId()); stockOut.setUserId(stockManagement.getUserId()); stockOut.setInboundTime(stockManagement1.getBoundTime()); stockOutMapper.insert(stockOut); return stockManagementMapper.updateById(stockManagement1); stockManagementMapper.deleteById(stockManagement.getId()); } stockOut.setProductrecordId(stockManagement1.getProductrecordId()); stockOut.setInboundTime(stockManagement.getBoundTime()); // åºåºæ¹æ¬¡èªå¨çæ String batchCode = "CK" + System.currentTimeMillis(); stockOut.setInboundBatch(batchCode); stockOut.setSupplierId(stockManagement1.getSupplierId()); stockOut.setInboundQuantity(stockManagement.getStockQuantity()); stockOut.setUserId(stockManagement.getUserId()); return stockOutMapper.insert(stockOut); } // æ·»å åºåæ¹æ³ @Override public int addStockManage(StockManagement stockManagement) { // éè¦è¿è¡å¤æ // éè¦å 夿éè´è®°å½è¡¨ä¸æ¯å¦æè¯¥äº§åçéè´è®°å½ LambdaQueryWrapper<ProductRecord> queryWrapper1 = new LambdaQueryWrapper<>(); queryWrapper1.eq(ProductRecord::getProductId, stockManagement.getProductRecordid()); queryWrapper1.eq(ProductRecord::getId, stockManagement.getProductrecordId()); ProductRecord productRecord = productRecordMapper.selectOne(queryWrapper1); if (productRecord == null) { throw new RuntimeException("产åä¸åå¨"); ProductRecordDto productRecordDto = productRecordMapper.selectProductRecordById(productRecord.getId()); if (productRecordDto!= null) { stockManagement.setProductrecordId(productRecordDto.getId()); stockManagement.setBoundTime(stockManagement.getBoundTime()); stockManagement.setSupplierId(productRecordDto.getSupplierId()); stockManagement.setStockQuantity(stockManagement.getStockQuantity()); stockManagement.setUserId(stockManagement.getUserId()); return stockManagementMapper.insert(stockManagement); }else { throw new RuntimeException("éè´è®°å½è¡¨ä¸æ²¡æè¯¥äº§åçéè´è®°å½"); } LambdaQueryWrapper<SupplierManage> queryWrapper2 = new LambdaQueryWrapper<>(); queryWrapper2.eq(SupplierManage::getId, stockManagement.getSupplierId()); SupplierManage supplierManage = supplierManageMapper.selectOne(queryWrapper2); System.out.println(supplierManage+"11"); if (supplierManage == null) { throw new RuntimeException("ä¾åºåä¸åå¨"); } return stockManagementMapper.insert(stockManagement); } @Override public StockManagement getStockManageById(Long id) { return stockManagementMapper.selectById(id); } } src/main/java/com/ruoyi/inventory/service/impl/StockOutServiceImpl.java
@@ -49,59 +49,16 @@ return stockOut; } @Override @Transactional(rollbackFor = Exception.class) public void saveStockout(StockOut stockOut) { // è¿è¡å¤ææ¯å¦åå¨ç¸åç产åidåä¾åºåid,è¦å¤æproduct_idå¨è¡¨product_record䏿¯å¦åå¨ï¼å 为stock_out表ä¸çproduct_idæ¯product_record表ä¸çproduct_idå ³èç LambdaQueryWrapper<ProductRecord> queryWrapper1 = new LambdaQueryWrapper<>(); queryWrapper1.eq(ProductRecord::getProductId, stockOut.getProductRecordid()); ProductRecord productRecord = productRecordMapper.selectOne(queryWrapper1); if (productRecord == null) { throw new RuntimeException("产åä¸åå¨"); } LambdaQueryWrapper<SupplierManage> queryWrapper2 = new LambdaQueryWrapper<>(); queryWrapper2.eq(SupplierManage::getId, stockOut.getSupplierId()); SupplierManage supplierManage = supplierManageMapper.selectOne(queryWrapper2); if (supplierManage == null) { throw new RuntimeException("ä¾åºåä¸åå¨"); } LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(StockManagement::getProductRecordid, stockOut.getProductRecordid()); queryWrapper.eq(StockManagement::getSupplierId, stockOut.getSupplierId()); StockManagement stockManagement = stockManagementMapper.selectOne(queryWrapper); if (stockManagement != null) { stockOut.setStockmanageId(stockManagement.getId()); stockOutMapper.insert(stockOut); }else { throw new RuntimeException("åºåä¸ä¸åå¨è¯¥äº§ååä¾åºå"); } } // @Override // @Transactional(rollbackFor = Exception.class) // public void saveStockout(StockOut stockOut) { // // } @Override public int updateStockOut(StockOut stockOut) { // ä¿®æ¹çæ¶åè¦å¤ææ¯å¦åå¨ç¸åç产åidåä¾åºåid LambdaQueryWrapper<ProductRecord> queryWrapper1 = new LambdaQueryWrapper<>(); queryWrapper1.eq(ProductRecord::getProductId, stockOut.getProductRecordid()); ProductRecord productRecord = productRecordMapper.selectOne(queryWrapper1); if (productRecord == null) { throw new RuntimeException("产åä¸åå¨"); } LambdaQueryWrapper<SupplierManage> queryWrapper2 = new LambdaQueryWrapper<>(); queryWrapper2.eq(SupplierManage::getId, stockOut.getSupplierId()); SupplierManage supplierManage = supplierManageMapper.selectOne(queryWrapper2); if (supplierManage == null) { throw new RuntimeException("ä¾åºåä¸åå¨"); } LambdaQueryWrapper<StockManagement> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(StockManagement::getProductRecordid, stockOut.getProductRecordid()); queryWrapper.eq(StockManagement::getSupplierId, stockOut.getSupplierId()); StockManagement stockManagement = stockManagementMapper.selectOne(queryWrapper); if (stockManagement != null) { stockOut.setStockmanageId(stockManagement.getId()); return stockOutMapper.updateById(stockOut); }else { throw new RuntimeException("åºåä¸ä¸åå¨è¯¥äº§ååä¾åºå"); } // ä¿®æ¹åºåºè®°å½è¡¨ return stockOutMapper.updateById(stockOut); } @Override src/main/java/com/ruoyi/project/system/mapper/SysUserMapper.java
@@ -2,6 +2,7 @@ import java.util.List; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import com.ruoyi.project.system.domain.SysUser; @@ -11,6 +12,7 @@ * * @author ruoyi */ @Mapper public interface SysUserMapper { /** src/main/java/com/ruoyi/purchase/dto/ProductRecordDto.java
@@ -8,6 +8,8 @@ @Data public class ProductRecordDto extends ProductRecord { // ä¾åºåID private Integer supplierId; //éå®ååå· private String salesContractNo; src/main/java/com/ruoyi/purchase/mapper/ProductRecordMapper.java
@@ -6,7 +6,10 @@ import com.ruoyi.purchase.dto.ProductRecordDto; import com.ruoyi.purchase.dto.TicketRegistrationDto; import com.ruoyi.purchase.pojo.ProductRecord; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; /** * éè´å°è´¦äº§åå¼ç¥¨è®°å½Mapperæ¥å£ @@ -14,7 +17,11 @@ * @author ruoyi * @date 2025-05-23 */ @Mapper public interface ProductRecordMapper extends BaseMapper<ProductRecord> { IPage<ProductRecordDto> productRecordPage(Page page, @Param("c") TicketRegistrationDto ticketRegistrationDto); List<ProductRecordDto> selectProductRecordListByPuechaserId(String purchaseContractNumber); ProductRecordDto selectProductRecordById(Long id); } src/main/java/com/ruoyi/purchase/service/IProductRecordService.java
@@ -20,4 +20,5 @@ List<ProductRecord> selectProductRecordList(TicketRegistrationDto ticketRegistrationDto); IPage<ProductRecordDto> productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto); List<ProductRecordDto> selectProductRecordListByPuechaserId(String purchaseContractNumber); } src/main/java/com/ruoyi/purchase/service/impl/ProductRecordServiceImpl.java
@@ -8,7 +8,9 @@ import com.ruoyi.purchase.dto.ProductRecordDto; import com.ruoyi.purchase.dto.TicketRegistrationDto; import com.ruoyi.purchase.mapper.ProductRecordMapper; import com.ruoyi.purchase.mapper.PurchaseLedgerMapper; import com.ruoyi.purchase.pojo.ProductRecord; import com.ruoyi.purchase.pojo.PurchaseLedger; import com.ruoyi.purchase.service.IProductRecordService; import com.ruoyi.sales.mapper.CommonFileMapper; import com.ruoyi.sales.pojo.CommonFile; @@ -34,6 +36,9 @@ @Autowired private CommonFileMapper commonFileMapper; @Autowired private PurchaseLedgerMapper purchaseLedgerMapper; @@ -59,4 +64,11 @@ }); return productRecordDtoIPage; } @Override public List<ProductRecordDto> selectProductRecordListByPuechaserId(String purchaseContractNumber) { return productRecordMapper.selectProductRecordListByPuechaserId(purchaseContractNumber); } } src/main/resources/mapper/inventory/StockInMapper.xml
@@ -5,41 +5,13 @@ <mapper namespace="com.ruoyi.inventory.mapper.StockInMapper"> <!-- <select id="selectByPrimaryKey" parameterType="java.lang.Long" resultType="com.ruoyi.inventory.dto.StockinDto">--> <!-- SELECT--> <!-- T1.id,--> <!-- T1.product_id,--> <!-- T1.inbound_time,--> <!-- T1.inbound_batch,--> <!-- T1.supplier_id,--> <!-- T1.inbound_quantity,--> <!-- T1.tax_inclusive_price,--> <!-- T1.tax_inclusive_total,--> <!-- T1.tax_rate,--> <!-- T1.tax_exclusive_total,--> <!-- T1.inbound_person,--> <!-- T1.tenant_id,--> <!-- T2.product_category,--> <!-- T2.specification_model,--> <!-- T3.supplier_name--> <!-- FROM--> <!-- stock_in T1--> <!-- INNER JOIN--> <!-- product_record T2--> <!-- ON--> <!-- T1.product_id = T2.product_id--> <!-- INNER JOIN--> <!-- supplier_manage T3--> <!-- ON--> <!-- T1.supplier_id = T3.id--> <!-- where T1.id = #{id,jdbcType=INTEGER}--> <!-- </select>--> <select id="selectStockInWithProductInfo" resultType="com.ruoyi.inventory.dto.StockinDto"> SELECT T1.id, T1.product_recordid, T1.productrecord_id, T1.user_id, T1.tenant_id, T1.inbound_time, T1.inbound_batch, T1.supplier_id, @@ -48,11 +20,9 @@ T2.tax_inclusive_total_price, T2.tax_rate, T2.tax_exclusive_total_price, T1.user_id, T1.tenant_id, T2.product_category, T2.specification_model, T2.unit, T5.product_name, T6.model, T6.unit, T3.supplier_name, T4.nick_name FROM @@ -60,7 +30,7 @@ INNER JOIN product_record T2 ON T1.product_recordid = T2.id T1.productrecord_id = T2.id INNER JOIN supplier_manage T3 ON @@ -68,7 +38,16 @@ INNER JOIN sys_user T4 ON T1.user_id = T4.user_id INNER JOIN product_model T6 ON T2.product_model_id = T6.id INNER JOIN product T5 ON T2.product_id = T5.id <where> T2.type = 2 <if test="stockinDto.supplierName != null and stockinDto.supplierName != ''"> AND T3.supplier_name LIKE CONCAT('%', #{stockinDto.supplierName}, '%') </if> @@ -79,7 +58,9 @@ <select id="stockinExportList" resultType="com.ruoyi.inventory.excel.StockInExcelDto"> SELECT T1.id, T1.product_recordid, T1.productrecord_id, T1.user_id, T1.tenant_id, T1.inbound_time, T1.inbound_batch, T1.supplier_id, @@ -88,11 +69,9 @@ T2.tax_inclusive_total_price, T2.tax_rate, T2.tax_exclusive_total_price, T1.user_id, T1.tenant_id, T2.product_category, T2.specification_model, T2.unit, T5.product_name, T6.model, T6.unit, T3.supplier_name, T4.nick_name FROM @@ -100,7 +79,7 @@ INNER JOIN product_record T2 ON T1.product_recordid = T2.id T1.productrecord_id = T2.id INNER JOIN supplier_manage T3 ON @@ -108,15 +87,18 @@ INNER JOIN sys_user T4 ON T1.user_id = T4.user_id INNER JOIN product_model T6 ON T2.product_model_id = T6.id INNER JOIN product T5 ON T2.product_id = T5.id <where> T2.type = 2 <if test="stockinDto.supplierName != null and stockinDto.supplierName != ''"> AND T3.supplier_name LIKE CONCAT('%', #{stockinDto.supplierName}, '%') </if> <if test="stockinDto.startTime != null and stockinDto.startTime != ''"> AND T1.inbound_time >= #{stockinDto.startTime} </if> <if test="stockinDto.endTime != null and stockinDto.endTime != ''"> AND T1.inbound_time <= #{stockinDto.endTime} </if> </where> ORDER BY T1.inbound_time DESC src/main/resources/mapper/inventory/StockManagementMapper.xml
@@ -7,12 +7,12 @@ <!-- æ ¹æ®ä¾åºåæ¨¡ç³æç´¢--> <select id="selectStockManagementBypage" resultType="com.ruoyi.inventory.dto.StockManagementDto"> SELECT T2.unit, T2.product_category, T2.specification_model, T5.unit, T5.model, T6.product_name, T3.supplier_name, T1.id, T1.product_recordid, T1.productrecord_id, T1.stock_quantity, T2.tax_inclusive_unit_price, T2.tax_inclusive_total_price, @@ -30,7 +30,7 @@ INNER JOIN product_record T2 ON T1.product_recordid = T2.id T1.productrecord_id = T2.id INNER JOIN supplier_manage T3 ON @@ -39,6 +39,14 @@ sys_user T4 ON T1.user_id = T4.user_id INNER JOIN product_model T5 ON T2.product_model_id = T5.id INNER JOIN product T6 ON T2.product_id = T6.id <where> <if test="stockManagementDto.supplierName != null and stockManagementDto.supplierName != ''"> AND T3.supplier_name LIKE CONCAT('%', #{stockManagementDto.supplierName}, '%') @@ -48,12 +56,12 @@ <select id="stockManageExportList" resultType="com.ruoyi.inventory.excel.StockManagementExcelDto"> SELECT T2.unit, T2.product_category, T2.specification_model, T5.unit, T5.model, T6.product_name, T3.supplier_name, T1.id, T1.product_recordid, T1.productrecord_id, T1.stock_quantity, T2.tax_inclusive_unit_price, T2.tax_inclusive_total_price, @@ -71,7 +79,7 @@ INNER JOIN product_record T2 ON T1.product_recordid = T2.id T1.productrecord_id = T2.id INNER JOIN supplier_manage T3 ON @@ -80,6 +88,14 @@ sys_user T4 ON T1.user_id = T4.user_id INNER JOIN product_model T5 ON T2.product_model_id = T5.id INNER JOIN product T6 ON T2.product_id = T6.id <where> <if test="stockManagementDto.supplierName != null and stockManagementDto.supplierName != ''"> AND T3.supplier_name LIKE CONCAT('%', #{stockManagementDto.supplierName}, '%') @@ -88,4 +104,5 @@ </select> </mapper> src/main/resources/mapper/inventory/StockOutMapper.xml
@@ -7,7 +7,7 @@ <select id="selectStockOutBypage" resultType="com.ruoyi.inventory.dto.StockoutDto"> SELECT T1.id, T1.product_recordid, T1.productrecord_id, T1.inbound_time, T1.inbound_batch, T1.supplier_id, @@ -18,9 +18,9 @@ T2.tax_exclusive_total_price, T1.user_id, T1.tenant_id, T2.product_category, T2.specification_model, T2.unit, T6.product_name, T5.model, T5.unit, T3.supplier_name, T4.nick_name FROM @@ -28,7 +28,7 @@ INNER JOIN product_record T2 ON T1.product_recordid = T2.id T1.productrecord_id = T2.id INNER JOIN supplier_manage T3 ON @@ -37,7 +37,16 @@ sys_user T4 ON T1.user_id = T4.user_id INNER JOIN product_model T5 ON T2.product_model_id = T5.id INNER JOIN product T6 ON T2.product_id = T6.id <where> T2.type = 1 <if test="stockOutdto.supplierName != null and stockOutdto.supplierName != ''"> AND T3.supplier_name LIKE CONCAT('%', #{stockOutdto.supplierName}, '%') </if> @@ -58,9 +67,9 @@ T2.tax_exclusive_total_price, T1.user_id, T1.tenant_id, T2.product_category, T2.specification_model, T2.unit, T6.product_name, T5.model, T5.unit, T3.supplier_name, T4.nick_name FROM @@ -77,7 +86,16 @@ sys_user T4 ON T1.user_id = T4.user_id INNER JOIN product_model T5 ON T2.product_model_id = T5.id INNER JOIN product T6 ON T2.product_id = T6.id <where> T2.type = 1 <if test="stockOutdto.supplierName != null and stockOutdto.supplierName != ''"> AND T3.supplier_name LIKE CONCAT('%', #{stockOutdto.supplierName}, '%') </if> src/main/resources/mapper/inventory/StockProductMapper.xml
ÎļþÒÑɾ³ý src/main/resources/mapper/purchase/ProductRecordMapper.xml
@@ -36,4 +36,38 @@ and pr.created_at <= date_format(#{c.createdAtEnd},'%Y-%m-%d hh:mm:ss') </if> </select> <select id="selectProductRecordListByPuechaserId" resultType="com.ruoyi.purchase.dto.ProductRecordDto"> SELECT P1.id, P1.product_category, P1.specification_model, P1.unit, P1.quantity, P1.tax_rate, P1.tax_inclusive_unit_price, P1.tax_inclusive_total_price, P1.tax_exclusive_total_price, P2.supplier_name, p2.supplier_id from product_record P1 left join purchase_ledger P2 on P1.purchase_ledger_id = P2.id where p2.purchase_contract_number = #{purchaseContractNumber} and P1.type = 2 </select> <select id="selectProductRecordById" resultType="com.ruoyi.purchase.dto.ProductRecordDto"> SELECT P1.id, P1.product_category, P1.specification_model, P1.unit, P1.quantity, P1.tax_rate, P1.tax_inclusive_unit_price, P1.tax_inclusive_total_price, P1.tax_exclusive_total_price, P2.supplier_name, p2.supplier_id from product_record P1 left join purchase_ledger P2 on P1.purchase_ledger_id = P2.id where P1.id = #{id} and P1.type = 2 </select> </mapper>