add auto code

plp
chenshuichuan 2 years ago
parent 1cbc8bb3a2
commit 4445d42621

@ -90,7 +90,7 @@ public class ErpNoRedisDAO {
Long no = stringRedisTemplate.opsForValue().increment(key);
// 设置过期时间
stringRedisTemplate.expire(key, Duration.ofDays(1L));
return noPrefix + String.format("%06d", no);
return noPrefix + String.format("%03d", no);
}
}

@ -10,6 +10,7 @@ import cn.iocoder.yudao.framework.common.exception.ErrorCode;
public interface ErrorCodeConstants {
ErrorCode BOM_NOT_EXISTS = new ErrorCode(5_001, "产品BOM不存在");
ErrorCode BOM_EXISTS = new ErrorCode(5_002, "产品BOM已存在");
ErrorCode ORGANIZATION_NOT_EXISTS = new ErrorCode(5_0011, "产线工位不存在");
ErrorCode ORGANIZATION_EXITS_CHILDREN = new ErrorCode(5_0012, "存在存在子产线工位,无法删除");
ErrorCode ORGANIZATION_PARENT_NOT_EXITS = new ErrorCode(5_0013,"父级产线工位不存在");
@ -17,10 +18,12 @@ public interface ErrorCodeConstants {
ErrorCode ORGANIZATION_NAME_DUPLICATE = new ErrorCode(5_0015, "已经存在该组织名称的产线工位");
ErrorCode ORGANIZATION_PARENT_IS_CHILD = new ErrorCode(5_0016, "不能设置自己的子Organization为父Organization");
ErrorCode TASK_NOT_EXISTS = new ErrorCode(5_002, "生产任务单不存在");
ErrorCode TASK_EXISTS = new ErrorCode(5_003, "生产任务单已存在");
ErrorCode TASK_DETAIL_NOT_EXISTS = new ErrorCode(5_005, "任务单明细不存在");
ErrorCode PLAN_NOT_EXISTS = new ErrorCode(5_003, "生产计划不存在");
ErrorCode PLAN_EXISTS = new ErrorCode(5_003, "生产计划已经存在");
ErrorCode ITEM_REQUISITION_NOT_EXISTS = new ErrorCode(5_004, "生产领料不存在");
ErrorCode ITEM_REQUISITION_EXISTS = new ErrorCode(5_004, "生产领料已存在");
ErrorCode RECORD_TEMPLATE_NOT_EXISTS = new ErrorCode(5_006, "记录表不存在");
ErrorCode RECORD_CHENGXING_NOT_EXISTS = new ErrorCode(5_0061, "成型记录不存在");
ErrorCode RECORD_SUIJIANG_NOT_EXISTS = new ErrorCode(5_0062, "碎浆记录不存在");
@ -38,16 +41,16 @@ public interface ErrorCodeConstants {
ErrorCode WORK_TEAM_DETAIL_NOT_EXISTS = new ErrorCode(5_0071, "班组成员不存在");
ErrorCode PRODUCE_REPORT_NOT_EXISTS = new ErrorCode(5_008, "生产报工单不存在");
ErrorCode PRODUCE_REPORT_DETAIL_NOT_EXISTS = new ErrorCode(5_0081, "生产报工明细不存在");
ErrorCode MACHINE_COMPONENT_EXITS_CHILDREN = new ErrorCode(5_008, "生产报工单不存在");
ErrorCode MACHINE_COMPONENT_EXITS_CHILDREN = new ErrorCode(5_008, "机台组织存在子组织");
ErrorCode MACHINE_COMPONENT_NOT_EXISTS = new ErrorCode(5_0081, "生产报工明细不存在");
ErrorCode MACHINE_COMPONENT_PARENT_ERROR = new ErrorCode(5_0081, "生产报工明细不存在");
ErrorCode MACHINE_COMPONENT_PARENT_NOT_EXITS = new ErrorCode(5_008, "生产报工单不存在");
ErrorCode MACHINE_COMPONENT_PARENT_IS_CHILD = new ErrorCode(5_0081, "生产报工明细不存在");
ErrorCode MACHINE_COMPONENT_NAME_DUPLICATE = new ErrorCode(5_0081, "生产报工明细不存在");
ErrorCode SALE_ORDER_NOT_EXISTS = new ErrorCode(5_0081, "生产报工明细不存在");
ErrorCode SALE_ORDER_ITEMS_NOT_EXISTS = new ErrorCode(5_0081, "生产报工明细不存在");
ErrorCode STOCK_WORKSHOP_DETAIL_NOT_EXISTS = new ErrorCode(5_0081, "生产报工明细不存在");
ErrorCode STOCK_WORKSHOP_NOT_EXISTS = new ErrorCode(5_0081, "生产报工明细不存在");
ErrorCode FEEDING_RECORD_NOT_EXISTS = new ErrorCode(5_0081, "生产报工明细不存在");
ErrorCode SALE_ORDER_NOT_EXISTS = new ErrorCode(5_0081, "销售单不存在");
ErrorCode SALE_ORDER_ITEMS_NOT_EXISTS = new ErrorCode(5_0081, "销售单明细不存在");
ErrorCode STOCK_WORKSHOP_DETAIL_NOT_EXISTS = new ErrorCode(5_0081, "车间仓明细不存在");
ErrorCode STOCK_WORKSHOP_NOT_EXISTS = new ErrorCode(5_0081, "车间仓库存不存在");
ErrorCode FEEDING_RECORD_NOT_EXISTS = new ErrorCode(5_0081, "投料明细不存在");
}

@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.bom.BomDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.*;
@ -29,5 +30,7 @@ public interface BomMapper extends BaseMapperX<BomDO> {
.betweenIfPresent(BomDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(BomDO::getId));
}
default BomDO selectByNo(String no) {
return selectOne(BomDO::getCode, no);
}
}

@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.itemrequisition.ItemRequisitionDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.itemrequisition.vo.*;
@ -30,5 +31,7 @@ public interface ItemRequisitionMapper extends BaseMapperX<ItemRequisitionDO> {
.betweenIfPresent(ItemRequisitionDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(ItemRequisitionDO::getId));
}
default ItemRequisitionDO selectByNo(String no) {
return selectOne(ItemRequisitionDO::getCode, no);
}
}

