package com.vincent.rsf.server.manager.controller;
|
|
import com.alibaba.fastjson.JSONObject;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.vincent.rsf.framework.common.R;
|
import com.vincent.rsf.server.common.domain.BaseParam;
|
import com.vincent.rsf.server.common.domain.PageParam;
|
import com.vincent.rsf.server.common.utils.FieldsUtils;
|
import com.vincent.rsf.server.manager.controller.params.WarehouseStockParam;
|
import com.vincent.rsf.server.manager.entity.StockItem;
|
import com.vincent.rsf.server.manager.entity.ViewStockManage;
|
import com.vincent.rsf.server.manager.entity.WarehouseAreasItem;
|
import com.vincent.rsf.server.manager.enums.ViewStockType;
|
import com.vincent.rsf.server.manager.service.WarehouseStockService;
|
import com.vincent.rsf.server.system.controller.BaseController;
|
import io.swagger.annotations.Api;
|
import org.apache.commons.lang3.StringUtils;
|
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RestController;
|
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Objects;
|
|
@Api("库存管理")
|
@RestController
|
@RequestMapping("/warehouse/stock")
|
public class WarehouseStockController extends BaseController {
|
|
@Autowired
|
private WarehouseStockService warehouseStockService;
|
|
|
@PreAuthorize("hasAuthority('manager:locItem:list')")
|
@PostMapping("/page")
|
public R page(@RequestBody Map<String, Object> param) {
|
if (Objects.isNull(param)) {
|
return R.error("参数不能为空!!");
|
}
|
BaseParam baseParam = buildParam(param, BaseParam.class);
|
PageParam<ViewStockManage, BaseParam> pageParam = new PageParam<>(baseParam, ViewStockManage.class);
|
WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class);
|
String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType();
|
ViewStockManage stock = stockParam.getStock();
|
QueryWrapper<ViewStockManage> wrapper = new QueryWrapper<>();
|
|
if (type.equals(ViewStockType.VIEW_STOCK_TYPE_SUPPLIER.val)) {
|
wrapper.groupBy("splr_id");
|
} else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_BATCH.val)) {
|
wrapper.groupBy("batch");
|
} else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_WAREHOUSE.val)) {
|
wrapper.groupBy("warehouse");
|
} else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_FIELDSINDEX.val)) {
|
wrapper.groupBy("fields_index");
|
} else {
|
wrapper.groupBy("matnr_id");
|
}
|
|
FieldsUtils.setFieldsFilters(wrapper, pageParam, ViewStockManage.class);
|
|
IPage<ViewStockManage> pageResult = warehouseStockService.pageByStock(pageParam, wrapper);
|
List<ViewStockManage> records = pageResult.getRecords();
|
for (ViewStockManage record : records) {
|
if (!Objects.isNull(record.getFieldsIndex())) {
|
Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
|
record.setExtendFields(fields);
|
}
|
}
|
pageResult.setRecords(records);
|
|
return R.ok(pageResult);
|
}
|
|
|
@PreAuthorize("hasAuthority('manager:locItem:list')")
|
@PostMapping("/histories/page")
|
public R histories(@RequestBody Map<String, Object> param) {
|
if (Objects.isNull(param)) {
|
return R.error("参数不能为空!!");
|
}
|
BaseParam baseParam = buildParam(param, BaseParam.class);
|
PageParam<StockItem, BaseParam> pageParam = new PageParam<>(baseParam, StockItem.class);
|
WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class);
|
String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType();
|
ViewStockManage stock = stockParam.getStock();
|
QueryWrapper<StockItem> wrapper = new QueryWrapper<>();
|
|
if (type.equals(ViewStockType.VIEW_STOCK_TYPE_SUPPLIER.val)) {
|
wrapper.eq("splr_id", stock.getSplrId());
|
} else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_BATCH.val)) {
|
wrapper.eq("batch", stock.getBatch());
|
} else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_WAREHOUSE.val)) {
|
wrapper.eq("warehouse", stock.getWarehouse());
|
} else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_FIELDSINDEX.val)) {
|
wrapper.eq("fields_index", stock.getFieldsIndex());
|
} else {
|
wrapper.eq("matnr_id", stock.getMatnrId());
|
}
|
IPage<StockItem> pageResult = warehouseStockService.pageByHistories(pageParam, wrapper);
|
|
List<StockItem> records = pageResult.getRecords();
|
for (StockItem record : records) {
|
if (!Objects.isNull(record.getFieldsIndex())) {
|
Map<String, String> fields = FieldsUtils.getFields(record.getFieldsIndex());
|
record.setExtendFields(fields);
|
}
|
}
|
pageResult.setRecords(records);
|
|
return R.ok(pageResult);
|
}
|
|
@PreAuthorize("hasAuthority('manager:locItem:list')")
|
@PostMapping("/info")
|
public R stockInfo(@RequestBody Map<String, Object> param) {
|
if (Objects.isNull(param)) {
|
return R.error("参数不能为空!!");
|
}
|
BaseParam baseParam = buildParam(param, BaseParam.class);
|
PageParam<ViewStockManage, BaseParam> pageParam = new PageParam<>(baseParam, ViewStockManage.class);
|
WarehouseStockParam stockParam = JSONObject.parseObject(JSONObject.toJSONString(param), WarehouseStockParam.class);
|
String type = Objects.isNull(stockParam.getAggType()) ? ViewStockType.VIEW_STOCK_TYPE_MATNR.val : stockParam.getAggType();
|
if (Objects.isNull(type)) {
|
return R.error("参数不能为空!!");
|
}
|
ViewStockManage stock = stockParam.getStock();
|
LambdaQueryWrapper<ViewStockManage> wrapper = new LambdaQueryWrapper<ViewStockManage>();
|
|
if (type.equals(ViewStockType.VIEW_STOCK_TYPE_SUPPLIER.val)) {
|
wrapper.eq(ViewStockManage::getSplrId, stock.getSplrId());
|
} else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_BATCH.val)) {
|
wrapper.eq(ViewStockManage::getBatch, stock.getBatch());
|
} else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_WAREHOUSE.val)) {
|
wrapper.eq(ViewStockManage::getWarehouse, stock.getWarehouse());
|
} else if (type.equals(ViewStockType.VIEW_STOCK_TYPE_FIELDSINDEX.val)) {
|
if (StringUtils.isBlank(stock.getFieldsIndex())) {
|
wrapper.isNull(ViewStockManage::getFieldsIndex);
|
} else {
|
wrapper.eq(ViewStockManage::getFieldsIndex, stock.getFieldsIndex());
|
}
|
} else {
|
wrapper.eq(ViewStockManage::getMatnrCode, stock.getMatnrCode());
|
}
|
|
return R.ok(warehouseStockService.page(pageParam, wrapper));
|
}
|
|
}
|