package com.jilongda.manage.controller;
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.manage.dto.FrameInventoryDTO;
import com.jilongda.manage.dto.GetCurrentByParam;
import com.jilongda.manage.dto.GetCurrentByParamLens;
import com.jilongda.manage.dto.LensInventoryDTO;
import com.jilongda.manage.model.*;
import com.jilongda.manage.query.TFrameGoodsQuery;
import com.jilongda.manage.query.TInventoryQuery;
import com.jilongda.manage.service.*;
import com.jilongda.manage.utils.LoginInfoUtil;
import com.jilongda.manage.vo.TFrameGoodsVO;
import com.jilongda.manage.vo.TInventoryInfoVO;
import com.jilongda.manage.vo.TInventoryVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.models.auth.In;
import org.springframework.beans.BeanUtils;
import org.springframework.context.annotation.Bean;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;
/**
*
* 盘点表 前端控制器
*
*
* @author 无关风月
* @since 2024-12-09
*/
@RestController
@Api(tags = "盘点管理")
@RequestMapping("/t-inventory")
public class TInventoryController {
@Resource
private TInventoryService inventoryService;
@Resource
private TInventoryFrameDetailService inventoryFrameDetailService;
@Resource
private TInventoryLensDetailService inventoryLensDetailService;
@Resource
private LoginInfoUtil loginInfoUtil;
@Resource
private TFrameGoodsService frameGoodsService;
@Resource
private TLensGoodsService lensGoodsService;
@Resource
private TLensSeriesService lensSeriesService;
@Resource
private TModelService modelService;
@Resource
private TStoreService storeService;
@ApiOperation(value = "盘点分页列表")
@PostMapping(value = "/pageList")
public ApiResult> pageList(@RequestBody TInventoryQuery query) {
if (StringUtils.hasLength(query.getStartTime())){
query.setStartTime(query.getStartTime()+" 00:00:00");
query.setEndTime(query.getEndTime()+" 23:59:59");
}
return ApiResult.success(inventoryService.pageList(query));
}
@ApiOperation(value = "镜架添加盘点")
@PostMapping(value = "/addFrameInventory")
public ApiResult addFrameInventory(@RequestBody FrameInventoryDTO query) {
TInventory tInventory = new TInventory();
BeanUtils.copyProperties(query, tInventory);
inventoryService.save(tInventory);
for (TInventoryFrameDetail tInventoryFrameDetail : query.getList()) {
tInventoryFrameDetail.setInventoryId(tInventory.getId());
}
inventoryFrameDetailService.saveBatch(query.getList());
return ApiResult.success(tInventory.getId());
}
@ApiOperation(value = "镜片添加盘点")
@PostMapping(value = "/addLensInventory")
public ApiResult addLensInventory(@RequestBody LensInventoryDTO query) {
TInventory tInventory = new TInventory();
BeanUtils.copyProperties(query, tInventory);
inventoryService.save(tInventory);
for (TInventoryLensDetail tInventoryFrameDetail : query.getList()) {
tInventoryFrameDetail.setInventoryId(tInventory.getId());
}
inventoryLensDetailService.saveBatch(query.getList());
return ApiResult.success(tInventory.getId());
}
@ApiOperation(value = "镜架-根据品牌id查询对应库存")
@PostMapping(value = "/getCountByBrandId")
public ApiResult getCountByBrandId(Integer id) {
List collect = modelService.lambdaQuery().eq(TModel::getBrandId, id)
.list().stream().map(TModel::getId).distinct().collect(Collectors.toList());
if (collect.isEmpty())collect.add(-1);
List list = frameGoodsService.lambdaQuery().in(TFrameGoods::getModelId, collect).list();
if (list.isEmpty())return ApiResult.success("0");
int i = 0;
for (TFrameGoods tFrameGoods : list) {
i+=tFrameGoods.getTotal();
}
return ApiResult.success(i);
}
@ApiOperation(value = "镜架-根据材质id查询对应库存")
@PostMapping(value = "/getCountByMaterialId")
public ApiResult getCountByMaterialId(Integer id) {
List collect = modelService.lambdaQuery().eq(TModel::getMaterialId, id)
.list().stream().map(TModel::getId).distinct().collect(Collectors.toList());
if (collect.isEmpty())collect.add(-1);
List list = frameGoodsService.lambdaQuery().in(TFrameGoods::getModelId, collect).list();
if (list.isEmpty())return ApiResult.success("0");
int i = 0;
for (TFrameGoods tFrameGoods : list) {
i+=tFrameGoods.getTotal();
}
return ApiResult.success(i);
}
@ApiOperation(value = "镜架-根据品牌id、型号名称、色号名称、材质id查询当前库存")
@PostMapping(value = "/getCurrentByParamFrame")
public ApiResult getCurrentByParamFrame(@RequestBody GetCurrentByParam getCurrentByParam) {
// 根据型号名称 查询型号列表ids
List collect = modelService.lambdaQuery().eq(TModel::getName, getCurrentByParam.getModel())
.eq(TModel::getColor,getCurrentByParam.getColor())
.eq(TModel::getMaterialId,getCurrentByParam.getMaterialId())
.eq(TModel::getBrandId,getCurrentByParam.getBrandId())
.list().stream().map(TModel::getId).collect(Collectors.toList());
TFrameGoods one = frameGoodsService.lambdaQuery().in(TFrameGoods::getModelId, collect)
.eq(TFrameGoods::getColor, getCurrentByParam.getColor()).one();
if (one!=null){
return ApiResult.success(one.getTotal());
}
return ApiResult.success(0);
}
@ApiOperation(value = "镜片-根据品牌id、型号名称、色号名称、材质id查询当前库存")
@PostMapping(value = "/getCurrentByParamLens")
public ApiResult getCurrentByParamLens(@RequestBody GetCurrentByParamLens dto) {
TLensGoods one = lensGoodsService.lambdaQuery().in(TLensGoods::getSeriesId, dto.getSeriesId())
.eq(dto.getLensType()!=null,TLensGoods::getLensType, dto.getLensType())
.eq(dto.getRefractiveIndex()!=null,TLensGoods::getRefractiveIndex, dto.getRefractiveIndex())
.eq(dto.getBallMirror()!=null,TLensGoods::getBallMirror, dto.getBallMirror())
.eq(dto.getColumnMirror()!=null,TLensGoods::getColumnMirror, dto.getColumnMirror())
.one();
if (one!=null){
return ApiResult.success(one.getTotal());
}
return ApiResult.success(0);
}
@ApiOperation(value = "查看详情")
@GetMapping(value = "/getDetailById")
public ApiResult getDetailById(Integer id) {
TInventoryInfoVO tInventoryInfoVO = new TInventoryInfoVO();
TInventory byId = inventoryService.getById(id);
BeanUtils.copyProperties(byId, tInventoryInfoVO);
switch (byId.getType()){
case 1:
List list = inventoryFrameDetailService.lambdaQuery().eq(TInventoryFrameDetail::getInventoryId, id).list();
tInventoryInfoVO.setFrameList(list);
break;
case 2:
List list2 = inventoryLensDetailService.lambdaQuery().eq(TInventoryLensDetail::getInventoryId, id).list();
tInventoryInfoVO.setLensList(list2);
break;
}
TStore byId1 = storeService.getById(byId.getStoreId());
if (byId1!=null)tInventoryInfoVO.setStore(byId1.getName());
return ApiResult.success(tInventoryInfoVO);
}
}