From 56e6e761486c3486091317b379aaa4bfd884607f Mon Sep 17 00:00:00 2001
From: zzw <wander.zheng@qq.com>
Date: 星期四, 09 十一月 2023 15:26:42 +0800
Subject: [PATCH] 编号

---
 zt/core/src/main/java/com/zt/modules/coderule/dao/SysCodeRuleDao.java               |   28 ++++
 zt/core/src/main/java/com/zt/modules/coderule/service/SysCodeRuleService.java       |   69 +++++++++
 zt/core/src/main/java/com/zt/modules/coderule/controller/SysCodeRuleController.java |  104 ++++++++++++++
 web/src/views/modules/sys/codeRule/SysCodeRule-AddOrUpdate.vue                      |   61 ++++++++
 zt/core/src/main/resources/mapper/coderule/SysCodeRuleDao.xml                       |   30 ++++
 web/src/views/modules/sys/codeRule/SysCodeRule.vue                                  |   42 ++++++
 zt/core/src/main/java/com/zt/modules/coderule/model/SysCodeRule.java                |   42 ++++++
 7 files changed, 376 insertions(+), 0 deletions(-)

diff --git a/web/src/views/modules/sys/codeRule/SysCodeRule-AddOrUpdate.vue b/web/src/views/modules/sys/codeRule/SysCodeRule-AddOrUpdate.vue
new file mode 100644
index 0000000..5b62675
--- /dev/null
+++ b/web/src/views/modules/sys/codeRule/SysCodeRule-AddOrUpdate.vue
@@ -0,0 +1,61 @@
+<template>
+  <zt-dialog ref="dialog"  @confirm="formSubmit">
+    <el-form :model="dataForm" ref="dataForm" :disabled="dataForm.disabled" label-width="120px">
+      <zt-form-item label="鍔熻兘缂栫爜" prop="funCode" rules="required">
+                        <el-input v-model="dataForm.funCode"></el-input>
+                </zt-form-item>
+      <zt-form-item label="鍔熻兘鍚嶇О" prop="name" rules="required">
+                        <el-input v-model="dataForm.name"></el-input>
+                </zt-form-item>
+      <zt-form-item label="缂栧彿瑙勫垯" prop="codeRule" rules="required">
+                        <el-input v-model="dataForm.codeRule"></el-input>
+                </zt-form-item>
+      <zt-form-item label="鏁版嵁琛ㄥ悕绉�" prop="tableName" rules="required">
+                        <el-input v-model="dataForm.tableName"></el-input>
+                </zt-form-item>
+      <zt-form-item label="搴忓彿浣嶆暟" prop="noByteNum" rules="required">
+                        <el-input v-model="dataForm.noByteNum"></el-input>
+                </zt-form-item>
+      <zt-form-item label="澶囨敞" prop="remark" rules="required">
+                        <el-input v-model="dataForm.remark"></el-input>
+                </zt-form-item>
+    </el-form>
+  </zt-dialog>
+</template>
+
+<script>
+  export default {
+    data() {
+      return {
+        dataForm: {
+          id: '',
+          funCode: '',
+          name: '',
+          codeRule: '',
+          tableName: '',
+          noByteNum: '',
+          remark: ''
+        }
+      }
+    },
+    methods: {
+      // 鑾峰彇淇℃伅
+      async getInfo() {
+        let res = await this.$http.get(`/coderule/SysCodeRule/${this.dataForm.id}`)
+        this.dataForm = {
+          ...this.dataForm,
+          ...res.data
+        }
+      },
+      // 琛ㄥ崟鎻愪氦
+      async formSubmit() {
+        let res = await this.$http[!this.dataForm.id ? 'post' : 'put']('/coderule/SysCodeRule/', this.dataForm)
+        if (res.success) {
+          await this.$tip.success()
+          this.$refs.dialog.close()
+          this.$emit('refreshDataList')
+        }
+      }
+    }
+  }
+</script>
diff --git a/web/src/views/modules/sys/codeRule/SysCodeRule.vue b/web/src/views/modules/sys/codeRule/SysCodeRule.vue
new file mode 100644
index 0000000..1a7c793
--- /dev/null
+++ b/web/src/views/modules/sys/codeRule/SysCodeRule.vue
@@ -0,0 +1,42 @@
+<template>
+  <el-card shadow="never" class="aui-card--fill">
+    <div class="mod-coderule-sysCodeRule}">
+      <zt-table-wraper query-url="/coderule/SysCodeRule/page" delete-url="/coderule/SysCodeRule" v-slot="{ table }">
+        <el-form :inline="true" :model="dataForm" @keyup.enter.native="table.query()">
+          <el-form-item>
+            <zt-button type="query" @click="table.query()"/>
+            <zt-button type="add" perm="coderule:add" @click="table.editHandle()"/>
+            <zt-button type="delete" perm="coderule:delete" @click="table.deleteHandle()"/>
+          </el-form-item>
+        </el-form>
+        <el-table v-loading="table.dataLoading" :data="table.dataList" height="100px" v-adaptive="{bottomOffset:70}" border @selection-change="table.selectionChangeHandle">
+          <el-table-column type="selection" width="40"/>
+            <el-table-column prop="funCode" label="鍔熻兘缂栫爜"/>
+                <el-table-column prop="name" label="鍔熻兘鍚嶇О"/>
+                <el-table-column prop="codeRule" label="缂栧彿瑙勫垯"/>
+                <el-table-column prop="tableName" label="鏁版嵁琛ㄥ悕绉�"/>
+                <el-table-column prop="noByteNum" label="搴忓彿浣嶆暟"/>
+                <el-table-column prop="remark" label="澶囨敞"/>
+              <zt-table-column-handle :table="table" edit-perm="coderule:update" delete-perm="coderule::delete"/>
+        </el-table>
+        <!-- 寮圭獥, 鏂板 / 淇敼 -->
+        <add-or-update @refreshDataList="table.query"/>
+      </zt-table-wraper>
+    </div>
+  </el-card>
+</template>
+
+<script>
+  import AddOrUpdate from './SysCodeRule-AddOrUpdate'
+  export default {
+    data() {
+      return {
+        dataForm: {
+        }
+      }
+    },
+    components: {
+      AddOrUpdate
+    }
+  }
+</script>
diff --git a/zt/core/src/main/java/com/zt/modules/coderule/controller/SysCodeRuleController.java b/zt/core/src/main/java/com/zt/modules/coderule/controller/SysCodeRuleController.java
new file mode 100644
index 0000000..c2776fb
--- /dev/null
+++ b/zt/core/src/main/java/com/zt/modules/coderule/controller/SysCodeRuleController.java
@@ -0,0 +1,104 @@
+package com.zt.modules.coderule.controller;
+
+
+import com.zt.common.annotation.LogOperation;
+import com.zt.common.constant.Constant;
+import com.zt.common.annotation.QueryParam;
+import com.zt.common.db.query.QueryFilter;
+import com.zt.common.servlet.Result;
+import com.zt.common.servlet.PageResult;
+import com.zt.common.validator.AssertUtils;
+import com.zt.common.validator.ValidatorUtils;
+import com.zt.common.validator.group.AddGroup;
+import com.zt.common.validator.group.DefaultGroup;
+import com.zt.common.validator.group.UpdateGroup;
+import com.zt.modules.coderule.model.SysCodeRule;
+import com.zt.modules.coderule.service.SysCodeRuleService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+import springfox.documentation.annotations.ApiIgnore;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * sys_code_rule
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-09
+ */
+@RestController
+@RequestMapping("/coderule/SysCodeRule/")
+@Api(tags="sys_code_rule")
+public class SysCodeRuleController {
+    @Autowired
+    private SysCodeRuleService sysCodeRuleService;
+
+    @GetMapping("page")
+    @ApiOperation("鍒嗛〉")
+    @ApiImplicitParams({
+        @ApiImplicitParam(name = Constant.Q.PAGE, value = Constant.QV.PAGE, required = true, dataType = Constant.QT.INT),
+        @ApiImplicitParam(name = Constant.Q.LIMIT, value = Constant.QV.LIMIT, required = true, dataType = Constant.QT.INT),
+        @ApiImplicitParam(name = Constant.Q.ORDER_FIELD, value = Constant.QV.ORDER_FIELD, dataType = Constant.QT.STRING),
+        @ApiImplicitParam(name = Constant.Q.ORDER, value = Constant.QV.ORDER, dataType = Constant.QT.STRING),
+    })
+    public PageResult<SysCodeRule> page(@ApiIgnore @QueryParam QueryFilter queryFilter){
+
+        return PageResult.ok(sysCodeRuleService.page(queryFilter));
+    }
+
+    @GetMapping("getNewCode")
+    @ApiOperation("淇℃伅")
+    public Result<String> getNewCode(Map<String,String> map){
+         String data = sysCodeRuleService.getNewCode(map);
+        return Result.ok(data);
+    }
+
+    @GetMapping("{id}")
+    @ApiOperation("淇℃伅")
+    public Result<SysCodeRule> get(@PathVariable("id") Long id){
+        SysCodeRule data = sysCodeRuleService.get(id);
+
+        return Result.ok(data);
+    }
+
+    @PostMapping
+    @ApiOperation("鏂板")
+    @LogOperation("鏂板")
+    public Result insert(@RequestBody SysCodeRule sysCodeRule){
+        //鏁堥獙鏁版嵁
+        ValidatorUtils.validateEntity(sysCodeRule, AddGroup.class, DefaultGroup.class);
+        sysCodeRuleService.insert(sysCodeRule);
+
+        return Result.ok();
+    }
+
+    @PutMapping
+    @ApiOperation("淇敼")
+    @LogOperation("淇敼")
+    public Result update(@RequestBody SysCodeRule sysCodeRule){
+        //鏁堥獙鏁版嵁
+        ValidatorUtils.validateEntity(sysCodeRule, UpdateGroup.class, DefaultGroup.class);
+        sysCodeRuleService.update(sysCodeRule);
+
+        return Result.ok();
+    }
+
+    @DeleteMapping
+    @ApiOperation("鍒犻櫎")
+    @LogOperation("鍒犻櫎")
+    public Result delete(@RequestBody Long[] ids){
+        //鏁堥獙鏁版嵁
+        AssertUtils.isArrayEmpty(ids, "id");
+        sysCodeRuleService.delete(ids);
+
+        return Result.ok();
+    }
+
+}
diff --git a/zt/core/src/main/java/com/zt/modules/coderule/dao/SysCodeRuleDao.java b/zt/core/src/main/java/com/zt/modules/coderule/dao/SysCodeRuleDao.java
new file mode 100644
index 0000000..327b316
--- /dev/null
+++ b/zt/core/src/main/java/com/zt/modules/coderule/dao/SysCodeRuleDao.java
@@ -0,0 +1,28 @@
+package com.zt.modules.coderule.dao;
+
+import com.zt.common.dao.BaseDao;
+import com.zt.modules.coderule.model.SysCodeRule;
+import org.apache.ibatis.annotations.Mapper;
+
+
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * sys_code_rule
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-09
+ */
+@Mapper
+public interface SysCodeRuleDao extends BaseDao<SysCodeRule> {
+
+    List<SysCodeRule> getList(Map<String, Object> params);
+
+    SysCodeRule getCodeRule(Map<String, String> map);
+
+    String getProjectIdentity(String projectId);
+
+    String getMaxCode(String tableName, String newCodeTemplet);
+}
diff --git a/zt/core/src/main/java/com/zt/modules/coderule/model/SysCodeRule.java b/zt/core/src/main/java/com/zt/modules/coderule/model/SysCodeRule.java
new file mode 100644
index 0000000..0272406
--- /dev/null
+++ b/zt/core/src/main/java/com/zt/modules/coderule/model/SysCodeRule.java
@@ -0,0 +1,42 @@
+package com.zt.modules.coderule.model;
+
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.zt.common.entity.BusiEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * sys_code_rule
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-09
+ */
+@Data
+@EqualsAndHashCode(callSuper=false)
+@TableName("sys_code_rule")
+public class SysCodeRule extends BusiEntity {
+	private static final long serialVersionUID = 1L;
+
+	@ApiModelProperty(value = "")
+	private String funCode;
+
+	@ApiModelProperty(value = "")
+	private String name;
+
+	@ApiModelProperty(value = "")
+	private String codeRule;
+
+	@ApiModelProperty(value = "")
+	private String tableName;
+
+	@ApiModelProperty(value = "")
+	private Integer noByteNum;
+
+	@ApiModelProperty(value = "")
+	private String remark;
+
+}
diff --git a/zt/core/src/main/java/com/zt/modules/coderule/service/SysCodeRuleService.java b/zt/core/src/main/java/com/zt/modules/coderule/service/SysCodeRuleService.java
new file mode 100644
index 0000000..c8668e9
--- /dev/null
+++ b/zt/core/src/main/java/com/zt/modules/coderule/service/SysCodeRuleService.java
@@ -0,0 +1,69 @@
+package com.zt.modules.coderule.service;
+
+import cn.hutool.core.convert.Convert;
+import com.zt.common.service.BaseService;
+import com.zt.modules.coderule.dao.SysCodeRuleDao;
+import com.zt.modules.coderule.model.SysCodeRule;
+import com.zt.modules.workflowconfig.dao.WfDefDao;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import com.zt.common.db.query.QueryFilter;
+import javax.annotation.Resource;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+
+
+/**
+ * sys_code_rule
+ *
+ * @author zt generator 
+ * @since 1.0.0 2023-11-09
+ */
+@Service
+public class SysCodeRuleService  extends BaseService<SysCodeRuleDao, SysCodeRule> {
+    /**
+     * 鍒嗛〉鏌ヨ
+     *
+     * @param queryFilter
+     * @return
+     */
+    public List<SysCodeRule> page(QueryFilter queryFilter) {
+        return baseDao.getList(queryFilter.getQueryParams());
+    }
+
+    /**
+     * 鍒犻櫎
+     *
+     * @param ids
+     */
+    public void delete(Long[] ids) {
+        super.deleteLogic(ids);
+    }
+
+    public String getNewCode(Map<String, String> map) {
+        SysCodeRule codeRule = baseDao.getCodeRule(map);
+        String newCodeTemplet = codeRule.getFunCode();
+        if (map.get("projectId")!=null){
+            String projectIdentity = baseDao.getProjectIdentity(map.get("projectId"));
+            newCodeTemplet = newCodeTemplet.replace("[椤圭洰缂栧彿]",projectIdentity);
+        }
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
+        String year = sdf.format(new Date());
+        newCodeTemplet = newCodeTemplet.replace("[骞翠唤]",year);
+
+        String xhTemplet = StringUtils.substring("__________",0,codeRule.getNoByteNum()-1);
+        newCodeTemplet = newCodeTemplet.replace("[搴忓彿]",xhTemplet);
+        int xhStartPosition = newCodeTemplet.indexOf(xhTemplet);
+
+        String maxCode = baseDao.getMaxCode(codeRule.getTableName(),newCodeTemplet);
+        String maxCodeXh = "0";
+        if (StringUtils.isNotBlank(maxCode))
+            maxCodeXh = StringUtils.substring(maxCode,xhStartPosition,xhStartPosition+codeRule.getNoByteNum()-1);
+        String newCodeXh = String.format("%0"+codeRule.getNoByteNum()+"d", Convert.toInt(maxCodeXh)+1);
+        String newCode = newCodeTemplet.replace(xhTemplet,newCodeXh);
+        return newCode;
+    }
+}
diff --git a/zt/core/src/main/resources/mapper/coderule/SysCodeRuleDao.xml b/zt/core/src/main/resources/mapper/coderule/SysCodeRuleDao.xml
new file mode 100644
index 0000000..ee2f579
--- /dev/null
+++ b/zt/core/src/main/resources/mapper/coderule/SysCodeRuleDao.xml
@@ -0,0 +1,30 @@
+<?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.zt.modules.coderule.dao.SysCodeRuleDao">
+
+    <select id="getList" resultType="com.zt.modules.coderule.model.SysCodeRule">
+        select a.*
+        from sys_code_rule a
+        <where>
+            a.is_delete = 0
+            <if test="whereSql!=null">
+                and ${whereSql}
+            </if>
+        </where>
+        <if test="orderBySql!=null">
+            ORDER BY ${orderBySql}
+        </if>
+    </select>
+    <select id="getCodeRule" resultType="com.zt.modules.coderule.model.SysCodeRule">
+        select * from sys_code_rule where fun_code = #{funCode}
+    </select>
+    <select id="getProjectIdentity" resultType="java.lang.String">
+        select IDENTITY from project where id = ${projectId}
+    </select>
+    <select id="getMaxCode" resultType="java.lang.String">
+        select max(code) from ${tableName} where code like '${newCodeTemplet}'
+    </select>
+
+
+</mapper>

--
Gitblit v1.9.1