智慧农业后台管理
zengh
2022-07-01 defe17cd356718eaf925e7fb48ea5a80211569e5
1、库存损耗后台搭建,接口对接
8 files added
420 ■■■■■ changed files
src/main/java/org/springblade/modules/InventoryLoss/controller/InventoryController.java 135 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/InventoryLoss/dto/InventoryDTO.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/InventoryLoss/entity/Inventory.java 76 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/InventoryLoss/mapper/InventoryMapper.java 42 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/InventoryLoss/mapper/InventoryMapper.xml 18 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/InventoryLoss/service/InventoryService.java 40 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/InventoryLoss/service/impl/InventoryServiceImpl.java 41 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/InventoryLoss/vo/InventoryVO.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/InventoryLoss/controller/InventoryController.java
New file
@@ -0,0 +1,135 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.InventoryLoss.controller;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.AllArgsConstructor;
import org.springblade.core.boot.ctrl.BladeController;
import org.springblade.core.mp.support.Condition;
import org.springblade.core.mp.support.Query;
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.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.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/**
 * 库存损耗记录表 控制器
 *
 * @author BladeX
 * @since 2022-06-09
 */
@RestController
@AllArgsConstructor
@RequestMapping("/inventory/inventory")
@Api(value = "库存损耗记录表", tags = "库存损耗记录表接口")
public class InventoryController extends BladeController {
    private final InventoryService inventoryService;
    private final FarmProductStockService farmProductStockService;
    /**
     * 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入sale")
    public R<Inventory> detail(Inventory inventory) {
        Inventory detail = inventoryService.getOne(Condition.getQueryWrapper(inventory));
        return R.data(detail);
    }
    /**
     * 分页 库存损耗记录表
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入sale")
    public R<IPage<Inventory>> list(Inventory inventory, Query query) {
        IPage<Inventory> pages = inventoryService.page(Condition.getPage(query), Condition.getQueryWrapper(inventory));
        return R.data(pages);
    }
    /**
     * 自定义分页 库存损耗记录表
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入sale")
    public R<IPage<InventoryVO>> page(InventoryVO inventory, Query query) {
        IPage<InventoryVO> pages = inventoryService.selectSalePage(Condition.getPage(query), inventory);
        return R.data(pages);
    }
    /**
     * 新增 库存损耗记录表
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入sale")
    public R save(@Valid @RequestBody Inventory inventory) {
        return R.status(inventoryService.save(inventory));
    }
    /**
     * 修改 库存损耗记录表
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入sale")
    public R update(@Valid @RequestBody Inventory inventory) {
        return R.status(inventoryService.updateById(inventory));
    }
    /**
     * 新增或修改 库存损耗记录表
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入sale")
    public R submit(@Valid @RequestBody Inventory inventory) {
        boolean res = farmProductStockService.stockCompare(inventory.getSaleNum(),inventory.getStrainId());
        if (!res){
            throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前库存不足!"));
        }else {
            //库存充足,减去相应库存
            farmProductStockService.stockReduce(inventory.getSaleNum(),inventory.getStrainId());
        }
        return R.status(inventoryService.saveOrUpdate(inventory));
    }
    /**
     * 删除 库存损耗记录表
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(inventoryService.deleteLogic(Func.toLongList(ids)));
    }
}
src/main/java/org/springblade/modules/InventoryLoss/dto/InventoryDTO.java
New file
@@ -0,0 +1,34 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.InventoryLoss.dto;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.modules.InventoryLoss.entity.Inventory;
/**
 * 库存损耗记录表数据传输对象实体类
 *
 * @author BladeX
 * @since 2022-06-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class InventoryDTO extends Inventory {
    private static final long serialVersionUID = 1L;
}
src/main/java/org/springblade/modules/InventoryLoss/entity/Inventory.java
New file
@@ -0,0 +1,76 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.InventoryLoss.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.core.mp.base.BaseEntity;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
/**
 * 库存损耗记录表实体类
 *
 * @author BladeX
 * @since 2022-06-09
 */
@Data
@TableName("sys_inventory")
@EqualsAndHashCode(callSuper = true)
public class Inventory extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     */
    @TableId(value = "id",type = IdType.AUTO)
    private Long id;
    /**
     * 品种id
     */
    private String strainId;
    /**
     * 销售数量
     */
    private Double saleNum;
    /**
     * 损耗日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd",timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date lossTime;
    /**
     * 损耗原因
     */
    private String reason;
    /**
     * 备注
     */
    private String remarks;
}
src/main/java/org/springblade/modules/InventoryLoss/mapper/InventoryMapper.java
New file
@@ -0,0 +1,42 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.InventoryLoss.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.modules.InventoryLoss.entity.Inventory;
import org.springblade.modules.InventoryLoss.vo.InventoryVO;
import java.util.List;
/**
 * 库存损耗记录表 Mapper 接口
 *
 * @author BladeX
 * @since 2022-06-09
 */
