xuhy
2024-12-16 7ea8d1c6da749da69516f47593ae47546a0d3d4c
manage/src/main/java/com/jilongda/manage/controller/TWarehousingController.java
@@ -1,17 +1,30 @@
package com.jilongda.manage.controller;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.jilongda.common.basic.ApiResult;
import com.jilongda.common.basic.PageInfo;
import com.jilongda.common.constants.WarehousingConstant;
import com.jilongda.common.enums.WarehousingTypeEnum;
import com.jilongda.common.security.JwtTokenUtils;
import com.jilongda.common.utils.CodeGenerateUtils;
import com.jilongda.manage.dto.TWarehousingDTO;
import com.jilongda.manage.model.TFrameWarehousingDetail;
import com.jilongda.manage.model.TWarehousing;
import com.jilongda.manage.query.TWarehousingDetailQuery;
import com.jilongda.manage.service.TFrameWarehousingDetailService;
import com.jilongda.manage.service.TWarehousingService;
import com.jilongda.manage.vo.TFrameWarehousingDetailVO;
import com.jilongda.manage.vo.TWarehousingVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
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 org.springframework.web.bind.annotation.*;
import java.time.LocalDateTime;
import java.util.List;
/**
 * <p>
@@ -28,36 +41,67 @@
    @Autowired
    private TWarehousingService warehousingService;
    @Autowired
    private TFrameWarehousingDetailService frameWarehousingDetailService;
    /**
     * 获取镜架/镜片出库入库列表
     * 出入库单列表
     */
//    @ApiOperation(value = "获取镜架/镜片出库入库分页列表")
//    @PostMapping(value = "/pageList")
//    public ApiResult<PageInfo<TWarehousingVO>> pageList(@RequestBody TWarehousingQuery query) {
//        return ApiResult.success(warehousingService.pageList(query));
//    }
//    /**
//     * 获取镜架/镜片出库入库列表
//     */
//    @ApiOperation(value = "获取镜架/镜片出库入库列表")
//    @PostMapping(value = "/list")
//    public ApiResult<List<TWarehousing>> list(@RequestBody TWarehousingQuery query) {
//        List<TWarehousing> list = warehousingService.list(Wrappers.lambdaQuery(TWarehousing.class)
//                .eq(TWarehousing::getStatus, 1));
//        return ApiResult.success(list);
//    }
    @ApiOperation(value = "镜架出入库单列表")
    @PostMapping(value = "/inventoryReceiptList")
    public ApiResult<PageInfo<TWarehousingVO>> inventoryReceiptList(@RequestBody TWarehousingDetailQuery query) {
        return ApiResult.success(warehousingService.inventoryReceiptList(query));
    }
    /**
     * 添加镜架/镜片出库入库
     * 库存明细记录列表
     */
    @ApiOperation(value = "添加镜架/镜片出库入库")
    @PostMapping(value = "/add")
    public ApiResult<String> add(@Validated @RequestBody TWarehousing dto) {
    @ApiOperation(value = "镜架库存明细记录列表")
    @PostMapping(value = "/detailList")
    public ApiResult<PageInfo<TFrameWarehousingDetailVO>> detailList(@RequestBody TWarehousingDetailQuery query) {
        PageInfo<TFrameWarehousingDetailVO> frameWarehousingDetailVOPageInfo = warehousingService.detailList(query);
        return ApiResult.success(frameWarehousingDetailVOPageInfo);
    }
    /**
     * 添加镜架出库,入库,作废,退货
     */
    @ApiOperation(value = "添加镜架出库,入库,作废,退货")
    @PostMapping(value = "/outBound")
    public ApiResult<String> outBound(@Validated @RequestBody TWarehousingDTO dto) {
        // 获取当前用户
        String username = JwtTokenUtils.getUsername();
        dto.setCreateBy(username);
        dto.setCreateTime(LocalDateTime.now());
        dto.setType(WarehousingTypeEnum.FRAME.getCode());
        warehousingService.save(dto);
        // 添加明细
        List<TFrameWarehousingDetail> frameWarehousingDetails = dto.getFrameWarehousingDetails();
        frameWarehousingDetails.forEach(detail -> {
            detail.setWarehousingId(dto.getId());
            detail.setCode(WarehousingConstant.OUT_BOUND+CodeGenerateUtils.generateVolumeSn());
        });
        frameWarehousingDetailService.saveBatch(frameWarehousingDetails);
        return ApiResult.success();
    }
    /**
     * 查询详情
     */
    @ApiOperation(value = "镜架查询详情")
    @GetMapping(value = "/getDetailById")
    public ApiResult<TWarehousingVO> getDetailById(@RequestParam Integer id) {
        TWarehousing warehousing = warehousingService.getById(id);
        TWarehousingVO vo = new TWarehousingVO();
        BeanUtils.copyProperties(warehousing, vo);
        List<TFrameWarehousingDetail> list = frameWarehousingDetailService.list(Wrappers.lambdaQuery(TFrameWarehousingDetail.class)
                .eq(TFrameWarehousingDetail::getWarehousingId, id));
        vo.setFrameWarehousingDetails(list);
        // 统计数量
        vo.setTotalNum(list.stream().mapToInt(TFrameWarehousingDetail::getTotal).sum());
        return ApiResult.success(vo);
    }
}