Browse Source

序号获取

xiaoddyy123 3 years ago
parent
commit
c36c66e879

+ 4 - 1
ruoyi-ui/src/views/docAsn/docAsnDetails-add-or-update.vue

@@ -89,7 +89,7 @@
           </template>
         </el-table-column>
       </el-table>
-      <sku-search-dialog v-if="skuSearchDialogVisible" ref="skuSearch" ></sku-search-dialog>
+      <sku-search-dialog v-if="skuSearchDialogVisible" ref="skuSearch" @dochose="afterChoseUser"></sku-search-dialog>
     </el-form>
     <span slot="footer" class="dialog-footer">
        <el-button @click="visible = false">取消</el-button>
@@ -220,6 +220,9 @@
         this.$nextTick(() => {
           this.$refs.skuSearch.init()
         })
+      },
+      afterChoseUser: function (userName, value) {
+        this.dataForm.sku = value
       }
     }
   }

+ 221 - 0
warewms-base/src/main/java/com/ruoyi/base/domain/BaseIdsequence.java

@@ -0,0 +1,221 @@
+package com.ruoyi.base.domain;
+
+import java.math.BigDecimal;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+
+/**
+ * 主键生成规则对象 base_idsequence
+ * 
+ * @author ruoyi
+ * @date 2022-10-14
+ */
+public class BaseIdsequence extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** $column.columnComment */
+    private String idName;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String descr;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String idType;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private Long idSequence;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private Date createDate;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private Long maxIdSequence;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String createUserId;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private Date editTime;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String editUserId;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String prefix;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private BigDecimal length;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String dateFormat;
+
+    /** $column.columnComment */
+    @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
+    private String dateMax;
+
+    /** $column.columnComment */
+    private String warehouseid;
+
+    public void setIdName(String idName) 
+    {
+        this.idName = idName;
+    }
+
+    public String getIdName() 
+    {
+        return idName;
+    }
+    public void setDescr(String descr) 
+    {
+        this.descr = descr;
+    }
+
+    public String getDescr() 
+    {
+        return descr;
+    }
+    public void setIdType(String idType) 
+    {
+        this.idType = idType;
+    }
+
+    public String getIdType() 
+    {
+        return idType;
+    }
+    public void setIdSequence(Long idSequence) 
+    {
+        this.idSequence = idSequence;
+    }
+
+    public Long getIdSequence() 
+    {
+        return idSequence;
+    }
+    public void setCreateDate(Date createDate) 
+    {
+        this.createDate = createDate;
+    }
+
+    public Date getCreateDate() 
+    {
+        return createDate;
+    }
+    public void setMaxIdSequence(Long maxIdSequence) 
+    {
+        this.maxIdSequence = maxIdSequence;
+    }
+
+    public Long getMaxIdSequence() 
+    {
+        return maxIdSequence;
+    }
+    public void setCreateUserId(String createUserId) 
+    {
+        this.createUserId = createUserId;
+    }
+
+    public String getCreateUserId() 
+    {
+        return createUserId;
+    }
+    public void setEditTime(Date editTime) 
+    {
+        this.editTime = editTime;
+    }
+
+    public Date getEditTime() 
+    {
+        return editTime;
+    }
+    public void setEditUserId(String editUserId) 
+    {
+        this.editUserId = editUserId;
+    }
+
+    public String getEditUserId() 
+    {
+        return editUserId;
+    }
+    public void setPrefix(String prefix) 
+    {
+        this.prefix = prefix;
+    }
+
+    public String getPrefix() 
+    {
+        return prefix;
+    }
+    public void setLength(BigDecimal length) 
+    {
+        this.length = length;
+    }
+
+    public BigDecimal getLength() 
+    {
+        return length;
+    }
+    public void setDateFormat(String dateFormat) 
+    {
+        this.dateFormat = dateFormat;
+    }
+
+    public String getDateFormat() 
+    {
+        return dateFormat;
+    }
+    public void setDateMax(String dateMax) 
+    {
+        this.dateMax = dateMax;
+    }
+
+    public String getDateMax() 
+    {
+        return dateMax;
+    }
+    public void setWarehouseid(String warehouseid) 
+    {
+        this.warehouseid = warehouseid;
+    }
+
+    public String getWarehouseid() 
+    {
+        return warehouseid;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
+            .append("idName", getIdName())
+            .append("descr", getDescr())
+            .append("idType", getIdType())
+            .append("idSequence", getIdSequence())
+            .append("createDate", getCreateDate())
+            .append("maxIdSequence", getMaxIdSequence())
+            .append("createUserId", getCreateUserId())
+            .append("editTime", getEditTime())
+            .append("editUserId", getEditUserId())
+            .append("prefix", getPrefix())
+            .append("length", getLength())
+            .append("dateFormat", getDateFormat())
+            .append("dateMax", getDateMax())
+            .append("warehouseid", getWarehouseid())
+            .toString();
+    }
+}

