/* * 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.stockrecord.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.modules.soldr.entity.Soldr; import org.springblade.modules.soldr.service.ISoldrService; import org.springblade.modules.soldrecord.entity.Soldrecord; import org.springblade.modules.soldrecord.service.ISoldrecordService; import org.springblade.modules.stock.entity.Stock; import org.springblade.modules.stock.service.IStockService; import org.springblade.modules.system.entity.DictBiz; import org.springblade.modules.system.service.IDictBizService; import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.RequestParam; import com.baomidou.mybatisplus.core.metadata.IPage; import org.springblade.modules.stockrecord.entity.Stockrecord; import org.springblade.modules.stockrecord.vo.StockrecordVO; import org.springblade.modules.stockrecord.service.IStockrecordService; import org.springblade.core.boot.ctrl.BladeController; import java.util.List; /** * 出入库记录 控制器 * * @author BladeX * @since 2022-05-12 */ @RestController @AllArgsConstructor @RequestMapping("/stockrecord/stockrecord") @Api(value = "出入库记录", tags = "出入库记录接口") public class StockrecordController extends BladeController { private final IStockrecordService stockrecordService; private final IStockService stockService; private final IDictBizService dictService; private final ISoldrecordService soldrecordService; private final ISoldrService soldrService; /** * 详情 */ @GetMapping("/detail") @ApiOperationSupport(order = 1) @ApiOperation(value = "详情", notes = "传入stockrecord") public R detail(Stockrecord stockrecord) { Stockrecord detail = stockrecordService.getOne(Condition.getQueryWrapper(stockrecord)); return R.data(detail); } /** * 分页 出入库记录 */ @GetMapping("/list") @ApiOperationSupport(order = 2) @ApiOperation(value = "分页", notes = "传入stockrecord") public R> list(Stockrecord stockrecord, Query query) { IPage pages = stockrecordService.page(Condition.getPage(query), Condition.getQueryWrapper(stockrecord)); return R.data(pages); } /** * 自定义分页 出入库记录 */ @GetMapping("/page") @ApiOperationSupport(order = 3) @ApiOperation(value = "分页", notes = "传入stockrecord") public R> page(StockrecordVO stockrecord, Query query) { IPage pages = stockrecordService.seletStockRecordList(Condition.getPage(query), stockrecord); for (int i = 0; i < pages.getRecords().size(); i++) { String specs = pages.getRecords().get(i).getSpecs1(); String dic1 = pages.getRecords().get(i).getDic1(); String dic2 = pages.getRecords().get(i).getDic2(); String s = specs + dic1 + "/" + dic2; //出库 if (pages.getRecords().get(i).getStockType1() == 0) { String count = "-" + pages.getRecords().get(i).getAmount1() + dic2; pages.getRecords().get(i).setCount(count); } else { String count = "+" + pages.getRecords().get(i).getAmount1() + dic2; pages.getRecords().get(i).setCount(count); } pages.getRecords().get(i).setSpn(s); //获取农资出入库类型 0:出库 1:入库 Integer stockType1 = pages.getRecords().get(i).getStockType1(); String type1 = pages.getRecords().get(i).getType1(); if (stockType1 == 0) { List tree = dictService.getList("stockPurchase1"); for (int j = 0; j < tree.size(); j++) { if (tree.get(j).getDictKey().equals(type1)) { pages.getRecords().get(i).setType1(tree.get(j).getDictValue()); } } } else { List tree = dictService.getList("stockPurchase"); for (int j = 0; j < tree.size(); j++) { if (tree.get(j).getDictKey().equals(type1)) { pages.getRecords().get(i).setType1(tree.get(j).getDictValue()); } } } } return R.data(pages); } /** * 新增 出入库记录 */ @PostMapping("/save") @ApiOperationSupport(order = 4) @ApiOperation(value = "新增", notes = "传入stockrecord") public R save(@Valid @RequestBody StockrecordVO stockrecord) { Integer stockType1 = stockrecord.getStockType1(); //出库 if (stockType1 == 0) { //库存量 Integer num = stockrecord.getNum(); //出库量 Integer amount1 = stockrecord.getAmount1(); //当前总量 int i = num - amount1; Stock stock = new Stock(); stock.setId(stockrecord.getSid()); stock.setAmount(i); //统计公斤 Integer specsValue1 = stockrecord.getSpecsVal1(); double v = 0; //克 if (specsValue1 == 0) { v = amount1 * 0.001; } //斤 if (specsValue1 == 1) { v = amount1 * 0.5; } //公斤 if (specsValue1 == 2) { v = amount1; } //吨 if (specsValue1 == 3) { v = amount1 * 1000; } //毫升 if (specsValue1 == 4) { //毫升换成升 double s = amount1 * 0.001; //升换成公斤 v = s; } //升 if (specsValue1 == 5) { v = amount1; } stockrecord.setCensus(v); if (i == 0) { stock.setState("1"); stockService.UpdaeAmountc(stock); //同时删除所有农资记录 soldrecordService.delc(stockrecord.getStockId1()); soldrService.del(stockrecord.getSid()); } else { stock.setState("0"); stockService.UpdaeAmountc(stock); } //已出库农资记录 Soldrecord soldrecord = new Soldrecord(); soldrecord.setStockId1(stockrecord.getStockId1()); soldrecord.setAmount1(amount1); soldrecord.setSpecs1(stockrecord.getSpecs1()); soldrecord.setSpecsVal1(stockrecord.getSpecsVal1()); soldrecord.setSpecsVal2(stockrecord.getSpecsVal2()); soldrecord.setType(stockrecord.getType1()); String type1 = stockrecord.getType1(); if (type1.equals("0")) { //已出库农资数量记录 Soldr soldr = new Soldr(); soldr.setSid(stockrecord.getSid()); soldr.setStockId1(stockrecord.getStockId1()); soldr.setStockId1(stockrecord.getStockId1()); soldr.setAmount1(amount1); soldr.setSpecs1(stockrecord.getSpecs1()); soldr.setSpecsVal1(stockrecord.getSpecsVal1()); soldr.setSpecsVal2(stockrecord.getSpecsVal2()); soldr.setType(stockrecord.getType1()); //已出库农资数量 Soldr detail = soldrService.getOne(Condition.getQueryWrapper(soldr)); if (null != detail) { Integer amount11 = detail.getAmount1(); soldrecordService.updateSold(amount11 + amount1, detail.getSid()); } else { soldrService.save(soldr); } //已出库农资 soldrecordService.save(soldrecord); } } //入库 else { //库存量 Integer num = stockrecord.getNum(); //入库量 Integer amount1 = stockrecord.getAmount1(); //当前总量 int i = num + amount1; Stock stock = new Stock(); stock.setId(stockrecord.getSid()); stock.setAmount(i); stock.setState("0"); stockService.UpdaeAmountc(stock); //统计公斤 Integer specsValue1 = stockrecord.getSpecsVal1(); double v = 0; //克 if (specsValue1 == 0) { v = amount1 * 0.001; } //斤 if (specsValue1 == 1) { v = amount1 * 0.5; } //公斤 if (specsValue1 == 2) { v = amount1; } //吨 if (specsValue1 == 3) { v = amount1 * 1000; } //毫升 if (specsValue1 == 4) { //毫升换成升 double s = amount1 * 0.001; //升换成公斤 v = s; } //升 if (specsValue1 == 5) { v = amount1; } stockrecord.setCensus(v); } return R.status(stockrecordService.save(stockrecord)); } /** * 修改 出入库记录 */ @PostMapping("/update") @ApiOperationSupport(order = 5) @ApiOperation(value = "修改", notes = "传入stockrecord") public R update(@Valid @RequestBody Stockrecord stockrecord) { return R.status(stockrecordService.updateById(stockrecord)); } /** * 新增或修改 出入库记录 */ @PostMapping("/submit") @ApiOperationSupport(order = 6) @ApiOperation(value = "新增或修改", notes = "传入stockrecord") public R submit(@Valid @RequestBody Stockrecord stockrecord) { return R.status(stockrecordService.saveOrUpdate(stockrecord)); } /** * 删除 出入库记录 */ @PostMapping("/remove") @ApiOperationSupport(order = 7) @ApiOperation(value = "逻辑删除", notes = "传入ids") public R remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) { return R.status(stockrecordService.deleteLogic(Func.toLongList(ids))); } }