futian.liu
2023-12-06 d04ef5fbd075d8d16bfe167ac032534490d83dc2
consum-base/src/main/java/com/consum/base/controller/LWhFormOutputController.java
@@ -5,7 +5,9 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Optional;
import java.util.stream.Collectors;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
@@ -23,10 +25,9 @@
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.LWhFormOutputParam;
import com.consum.base.pojo.dto.GoodModelInfoDTO;
import com.consum.base.pojo.excel.OutputExcelTemplate;
import com.consum.base.pojo.query.LWhFormOutputQry;
import com.consum.base.pojo.response.FormOutputGoodsVO;
@@ -154,35 +155,48 @@
        BeanUtils.copyProperties(lWhFormOutput, lWhFormOutputExtendVO);
        lWhFormOutputExtendVO.setDoc(lWhFormOutput.getOutputDoc());
        String sql = "SELECT bgt.id, CATEGORY_ID, CATEGORY_NAME, GOODS_NAME "
            + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
            + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID "
            + "WHERE pm.BUSINESS_ID =:id GROUP BY bgt.id ";
        Map<String, Object> paramMap = new HashMap<>();
        paramMap.put("id", lWhFormOutputExtendVO.getId());
        List<Map<String, Object>> procureModelList = lWhFormOutputService.select(sql, paramMap, new MapperUtil());
        List<GoodModelInfoDTO> goodsModelList =
            lWhProcureModelService.getGoodsModelListByBusinessId(lWhFormOutputExtendVO.getId());
        if (CollectionUtils.isEmpty(goodsModelList)) {
            return ResponseValue.success(lWhFormOutputExtendVO);
        }
        Map<Long, List<GoodModelInfoDTO>> collect =
            goodsModelList.stream().collect(Collectors.groupingBy(GoodModelInfoDTO::getBaseGoodsTemplateId));
        List<FormOutputGoodsVO> fromOutputGoods = Lists.newArrayList();
        for (Map<String, Object> map : procureModelList) {
            FormOutputGoodsVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FormOutputGoodsVO.class);
            // 查询型号数量
            List<GoodsModelVO> goodsModelVOList = Lists.newArrayList();
            String sql2 = "SELECT pm.id,pm.BASE_GOODS_MODELS_NAME,bgm.UNIT,COUNTS,total_amount "
                + "FROM l_wh_procure_model pm LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
                + "LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID " + "WHERE pm.BUSINESS_ID =:id";
            List<Map<String, Object>> modelList = lWhFormOutputService.select(sql2, paramMap, new MapperUtil());
            modelList.forEach(item -> {
                GoodsModelVO goodsModelVO = MapUtils.convertMapToObj(item, GoodsModelVO.class);
                goodsModelVOList.add(goodsModelVO);
            });
            procureTemplateInfoVO.setModels(goodsModelVOList);
            fromOutputGoods.add(procureTemplateInfoVO);
        for (Map.Entry<Long, List<GoodModelInfoDTO>> entry : collect.entrySet()) {
            FormOutputGoodsVO formOutputGoodsVO = getFormOutputGoodsVO(entry);
            fromOutputGoods.add(formOutputGoodsVO);
        }
        lWhFormOutputExtendVO.setFromOutputGoods(fromOutputGoods);
        return ResponseValue.success("查询成功!", lWhFormOutputExtendVO);
    }
    private static FormOutputGoodsVO getFormOutputGoodsVO(Entry<Long, List<GoodModelInfoDTO>> entry) {
        Long baseGoodsTemplateId = entry.getKey();
        List<GoodModelInfoDTO> goodModelInfoDTOS = entry.getValue();
        GoodModelInfoDTO goodModelInfoDTO = goodModelInfoDTOS.stream().findFirst().orElse(null);
        FormOutputGoodsVO formOutputGoodsVO = new FormOutputGoodsVO();
        if (goodModelInfoDTO != null) {
            formOutputGoodsVO.setId(baseGoodsTemplateId);
            formOutputGoodsVO.setCategoryId(goodModelInfoDTO.getCategoryId());
            formOutputGoodsVO.setCategoryName(goodModelInfoDTO.getCategoryName());
            formOutputGoodsVO.setGoodsName(goodModelInfoDTO.getBaseGoodsModelsName());
        }
        List<GoodsModelVO> goodsModelList = Lists.newArrayList();
        for (GoodModelInfoDTO goodModelInfo : goodModelInfoDTOS) {
            GoodsModelVO goodsModelVO = new GoodsModelVO();
            goodsModelVO.setId(goodModelInfo.getId());
            goodsModelVO.setBaseGoodsModelsName(goodModelInfo.getBaseGoodsModelsName());
            goodsModelVO.setUnit(goodModelInfo.getUnit());
            goodsModelVO.setCounts(goodModelInfo.getCounts());
            goodsModelVO.setTotalAmount(goodModelInfo.getTotalAmount());
            goodsModelList.add(goodsModelVO);
        }
        formOutputGoodsVO.setModels(goodsModelList);
        return formOutputGoodsVO;
    }
    @ApiOperation(value = "查询出库单详情明细", notes = "查询出库单详情明细")
    @ApiImplicitParam(name = "formOutputQry", value = "出库单详情查询条件", required = true, dataType = "LWhFormOutputQry",
        paramType = "query")