public interface InventoryMapper extends BaseMapper<Inventory> {
    /**
     * 自定义分页
     *
     * @param page
     * @param lnventory
     * @return
     */
    List<InventoryVO> selectSalePage(IPage page, InventoryVO lnventory);
}
src/main/java/org/springblade/modules/InventoryLoss/mapper/InventoryMapper.xml
New file
@@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.springblade.modules.InventoryLoss.mapper.InventoryMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="inventoryResultMap" type="org.springblade.modules.InventoryLoss.entity.Inventory">
        <result column="id" property="id"/>
    </resultMap>
    <select id="selectSalePage" resultMap="inventoryResultMap">
        select *
        from sys_inventory
        where is_deleted = 0
    </select>
</mapper>
src/main/java/org/springblade/modules/InventoryLoss/service/InventoryService.java
New file
@@ -0,0 +1,40 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.InventoryLoss.service;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseService;
import org.springblade.modules.InventoryLoss.entity.Inventory;
import org.springblade.modules.InventoryLoss.vo.InventoryVO;
/**
 * 库存损耗记录表 服务类
 *
 * @author BladeX
 * @since 2022-06-09
 */
public interface InventoryService extends BaseService<Inventory> {
    /**
     * 自定义分页
     *
     * @param page
     * @param inventory
     * @return
     */
    IPage<InventoryVO> selectSalePage(IPage<InventoryVO> page, InventoryVO inventory);
}
src/main/java/org/springblade/modules/InventoryLoss/service/impl/InventoryServiceImpl.java
New file
@@ -0,0 +1,41 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.InventoryLoss.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springblade.modules.InventoryLoss.entity.Inventory;
import org.springblade.modules.InventoryLoss.mapper.InventoryMapper;
import org.springblade.modules.InventoryLoss.service.InventoryService;
import org.springblade.modules.InventoryLoss.vo.InventoryVO;
import org.springframework.stereotype.Service;
/**
 * 库存损耗记录表 服务实现类
 *
 * @author BladeX
 * @since 2022-06-09
 */
@Service
public class InventoryServiceImpl extends BaseServiceImpl<InventoryMapper, Inventory> implements InventoryService {
    @Override
    public IPage<InventoryVO> selectSalePage(IPage<InventoryVO> page, InventoryVO inventory) {
        return page.setRecords(baseMapper.selectSalePage(page, inventory));
    }
}
src/main/java/org/springblade/modules/InventoryLoss/vo/InventoryVO.java
New file
@@ -0,0 +1,34 @@
/*
 *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
 *
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are met:
 *
 *  Redistributions of source code must retain the above copyright notice,
 *  this list of conditions and the following disclaimer.
 *  Redistributions in binary form must reproduce the above copyright
 *  notice, this list of conditions and the following disclaimer in the
 *  documentation and/or other materials provided with the distribution.
 *  Neither the name of the dreamlu.net developer nor the names of its
 *  contributors may be used to endorse or promote products derived from
 *  this software without specific prior written permission.
 *  Author: Chill 庄骞 (smallchill@163.com)
 */
package org.springblade.modules.InventoryLoss.vo;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springblade.modules.InventoryLoss.entity.Inventory;
/**
 * 库存损耗记录表视图实体类
 *
 * @author BladeX
 * @since 2022-06-09
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class InventoryVO extends Inventory {
    private static final long serialVersionUID = 1L;
}