futian.liu
2023-12-09 b16483ae0dff952639e4b7e152f72dc32e662154
consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
@@ -1,44 +1,21 @@
package com.consum.base.controller;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.compress.utils.Lists;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import cn.hutool.core.util.ReflectUtil;
import com.consum.base.BaseController;
import com.consum.base.core.utils.CommonUtil;
import com.consum.base.core.utils.MapUtils;
import com.consum.base.core.utils.MapperUtil;
import com.consum.base.core.utils.PageUtil;
import com.consum.base.pojo.LWhFormProcureGoodsInfoParam;
import com.consum.base.pojo.LWhFormProcureParam;
import com.consum.base.pojo.dto.GoodModelInfoDTO;
import com.consum.base.pojo.excel.ProcureExcelTemplate;
import com.consum.base.pojo.query.FormProcureQry;
import com.consum.base.pojo.response.FormProcureVO;
import com.consum.base.pojo.response.GoodsModelVO;
import com.consum.base.pojo.response.GoodsTemplateCountVO;
import com.consum.base.pojo.response.LWhFormProcureExtendVO;
import com.consum.base.pojo.response.LWhFormProcureGoodsVO;
import com.consum.base.service.BaseGoodsTemplateService;
import com.consum.base.service.LWhFormProcureCoreService;
import com.consum.base.pojo.response.*;
import com.consum.base.service.LWhFormProcureGoodsService;
import com.consum.base.service.LWhFormProcureService;
import com.consum.base.service.LWhProcureModelService;
import com.consum.model.po.BaseGoodsTemplate;
import com.consum.base.service.impl.LWhFormProcureCoreService;
import com.consum.model.po.FinSysTenantUser;
import com.consum.model.po.LWhFormProcure;
import com.consum.model.po.LWhFormProcureGoods;
@@ -47,14 +24,19 @@
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.web.ResponseValue;
import cn.afterturn.easypoi.excel.ExcelExportUtil;
import cn.afterturn.easypoi.excel.entity.TemplateExportParams;
import cn.hutool.core.util.ReflectUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.compress.utils.Lists;
import org.apache.poi.ss.usermodel.Workbook;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.lang.reflect.Field;
import java.util.*;
/**
 * @ClassName LWhFormProcureController
@@ -73,8 +55,6 @@
    private LWhFormProcureGoodsService lWhFormProcureGoodsServiceImpl;
    @Resource
    private LWhFormProcureCoreService lWhFormProcureCoreService;
    @Resource
    private BaseGoodsTemplateService baseGoodsTemplateService;
    @Resource
    private LWhProcureModelService lWhProcureModelService;
@@ -228,43 +208,47 @@
        lWhFormProcureGoods.setWhFormProcureId(id);
        List<LWhFormProcureGoods> formProcureGoods = lWhFormProcureGoodsServiceImpl.select(lWhFormProcureGoods);
        // Field fieldModels = null;
        // try {
        // fieldModels = LWhFormProcureGoodsVO.class.getDeclaredField("models");
        // } catch (NoSuchFieldException e) {
        // e.printStackTrace();
        // }
        // fieldModels.setAccessible(true);
        ArrayList<LWhFormProcureGoodsVO> procureGoodsVOList = new ArrayList<>();
        List<GoodsTemplateInfoVO> goodsTemplateInfoList = new ArrayList<>();
        for (LWhFormProcureGoods formProcureGood : formProcureGoods) {
            LWhFormProcureGoodsVO lWhFormProcureGoodsVO = new LWhFormProcureGoodsVO();
            BeanUtils.copyProperties(formProcureGood, lWhFormProcureGoodsVO);
            GoodsTemplateInfoVO goodsTemplateInfoVO = new GoodsTemplateInfoVO();
            BeanUtils.copyProperties(formProcureGood, goodsTemplateInfoVO);
            Long baseGoodsTemplateId = formProcureGood.getBaseGoodsTemplateId();
            BaseGoodsTemplate queryEntity = new BaseGoodsTemplate();
            queryEntity.setId(baseGoodsTemplateId);
            BaseGoodsTemplate baseGoodsTemplate = baseGoodsTemplateService.get(queryEntity);
            lWhFormProcureGoodsVO.setBaseCategoryName(baseGoodsTemplate.getCategoryName());
            // 查询型号数量
            Map<String, Object> paramMap = new HashMap<>();
            paramMap.put("formProcureGoodId", formProcureGood.getId());
            String sql = "SELECT\n"
                + "pm.BASE_GOODS_MODELS_ID,pm.BASE_GOODS_MODELS_NAME,pm.PRICE,pm.COUNTS,pm.WOREHOUSE_COUNT,bgm.unit "
                + "FROM\n" + "\tl_wh_procure_model pm\n"
                + "\tLEFT JOIN base_goods_models bgm on pm.BASE_GOODS_MODELS_ID = bgm.id where pm.FROM_PROCURE_GOODS_ID =:formProcureGoodId";
            List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap, new MapperUtil());
            List<GoodsModelVO> goodsModelVOList = Lists.newArrayList();
            procureModelList.forEach(item -> {
                GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class);
                goodsModelVOList.add(goodsModelVO);
            });
            // fieldModels.set(lWhFormProcureGoodsVO, goodsModelVOList);
            ReflectUtil.setFieldValue(lWhFormProcureGoodsVO, "models", goodsModelVOList);
            List<GoodModelInfoDTO> goodsModelInfoList =
                lWhProcureModelService.getGoodsModelListByBusinessId(null, formProcureGood.getId());
            if (CollectionUtils.isEmpty(goodsModelInfoList)) {
                continue;
            }
            GoodModelInfoDTO goodModelInfoDTO = goodsModelInfoList.stream().findFirst().orElse(null);
            if (goodModelInfoDTO != null) {
                goodsTemplateInfoVO.setBaseCategoryName(goodModelInfoDTO.getCategoryName());
            }
            List<GoodsModelVO> goodsModelList = Lists.newArrayList();
            for (GoodModelInfoDTO goodModelInfo : goodsModelInfoList) {
                GoodsModelVO goodsModelVO = getGoodsModelVO(goodModelInfo);
                goodsModelList.add(goodsModelVO);
            }
            procureGoodsVOList.add(lWhFormProcureGoodsVO);
            ReflectUtil.setFieldValue(goodsTemplateInfoVO, "models", goodsModelList);
            goodsTemplateInfoList.add(goodsTemplateInfoVO);
        }
        lWhFormProcureExtendVO.setProcureGoods(procureGoodsVOList);
        lWhFormProcureExtendVO.setProcureGoods(goodsTemplateInfoList);
        return ResponseValue.success("查询成功!", lWhFormProcureExtendVO);
    }
    private GoodsModelVO getGoodsModelVO(GoodModelInfoDTO goodModelInfo) {
        GoodsModelVO goodsModelVO = new GoodsModelVO();
        goodsModelVO.setId(goodModelInfo.getId());
        goodsModelVO.setBaseGoodsModelsName(goodModelInfo.getBaseGoodsModelsName());
        goodsModelVO.setUnit(goodModelInfo.getUnit());
        goodsModelVO.setCounts(goodModelInfo.getCounts());
        goodsModelVO.setTotalAmount(
            goodModelInfo.getTotalAmount() != null ? goodModelInfo.getTotalAmount().doubleValue() : null);
        goodsModelVO.setWorehouseCount(goodModelInfo.getWorehouseCount());
        goodsModelVO.setPrice(goodModelInfo.getPrice());
        goodsModelVO.setBaseGoodsModelsId(goodModelInfo.getBaseGoodsModelsId());
        return goodsModelVO;
    }
    @ApiOperation(value = "采购单明细查询", notes = "采购单明细查询")
@@ -277,11 +261,11 @@
        CommonUtil.copyProperties(formProcureQry, param2);
        formProcureQry = param2;
        S_user_core currentUser = this.getCurrentUser();
        if (currentUser == null) {
        FinSysTenantUser sysInfo = this.getSysInfo();
        if (sysInfo == null) {
            return ResponseValue.error("登录用户信息不存在");
        }
        formProcureQry.setAgencyId(Long.valueOf(sysInfo.getTenantId()));
        GenericPager genericPager = lWhFormProcureService.queryFormProcureDetailList(formProcureQry);
        return ResponseValue.success(genericPager);
    }