futian.liu
2023-11-28 89495b208235d2e30244ce9485c75ac2f1690c79
consum-base/src/main/java/com/consum/base/service/LWhFormTransferServiceImpl.java
@@ -3,13 +3,20 @@
import com.consum.base.core.CodeGeneratorEnum;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.core.utils.MapRowMapper;
import com.consum.base.pojo.LWhFormTransferParam;
import com.consum.base.pojo.LWhProcureModelParams;
import com.consum.base.pojo.LWhProcureModelUserDTO;
import com.consum.base.core.utils.MapUtils;
import com.consum.base.core.utils.MapperUtil;
import com.consum.base.pojo.LWhFormTransferGoodsInfoParam;
import com.consum.base.pojo.LWhProcureModelUserParam;
import com.consum.base.pojo.LWhTransferModelParam;
import com.consum.base.pojo.query.TransferQry;
import com.consum.base.pojo.request.LWhFormTransferParam;
import com.consum.base.pojo.response.DepartGoodsUseInfo;
import com.consum.base.pojo.response.FormTransferGoodsVO;
import com.consum.base.pojo.response.GoodsModelVO;
import com.consum.base.pojo.response.LWHFromTransferExtendVO;
import com.consum.model.po.BaseGoodsModels;
import com.consum.model.po.BaseWarehouse;
import com.consum.model.po.BaseWarehouseManager;
import com.consum.model.po.FinSysTenant;
import com.consum.model.po.FinSysTenantUser;
import com.consum.model.po.LWhFormOutput;
@@ -17,10 +24,9 @@
import com.consum.model.po.LWhGoodsRecord;
import com.consum.model.po.LWhProcureModel;
import com.consum.model.po.LWhProcureModelUser;
import com.consum.model.po.LWhProcureModelUserRecord;
import com.consum.model.vo.LWhFormOutputVo;
import com.consum.model.vo.LWhFormTransferVo;
import com.consum.model.vo.LWhGoodsRecordVo;
import com.consum.model.vo.LWhProcureModelVo;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.DateUtils;
@@ -30,6 +36,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.apache.commons.compress.utils.Lists;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -65,8 +72,15 @@
    private BaseGoodsModelsServiceImpl baseGoodsModelsService;
    @Autowired
    private LWhProcureModelUserServiceImpl lWhProcureModelUserService;
    @Autowired
    private LWhProcureModelUserRecordServiceImpl lWhProcureModelUserRecordService;
    @Autowired
    private BaseWarehouseManagerServiceImpl baseWarehouseManagerService;
    private static String QUERY_FORM_TRANSFER_LIST = "SELECT * FROM l_wh_form_transfer WHERE 1 = 1";
    private static String QUERY_FORM_TRANSFER_LIST = "SELECT ft.* FROM l_wh_form_transfer ft "
        + "left join L_WH_PROCURE_MODEL pm on pm.BUSINESS_ID = ft.id "
        + "LEFT JOIN BASE_GOODS_MODELS bgm ON pm.BASE_GOODS_MODELS_ID=bgm.ID "
        + "LEFT JOIN BASE_GOODS_TEMPLATE bgt ON bgm.GOODS_TEMPLATES_ID=bgt.id WHERE 1 = 1 ";
    /**
@@ -74,7 +88,7 @@
     * @Author 卢庆阳
     * @Date 2023/10/30
     */
    public int add(LWhFormTransferParam param, S_user_core currentUser, FinSysTenantUser sysInfo) {
    public int add(LWhFormTransferParam param, FinSysTenantUser sysInfo) throws Exception {
        //1.新增调拨单记录
        LWhFormTransfer lWhFormTransfer = new LWhFormTransfer();
        //调拨单id
@@ -82,22 +96,67 @@
        lWhFormTransfer.setId(lWhFormTransferId);
        Integer businessType = param.getTransferBusinessType();
        // 业务类型 调拨/部门分发/部门退回 单据类型。0仓库调拨;1部门分发;2部门物品回退
        // 单据类型。0仓库调拨;1部门分发;2部门物品回退
        // TODO 枚举字典
        lWhFormTransfer.setBusinessType(businessType);
        lWhFormTransfer.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(CodeGeneratorEnum.Transfer));
        Long warehouseId = param.getInWarehouseId();
        lWhFormTransfer.setInWarehouseId(warehouseId);
        //根据仓库id查询仓库
        BaseWarehouse warehouse = this.baseWarehouseService.getById(warehouseId);
        if (warehouse == null) {
            log.error("仓库不存在");
            return 0;
        // 调拨类型单据
        if (businessType == 0) {
            //入库仓库为当前用户的默认仓库
            String tenantId = sysInfo.getTenantId();
            String tenantName = sysInfo.getTenantName();
            BaseWarehouse warehouse = baseWarehouseService.getDefaultWarehouseByAgencyId(Long.valueOf(tenantId));
            if (warehouse == null) {
                log.error("仓库不存在");
                throw new Exception("仓库不存在");
            }
            lWhFormTransfer.setInWarehouseId(warehouse.getId());
            lWhFormTransfer.setInWarehouseName(warehouse.getWarehouseName());
            lWhFormTransfer.setInAgencyId(Long.valueOf(tenantId));
            lWhFormTransfer.setInAgencyName(tenantName);
        }
        lWhFormTransfer.setInWarehouseName(warehouse.getWarehouseName());
        lWhFormTransfer.setInAgencyId(Long.valueOf(sysInfo.getTenantId()));
        lWhFormTransfer.setInAgencyName(sysInfo.getTenantName());
        //当业务类型为部门分发时 添加部门分发记录和使用人
        if (businessType == 1) {
            //部门分发类型 出库仓库类型0机构1部门
            //从当前登录库管人从库中出库,入到所选部门的下
            //查询库管员信息和相关仓库
            Long id = sysInfo.getId();
            BaseWarehouseManager manager = new BaseWarehouseManager();
            manager.setManagerId(id);
            List<BaseWarehouseManager> managerList = baseWarehouseManagerService.select(manager);
            if (CollectionUtils.isEmpty(managerList)) {
                log.error("该用户不是库管员");
                throw new Exception("该用户不是库管员");
            }
            Optional<BaseWarehouseManager> first = managerList.stream().findFirst();
            if (first.isPresent()) {
                BaseWarehouseManager baseWarehouseManager = first.get();
                Long baseWarehouseId = baseWarehouseManager.getBaseWarehouseId();
                BaseWarehouse baseWarehouse = new BaseWarehouse();
                baseWarehouse.setId(baseWarehouseId);
                BaseWarehouse warehouse = baseWarehouseService.get(baseWarehouse);
                lWhFormTransfer.setInWarehouseType(1);
                lWhFormTransfer.setInWarehouseId(param.getDepartmentId());
                lWhFormTransfer.setInWarehouseName(param.getDepartmentName());
                lWhFormTransfer.setInOperatorName(param.getOperatorName());
                lWhFormTransfer.setInTime(param.getCreateTime());
                lWhFormTransfer.setOutWarehouseType(0);
                lWhFormTransfer.setOutWarehouseId(warehouse.getId());
                lWhFormTransfer.setOutWarehouseName(warehouse.getWarehouseName());
                lWhFormTransfer.setOutOperatorId(sysInfo.getId());
                lWhFormTransfer.setOutOperatorName(sysInfo.getUserName());
                lWhFormTransfer.setOutputTime(param.getCreateTime());
                lWhFormTransfer.setTel(param.getTel());
            }
        }
        //根据机构id查询调拨机构
        FinSysTenant finSysTenant = finSysTenantService.get(new FinSysTenant(param.getOutAgencyId()));
        if (finSysTenant == null) {
@@ -113,12 +172,6 @@
        lWhFormTransfer.setStates(0);
        lWhFormTransfer.setProcureDoc(param.getProcureDoc());
        //3.当业务类型为部门分发时 添加部门分发记录和使用人
        if (businessType == 1) {
            //部门分发类型 出库仓库类型0机构1部门
            // TODO 出库业务类型 联系电话
            lWhFormTransfer.setOutWarehouseType(1);
        }
        int flag1 = this.insert(lWhFormTransfer);
        if (flag1 == 0) {
            log.error("新增调拨单失败");
@@ -126,44 +179,67 @@
        }
        //2.新增物品型号记录
        List<LWhProcureModelParams> models = param.getModels();
        List<LWhFormTransferGoodsInfoParam> transferGoods = param.getTransferGoods();
        List<LWhProcureModel> modelList = new ArrayList<>();
        for (LWhProcureModelParams model : models) {
            LWhProcureModel lWhProcureModel = new LWhProcureModel();
            lWhProcureModel.setId(IdUtil.generateId());
            // 物品型号业务类型
            lWhProcureModel.setBusinessType(model.getProcureModelBusinessType());
            lWhProcureModel.setBusinessId(lWhFormTransferId);
            lWhProcureModel.setBaseGoodsModelsId(model.getBaseGoodsModelsId());
            lWhProcureModel.setCounts(model.getCounts());
            //根据物品型号查询物品库存
            int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, model.getBaseGoodsModelsId(), (short) 1, null);
            lWhProcureModel.setWorehouseCount(goodsNum);
        for (LWhFormTransferGoodsInfoParam transferGoodsInfo : transferGoods) {
            for (LWhTransferModelParam model : transferGoodsInfo.getModels()) {
                LWhProcureModel lWhProcureModel = new LWhProcureModel();
                lWhProcureModel.setId(IdUtil.generateId());
                // 挑拨业务类型转换到物品类型
                // 物品类型 1 采购2 调拨 3出库4部门分发
                Long baseGoodsModelsId = model.getBaseGoodsModelsId();
                if (businessType == 0) {
                    lWhProcureModel.setBusinessType(2);
                    //根据物品型号查询物品库存
                    int goodsNum = this.lWhGoodsService.queryGoodsModelNum(0, warehouseId, baseGoodsModelsId, 1, null);
                    lWhProcureModel.setWorehouseCount(goodsNum);
                }
                lWhProcureModel.setCounts(model.getCounts());
                lWhProcureModel.setBusinessId(lWhFormTransferId);
                lWhProcureModel.setBaseGoodsModelsId(baseGoodsModelsId);
                //根据型号id查询型号
                BaseGoodsModels baseGoodsModels = this.baseGoodsModelsService.get(new BaseGoodsModels(baseGoodsModelsId));
                if (baseGoodsModels != null) {
                    lWhProcureModel.setBaseGoodsModelsName(baseGoodsModels.getModelName());
                }
                lWhProcureModel.setSupplier(transferGoodsInfo.getSupplier());
            //3.当业务类型为部门分发时 添加部门分发记录和使用人
            // 单据类型 1 采购2 调拨 3出库4部门分发
            if (model.getProcureModelBusinessType() == 4) {
                List<LWhProcureModelUser> procureModelUserList = Lists.newArrayList();
                for (LWhProcureModelUserDTO lWhProcureModelUserDTO : model.getLWhProcureModelUserList()) {
                    LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
                    lWhProcureModelUser.setId(IdUtil.generateId());
                    lWhProcureModelUser.setTransBusinessId(lWhFormTransferId);
                    lWhProcureModelUser.setWhProcureModelId(lWhProcureModel.getId());
                    lWhProcureModelUser.setBaseGoodsModelsId(model.getBaseGoodsModelsId());
                    lWhProcureModelUser.setNowUserName(lWhProcureModelUserDTO.getNowUserName());
                    lWhProcureModelUser.setNowUserPhone(lWhProcureModelUserDTO.getNowUserPhone());
                    lWhProcureModelUser.setGoodsNum(lWhProcureModelUserDTO.getGoodsNum());
                    procureModelUserList.add(lWhProcureModelUser);
                //3.当业务类型为部门分发时 添加部门分发记录和使用人
                // 单据类型 1 采购2 调拨 3出库4部门分发
                //部门分发类型
                if (businessType == 1) {
                    lWhProcureModel.setBusinessType(4);
                    LWhProcureModelUserRecord lWhProcureModelUserRecord = new LWhProcureModelUserRecord();
                    lWhProcureModelUserRecord.setId(IdUtil.generateId());
                    lWhProcureModelUserRecord.setTransBusinessId(lWhFormTransferId);
                    lWhProcureModelUserRecord.setOperatorId(sysInfo.getId());
                    lWhProcureModelUserRecord.setOperatorName(sysInfo.getUserName());
                    lWhProcureModelUserRecordService.insert(lWhProcureModelUserRecord);
                    List<LWhProcureModelUser> procureModelUserList = Lists.newArrayList();
                    for (LWhProcureModelUserParam lWhProcureModelUserParam : model.getProcureModelUserList()) {
                        LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
                        lWhProcureModelUser.setId(IdUtil.generateId());
                        lWhProcureModelUser.setTransBusinessId(lWhFormTransferId);
                        lWhProcureModelUser.setWhProcureModelId(lWhProcureModel.getId());
                        lWhProcureModelUser.setBaseGoodsModelsId(baseGoodsModelsId);
                        lWhProcureModelUser.setNowUserName(lWhProcureModelUserParam.getNowUserName());
                        lWhProcureModelUser.setNowUserPhone(lWhProcureModelUserParam.getNowUserPhone());
                        lWhProcureModelUser.setGoodsNum(lWhProcureModelUserParam.getGoodsNum());
                        lWhProcureModelUser.setProcureModelUserRecordId(lWhProcureModelUserRecord.getId());
                        procureModelUserList.add(lWhProcureModelUser);
                    }
                    int procureInsertNum = lWhProcureModelUserService.insert(procureModelUserList);
                    if (procureInsertNum != procureModelUserList.size()) {
                        log.error("新增物品使用信息失败");
                        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                        return 0;
                    }
                }
                int procureInsertNum = lWhProcureModelUserService.insert(procureModelUserList);
                if (procureInsertNum != procureModelUserList.size()) {
                    log.error("新增物品使用信息失败");
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return 0;
                }
                modelList.add(lWhProcureModel);
            }
            modelList.add(lWhProcureModel);
        }
        int flag2 = this.lWhProcureModelService.insert(modelList);
@@ -187,13 +263,16 @@
        StringBuilder sql = new StringBuilder(QUERY_FORM_TRANSFER_LIST);
        //调拨单号
        if (!StringUtils.isEmpty(param.getBusinessFormCode())) {
            sql.append(" and BUSINESS_FORM_CODE like :businessFormCode ");
            paramts.put("businessFormCode", StringUtils.CHAR_PERCENT + param.getBusinessFormCode() + StringUtils.CHAR_PERCENT);
            sql.append(" and BUSINESS_FORM_CODE = :businessFormCode ");
            paramts.put("businessFormCode", param.getBusinessFormCode());
        }
        if (param.getQryType() != null) {
            sql.append("and ft.BUSINESS_TYPE = :businessType ");
            paramts.put("businessType", param.getQryType());
        }
        //物品名称
        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 bgt.GOODS_NAME LIKE :goodsTemplateName ");
            paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        //调拨机构
@@ -218,11 +297,11 @@
        }
        //申请时间
        if (param.getCreateTimeStart() != null) {
            sql.append(" and CREATE_TIME >=:createTimeStart ");
            sql.append(" and ft.CREATE_TIME >=:createTimeStart ");
            paramts.put("createTimeStart", param.getCreateTimeStart() * 1000000);
        }
        if (param.getCreateTimeEnd() != null) {
            sql.append(" and CREATE_TIME <:createTimeEnd ");
            sql.append(" and ft.CREATE_TIME <:createTimeEnd ");
            paramts.put("createTimeEnd", param.getCreateTimeEnd() * 1000000 + 240000);
        }
        //接收时间
@@ -235,7 +314,7 @@
            paramts.put("inTimeEnd", param.getEndTime() * 1000000 + 240000);
        }
        sql.append(" ORDER BY CREATE_TIME DESC");
        sql.append(" ORDER BY ft.CREATE_TIME DESC");
        GenericPager genericPager = selectSplit(sql.toString(), paramts, new LWhFormTransfer());
        return genericPager;
@@ -246,32 +325,70 @@
     * @Author 卢庆阳
     * @Date 2023/10/30
     */
    public LWhFormTransferVo getById(Long id) {
        LWhFormTransferVo vo = new LWhFormTransferVo();
    public LWHFromTransferExtendVO getById(Long id) {
        LWHFromTransferExtendVO result = new LWHFromTransferExtendVO();
        //1.查询调拨单
        LWhFormTransfer lWhFormTransfer = this.get(new LWhFormTransfer(id));
        if (lWhFormTransfer != null) {
            BeanUtils.copyProperties(lWhFormTransfer, vo);
            BeanUtils.copyProperties(lWhFormTransfer, result);
            result.setDepartmentName(lWhFormTransfer.getInWarehouseName());
        }
        //2.查询物品型号
//        List<LWhProcureModel> models = this.lWhProcureModelService.getModelByForm(WhBusinessEnum.DIAOBO, id);
        List<LWhProcureModel> models = this.lWhProcureModelService.getModelByForm(null, id);
        if (!CollectionUtils.isEmpty(models)) {
            List<LWhProcureModelVo> lWhProcureModelVoList = Lists.newArrayList();
            for (LWhProcureModel model : models) {
                LWhProcureModelVo lWhProcureModelVo = new LWhProcureModelVo();
                BeanUtils.copyProperties(model, lWhProcureModelVo);
        String sql = "SELECT bgt.id, CATEGORY_ID, CATEGORY_NAME, GOODS_NAME,bgt.CLASSIFICATION type "
            + "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", result.getId());
        List<Map<String, Object>> procureModelList = lWhFormOutputService.select(sql, paramMap, new MapperUtil());
                LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
                lWhProcureModelUser.setWhProcureModelId(model.getId());
                List<LWhProcureModelUser> select = lWhProcureModelUserService.select(lWhProcureModelUser);
                lWhProcureModelVo.setProcureModelUsersList(select);
                lWhProcureModelVoList.add(lWhProcureModelVo);
            }
            vo.setModels(lWhProcureModelVoList);
        String queryRecord = "SELECT * FROM l_wh_procure_model_user_record where TRANS_BUSINESS_ID = :id order by DEAL_TIME desc limit 1";
        LWhProcureModelUserRecord lWhProcureModelUserRecord = lWhProcureModelUserRecordService.get(queryRecord, paramMap, new LWhProcureModelUserRecord());
        List<FormTransferGoodsVO> formTransferGoods = Lists.newArrayList();
        for (Map<String, Object> map : procureModelList) {
            FormTransferGoodsVO procureTemplateInfoVO = MapUtils.convertMapToObj(map, FormTransferGoodsVO.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);
                Integer businessType = result.getBusinessType();
                String type = procureTemplateInfoVO.getType();
                //部门分发需要查询使用信息
                if (businessType == 1 && "A".equals(type)) {
                    Long procureModelId = goodsModelVO.getId();
                    LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser();
                    lWhProcureModelUser.setWhProcureModelId(procureModelId);
                    lWhProcureModelUser.setProcureModelUserRecordId(lWhProcureModelUserRecord.getId());
                    List<LWhProcureModelUser> procureModelUserList = this.lWhProcureModelUserService.select(lWhProcureModelUser);
                    if (!CollectionUtils.isEmpty(procureModelUserList)) {
                        List<DepartGoodsUseInfo> departGoodsUseInfoList = Lists.newArrayList();
                        procureModelUserList.forEach(useInfo -> {
                            Integer goodsNum = useInfo.getGoodsNum();
                            Long nowUserPhone = useInfo.getNowUserPhone();
                            String nowUserName = useInfo.getNowUserName();
                            DepartGoodsUseInfo departGoodsUseInfo = new DepartGoodsUseInfo();
                            departGoodsUseInfo.setName(nowUserName);
                            departGoodsUseInfo.setNum(goodsNum);
                            departGoodsUseInfo.setTel(nowUserPhone);
                            departGoodsUseInfoList.add(departGoodsUseInfo);
                        });
                        goodsModelVO.setUseInfo(departGoodsUseInfoList);
                    }
                }
                goodsModelVOList.add(goodsModelVO);
            });
            procureTemplateInfoVO.setModels(goodsModelVOList);
            formTransferGoods.add(procureTemplateInfoVO);
        }
        return vo;
        result.setFormTransferGoods(formTransferGoods);
        return result;
    }
@@ -327,26 +444,14 @@
    public GenericPager<Map<String, Object>> queryTransferInfo(TransferQry transferQry) {
        HashMap<String, Object> paramts = new HashMap<>();
        StringBuilder sql = new StringBuilder("SELECT\n"
            + "\tft.id,\n"
            + "\tft.BUSINESS_FORM_CODE businessCode,\n"
            + "\tbgt.GOODS_NAME goodsName,\n"
            + "\tbgt.CLASSIFICATION goodsType,\n"
            + "\tbgm.id goodsModelId,\n"
            + "\tbgm.MODEL_NAME goodsModelName,\n"
            + "\tpm.COUNTS goodsCount,\n"
            + "\tfst.`name` tennatName,\n"
            + "\tfstd.NAME departmentName,\n"
            + "\tft.OPERATOR_ID distributor,\n"
            + "\tft.CREATE_TIME TIME \n"
            + "FROM\n"
            + "\tl_wh_form_transfer ft\n"
            + "\tLEFT JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n"
            + "\tLEFT JOIN base_goods_models bgm ON bgm.GOODS_TEMPLATES_ID = pm.BASE_GOODS_MODELS_ID\n"
            + "\tLEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID\n"
            + "\tLEFT JOIN fin_sys_tenant_user fstu ON fstu.id = ft.OPERATOR_ID\n"
            + "\tLEFT JOIN fin_sys_tenant_department fstd ON fstu.SYS_DEPT_ID = fstd.ID \n"
            + "\tLEFT JOIN fin_sys_tenant fst ON fst.id = fstd.TENANT_ID where 1=1 ");
        StringBuilder sql = new StringBuilder(
            "SELECT ft.id,ft.BUSINESS_FORM_CODE,bgt.GOODS_NAME,bgt.CLASSIFICATION type,bgm.id goodsModelId,bgm.MODEL_NAME goodsModelName,pm.COUNTS goodsCount,fst.`name` tenantName,"
                + "ft.IN_WAREHOUSE_NAME departmentName,ft.OPERATOR_ID,ft.CREATE_TIME,ft.OPERATOR_NAME FROM l_wh_form_transfer ft "
                + "inner JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID " + "inner JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID "
                + "inner JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID "
                + "inner JOIN fin_sys_tenant_user fstu ON fstu.id = ft.OPERATOR_ID "
                + "inner JOIN fin_sys_tenant_department fstd ON fstu.SYS_DEPT_ID = fstd.ID "
                + "inner JOIN fin_sys_tenant fst ON fst.id = fstd.TENANT_ID where ft.BUSINESS_TYPE =1 ");
        //单号
        if (StringUtils.isNotEmpty(transferQry.getBusinessFormCode())) {
            sql.append("AND BUSINESS_FORM_CODE like :businessFormCode ");
@@ -358,9 +463,9 @@
            paramts.put("goodsName", StringUtils.CHAR_PERCENT + transferQry.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        // 规格型号
        if (transferQry.getBaseGoodsTemplateId() != null) {
        if (transferQry.getBaseGoodsModelsId() != null) {
            sql.append("AND bgm.id =:goodsModelId ");
            paramts.put("goodsModelId", transferQry.getBaseGoodsTemplateId());
            paramts.put("goodsModelId", transferQry.getBaseGoodsModelsId());
        }
        //调拨机构
        if (transferQry.getOutAgencyId() != null) {
@@ -374,21 +479,94 @@
            paramts.put("OPERATOR_NAME", transferQry.getOperatorName());
        }
        //申请时间
        if (transferQry.getCreateTimeStart() != null) {
        if (transferQry.getStartTime() != null) {
            sql.append("AND ft.CREATE_TIME >=:createTimeStart ");
            paramts.put("createTimeStart", transferQry.getCreateTimeStart() * 1000000);
            paramts.put("createTimeStart", transferQry.getStartTime() * 1000000);
        }
        if (transferQry.getCreateTimeEnd() != null) {
        if (transferQry.getEndTime() != null) {
            sql.append("AND ft.CREATE_TIME <:createTimeEnd ");
            paramts.put("createTimeEnd", transferQry.getCreateTimeEnd() * 1000000 + 240000);
            paramts.put("createTimeEnd", transferQry.getEndTime() * 1000000 + 240000);
        }
        sql.append("ORDER BY ft.CREATE_TIME DESC");
        GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), paramts, transferQry.getPageNum(), transferQry.getPageSize(),
            new MapRowMapper());
            new MapperUtil());
        return mapGenericPager;
    }
    public GenericPager<Map<String, Object>> queryFormTransferDetailList(TransferQry param) {
        HashMap<String, Object> params = new HashMap<>();
        StringBuilder sql = new StringBuilder(
            "SELECT ft.id,\n" + "       ft.BUSINESS_FORM_CODE,\n" + "       bgt.GOODS_NAME,\n" + "       bgt.CLASSIFICATION,\n"
                + "       pm.BASE_GOODS_MODELS_NAME,\n" + "       pm.COUNTS,\n" + "       ft.IN_AGENCY_NAME,\n" + "       ft.OPERATOR_NAME,\n"
                + "       ft.CREATE_TIME,\n" + "       ft.IN_TIME,\n" + "       ft.OUT_AGENCY_NAME,\n" + "       ft.OUT_OPERATOR_NAME,\n"
                + "       ft.OUTPUT_TIME\n" + "FROM l_wh_form_transfer ft\n" + "         LEFT JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n"
                + "         LEFT JOIN base_goods_models bgm ON bgm.id = pm.BASE_GOODS_MODELS_ID\n"
                + "         LEFT JOIN base_goods_template bgt ON bgt.id = bgm.GOODS_TEMPLATES_ID where 1=1 ");
        if (StringUtils.isNotEmpty(param.getBusinessFormCode())) {
            sql.append("AND ft.BUSINESS_FORM_CODE = :businessFormCode ");
            params.put("businessFormCode", param.getBusinessFormCode());
        }
        if (StringUtils.isNotEmpty(param.getGoodsTemplateName())) {
            sql.append("AND bgt.GOODS_NAME like :goodsName ");
            params.put("goodsName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT);
        }
        if (param.getBaseGoodsModelsId() != null) {
            sql.append("AND bgm.id = :goodsModelId ");
            params.put("goodsModelId", param.getBaseGoodsModelsId());
        }
        if (param.getOutAgencyId() != null) {
            sql.append("AND ft.OUT_AGENCY_ID like :outAgencyId ");
            params.put("outAgencyId", param.getOutAgencyId());
        }
        if (param.getOutAgencyId() != null) {
            sql.append("AND ft.IN_AGENCY_ID like :inAgencyId ");
            params.put("inAgencyId", param.getInAgencyId());
        }
        if (StringUtils.isNotEmpty(param.getOperatorName())) {
            sql.append("AND ft.OPERATOR_NAME = :operatorName ");
            params.put("operatorName", param.getOperatorName());
        }
        //申请创建时间
        if (param.getCreateTimeStart() != null) {
            sql.append("AND ft.CREATE_TIME >= :createTimeStart ");
            params.put("createTimeStart", param.getCreateTimeStart() * 1000000);
        }
        if (param.getCreateTimeEnd() != null) {
            sql.append("AND ft.CREATE_TIME < :createTimeEnd ");
            params.put("createTimeEnd", param.getCreateTimeEnd() * 1000000 + 240000);
        }
        //接收时间
        if (param.getStartTime() != null) {
            sql.append("AND ft.IN_TIME >= :createTimeStart ");
            params.put("createTimeStart", param.getStartTime() * 1000000);
        }
        if (param.getEndTime() != null) {
            sql.append("AND ft.IN_TIME < :createTimeEnd ");
            params.put("createTimeEnd", param.getEndTime() * 1000000 + 240000);
        }
        GenericPager<Map<String, Object>> mapGenericPager = this.selectSplit(sql.toString(), params, param.getPageNum(), param.getPageSize(), new MapperUtil());
        return mapGenericPager;
    }
    public List<Map<String, Object>> queryDepartmentTransferOrder() {
        String sql =
            "SELECT ft.id,\n" + "       ft.BUSINESS_FORM_CODE,\n" + "       gr.GOODS_TEMPLATE_NAME,\n" + "       gr.BASE_GOODS_TEMPLATE_ID goodsTemplateId,\n"
                + "       ft.CREATE_TIME\n" + "\n" + "FROM l_wh_form_transfer ft\n" + "         LEFT JOIN L_WAREHOUSE_FLOW wf ON ft.id = wf.BUSINESS_FORM_ID\n"
                + "         left join L_WH_GOODS_RECORD gr on gr.WAREHOUSE_FLOW_ID = wf.id\n"
                + "         LEFT JOIN L_GOODS_WH_RECORD gwr on gwr.WAREHOUSE_FLOW_ID = wf.id\n"
                + "         left join L_WH_GOODS g on g.id = gwr.WH_GOODS_ID where ft.BUSINESS_TYPE = 1 GROUP BY gr.BASE_GOODS_TEMPLATE_ID \n";
        HashMap<String, Object> param = new HashMap<>();
        List<Map<String, Object>> select = this.select(sql, param, new MapperUtil());
        select.forEach(item -> {
        });
        return select;
    }
}