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<BaseWarehouse> queryList(BaseWarehouseParam param, FinSysTenantUser currentUser) {
|
StringBuilder sql = new StringBuilder("SELECT * FROM base_warehouse WHERE 1 = 1 ");
|
HashMap<String, Object> 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<BaseWarehouse> getBaseWareHouseList(Long agencyId, Short states) {
|
StringBuilder sql = new StringBuilder("SELECT * FROM base_warehouse WHERE 1 = 1 ");
|
HashMap<String, Object> 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<String, Object> param = new HashMap<>();
|
param.put("agencyId", agencyId);
|
List<BaseWarehouse> 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<String, Object> 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<BaseWarehouse> select = select(sql.toString(), param, new BaseWarehouse());
|
if (CollectionUtils.isEmpty(select)) {
|
return null;
|
}
|
return select.get(0);
|
}
|
}
|