futian.liu
2023-12-12 4695b1501f8dd6850730aeb4131f88fef0e14c9f
物品导入
7个文件已修改
362 ■■■■ 已修改文件
admin-web/src/views/foundation/material/index.vue 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java 73 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/BaseGoodsTemplateParam.java 71 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/pojo/excel/ImportGoodsInfoTemplate.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/BaseCategoryService.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
consum-base/src/main/java/com/consum/base/service/impl/BaseGoodsTemplateServiceImpl.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin-web/src/views/foundation/material/index.vue
@@ -110,7 +110,7 @@
          dialogShow: false,
          fileSettings: {
              data: {},
              uploadUrl: getBaseUrl()+"/pc/fin/sys/tenant/import", // 上传地址
              uploadUrl: getBaseUrl()+"/pc/base/goods/template/import", // 上传地址
              accept: '.xls', // 格式
              type: 'text', // 回显形式
              loading: false // 导入效果
consum-base/src/main/java/com/consum/base/controller/BaseGoodsTemplateController.java
@@ -1,9 +1,11 @@
package com.consum.base.controller;
import java.io.IOException;
import java.util.ArrayList;
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.factory.annotation.Autowired;
@@ -26,10 +28,12 @@
import com.consum.base.pojo.BaseGoodsTemplateParam;
import com.consum.base.pojo.excel.ImportGoodsInfoTemplate;
import com.consum.base.pojo.response.GoodsTemplateVO;
import com.consum.base.service.BaseCategoryService;
import com.consum.base.service.BaseGoodsTemplateService;
import com.consum.base.service.BaseWarehouseService;
import com.consum.base.service.FinSysTenantService;
import com.consum.base.service.LWhGoodsService;
import com.consum.model.po.BaseCategory;
import com.consum.model.po.BaseGoodsModels;
import com.consum.model.po.BaseGoodsTemplate;
import com.consum.model.po.BaseWarehouse;
@@ -38,7 +42,6 @@
import com.consum.model.po.SDictData;
import com.consum.model.vo.BaseGoodsTemplateVo;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.web.ResponseValue;
@@ -66,6 +69,9 @@
    @Autowired
    private FinSysTenantService finSysTenantService;
    @Autowired
    private BaseCategoryService baseCategoryService;
    /**
     * @Description 新增物品模板
@@ -298,48 +304,47 @@
                    String categoryOne = data.getCategoryOne();
                    String categoryTwo = data.getCategoryTwo();
                    String categoryThree = data.getCategoryThree();
                    String goodName = data.getGoodName();
                    String goodModel = data.getGoodModel();
                    String goodsName = data.getGoodsName();
                    String goodModelName = data.getGoodModelName();
                    String unit = data.getUnit();
                    String type = data.getType();
                    String agencyName = data.getAgencyName();
                    list.stream().forEach(item -> {
                        if (!item.getCategoryId().equals(categoryThree)) {
                            BaseGoodsTemplateParam baseGoodsTemplate = new BaseGoodsTemplateParam();
                            baseGoodsTemplate.setCategoryId(Long.valueOf(categoryThree));
                            baseGoodsTemplate.setGoodsName(goodName);
                            baseGoodsTemplate.setStates(1);
                            FinSysTenant finSysTenant = finSysTenantService.selectByName(agencyName);
                            baseGoodsTemplate.setAgencyId(finSysTenant.getId());
                    BaseCategory baseCategory = baseCategoryService.getByCategoryByName(categoryThree);
                    Long categoryId = baseCategory.getId();
                            List<BaseGoodsModels> models = Lists.newArrayList();
                            BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
                            baseGoodsModels.setModelName(goodModel);
                            baseGoodsModels.setStates(1);
                            baseGoodsModels.setGoodsTemplatesId(item.getId());
                            baseGoodsModels.setUnit(unit);
                            baseGoodsModels.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
                            models.add(baseGoodsModels);
                            baseGoodsTemplate.setModels(models);
                        } else {
                            List<BaseGoodsModels> models = item.getModels();
                            BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
                            baseGoodsModels.setModelName(goodModel);
                            baseGoodsModels.setStates(1);
                            baseGoodsModels.setGoodsTemplatesId(item.getId());
                            baseGoodsModels.setUnit(unit);
                            baseGoodsModels.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
                            models.add(baseGoodsModels);
                        }
                    });
                    Optional<BaseGoodsTemplateParam> optional =
                        list.stream().filter(item -> item.getCategoryId().equals(categoryId)).findFirst();
                    if (optional.isPresent()) {
                        BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
                        baseGoodsModels.setModelName(goodModelName);
                        baseGoodsModels.setUnit(unit);
                        optional.get().getModels().add(baseGoodsModels);
                    } else {
                        BaseGoodsTemplateParam baseGoodsTemplate = new BaseGoodsTemplateParam();
                        baseGoodsTemplate.setCategoryId(categoryId);
                        baseGoodsTemplate.setGoodsName(goodsName);
                        baseGoodsTemplate.setStates(1);
                        FinSysTenant finSysTenant = finSysTenantService.selectByName(agencyName);
                        baseGoodsTemplate.setAgencyId(finSysTenant.getId());
                        baseGoodsTemplate.setAgencyName(agencyName);
                        List<BaseGoodsModels> models = new ArrayList<>();
                        BaseGoodsModels baseGoodsModels = new BaseGoodsModels();
                        baseGoodsModels.setModelName(goodModelName);
                        baseGoodsModels.setUnit(unit);
                        models.add(baseGoodsModels);
                        baseGoodsTemplate.setModels(models);
                        list.add(baseGoodsTemplate);
                    }
                }
                @Override
                public void doAfterAllAnalysed(AnalysisContext analysisContext) {
                    for (BaseGoodsTemplateParam a : list) {
                        baseGoodsTemplateService.add(a, sysInfo);
                    for (BaseGoodsTemplateParam baseGoodsTemplate : list) {
                        baseGoodsTemplateService.add(baseGoodsTemplate, null);
                    }
                }
@@ -350,6 +355,8 @@
                        Integer row = excelDataConvertException.getRowIndex() + 1;
                        Integer column = excelDataConvertException.getColumnIndex() + 1;
                        throw new RuntimeException("第" + row + "行,第" + column + "列解析异常,请正确填写");
                    } else {
                        throw new RuntimeException(exception.getMessage());
                    }
                }
            }).sheet(0).doRead();
consum-base/src/main/java/com/consum/base/pojo/BaseGoodsTemplateParam.java
@@ -1,10 +1,13 @@
package com.consum.base.pojo;
import java.util.List;
import com.consum.model.po.BaseGoodsModels;
import com.walker.web.param.ParamRequest;
import java.util.List;
import lombok.Data;
@Data
public class BaseGoodsTemplateParam extends ParamRequest {
    private Long id;
    /**
@@ -36,67 +39,9 @@
     */
    private Long agencyId;
    public Long getId() {
        return id;
    }
    /**
     * 机构名称
     */
    private String agencyName;
    public void setId(Long id) {
        this.id = id;
    }
    public String getGoodsCode() {
        return goodsCode;
    }
    public void setGoodsCode(String goodsCode) {
        this.goodsCode = goodsCode;
    }
    public Long getCategoryId() {
        return categoryId;
    }
    public void setCategoryId(Long categoryId) {
        this.categoryId = categoryId;
    }
    public String getGoodsName() {
        return goodsName;
    }
    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }
    public List<BaseGoodsModels> getModels() {
        return models;
    }
    public void setModels(List<BaseGoodsModels> models) {
        this.models = models;
    }
    public Integer getStates() {
        return states;
    }
    public void setStates(Integer states) {
        this.states = states;
    }
    public String getClassification() {
        return classification;
    }
    public void setClassification(String classification) {
        this.classification = classification;
    }
    public Long getAgencyId() {
        return agencyId;
    }
    public void setAgencyId(Long agencyId) {
        this.agencyId = agencyId;
    }
}
consum-base/src/main/java/com/consum/base/pojo/excel/ImportGoodsInfoTemplate.java
@@ -20,9 +20,9 @@
    @ExcelProperty("三级分类")
    private String categoryThree;
    @ExcelProperty("物品名称")
    private String goodName;
    private String goodsName;
    @ExcelProperty("规格型号")
    private String goodModel;
    private String goodModelName;
    @ExcelProperty("单位")
    private String unit;
    @ExcelProperty("采购类型")
