智慧农业后台管理
tangzy
2022-07-16 77dd7d19bb13f19acd273ba92dfd2b866a229c5e
库存
3 files modified
9 files added
465 ■■■■■ changed files
src/main/java/org/springblade/common/config/BladeConfiguration.java 1 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/farm/mapper/FarmingRecordMapper.xml 2 ●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/farmplant/mapper/FarmPlantMapper.xml 4 ●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/retrieval/controller/RetrievalController.java 138 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/retrieval/dto/RetrievalDTO.java 34 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/retrieval/entity/Retrieval.java 84 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/retrieval/mapper/RetrievalMapper.java 42 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/retrieval/mapper/RetrievalMapper.xml 31 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/retrieval/service/IRetrievalService.java 41 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/retrieval/service/impl/RetrievalServiceImpl.java 41 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/modules/retrieval/vo/RetrievalVO.java 37 ●●●●● patch | view | raw | blame | history
src/main/java/sql/retrieval.menu.sql 10 ●●●●● patch | view | raw | blame | history
src/main/java/org/springblade/common/config/BladeConfiguration.java
@@ -67,6 +67,7 @@
        secureRegistry.excludePathPatterns("/soldr/soldr/**");
        secureRegistry.excludePathPatterns("/machining/machining/**");
        secureRegistry.excludePathPatterns("/stockrecord/stockrecord/**");
        secureRegistry.excludePathPatterns("/retrieval/retrieval/**");
        secureRegistry.excludePathPatterns("/blade-resource/oss/endpoint/**");
        return secureRegistry;
    }
src/main/java/org/springblade/modules/farm/mapper/FarmingRecordMapper.xml
@@ -41,7 +41,7 @@
            and sfr.strain_id = #{farmingRecord.strainId}
        </if>
        <if test="farmingRecord.farmId!=null and farmingRecord.farmId!=''">
            and sl.farm_id = #{farm.farmId}
            and sl.farm_id = #{farmingRecord.farmId}
        </if>
    </select>
src/main/java/org/springblade/modules/farmplant/mapper/FarmPlantMapper.xml
@@ -89,8 +89,8 @@
        <if test="farmPlant.endTime!=null and farmPlant.endTime!=''">
            and sfp.transplan_time &lt;= #{farmPlant.endTime}
        </if>
        <if test="farmPlant.deptId!=null and farmPlant.deptId!=''">
            and sfp.dept_id = #{farmPlant.deptId}
        <if test="farmPlant.farmId!=null and farmPlant.farmId!=''">
            and sl.farm_id = #{farmPlant.farmId}
        </if>
        <if test="farmPlant.tenantId!=null and farmPlant.tenantId!=''">
            and sfp.tenant_id = #{farmPlant.tenantId}
src/main/java/org/springblade/modules/retrieval/controller/RetrievalController.java
New file
@@ -0,0 +1,138 @@
/*
 *      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.retrieval.controller;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import lombok.AllArgsConstructor;
import javax.validation.Valid;
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.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestParam;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springblade.modules.retrieval.entity.Retrieval;
import org.springblade.modules.retrieval.vo.RetrievalVO;
import org.springblade.modules.retrieval.service.IRetrievalService;
import org.springblade.core.boot.ctrl.BladeController;
/**
 * 库存出库记录表 控制器
 *
 * @author BladeX
 * @since 2022-07-16
 */
