package com.jilongda.manage.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.JsonArray;
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.manage.dto.TAddWarehousingLensDTO;
import com.jilongda.manage.dto.TLensWarehousingDetailDTO;
import com.jilongda.manage.dto.TWarehousingLensDTO;
import com.jilongda.manage.model.*;
import com.jilongda.manage.query.TLensSeriesQuery;
import com.jilongda.manage.query.TOptometristQuery;
import com.jilongda.manage.service.TLensGoodsService;
import com.jilongda.manage.service.TLensSeriesService;
import com.jilongda.manage.service.TLensWarehousingDetailService;
import com.jilongda.manage.service.TWarehousingService;
import com.jilongda.manage.vo.TLensSeriesVO;
import com.jilongda.manage.vo.TOptometristVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
/**
*
* 镜片系列表 前端控制器
*
*
* @author 无关风月
* @since 2024-12-09
*/
@Api(tags = "镜片系列管理")
@RestController
@RequestMapping("/t-lens-series")
public class TLensSeriesController {
@Autowired
private TLensSeriesService lensSeriesService;
@Autowired
private TWarehousingService warehousingService;
@Autowired
private TLensWarehousingDetailService lensWarehousingDetailService;
@ApiOperation(value = "镜片系列列表")
@PostMapping(value = "/pageList")
public ApiResult> pageList(@RequestBody TLensSeriesQuery query) {
PageInfo optometristVOPageInfo = lensSeriesService.pageList(query);
return ApiResult.success(optometristVOPageInfo);
}
@ApiOperation(value = "镜片系列添加")
@PostMapping(value = "/add")
public ApiResult add(@RequestBody TLensSeries dto) {
lensSeriesService.save(dto);
return ApiResult.success();
}
@Autowired
private TLensGoodsService lensGoodsService;
@ApiOperation(value = "镜片系列生成库存")
@PostMapping(value = "/addGoods")
public ApiResult addGoods(@RequestBody TAddWarehousingLensDTO dto) {
List list = lensGoodsService.lambdaQuery().list();
List tLensWarehousingDetail = dto.getLensWarehousingDetails();
List lensSeries = lensSeriesService.list();
List tLensGoods = new ArrayList<>();
for (TLensWarehousingDetailDTO frameWarehousingDetail : tLensWarehousingDetail) {
TLensSeries series = lensSeries.stream().filter(e -> e.getId().equals(frameWarehousingDetail.getSeriesId())).findFirst().orElse(null);
if (series!=null){
double endBallCondition =0.00;
double endColumnCondition =0.00;
TLensGoods tLensGoods1 = list.stream().filter(e -> e.getSeriesId().equals(frameWarehousingDetail.getSeriesId()) &&
e.getRefractiveIndex().equals(frameWarehousingDetail.getRefractiveIndex())
&& e.getLensType().equals(frameWarehousingDetail.getType())
&& e.getBallMirror().equals(endBallCondition+"")
&& e.getColumnMirror().equals(endColumnCondition+"")).findFirst().orElse(null);
if (tLensGoods1==null){
// 新增
TLensGoods tFrameGoods = new TLensGoods();
tFrameGoods.setStatus(1);
tFrameGoods.setLensType(frameWarehousingDetail.getType());
tFrameGoods.setSeriesId(frameWarehousingDetail.getSeriesId());
tFrameGoods.setBallMirror(String.format("%.2f",endBallCondition));
tFrameGoods.setColumnMirror(String.format("%.2f",endColumnCondition));
tFrameGoods.setRefractiveIndex(frameWarehousingDetail.getRefractiveIndex());
tFrameGoods.setTotal(0);
tFrameGoods.setStoreId(dto.getStoreId());
tLensGoods.add(tFrameGoods);
}
}
}
lensGoodsService.saveBatch(tLensGoods);
return ApiResult.success();
}
public static void main(String[] args) {
double temp = -0.25;
System.err.println(temp-0.25);
System.err.println(String.format("%.2f",temp-0.25));
}
@ApiOperation(value = "镜片系列编辑")
@PostMapping(value = "/update")
public ApiResult update(@RequestBody TLensSeries dto) {
if (!StringUtils.hasLength(dto.getSphere())){
dto.setSphere("");
}
if (!StringUtils.hasLength(dto.getAsphericSurface())){
dto.setAsphericSurface("");
}
if (!StringUtils.hasLength(dto.getDoubleNon())){
dto.setDoubleNon("");
}
lensSeriesService.updateById(dto);
return ApiResult.success();
}
@ApiOperation(value = "镜片系列启用/禁用")
@GetMapping(value = "/updateState")
public ApiResult update(Integer id) {
TLensSeries byId = lensSeriesService.getById(id);
if (byId.getStatus()==1){
byId.setStatus(2);
}else{
byId.setStatus(1);
}
lensSeriesService.updateById(byId);
return ApiResult.success();
}
@ApiOperation(value = "通过品牌id查询镜片系列列表")
@GetMapping(value = "/seriesList")
public ApiResult> seriesList(Integer brandId) {
return ApiResult.success(lensSeriesService.lambdaQuery().eq(TLensSeries::getBrandId,brandId).list());
}
@ApiOperation(value = "通过品牌id查询镜片系列列表-添加销售订单用 过滤没有生成库存的系列")
@GetMapping(value = "/seriesListOrder")
public ApiResult> seriesListOrder(Integer brandId) {
List list = lensGoodsService.lambdaQuery().list();
List collect = list.stream().map(TLensGoods::getSeriesId).distinct().collect(Collectors.toList());
if (list.isEmpty()){
return ApiResult.success(new ArrayList());
}
List lensSeries = lensSeriesService.lambdaQuery().eq(TLensSeries::getBrandId, brandId)
.in(TLensSeries::getId,collect).list();
return ApiResult.success(lensSeries);
}
@ApiOperation(value = "通过系列id查询球/非球 返回参数1为球 2非球 3双飞")
@GetMapping(value = "/lensTypeList")
public ApiResult> lensTypeList(Integer id) {
TLensSeries byId = lensSeriesService.getById(id);
List integers = new ArrayList<>();
if (StringUtils.hasLength(byId.getSphere())){
integers.add(1);
}
if (StringUtils.hasLength(byId.getAsphericSurface())){
integers.add(2);
}
if (StringUtils.hasLength(byId.getDoubleNon())){
integers.add(3);
}
return ApiResult.success(integers);
}
@ApiOperation(value = "根据系列id + 球/非球查询折射率列表 球/非球入参数1为球 2非球 3双飞")
@GetMapping(value = "/refractiveIndexList")
public ApiResult refractiveIndexList(Integer id, Integer lensType) {
TLensSeries byId = lensSeriesService.getById(id);
JSONArray jsonArray = null;
if (lensType==1){
String sphere = byId.getSphere();
// 将字符串化为jsonArray
if (StringUtils.hasLength(sphere)) {
jsonArray = JSONObject.parseArray(sphere);
} else {
return ApiResult.success(new JSONArray());
}
}
if (lensType==2){
String asphericSurface = byId.getAsphericSurface();
if (StringUtils.hasLength(asphericSurface)) {
jsonArray = JSONObject.parseArray(asphericSurface);
} else {
return ApiResult.success(new JSONArray());
}
}
if (lensType==3){
String doubleNon = byId.getDoubleNon();
if (StringUtils.hasLength(doubleNon)) {
jsonArray = JSONObject.parseArray(doubleNon);
} else {
return ApiResult.success(new JSONArray());
}
}
return ApiResult.success(jsonArray);
}
}