futian.liu
2023-11-11 0c1dd25eabc4472c007951d528ee7385cc114e32
-- 采购单
-- 分类
11个文件已添加
1个文件已删除
16个文件已修改
1376 ■■■■■ 已修改文件
consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/controller/DepFormLendingController.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java 25 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java 163 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java 26 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/core/tools/MapperUtil.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/LWarehouseFlowParam.java 95 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsParams.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferParam.java 147 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelParams.java 44 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/ProjectTreeResult.java 32 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/query/FormProcureQryDto.java 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/query/TransferQryDto.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/response/FormProcureDetailVO.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/response/FormProcureVO.java 72 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/response/FromProcureTemplateInfoVO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/response/GoodsModelVO.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/response/LWhFormProcureExtendVO.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/response/LWhFormProcureGoodsVO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/response/TransferInfoVO.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/response/WarehouseFlowVO.java 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/BaseCategoryServiceImpl.java 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/BaseGoodsTemplateServiceImpl.java 13 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/LWhFormProcureService.java 72 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/util/MapUtils.java 83 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/controller/BaseCategoryController.java
@@ -45,13 +45,13 @@
    private long defaultParentId = 0L;
    /**
     * @Description  获取分类树
     * @Description 获取分类树
     * @Author 卢庆阳
     * @Date 2023/10/30
     */
    @GetMapping("/select/tree")
    public ResponseValue tree(String categoryName) {
        List<ProjectTreeResult> tree = this.baseCategoryService.tree(categoryName);
        List<ProjectTreeResult> tree = this.baseCategoryService.tree();
        return ResponseValue.success(tree);
    }
@@ -75,7 +75,9 @@
        }
        int result = this.baseCategoryService.add(param, this.getCurrentUser());
        if (result > 0) return ResponseValue.success(1);
        if (result > 0) {
            return ResponseValue.success(1);
        }
        return ResponseValue.error("新增失败!");
    }
@@ -123,6 +125,7 @@
    /**
     * 修改状态
     *
     * @author 卢庆阳
     * @date 2023/10/23
     */
@@ -152,13 +155,14 @@
        if (baseCategory.getId() == null) {
            return ResponseValue.error("分类id为空");
        }
        int num = this.baseCategoryService.updateById(baseCategory,this.getCurrentUser());
        int num = this.baseCategoryService.updateById(baseCategory, this.getCurrentUser());
        return num > 0 ? ResponseValue.success(1) : ResponseValue.error("删除失败!");
    }
    /**
     * 根据物品id查询节点详情
     *
     * @author 卢庆阳
     * @Date 2023/10/23
     */
@@ -168,7 +172,9 @@
            return ResponseValue.error("分类id为空");
        }
        BaseCategory baseCategory = this.baseCategoryService.getById(id);
        if (baseCategory == null) return ResponseValue.error("查询失败!");
        if (baseCategory == null) {
            return ResponseValue.error("查询失败!");
        }
        return ResponseValue.success("查询成功!", baseCategory);
    }
consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
@@ -167,11 +167,11 @@
    }
    @GetMapping("/query/goodsTemplate")
    public ResponseValue getByAgencyId(Long agencyId) {
        if (agencyId == null) {
            return ResponseValue.error("机构id为空");
        }
        List<BaseGoodsTemplate> list = this.baseGoodsTemplateService.queryByAgencyId(agencyId);
    public ResponseValue queryGoodsTemplateByCategoryId(Long agencyId, Long categoryId) {
//        if (agencyId == null) {
//            return ResponseValue.error("机构id为空");
//        }
        List<BaseGoodsTemplate> list = this.baseGoodsTemplateService.queryGoodsTemplateByCategoryId(agencyId, categoryId);
        if (list == null) {
            return ResponseValue.error("查询失败!");
        }
consum-base/src/main/java/com/consum/base/controller/DepFormLendingController.java
File was deleted
consum-base/src/main/java/com/consum/base/controller/LWarehouseFlowController.java
@@ -2,20 +2,23 @@
import com.consum.base.BaseController;
import com.consum.base.pojo.LWarehouseFlowParam;
import com.consum.base.pojo.response.WarehouseFlowVO;
import com.consum.base.service.LWarehouseFlowService;
import com.consum.base.util.MapUtils;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.web.ResponseValue;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Map;
import javax.annotation.Resource;
import org.apache.commons.compress.utils.Lists;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.Map;
/**
 * @ClassName lWarehouseFlowController
 * @Date 2023/10/27
 * @Description
 * @Version 1.0
@@ -23,6 +26,7 @@
@RestController
@RequestMapping("/pc/warehouse/flow")
public class LWarehouseFlowController extends BaseController {
    @Resource
    private LWarehouseFlowService lWarehouseFlowService;
@@ -33,6 +37,19 @@
            return ResponseValue.error("登录用户信息不存在");
        }
        GenericPager<Map<String, Object>> genericPager = lWarehouseFlowService.queryBusinessFlow(param);
        ArrayList<WarehouseFlowVO> result = Lists.newArrayList();
        genericPager.getDatas().forEach(map -> {
            WarehouseFlowVO warehouseFlowVO = MapUtils.convertMapToObj(MapUtils.toReplaceKeyLow(map), WarehouseFlowVO.class);
            result.add(warehouseFlowVO);
        });
        try {
            Field fieldDatas = GenericPager.class.getDeclaredField("datas");
            fieldDatas.setAccessible(true);
            fieldDatas.set(genericPager, result);
        } catch (Exception e) {
            logger.error(e.getMessage(), e);
        }
        return ResponseValue.success(genericPager);
    }
}
consum-base/src/main/java/com/consum/base/controller/LWhFormProcureController.java
@@ -4,35 +4,70 @@
import com.consum.base.core.CodeGeneratorEnum;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.WhBusinessEnum;
import com.consum.base.pojo.LWhFormProcureExtend;
import com.consum.base.core.tools.MapperUtil;
import com.consum.base.pojo.LWhFormProcureGoodsParams;
import com.consum.base.pojo.LWhFormProcureParam;
import com.consum.base.pojo.LWhProcureModelParams;
import com.consum.base.service.*;
import com.consum.model.po.*;
import com.consum.base.pojo.query.FormProcureQryDto;
import com.consum.base.pojo.response.FormProcureVO;
import com.consum.base.pojo.response.FromProcureTemplateInfoVO;
import com.consum.base.pojo.response.GoodsModelVO;
import com.consum.base.pojo.response.LWhFormProcureExtendVO;
import com.consum.base.pojo.response.LWhFormProcureGoodsVO;
import com.consum.base.service.BaseGoodsTemplateServiceImpl;
import com.consum.base.service.BaseWarehouseServiceImpl;
import com.consum.base.service.FinSysTenantServiceImpl;
import com.consum.base.service.LOrgSupplierServiceImpl;
import com.consum.base.service.LWhFormProcureCoreService;
import com.consum.base.service.LWhFormProcureGoodsService;
import com.consum.base.service.LWhFormProcureService;
import com.consum.base.service.LWhGoodsService;
import com.consum.base.service.LWhProcureModelService;
import com.consum.base.util.MapUtils;
import com.consum.model.po.BaseGoodsTemplate;
import com.consum.model.po.BaseWarehouse;
import com.consum.model.po.FinSysTenantUser;
import com.consum.model.po.LOrgSupplier;
import com.consum.model.po.LWhFormProcure;
import com.consum.model.po.LWhFormProcureGoods;
import com.consum.model.po.LWhProcureModel;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.NumberGenerator;
import com.walker.web.ResponseValue;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.lang.reflect.Field;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.annotation.Resource;
import org.apache.commons.compress.utils.Lists;
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.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * @ClassName LWhFormProcureController
 * @Date 2023/10/27
 * @Description
 * @Version 1.0
 **/
@Api(value = "仓库表单采购", tags = "仓库表单采购")
@RestController
@RequestMapping("/pc/whForm/procure")
public class LWhFormProcureController extends BaseController {
    @Resource
    private LWhFormProcureService lWhFormProcureService;
    @Resource
@@ -67,6 +102,8 @@
        FinSysTenantUser sysTenantUser = this.getSysInfo();
        String tenantId = sysTenantUser.getTenantId();
        String tenantName = sysTenantUser.getTenantName();
//        String tenantId = "100";
//        String tenantName = "河南省分公司";
        // 只能添加本机构仓库的进货单
        //??????
        //
@@ -82,12 +119,12 @@
        if (whFormProcureId == null) {
            whFormProcureId = NumberGenerator.getLongSequenceNumber();
        }
        long procureTime = DateUtils.getDateTimeNumber(param.getProcureTime());
        long procureTime = Long.valueOf(param.getProcureTime());
        Set<String> supplierList = new HashSet<>();
        ArrayList<LWhFormProcureGoods> procureGoodList = new ArrayList<>();
        ArrayList<LWhProcureModel> whProcureModeLlist = new ArrayList<>();
        ArrayList<LWhProcureModel> procureModelList = new ArrayList<>();
        for (int i = 0; i < procureGoods.size(); i++) {
            LWhFormProcureGoodsParams procureGoodT = procureGoods.get(i);
@@ -99,7 +136,6 @@
                supplierList.add(supplier);
            }
            List<LWhProcureModelParams> models = procureGoodT.getModels();
            if (CollectionUtils.isEmpty(models)) {
                return ResponseValue.error("采购单不能为空");
@@ -110,7 +146,8 @@
            procureGood.setWhFormProcureId(whFormProcureId);
            procureGood.setBaseCategoryId(baseCategoryId);
            procureGood.setBaseGoodsTemplateId(baseGoodsTemplateId);
            procureGood.setGoodsTemplateName(null);
            // TODO 物品历史版本
            procureGood.setGoodsTemplateName(procureGoodT.getGoodsTemplateName());
            procureGood.setSupplier(supplier);
            procureGood.setSort(i);
            for (LWhProcureModelParams modelT : models) {
@@ -145,12 +182,12 @@
                model.setCounts(counts);
                model.setWorehouseCount(goodsModelNum);
                model.setSupplier(supplier);
                whProcureModeLlist.add(model);
                procureModelList.add(model);
            }
            procureGoodList.add(procureGood);
        }
        lWhFormProcureGoodsService.insertBatch(procureGoodList);
        lWhProcureModelService.insertBatch(whProcureModeLlist);
        lWhProcureModelService.insertBatch(procureModelList);
        // 插入 采购单物品【L_WH_FORM_PROCURE_GOODS】
        LWhFormProcure lWhFormProcure = new LWhFormProcure();
@@ -185,8 +222,10 @@
    /**
     * @Description 列表查询
     */
    @ApiOperation(value = "采购单列表查询", notes = "采购单列表查询")
    @ApiImplicitParams({@ApiImplicitParam(name = "param", value = "采购查询条件", required = true, dataType = "FormProcureQryDto", paramType = "query")})
    @GetMapping("/list")
    public ResponseValue queryFormProcureList(LWhFormProcureParam param) {
    public ResponseValue queryFormProcureList(FormProcureQryDto param) {
        S_user_core currentUser = this.getCurrentUser();
        if (currentUser == null) {
            return ResponseValue.error("登录用户信息不存在");
@@ -197,29 +236,38 @@
        //??????
        GenericPager genericPager = lWhFormProcureService.queryFormProcureList(param);
        List<LWhFormProcure> datas = genericPager.getDatas();
        ArrayList<LWhFormProcureExtend> newDatas = new ArrayList<>();
        if (!CollectionUtils.isEmpty(datas)) {
            datas.forEach(item -> {
        List<LWhFormProcure> data = genericPager.getDatas();
        ArrayList<FormProcureVO> result = new ArrayList<>();
        if (!CollectionUtils.isEmpty(data)) {
            data.forEach(item -> {
                FormProcureVO fromProcureVO = new FormProcureVO();
                BeanUtils.copyProperties(item, fromProcureVO);
                List<FromProcureTemplateInfoVO> procureTemplateInfoList = Lists.newArrayList();
                // 查询型号数量
                LWhProcureModel lWhProcureModel = new LWhProcureModel();
                lWhProcureModel.setBusinessType(1);
                lWhProcureModel.setBusinessId(item.getId());
                List<LWhProcureModel> models = lWhProcureModelService.select(lWhProcureModel);
                LWhFormProcureExtend formProcureExtend = new LWhFormProcureExtend();
                BeanUtils.copyProperties(item, formProcureExtend);
                formProcureExtend.setModels(models);
                newDatas.add(formProcureExtend);
                String sql = "select fpg.id,BASE_CATEGORY_ID ,BASE_GOODS_TEMPLATE_ID ,GOODS_TEMPLATE_NAME ,sum(counts) count "
                    + "from L_WH_FORM_PROCURE_GOODS fpg left join L_WH_PROCURE_MODEL pm on fpg.id = pm.FROM_PROCURE_GOODS_ID "
                    + "where fpg.WH_FORM_PROCURE_ID =:id group by pm.FROM_PROCURE_GOODS_ID";
                Map<String, Object> paramMap = new HashMap<>();
                paramMap.put("id", item.getId());
                List<Map<String, Object>> procureModelList = lWhProcureModelService.select(sql, paramMap);
                for (Map<String, Object> map : procureModelList) {
                    FromProcureTemplateInfoVO procureTemplateInfoVO = MapUtils.convertMapToObj(MapUtils.toReplaceKeyLow(map), FromProcureTemplateInfoVO.class);
                    procureTemplateInfoList.add(procureTemplateInfoVO);
                }
                fromProcureVO.setFromProcureTemplateInfoList(procureTemplateInfoList);
                result.add(fromProcureVO);
            });
        }
        try {
            Field fieldDatas = GenericPager.class.getDeclaredField("datas");
            fieldDatas.setAccessible(true);
            fieldDatas.set(genericPager, newDatas);
            fieldDatas.set(genericPager, result);
        } catch (Exception e) {
            e.printStackTrace();
        }
//        genericPager.setDatas(newDatas);
        return ResponseValue.success(genericPager);
    }
@@ -281,8 +329,8 @@
            return ResponseValue.error("采购单id为空");
        }
        LWhFormProcure lWhFormProcure = lWhFormProcureService.get(new LWhFormProcure(id));
        LWhFormProcureExtend formProcureExtend = new LWhFormProcureExtend();
        BeanUtils.copyProperties(lWhFormProcure, formProcureExtend);
        LWhFormProcureExtendVO lWhFormProcureExtendVO = new LWhFormProcureExtendVO();
        BeanUtils.copyProperties(lWhFormProcure, lWhFormProcureExtendVO);
        // 物品
        LWhFormProcureGoods lWhFormProcureGoods = new LWhFormProcureGoods();
@@ -291,24 +339,51 @@
        Field fieldModels = null;
        try {
            fieldModels = LWhFormProcureGoodsParams.class.getDeclaredField("models");
            fieldModels = LWhFormProcureGoodsVO.class.getDeclaredField("models");
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
        fieldModels.setAccessible(true);
        ArrayList<LWhFormProcureGoodsParams> procureGoodsParams = new ArrayList<>();
        ArrayList<LWhFormProcureGoodsVO> procureGoodsVOList = new ArrayList<>();
        for (LWhFormProcureGoods formProcureGood : formProcureGoods) {
            LWhFormProcureGoodsParams lWhFormProcureGoodsParams = new LWhFormProcureGoodsParams();
            BeanUtils.copyProperties(formProcureGood, lWhFormProcureGoodsParams);
            LWhFormProcureGoodsVO lWhFormProcureGoodsVO = new LWhFormProcureGoodsVO();
            BeanUtils.copyProperties(formProcureGood, lWhFormProcureGoodsVO);
            Long baseGoodsTemplateId = formProcureGood.getBaseGoodsTemplateId();
            BaseGoodsTemplate queryEntity = new BaseGoodsTemplate();
            queryEntity.setId(baseGoodsTemplateId);
            BaseGoodsTemplate baseGoodsTemplate = baseGoodsTemplateService.get(queryEntity);
            lWhFormProcureGoodsVO.setBaseCategoryName(baseGoodsTemplate.getCategoryName());
            // 查询型号数量
            LWhProcureModel lWhProcureModel = new LWhProcureModel();
            lWhProcureModel.setFromProcureGoodsId(formProcureGood.getId());
            List<LWhProcureModel> models = lWhProcureModelService.select(lWhProcureModel);
            fieldModels.set(lWhFormProcureGoodsParams, models);
            procureGoodsParams.add(lWhFormProcureGoodsParams);
            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);
            procureGoodsVOList.add(lWhFormProcureGoodsVO);
        }
        formProcureExtend.setProcureGoods(procureGoodsParams);
        return ResponseValue.success("查询成功!", formProcureExtend);
        lWhFormProcureExtendVO.setProcureGoods(procureGoodsVOList);
        return ResponseValue.success("查询成功!", lWhFormProcureExtendVO);
    }
    @ApiOperation(value = "采购单明细查询", notes = "采购单明细查询")
    @ApiImplicitParams({@ApiImplicitParam(name = "param", value = "采购单明细查询", required = true, dataType = "FormProcureQryDto", paramType = "query")})
    @GetMapping("detail/list")
    public ResponseValue queryFormProcureDetailList(FormProcureQryDto param) {
        S_user_core currentUser = this.getCurrentUser();
        if (currentUser == null) {
            return ResponseValue.error("登录用户信息不存在");
        }
        GenericPager genericPager = lWhFormProcureService.queryFormProcureDetailList(param);
        return ResponseValue.success(genericPager);
    }
}
consum-base/src/main/java/com/consum/base/controller/LWhFormTransferController.java
@@ -7,6 +7,7 @@
import com.consum.base.pojo.UseRecordDto;
import com.consum.base.pojo.UseRecordSkuDto;
import com.consum.base.pojo.query.TransferQryDto;
import com.consum.base.pojo.response.TransferInfoVO;
import com.consum.base.service.BaseGoodsModelsServiceImpl;
import com.consum.base.service.BaseWarehouseServiceImpl;
import com.consum.base.service.LWhFormTransferCoreService;
@@ -29,6 +30,10 @@
import com.walker.infrastructure.utils.CollectionUtils;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.web.ResponseValue;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
@@ -49,6 +54,7 @@
 */
@RestController
@RequestMapping("/pc/l/wh/form/transfer")
@Api(tags = "调拨分发管理")
public class LWhFormTransferController extends BaseController {
    @Autowired
@@ -69,6 +75,8 @@
    /**
     * @Description 新增
     */
    @ApiOperation(value = "单据新增", notes = "单据新增")
    @ApiImplicitParam(name = "param", value = "单据新增", required = true, dataType = "LWhFormTransferParam")
    @PostMapping("/add")
    public ResponseValue add(@RequestBody LWhFormTransferParam param) {
        S_user_core currentUser = this.getCurrentUser();
@@ -233,6 +241,10 @@
     * @param transferQryDto
     * @return
     */
    @ApiOperation(value = "部门物品分发列表明细", notes = "部门物品分发列表明细")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "transferQryDto", value = "调拨单查询条件", required = true)
    })
    @GetMapping("/department/list")
    public ResponseValue departmentTransferList(TransferQryDto transferQryDto) {
@@ -347,4 +359,18 @@
        return ResponseValue.success(result);
    }
    @ApiOperation(value = "查询部门下的分发单", notes = "查询部门下的分发单")
    @ApiImplicitParams({
        @ApiImplicitParam(name = "agencyId", value = "机构id", required = true, dataType = "Long", paramType = "query")
    })
    @GetMapping("/query/detail")
    public ResponseValue queryDepartmentTransferOrder(Long agencyId) {
        TransferInfoVO transferInfoVO = new TransferInfoVO();
        return ResponseValue.success(transferInfoVO);
    }
}
consum-base/src/main/java/com/consum/base/core/tools/MapperUtil.java
New file
@@ -0,0 +1,29 @@
package com.consum.base.core.tools;
import com.consum.base.util.MapUtils;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import org.springframework.jdbc.core.RowMapper;
/**
 * @author asus
 * @version 1.0
 * @description: TODO
 * @date 2023/11/11 14:40
 */
public class MapperUtil implements RowMapper<Map<String, Object>> {
    @Override
    public Map<String, Object> mapRow(ResultSet rs, int rowNum) throws SQLException {
        Map<String, Object> row = new HashMap<>();
        int columnCount = rs.getMetaData().getColumnCount();
        for (int i = 1; i <= columnCount; i++) {
            String columnName = MapUtils.underlineToCamel(rs.getMetaData().getColumnName(i));
            Object columnValue = rs.getObject(i);
            row.put(columnName, columnValue);
        }
        return row;
    }
}
consum-base/src/main/java/com/consum/base/pojo/LWarehouseFlowParam.java
@@ -1,116 +1,51 @@
package com.consum.base.pojo;
import com.walker.web.param.ParamRequest;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @ClassName LWarehouseFlowParam
 * @Date 2023/10/27
 * @Description
 * @Version 1.0
 **/
@ApiModel(value = "库存流水查询参数")
@Data
public class LWarehouseFlowParam extends ParamRequest {
    //单据类型 1 采购2 调拨 3出库4部门分发 5报废
    @ApiModelProperty(value = "单据类型 1 采购2 调拨 3出库4部门分发 5报废")
    private Short businessType;
    // 业务单据编号
    @ApiModelProperty(value = "业务单据编号")
    private String businessFormCode;
    //物品名称
    @ApiModelProperty(value = "物品名称")
    private String goodsTemplateName;
    //规格型号
    @ApiModelProperty(value = "规格型号")
    private String baseGoodsModelsName;
    // 机构
    @ApiModelProperty(value = "机构")
    private Long agencyId;
    //创建人
    @ApiModelProperty(value = "创建人")
    private String createdName;
    // 操作时间
    @ApiModelProperty(value = "操作时间")
    private Long dealTimeStart;
    @ApiModelProperty(value = "操作时间")
    private Long dealTimeEnd;
    public Short getBusinessType() {
        return businessType;
    }
    public void setBusinessType(Short businessType) {
        this.businessType = businessType;
    }
    public String getBusinessFormCode() {
        return businessFormCode;
    }
    public void setBusinessFormCode(String businessFormCode) {
        this.businessFormCode = businessFormCode;
    }
    public String getGoodsTemplateName() {
        return goodsTemplateName;
    }
    public void setGoodsTemplateName(String goodsTemplateName) {
        this.goodsTemplateName = goodsTemplateName;
    }
    public String getBaseGoodsModelsName() {
        return baseGoodsModelsName;
    }
    public void setBaseGoodsModelsName(String baseGoodsModelsName) {
        this.baseGoodsModelsName = baseGoodsModelsName;
    }
    public Long getAgencyId() {
        return agencyId;
    }
    public void setAgencyId(Long agencyId) {
        this.agencyId = agencyId;
    }
    public String getCreatedName() {
        return createdName;
    }
    public void setCreatedName(String createdName) {
        this.createdName = createdName;
    }
    public Long getDealTimeStart() {
        return dealTimeStart;
    }
    public void setDealTimeStart(Long dealTimeStart) {
        this.dealTimeStart = dealTimeStart;
    }
    public Long getDealTimeEnd() {
        return dealTimeEnd;
    }
    public void setDealTimeEnd(Long dealTimeEnd) {
        this.dealTimeEnd = dealTimeEnd;
    }
    @ApiModelProperty(value = "每页显示条数")
    private Integer pageSize = 10;
    @ApiModelProperty(value = "当前页数")
    private Integer pageNum = 1;
    public Integer getPageSize() {
        return pageSize;
    }
    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }
    public Integer getPageNum() {
        return pageNum;
    }
    public void setPageNum(Integer pageNum) {
        this.pageNum = pageNum;
    }
}
consum-base/src/main/java/com/consum/base/pojo/LWhFormProcureGoodsParams.java
@@ -1,17 +1,18 @@
package com.consum.base.pojo;
import com.walker.web.param.ParamRequest;
import java.util.List;
import lombok.Data;
/**
 * @ClassName LWhFormProcureGoodsParams
 * @Date 2023/10/27
 * @Description
 * @Version 1.0
 **/
@Data
public class LWhFormProcureGoodsParams extends ParamRequest {
    //分类编号
    private Long baseCategoryId = null;
    //物品模版编号
@@ -21,77 +22,15 @@
    private List<LWhProcureModelParams> models;
    public Long getBaseCategoryId() {
        return baseCategoryId;
    }
    public void setBaseCategoryId(Long baseCategoryId) {
        this.baseCategoryId = baseCategoryId;
    }
    public Long getBaseGoodsTemplateId() {
        return baseGoodsTemplateId;
    }
    public void setBaseGoodsTemplateId(Long baseGoodsTemplateId) {
        this.baseGoodsTemplateId = baseGoodsTemplateId;
    }
    public String getSupplier() {
        return supplier;
    }
    public void setSupplier(String supplier) {
        this.supplier = supplier;
    }
    public List<LWhProcureModelParams> getModels() {
        return models;
    }
    public void setModels(List<LWhProcureModelParams> models) {
        this.models = models;
    }
    // 主键
    private Long id = null;
    // 属性列表
    private Long whFormProcureId = null;
    private String goodsTemplateName = null;
    private String goodsTemplateName;
    private Integer sort = null;
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public Long getWhFormProcureId() {
        return whFormProcureId;
    }
    public void setWhFormProcureId(Long whFormProcureId) {
        this.whFormProcureId = whFormProcureId;
    }
    public String getGoodsTemplateName() {
        return goodsTemplateName;
    }
    public void setGoodsTemplateName(String goodsTemplateName) {
        this.goodsTemplateName = goodsTemplateName;
    }
    public Integer getSort() {
        return sort;
    }
    public void setSort(Integer sort) {
        this.sort = sort;
    }
}
consum-base/src/main/java/com/consum/base/pojo/LWhFormTransferParam.java
@@ -1,6 +1,8 @@
package com.consum.base.pojo;
import com.walker.web.param.ParamRequest;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Data;
@@ -11,209 +13,102 @@
 * @Author 卢庆阳
 * @Date 2023/10/30
 */
@ApiModel(value = "单据新增信息")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class LWhFormTransferParam extends ParamRequest {
    @ApiModelProperty(value = "主键")
    private Long id;
    /**
     * 入库仓库编号
     */
    @ApiModelProperty(value = "入库仓库编号")
    private Long inWarehouseId;
    /**
     * 出库仓库机构编号(调拨机构)
     */
    @ApiModelProperty(value = "出库仓库机构编号(调拨机构)")
    private Long outAgencyId;
    /**
     * 调拨时间
     */
    @ApiModelProperty(value = "调拨时间")
    private Long createTime;
    /**
     * 调拨手续
     */
    @ApiModelProperty(value = "调拨手续")
    private String procureDoc;
    /**
     * 调拨单型号
     */
    @ApiModelProperty(value = "调拨单型号")
    private List<LWhProcureModelParams> models;
    /**
     * 物品id
     */
    @ApiModelProperty(value = "物品id")
    private Long baseGoodsTemplateId;
    /**
     * 物品模版名称
     */
    @ApiModelProperty(value = "物品模版名称")
    private String goodsTemplateName;
    /**
     * 调拨单号
     */
    @ApiModelProperty(value = "调拨单号")
    private String businessFormCode;
    /**
     * 接收机构
     */
    @ApiModelProperty(value = "接收机构")
    private Long inAgencyId;
    /**
     * 状态 0=待出库;1=待接收;2=已入库
     */
    @ApiModelProperty(value = "状态 0=待出库;1=待接收;2=已入库")
    private Short states;
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private String operatorName;
    /**
     * 申请时间 开始
     */
    @ApiModelProperty(value = "申请时间 开始")
    private Long createTimeStart;
    /**
     * 申请时间 结束
     */
    @ApiModelProperty(value = "申请时间 结束")
    private Long createTimeEnd;
    /**
     * 接收时间 开始
     */
    @ApiModelProperty(value = "接收时间 开始")
    private Long inTimeStart;
    /**
     * 接收时间 结束
     */
    @ApiModelProperty(value = "接收时间 结束")
    private Long inTimeEnd;
    /**
     * 单据类型。0仓库调拨;1部门分发;2部门物品回退
     */
    @ApiModelProperty(value = "单据类型。0仓库调拨;1部门分发;2部门物品回退")
    private Integer transferBusinessType;
    /**
     * 部门物品使用人
     * TODO 属性重复
     */
    @ApiModelProperty(value = "部门物品使用人")
    private List<LWhProcureModelUserDTO> procureModelUserList;
    public Long getInWarehouseId() {
        return inWarehouseId;
    }
    public void setInWarehouseId(Long inWarehouseId) {
        this.inWarehouseId = inWarehouseId;
    }
    public Long getOutAgencyId() {
        return outAgencyId;
    }
    public void setOutAgencyId(Long outAgencyId) {
        this.outAgencyId = outAgencyId;
    }
    public Long getCreateTime() {
        return createTime;
    }
    public void setCreateTime(Long createTime) {
        this.createTime = createTime;
    }
    public List<LWhProcureModelParams> getModels() {
        return models;
    }
    public void setModels(List<LWhProcureModelParams> models) {
        this.models = models;
    }
    public Long getBaseGoodsTemplateId() {
        return baseGoodsTemplateId;
    }
    public void setBaseGoodsTemplateId(Long baseGoodsTemplateId) {
        this.baseGoodsTemplateId = baseGoodsTemplateId;
    }
    public String getGoodsTemplateName() {
        return goodsTemplateName;
    }
    public void setGoodsTemplateName(String goodsTemplateName) {
        this.goodsTemplateName = goodsTemplateName;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getProcureDoc() {
        return procureDoc;
    }
    public void setProcureDoc(String procureDoc) {
        this.procureDoc = procureDoc;
    }
    public String getBusinessFormCode() {
        return businessFormCode;
    }
    public void setBusinessFormCode(String businessFormCode) {
        this.businessFormCode = businessFormCode;
    }
    public Long getInAgencyId() {
        return inAgencyId;
    }
    public void setInAgencyId(Long inAgencyId) {
        this.inAgencyId = inAgencyId;
    }
    public Short getStates() {
        return states;
    }
    public void setStates(Short states) {
        this.states = states;
    }
    public String getOperatorName() {
        return operatorName;
    }
    public void setOperatorName(String operatorName) {
        this.operatorName = operatorName;
    }
    public Long getCreateTimeStart() {
        return createTimeStart;
    }
    public void setCreateTimeStart(Long createTimeStart) {
        this.createTimeStart = createTimeStart;
    }
    public Long getCreateTimeEnd() {
        return createTimeEnd;
    }
    public void setCreateTimeEnd(Long createTimeEnd) {
        this.createTimeEnd = createTimeEnd;
    }
    public Long getInTimeStart() {
        return inTimeStart;
    }
    public void setInTimeStart(Long inTimeStart) {
        this.inTimeStart = inTimeStart;
    }
    public Long getInTimeEnd() {
        return inTimeEnd;
    }
    public void setInTimeEnd(Long inTimeEnd) {
        this.inTimeEnd = inTimeEnd;
    }
}
consum-base/src/main/java/com/consum/base/pojo/LWhProcureModelParams.java
@@ -2,6 +2,7 @@
import com.walker.web.param.ParamRequest;
import java.util.List;
import lombok.Data;
/**
 * @ClassName LWhProcureModelParams
@@ -9,6 +10,7 @@
 * @Description
 * @Version 1.0
 **/
@Data
public class LWhProcureModelParams extends ParamRequest {
    // //规格型号编号
@@ -20,45 +22,9 @@
    private Integer procureModelBusinessType;
    // 计量单位
    private String baseUnit;
    private List<LWhProcureModelUserDTO> lWhProcureModelUserList;
    public Long getPrice() {
        return price;
    }
    public void setPrice(Long price) {
        this.price = price;
    }
    public Integer getCounts() {
        return counts;
    }
    public void setCounts(Integer counts) {
        this.counts = counts;
    }
    public Long getBaseGoodsModelsId() {
        return baseGoodsModelsId;
    }
    public void setBaseGoodsModelsId(Long baseGoodsModelsId) {
        this.baseGoodsModelsId = baseGoodsModelsId;
    }
    public List<LWhProcureModelUserDTO> getlWhProcureModelUserList() {
        return lWhProcureModelUserList;
    }
    public void setlWhProcureModelUserList(List<LWhProcureModelUserDTO> lWhProcureModelUserList) {
        this.lWhProcureModelUserList = lWhProcureModelUserList;
    }
    public Integer getProcureModelBusinessType() {
        return procureModelBusinessType;
    }
    public void setProcureModelBusinessType(Integer procureModelBusinessType) {
        this.procureModelBusinessType = procureModelBusinessType;
    }
}
consum-base/src/main/java/com/consum/base/pojo/ProjectTreeResult.java
@@ -2,45 +2,23 @@
import com.consum.model.po.BaseCategory;
import com.walker.web.param.ParamRequest;
import java.util.List;
import lombok.Data;
@Data
public class ProjectTreeResult extends ParamRequest {
    List<ProjectTreeResult> children;
    private Long id;
    private String label;
    public List<ProjectTreeResult> getChildren() {
        return children;
    }
    public void setChildren(List<ProjectTreeResult> children) {
        this.children = children;
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getLabel() {
        return label;
    }
    public void setLabel(String label) {
        this.label = label;
    }
    public ProjectTreeResult() {
    }
    private Integer sort;
    public ProjectTreeResult(BaseCategory baseCategory) {
        this.id = baseCategory.getId();
        this.label = baseCategory.getCategoryName();
        this.sort = baseCategory.getOrderNumber();
    }
}
consum-base/src/main/java/com/consum/base/pojo/query/FormProcureQryDto.java
New file
@@ -0,0 +1,73 @@
package com.consum.base.pojo.query;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author asus
 * @version 1.0
 * @description: 采购查询条件
 * @date 2023/11/10 16:51
 */
@ApiModel(value = "采购查询条件")
@Data
public class FormProcureQryDto {
    @ApiModelProperty(value = "主键")
    private Long id;
    /**
     * 仓库编号
     */
    @ApiModelProperty(value = "仓库编号")
    private Long warehouseId;
    /**
     * 入库单号
     */
    @ApiModelProperty(value = "入库单号")
    private String businessFormCode;
    /**
     * 物品模版名称
     */
    @ApiModelProperty(value = "物品模版名称")
    private String goodsTemplateName;
    /**
     * 机构
     */
    @ApiModelProperty(value = "机构")
    private Long agencyId;
    /**
     * 创建人
     */
    @ApiModelProperty(value = "创建人")
    private String createName;
    /**
     * 1=待入库;2=已入库
     */
    @ApiModelProperty(value = "1=待入库;2=已入库")
    private Integer states;
    /**
     * 入库时间 开始
     */
    @ApiModelProperty(value = "入库时间 开始")
    @JsonFormat(pattern = "yyyyMMdd", timezone = "GMT+8")
    private Long incomeTimeStart;
    /**
     * 入库时间 结束
     */
    @ApiModelProperty(value = "入库时间 结束")
    @JsonFormat(pattern = "yyyyMMdd", timezone = "GMT+8")
    private Long incomeTimeEnd;
    /**
     * 规格型号id
     */
    @ApiModelProperty(value = "规格型号id")
    private Long baseGoodsTemplateId;
    @ApiModelProperty(value = "每页显示条数")
    private Integer pageSize = 10;
    @ApiModelProperty(value = "当前页数")
    private Integer pageNum = 1;
}
consum-base/src/main/java/com/consum/base/pojo/query/TransferQryDto.java
@@ -1,13 +1,16 @@
package com.consum.base.pojo.query;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author asus
 * @version 1.0
 * @description: TODO
 * @description: 调拨单查询条件
 * @date 2023/11/6 11:47
 */
@ApiModel(value = "调拨单查询条件")
@Data
public class TransferQryDto {
@@ -15,56 +18,69 @@
    /**
     * 调拨单号/分发单号
     */
    @ApiModelProperty(value = "调拨单号/分发单号")
    private String businessFormCode;
    /**
     * 物品模版名称
     */
    @ApiModelProperty(value = "物品模版名称")
    private String goodsTemplateName;
    /**
     * 出库仓库机构编号(调拨机构)
     */
    @ApiModelProperty(value = "出库仓库机构编号(调拨机构)")
    private Long outAgencyId;
    /**
     * 接收机构
     */
    @ApiModelProperty(value = "接收机构")
    private Long inAgencyId;
    /**
     * 状态 0=待出库;1=待接收;2=已入库
     */
    @ApiModelProperty(value = "状态 0=待出库;1=待接收;2=已入库")
    private Short states;
    /**
     * 创建人/分发人
     */
    @ApiModelProperty(value = "创建人/分发人")
    private String operatorName;
    /**
     * 申请时间 开始
     */
    @ApiModelProperty(value = "申请时间 开始")
    private Long createTimeStart;
    /**
     * 申请时间 结束
     */
    @ApiModelProperty(value = "申请时间 结束")
    private Long createTimeEnd;
    /**
     * 接收时间 开始
     */
    @ApiModelProperty(value = "接收时间 开始")
    private Long inTimeStart;
    /**
     * 接收时间 结束
     */
    @ApiModelProperty(value = "接收时间 结束")
    private Long inTimeEnd;
    /**
     * 规格型号id
     */
    @ApiModelProperty(value = "规格型号id")
    private Long baseGoodsTemplateId;
    /**
     * 页码
     */
    @ApiModelProperty(value = "页码")
    private Integer pageNum;
    /**
     * 页大小
     */
    @ApiModelProperty(value = "页大小")
    private Integer pageSize;
//    /**
consum-base/src/main/java/com/consum/base/pojo/response/FormProcureDetailVO.java
New file
@@ -0,0 +1,43 @@
package com.consum.base.pojo.response;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * @author asus
 * @version 1.0
 * @description: 采购列表明细信息
 * @date 2023/11/11 9:51
 */
@ApiModel(value = "采购列表明细信息")
@Data
public class FormProcureDetailVO {
    // 主键
    private Long id;
    // 业务单号
    private String businessFormCode;
    //物品模版编号
    private Long baseGoodsTemplateId;
    //物品模版名称
    private String goodsTemplateName;
    //规格型号编号
    private Long baseGoodsModelsId;
    //规格型号名称
    private String goodsModelsName;
    //单价
    private Long price;
    //物品分发数量
    private Integer goodsNum;
    //金额
    private Long amount;
    //所属机构
    private String agencyName;
    //创建人
    private String createName;
    //操作时间
    private String procureTime;
}
consum-base/src/main/java/com/consum/base/pojo/response/FormProcureVO.java
New file
@@ -0,0 +1,72 @@
package com.consum.base.pojo.response;
import io.swagger.annotations.ApiModel;
import java.util.List;
import lombok.Data;
/**
 * @author asus
 * @version 1.0
 * @description: 采购列表明细信息
 * @date 2023/11/10 11:37
 */
@ApiModel(value = "采购列表明细信息")
@Data
public class FormProcureVO {
    // 主键
    private Long id;
    // 属性列表
    private String businessFormCode;
    private Long warehouseId;
    private String warehouseName;
    private Long buyerId;
    private String buyerName;
    private Long procureTime;
    private String procureDoc;
    private Integer buyType;
    private Integer states;
    private Long agencyId;
    private String agencyName;
    private Long incomeId;
    private String incomeName;
    private Long incomeTime;
    private String beiz;
    private Long lWarehouseFlowId;
    private List<FromProcureTemplateInfoVO> fromProcureTemplateInfoList;
}
consum-base/src/main/java/com/consum/base/pojo/response/FromProcureTemplateInfoVO.java
New file
@@ -0,0 +1,23 @@
package com.consum.base.pojo.response;
import io.swagger.annotations.ApiModel;
import lombok.Data;
/**
 * @author asus
 * @version 1.0
 * @description: TODO
 * @date 2023/11/10 11:37
 */
@ApiModel
@Data
public class FromProcureTemplateInfoVO {
    private Long id;
    private Long baseCategoryId;
    private Long baseGoodsTemplateId;
    private String goodsTemplateName;
    private Object count;
}
consum-base/src/main/java/com/consum/base/pojo/response/GoodsModelVO.java
New file
@@ -0,0 +1,23 @@
package com.consum.base.pojo.response;
import lombok.Data;
/**
 * @author asus
 * @version 1.0
 * @description: TODO
 * @date 2023/11/11 17:10
 */
@Data
public class GoodsModelVO {
    private Long id;
    private String baseGoodsModelsName;
    private String unit;
    private Long price;
    private Integer counts;
    private Integer worehouseCount;
    private Long baseGoodsModelsId;
}
consum-base/src/main/java/com/consum/base/pojo/response/LWhFormProcureExtendVO.java
New file
@@ -0,0 +1,69 @@
package com.consum.base.pojo.response;
import java.util.List;
import lombok.Data;
/**
 * @author asus
 * @version 1.0
 * @description: TODO
 * @date 2023/11/11 18:00
 */
@Data
public class LWhFormProcureExtendVO {
    // 主键
    private Long id;
    // 属性列表
    private String businessFormCode;
    private Long warehouseId;
    private String warehouseName;
    private Long buyerId;
    private String buyerName;
    private Long procureTime;
    private String procureDoc;
    private Integer buyType;
    private Integer states;
    private Long agencyId;
    private String agencyName;
    private Long incomeId;
    private String incomeName;
    private Long incomeTime;
    private String beiz;
    private Long lWarehouseFlowId;
    private List<LWhFormProcureGoodsVO> procureGoods;
}
consum-base/src/main/java/com/consum/base/pojo/response/LWhFormProcureGoodsVO.java
New file
@@ -0,0 +1,33 @@
package com.consum.base.pojo.response;
import java.util.List;
import lombok.Data;
/**
 * @ClassName LWhFormProcureGoodsParams
 * @Date 2023/10/27
 * @Description
 * @Version 1.0
 **/
@Data
public class LWhFormProcureGoodsVO {
    // 主键
    private Long id;
    //分类编号
    private Long baseCategoryId;
    //分类名称
    private String baseCategoryName;
    //物品模版编号
    private Long baseGoodsTemplateId;
    //供应商
    private String supplier;
    private Long whFormProcureId;
    private String goodsTemplateName;
    private Integer sort;
    private List<GoodsModelVO> models;
}
consum-base/src/main/java/com/consum/base/pojo/response/TransferInfoVO.java
New file
@@ -0,0 +1,29 @@
package com.consum.base.pojo.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author asus
 * @version 1.0
 * @description: TODO
 * @date 2023/11/10 15:35
 */
@ApiModel(value = "机构分发单信息")
@Data
public class TransferInfoVO {
    @ApiModelProperty(value = "id")
    private String id;
    @ApiModelProperty(value = "单号")
    private String code;
    @ApiModelProperty(value = "物品名称")
    private String name;
    @ApiModelProperty(value = "分发数量")
    private String num;
    @ApiModelProperty(value = "可退数量")
    private String refundNum;
    @ApiModelProperty(value = "分发时间")
    private String createDate;
}
consum-base/src/main/java/com/consum/base/pojo/response/WarehouseFlowVO.java
New file
@@ -0,0 +1,40 @@
package com.consum.base.pojo.response;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.NoArgsConstructor;
/**
 * @author asus
 * @version 1.0
 * @description: 仓库流水明细信息
 * @date 2023/11/11 11:26
 */
@ApiModel(value = "仓库流水明细信息")
@NoArgsConstructor
@Data
public class WarehouseFlowVO {
    @ApiModelProperty(value = "商品模板名称")
    private String goodsTemplateName;
    @ApiModelProperty(value = "规格名称")
    private String baseGoodsModelsName;
    @ApiModelProperty(value = "交易时间")
    private Long dealTime;
    @ApiModelProperty(value = "交易类型")
    private Integer businessType;
    @ApiModelProperty(value = "创建人")
    private String createdName;
    @ApiModelProperty(value = "数量")
    private Integer thisCount;
    @ApiModelProperty(value = "交易单号")
    private String businessFormCode;
    @ApiModelProperty(value = "经营单位")
    private String agencyName;
    @ApiModelProperty(value = "交易单ID")
    private Long businessFormId;
    @ApiModelProperty(value = "交易类型")
    private Integer thisType;
}
consum-base/src/main/java/com/consum/base/service/BaseCategoryServiceImpl.java
@@ -10,13 +10,12 @@
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
/**
 * @Description 物品分类
@@ -38,7 +37,9 @@
        BeanUtils.copyProperties(param, baseCategory);
        baseCategory.setId(IdUtil.generateId());
        //层级
        if (baseCategory.getFatherCategoryId() == 0L) {  //一级分类
        if (baseCategory.getFatherCategoryId() == null) {
            //一级分类
            baseCategory.setFatherCategoryId(0L);
            baseCategory.setLevels(Constants.LEVELS_ONE);
        } else {
            //根据父类id查询上级分类信息
@@ -59,11 +60,11 @@
    }
    /**
     * @param categoryName
     * @param fatherCategoryId
     * @Description 根据分类名称和父类id查询分类
     * @Author 卢庆阳
     * @Date 2023/10/23
     * @param categoryName
     * @param fatherCategoryId
     */
    public BaseCategory getByCategoryNameAndFatherCategoryId(String categoryName, Long fatherCategoryId) {
        StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE 1 = 1 ");
@@ -87,7 +88,11 @@
    public GenericPager<BaseCategory> queryBaseCategoryList(BaseCategoryParam param) {
        StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE 1 = 1 ");
        HashMap<String, Object> paramts = new HashMap<>();
        //分类名称
        if (param.getFatherCategoryId() != null) {
            sql.append("and father_category_id =:fatherCategoryId ");
            paramts.put("fatherCategoryId", param.getFatherCategoryId());
        }
        //分类名称
        if (!StringUtils.isEmpty(param.getCategoryName())) {
            sql.append(" and category_name like:category_name ");
@@ -110,7 +115,7 @@
    }
    /**
     * @Description  编辑
     * @Description 编辑
     * @Author 卢庆阳
     * @Date 2023/10/23
     */
@@ -120,6 +125,7 @@
    /**
     * 修改状态
     *
     * @author 卢庆阳
     * @date 2023/9/27
     */
@@ -144,6 +150,7 @@
    /**
     * 根据节点id查询节点详情
     *
     * @author 卢庆阳
     * @Date 2023/10/23
     */
@@ -161,23 +168,42 @@
        return this.select(QUERY_TREE_ALL, new Object[]{}, new BaseCategory());
    }
    public List<ProjectTreeResult> tree(String categoryName) {
    public List<ProjectTreeResult> tree() {
        BaseCategory categoryParam = new BaseCategory();
        categoryParam.setStates(1);
        List<BaseCategory> categories = select(categoryParam);
        return categories.stream()
                .filter(category -> Integer.valueOf(1).equals(category.getLevels()))
                .sorted(Comparator.comparing(BaseCategory::getOrderNumber))
                .map(ProjectTreeResult::new)
                .peek(lv1TreeResult -> lv1TreeResult.setChildren(categories.stream().filter(categorie -> lv1TreeResult.getId().equals(categorie.getFatherCategoryId())).sorted(Comparator.comparing(BaseCategory::getOrderNumber)).map(ProjectTreeResult::new).collect(Collectors.toList())))
                .collect(Collectors.toList());
        //查出所有分类
        List<BaseCategory> all = select(categoryParam);
        //组装成父子树形结构
        //1级分类
        List<ProjectTreeResult> menus = all.stream().filter(entity -> entity.getLevels() == 1).map(entity -> {
            ProjectTreeResult projectTreeResult = new ProjectTreeResult(entity);
            projectTreeResult.setChildren(getChildren(projectTreeResult, all));
            return projectTreeResult;
        }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort()))).collect(Collectors.toList());
        return menus;
    }
    /**
     * @Description  三级分类列表查询
     * 递归查找所有菜单的子菜单
     */
    private List<ProjectTreeResult> getChildren(ProjectTreeResult root, List<BaseCategory> all) {
        List<ProjectTreeResult> children = all.stream().filter(entity -> entity.getFatherCategoryId().equals(root.getId())).map(entity -> {
            ProjectTreeResult projectTreeResult = new ProjectTreeResult(entity);
            //通过递归找到子分类
            projectTreeResult.setChildren(getChildren(projectTreeResult, all));
            return projectTreeResult;
        }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort()))).collect(Collectors.toList());
        return children;
    }
    /**
     * @return
     * @Description 三级分类列表查询
     * @Author 卢庆阳
     * @Date 2023/10/30
     * @return
     */
    public List<BaseCategory> queryForLv3Tree() {
        StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE states = 1 and levels = 3 order by ORDER_NUMBER,CREATE_TIME desc");
consum-base/src/main/java/com/consum/base/service/BaseGoodsTemplateServiceImpl.java
@@ -197,7 +197,12 @@
        }
        int flag1 = this.update(baseGoodsTemplate);
        //2.修改规格型号的单位
        // TODO id 物品型号修改待整理
        List<BaseGoodsModels> modelsList = param.getModels();
        for (BaseGoodsModels baseGoodsModel : modelsList) {
            BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
            BeanUtils.copyProperties(baseGoodsModel, baseGoodsModels);
        }
        int flag2 = this.update(modelsList);
        if (flag1 > 0 && flag2 > 0) {
@@ -295,13 +300,17 @@
        return this.select(goodsTemplate);
    }
    public List<BaseGoodsTemplate> queryByAgencyId(Long agencyId) {
    public List<BaseGoodsTemplate> queryGoodsTemplateByCategoryId(Long agencyId, Long categoryId) {
        StringBuilder sql = new StringBuilder("SELECT * FROM base_goods_template WHERE 1=1 ");
        Map<String, Object> params = new HashMap<>();
        if (agencyId != null) {
            sql.append(" AND model.id=:modelId");
            sql.append("AND AGENCY_ID=:agencyId");
            params.put("agencyId", agencyId);
        }
        if (categoryId != null) {
            sql.append("AND CATEGORY_ID=:categoryId");
            params.put("categoryId", categoryId);
        }
        return this.select(sql.toString(), params, new BaseGoodsTemplate());
    }
}
consum-base/src/main/java/com/consum/base/service/LWarehouseFlowService.java
@@ -5,14 +5,12 @@
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Service;
/**
 * @ClassName LWarehouseFlowService
 * @Date 2023/10/25
 * @Description
 * @Version 1.0
@@ -26,7 +24,7 @@
     * @param param
     * @return
     */
    private static String QUERY_BUSINESS_FLOW = "SELECT flow.BUSINESS_TYPE as businessType,flow.BUSINESS_FORM_ID as businessFormId,tCaiGou.BUSINESS_FORM_CODE AS businessFormCode,record.GOODS_TEMPLATE_NAME AS goodsTemplateName,record.BASE_GOODS_MODELS_NAME AS baseGoodsModelsName,record.THIS_COUNT AS thisCount,record.THIS_TYPE AS thisType,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.AGENCY_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.AGENCY_NAME END AS agencyName,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.BUYER_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.OPERATOR_NAME END AS createdName,flow.DEAL_TIME AS dealTime FROM L_WAREHOUSE_FLOW flow LEFT JOIN L_WH_GOODS_RECORD record ON flow.id=record.WAREHOUSE_FLOW_ID LEFT JOIN L_WH_FORM_PROCURE tCaiGou ON flow.BUSINESS_TYPE=1 AND tCaiGou.id=flow.BUSINESS_FORM_ID LEFT JOIN L_WH_FORM_OUTPUT tFormOut ON flow.BUSINESS_TYPE=3 AND tFormOut.id=flow.BUSINESS_FORM_ID WHERE 1=1";
    private static String QUERY_BUSINESS_FLOW = "SELECT flow.BUSINESS_TYPE ,flow.BUSINESS_FORM_ID ,tCaiGou.BUSINESS_FORM_CODE ,record.GOODS_TEMPLATE_NAME ,record.BASE_GOODS_MODELS_NAME ,record.THIS_COUNT ,record.THIS_TYPE ,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.AGENCY_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.AGENCY_NAME END agency_Name,CASE WHEN flow.BUSINESS_TYPE=1 THEN tCaiGou.BUYER_NAME WHEN flow.BUSINESS_TYPE=3 THEN tFormOut.OPERATOR_NAME END created_Name,flow.DEAL_TIME deal_Time FROM L_WAREHOUSE_FLOW flow LEFT JOIN L_WH_GOODS_RECORD record ON flow.id=record.WAREHOUSE_FLOW_ID LEFT JOIN L_WH_FORM_PROCURE tCaiGou ON flow.BUSINESS_TYPE=1 AND tCaiGou.id=flow.BUSINESS_FORM_ID LEFT JOIN L_WH_FORM_OUTPUT tFormOut ON flow.BUSINESS_TYPE=3 AND tFormOut.id=flow.BUSINESS_FORM_ID WHERE 1=1";
    public GenericPager<Map<String, Object>> queryBusinessFlow(LWarehouseFlowParam param) {
        StringBuilder sql = new StringBuilder(QUERY_BUSINESS_FLOW);
@@ -38,9 +36,9 @@
//            sql.append(" and flow.BUSINESS_TYPE =?");
//            params.add(param.getBusinessType());
        }
        if (param.getBusinessFormCode() != null) {
            sql.append(" AND CASE WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUSINESS_FORM_CODE=:businessFormCode" +
                    " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE=:businessFormCode END");
        if (StringUtils.isNotEmpty(param.getBusinessFormCode())) {
            sql.append(" AND CASE WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUSINESS_FORM_CODE=:businessFormCode"
                + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.BUSINESS_FORM_CODE=:businessFormCode END");
            paramts.put("businessFormCode", param.getBusinessFormCode());
//            sql.append(" AND CASE WHEN flow.BUSINESS_TYPE = 1 THEN flow.BUSINESS_FORM_CODE=?");
//            params.add(param.getBusinessFormCode());
@@ -60,10 +58,8 @@
            paramts.put("agencyId", param.getAgencyId());
        }
        if (param.getCreatedName() != null) {
            sql.append(" AND CASE" +
                    " WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUYER_NAME LIKE :createdName"+
                    " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.OPERATOR_NAME LIKE :createdName END"
            );
            sql.append(" AND CASE" + " WHEN flow.BUSINESS_TYPE = 1 THEN tCaiGou.BUYER_NAME LIKE :createdName"
                + " WHEN flow.BUSINESS_TYPE = 3 THEN tFormOut.OPERATOR_NAME LIKE :createdName END");
            paramts.put("createdName", StringUtils.CHAR_PERCENT + param.getCreatedName() + StringUtils.CHAR_PERCENT);
        }
        if (param.getDealTimeStart() != null) {
consum-base/src/main/java/com/consum/base/service/LWhFormProcureService.java
@@ -1,17 +1,17 @@
package com.consum.base.service;
import com.consum.base.pojo.LWhFormProcureParam;
import com.consum.base.core.tools.MapperUtil;
import com.consum.base.pojo.query.FormProcureQryDto;
import com.consum.model.po.LWhFormProcure;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Service;
/**
 * @ClassName lWhFormProcureService
 * @Date 2023/10/24
 * @Description 采购单
 * @Version 1.0
@@ -21,7 +21,7 @@
    private static String QUERY_FORM_PROCURE_LIST = "SELECT * FROM L_WH_FORM_PROCURE WHERE 1 = 1";
    public GenericPager<LWhFormProcure> queryFormProcureList(LWhFormProcureParam param) {
    public GenericPager<LWhFormProcure> queryFormProcureList(FormProcureQryDto param) {
        HashMap<String, Object> paramts = new HashMap<>();
        StringBuilder sql = new StringBuilder(QUERY_FORM_PROCURE_LIST);
        //入库单号
@@ -29,19 +29,19 @@
            sql.append(" and BUSINESS_FORM_CODE like :businessFormCode ");
            paramts.put("businessFormCode", StringUtils.CHAR_PERCENT + param.getBusinessFormCode() + StringUtils.CHAR_PERCENT);
        }
        if (param.getAgencyId() != null){
        if (param.getAgencyId() != null) {
            sql.append(" and AGENCY_ID like :agencyId ");
            paramts.put("agencyId",  param.getAgencyId() + StringUtils.CHAR_PERCENT);
            paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
        }
        //创建人
        if (!StringUtils.isEmpty(param.getBuyerName())) {
        if (!StringUtils.isEmpty(param.getCreateName())) {
            sql.append(" and buyer_Name =:buyerName ");
            paramts.put("buyerName", param.getBuyerName());
            paramts.put("buyerName", param.getCreateName());
        }
        //状态
        if (param.getStates() != null) {
            sql.append(" and status =:status ");
            paramts.put("status", param.getStates());
            sql.append(" and states =:states ");
            paramts.put("states", param.getStates());
        }
        //入库时间
        if (param.getIncomeTimeStart() != null) {
@@ -54,7 +54,8 @@
        }
        //物品名称
        if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
            sql.append(" AND id IN (SELECT BUSINESS_ID FROM L_WH_PROCURE_MODEL procureModel LEFT JOIN BASE_GOODS_MODELS baseModel ON procureModel.BASE_GOODS_MODELS_ID=baseModel.ID LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseModel.GOODS_TEMPLATES_ID=baseTemp.id WHERE procureModel.BUSINESS_TYPE=1 AND baseTemp.GOODS_NAME LIKE :goodsTemplateName)");
            sql.append(
                " AND id IN (SELECT BUSINESS_ID FROM L_WH_PROCURE_MODEL procureModel LEFT JOIN BASE_GOODS_MODELS baseModel ON procureModel.BASE_GOODS_MODELS_ID=baseModel.ID LEFT JOIN BASE_GOODS_TEMPLATE baseTemp ON baseModel.GOODS_TEMPLATES_ID=baseTemp.id WHERE procureModel.BUSINESS_TYPE=1 AND baseTemp.GOODS_NAME LIKE :goodsTemplateName)");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        sql.append(" ORDER BY PROCURE_TIME DESC");
@@ -63,5 +64,52 @@
    }
    public GenericPager<Map<String, Object>> queryFormProcureDetailList(FormProcureQryDto param) {
        HashMap<String, Object> paramts = new HashMap<>();
        StringBuilder sql = new StringBuilder(
            "SELECT pm.id,fp.BUSINESS_FORM_CODE,fpg.GOODS_TEMPLATE_NAME,pm.PRICE,pm.COUNTS, "
                + "( pm.PRICE * pm.COUNTS ) amount,fp.AGENCY_NAME,fp.BUYER_NAME,fp.PROCURE_TIME,pm.BUSINESS_ID,pm.BASE_GOODS_MODELS_NAME FROM l_wh_procure_model pm "
                + "LEFT JOIN l_wh_form_procure fp ON pm.BUSINESS_ID = fp.id "
                + "LEFT JOIN l_wh_form_procure_goods fpg ON fp.id = fpg.WH_FORM_PROCURE_ID WHERE pm.BUSINESS_TYPE = 1 ");
        //入库单号
        if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
            sql.append("and BUSINESS_FORM_CODE = :businessFormCode ");
            paramts.put("businessFormCode", param.getBusinessFormCode());
        }
        //物品名称
        if (!StringUtils.isEmpty(param.getGoodsTemplateName())) {
            sql.append("and fpg.GOODS_TEMPLATE_NAME like :goodsTemplateName ");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        if (param.getAgencyId() != null) {
            sql.append("and AGENCY_ID like :agencyId ");
            paramts.put("agencyId", param.getAgencyId() + StringUtils.CHAR_PERCENT);
        }
        //创建人
        if (!StringUtils.isEmpty(param.getCreateName())) {
            sql.append("and buyer_Name =:buyerName ");
            paramts.put("buyerName", param.getCreateName());
        }
        //入库开始时间
        if (param.getIncomeTimeStart() != null) {
            sql.append("and INCOME_TIME >=:incomeTimeStart ");
            paramts.put("incomeTimeStart", param.getIncomeTimeStart() * 1000000);
        }
        //入库结束时间
        if (param.getIncomeTimeEnd() != null) {
            sql.append("and INCOME_TIME <:incomeTimeEnd ");
            paramts.put("incomeTimeEnd", param.getIncomeTimeEnd() * 1000000 + 240000);
        }
        //规格型号
        if (param.getBaseGoodsTemplateId() != null) {
            sql.append("and fpg.BASE_GOODS_TEMPLATE_ID =:baseGoodsTemplateId ");
            paramts.put("baseGoodsTemplateId",param.getBaseGoodsTemplateId());
        }
        sql.append("ORDER BY PROCURE_TIME DESC");
        GenericPager genericPager = selectSplit(sql.toString(), paramts, param.getPageNum(), param.getPageSize(), new MapperUtil());
        return genericPager;
    }
}
consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java
@@ -144,7 +144,7 @@
            // 单据类型 1 采购2 调拨 3出库4部门分发
            if (model.getProcureModelBusinessType() == 4) {
                List<LWhProcureModelUser> procureModelUserList = Lists.newArrayList();
                for (LWhProcureModelUserDTO lWhProcureModelUserDTO : model.getlWhProcureModelUserList()) {
                for (LWhProcureModelUserDTO lWhProcureModelUserDTO : model.getLWhProcureModelUserList()) {
                    LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
                    lWhProcureModelUser.setId(IdUtil.generateId());
                    lWhProcureModelUser.setTransBusinessId(lWhFormTransferId);
consum-base/src/main/java/com/consum/base/util/MapUtils.java
New file
@@ -0,0 +1,83 @@
package com.consum.base.util;
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class MapUtils {
    public static <T> T convertMapToObj(Map<String, Object> map, Class<T> clazz) {
        try {
            T obj = clazz.newInstance();
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                Field field = clazz.getDeclaredField(entry.getKey());
                field.setAccessible(true);
                field.set(obj, entry.getValue());
            }
            return obj;
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        }
        return null;
    }
    public static final char UNDERLINE = '_';
    /**
     * 把map的key转换成驼峰命名
     *
     * @param map
     * @return
     */
    public static Map<String, Object> toReplaceKeyLow(Map<String, Object> map) {
        Map reMap = new HashMap();
        if (map != null) {
            Iterator var2 = map.entrySet().iterator();
            while (var2.hasNext()) {
                Map.Entry<String, Object> entry = (Map.Entry) var2.next();
                reMap.put(underlineToCamel((String) entry.getKey()), map.get(entry.getKey()));
            }
            map.clear();
        }
        return reMap;
    }
    /**
     * 将下划线转为驼峰格式
     *
     * @param param
     * @return
     */
    public static String underlineToCamel(String param) {
        if (param == null || "".equals(param.trim())) {
            return "";
        }
        int len = param.length();
        StringBuilder sb = new StringBuilder(len);
        for (int i = 0; i < len; i++) {
            char c = param.charAt(i);
            if (c == UNDERLINE) {
                if (++i < len) {
                    sb.append(Character.toUpperCase(param.charAt(i)));
                }
            } else {
                sb.append(Character.toLowerCase(param.charAt(i)));
            }
        }
        return sb.toString();
    }
}