Commit b9bab81f by 李洪涛

code生成代码

parent 5ec89f2b
/**
* Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package com.jeeplus.modules.warehouse.code.entry;
import com.jeeplus.common.utils.excel.annotation.ExcelField;
import com.jeeplus.core.persistence.DataEntity;
/**
* 编码序列Entity
* @author admin
* @version 2021-09-06
*/
public class NumSeq extends DataEntity<NumSeq> {
private static final long serialVersionUID = 1L;
private String name; //模块名
private String module; // 模块编码
private String month; // 模块用月份
private Integer seq; // 序列号
public NumSeq() {
super();
}
public NumSeq(String id){
super(id);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@ExcelField(title="模块编码", align=2, sort=1)
public String getModule() {
return module;
}
public void setModule(String module) {
this.module = module;
}
@ExcelField(title="模块用月份", align=2, sort=2)
public String getMonth() {
return month;
}
public void setMonth(String month) {
this.month = month;
}
@ExcelField(title="序列号", align=2, sort=3)
public Integer getSeq() {
return seq;
}
public void setSeq(Integer seq) {
this.seq = seq;
}
}
\ No newline at end of file
/**
* Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package com.jeeplus.modules.warehouse.code.mapper;
import com.jeeplus.core.persistence.BaseMapper;
import com.jeeplus.core.persistence.annotation.MyBatisMapper;
import com.jeeplus.modules.warehouse.code.entry.NumSeq;
/**
* 编码序列MAPPER接口
* @author admin
* @version 2021-09-06
*/
@MyBatisMapper
public interface NumSeqMapper extends BaseMapper<NumSeq> {
public NumSeq getbyModule(String module);
}
\ No newline at end of file
<?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.jeeplus.modules.asset.mapper.NumSeqMapper">
<sql id="numSeqColumns">
a.id AS "id",
a.name AS "name",
a.module AS "module",
a.month AS "month",
a.seq AS "seq"
</sql>
<sql id="numSeqJoins">
</sql>
<select id="get" resultType="NumSeq" >
SELECT
<include refid="numSeqColumns"/>
FROM t_num_seq a
<include refid="numSeqJoins"/>
WHERE a.id = #{id}
</select>
<select id="getbyModule" resultType="NumSeq" >
SELECT
<include refid="numSeqColumns"/>
FROM t_num_seq a
<include refid="numSeqJoins"/>
WHERE a.module = #{module}
</select>
<select id="findList" resultType="NumSeq" >
SELECT
<include refid="numSeqColumns"/>
FROM t_num_seq a
<include refid="numSeqJoins"/>
<where>
${dataScope}
</where>
<choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy}
</when>
<otherwise>
</otherwise>
</choose>
</select>
<select id="findAllList" resultType="NumSeq" >
SELECT
<include refid="numSeqColumns"/>
FROM t_num_seq a
<include refid="numSeqJoins"/>
<where>
${dataScope}
</where>
<choose>
<when test="page !=null and page.orderBy != null and page.orderBy != ''">
ORDER BY ${page.orderBy}
</when>
<otherwise>
</otherwise>
</choose>
</select>
<insert id="insert">
INSERT INTO t_num_seq(
id,
name,
module,
month,
seq
) VALUES (
#{id},
#{name},
#{module},
#{month},
#{seq}
)
</insert>
<update id="update">
UPDATE t_num_seq SET
name = #{name},
module = #{module},
month = #{month},
seq = #{seq}
WHERE id = #{id}
</update>
<!--物理删除-->
<update id="delete">
DELETE FROM t_num_seq
WHERE id = #{id}
</update>
<!--逻辑删除-->
<update id="deleteByLogic">
UPDATE t_num_seq SET
del_flag = #{DEL_FLAG_DELETE}
WHERE id = #{id}
</update>
<!-- 根据实体名称和字段名称和字段值获取唯一记录 -->
<select id="findUniqueByProperty" resultType="NumSeq" statementType="STATEMENT">
select * FROM t_num_seq where ${propertyName} = '${value}'
</select>
</mapper>
\ No newline at end of file
/**
* Copyright &copy; 2015-2020 <a href="http://www.jeeplus.org/">JeePlus</a> All rights reserved.
*/
package com.jeeplus.modules.warehouse.code.service;
import com.jeeplus.common.utils.DateUtils;
import com.jeeplus.common.utils.StringUtils;
import com.jeeplus.core.persistence.Page;
import com.jeeplus.core.service.CrudService;
import com.jeeplus.modules.warehouse.code.entry.NumSeq;
import com.jeeplus.modules.warehouse.code.mapper.NumSeqMapper;
import com.jeeplus.modules.warehouse.code.util.StaticNumSeq;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* 编码序列Service
* @author admin
* @version 2021-09-06
*/
@Service
@Transactional(readOnly = true)
public class NumSeqService extends CrudService<NumSeqMapper, NumSeq> {
public NumSeq get(String id) {
return super.get(id);
}
public List<NumSeq> findList(NumSeq numSeq) {
return super.findList(numSeq);
}
public Page<NumSeq> findPage(Page<NumSeq> page, NumSeq numSeq) {
return super.findPage(page, numSeq);
}
@Transactional(readOnly = false)
public void save(NumSeq numSeq) {
super.save(numSeq);
}
@Transactional(readOnly = false)
public void delete(NumSeq numSeq) {
super.delete(numSeq);
}
@Transactional(readOnly = false)
public Integer getNumSeq(String module){
if(StringUtils.isEmpty(module)){
throw new RuntimeException("module传参不能为空");
}
if (!StaticNumSeq.seqList().contains(module)){
throw new RuntimeException("module传参错误,请查询StaticNumSeq类型中的常量进行传参");
}
Integer seq = null;
String month = DateUtils.getMonth();
NumSeq numSeq = mapper.getbyModule(module);
if(numSeq == null){
numSeq = new NumSeq();
numSeq.setModule(module);
numSeq.setMonth(month);
numSeq.setSeq(2);
numSeq.preInsert();
mapper.insert(numSeq);
seq = 1;
}else{
if(!month.equals(numSeq.getMonth())){
numSeq.setMonth(month);
numSeq.setSeq(2);
numSeq.preUpdate();
mapper.update(numSeq);
seq = 1;
}else{
seq = numSeq.getSeq();
numSeq.setSeq(seq+1);
mapper.update(numSeq);
}
}
return seq;
}
@Transactional(readOnly = false)
public void initNumSeq(){
List<NumSeq> numSeqList = mapper.findList(new NumSeq());
List<String> tempNumSeq = new ArrayList<>();
for(String str : StaticNumSeq.seqList()){
tempNumSeq.add(new String(str));
}
Iterator<String> stringIterator = tempNumSeq.iterator();
while(stringIterator.hasNext()){
String str = stringIterator.next();
for(NumSeq numSeq : numSeqList){
if(numSeq.getModule().equals(str))
stringIterator.remove();
}
}
numSeqList = new ArrayList<>();
for (String str : tempNumSeq){
NumSeq numSeq = new NumSeq();
numSeq.setMonth(DateUtils.getMonth());
numSeq.setModule(str);
numSeq.setSeq(1);
numSeq.preInsert();
mapper.insert(numSeq);
}
}
}
\ No newline at end of file
package com.jeeplus.modules.warehouse.code.util;
import com.jeeplus.common.utils.DateUtil;
import java.util.Date;
public class CodeUtil {
/**
* 流程编码生成
*/
public static String code(String prefix,String model){
//中间日期部分
String dateString = DateUtil.parseDateToStr(new Date(), DateUtil.DATE_FORMAT_YYYY_MM);
//编号
String numSeq = NumSeqUtils.getNumSeq(model);
return prefix+"-"+dateString+"-"+numSeq;
}
/**
* 流程编码生成
*/
public static String codeNum(String prefix,int num,String model){
//中间日期部分
String dateString = DateUtil.parseDateToStr(new Date(), DateUtil.DATE_FORMAT_YYYY_MM);
//编号
String numSeq = NumSeqUtils.getNumSeqConunt(model,num);
return prefix+"-"+dateString+"-"+numSeq;
}
public static void main(String[] args) {
String code = code("ZZGZ",StaticNumSeq.GZSQ);
//ZZGZ-001
//AAGZ-002
System.out.println(code);
}
}
package com.jeeplus.modules.warehouse.code.util;
import com.jeeplus.common.utils.SpringContextHolder;
import com.jeeplus.modules.warehouse.code.service.NumSeqService;
public class NumSeqUtils {
private static NumSeqService numSeqService = SpringContextHolder.getBean(NumSeqService.class);
public static String getNumSeq(String module){
Integer num = numSeqService.getNumSeq(module);
if(num == null){
throw new RuntimeException("numSeq生成失败");
}
String numStr = num.toString();
int count = 4;
for(int i = 0;i < count;i++){
if(numStr.length() < count) {
numStr = "0" + numStr;
}else{
break;
}
}
return numStr;
}
public static String getNumSeqConunt(String module, int count){
Integer num = numSeqService.getNumSeq(module);
if(num == null){
throw new RuntimeException("numSeq生成失败");
}
String numStr = num.toString();
for(int i = 0;i < count;i++){
if(numStr.length() < count) {
numStr = "0" + numStr;
}else{
break;
}
}
return numStr;
}
}
package com.jeeplus.modules.warehouse.code.util;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
public class StaticNumSeq {
/**
* 购置申请
* */
public final static String GZSQ = "GZSQ";
/**
* 购置备案
* */
public final static String GZBA = "GZBA";
public static List<String> seqList(){
List<String> seqList = new ArrayList<>();
Class<StaticNumSeq> clz = StaticNumSeq.class;
Field[] fields = clz.getFields();
try {
for (Field field : fields) {
field.setAccessible(true);
if(field.getType().toString().endsWith("java.lang.String") && Modifier.isStatic(field.getModifiers()))
seqList.add(field.getName());
}
} catch (Exception e) {
e.printStackTrace();
}
return seqList;
}
private static final Class getCurrentClass(){
return new Object(){
public Class getClassForStatic(){
return this.getClass();
}
}.getClassForStatic();
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment