package com.consum.base.service.impl; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; 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.FinSysTenantService; import com.consum.base.service.SDictDataServiceImpl; import com.consum.model.po.BaseWarehouse; import com.consum.model.po.FinSysTenant; import com.consum.model.po.FinSysTenantUser; 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; /** * @Description 仓库管理 * @Author 卢庆阳 * @Date 2023/10/26 */ @Service public class BaseWarehouseServiceImpl extends BaseServiceImpl implements BaseWarehouseService { @Autowired private CodeGeneratorService codeGeneratorService; @Autowired private FinSysTenantService finSysTenantService; @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, FinSysTenantUser currentUser) { 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) { Integer lv = currentUser.getLv(); if (lv != 1) { sql.append(" and AGENCY_ID =:AGENCY_ID "); paramts.put("AGENCY_ID", param.getAgencyId()); } else { sql.append(" and AGENCY_ID like :AGENCY_ID "); paramts.put("AGENCY_ID", param.getAgencyId() + StringUtils.CHAR_PERCENT); } } // 状态 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); } /** * @return * @Description 根据机构id查询机构仓库 * @Author 卢庆阳 * @Date 2023/10/27 */ @Override public List getBaseWareHouseList(Long agencyId, 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 (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()); BaseWarehouse baseWarehouse = select.stream().findFirst().orElse(null); return baseWarehouse; } @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); } }