| | |
| | | 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.*; |
| | |
| | | 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) { |
| | |
| | | public class StockManagementController { |
| | | @Autowired |
| | | private StockManagementService stockManagementService; |
| | | // æ ¹æ®idæ¥è¯¢ |
| | | @RequestMapping("/{id}") |
| | | public AjaxResult getStockManageById(@PathVariable Long id) { |
| | | return success(stockManagementService.getStockManageById(id)); |
| | | } |
| | | |
| | | // æ´æ°åºå |
| | | @PutMapping("/update") |
| | |
| | | public AjaxResult stockout(@RequestBody StockManagement stockManagement) { |
| | | return success(stockManagementService.stockout(stockManagement)); |
| | | } |
| | | |
| | | } |
| | |
| | | @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) { |
| | |
| | | public class StockManagementDto extends StockManagement { |
| | | |
| | | private String supplierName; |
| | | private String productCategory; |
| | | private String productName; |
| | | private String unit; |
| | | /** |
| | | * å«ç¨åä»· |
| | |
| | | /** |
| | | * è§æ ¼åå· |
| | | */ |
| | | private String specificationModel; |
| | | private String model; |
| | | /** |
| | | * å
¥åºäºº |
| | | */ |
| | | private String nickname; |
| | | private String nickName; |
| | | } |
| | |
| | | /** |
| | | * å
¥åºäºº |
| | | */ |
| | | 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; |
| | | /** |
| | |
| | | |
| | | private String supplierName; |
| | | private String unit; |
| | | private String productCategory; |
| | | private String productName; |
| | | /** |
| | | * å«ç¨åä»· |
| | | */ |
| | |
| | | /** |
| | | * è§æ ¼åå· |
| | | */ |
| | | private String specificationModel; |
| | | private String model; |
| | | /** |
| | | * å
¥åºäºº |
| | | */ |
| | | private String nickname; |
| | | private String nickName; |
| | | } |
| | |
| | | private Integer id; |
| | | |
| | | /** |
| | | * 产åid |
| | | */ |
| | | private Integer productRecordid; |
| | | |
| | | /** |
| | | * å
¥åºæ¶é´ |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd") |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date inboundTime; |
| | | |
| | | /** |
| | |
| | | * å
¥åºäºº |
| | | */ |
| | | private Long userId; |
| | | private Long productrecordId; |
| | | // tenant_id |
| | | /** |
| | | * ç§æ·ID |
| | |
| | | */ |
| | | private Integer id; |
| | | |
| | | /** |
| | | * 产åid |
| | | */ |
| | | private Integer productRecordid; |
| | | private Long productrecordId; |
| | | |
| | | /** |
| | | * å½ååºåé |
| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | 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; |
| | | |
| | | /** |
| | |
| | | */ |
| | | private Integer id; |
| | | |
| | | /** |
| | | * 产åid |
| | | */ |
| | | private Integer productRecordid; |
| | | |
| | | private Long productrecordId; |
| | | /** |
| | | * åºåºæ¶é´ |
| | | */ |
| | | @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") |
| | | private Date inboundTime; |
| | | |
| | | /** |
| | |
| | | * åºåºäºº |
| | | */ |
| | | private Long userId; |
| | | private Integer stockmanageId; |
| | | |
| | | @TableField(fill = FieldFill.INSERT) |
| | | private Long tenantId; |
| | | |
| | |
| | | |
| | | 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); |
| | |
| | | void stockManageExport(HttpServletResponse response, StockManagementDto stockManagementdto); |
| | | int stockout(StockManagement stockManagement); |
| | | int addStockManage(StockManagement stockManagement); |
| | | // æ ¹æ®idæ¥è¯¢ |
| | | StockManagement getStockManageById(Long id); |
| | | } |
| | |
| | | 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); |
| | |
| | | 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; |
| | |
| | | @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("éè´è®°å½è¡¨ä¸æ²¡æè¯¥äº§åçéè´è®°å½"); |
| | | } |
| | | // 妿æè¯¥äº§åï¼éè¦å
æ´æ°åºå管ç表 |
| | | 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è·ååºåå
¥åºä¿¡æ¯ |
| | |
| | | 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; |
| | | } |
| | | |
| | | |
| | |
| | | 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 javax.servlet.http.HttpServletResponse; |
| | | import java.util.Date; |
| | | import java.util.List; |
| | | |
| | | @Service |
| | |
| | | |
| | | @Override |
| | | 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); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | 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 |
| | |
| | |
|
| | | import java.util.List;
|
| | |
|
| | | import org.apache.ibatis.annotations.Mapper;
|
| | | import org.apache.ibatis.annotations.Param;
|
| | |
|
| | | import com.ruoyi.project.system.domain.SysUser;
|
| | |
| | | *
|
| | | * @author ruoyi
|
| | | */
|
| | | @Mapper
|
| | | public interface SysUserMapper
|
| | | {
|
| | | /**
|
| | |
| | | |
| | | @Data |
| | | public class ProductRecordDto extends ProductRecord { |
| | | // ä¾åºåID |
| | | private Integer supplierId; |
| | | |
| | | //éå®ååå· |
| | | private String salesContractNo; |
| | |
| | | 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æ¥å£ |
| | |
| | | * @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); |
| | | } |
| | |
| | | List<ProductRecord> selectProductRecordList(TicketRegistrationDto ticketRegistrationDto); |
| | | |
| | | IPage<ProductRecordDto> productRecordPage(Page page, TicketRegistrationDto ticketRegistrationDto); |
| | | List<ProductRecordDto> selectProductRecordListByPuechaserId(String purchaseContractNumber); |
| | | } |
| | |
| | | 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; |
| | |
| | | |
| | | @Autowired |
| | | private CommonFileMapper commonFileMapper; |
| | | @Autowired |
| | | private PurchaseLedgerMapper purchaseLedgerMapper; |
| | | |
| | | |
| | | |
| | | |
| | |
| | | }); |
| | | return productRecordDtoIPage; |
| | | } |
| | | |
| | | @Override |
| | | public List<ProductRecordDto> selectProductRecordListByPuechaserId(String purchaseContractNumber) { |
| | | return productRecordMapper.selectProductRecordListByPuechaserId(purchaseContractNumber); |
| | | } |
| | | |
| | | |
| | | } |
| | |
| | | <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, |
| | |
| | | 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 |
| | |
| | | INNER JOIN |
| | | product_record T2 |
| | | ON |
| | | T1.product_recordid = T2.id |
| | | T1.productrecord_id = T2.id |
| | | INNER JOIN |
| | | supplier_manage T3 |
| | | ON |
| | |
| | | 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> |
| | |
| | | <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, |
| | |
| | | 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 |
| | |
| | | INNER JOIN |
| | | product_record T2 |
| | | ON |
| | | T1.product_recordid = T2.id |
| | | T1.productrecord_id = T2.id |
| | | INNER JOIN |
| | | supplier_manage T3 |
| | | ON |
| | |
| | | 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 |
| | |
| | | <!-- æ ¹æ®ä¾åºåæ¨¡ç³æç´¢--> |
| | | <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, |
| | |
| | | INNER JOIN |
| | | product_record T2 |
| | | ON |
| | | T1.product_recordid = T2.id |
| | | T1.productrecord_id = T2.id |
| | | INNER JOIN |
| | | supplier_manage T3 |
| | | ON |
| | |
| | | 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}, '%') |
| | |
| | | |
| | | <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, |
| | |
| | | INNER JOIN |
| | | product_record T2 |
| | | ON |
| | | T1.product_recordid = T2.id |
| | | T1.productrecord_id = T2.id |
| | | INNER JOIN |
| | | supplier_manage T3 |
| | | ON |
| | |
| | | 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}, '%') |
| | |
| | | </select> |
| | | |
| | | |
| | | |
| | | </mapper> |
| | |
| | | <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, |
| | |
| | | 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 |
| | |
| | | INNER JOIN |
| | | product_record T2 |
| | | ON |
| | | T1.product_recordid = T2.id |
| | | T1.productrecord_id = T2.id |
| | | INNER JOIN |
| | | supplier_manage T3 |
| | | ON |
| | |
| | | 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> |
| | |
| | | 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 |
| | |
| | | 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> |
| | |
| | | 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> |