consum-base/src/main/java/com/consum/base/service/BaseCategoryService.java
@@ -1,12 +1,13 @@
package com.consum.base.service;
import java.util.List;
import com.consum.base.pojo.BaseCategoryParam;
import com.consum.base.pojo.ProjectTreeResult;
import com.consum.model.po.BaseCategory;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.jdbc.service.BaseService;
import java.util.List;
public interface BaseCategoryService extends BaseService {
@@ -27,4 +28,12 @@
    List<ProjectTreeResult> tree();
    List<BaseCategory> queryForLv3Tree();
    /**
     * 根据名称查询分类
     *
     * @param categoryName
     * @return
     */
    BaseCategory getByCategoryByName(String categoryName);
}
consum-base/src/main/java/com/consum/base/service/impl/BaseCategoryServiceImpl.java
@@ -1,5 +1,13 @@
package com.consum.base.service.impl;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import com.consum.base.Constants;
import com.consum.base.core.utils.IdUtil;
import com.consum.base.pojo.BaseCategoryParam;
@@ -11,13 +19,6 @@
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.stream.Collectors;
/**
 * @Description 物品分类
@@ -27,7 +28,8 @@
@Service
public class BaseCategoryServiceImpl extends BaseServiceImpl implements BaseCategoryService {
    private static final String QUERY_TREE_ALL = "select * from base_category where states = 1  order by FATHER_CATEGORY_ID, LEVELS ASC";
    private static final String QUERY_TREE_ALL =
        "select * from base_category where states = 1  order by FATHER_CATEGORY_ID, LEVELS ASC";
    /**
     * @Description 新增分类
@@ -38,24 +40,24 @@
        BaseCategory baseCategory = new BaseCategory();
        BeanUtils.copyProperties(param, baseCategory);
        baseCategory.setId(IdUtil.generateId());
        //层级
        // 层级
        if (baseCategory.getFatherCategoryId() == null) {
            //一级分类
            // 一级分类
            baseCategory.setFatherCategoryId(0L);
            baseCategory.setLevels(Constants.LEVELS_ONE);
        } else {
            //根据父类id查询上级分类信息
            // 根据父类id查询上级分类信息
            BaseCategory category = this.get(new BaseCategory(baseCategory.getFatherCategoryId()));
            if (category.getFatherCategoryId() == 0L) {  //二级分类
            if (category.getFatherCategoryId() == 0L) { // 二级分类
                baseCategory.setLevels(Constants.LEVELS_TWO);
            } else {  //三级分类
            } else { // 三级分类
                baseCategory.setLevels(Constants.LEVELS_THREE);
            }
        }
        //创建人id和创建人姓名
        // 创建人id和创建人姓名
        baseCategory.setCreateUserId(currentUser.getId());
        baseCategory.setCreateUserName(currentUser.getUser_name());
        //创建时间
        // 创建时间
        baseCategory.setCreateTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        return this.insert(baseCategory);
@@ -72,10 +74,10 @@
        StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE 1 = 1 ");
        HashMap<String, Object> paramts = new HashMap<>();
        //分类名称
        // 分类名称
        sql.append(" and category_name =:category_name ");
        paramts.put("category_name", categoryName);
        //父类id
        // 父类id
        sql.append(" and father_category_id =:father_category_id ");
        paramts.put("father_category_id", fatherCategoryId);
@@ -90,24 +92,24 @@
    public GenericPager<BaseCategory> queryBaseCategoryList(BaseCategoryParam param) {
        StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE 1 = 1 ");
        HashMap<String, Object> paramts = new HashMap<>();
        //分类名称
        // 分类名称
        if (param.getFatherCategoryId() != null) {
            sql.append("and father_category_id =:fatherCategoryId ");
            paramts.put("fatherCategoryId", param.getFatherCategoryId());
        } else {
            sql.append("and levels =1 ");
        }
        //分类名称
        // 分类名称
        if (!StringUtils.isEmpty(param.getCategoryName())) {
            sql.append(" and category_name like:category_name ");
            paramts.put("category_name", StringUtils.CHAR_PERCENT + param.getCategoryName() + StringUtils.CHAR_PERCENT);
        }
        //类别
        // 类别
        if (!StringUtils.isEmpty(param.getClassification())) {
            sql.append(" and classification =:classification ");
            paramts.put("classification", param.getClassification());
        }
        //状态
        // 状态
        if (param.getStates() != null) {
            sql.append(" and states =:states ");
            paramts.put("states", param.getStates());
@@ -144,9 +146,9 @@
     */
    public int updateById(BaseCategory baseCategory, S_user_core currentUser) {
        baseCategory.setStates(Constants.STATES_DELETED);
        //删除时间
        // 删除时间
        baseCategory.setDTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        //删除人id和删除人姓名
        // 删除人id和删除人姓名
        baseCategory.setDUserId(currentUser.getId());
        baseCategory.setDUserName(currentUser.getUser_name());
        return this.update(baseCategory);
@@ -169,16 +171,16 @@
     */
    public List<BaseCategory> queryForTree() {
        // 展示全部节点
        return this.select(QUERY_TREE_ALL, new Object[]{}, new BaseCategory());
        return this.select(QUERY_TREE_ALL, new Object[] {}, new BaseCategory());
    }
    public List<ProjectTreeResult> tree() {
        BaseCategory categoryParam = new BaseCategory();
        categoryParam.setStates(1);
        //查出所有分类
        // 查出所有分类
        List<BaseCategory> all = select(categoryParam);
        //组装成父子树形结构
        //1级分类
        // 组装成父子树形结构
        // 1级分类
        List<ProjectTreeResult> menus = all.stream().filter(entity -> entity.getLevels() == 1).map(entity -> {
            ProjectTreeResult projectTreeResult = new ProjectTreeResult(entity);
            if (getChildren(projectTreeResult, all).isEmpty()) {
@@ -187,7 +189,8 @@
                projectTreeResult.setChildren(getChildren(projectTreeResult, all));
            }
            return projectTreeResult;
        }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort()))).collect(Collectors.toList());
        }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort())))
            .collect(Collectors.toList());
        return menus;
    }
