cuijian
2023-08-29 a81b9fc7dc055874d501becd1862b4ff581c0d4a
编码规则
已添加11个文件
492 ■■■■■ 文件已修改
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/IdentityController.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/SerialNumberMapController.java 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/Identity.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/SerialNumberMap.java 43 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/IdentityMapper.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/SerialNumberMapMapper.java 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/SerialNumberMapMapper.xml 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IdentityService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/SerialNumberMapService.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/IdentityServiceImpl.java 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/SerialNumberMapServiceImpl.java 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/IdentityController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package org.jeecg.modules.eam.controller;
import io.swagger.annotations.Api;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.eam.service.IdentityService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/eam/sysIdentity")
@Api(value = "单号生成器 å‰ç«¯æŽ§åˆ¶å™¨")
public class IdentityController {
  @Autowired
  @Lazy
  private IdentityService sysIdentityService;
  // æ–°å¢ž
  @GetMapping("/getNumNew")
  public Result<?> getNum(@RequestParam(name="type",required = true)String type,
                          @RequestParam(name="length",defaultValue = "4")Integer length) {
    String serialNum = sysIdentityService.getNumByTypeAndLength(type, length);
    return Result.ok(serialNum);
  }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/SerialNumberMapController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,88 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.Api;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.system.query.QueryGenerator;
import org.jeecg.modules.eam.entity.SerialNumberMap;
import org.jeecg.modules.eam.service.SerialNumberMapService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletRequest;
import java.util.Arrays;
@RestController
@RequestMapping("/eam/serialNumber")
@Api(value = "单号规则映射关系 å‰ç«¯æŽ§åˆ¶å™¨")
public class SerialNumberMapController extends JeecgController<SerialNumberMap, SerialNumberMapService> {
    @Autowired
    @Lazy
    private SerialNumberMapService serialNumberMapService;
    @GetMapping(value = "/list")
    public Result<?> list(SerialNumberMap serialNumberMap,
                          @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
                          @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize, HttpServletRequest req) {
        QueryWrapper<SerialNumberMap> queryWrapper = QueryGenerator.initQueryWrapper(serialNumberMap, req.getParameterMap());
        Page<SerialNumberMap> page = new Page<SerialNumberMap>(pageNo, pageSize);
        IPage<SerialNumberMap> pageList = serialNumberMapService.page(page, queryWrapper);
        return Result.ok(pageList);
    }
    // æ–°å¢ž
    @PostMapping("/add")
    public Result<?> add (@RequestBody SerialNumberMap snm){
        snm.setYearFormat("yy");
        snm.setMonthFormat("MM");
        snm.setDayFormat("dd");
        serialNumberMapService.save(snm);
        return Result.ok();
    }
    @PutMapping(value = "/edit")
    public Result<?> edit(@RequestBody SerialNumberMap snm) {
        serialNumberMapService.updateById(snm);
        return Result.ok("更新成功!");
    }
    // åˆ é™¤
    @DeleteMapping("/delete")
    public Result<?> delete (@RequestParam(name="id",required = true) String id){
        serialNumberMapService.removeById(id);
        return Result.ok("删除成功");
    }
    @DeleteMapping(value = "/deleteBatch")
    public Result<?> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
        serialNumberMapService.removeByIds(Arrays.asList(ids.split(",")));
        return Result.ok("批量删除成功!");
    }
    /**
     * é€šè¿‡ç±»åž‹èŽ·å–å®Œæ•´ç¼–å· ã€èµ·å§‹å›ºå®šå­—符+企业代码(5)+å¹´(2)+月(2)+日(2)+流水号(4)】
     * @param type ç±»åž‹
     * @return Result
     */
    @GetMapping("/getSerialNumber")
    public Result<?> getSerialNumber(@RequestParam(name="type",required = true) String type){
        Result purchaseRequest = serialNumberMapService.getSerialNumber(type);
        return purchaseRequest;
    }
    /**
     * é€šè¿‡ç±»åž‹èŽ·å–ç¼–å·å‰ç¼€ã€èµ·å§‹å›ºå®šå­—ç¬¦+企业代码(5)+å¹´(2)+月(2)+日(2)】
     * @param type ç±»åž‹
     * @return Result
     */
    @GetMapping("/getSerial")
    public Result<?> getSerial(@RequestParam(name="type",required = true) String type){
        Result purchaseRequest = serialNumberMapService.getSerial(type);
        return purchaseRequest;
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/Identity.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,34 @@
package org.jeecg.modules.eam.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.system.base.entity.JeecgEntity;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("mom_sys_identity")
@ApiModel(value = "单据流水号生成表")
public class Identity extends JeecgEntity {
    // private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "流水号")
    private int num;
    @ApiModelProperty(value = "月份")
    private String monthValue;
    @ApiModelProperty(value = "年份")
    private String yearValue;
    @ApiModelProperty(value = "业务类型")
    private String type;
    @ApiModelProperty(value = "业务类型说明")
    private String remark;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/SerialNumberMap.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,43 @@
package org.jeecg.modules.eam.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import org.jeecg.common.system.base.entity.JeecgEntity;
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("mom_serial_number_map")
@ApiModel(value = "单号规则映射关系")
public class SerialNumberMap extends JeecgEntity {
    // private static final long serialVersionUID = 1L;
    @ApiModelProperty(value = "功能单据名称")
    private String functionName;
    @ApiModelProperty(value = "起始固定字符")
    private String beginSymbol;
    @ApiModelProperty(value = "企业代码")
    private String enterpriseCode;
    @ApiModelProperty(value = "å¹´")
    private String yearFormat;
    @ApiModelProperty(value = "月")
    private String monthFormat;
    @ApiModelProperty(value = "日")
    private String dayFormat;
    @ApiModelProperty(value = "功能类型")
    private String type;
    @ApiModelProperty(value = "生产过程检验表ID")
    private String identityId;
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/IdentityMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,27 @@
package org.jeecg.modules.eam.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.jeecg.modules.eam.entity.Identity;
public interface IdentityMapper extends BaseMapper<Identity> {
//    @Select("select id," +
//            "num," +
//            "month_value," +
//            "year_value," +
//            "type," +
//            "remark " +
//            " from mes_sys_identity t1 where t1.type = #{type}")
//    public MesSysIdentity findIdentityByType(@Param("type")String type);
    @Select("select id," +
            "num," +
            "month_value," +
            "year_value," +
            "type," +
            "remark " +
            " from mom_sys_identity t1 where t1.type = #{type} and t1.year_value = #{yearValue} and t1.month_value =#{monthValue}")
    public Identity findIdentityByType(@Param("type") String type, @Param("yearValue") String yearValue, @Param("monthValue") String monthValue);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/SerialNumberMapMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,25 @@
package org.jeecg.modules.eam.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.jeecg.modules.eam.entity.SerialNumberMap;
public interface SerialNumberMapMapper extends BaseMapper<SerialNumberMap> {
    @Select("select id," +
            "function_name," +
            "begin_symbol," +
            "enterprise_code," +
            "year_format," +
            "month_format," +
            "day_format," +
            "type," +
            "identity_id" +
            " from mom_serial_number_map t1 where t1.type = #{type}")
    public SerialNumberMap getByType(@Param("type") String type);
    @Select("<script> select F_GET_SEQ_ID(#{type}) </script>")
    public String getNum(@Param("type") String type);
    boolean  updateBatchByEnterpriseCode(@Param("enterpriseCode") String enterpriseCode);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/mapper/xml/SerialNumberMapMapper.xml
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,8 @@
<?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="org.jeecg.modules.eam.mapper.SerialNumberMapMapper">
    <update id="updateBatchByEnterpriseCode">
        update mom_serial_number_map set enterprise_code = #{enterpriseCode}
    </update>
</mapper>
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IdentityService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package org.jeecg.modules.eam.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.modules.eam.entity.Identity;
public interface IdentityService extends IService<Identity> {
    public Identity findIdentityByType(String type);
    /**
     * æ ¹æ®ç±»åž‹å’Œé•¿åº¦èŽ·å–æµæ°´å·
     * @param type
     * @return
     */
    public String getNumByTypeAndLength(String type, Integer length);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/SerialNumberMapService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package org.jeecg.modules.eam.service;
import com.baomidou.mybatisplus.extension.service.IService;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.eam.entity.SerialNumberMap;
public interface SerialNumberMapService extends IService<SerialNumberMap> {
    public Result<?> getSerialNumber(String type);
    public Result<?> getSerial(String type);
    public SerialNumberMap getByType(String type);
    boolean  updateBatchByEnterpriseCode(String creditCode);
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/IdentityServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,81 @@
package org.jeecg.modules.eam.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.eam.entity.Identity;
import org.jeecg.modules.eam.entity.SerialNumberMap;
import org.jeecg.modules.eam.mapper.IdentityMapper;
import org.jeecg.modules.eam.service.IdentityService;
import org.jeecg.modules.eam.service.SerialNumberMapService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.text.SimpleDateFormat;
import java.util.List;
@Service
public class IdentityServiceImpl extends ServiceImpl<IdentityMapper, Identity>
    implements IdentityService {
  @Autowired
  @Lazy
  private SerialNumberMapService serialNumberMapService;
  /**
   * é€šè¿‡type获取mes_sys_identity表实例,实现方法
   *
   * @param type ä¸šåŠ¡ç±»åž‹
   * @return MesSysIdentity mes_sys_identity表实例对象
   */
  @Override
  public Identity findIdentityByType(String type) {
    String yearValue = DateUtils.date2Str(new SimpleDateFormat("yyyy"));
    String monthValue = DateUtils.date2Str(new SimpleDateFormat("MM"));
    Identity identityByType = super.getBaseMapper().findIdentityByType(type, yearValue, monthValue);
    return identityByType;
  }
  @Override
  @Transactional(rollbackFor = {Exception.class})
  public String getNumByTypeAndLength(String type, Integer length) {
    SerialNumberMap serialNumberMap = serialNumberMapService.getByType(type);
    Result<?> result = serialNumberMapService.getSerial(type);
    String prefix = result.getMessage().toString();
    String identityId = serialNumberMap.getIdentityId();
    String currentDate = DateUtils.getCurrentDateStr();
    String yearValue = currentDate.split("-")[0];
    String monthValue = currentDate.split("-")[1];
    List<Identity> systemIdentityList =
            lambdaQuery()
                    .eq(Identity::getId, identityId)
                    .eq(Identity::getType, type)
                    .eq(Identity::getYearValue, yearValue)
                    .eq(Identity::getMonthValue, monthValue)
                    .list();
    Identity mesSysIdentity =
            systemIdentityList.size() > 0 ? systemIdentityList.get(0) : new Identity();
    Integer num = 1;
    if (StringUtils.isBlank(mesSysIdentity.getId())) {
      mesSysIdentity.setId(identityId);
      mesSysIdentity.setType(type);
      mesSysIdentity.setMonthValue(monthValue);
      mesSysIdentity.setYearValue(yearValue);
      mesSysIdentity.setNum(num);
      super.saveOrUpdate(mesSysIdentity);
      serialNumberMap.setIdentityId(mesSysIdentity.getId());
      serialNumberMapService.updateById(serialNumberMap);
    } else {
      num = mesSysIdentity.getNum() + 1;
      mesSysIdentity.setNum(num);
      super.saveOrUpdate(mesSysIdentity);
    }
    String serialNum = prefix + StringUtils.leftPad(String.valueOf(num), length, "0");
    return serialNum;
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/SerialNumberMapServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,127 @@
package org.jeecg.modules.eam.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.StrUtils;
import org.jeecg.modules.eam.entity.Identity;
import org.jeecg.modules.eam.entity.SerialNumberMap;
import org.jeecg.modules.eam.mapper.SerialNumberMapMapper;
import org.jeecg.modules.eam.service.IdentityService;
import org.jeecg.modules.eam.service.SerialNumberMapService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.text.SimpleDateFormat;
@Service
public class SerialNumberMapServiceImpl extends ServiceImpl<SerialNumberMapMapper, SerialNumberMap> implements SerialNumberMapService {
    @Autowired
    private IdentityService mesSysIdentityService;
//    @Autowired
//    private IEnterpriseService enterpriseService;
    /**
     * ç”Ÿæˆå®Œæ•´å•号【起始固定字符+企业代码(5)+å¹´(2)+月(2)+日(2)+流水号(4)】
     * @param type ä¸šåŠ¡ç±»åž‹
     * @return
     */
    @Override
    public Result<?> getSerialNumber(String type) {
        String serialNumber = "";
        if(StrUtils.isNotBlankOrNull(type)){
            // èŽ·å–æ˜ å°„è¡¨å¯¹è±¡
            SerialNumberMap byType = getByType(type);
            if(byType!=null){
                // åˆ¤æ–­mes_sys_identity表是否有当前type
                boolean b = checkIdentityByType(type);
                if(b){
                    // å•号生产规则 èµ·å§‹å›ºå®šå­—符+企业代码(5)+å¹´(2)+月(2)+日(2)+流水号(4)
                    String num = super.baseMapper.getNum(type);
                    String substring = num.substring(2, num.length());
                    serialNumber = byType.getBeginSymbol() +
                            byType.getEnterpriseCode()+
                            DateUtils.date2Str(new SimpleDateFormat(byType.getYearFormat()+byType.getMonthFormat()+byType.getDayFormat()))
                            +substring;
                }else{
                    return Result.error("生成单号失败!");
                }
            }else{
                return Result.error("类型不存在,请添加后重试!");
            }
        }else{
            return Result.error("参数错误,类型不能为空!");
        }
        return Result.ok(serialNumber);
    }
    /**
     * ç”Ÿæˆå•号前缀 ã€èµ·å§‹å›ºå®šå­—符+企业代码(5)+å¹´(2)+月(2)+日(2)】
     * @param type ä¸šåŠ¡ç±»åž‹
     * @return
     */
    @Override
    public Result<?> getSerial(String type) {
        String serialNumber = "";
//        Enterprise enterprise = enterpriseService.gerCurrentEnterprise();
//       String  enterpriseCode =  enterprise.getCode().substring(0,5);
        if(StrUtils.isNotBlankOrNull(type)){
            // èŽ·å–æ˜ å°„è¡¨å¯¹è±¡
            SerialNumberMap byType = getByType(type);
            if(byType!=null){
                // åˆ¤æ–­mes_sys_identity表是否有当前type
//                boolean b = checkIdentityByType(type);
//                if(b){
                    // å•号生产规则 èµ·å§‹å›ºå®šå­—符+企业代码(5)+å¹´(2)+月(2)+日(2)+流水号(4)
                serialNumber = byType.getBeginSymbol()  +
                        DateUtils.date2Str(new SimpleDateFormat(byType.getYearFormat()+byType.getMonthFormat()));
//                    serialNumber = byType.getBeginSymbol()  + enterpriseCode +
//                            DateUtils.date2Str(new SimpleDateFormat(byType.getYearFormat()+byType.getMonthFormat()+byType.getDayFormat()));
//                }else {
//                    return Result.error("生成单号前缀失败!");
//                }
            }else{
                return Result.error("类型不存在,请添加后重试!");
            }
        }else{
            return Result.error("参数错误,类型不能为空!");
        }
        return Result.ok(serialNumber);
    }
    @Override
    public SerialNumberMap getByType(String type) {
        SerialNumberMap byType = super.getBaseMapper().getByType(type);
        return byType;
    }
    @Override
    public boolean updateBatchByEnterpriseCode(String enterpriseCode) {
        return  super.baseMapper.updateBatchByEnterpriseCode(enterpriseCode);
    }
    /**
     * åˆ¤æ–­mes_sys_identity表是否有当前type,如果没有新增一条
     * @param type ä¸šåŠ¡ç±»åž‹
     * @return
     */
    public boolean checkIdentityByType(String type){
        boolean b = false;
        // é€šè¿‡type获取mes_sys_identity表实例
        Identity identityByType = mesSysIdentityService.findIdentityByType(type);
        if(identityByType!=null){
            b = true;
        }else{
            Identity mesSysIdentity = new Identity();
            mesSysIdentity.setType(type);
            mesSysIdentity.setMonthValue(DateUtils.date2Str(new SimpleDateFormat("MM")));
            mesSysIdentity.setYearValue(DateUtils.date2Str(new SimpleDateFormat("yyyy")));
            mesSysIdentity.setNum(0);
            mesSysIdentity.setRemark("自动添加");
            boolean save = mesSysIdentityService.save(mesSysIdentity);
            b = save;
        }
        return b;
    }
}