@ -6,6 +6,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.plan.vo.*;
@ -36,5 +37,7 @@ public interface PlanMapper extends BaseMapperX<PlanDO> {
.betweenIfPresent(PlanDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(PlanDO::getId));
}
default PlanDO selectByNo(String no) {
return selectOne(PlanDO::getCode, no);
}
}

@ -5,6 +5,7 @@ import java.util.*;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseOrderDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO;
import org.apache.ibatis.annotations.Mapper;
import cn.iocoder.yudao.module.mes.controller.admin.task.vo.*;
@ -28,5 +29,7 @@ public interface TaskMapper extends BaseMapperX<TaskDO> {
.betweenIfPresent(TaskDO::getCreateTime, reqVO.getCreateTime())
.orderByDesc(TaskDO::getId));
}
default TaskDO selectByNo(String no) {
return selectOne(TaskDO::getCode, no);
}
}

@ -0,0 +1,80 @@
package cn.iocoder.yudao.module.mes.framework.redis;
import cn.hutool.core.date.DatePattern;
import cn.hutool.core.date.DateUtil;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.time.Duration;
import java.time.LocalDateTime;
/**
* Erp Redis DAO
*
* @author HUIHUI
*/
@Repository
public class MesNoRedisDAO {
/**
* {@link cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldDO}
*/
public static final String MOLD_NO_PREFIX = "MUJU-";
/**
* {@link cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO}
*/
public static final String TASK_NO_PREFIX = "RWD-";
/**
* {@link cn.iocoder.yudao.module.mes.dal.dataobject.plan.PlanDO}
*/
public static final String PLAN_NO_PREFIX = "JH-";
/**
* BOM {@link cn.iocoder.yudao.module.mes.dal.dataobject.bom.BomDO}
*/
public static final String BOM_NO_PREFIX = "BOM-";
/**
* {@link cn.iocoder.yudao.module.mes.dal.dataobject.bom.BomDO}
*/
public static final String ITEM_REQUISITION_NO_PREFIX = "LL-";
@Resource
private StringRedisTemplate stringRedisTemplate;
/**
* 使 {PREFIX} + yyyyMMdd + 6
* QTRK 202109 000001
*
* @param prefix
* @return
*/
public String generate6(String prefix) {
// 递增序号
String noPrefix = prefix + DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATE_PATTERN);
String key = RedisKeyConstants.NO + noPrefix;
Long no = stringRedisTemplate.opsForValue().increment(key);
// 设置过期时间
stringRedisTemplate.expire(key, Duration.ofDays(1L));
return noPrefix + String.format("%06d", no);
}
public String generate3(String prefix) {
// 递增序号
String noPrefix = prefix + DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATE_PATTERN);
String key = RedisKeyConstants.NO + noPrefix;
Long no = stringRedisTemplate.opsForValue().increment(key);
// 设置过期时间
stringRedisTemplate.expire(key, Duration.ofDays(1L));
return noPrefix + String.format("%03d", no);
}
public String generate2(String prefix) {
// 递增序号
String noPrefix = prefix + DateUtil.format(LocalDateTime.now(), DatePattern.PURE_DATE_PATTERN);
String key = RedisKeyConstants.NO + noPrefix;
Long no = stringRedisTemplate.opsForValue().increment(key);
// 设置过期时间
stringRedisTemplate.expire(key, Duration.ofDays(1L));
return noPrefix + String.format("%02d", no);
}
}

@ -0,0 +1,18 @@
package cn.iocoder.yudao.module.mes.framework.redis;
/**
* CRM Redis Key
*
* @author
*/
public interface RedisKeyConstants {
/**
*
*
* KEY trade_no:{prefix}
* VALUE
*/
String NO = "mes:seq_no:";
}