@@ -196,20 +199,21 @@
     * 递归查找所有菜单的子菜单
     */
    private List<ProjectTreeResult> getChildren(ProjectTreeResult root, List<BaseCategory> all) {
        List<ProjectTreeResult> children = all.stream().filter(entity -> entity.getFatherCategoryId().equals(root.getId())).map(entity -> {
        List<ProjectTreeResult> children =
            all.stream().filter(entity -> entity.getFatherCategoryId().equals(root.getId())).map(entity -> {
            ProjectTreeResult projectTreeResult = new ProjectTreeResult(entity);
            //通过递归找到子分类
            if (getChildren(projectTreeResult, all).isEmpty()) {
                projectTreeResult.setChildren(null);
            } else {
                projectTreeResult.setChildren(getChildren(projectTreeResult, all));
            }
            return projectTreeResult;
        }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort()))).collect(Collectors.toList());
                ProjectTreeResult projectTreeResult = new ProjectTreeResult(entity);
                // 通过递归找到子分类
                if (getChildren(projectTreeResult, all).isEmpty()) {
                    projectTreeResult.setChildren(null);
                } else {
                    projectTreeResult.setChildren(getChildren(projectTreeResult, all));
                }
                return projectTreeResult;
            }).sorted(Comparator.comparingInt(menu -> (menu.getSort() == null ? 0 : menu.getSort())))
                .collect(Collectors.toList());
        return children;
    }
    /**
     * @return
@@ -218,7 +222,19 @@
     * @Date 2023/10/30
     */
    public List<BaseCategory> queryForLv3Tree() {
        StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE states = 1 and levels = 3 order by ORDER_NUMBER,CREATE_TIME desc");
        return this.select(sql.toString(), new Object[]{}, new BaseCategory());
        StringBuilder sql = new StringBuilder(
            "SELECT * FROM base_category WHERE states = 1 and levels = 3 order by ORDER_NUMBER,CREATE_TIME desc");
        return this.select(sql.toString(), new Object[] {}, new BaseCategory());
    }
    @Override
    public BaseCategory getByCategoryByName(String categoryName) {
        StringBuilder sql = new StringBuilder("SELECT * FROM base_category WHERE 1 = 1 ");
        HashMap<String, Object> paramts = new HashMap<>();
        // 分类名称
        sql.append(" and category_name =:category_name ");
        paramts.put("category_name", categoryName);
        BaseCategory baseCategory = this.get(sql.toString(), paramts, new BaseCategory());
        return baseCategory;
    }
}
consum-base/src/main/java/com/consum/base/service/impl/BaseGoodsTemplateServiceImpl.java
@@ -1,6 +1,14 @@
package com.consum.base.service.impl;
import cn.hutool.core.convert.Convert;
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 org.springframework.util.CollectionUtils;
import com.consum.base.Constants;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.core.utils.IdUtil;
@@ -8,21 +16,19 @@
import com.consum.base.service.BaseCategoryService;
import com.consum.base.service.BaseGoodsModelsService;
import com.consum.base.service.BaseGoodsTemplateService;
import com.consum.model.po.*;
import com.consum.model.po.BaseCategory;
import com.consum.model.po.BaseGoodsModels;
import com.consum.model.po.BaseGoodsTemplate;
import com.consum.model.po.FinSysTenantUser;
import com.consum.model.po.SDictData;
import com.consum.model.vo.BaseGoodsTemplateVo;
import com.iplatform.model.po.S_user_core;
import com.walker.db.page.GenericPager;
import com.walker.infrastructure.utils.DateUtils;
import com.walker.infrastructure.utils.StringUtils;
import com.walker.jdbc.service.BaseServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import cn.hutool.core.convert.Convert;
/**
 * @Description 物品模板
@@ -50,7 +56,7 @@
        StringBuilder sql = new StringBuilder("SELECT * FROM base_goods_template WHERE 1 = 1 ");
        HashMap<String, Object> paramts = new HashMap<>();
        //分类id
        // 分类id
        if (categoryId != null) {
            sql.append(" and category_id =:category_id ");
            paramts.put("category_id", categoryId);
@@ -67,35 +73,38 @@
     */
    @Override
    public int add(BaseGoodsTemplateParam param, FinSysTenantUser currentUser) {
        //1.新增物品模板
        // 1.新增物品模板
        BaseGoodsTemplate baseGoodsTemplate = new BaseGoodsTemplate();
        BeanUtils.copyProperties(param, baseGoodsTemplate);
        long goodsTemplatesId = IdUtil.generateId();
        baseGoodsTemplate.setId(goodsTemplatesId);
        //根据分类id查询分类
        // 根据分类id查询分类
        BaseCategory baseCategory = this.baseCategoryService.get(new BaseCategory(param.getCategoryId()));
        if (baseCategory != null) {
            baseGoodsTemplate.setCategoryName(baseCategory.getCategoryName());
            String classification = baseCategory.getClassification();
            //物品编码
            String goodsCode = codeGeneratorService.createGoodsTemplateCode(Convert.toStr(classification,"C"));
            // 物品编码
            String goodsCode = codeGeneratorService.createGoodsTemplateCode(Convert.toStr(classification, "C"));
            baseGoodsTemplate.setGoodsCode(goodsCode);
            //类别
            // 类别
            baseGoodsTemplate.setClassification(classification);
        }
        //TODO 一级二级三级机构编号
        //当前机构的父级机构编号
        //机构层级
        //机构编号
        baseGoodsTemplate.setAgencyId(Long.valueOf(currentUser.getTenantId()));
        //机构名称
        baseGoodsTemplate.setAgencyName(currentUser.getTenantName());
        //创建时间
        // TODO 一级二级三级机构编号
        // 当前机构的父级机构编号
        // 机构层级
        if (currentUser != null) {
            // 机构编号
            baseGoodsTemplate.setAgencyId(Long.valueOf(currentUser.getTenantId()));
            // 机构名称
            baseGoodsTemplate.setAgencyName(currentUser.getTenantName());
        }
        // 创建时间
        long createTime = DateUtils.getDateTimeNumber(System.currentTimeMillis());
        baseGoodsTemplate.setCreateDate(createTime);
        int flag1 = this.insert(baseGoodsTemplate);
        //2.新增规格型号
        // 2.新增规格型号
        List<BaseGoodsModels> models = param.getModels();
        int flag2 = 0;
        if (!CollectionUtils.isEmpty(models)) {
@@ -125,32 +134,32 @@
        StringBuilder sql = new StringBuilder("SELECT * FROM base_goods_template WHERE 1 = 1 ");
        HashMap<String, Object> paramts = new HashMap<>();
        //物品名称
        // 物品名称
        if (!StringUtils.isEmpty(param.getGoodsName())) {
            sql.append(" and goods_name like:goods_name ");
            paramts.put("goods_name", StringUtils.CHAR_PERCENT + param.getGoodsName() + StringUtils.CHAR_PERCENT);
        }
        //物品编号
        // 物品编号
        if (!StringUtils.isEmpty(param.getGoodsCode())) {
            sql.append(" and goods_code like:goods_code ");
            paramts.put("goods_code", StringUtils.CHAR_PERCENT + param.getGoodsCode() + StringUtils.CHAR_PERCENT);
        }
        //分类id
        // 分类id
        if (param.getCategoryId() != null) {
            sql.append(" and category_id =:category_id ");
            paramts.put("category_id", param.getCategoryId());
        }
        //类别
        // 类别
        if (!StringUtils.isEmpty(param.getClassification())) {
            sql.append(" and classification =:classification ");
            paramts.put("classification", param.getClassification());
        }
        //所属机构
        // 所属机构
        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());
@@ -168,17 +177,17 @@
     */
    @Override
    public BaseGoodsTemplateVo getById(Long id) {
        //1.根据物品id查询物品模板
        // 1.根据物品id查询物品模板
        BaseGoodsTemplate goodsTemplate = this.get(new BaseGoodsTemplate(id));
        //2.根据物品id查询规格型号
        // 2.根据物品id查询规格型号
        StringBuilder sql = new StringBuilder("SELECT * FROM base_goods_models WHERE 1 = 1 ");
        HashMap<String, Object> paramts = new HashMap<>();
        //所属物品模版编号
        // 所属物品模版编号
        sql.append(" and goods_templates_id =:goods_templates_id ");
        paramts.put("goods_templates_id", id);
        List<BaseGoodsModels> modelsList = this.select(sql.toString(), paramts, new BaseGoodsModels());
        //3.封装
        // 3.封装
        BaseGoodsTemplateVo vo = new BaseGoodsTemplateVo();
        if (goodsTemplate != null) {
            BeanUtils.copyProperties(goodsTemplate, vo);
@@ -196,7 +205,7 @@
     */
    @Override
    public int updateBaseGoodsTemplate(BaseGoodsTemplateParam param) {
        //1.修改物品模板
        // 1.修改物品模板
        BaseGoodsTemplate baseGoodsTemplate = new BaseGoodsTemplate();
        BeanUtils.copyProperties(param, baseGoodsTemplate);
        BaseCategory baseCategory = this.baseCategoryService.get(new BaseCategory(param.getCategoryId()));
@@ -204,7 +213,7 @@
            baseGoodsTemplate.setCategoryName(baseCategory.getCategoryName());
        }
        int flag1 = this.update(baseGoodsTemplate);
        //2.修改规格型号的单位
        // 2.修改规格型号的单位
        // TODO id 物品型号修改待整理
        List<BaseGoodsModels> modelsList = param.getModels();
        for (BaseGoodsModels baseGoodsModel : modelsList) {
@@ -230,10 +239,10 @@
        StringBuilder sql = new StringBuilder("SELECT * FROM base_goods_template WHERE 1 = 1 ");
        HashMap<String, Object> paramts = new HashMap<>();
        //物品名称
        // 物品名称
        sql.append(" and goods_name =:goods_name ");
        paramts.put("goods_name", goodsName);
        //分类id
        // 分类id
        sql.append(" and category_id =:category_id ");
        paramts.put("category_id", categoryId);
@@ -247,7 +256,9 @@
     * @return
     */
    private static String QUERY_GOODSINFO_BY_MODELID = "SELECT model.MODEL_NAME modelName,model.UNIT,temp.id goodsId, temp.GOODS_CODE goodsCode,temp.GOODS_NAME goodsName,temp.CLASSIFICATION classification,temp.CATEGORY_ID categoryId FROM BASE_GOODS_MODELS model LEFT JOIN BASE_GOODS_TEMPLATE temp ON model.GOODS_TEMPLATES_ID=temp.id WHERE 1=1 ";
    private static String QUERY_GOODSINFO_BY_MODELID =
        "SELECT model.MODEL_NAME modelName,model.UNIT,temp.id goodsId, temp.GOODS_CODE goodsCode,temp.GOODS_NAME goodsName,temp.CLASSIFICATION classification,temp.CATEGORY_ID categoryId FROM BASE_GOODS_MODELS model LEFT JOIN BASE_GOODS_TEMPLATE temp ON model.GOODS_TEMPLATES_ID=temp.id WHERE 1=1 ";
    @Override
    public Map<String, Object> queryGoodsInfoByModelId(Long modelId) {
        StringBuilder sqlStr = new StringBuilder(QUERY_GOODSINFO_BY_MODELID);
@@ -282,9 +293,9 @@
    @Override
    public int updateById(BaseGoodsTemplate goodsTemplate, S_user_core currentUser) {
        goodsTemplate.setStates(Constants.STATES_DELETED);
        //删除时间
        // 删除时间
        goodsTemplate.setDTime(DateUtils.getDateTimeNumber(System.currentTimeMillis()));
        //删除人id和删除人姓名
        // 删除人id和删除人姓名
        goodsTemplate.setDUserId(currentUser.getId());
        goodsTemplate.setDUserName(currentUser.getUser_name());
        return this.update(goodsTemplate);
@@ -298,8 +309,9 @@
     */
    @Override
    public List<SDictData> queryClassificationCode() {
        StringBuilder sql = new StringBuilder("SELECT * FROM s_dict_data WHERE dict_type = 'CLASSIFICATION_CODE' order by dict_sort");
        return this.select(sql.toString(), new Object[]{}, new SDictData());
        StringBuilder sql =
            new StringBuilder("SELECT * FROM s_dict_data WHERE dict_type = 'CLASSIFICATION_CODE' order by dict_sort");
        return this.select(sql.toString(), new Object[] {}, new SDictData());
    }
    /**
@@ -318,11 +330,12 @@
     * @param agencyId
     * @param categoryId
     * @param states
     * @param goodsName  全匹配!!!
     * @param goodsName 全匹配!!!
     * @return
     */
    @Override
    public List<BaseGoodsTemplate> queryGoodsTemplateByCategoryId(Long agencyId, Long categoryId, Short states, String goodsName) {
    public List<BaseGoodsTemplate> queryGoodsTemplateByCategoryId(Long agencyId, Long categoryId, Short states,
        String goodsName) {
        StringBuilder sql = new StringBuilder("SELECT * FROM base_goods_template WHERE 1=1 ");
        Map<String, Object> params = new HashMap<>();
        if (agencyId != null) {