智慧农业后台管理
guoshilong
2022-11-08 72b971c98c46531064d74b68fc8fe8864ed0b544
src/main/java/org/springblade/modules/InventoryLoss/controller/InventoryController.java
@@ -28,13 +28,20 @@
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springblade.core.tool.utils.StringUtil;
import org.springblade.modules.farmplant.entity.FarmProductStock;
import org.springblade.modules.farmplant.service.FarmProductStockService;
import org.springblade.modules.InventoryLoss.entity.Inventory;
import org.springblade.modules.InventoryLoss.service.InventoryService;
import org.springblade.modules.InventoryLoss.vo.InventoryVO;
import org.springblade.modules.process.service.IProcessService;
import org.springblade.modules.processInv.entity.ProcessInv;
import org.springblade.modules.processInv.service.IProcessInvService;
import org.springblade.modules.processInv.vo.ProcessInvVO;
import org.springblade.modules.sale.entity.Sale;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
import java.util.Date;
/**
 * 库存损耗记录表 控制器
@@ -50,13 +57,14 @@
   private final InventoryService inventoryService;
   private final FarmProductStockService farmProductStockService;
//   private final IProcessService processService;
   private final IProcessInvService processInvService;
   /**
    * 详情
    */
   @GetMapping("/detail")
   @ApiOperationSupport(order = 1)
   @ApiOperation(value = "详情", notes = "传入sale")
   @ApiOperation(value = "详情", notes = "传入inventory")
   public R<Inventory> detail(Inventory inventory) {
      Inventory detail = inventoryService.getOne(Condition.getQueryWrapper(inventory));
      return R.data(detail);
@@ -67,7 +75,7 @@
    */
   @GetMapping("/list")
   @ApiOperationSupport(order = 2)
   @ApiOperation(value = "分页", notes = "传入sale")
   @ApiOperation(value = "分页", notes = "传入inventory")
   public R<IPage<Inventory>> list(Inventory inventory, Query query) {
      IPage<Inventory> pages = inventoryService.page(Condition.getPage(query), Condition.getQueryWrapper(inventory));
      return R.data(pages);
@@ -78,7 +86,7 @@
    */
   @GetMapping("/page")
   @ApiOperationSupport(order = 3)
   @ApiOperation(value = "分页", notes = "传入sale")
   @ApiOperation(value = "分页", notes = "传入inventory")
   public R<IPage<InventoryVO>> page(InventoryVO inventory, Query query) {
      IPage<InventoryVO> pages = inventoryService.selectSalePage(Condition.getPage(query), inventory);
      return R.data(pages);
@@ -89,7 +97,7 @@
    */
   @PostMapping("/save")
   @ApiOperationSupport(order = 4)
   @ApiOperation(value = "新增", notes = "传入sale")
   @ApiOperation(value = "新增", notes = "传入inventory")
   public R save(@Valid @RequestBody Inventory inventory) {
      return R.status(inventoryService.save(inventory));
   }
@@ -99,7 +107,7 @@
    */
   @PostMapping("/update")
   @ApiOperationSupport(order = 5)
   @ApiOperation(value = "修改", notes = "传入sale")
   @ApiOperation(value = "修改", notes = "传入inventory")
   public R update(@Valid @RequestBody Inventory inventory) {
      return R.status(inventoryService.updateById(inventory));
   }
@@ -109,7 +117,7 @@
    */
   @PostMapping("/submit")
   @ApiOperationSupport(order = 6)
   @ApiOperation(value = "新增或修改", notes = "传入sale")
   @ApiOperation(value = "新增或修改", notes = "传入inventory")
   public R submit(@Valid @RequestBody InventoryVO inventory) {
      boolean res = farmProductStockService.stockCompare(inventory.getSaleNum(),inventory.getProid());
      if (!res){
@@ -118,9 +126,43 @@
         //库存充足,减去相应库存
         farmProductStockService.stockReduce(inventory.getSaleNum(),inventory.getProid());
      }
      inventory.setProdId(inventory.getProid());
      return R.status(inventoryService.saveOrUpdate(inventory));
   }
   /**
    * 新增或修改 库存损耗记录表(加工产品)
    */
   @PostMapping("/submitProcess")
   @ApiOperationSupport(order = 8)
   @ApiOperation(value = "新增或修改", notes = "传入inventory")
   public R submitProcess(@Valid @RequestBody InventoryVO inventory) {
//      boolean res = processService.stockCompare(inventory.getSaleNum(),inventory.getProid());
//      if (!res){
//         throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前库存不足!"));
//      }else {
//         //库存充足,减去相应库存
//         processService.stockReduce(inventory.getSaleNum(),inventory.getProid());
//      }
//      return R.status(inventoryService.saveOrUpdate(inventory));
      boolean res = processInvService.stockCompare(inventory.getSaleNum(),inventory.getProid());
      if (!res){
         throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前库存不足!"));
      }else {
         //库存充足,减去相应库存
         processInvService.stockReduce(inventory.getSaleNum(),inventory.getProid());
         //更新updateTIme 和 updateUser
         ProcessInv processInv = new ProcessInv();
         processInv.setUpdateUser(inventory.getCreateUser());
         processInv.setUpdateTime(new Date());
         processInv.setId(Long.parseLong(inventory.getProid()));
         ProcessInvVO processInvVO = processInvService.getLand(processInv);
         inventory.setLandId(processInvVO.getLandId());
         processInvService.updateById(processInv);
      }
      inventory.setProdId(inventory.getProid());
      return R.status(inventoryService.saveOrUpdate(inventory));
   }
   /**
    * 删除 库存损耗记录表
@@ -129,6 +171,18 @@
   @ApiOperationSupport(order = 7)
   @ApiOperation(value = "逻辑删除", notes = "传入ids")
   public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
      Inventory inventory = inventoryService.getById(Long.parseLong(ids));
      if (inventory.getType() == 0){
         FarmProductStock farmProductStock = farmProductStockService.getById(inventory.getProdId());
         Double weight = Double.parseDouble(farmProductStock.getWeight())+inventory.getSaleNum();
         farmProductStock.setWeight(weight.toString());
         farmProductStockService.updateById(farmProductStock);
      }else {
         ProcessInv inv = processInvService.findById(inventory.getProdId());
         Double weight = inv.getProductInventoryNum()+inventory.getSaleNum();
         inv.setProductInventoryNum(weight);
         processInvService.updateById(inv);
      }
      return R.status(inventoryService.deleteLogic(Func.toLongList(ids)));
   }