package com.consum.base.service.impl; import static com.walker.db.Sorts.DESC; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Objects; import java.util.stream.Collectors; import org.apache.commons.compress.utils.Lists; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.interceptor.TransactionAspectSupport; import org.springframework.util.CollectionUtils; import com.consum.base.core.CodeGeneratorEnum; import com.consum.base.core.CodeGeneratorService; import com.consum.base.core.type.CategoryType; import com.consum.base.core.type.StatesType; import com.consum.base.core.type.TransferBusinessType; import com.consum.base.core.type.TransferStatesType; import com.consum.base.core.type.WareHouseType; import com.consum.base.core.utils.CurrencyUtil; import com.consum.base.core.utils.IdUtil; 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.dto.GoodModelInfoDTO; import com.consum.base.pojo.excel.TransferExcelTemplate; 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.GoodsModelVO; import com.consum.base.pojo.response.GoodsTemplateInfoVO; import com.consum.base.pojo.response.LWHFromTransferExtendVO; import com.consum.base.service.BaseWarehouseManagerService; import com.consum.base.service.BaseWarehouseService; import com.consum.base.service.FinSysTenantService; import com.consum.base.service.LWhFormTransferService; import com.consum.base.service.LWhGoodsService; import com.consum.base.service.LWhProcureModelService; import com.consum.base.service.LWhProcureModelUserRecordService; import com.consum.base.service.LWhProcureModelUserService; 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.LWhFormTransfer; import com.consum.model.po.LWhProcureModel; import com.consum.model.po.LWhProcureModelUser; import com.consum.model.po.LWhProcureModelUserRecord; import com.walker.db.page.GenericPager; import com.walker.infrastructure.utils.DateUtils; import com.walker.infrastructure.utils.StringUtils; import com.walker.jdbc.service.BaseServiceImpl; /** * @Description 调拨管理 * @Author 卢庆阳 * @Date 2023/10/30 */ @Service public class LWhFormTransferServiceImpl extends BaseServiceImpl implements LWhFormTransferService { @Autowired private BaseWarehouseService baseWarehouseService; @Autowired private CodeGeneratorService codeGeneratorService; @Autowired private FinSysTenantService finSysTenantService; @Autowired private LWhGoodsService lWhGoodsService; @Autowired private LWhProcureModelService lWhProcureModelService; @Autowired private BaseGoodsModelsServiceImpl baseGoodsModelsService; @Autowired private LWhProcureModelUserService lWhProcureModelUserService; @Autowired private LWhProcureModelUserRecordService lWhProcureModelUserRecordService; @Autowired private BaseWarehouseManagerService baseWarehouseManagerService; private static final String QUERY_FORM_TRANSFER_LIST = "SELECT DISTINCT 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 "; /** * @Description 新增 * @Author 卢庆阳 * @Date 2023/10/30 */ @Transactional(rollbackFor = Exception.class) public long add(LWhFormTransferParam param, FinSysTenantUser sysInfo,boolean isHaveDoc) throws Exception { // 1.新增调拨单记录 LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(); // 调拨单id long lWhFormTransferId = IdUtil.generateId(); lWhFormTransfer.setId(lWhFormTransferId); Integer businessType = param.getTransferBusinessType(); // 单据类型。0仓库调拨;1部门分发 lWhFormTransfer.setBusinessType(businessType); CodeGeneratorEnum codeGeneratorEnum = null; if (businessType == TransferBusinessType.STOCK_TRANSFER.getValue()) { codeGeneratorEnum = CodeGeneratorEnum.Transfer; } else if (businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue()) { codeGeneratorEnum = CodeGeneratorEnum.Distribute; } lWhFormTransfer.setBusinessFormCode(codeGeneratorService.createBusinessFormCode(codeGeneratorEnum)); // 调拨类型单据 if (businessType == TransferBusinessType.STOCK_TRANSFER.getValue()) { // 入库仓库为当前用户的默认仓库中的第一个 String tenantId = sysInfo.getTenantId(); String tenantName = sysInfo.getTenantName(); BaseWarehouse warehouse = baseWarehouseService.getWarehouseByAgencyId(Long.valueOf(tenantId), null); if (warehouse == null) { log.error("仓库不存在"); //throw new Exception("仓库不存在"); return -2L; } lWhFormTransfer.setInWarehouseId(warehouse.getId()); lWhFormTransfer.setInWarehouseName(warehouse.getWarehouseName()); lWhFormTransfer.setInAgencyId(Long.valueOf(tenantId)); lWhFormTransfer.setInAgencyName(tenantName); } // 当业务类型为部门分发时 添加部门分发记录和使用人 if (businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue()) { // 部门分发类型 出库仓库类型0机构1部门 // 从当前登录库管人从库中出库,入到所选部门的下 // 查询库管员信息和相关仓库 Long sysUserId = sysInfo.getSysUserId(); BaseWarehouseManager manager = new BaseWarehouseManager(); manager.setManagerId(sysUserId); List managerList = baseWarehouseManagerService.select(manager); if (CollectionUtils.isEmpty(managerList)) { log.error("该用户不是库管员"); //throw new Exception("该用户不是库管员"); return -1L; } BaseWarehouseManager baseWarehouseManager = managerList.stream().findFirst().orElse(null); Long baseWarehouseId = baseWarehouseManager.getBaseWarehouseId(); BaseWarehouse baseWarehouse = new BaseWarehouse(); baseWarehouse.setId(baseWarehouseId); BaseWarehouse warehouse = baseWarehouseService.get(baseWarehouse); lWhFormTransfer.setInWarehouseType(WareHouseType.DEPARTMENT.getValue()); lWhFormTransfer.setInWarehouseId(param.getDepartmentId()); lWhFormTransfer.setInWarehouseName(param.getDepartmentName()); lWhFormTransfer.setInOperatorName(param.getOperatorName()); if(!isHaveDoc){ lWhFormTransfer.setInTime(param.getCreateTime()); } lWhFormTransfer.setOutWarehouseType(WareHouseType.TENANT.getValue()); lWhFormTransfer.setOutWarehouseId(warehouse.getId()); lWhFormTransfer.setOutWarehouseName(warehouse.getWarehouseName()); lWhFormTransfer.setOutOperatorId(sysInfo.getId()); lWhFormTransfer.setOutOperatorName(sysInfo.getUserName()); if(!isHaveDoc) { lWhFormTransfer.setOutputTime(param.getCreateTime()); } lWhFormTransfer.setTel(param.getTel()); } // 根据机构id查询调拨机构 FinSysTenant finSysTenant = finSysTenantService.get(new FinSysTenant(param.getOutAgencyId())); if (finSysTenant == null) { log.error("调拨机构不存在"); throw new Exception("调拨机构不存在"); } Long outAgencyId = finSysTenant.getId(); lWhFormTransfer.setOutAgencyId(outAgencyId); lWhFormTransfer.setOutAgencyName(finSysTenant.getName()); lWhFormTransfer.setOperatorId(sysInfo.getId()); lWhFormTransfer.setOperatorName(sysInfo.getUserName()); lWhFormTransfer.setCreateTime(param.getCreateTime()); // 0=待出库;1=待接收;2=已入库库:4=已撤销 lWhFormTransfer.setStates(TransferStatesType.OUT_PENDING.getValue()); lWhFormTransfer.setProcureDoc(param.getProcureDoc()); int flag1 = this.insert(lWhFormTransfer); if (flag1 == 0) { log.error("新增调拨单失败"); } // 2.新增物品型号记录 List transferGoods = param.getTransferGoods(); List modelList = new ArrayList<>(); // 判断添加一次使用人记录 List recordType = transferGoods.stream() .filter( item -> businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue() && item.getModels().stream() .anyMatch(model -> baseGoodsModelsService.queryGoodsModelInfo(model.getBaseGoodsModelsId()).stream() .findFirst().orElse(null).get("type").equals(CategoryType.TYPE_A.getValue()))) .collect(Collectors.toList()); LWhProcureModelUserRecord lWhProcureModelUserRecord = new LWhProcureModelUserRecord(); if (!CollectionUtils.isEmpty(recordType)) { lWhProcureModelUserRecord.setId(IdUtil.generateId()); lWhProcureModelUserRecord.setTransBusinessId(lWhFormTransferId); lWhProcureModelUserRecord.setOperatorId(sysInfo.getId()); lWhProcureModelUserRecord.setOperatorName(sysInfo.getUserName()); lWhProcureModelUserRecord.setDealTime(DateUtils.getDateTimeNumber(System.currentTimeMillis())); lWhProcureModelUserRecordService.insert(lWhProcureModelUserRecord); } 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 == TransferBusinessType.STOCK_TRANSFER.getValue()) { lWhProcureModel.setBusinessType(2); // 根据物品型号查询物品库存 // 调拨申请时没有仓库id 查询上级机构的所有仓库 List baseWareHouseList = baseWarehouseService.getBaseWareHouseList(outAgencyId, StatesType.NORMAL.getValue()); List warehouseIdList = baseWareHouseList.stream().map(BaseWarehouse::getId).collect(Collectors.toList()); int goodsNum = lWhGoodsService.queryGoodsModelNum(WareHouseType.TENANT.getValue(), warehouseIdList, baseGoodsModelsId, 1, null); lWhProcureModel.setWorehouseCount(goodsNum); } if (businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue()) { lWhProcureModel.setBusinessType(4); } lWhProcureModel.setCounts(model.getCounts()); lWhProcureModel.setUseCount(model.getCounts()); lWhProcureModel.setBusinessId(lWhFormTransferId); lWhProcureModel.setBaseGoodsModelsId(baseGoodsModelsId); // 根据型号id查询型号 List> baseGoodsModels = this.baseGoodsModelsService.queryGoodsModelInfo(baseGoodsModelsId); Map baseModelMap = baseGoodsModels.get(0); if (baseGoodsModels != null && !CollectionUtils.isEmpty(baseModelMap)) { Object modelName = baseModelMap.get("modelName"); lWhProcureModel.setBaseGoodsModelsName(modelName.toString()); } lWhProcureModel.setSupplier(transferGoodsInfo.getSupplier()); // 3.当业务类型为部门分发时 添加部门分发记录和使用人 // 单据类型 1 采购2 调拨 3出库4部门分发 // 部门分发类型 if (businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue() && CategoryType.TYPE_A.getValue().equals(baseModelMap.get("type"))) { List 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.setUseCount(lWhProcureModelUser.getGoodsNum()); lWhProcureModelUser.setProcureModelUserRecordId(lWhProcureModelUserRecord.getId()); procureModelUserList.add(lWhProcureModelUser); } int procureInsertNum = lWhProcureModelUserService.insert(procureModelUserList); if (procureInsertNum != procureModelUserList.size()) { log.error("新增物品使用信息失败"); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } } modelList.add(lWhProcureModel); } } int flag2 = this.lWhProcureModelService.insert(modelList); if (flag2 != modelList.size()) { log.error("新增物品型号失败"); TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(); } return lWhFormTransferId; } /** * @Description 列表查询 * @Author 卢庆阳 * @Date 2023/10/30 */ public GenericPager queryFormTransferList(TransferQry param) { HashMap paramts = new HashMap<>(); StringBuilder sql = new StringBuilder(QUERY_FORM_TRANSFER_LIST); // 调拨单号 if (!StringUtils.isEmpty(param.getBusinessFormCode())) { 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 bgt.GOODS_NAME LIKE :goodsTemplateName "); paramts.put("goodsTemplateName", StringUtils.CHAR_PERCENT + param.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); } // 物品id if (param.getGoodsTemplateId() != null) { sql.append("AND bgt.id = :goodsTemplateId "); paramts.put("goodsTemplateId", param.getGoodsTemplateId()); } // 调拨机构 if (param.getOutAgencyId() != null) { sql.append(" and OUT_AGENCY_ID = :OUT_AGENCY_ID "); paramts.put("OUT_AGENCY_ID", param.getOutAgencyId()); } // 接收机构 if (param.getInAgencyId() != null) { sql.append(" and IN_AGENCY_ID = :IN_AGENCY_ID "); paramts.put("IN_AGENCY_ID", param.getInAgencyId()); } // 状态 if (param.getStates() != null) { sql.append(" and ft.states =:states "); paramts.put("states", param.getStates()); } // 创建人 if (!StringUtils.isEmpty(param.getOperatorName())) { sql.append(" and OPERATOR_NAME =:OPERATOR_NAME "); paramts.put("OPERATOR_NAME", param.getOperatorName()); } // 申请时间 if (param.getCreateTimeStart() != null) { sql.append(" and ft.CREATE_TIME >=:createTimeStart "); paramts.put("createTimeStart", param.getCreateTimeStart() * 1000000); } if (param.getCreateTimeEnd() != null) { sql.append(" and ft.CREATE_TIME <:createTimeEnd "); paramts.put("createTimeEnd", param.getCreateTimeEnd() * 1000000 + 240000); } // 接收时间 if (param.getStartTime() != null) { sql.append(" and IN_TIME >=:inTimeStart "); paramts.put("inTimeStart", param.getStartTime() * 1000000); } if (param.getEndTime() != null) { sql.append(" and IN_TIME <:inTimeEnd "); paramts.put("inTimeEnd", param.getEndTime() * 1000000 + 240000); } // 分发部门 if (param.getDepartmentId() != null) { sql.append("and ft.IN_WAREHOUSE_ID = :inWarehouseId "); paramts.put("inWarehouseId", param.getDepartmentId()); } sql.append(" ORDER BY ft.CREATE_TIME DESC"); GenericPager genericPager = selectSplit(sql.toString(), paramts, new LWhFormTransfer()); return genericPager; } /** * @Description 根据id查询详情 * @Author 卢庆阳 * @Date 2023/10/30 */ public LWHFromTransferExtendVO getById(Long id) { LWHFromTransferExtendVO result = new LWHFromTransferExtendVO(); // 1.查询调拨单 LWhFormTransfer lWhFormTransfer = this.get(new LWhFormTransfer(id)); if (lWhFormTransfer != null) { BeanUtils.copyProperties(lWhFormTransfer, result); result.setDepartmentName(lWhFormTransfer.getInWarehouseName()); } List goodsModelInfo = lWhProcureModelService.getGoodsModelListByBusinessId(result.getId(), null); if (CollectionUtils.isEmpty(goodsModelInfo)) { return result; } Map> collect = goodsModelInfo.stream().filter(Objects::nonNull).filter(dto -> dto.getBaseGoodsTemplateId() != null) .collect(Collectors.groupingBy(GoodModelInfoDTO::getBaseGoodsTemplateId)); List goodsTemplateInfoList = Lists.newArrayList(); for (Map.Entry> entry : collect.entrySet()) { List value = entry.getValue(); GoodModelInfoDTO goodModelInfoDTO = value.stream().findFirst().orElse(null); GoodsTemplateInfoVO goodsTemplateInfoVO = new GoodsTemplateInfoVO(); if (goodModelInfoDTO != null) { goodsTemplateInfoVO.setId(goodModelInfoDTO.getId()); goodsTemplateInfoVO.setCategoryName(goodModelInfoDTO.getCategoryName()); goodsTemplateInfoVO.setGoodsName(goodModelInfoDTO.getBaseGoodsName()); goodsTemplateInfoVO.setType(goodModelInfoDTO.getType()); } List goodsModelList = Lists.newArrayList(); for (GoodModelInfoDTO goodModelInfo : value) { GoodsModelVO goodsModelVO = new GoodsModelVO(); goodsModelVO.setId(goodModelInfo.getId()); goodsModelVO.setBaseGoodsModelsName(goodModelInfo.getBaseGoodsModelsName()); goodsModelVO.setUnit(goodModelInfo.getUnit()); goodsModelVO.setCounts(goodModelInfo.getCounts()); goodsModelVO.setTotalAmount(CurrencyUtil.convertFenToYuan(goodModelInfo.getTotalAmount())); // 部门分发需要查询使用信息 Integer businessType = result.getBusinessType(); String type = goodsTemplateInfoVO.getType(); if (businessType == TransferBusinessType.DEPARTMENT_PROCURE.getValue() && CategoryType.TYPE_A.getValue().equals(type)) { Long procureModelId = goodsModelVO.getId(); LWhProcureModelUserRecord lWhProcureModelUserRecord = new LWhProcureModelUserRecord(); lWhProcureModelUserRecord.setTransBusinessId(id); List select = lWhProcureModelUserRecordService .select(lWhProcureModelUserRecord, DESC().setField("DEAL_TIME")); LWhProcureModelUserRecord record = select.stream().findFirst().orElse(null); LWhProcureModelUser lWhProcureModelUser = new LWhProcureModelUser(); lWhProcureModelUser.setWhProcureModelId(procureModelId); lWhProcureModelUser.setProcureModelUserRecordId(record.getId()); List procureModelUserList = this.lWhProcureModelUserService.select(lWhProcureModelUser); if (!CollectionUtils.isEmpty(procureModelUserList)) { List 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); } } goodsModelList.add(goodsModelVO); } goodsTemplateInfoVO.setModels(goodsModelList); goodsTemplateInfoList.add(goodsTemplateInfoVO); } result.setFormTransferGoods(goodsTemplateInfoList); return result; } /** * @Description 导出调拨出库单 * @Author 卢庆阳 * @Date 2023/10/31 */ public List export(Long id, Integer type) { String sql = "SELECT\n" + "\tft.BUSINESS_FORM_CODE,\n" + "\tft.OPERATOR_NAME,\n" + "\tft.CREATE_TIME,\n" + "\tft.IN_AGENCY_NAME,\n" + "\tft.OUT_AGENCY_NAME,\n" + "\tGOODS_NAME templateName,\n" + "\tpm.BASE_GOODS_MODELS_NAME baseModelName,\n" + "\tpm.COUNTS num,\n" + "\tpm.total_amount,\n" + "\tft.BEIZ1 remark\n" + "FROM\n" + "\tl_wh_form_transfer ft\n" + "\tINNER JOIN l_wh_procure_model pm ON ft.ID = pm.BUSINESS_ID\n" + "\tINNER JOIN base_goods_models bgm ON bgm.ID = pm.BASE_GOODS_MODELS_ID\n" + "\tINNER JOIN base_goods_template bgt ON bgt.ID = bgm.GOODS_TEMPLATES_ID\n" + "WHERE\n" + "\tft.id = :id"; Map paramts = new HashMap<>(); paramts.put("id", id); List> select = this.select(sql, paramts, new MapperUtil()); List list = Lists.newArrayList(); select.forEach(item -> { TransferExcelTemplate templateExcelTransfer = MapUtils.convertMapToObj(item, TransferExcelTemplate.class); if (type == 1) { templateExcelTransfer.setTenantName(templateExcelTransfer.getOutAgencyName()); } else { templateExcelTransfer.setTenantName(templateExcelTransfer.getInAgencyName()); } templateExcelTransfer.setAmount(CurrencyUtil.convertFenToYuan(templateExcelTransfer.getTotalAmount())); list.add(templateExcelTransfer); }); return list; } /** * 撤销 * * @author 卢庆阳 * @date 2023/10/31 */ public int updateStatus(Long id) { LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(id); lWhFormTransfer.setStates(TransferStatesType.CANCEL.getValue()); return this.update(lWhFormTransfer); } public GenericPager> queryTransferInfo(TransferQry transferQry) { HashMap paramts = new HashMap<>(); 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 "); paramts.put("businessFormCode", StringUtils.CHAR_PERCENT + transferQry.getBusinessFormCode() + StringUtils.CHAR_PERCENT); } // 物品名称 if (StringUtils.isNotEmpty(transferQry.getGoodsTemplateName())) { sql.append("AND bgt.GOODS_NAME like:goodsName "); paramts.put("goodsName", StringUtils.CHAR_PERCENT + transferQry.getGoodsTemplateName() + StringUtils.CHAR_PERCENT); } // 物品id if (transferQry.getGoodsTemplateId() != null) { sql.append("AND bgt.id =:goodsTemplateId "); paramts.put("goodsTemplateId", transferQry.getGoodsTemplateId()); } // 规格型号 if (transferQry.getBaseGoodsModelsId() != null) { sql.append("AND bgm.id =:goodsModelId "); paramts.put("goodsModelId", transferQry.getBaseGoodsModelsId()); } // 调拨机构 if (transferQry.getOutAgencyId() != null) { sql.append("AND OUT_AGENCY_ID like :OUT_AGENCY_ID "); paramts.put("OUT_AGENCY_ID", transferQry.getOutAgencyId() + StringUtils.CHAR_PERCENT); } // 分发部门 if (transferQry.getDepartmentId() != null) { sql.append("and ft.IN_WAREHOUSE_ID = :inWarehouseId "); paramts.put("inWarehouseId", transferQry.getDepartmentId()); } // 创建人 if (StringUtils.isNotEmpty(transferQry.getOperatorName())) { sql.append("AND ft.OPERATOR_NAME =:OPERATOR_NAME "); paramts.put("OPERATOR_NAME", transferQry.getOperatorName()); } // 申请时间 if (transferQry.getStartTime() != null) { sql.append("AND ft.CREATE_TIME >=:createTimeStart "); paramts.put("createTimeStart", transferQry.getStartTime() * 1000000); } if (transferQry.getEndTime() != null) { sql.append("AND ft.CREATE_TIME <:createTimeEnd "); paramts.put("createTimeEnd", transferQry.getEndTime() * 1000000 + 240000); } sql.append("ORDER BY ft.CREATE_TIME DESC"); GenericPager> mapGenericPager = this.selectSplit(sql.toString(), paramts, transferQry.getPageNum(), transferQry.getPageSize(), new MapperUtil()); return mapGenericPager; } public GenericPager> queryFormTransferDetailList(TransferQry param) { HashMap 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 ft.BUSINESS_TYPE =0 "); 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.getGoodsTemplateId() != null) { sql.append("AND bgt.id = :goodsTemplateId "); params.put("goodsTemplateId", param.getGoodsTemplateId()); } 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() + StringUtils.CHAR_PERCENT); } if (param.getInAgencyId() != null) { sql.append("AND ft.IN_AGENCY_ID like :inAgencyId "); params.put("inAgencyId", param.getInAgencyId() + StringUtils.CHAR_PERCENT); } 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> mapGenericPager = this.selectSplit(sql.toString(), params, param.getPageNum(), param.getPageSize(), new MapperUtil()); return mapGenericPager; } public List> 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 param = new HashMap<>(); List> select = this.select(sql, param, new MapperUtil()); select.forEach(item -> { }); return select; } @Override public LWhFormTransfer selectById(Long id) { LWhFormTransfer lWhFormTransfer = new LWhFormTransfer(); lWhFormTransfer.setId(id); return this.get(lWhFormTransfer); } }