futian.liu
2023-12-14 83ec5bcd06eece9b9867ecb3302980b92dd17504
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,16 +25,16 @@
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.CurrencyUtil;
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;
import com.consum.base.pojo.response.FormOutputVO;
import com.consum.base.pojo.response.GoodsModelVO;
import com.consum.base.pojo.response.GoodsTemplateCountVO;
import com.consum.base.pojo.response.GoodsTemplateInfoVO;
import com.consum.base.pojo.response.LWhFormOutputExtendVO;
import com.consum.base.service.LWarehouseFlowService;
import com.consum.base.service.LWhFormOutputService;
@@ -154,33 +156,45 @@
        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<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);
        List<GoodModelInfoDTO> goodsModelList =
            lWhProcureModelService.getGoodsModelListByBusinessId(lWhFormOutputExtendVO.getId(), null);
        if (CollectionUtils.isEmpty(goodsModelList)) {
            return ResponseValue.success(lWhFormOutputExtendVO);
        }
        lWhFormOutputExtendVO.setFromOutputGoods(fromOutputGoods);
        Map<Long, List<GoodModelInfoDTO>> collect =
            goodsModelList.stream().collect(Collectors.groupingBy(GoodModelInfoDTO::getBaseGoodsTemplateId));
        List<GoodsTemplateInfoVO> goodsTemplateInfoList = Lists.newArrayList();
        for (Map.Entry<Long, List<GoodModelInfoDTO>> entry : collect.entrySet()) {
            GoodsTemplateInfoVO goodsTemplateInfoVO = getFormOutputGoodsVO(entry);
            goodsTemplateInfoList.add(goodsTemplateInfoVO);
        }
        lWhFormOutputExtendVO.setFromOutputGoods(goodsTemplateInfoList);
        return ResponseValue.success("查询成功!", lWhFormOutputExtendVO);
    }
    private GoodsTemplateInfoVO getFormOutputGoodsVO(Entry<Long, List<GoodModelInfoDTO>> entry) {
        Long baseGoodsTemplateId = entry.getKey();
        List<GoodModelInfoDTO> goodModelInfoDTOS = entry.getValue();
        GoodModelInfoDTO goodModelInfoDTO = goodModelInfoDTOS.stream().findFirst().orElse(null);
        GoodsTemplateInfoVO goodsTemplateInfoVO = new GoodsTemplateInfoVO();
        if (goodModelInfoDTO != null) {
            goodsTemplateInfoVO.setId(baseGoodsTemplateId);
            goodsTemplateInfoVO.setCategoryName(goodModelInfoDTO.getCategoryName());
            goodsTemplateInfoVO.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(CurrencyUtil.convertFenToYuan(goodModelInfo.getTotalAmount()));
            goodsModelList.add(goodsModelVO);
        }
        goodsTemplateInfoVO.setModels(goodsModelList);
        return goodsTemplateInfoVO;
    }
    @ApiOperation(value = "查询出库单详情明细", notes = "查询出库单详情明细")
@@ -189,10 +203,11 @@
    @GetMapping("/detail/list")
    public ResponseValue queryFormOutputDetailList() {
        LWhFormOutputQry formOutputQry = CommonUtil.getObjFromReq(LWhFormOutputQry.class);
        S_user_core currentUser = this.getCurrentUser();
        FinSysTenantUser currentUser = this.getSysInfo();
        if (currentUser == null) {
            return ResponseValue.error("登录用户信息不存在");
        }
        formOutputQry.setAgencyId(Long.valueOf(currentUser.getTenantId()));
        PageUtil genericPager = lWarehouseFlowService.queryAllBusinessFlow(formOutputQry);
        return ResponseValue.success(genericPager);
    }
@@ -200,7 +215,7 @@
    @ApiOperation(value = "出库单导出", notes = "出库单导出")
    @ApiImplicitParam(name = "id", value = "出库单id", required = true, dataType = "Long", paramType = "query")
    @GetMapping("/list/export")
    public void export(Long id, HttpServletResponse response) throws Exception {
    public ResponseValue export(Long id, HttpServletResponse response) throws Exception {
        FinSysTenantUser sysInfo = this.getSysInfo();
        if (sysInfo == null) {
            throw new RuntimeException("登录用户信息不存在");
@@ -236,7 +251,8 @@
        map.put("totalAmount", totalAmount);
        Workbook workbook = ExcelExportUtil.exportExcel(params, OutputExcelTemplate.class, exportList, map);
        downLoadExcel("出库单", response, workbook);
        String filePath = downLoadExcel("出库单", response, workbook);
        return ResponseValue.success("导出成功", filePath);
    }