+ 64 - 0
warewms-base/src/main/java/com/ruoyi/base/mapper/BaseIdsequenceMapper.java

@@ -0,0 +1,64 @@
+package com.ruoyi.base.mapper;
+
+import java.util.List;
+import com.ruoyi.base.domain.BaseIdsequence;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * 主键生成规则Mapper接口
+ * 
+ * @author ruoyi
+ * @date 2022-10-14
+ */
+public interface BaseIdsequenceMapper 
+{
+    /**
+     * 查询主键生成规则
+     * 
+     * @param idName 主键生成规则主键
+     * @return 主键生成规则
+     */
+     BaseIdsequence selectBaseIdsequenceByIdName(String idName);
+
+    /**
+     * 查询主键生成规则列表
+     * 
+     * @param baseIdsequence 主键生成规则
+     * @return 主键生成规则集合
+     */
+     List<BaseIdsequence> selectBaseIdsequenceList(BaseIdsequence baseIdsequence);
+
+    /**
+     * 新增主键生成规则
+     * 
+     * @param baseIdsequence 主键生成规则
+     * @return 结果
+     */
+     int insertBaseIdsequence(BaseIdsequence baseIdsequence);
+
+    /**
+     * 修改主键生成规则
+     * 
+     * @param baseIdsequence 主键生成规则
+     * @return 结果
+     */
+     int updateBaseIdsequence(BaseIdsequence baseIdsequence);
+
+    /**
+     * 删除主键生成规则
+     * 
+     * @param idName 主键生成规则主键
+     * @return 结果
+     */
+     int deleteBaseIdsequenceByIdName(String idName);
+
+    /**
+     * 批量删除主键生成规则
+     * 
+     * @param idNames 需要删除的数据主键集合
+     * @return 结果
+     */
+     int deleteBaseIdsequenceByIdNames(String[] idNames);
+
+     int updateByVersion(@Param("idName") String idName,@Param("dateStr") String dateStr,@Param("idSequence") Long idSequence,@Param("nextId") int nextId);
+}

+ 79 - 0
warewms-base/src/main/java/com/ruoyi/base/service/IBaseIdsequenceService.java

@@ -0,0 +1,79 @@
+package com.ruoyi.base.service;
+
+import java.util.List;
+import com.ruoyi.base.domain.BaseIdsequence;
+
+/**
+ * 主键生成规则Service接口
+ * 
+ * @author ruoyi
+ * @date 2022-10-14
+ */
+public interface IBaseIdsequenceService 
+{
+    /**
+     * 查询主键生成规则
+     * 
+     * @param idName 主键生成规则主键
+     * @return 主键生成规则
+     */
+     BaseIdsequence selectBaseIdsequenceByIdName(String idName);
+
+    /**
+     * 查询主键生成规则列表
+     * 
+     * @param baseIdsequence 主键生成规则
+     * @return 主键生成规则集合
+     */
+     List<BaseIdsequence> selectBaseIdsequenceList(BaseIdsequence baseIdsequence);
+
+    /**
+     * 查询主键生成规则
+     *
+     * @param baseIdsequence 主键生成规则
+     * @return 主键生成规则集合
+     */
+    BaseIdsequence selectBaseIdsequenceByModel(BaseIdsequence baseIdsequence);
+
+    /**
+     * 新增主键生成规则
+     * 
+     * @param baseIdsequence 主键生成规则
+     * @return 结果
+     */
+     int insertBaseIdsequence(BaseIdsequence baseIdsequence);
+
+    /**
+     * 修改主键生成规则
+     * 
+     * @param baseIdsequence 主键生成规则
+     * @return 结果
+     */
+     int updateBaseIdsequence(BaseIdsequence baseIdsequence);
+
+    /**
+     * 批量删除主键生成规则
+     * 
+     * @param idNames 需要删除的主键生成规则主键集合
+     * @return 结果
+     */
+     int deleteBaseIdsequenceByIdNames(String[] idNames);
+
+    /**
+     * 删除主键生成规则信息
+     * 
+     * @param idName 主键生成规则主键
+     * @return 结果
+     */
+     int deleteBaseIdsequenceByIdName(String idName);
+
+    /**
+     * 更新序列号id加锁
+     * @param idName
+     * @param dateStr
+     * @param idSequence
+     * @param index
+     * @return
+     */
+     int updateByVersion(String idName, String dateStr, Long idSequence,int nextId);
+}

