package com.consum.base.service.impl; import com.consum.base.Constants; import com.consum.base.core.CodeGeneratorService; import com.consum.base.core.utils.IdUtil; import com.consum.base.pojo.BaseWarehouseParam; import com.consum.base.service.BaseWarehouseService; import com.consum.base.service.FinSysTenantDepartmentService; import com.consum.base.service.FinSysTenantServiceImpl; import com.consum.base.service.SDictDataServiceImpl; import com.consum.model.po.BaseWarehouse; import com.consum.model.po.FinSysTenant; import com.consum.model.po.FinSysTenantDepartment; import com.consum.model.po.SDictData; import com.walker.db.page.GenericPager; import com.walker.infrastructure.utils.CollectionUtils; import com.walker.infrastructure.utils.StringUtils; import com.walker.jdbc.service.BaseServiceImpl; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; /** * @Description 仓库管理 * @Author 卢庆阳 * @Date 2023/10/26 */ @Service public class BaseWarehouseServiceImpl extends BaseServiceImpl implements BaseWarehouseService { @Autowired private CodeGeneratorService codeGeneratorService; @Autowired private FinSysTenantServiceImpl finSysTenantService; @Autowired private FinSysTenantDepartmentService departmentService; @Autowired private SDictDataServiceImpl sDictDataService; /** * @Description 新增 * @Author 卢庆阳 * @Date 2023/10/26 */ @Override public int add(BaseWarehouseParam param) { BaseWarehouse baseWarehouse = new BaseWarehouse(); BeanUtils.copyProperties(param, baseWarehouse); baseWarehouse.setId(IdUtil.generateId()); baseWarehouse.setWarehouseType(Constants.WAREHOUSE_TYPE_TENANT); baseWarehouse.setWarehouseCode(codeGeneratorService.createWarehouseCode()); //根据机构id查询机构 FinSysTenant finSysTenant = finSysTenantService.get(new FinSysTenant(baseWarehouse.getAgencyId())); if (finSysTenant != null) { baseWarehouse.setParentAgencyId(finSysTenant.getParentId()); baseWarehouse.setAgencyName(finSysTenant.getName()); } //根据CLASSIFICATION_CODE查询CLASSIFICATION_NAME SDictData dictData = this.sDictDataService.get(new SDictData(Long.valueOf(param.getClassificationCode()))); if (dictData != null) { baseWarehouse.setClassificationName(dictData.getDict_label()); } baseWarehouse.setIsDefault(Constants.IS_DEFAULT_YES); return this.insert(baseWarehouse); } /** * @Description 仓库列表查询 * @Author 卢庆阳 * @Date 2023/10/26 */ @Override public GenericPager queryList(BaseWarehouseParam param) { StringBuilder sql = new StringBuilder("SELECT * FROM base_warehouse WHERE 1 = 1 "); HashMap paramts = new HashMap<>(); //仓库名称 if (!StringUtils.isEmpty(param.getWarehouseName())) { sql.append(" and WAREHOUSE_NAME like:WAREHOUSE_NAME "); paramts.put("WAREHOUSE_NAME", StringUtils.CHAR_PERCENT + param.getWarehouseName() + StringUtils.CHAR_PERCENT); } //类型 if (!StringUtils.isEmpty(param.getClassificationCode())) { sql.append(" and CLASSIFICATION_CODE =:CLASSIFICATION_CODE "); paramts.put("CLASSIFICATION_CODE", param.getClassificationCode()); } //机构id if (param.getAgencyId() != null) { sql.append(" and AGENCY_ID =:AGENCY_ID "); paramts.put("AGENCY_ID", param.getAgencyId()); } //状态 if (param.getStates() != null) { sql.append(" and states =:states "); paramts.put("states", param.getStates()); } else { sql.append(" and states !=3 "); } sql.append(" ORDER BY states "); return selectSplit(sql.toString(), paramts, new BaseWarehouse()); } /** * @Description 编辑(修改状态) * @Author 卢庆阳 * @Date 2023/10/26 */ @Override public int updateBaseWarehouse(BaseWarehouse baseWarehouse) { SDictData SDictData = this.sDictDataService.get(new SDictData(Long.valueOf(baseWarehouse.getClassificationCode()))); if (SDictData != null) { baseWarehouse.setClassificationName(SDictData.getDict_label()); } //根据机构id查询机构 FinSysTenant finSysTenant = finSysTenantService.get(new FinSysTenant(baseWarehouse.getAgencyId())); if (finSysTenant != null) { baseWarehouse.setParentAgencyId(finSysTenant.getParentId()); baseWarehouse.setAgencyName(finSysTenant.getName()); } return this.update(baseWarehouse); } /** * 根据id查询仓库详情 * * @author 卢庆阳 * @Date 2023/10/26 */ @Override public BaseWarehouse getById(Long id) { return this.get(new BaseWarehouse(id)); } /** * @Description 根据id删除仓库 * @Author 卢庆阳 * @Date 2023/10/26 */ @Override public int updateById(BaseWarehouse baseWarehouse) { baseWarehouse.setStates(Constants.STATES_DELETED); return this.update(baseWarehouse); } /** * @Description 根据仓库id获取机构用户信息 * @Author 卢庆阳 * @Date 2023/10/26 */ @Override public void queryUserList(Long baseWarehouseId) { //1.根据仓库id查询仓库 BaseWarehouse baseWarehouse = this.getById(baseWarehouseId); if (baseWarehouse != null) { Long agencyId = baseWarehouse.getAgencyId(); String agencyName = baseWarehouse.getAgencyName(); //2.根据机构id查询部门 List list = this.departmentService.getByTenantId(agencyId); //获取部门id Set deptIds = list.stream().map(dept -> dept.getId()).collect(Collectors.toSet()); //3.根据部门id查询用户 //this.userService.getByDeptIds(); } } /** * @return * @Description 根据机构id查询机构仓库 * @Author 卢庆阳 * @Date 2023/10/27 */ @Override public List getByAgencyId(Long agencyId, Short isDefault, Short states) { StringBuilder sql = new StringBuilder("SELECT * FROM base_warehouse WHERE 1 = 1 "); HashMap paramts = new HashMap<>(); //机构id if (agencyId != null) { sql.append(" and AGENCY_ID =:AGENCY_ID "); paramts.put("AGENCY_ID", agencyId); } // 是否为默认仓库 if (isDefault != null) { sql.append(" and IS_DEFAULT =:isDefault "); paramts.put("isDefault", isDefault); } // 状态 if (states != null) { sql.append(" and states =:states "); paramts.put("states", states); } return select(sql.toString(), paramts, new BaseWarehouse()); } /** * 根据机构id查询默认仓库 * * @param agencyId * @return */ @Override public BaseWarehouse getDefaultWarehouseByAgencyId(Long agencyId) { StringBuilder sql = new StringBuilder("SELECT * FROM base_warehouse WHERE IS_DEFAULT = 1 and AGENCY_ID =:agencyId "); Map param = new HashMap<>(); param.put("agencyId", agencyId); List select = select(sql.toString(), param, new BaseWarehouse()); Optional optional = select.stream().findFirst(); if (optional.isPresent()) { return optional.get(); } return null; } @Override public BaseWarehouse getWarehouseByAgencyId(Long agencyId, String warehouseName) { StringBuilder sql = new StringBuilder("SELECT * FROM base_warehouse WHERE STATES= 1"); Map param = new HashMap<>(); if (agencyId != null) { sql.append(" and AGENCY_ID =:agencyId "); param.put("agencyId", agencyId); } if (StringUtils.isNotEmpty(warehouseName)) { sql.append(" and WAREHOUSE_NAME =:warehouseName "); param.put("warehouseName", warehouseName); } sql.append(" limit 1"); List select = select(sql.toString(), param, new BaseWarehouse()); if (CollectionUtils.isEmpty(select)) { return null; } return select.get(0); } }