@RestController
@AllArgsConstructor
@RequestMapping("/retrieval/retrieval")
@Api(value = "库存出库记录表", tags = "库存出库记录表接口")
public class RetrievalController extends BladeController {
    private final IRetrievalService retrievalService;
    private final FarmProductStockService farmProductStockService;
    /**
     * 详情
     */
    @GetMapping("/detail")
    @ApiOperationSupport(order = 1)
    @ApiOperation(value = "详情", notes = "传入retrieval")
    public R<Retrieval> detail(Retrieval retrieval) {
        Retrieval detail = retrievalService.getOne(Condition.getQueryWrapper(retrieval));
        return R.data(detail);
    }
    /**
     * 分页 库存出库记录表
     */
    @GetMapping("/list")
    @ApiOperationSupport(order = 2)
    @ApiOperation(value = "分页", notes = "传入retrieval")
    public R<IPage<Retrieval>> list(Retrieval retrieval, Query query) {
        IPage<Retrieval> pages = retrievalService.page(Condition.getPage(query), Condition.getQueryWrapper(retrieval));
        return R.data(pages);
    }
    /**
     * 自定义分页 库存出库记录表
     */
    @GetMapping("/page")
    @ApiOperationSupport(order = 3)
    @ApiOperation(value = "分页", notes = "传入retrieval")
    public R<IPage<RetrievalVO>> page(RetrievalVO retrieval, Query query) {
        IPage<RetrievalVO> pages = retrievalService.selectRetrievalPage(Condition.getPage(query), retrieval);
        return R.data(pages);
    }
    /**
     * 新增 库存出库记录表
     */
    @PostMapping("/save")
    @ApiOperationSupport(order = 4)
    @ApiOperation(value = "新增", notes = "传入retrieval")
    public R save(@Valid @RequestBody Retrieval retrieval) {
        return R.status(retrievalService.save(retrieval));
    }
    /**
     * 修改 库存出库记录表
     */
    @PostMapping("/update")
    @ApiOperationSupport(order = 5)
    @ApiOperation(value = "修改", notes = "传入retrieval")
    public R update(@Valid @RequestBody Retrieval retrieval) {
        return R.status(retrievalService.updateById(retrieval));
    }
    /**
     * 新增或修改 库存出库记录表
     */
    @PostMapping("/submit")
    @ApiOperationSupport(order = 6)
    @ApiOperation(value = "新增或修改", notes = "传入retrieval")
    public R submit(@Valid @RequestBody RetrievalVO retrieval) {
        boolean res = farmProductStockService.stockCompare(retrieval.getSaleNum(), retrieval.getProid());
        if (!res) {
            throw new org.springblade.core.log.exception.ServiceException(StringUtil.format("当前库存不足!"));
        } else {
            //库存充足,减去相应库存
            farmProductStockService.stockReduce(retrieval.getSaleNum(), retrieval.getProid());
        }
        return R.status(retrievalService.saveOrUpdate(retrieval));
    }
    /**
     * 删除 库存出库记录表
     */
    @PostMapping("/remove")
    @ApiOperationSupport(order = 7)
    @ApiOperation(value = "逻辑删除", notes = "传入ids")
    public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
        return R.status(retrievalService.deleteLogic(Func.toLongList(ids)));
    }
}
src/main/java/org/springblade/modules/retrieval/dto/RetrievalDTO.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.retrieval.dto;
import org.springblade.modules.retrieval.entity.Retrieval;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 库存出库记录表数据传输对象实体类
 *
 * @author BladeX
 * @since 2022-07-16
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class RetrievalDTO extends Retrieval {
    private static final long serialVersionUID = 1L;
}
src/main/java/org/springblade/modules/retrieval/entity/Retrieval.java
New file
@@ -0,0 +1,84 @@
/*
 *      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.retrieval.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springblade.core.mp.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
/**
 * 库存出库记录表实体类
 *
 * @author BladeX
 * @since 2022-07-16
 */
@Data
@TableName("sys_retrieval")
@EqualsAndHashCode(callSuper = true)
public class Retrieval extends BaseEntity {
    private static final long serialVersionUID = 1L;
    /**
     * 品种id
     */
    private String strainId;
    /**
     * 出库时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date saleTime;
    /**
     * 出库数量
     */
    private Double saleNum;
    /**
     * 出库去向(省)
     */
    private Integer saleDestination;
    /**
     * 具体出库去向
     */
    private String saleDestination1;
    /**
     * 出库备注
     */
    private String remarks;
    /**
     * 出库去向(市)
     */
    private String city;
    /**
     * 出库去向(县)
     */
    private String county;
    /**
     * 地块id
     */
    private String landId;
}
src/main/java/org/springblade/modules/retrieval/mapper/RetrievalMapper.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.retrieval.mapper;
import org.springblade.modules.retrieval.entity.Retrieval;
import org.springblade.modules.retrieval.vo.RetrievalVO;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import java.util.List;
/**
 * 库存出库记录表 Mapper 接口
 *
 * @author BladeX
 * @since 2022-07-16
 */