+ 108 - 0
warewms-base/src/main/java/com/ruoyi/base/service/impl/BaseIdsequenceServiceImpl.java

@@ -0,0 +1,108 @@
+package com.ruoyi.base.service.impl;
+
+import java.util.List;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.ruoyi.base.mapper.BaseIdsequenceMapper;
+import com.ruoyi.base.domain.BaseIdsequence;
+import com.ruoyi.base.service.IBaseIdsequenceService;
+
+/**
+ * 主键生成规则Service业务层处理
+ *
+ * @author ruoyi
+ * @date 2022-10-14
+ */
+@Service
+public class BaseIdsequenceServiceImpl implements IBaseIdsequenceService {
+    @Autowired
+    private BaseIdsequenceMapper baseIdsequenceMapper;
+
+    /**
+     * 查询主键生成规则
+     *
+     * @param idName 主键生成规则主键
+     * @return 主键生成规则
+     */
+    @Override
+    public BaseIdsequence selectBaseIdsequenceByIdName(String idName) {
+        return baseIdsequenceMapper.selectBaseIdsequenceByIdName(idName);
+    }
+
+    /**
+     * 查询主键生成规则列表
+     *
+     * @param baseIdsequence 主键生成规则
+     * @return 主键生成规则
+     */
+    @Override
+    public List<BaseIdsequence> selectBaseIdsequenceList(BaseIdsequence baseIdsequence) {
+        return baseIdsequenceMapper.selectBaseIdsequenceList(baseIdsequence);
+    }
+
+    /**
+     * 查询主键生成规则
+     *
+     * @param baseIdsequence 主键生成规则
+     * @return 主键生成规则
+     */
+    @Override
+    public BaseIdsequence selectBaseIdsequenceByModel(BaseIdsequence baseIdsequence) {
+        List<BaseIdsequence> list = baseIdsequenceMapper.selectBaseIdsequenceList(baseIdsequence);
+        if (list != null && list.size() > 0) {
+            return list.get(0);
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * 新增主键生成规则
+     *
+     * @param baseIdsequence 主键生成规则
+     * @return 结果
+     */
+    @Override
+    public int insertBaseIdsequence(BaseIdsequence baseIdsequence) {
+        return baseIdsequenceMapper.insertBaseIdsequence(baseIdsequence);
+    }
+
+    /**
+     * 修改主键生成规则
+     *
+     * @param baseIdsequence 主键生成规则
+     * @return 结果
+     */
+    @Override
+    public int updateBaseIdsequence(BaseIdsequence baseIdsequence) {
+        return baseIdsequenceMapper.updateBaseIdsequence(baseIdsequence);
+    }
+
+    /**
+     * 批量删除主键生成规则
+     *
+     * @param idNames 需要删除的主键生成规则主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBaseIdsequenceByIdNames(String[] idNames) {
+        return baseIdsequenceMapper.deleteBaseIdsequenceByIdNames(idNames);
+    }
+
+    /**
+     * 删除主键生成规则信息
+     *
+     * @param idName 主键生成规则主键
+     * @return 结果
+     */
+    @Override
+    public int deleteBaseIdsequenceByIdName(String idName) {
+        return baseIdsequenceMapper.deleteBaseIdsequenceByIdName(idName);
+    }
+
+    @Override
+    public int updateByVersion(String idName, String dateStr, Long idSequence, int nextId) {
+        return baseIdsequenceMapper.updateByVersion(idName, dateStr, idSequence, nextId);
+    }
+}

+ 63 - 0
warewms-base/src/main/java/com/ruoyi/base/utils/IdSequenceUtils.java

@@ -0,0 +1,63 @@
+package com.ruoyi.base.utils;
+
+import cn.hutool.core.date.DateUtil;
+import com.ruoyi.base.domain.BaseIdsequence;
+import com.ruoyi.base.service.IBaseIdsequenceService;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+@Component
+public class IdSequenceUtils {
+    @Autowired
+    private IBaseIdsequenceService baseIdsequenceService;
+
+    /**
+     * 生成主键
+     *
+     * @param idName
+     * @return
+     */
+    public String generateId(String idName) {
+        int count = 20;
+        while (count > 0) {
+            count--;
+            BaseIdsequence sysIdsequence = baseIdsequenceService.selectBaseIdsequenceByIdName(idName.toUpperCase());
+            if (sysIdsequence == null) {
+                return null;
+            }
+
+            String prefix;
+            String dateStr = "";
+            if (!StringUtils.isEmpty(sysIdsequence.getDateFormat()) && (sysIdsequence.getDateFormat().equals("YYYYMMDD") || sysIdsequence.getDateFormat().equals("YYMMDD"))) {
+                prefix = sysIdsequence.getPrefix() + DateUtil.format(new Date(), "yMMdd");
+                dateStr = DateUtil.format(new Date(), "yMMdd");
+            } else {
+                prefix = sysIdsequence.getPrefix();
+            }
+            int index = 0;
+            if (sysIdsequence.getDateFormat() == null || sysIdsequence.getDateFormat().equals("") || dateStr.equals(sysIdsequence.getDateMax())) {
+                index = sysIdsequence.getIdSequence() == null ? 0 : sysIdsequence.getIdSequence().intValue();
+            }
+            String resultNo = "";
+            if (!StringUtils.isEmpty(prefix)) {
+                resultNo = prefix + CommonUtils.lpad((index + 1) + "", sysIdsequence.getLength().intValue(), "0");
+            } else {
+                resultNo = (index + 1) + "";
+            }
+
+
+            int isOk = baseIdsequenceService.updateByVersion(idName, dateStr, sysIdsequence.getIdSequence(), index + 1);
+            if (isOk > 0) {
+                return resultNo;
+            }
+        }
+        return "";
+    }
+
+    public static void main(String[] args) {
+        System.out.println(DateUtil.format(new Date(), "yMMdd"));
+    }
+}

+ 121 - 0
warewms-base/src/main/resources/mapper/base/BaseIdsequenceMapper.xml

@@ -0,0 +1,121 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.base.mapper.BaseIdsequenceMapper">
+    
+    <resultMap type="BaseIdsequence" id="BaseIdsequenceResult">
+        <result property="idName"    column="id_name"    />
+        <result property="descr"    column="descr"    />
+        <result property="idType"    column="id_type"    />
+        <result property="idSequence"    column="id_sequence"    />
+        <result property="createDate"    column="create_date"    />
+        <result property="maxIdSequence"    column="max_id_sequence"    />
+        <result property="createUserId"    column="create_user_id"    />
+        <result property="editTime"    column="edit_time"    />
+        <result property="editUserId"    column="edit_user_id"    />
+        <result property="prefix"    column="prefix"    />
+        <result property="length"    column="length"    />
+        <result property="dateFormat"    column="date_format"    />
+        <result property="dateMax"    column="date_max"    />
+        <result property="warehouseid"    column="warehouseid"    />
+    </resultMap>
+
+    <sql id="selectBaseIdsequenceVo">
+        select id_name, descr, id_type, id_sequence, create_date, max_id_sequence, create_user_id, edit_time, edit_user_id, prefix, length, date_format, date_max, warehouseid from base_idsequence
+    </sql>
+
+    <select id="selectBaseIdsequenceList" parameterType="BaseIdsequence" resultMap="BaseIdsequenceResult">
+        <include refid="selectBaseIdsequenceVo"/>
+        <where>  
+            <if test="descr != null  and descr != ''"> and descr = #{descr}</if>
+            <if test="idType != null  and idType != ''"> and id_type = #{idType}</if>
+            <if test="idSequence != null "> and id_sequence = #{idSequence}</if>
+            <if test="createDate != null "> and create_date = #{createDate}</if>
+            <if test="maxIdSequence != null "> and max_id_sequence = #{maxIdSequence}</if>
+            <if test="createUserId != null  and createUserId != ''"> and create_user_id = #{createUserId}</if>
+            <if test="editTime != null "> and edit_time = #{editTime}</if>
+            <if test="editUserId != null  and editUserId != ''"> and edit_user_id = #{editUserId}</if>
+            <if test="prefix != null  and prefix != ''"> and prefix = #{prefix}</if>
+            <if test="length != null "> and length = #{length}</if>
+            <if test="dateFormat != null  and dateFormat != ''"> and date_format = #{dateFormat}</if>
+            <if test="dateMax != null  and dateMax != ''"> and date_max = #{dateMax}</if>
+        </where>
+    </select>
+    
+    <select id="selectBaseIdsequenceByIdName" parameterType="String" resultMap="BaseIdsequenceResult">
+        <include refid="selectBaseIdsequenceVo"/>
+        where id_name = #{idName}
+    </select>
+        
+    <insert id="insertBaseIdsequence" parameterType="BaseIdsequence">
+        insert into base_idsequence
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="idName != null">id_name,</if>
+            <if test="descr != null">descr,</if>
+            <if test="idType != null and idType != ''">id_type,</if>
+            <if test="idSequence != null">id_sequence,</if>
+            <if test="createDate != null">create_date,</if>
+            <if test="maxIdSequence != null">max_id_sequence,</if>
+            <if test="createUserId != null">create_user_id,</if>
+            <if test="editTime != null">edit_time,</if>
+            <if test="editUserId != null">edit_user_id,</if>
+            <if test="prefix != null">prefix,</if>
+            <if test="length != null">length,</if>
+            <if test="dateFormat != null">date_format,</if>
+            <if test="dateMax != null">date_max,</if>
+            <if test="warehouseid != null">warehouseid,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="idName != null">#{idName},</if>
+            <if test="descr != null">#{descr},</if>
+            <if test="idType != null and idType != ''">#{idType},</if>
+            <if test="idSequence != null">#{idSequence},</if>
+            <if test="createDate != null">#{createDate},</if>
+            <if test="maxIdSequence != null">#{maxIdSequence},</if>
+            <if test="createUserId != null">#{createUserId},</if>
+            <if test="editTime != null">#{editTime},</if>
+            <if test="editUserId != null">#{editUserId},</if>
+            <if test="prefix != null">#{prefix},</if>
+            <if test="length != null">#{length},</if>
+            <if test="dateFormat != null">#{dateFormat},</if>
+            <if test="dateMax != null">#{dateMax},</if>
+            <if test="warehouseid != null">#{warehouseid},</if>
+         </trim>
+    </insert>
+
+    <update id="updateBaseIdsequence" parameterType="BaseIdsequence">
+        update base_idsequence
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="descr != null">descr = #{descr},</if>
+            <if test="idType != null and idType != ''">id_type = #{idType},</if>
+            <if test="idSequence != null">id_sequence = #{idSequence},</if>
+            <if test="createDate != null">create_date = #{createDate},</if>
+            <if test="maxIdSequence != null">max_id_sequence = #{maxIdSequence},</if>
+            <if test="createUserId != null">create_user_id = #{createUserId},</if>
+            <if test="editTime != null">edit_time = #{editTime},</if>
+            <if test="editUserId != null">edit_user_id = #{editUserId},</if>
+            <if test="prefix != null">prefix = #{prefix},</if>
+            <if test="length != null">length = #{length},</if>
+            <if test="dateFormat != null">date_format = #{dateFormat},</if>
+            <if test="dateMax != null">date_max = #{dateMax},</if>
+            <if test="warehouseid != null">warehouseid = #{warehouseid},</if>
+        </trim>
+        where id_name = #{idName}
+    </update>
+
+    <delete id="deleteBaseIdsequenceByIdName" parameterType="String">
+        delete from base_idsequence where id_name = #{idName}
+    </delete>
+
+    <delete id="deleteBaseIdsequenceByIdNames" parameterType="String">
+        delete from base_idsequence where id_name in 
+        <foreach item="idName" collection="array" open="(" separator="," close=")">
+            #{idName}
+        </foreach>
+    </delete>
+
+    <update id="updateByVersion">
+        update sys_idsequence set id_sequence = #{nextId},date_max=#{dateStr} where id_name=#{idName} and id_sequence=#{idSequence}
+    </update>
+</mapper>