From defe17cd356718eaf925e7fb48ea5a80211569e5 Mon Sep 17 00:00:00 2001
From: zengh <123456>
Date: Fri, 01 Jul 2022 16:36:41 +0800
Subject: [PATCH] 1、库存损耗后台搭建,接口对接

---
 src/main/java/org/springblade/modules/InventoryLoss/controller/InventoryController.java    |  135 +++++++++++++++++++
 src/main/java/org/springblade/modules/InventoryLoss/vo/InventoryVO.java                    |   34 ++++
 src/main/java/org/springblade/modules/InventoryLoss/mapper/InventoryMapper.xml             |   18 ++
 src/main/java/org/springblade/modules/InventoryLoss/mapper/InventoryMapper.java            |   42 ++++++
 src/main/java/org/springblade/modules/InventoryLoss/service/InventoryService.java          |   40 +++++
 src/main/java/org/springblade/modules/InventoryLoss/service/impl/InventoryServiceImpl.java |   41 +++++
 src/main/java/org/springblade/modules/InventoryLoss/dto/InventoryDTO.java                  |   34 ++++
 src/main/java/org/springblade/modules/InventoryLoss/entity/Inventory.java                  |   76 ++++++++++
 8 files changed, 420 insertions(+), 0 deletions(-)

diff --git a/src/main/java/org/springblade/modules/InventoryLoss/controller/InventoryController.java b/src/main/java/org/springblade/modules/InventoryLoss/controller/InventoryController.java
new file mode 100644
index 0000000..558f81d
--- /dev/null
+++ b/src/main/java/org/springblade/modules/InventoryLoss/controller/InventoryController.java
@@ -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)));
+	}
+
+}
diff --git a/src/main/java/org/springblade/modules/InventoryLoss/dto/InventoryDTO.java b/src/main/java/org/springblade/modules/InventoryLoss/dto/InventoryDTO.java
new file mode 100644
index 0000000..ac207e7
--- /dev/null
+++ b/src/main/java/org/springblade/modules/InventoryLoss/dto/InventoryDTO.java
@@ -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;
+
+}
diff --git a/src/main/java/org/springblade/modules/InventoryLoss/entity/Inventory.java b/src/main/java/org/springblade/modules/InventoryLoss/entity/Inventory.java
new file mode 100644
index 0000000..fc8d615
--- /dev/null
+++ b/src/main/java/org/springblade/modules/InventoryLoss/entity/Inventory.java
@@ -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;
+
+}
diff --git a/src/main/java/org/springblade/modules/InventoryLoss/mapper/InventoryMapper.java b/src/main/java/org/springblade/modules/InventoryLoss/mapper/InventoryMapper.java
new file mode 100644
index 0000000..aac93d8
--- /dev/null
+++ b/src/main/java/org/springblade/modules/InventoryLoss/mapper/InventoryMapper.java
@@ -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);
+}
diff --git a/src/main/java/org/springblade/modules/InventoryLoss/mapper/InventoryMapper.xml b/src/main/java/org/springblade/modules/InventoryLoss/mapper/InventoryMapper.xml
new file mode 100644
index 0000000..2efadae
--- /dev/null
+++ b/src/main/java/org/springblade/modules/InventoryLoss/mapper/InventoryMapper.xml
@@ -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>
diff --git a/src/main/java/org/springblade/modules/InventoryLoss/service/InventoryService.java b/src/main/java/org/springblade/modules/InventoryLoss/service/InventoryService.java
new file mode 100644
index 0000000..01e4f86
--- /dev/null
+++ b/src/main/java/org/springblade/modules/InventoryLoss/service/InventoryService.java
@@ -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);
+}
diff --git a/src/main/java/org/springblade/modules/InventoryLoss/service/impl/InventoryServiceImpl.java b/src/main/java/org/springblade/modules/InventoryLoss/service/impl/InventoryServiceImpl.java
new file mode 100644
index 0000000..84bc25f
--- /dev/null
+++ b/src/main/java/org/springblade/modules/InventoryLoss/service/impl/InventoryServiceImpl.java
@@ -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));
+	}
+
+}
diff --git a/src/main/java/org/springblade/modules/InventoryLoss/vo/InventoryVO.java b/src/main/java/org/springblade/modules/InventoryLoss/vo/InventoryVO.java
new file mode 100644
index 0000000..e1482f1
--- /dev/null
+++ b/src/main/java/org/springblade/modules/InventoryLoss/vo/InventoryVO.java
@@ -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;
+
+}

--
Gitblit v1.9.3