src/main/java/com/ruoyi/stock/controller/StockInventoryController.java
@@ -1,5 +1,16 @@ package com.ruoyi.stock.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.R; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.pojo.StockInventory; import com.ruoyi.stock.service.StockInventoryService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -13,6 +24,29 @@ */ @RestController @RequestMapping("/stockInventory") @Api(tags = "åºå表") public class StockInventoryController { @Autowired private StockInventoryService stockInventoryService; @GetMapping("/pagestockInventory") @ApiOperation("å页æ¥è¯¢åºå") public R pagestockInventory(Page page, StockInventoryDto stockInventoryDto) { IPage<StockInventoryDto> stockInventoryDtoIPage = stockInventoryService.pagestockInventory(page, stockInventoryDto); return R.ok(stockInventoryDtoIPage); } @PostMapping("/addstockInventory") @ApiOperation("æ°å¢åºå") public R addstockInventory(StockInventoryDto stockInventoryDto) { return R.ok(stockInventoryService.addstockInventory(stockInventoryDto)); } @PostMapping("/subtractStockInventory") @ApiOperation("æ£ååºå") public R subtractStockInventory(StockInventoryDto stockInventoryDto) { return R.ok(stockInventoryService.subtractStockInventory(stockInventoryDto)); } } src/main/java/com/ruoyi/stock/dto/StockInRecordDto.java
@@ -1,7 +1,9 @@ package com.ruoyi.stock.dto; import com.ruoyi.stock.pojo.StockInRecord; import lombok.Data; @Data public class StockInRecordDto extends StockInRecord { /** * 产ååç§° src/main/java/com/ruoyi/stock/dto/StockInventoryDto.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ package com.ruoyi.stock.dto; import com.ruoyi.stock.pojo.StockInventory; import lombok.Data; @Data public class StockInventoryDto extends StockInventory { private String productName; private String model; private String unit; //å ¥åºç±»å private String recordType; //å ¥åºç±»å对åºçid private Long recordId; } src/main/java/com/ruoyi/stock/mapper/StockInventoryMapper.java
@@ -1,8 +1,12 @@ package com.ruoyi.stock.mapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.pojo.StockInventory; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; /** * <p> @@ -15,4 +19,10 @@ @Mapper public interface StockInventoryMapper extends BaseMapper<StockInventory> { IPage<StockInventoryDto> pagestockInventory(Page page, @Param("ew") StockInventoryDto stockInventoryDto); int updateAddStockInventory(@Param("ew") StockInventoryDto stockInventoryDto); int updateSubtractStockInventory(@Param("ew") StockInventoryDto stockInventoryDto); } src/main/java/com/ruoyi/stock/pojo/StockInRecord.java
@@ -28,10 +28,10 @@ @ApiModelProperty(value = "å ¥åºæ°é") private BigDecimal stockInNum; @ApiModelProperty(value = "è®°å½ç±»å") @ApiModelProperty(value = "è®°å½ç±»å éè´å ¥åº/çäº§å ¥åº/è´¨éå ¥åº/èªå®ä¹å ¥åº") private String recordType; @ApiModelProperty(value = "è®°å½ID") @ApiModelProperty(value = "è®°å½ID salesProductId/ProductrMainId/qualityInspectId/0") private Long recordId; @ApiModelProperty(value = "产åè§æ ¼ID") src/main/java/com/ruoyi/stock/pojo/StockInventory.java
@@ -10,6 +10,9 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Getter; import lombok.Setter; import org.springframework.lang.Nullable; import javax.validation.constraints.NotBlank; /** * <p> @@ -31,7 +34,8 @@ private Long id; @ApiModelProperty("è§æ ¼id") private Integer productModelId; @NotBlank(message = "ä¸è½ä¸ºç©º") private Long productModelId; @ApiModelProperty("æ°é") private BigDecimal qualitity; @@ -51,4 +55,7 @@ @ApiModelProperty("é¢è¦æ°é") private Integer warnNum; @ApiModelProperty("ç§æ·id") private Integer tenantId; } src/main/java/com/ruoyi/stock/pojo/StockOutRecord.java
@@ -36,7 +36,7 @@ private BigDecimal stockOutNum; @ApiModelProperty("å ¥åºæ¥æºid") private Integer recordId; private Long recordId; @ApiModelProperty("å ¥åºç±»å") private String recordType; src/main/java/com/ruoyi/stock/service/StockInventoryService.java
@@ -1,5 +1,9 @@ package com.ruoyi.stock.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.R; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.pojo.StockInventory; import com.baomidou.mybatisplus.extension.service.IService; @@ -13,4 +17,9 @@ */ public interface StockInventoryService extends IService<StockInventory> { IPage<StockInventoryDto> pagestockInventory(Page page, StockInventoryDto stockInventoryDto); Boolean addstockInventory(StockInventoryDto stockInventoryDto); Boolean subtractStockInventory(StockInventoryDto stockInventoryDto); } src/main/java/com/ruoyi/stock/service/impl/StockInRecordServiceImpl.java
@@ -1,5 +1,6 @@ package com.ruoyi.stock.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; @@ -8,8 +9,11 @@ import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.staff.pojo.StaffOnJob; import com.ruoyi.stock.dto.StockInRecordDto; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.mapper.StockInRecordMapper; import com.ruoyi.stock.mapper.StockInventoryMapper; import com.ruoyi.stock.pojo.StockInRecord; import com.ruoyi.stock.pojo.StockInventory; import com.ruoyi.stock.service.StockInRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -21,6 +25,8 @@ public class StockInRecordServiceImpl extends ServiceImpl<StockInRecordMapper, StockInRecord> implements StockInRecordService { @Autowired private StockInRecordMapper stockInRecordMapper; @Autowired private StockInventoryMapper stockInventoryMapper; @Override public IPage<StockInRecordDto> listPage(Page page, StockInRecordDto stockInRecordDto) { @@ -55,6 +61,18 @@ @Override @Transactional(rollbackFor = Exception.class) public int batchDelete(List<Long> ids) { for (Long id : ids) { StockInRecord stockInRecord = stockInRecordMapper.selectById(id); StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, id)); if (stockInventory == null) { throw new BaseException("è¯¥å ¥åºè®°å½ä¸æ²¡æå¯¹åºç产å,æ æ³å é¤!!!"); }else { StockInventoryDto stockInRecordDto = new StockInventoryDto(); stockInRecordDto.setProductModelId(stockInventory.getProductModelId()); stockInRecordDto.setQualitity(stockInRecord.getStockInNum()); stockInventoryMapper.updateSubtractStockInventory(stockInRecordDto); } } return stockInRecordMapper.deleteBatchIds(ids); } } src/main/java/com/ruoyi/stock/service/impl/StockInventoryServiceImpl.java
@@ -1,10 +1,23 @@ package com.ruoyi.stock.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.framework.web.domain.R; import com.ruoyi.stock.dto.StockInRecordDto; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.dto.StockOutRecordDto; import com.ruoyi.stock.pojo.StockInRecord; import com.ruoyi.stock.pojo.StockInventory; import com.ruoyi.stock.mapper.StockInventoryMapper; import com.ruoyi.stock.service.StockInRecordService; import com.ruoyi.stock.service.StockInventoryService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.stock.service.StockOutRecordService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; /** * <p> @@ -17,4 +30,60 @@ @Service public class StockInventoryServiceImpl extends ServiceImpl<StockInventoryMapper, StockInventory> implements StockInventoryService { @Autowired private StockInventoryMapper stockInventoryMapper; @Autowired private StockInRecordService stockInRecordService; @Autowired private StockOutRecordService stockOutRecordService; @Override public IPage<StockInventoryDto> pagestockInventory(Page page, StockInventoryDto stockInventoryDto) { return stockInventoryMapper.pagestockInventory(page, stockInventoryDto); } //å ¥åºè°ç¨ @Override @Transactional(rollbackFor = Exception.class) public Boolean addstockInventory(StockInventoryDto stockInventoryDto) { //æ°å¢å ¥åºè®°å½åæ·»å åºå StockInRecordDto stockInRecordDto = new StockInRecordDto(); stockInRecordDto.setRecordId(stockInventoryDto.getRecordId()); stockInRecordDto.setRecordType(stockInventoryDto.getRecordType()); stockInRecordDto.setStockInNum(stockInventoryDto.getQualitity()); stockInRecordService.add(stockInRecordDto); //åè¿è¡æ°å¢åºåæ°éåºå //å æ¥è¯¢åºå表ä¸çäº§åæ¯å¦åå¨ï¼ä¸å卿°å¢ï¼å卿´æ° StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId())); if (ObjectUtils.isEmpty(oldStockInventory)) { StockInventory newStockInventory = new StockInventory(); newStockInventory.setProductModelId(stockInventoryDto.getProductModelId()); newStockInventory.setQualitity(stockInventoryDto.getQualitity()); newStockInventory.setVersion(1); stockInventoryMapper.insert(newStockInventory); }else { stockInventoryMapper.updateAddStockInventory(stockInventoryDto); } return true; } //åºåºè°ç¨ @Override @Transactional(rollbackFor = Exception.class) public Boolean subtractStockInventory(StockInventoryDto stockInventoryDto) { // æ°å¢åºåºè®°å½ StockOutRecordDto stockOutRecordDto = new StockOutRecordDto(); stockOutRecordDto.setRecordId(stockInventoryDto.getRecordId()); stockOutRecordDto.setRecordType(stockInventoryDto.getRecordType()); stockOutRecordDto.setStockOutNum(stockInventoryDto.getQualitity()); stockOutRecordService.add(stockOutRecordDto); StockInventory oldStockInventory = stockInventoryMapper.selectOne(new QueryWrapper<StockInventory>().lambda().eq(StockInventory::getProductModelId, stockInventoryDto.getProductModelId())); if (ObjectUtils.isEmpty(oldStockInventory)) { throw new RuntimeException("产ååºåä¸åå¨"); }else { stockInventoryMapper.updateSubtractStockInventory(stockInventoryDto); } return true; } } src/main/java/com/ruoyi/stock/service/impl/StockOutRecordServiceImpl.java
@@ -1,14 +1,18 @@ package com.ruoyi.stock.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.ruoyi.common.exception.base.BaseException; import com.ruoyi.common.utils.OrderUtils; import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.stock.dto.StockInventoryDto; import com.ruoyi.stock.dto.StockOutRecordDto; import com.ruoyi.stock.mapper.StockInventoryMapper; import com.ruoyi.stock.mapper.StockOutRecordMapper; import com.ruoyi.stock.pojo.StockInRecord; import com.ruoyi.stock.pojo.StockInventory; import com.ruoyi.stock.pojo.StockOutRecord; import com.ruoyi.stock.service.StockOutRecordService; import org.springframework.beans.factory.annotation.Autowired; @@ -28,6 +32,8 @@ public class StockOutRecordServiceImpl extends ServiceImpl<StockOutRecordMapper, StockOutRecord> implements StockOutRecordService { @Autowired private StockOutRecordMapper stockOutRecordMapper; @Autowired private StockInventoryMapper stockInventoryMapper; @Override public IPage<StockOutRecordDto> listPage(Page page, StockOutRecordDto stockOutRecordDto) { @@ -58,6 +64,18 @@ @Override public int batchDelete(List<Long> ids) { for (Long id : ids) { StockOutRecord stockOutRecord = stockOutRecordMapper.selectById(id); StockInventory stockInventory = stockInventoryMapper.selectOne(new LambdaQueryWrapper<StockInventory>().eq(StockInventory::getProductModelId, id)); if (stockInventory == null) { throw new BaseException("è¯¥å ¥åºè®°å½ä¸æ²¡æå¯¹åºç产å,æ æ³å é¤!!!"); }else { StockInventoryDto stockInRecordDto = new StockInventoryDto(); stockInRecordDto.setProductModelId(stockInventory.getProductModelId()); stockInRecordDto.setQualitity(stockOutRecord.getStockOutNum()); stockInventoryMapper.updateAddStockInventory(stockInRecordDto); } } return stockOutRecordMapper.deleteBatchIds(ids); } } src/main/resources/mapper/stock/StockInventoryMapper.xml
@@ -13,5 +13,39 @@ <result column="locked_quantity" property="lockedQuantity" /> <result column="warn_num" property="warnNum" /> </resultMap> <update id="updateAddStockInventory"> update stock_inventory <set> <if test="qualitity != null"> qualitity = qualitity + #{ew.qualitity}, </if> <if test="version != null"> version = version + 1, </if> </set> where product_model_id = #{ew.productModelId} </update> <update id="updateSubtractStockInventory"> update stock_inventory <set> <if test="qualitity != null"> qualitity = qualitity - #{ew.qualitity}, </if> <if test="version != null"> version = version + 1, </if> </set> where product_model_id = #{ew.productModelId} and qualitity >= #{ew.qualitity} </update> <select id="pagestockInventory" resultType="com.ruoyi.stock.dto.StockInventoryDto"> select si.*, pm.model, pm.unit, p.product_name from stock_inventory si left join product_model pm on si.product_model_id = pm.id left join product p on pm.product_id = p.id where 1 = 1 </select> </mapper>