public interface RetrievalMapper extends BaseMapper<Retrieval> {
    /**
     * 自定义分页
     *
     * @param page
     * @param retrieval
     * @return
     */
    List<RetrievalVO> selectRetrievalPage(IPage page, RetrievalVO retrieval);
}
src/main/java/org/springblade/modules/retrieval/mapper/RetrievalMapper.xml
New file
@@ -0,0 +1,31 @@
<?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.retrieval.mapper.RetrievalMapper">
    <!-- 通用查询映射结果 -->
    <resultMap id="retrievalResultMap" type="org.springblade.modules.retrieval.entity.Retrieval">
        <result column="id" property="id"/>
        <result column="create_user" property="createUser"/>
        <result column="create_dept" property="createDept"/>
        <result column="create_time" property="createTime"/>
        <result column="update_user" property="updateUser"/>
        <result column="update_time" property="updateTime"/>
        <result column="status" property="status"/>
        <result column="is_deleted" property="isDeleted"/>
        <result column="strain_id" property="strainId"/>
        <result column="sale_time" property="saleTime"/>
        <result column="sale_num" property="saleNum"/>
        <result column="sale_destination" property="saleDestination"/>
        <result column="sale_destination1" property="saleDestination1"/>
        <result column="remarks" property="remarks"/>
        <result column="city" property="city"/>
        <result column="county" property="county"/>
        <result column="land_id" property="landId"/>
    </resultMap>
    <select id="selectRetrievalPage" resultMap="retrievalResultMap">
        select * from sys_retrieval where is_deleted = 0
    </select>
</mapper>
src/main/java/org/springblade/modules/retrieval/service/IRetrievalService.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.retrieval.service;
import org.springblade.modules.retrieval.entity.Retrieval;
import org.springblade.modules.retrieval.vo.RetrievalVO;
import org.springblade.core.mp.base.BaseService;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
 * 库存出库记录表 服务类
 *
 * @author BladeX
 * @since 2022-07-16
 */
public interface IRetrievalService extends BaseService<Retrieval> {
    /**
     * 自定义分页
     *
     * @param page
     * @param retrieval
     * @return
     */
    IPage<RetrievalVO> selectRetrievalPage(IPage<RetrievalVO> page, RetrievalVO retrieval);
}
src/main/java/org/springblade/modules/retrieval/service/impl/RetrievalServiceImpl.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.retrieval.service.impl;
import org.springblade.modules.retrieval.entity.Retrieval;
import org.springblade.modules.retrieval.vo.RetrievalVO;
import org.springblade.modules.retrieval.mapper.RetrievalMapper;
import org.springblade.modules.retrieval.service.IRetrievalService;
import org.springblade.core.mp.base.BaseServiceImpl;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.metadata.IPage;
/**
 * 库存出库记录表 服务实现类
 *
 * @author BladeX
 * @since 2022-07-16
 */
@Service
public class RetrievalServiceImpl extends BaseServiceImpl<RetrievalMapper, Retrieval> implements IRetrievalService {
    @Override
    public IPage<RetrievalVO> selectRetrievalPage(IPage<RetrievalVO> page, RetrievalVO retrieval) {
        return page.setRecords(baseMapper.selectRetrievalPage(page, retrieval));
    }
}
src/main/java/org/springblade/modules/retrieval/vo/RetrievalVO.java
New file
@@ -0,0 +1,37 @@
/*
 *      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.retrieval.vo;
import org.springblade.modules.retrieval.entity.Retrieval;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
 * 库存出库记录表视图实体类
 *
 * @author BladeX
 * @since 2022-07-16
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class RetrievalVO extends Retrieval {
    private static final long serialVersionUID = 1L;
    /**
     * 库存量主键id
     */
    private String proid;
}
src/main/java/sql/retrieval.menu.sql
New file
@@ -0,0 +1,10 @@
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1548193077838049282', 1123598815738675201, 'retrieval', '出库', 'menu', '/retrieval/retrieval', NULL, 1, 1, 0, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1548193077838049283', '1548193077838049282', 'retrieval_add', '新增', 'add', '/retrieval/retrieval/add', 'plus', 1, 2, 1, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1548193077838049284', '1548193077838049282', 'retrieval_edit', '修改', 'edit', '/retrieval/retrieval/edit', 'form', 2, 2, 2, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1548193077838049285', '1548193077838049282', 'retrieval_delete', '删除', 'delete', '/api/retrieval/retrieval/remove', 'delete', 3, 2, 3, 1, NULL, 0);
INSERT INTO `blade_menu`(`id`, `parent_id`, `code`, `name`, `alias`, `path`, `source`, `sort`, `category`, `action`, `is_open`, `remark`, `is_deleted`)
VALUES ('1548193077838049286', '1548193077838049282', 'retrieval_view', '查看', 'view', '/retrieval/retrieval/view', 'file-text', 4, 2, 2, 1, NULL, 0);