zzw
2023-11-09 56e6e761486c3486091317b379aaa4bfd884607f
编号
7个文件已添加
376 ■■■■■ 已修改文件
web/src/views/modules/sys/codeRule/SysCodeRule-AddOrUpdate.vue 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/sys/codeRule/SysCodeRule.vue 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/java/com/zt/modules/coderule/controller/SysCodeRuleController.java 104 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/java/com/zt/modules/coderule/dao/SysCodeRuleDao.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/java/com/zt/modules/coderule/model/SysCodeRule.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/java/com/zt/modules/coderule/service/SysCodeRuleService.java 69 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zt/core/src/main/resources/mapper/coderule/SysCodeRuleDao.xml 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
web/src/views/modules/sys/codeRule/SysCodeRule-AddOrUpdate.vue
New file
@@ -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>
web/src/views/modules/sys/codeRule/SysCodeRule.vue
New file
@@ -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>
zt/core/src/main/java/com/zt/modules/coderule/controller/SysCodeRuleController.java
New file
@@ -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();
    }
}
zt/core/src/main/java/com/zt/modules/coderule/dao/SysCodeRuleDao.java
New file
@@ -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);
}
zt/core/src/main/java/com/zt/modules/coderule/model/SysCodeRule.java
New file
@@ -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;
}
zt/core/src/main/java/com/zt/modules/coderule/service/SysCodeRuleService.java
New file
@@ -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;
    }
}
zt/core/src/main/resources/mapper/coderule/SysCodeRuleDao.xml
New file
@@ -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>