From 4445d42621b9c8ac8cf4a81e4c4734fc55eb69ba Mon Sep 17 00:00:00 2001 From: chenshuichuan <1154693969@qq.com> Date: Fri, 7 Jun 2024 22:06:28 +0800 Subject: [PATCH] add auto code --- .../erp/dal/redis/no/ErpNoRedisDAO.java | 2 +- .../module/mes/enums/ErrorCodeConstants.java | 17 ++-- .../module/mes/dal/mysql/bom/BomMapper.java | 5 +- .../ItemRequisitionMapper.java | 5 +- .../module/mes/dal/mysql/plan/PlanMapper.java | 5 +- .../module/mes/dal/mysql/task/TaskMapper.java | 5 +- .../mes/framework/redis/MesNoRedisDAO.java | 80 +++++++++++++++++++ .../framework/redis/RedisKeyConstants.java | 18 +++++ .../mes/service/bom/BomServiceImpl.java | 14 +++- .../ItemRequisitionServiceImpl.java | 14 +++- .../mes/service/plan/PlanServiceImpl.java | 15 +++- .../mes/service/task/TaskServiceImpl.java | 14 ++++ 12 files changed, 179 insertions(+), 15 deletions(-) create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/framework/redis/MesNoRedisDAO.java create mode 100644 yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/framework/redis/RedisKeyConstants.java diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java index f7d976d28..89b6b9dfa 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/dal/redis/no/ErpNoRedisDAO.java @@ -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); } } diff --git a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java index 9ea776c84..ab05ee70a 100644 --- a/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java +++ b/yudao-module-mes/yudao-module-mes-api/src/main/java/cn/iocoder/yudao/module/mes/enums/ErrorCodeConstants.java @@ -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, "投料明细不存在"); } diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/bom/BomMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/bom/BomMapper.java index 175a755b8..d35941d00 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/bom/BomMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/bom/BomMapper.java @@ -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 { .betweenIfPresent(BomDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(BomDO::getId)); } - + default BomDO selectByNo(String no) { + return selectOne(BomDO::getCode, no); + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/itemrequisition/ItemRequisitionMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/itemrequisition/ItemRequisitionMapper.java index 8e3d9312f..8fd1685a7 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/itemrequisition/ItemRequisitionMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/itemrequisition/ItemRequisitionMapper.java @@ -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 { .betweenIfPresent(ItemRequisitionDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(ItemRequisitionDO::getId)); } - + default ItemRequisitionDO selectByNo(String no) { + return selectOne(ItemRequisitionDO::getCode, no); + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/plan/PlanMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/plan/PlanMapper.java index 2a22128bc..bb593effc 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/plan/PlanMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/plan/PlanMapper.java @@ -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 { .betweenIfPresent(PlanDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(PlanDO::getId)); } - + default PlanDO selectByNo(String no) { + return selectOne(PlanDO::getCode, no); + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/task/TaskMapper.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/task/TaskMapper.java index 52efa3677..aa7d3b026 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/task/TaskMapper.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/task/TaskMapper.java @@ -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 { .betweenIfPresent(TaskDO::getCreateTime, reqVO.getCreateTime()) .orderByDesc(TaskDO::getId)); } - + default TaskDO selectByNo(String no) { + return selectOne(TaskDO::getCode, no); + } } \ No newline at end of file diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/framework/redis/MesNoRedisDAO.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/framework/redis/MesNoRedisDAO.java new file mode 100644 index 000000000..a58e71df5 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/framework/redis/MesNoRedisDAO.java @@ -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); + } +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/framework/redis/RedisKeyConstants.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/framework/redis/RedisKeyConstants.java new file mode 100644 index 000000000..8c9682b27 --- /dev/null +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/framework/redis/RedisKeyConstants.java @@ -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:"; + +} diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/bom/BomServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/bom/BomServiceImpl.java index d4f963966..19a03a140 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/bom/BomServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/bom/BomServiceImpl.java @@ -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()); // 返回 diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemRequisitionServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemRequisitionServiceImpl.java index 62268a1c1..9423b6ad6 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemRequisitionServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/itemrequisition/ItemRequisitionServiceImpl.java @@ -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); // 插入子表 diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanServiceImpl.java index 5bc18b3ba..c2917828b 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/plan/PlanServiceImpl.java @@ -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(); diff --git a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/task/TaskServiceImpl.java b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/task/TaskServiceImpl.java index 6cf5173e4..b252e9579 100644 --- a/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/task/TaskServiceImpl.java +++ b/yudao-module-mes/yudao-module-mes-biz/src/main/java/cn/iocoder/yudao/module/mes/service/task/TaskServiceImpl.java @@ -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); // 插入子表