luqingyang
2023-10-24 cb642724c54d7d850aec5e5ee27fcc7186f352d7
consum-base/src/main/java/com/consum/base/service/BaseGoodsTemplateServiceImpl.java
@@ -1,8 +1,22 @@
package com.consum.base.service;
import com.consum.base.Constants;
import com.consum.base.core.CodeGeneratorService;
import com.consum.base.pojo.BaseGoodsTemplateParam;
import com.consum.base.util.IdUtil;
import com.consum.model.po.BaseCategory;
import com.consum.model.po.BaseGoodsModels;
import com.consum.model.po.BaseGoodsTemplate;
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;
@@ -15,11 +29,18 @@
@Service
public class BaseGoodsTemplateServiceImpl extends BaseServiceImpl {
    @Autowired
    private CodeGeneratorService codeGeneratorService;
    @Autowired
    private BaseCategoryServiceImpl baseCategoryService;
    @Autowired
    private BaseGoodsModelsServiceImpl baseGoodsModelsService;
    /**
     * @Description  根据分类id和状态查询物品模版
     * @return
     * @Description 根据分类id和状态查询物品模版
     * @Author 卢庆阳
     * @Date 2023/10/23
     * @return
     */
    public List<BaseCategory> getByCategoryId(Long categoryId) {
        StringBuilder sql = new StringBuilder("SELECT * FROM base_goods_template WHERE 1 = 1 ");
@@ -34,4 +55,167 @@
        return this.select(sql.toString(), paramts, new BaseCategory());
    }
    /**
     * @Description 新增物品模板
     * @Author 卢庆阳
     * @Date 2023/10/24
     */
    public int add(BaseGoodsTemplateParam param, S_user_core currentUser) {
        //1.新增物品模板
        BaseGoodsTemplate baseGoodsTemplate = new BaseGoodsTemplate();
        BeanUtils.copyProperties(param, baseGoodsTemplate);
        long goodsTemplatesId = IdUtil.generateId();
        baseGoodsTemplate.setId(goodsTemplatesId);
        //NumberGenerator.getLongSequenceNumber()
        //根据分类id查询分类
        BaseCategory baseCategory = this.baseCategoryService.get(new BaseCategory(param.getCategoryId()));
        if (baseCategory != null) {
            String classification = baseCategory.getClassification();
            //物品编码
            String goodsCode = codeGeneratorService.createGoodsTemplateCode(classification);
            baseGoodsTemplate.setGoodsCode(goodsCode);
            //类别
            baseGoodsTemplate.setClassification(classification);
        }
        //TODO 一级二级三级机构编号
        //当前机构的父级机构编号
        //机构层级
        //机构编号
        //机构名称
        //创建时间
        long createTime = DateUtils.getDateTimeNumber(System.currentTimeMillis());
        baseGoodsTemplate.setCreateDate(createTime);
        int flag1 = this.insert(baseGoodsTemplate);
        //2.新增规格型号
        List<BaseGoodsModels> models = param.getModels();
        int flag2 = 0;
        if (!CollectionUtils.isEmpty(models)) {
            for (BaseGoodsModels model : models) {
                model.setId(IdUtil.generateId());
                model.setStates(Constants.STATES_ENABLE);
                model.setGoodsTemplatesId(goodsTemplatesId);
                model.setCreateTime(createTime);
            }
            flag2 = this.baseGoodsModelsService.insert(models);
        }
        if (flag1 > 0 && flag2 > 0) {
            return 1;
        } else {
            return 0;
        }
    }
    /**
     * @Description  物品模板列表查询
     * @Author 卢庆阳
     * @Date 2023/10/24
     */
    public GenericPager<BaseGoodsTemplate> queryList(BaseGoodsTemplateParam param) {
        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
        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());
        }
        sql.append(" ORDER BY CREATE_DATE DESC ");
        return selectSplit(sql.toString(), paramts, new BaseGoodsTemplate());
    }
    /**
     * 根据物品id查询物品详情
     * @author 卢庆阳
     * @date 2023/9/26
     */
    public BaseGoodsTemplateVo getById(Long id) {
        //1.根据物品id查询物品模板
        BaseGoodsTemplate goodsTemplate = this.get(new BaseGoodsTemplate(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.封装
        BaseGoodsTemplateVo vo = new BaseGoodsTemplateVo();
        if (goodsTemplate != null) {
            BeanUtils.copyProperties(goodsTemplate,vo);
        }
        if (!CollectionUtils.isEmpty(modelsList)) {
            vo.setModels(modelsList);
        }
        return vo;
    }
    /**
     * @Description 编辑
     * @Author 卢庆阳
     * @Date 2023/10/24
     */
    public int updateBaseGoodsTemplate(BaseGoodsTemplateParam param) {
        //1.修改物品模板
        BaseGoodsTemplate baseGoodsTemplate = new BaseGoodsTemplate();
        BeanUtils.copyProperties(param, baseGoodsTemplate);
        int flag1 = this.update(baseGoodsTemplate);
        //2.修改规格型号的单位
        List<BaseGoodsModels> modelsList = param.getModels();
        int flag2 = this.update(modelsList);
        if (flag1 > 0 && flag2 > 0) {
            return 1;
        } else {
            return 0;
        }
    }
    /**
     * @Description  根据物品名称和分类id查询物品
     * @Author 卢庆阳
     * @Date 2023/10/24
     */
    public BaseGoodsTemplate getByGoodsNameAndCategoryId(String goodsName, Long categoryId) {
        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
        sql.append(" and category_id =:category_id ");
        paramts.put("category_id", categoryId);
        return this.get(sql.toString(), paramts, new BaseGoodsTemplate());
    }
}