@ -7,6 +7,8 @@ import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService;
import cn.iocoder.yudao.module.mes.framework.redis.MesNoRedisDAO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
@ -26,6 +28,7 @@ import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.PURCHASE_ORDER_NO_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
@ -45,13 +48,22 @@ public class BomServiceImpl implements BomService {
private ErpProductService productService;
@Resource
private ErpProductUnitService productUnitService;
@Resource
private MesNoRedisDAO noRedisDAO;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createBom(BomSaveReqVO createReqVO) {
// 插入
BomDO bom = BeanUtils.toBean(createReqVO, BomDO.class);
bomMapper.insert(bom);
if(StringUtils.isEmpty(bom.getCode())){
// 1.4 生成订单号,并校验唯一性
String no = noRedisDAO.generate2(MesNoRedisDAO.BOM_NO_PREFIX);
if (bomMapper.selectByNo(no) != null) {
throw exception(PURCHASE_ORDER_NO_EXISTS);
}
bom.setCode(no);
}
// 插入子表
createBomDetailList(bom.getId(), createReqVO.getBomDetails());
// 返回

@ -1,5 +1,7 @@
package cn.iocoder.yudao.module.mes.service.itemrequisition;
import cn.iocoder.yudao.module.mes.framework.redis.MesNoRedisDAO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
@ -18,6 +20,7 @@ import cn.iocoder.yudao.module.mes.dal.mysql.itemrequisition.ItemRequisitionDeta
import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.PURCHASE_ORDER_NO_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
@ -33,12 +36,21 @@ public class ItemRequisitionServiceImpl implements ItemRequisitionService {
private ItemRequisitionMapper itemRequisitionMapper;
@Resource
private ItemRequisitionDetailMapper itemRequisitionDetailMapper;
@Resource
private MesNoRedisDAO noRedisDAO;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createItemRequisition(ItemRequisitionSaveReqVO createReqVO) {
// 插入
ItemRequisitionDO itemRequisition = BeanUtils.toBean(createReqVO, ItemRequisitionDO.class);
if(StringUtils.isEmpty(itemRequisition.getCode())){
// 1.4 生成订单号,并校验唯一性
String no = noRedisDAO.generate2(MesNoRedisDAO.ITEM_REQUISITION_NO_PREFIX);
if (itemRequisitionMapper.selectByNo(no) != null) {
throw exception(PURCHASE_ORDER_NO_EXISTS);
}
itemRequisition.setCode(no);
}
itemRequisitionMapper.insert(itemRequisition);
// 插入子表

@ -8,9 +8,11 @@ import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.bom.BomDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.task.TaskDO;
import cn.iocoder.yudao.module.mes.framework.redis.MesNoRedisDAO;
import cn.iocoder.yudao.module.mes.service.task.TaskService;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
@ -28,6 +30,7 @@ import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.PURCHASE_ORDER_NO_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
@ -41,11 +44,21 @@ public class PlanServiceImpl implements PlanService {
@Resource
private PlanMapper planMapper;
@Resource
private MesNoRedisDAO noRedisDAO;
@Override
public Long createPlan(PlanSaveReqVO createReqVO) {
// 插入
PlanDO plan = BeanUtils.toBean(createReqVO, PlanDO.class);
if(StringUtils.isEmpty(plan.getCode())){
// 1.4 生成订单号,并校验唯一性
String no = noRedisDAO.generate3(MesNoRedisDAO.PLAN_NO_PREFIX);
if (planMapper.selectByNo(no) != null) {
throw exception(PLAN_NOT_EXISTS);
}
plan.setCode(no);
}
planMapper.insert(plan);
// 返回
return plan.getId();

@ -4,11 +4,14 @@ import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import cn.iocoder.yudao.module.erp.dal.redis.no.ErpNoRedisDAO;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService;
import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomDetailRespVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.bom.BomDetailDO;
import cn.iocoder.yudao.module.mes.framework.redis.MesNoRedisDAO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
@ -28,6 +31,7 @@ import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.PURCHASE_ORDER_NO_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
@ -43,12 +47,22 @@ public class TaskServiceImpl implements TaskService {
private TaskMapper taskMapper;
@Resource
private TaskDetailMapper taskDetailMapper;
@Resource
private MesNoRedisDAO noRedisDAO;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createTask(TaskSaveReqVO createReqVO) {
// 插入
TaskDO task = BeanUtils.toBean(createReqVO, TaskDO.class);
if(StringUtils.isEmpty(task.getCode())){
// 1.4 生成订单号,并校验唯一性
String no = noRedisDAO.generate2(MesNoRedisDAO.TASK_NO_PREFIX);
if (taskMapper.selectByNo(no) != null) {
throw exception(PURCHASE_ORDER_NO_EXISTS);
}
task.setCode(no);
}
taskMapper.insert(task);
// 插入子表

Loading…
Cancel
Save