产品新增编码bug

plp
kkk-ops 4 months ago
parent 4cdc999867
commit 3007d516d0

@ -77,13 +77,14 @@ public class ErpProductCategoryController {
return success(BeanUtils.toBean(list, ErpProductCategoryRespVO.class)); return success(BeanUtils.toBean(list, ErpProductCategoryRespVO.class));
} }
@GetMapping("/simple-list") @GetMapping("/simple-list")
@Operation(summary = "获得产品分类精简列表", description = "只包含被开启的分类,主要用于前端的下拉选项") @Operation(summary = "获得产品分类精简列表", description = "只包含被开启的分类,主要用于前端的下拉选项")
public CommonResult<List<ErpProductCategoryRespVO>> getProductCategorySimpleList() { public CommonResult<List<ErpProductCategoryRespVO>> getProductCategorySimpleList() {
List<ErpProductCategoryDO> list = productCategoryService.getProductCategoryList( List<ErpProductCategoryDO> list = productCategoryService.getProductCategoryList(
new ErpProductCategoryListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus())); new ErpProductCategoryListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()));
return success(convertList(list, category -> new ErpProductCategoryRespVO() return success(convertList(list, category -> new ErpProductCategoryRespVO()
.setId(category.getId()).setName(category.getName()).setParentId(category.getParentId()))); .setId(category.getId()).setName(category.getName()).setParentId(category.getParentId()).setSort(category.getSort())));
} }
@GetMapping("/export-excel") @GetMapping("/export-excel")

@ -13,6 +13,7 @@ import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProduc
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ProductSaveReqVO; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ProductSaveReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductDO;
import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper;
import cn.iocoder.yudao.module.erp.framework.bean.ProductTypeEnum; import cn.iocoder.yudao.module.erp.framework.bean.ProductTypeEnum;
import cn.iocoder.yudao.module.erp.service.product.ErpProductCategoryService; import cn.iocoder.yudao.module.erp.service.product.ErpProductCategoryService;
import cn.iocoder.yudao.module.erp.service.product.ErpProductService; import cn.iocoder.yudao.module.erp.service.product.ErpProductService;
@ -30,6 +31,7 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
@ -41,11 +43,23 @@ public class ErpProductController {
@Resource @Resource
private ErpProductService productService; private ErpProductService productService;
@Resource
private ErpProductMapper productMapper;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建产品") @Operation(summary = "创建产品")
//@PreAuthorize("@ss.hasPermission('erp:product:create')") //@PreAuthorize("@ss.hasPermission('erp:product:create')")
public CommonResult<Long> createProduct(@Valid @RequestBody ProductSaveReqVO createReqVO) { public CommonResult<Long> createProduct(@Valid @RequestBody ProductSaveReqVO createReqVO) {
ErpProductPageReqVO productPageReqVO = new ErpProductPageReqVO();
productPageReqVO.setName(createReqVO.getName());
if (!productMapper.selectProductExist(productPageReqVO).getList().isEmpty()) {
return error(400,"名称不能重复");
}
productPageReqVO = new ErpProductPageReqVO();
productPageReqVO.setCode(createReqVO.getBarCode());
if (!productMapper.selectProductExist(productPageReqVO).getList().isEmpty()) {
return error(400,"编码不能重复");
}
return success(productService.createProduct(createReqVO)); return success(productService.createProduct(createReqVO));
} }

@ -11,6 +11,7 @@ import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUn
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitRespVO; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitSaveReqVO; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUnitSaveReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO; import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductUnitMapper;
import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService; import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -25,6 +26,7 @@ import java.io.IOException;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
@ -36,11 +38,18 @@ public class ErpProductUnitController {
@Resource @Resource
private ErpProductUnitService productUnitService; private ErpProductUnitService productUnitService;
@Resource
private ErpProductUnitMapper productUnitMapper;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建产品单位") @Operation(summary = "创建产品单位")
//@PreAuthorize("@ss.hasPermission('erp:product-unit:create')") //@PreAuthorize("@ss.hasPermission('erp:product-unit:create')")
public CommonResult<Long> createProductUnit(@Valid @RequestBody ErpProductUnitSaveReqVO createReqVO) { public CommonResult<Long> createProductUnit(@Valid @RequestBody ErpProductUnitSaveReqVO createReqVO) {
ErpProductUnitPageReqVO productUnitPageReqVO = new ErpProductUnitPageReqVO();
productUnitPageReqVO.setName(createReqVO.getName());
if (!productUnitMapper.selectProductUnitExist(productUnitPageReqVO).getList().isEmpty()) {
return error(400,"名称不能重复");
}
return success(productUnitService.createProductUnit(createReqVO)); return success(productUnitService.createProductUnit(createReqVO));
} }

@ -24,4 +24,7 @@ public class ErpProductPageReqVO extends PageParam {
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND) @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private LocalDateTime[] createTime; private LocalDateTime[] createTime;
@Schema(description = "产品编号", example = "11161")
private String code;
} }

@ -28,6 +28,13 @@ public interface ErpProductMapper extends BaseMapperX<ErpProductDO> {
.orderByDesc(ErpProductDO::getId)); .orderByDesc(ErpProductDO::getId));
} }
default PageResult<ErpProductDO> selectProductExist(ErpProductPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ErpProductDO>()
.eqIfPresent(ErpProductDO::getName, reqVO.getName())
.eqIfPresent(ErpProductDO::getBarCode, reqVO.getCode())
.orderByAsc(ErpProductDO::getId));
}
default Long selectCountByCategoryId(Long categoryId) { default Long selectCountByCategoryId(Long categoryId) {
return selectCount(ErpProductDO::getCategoryId, categoryId); return selectCount(ErpProductDO::getCategoryId, categoryId);
} }

@ -24,6 +24,12 @@ public interface ErpProductUnitMapper extends BaseMapperX<ErpProductUnitDO> {
.orderByDesc(ErpProductUnitDO::getId)); .orderByDesc(ErpProductUnitDO::getId));
} }
default PageResult<ErpProductUnitDO> selectProductUnitExist(ErpProductUnitPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<ErpProductUnitDO>()
.eqIfPresent(ErpProductUnitDO::getName, reqVO.getName())
.orderByDesc(ErpProductUnitDO::getId));
}
default ErpProductUnitDO selectByName(String name) { default ErpProductUnitDO selectByName(String name) {
return selectOne(ErpProductUnitDO::getName, name); return selectOne(ErpProductUnitDO::getName, name);
} }

@ -35,6 +35,7 @@ import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*; import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
@ -294,12 +295,12 @@ public class MoldBrandServiceImpl implements MoldBrandService {
@Override @Override
public List<MoldDO> getAllList() { public List<MoldDO> getAllList() {
return Collections.emptyList(); return moldMapper.selectList();
} }
@Override @Override
public List<MoldBrandDO> getMoldBrandList(Collection<Long> ids) { public List<MoldBrandDO> getMoldBrandList(Collection<Long> ids) {
return Collections.emptyList(); return moldBrandMapper.selectBatchIds(ids);
} }
private void validateMoldBrandProductExists(Long id) { private void validateMoldBrandProductExists(Long id) {

@ -1,6 +1,13 @@
package cn.iocoder.yudao.module.erp.service.mold; package cn.iocoder.yudao.module.erp.service.mold;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO; import cn.iocoder.yudao.module.erp.dal.dataobject.mold.MoldBrandDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductCategoryDO;
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.dataobject.stock.ErpWarehouseDO;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -17,6 +24,7 @@ import cn.iocoder.yudao.module.erp.dal.mysql.mold.MoldMapper;
import javax.annotation.Resource; import javax.annotation.Resource;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; 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.*; import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
/** /**
@ -79,16 +87,26 @@ public class MoldServiceImpl implements MoldService {
@Override @Override
public List<MoldDO> validMoldList(Collection<Long> ids) { public List<MoldDO> validMoldList(Collection<Long> ids) {
return Collections.emptyList(); if (CollUtil.isEmpty(ids)) {
return Collections.emptyList();
}
return moldMapper.selectBatchIds(ids);
} }
@Override @Override
public List<MoldRespVO> getMoldVOList(Collection<Long> ids) { public List<MoldRespVO> getMoldVOList(Collection<Long> ids) {
return Collections.emptyList(); if (CollUtil.isEmpty(ids)) {
return Collections.emptyList();
}
List<MoldDO> list = moldMapper.selectBatchIds(ids);
return buildMoldVOList(list);
} }
@Override @Override
public List<MoldRespVO> buildMoldVOList(List<MoldDO> list) { public List<MoldRespVO> buildMoldVOList(List<MoldDO> list) {
return Collections.emptyList(); if (CollUtil.isEmpty(list)) {
return Collections.emptyList();
}
return BeanUtils.toBean(list, MoldRespVO.class);
} }
} }

@ -6,11 +6,13 @@ import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomDetailRespVO; import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomDetailRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomPageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomRespVO; import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomRespVO;
import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomSaveReqVO; import cn.iocoder.yudao.module.mes.controller.admin.bom.vo.BomSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.bom.BomDO; import cn.iocoder.yudao.module.mes.dal.dataobject.bom.BomDO;
import cn.iocoder.yudao.module.mes.dal.mysql.bom.BomMapper;
import cn.iocoder.yudao.module.mes.service.bom.BomService; import cn.iocoder.yudao.module.mes.service.bom.BomService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
@ -26,6 +28,7 @@ import java.io.IOException;
import java.util.List; import java.util.List;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.EXPORT;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.error;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
@Tag(name = "管理后台 - 产品BOM") @Tag(name = "管理后台 - 产品BOM")
@ -36,11 +39,18 @@ public class BomController {
@Resource @Resource
private BomService bomService; private BomService bomService;
@Resource
private BomMapper bomMapper;
@PostMapping("/create") @PostMapping("/create")
@Operation(summary = "创建产品BOM") @Operation(summary = "创建产品BOM")
@PreAuthorize("@ss.hasPermission('mes:bom:create')") @PreAuthorize("@ss.hasPermission('mes:bom:create')")
public CommonResult<Long> createBom(@Valid @RequestBody BomSaveReqVO createReqVO) { public CommonResult<Long> createBom(@Valid @RequestBody BomSaveReqVO createReqVO) {
BomPageReqVO bomPageReqVO = new BomPageReqVO();
bomPageReqVO.setCode(createReqVO.getCode());
if (!bomMapper.selectBomExist(bomPageReqVO).getList().isEmpty()) {
return error(400,"编码不能重复");
}
return success(bomService.createBom(createReqVO)); return success(bomService.createBom(createReqVO));
} }

@ -30,6 +30,7 @@ import cn.iocoder.yudao.module.mes.service.zjproductrecord.ZjProductRecordServic
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.lang3.StringUtils;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;

@ -14,6 +14,7 @@ import cn.iocoder.yudao.module.mes.service.task.TaskService;
import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag; import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;

@ -28,6 +28,12 @@ public interface BomMapper extends BaseMapperX<BomDO> {
.orderByDesc(BomDO::getId)); .orderByDesc(BomDO::getId));
} }
default PageResult<BomDO> selectBomExist(BomPageReqVO reqVO) {
return selectPage(reqVO, new LambdaQueryWrapperX<BomDO>()
.eqIfPresent(BomDO::getCode, reqVO.getCode())
.orderByDesc(BomDO::getId));
}
default BomDO selectByNo(String no) { default BomDO selectByNo(String no) {
return selectOne(BomDO::getCode, no); return selectOne(BomDO::getCode, no);
} }

@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils; import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.erp.controller.admin.autocode.util.AutoCodeUtil;
import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO; import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ErpProductRespVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.in.ErpStockInSaveReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO; import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.out.ErpStockOutSaveReqVO;
@ -34,6 +35,7 @@ import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.service.user.AdminUserService; import cn.iocoder.yudao.module.system.service.user.AdminUserService;
import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.media.Schema;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -74,6 +76,9 @@ public class PlanServiceImpl implements PlanService {
@Resource @Resource
private ErpStockInService stockInService; private ErpStockInService stockInService;
@Autowired
private AutoCodeUtil autoCodeUtil;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public Long createPlan(PlanSaveReqVO createReqVO) { public Long createPlan(PlanSaveReqVO createReqVO) {
@ -81,11 +86,12 @@ public class PlanServiceImpl implements PlanService {
PlanDO plan = BeanUtils.toBean(createReqVO, PlanDO.class); PlanDO plan = BeanUtils.toBean(createReqVO, PlanDO.class);
if (StringUtils.isEmpty(plan.getCode())) { if (StringUtils.isEmpty(plan.getCode())) {
// 1.4 生成订单号,并校验唯一性 // 1.4 生成订单号,并校验唯一性
String no = noRedisDAO.generate3(MesNoRedisDAO.PLAN_NO_PREFIX); // String no = noRedisDAO.generate3(MesNoRedisDAO.PLAN_NO_PREFIX);
if (planMapper.selectByNo(no) != null) { // if (planMapper.selectByNo(no) != null) {
throw exception(PLAN_NOT_EXISTS); // throw exception(PLAN_NOT_EXISTS);
} // }
plan.setCode(no); // plan.setCode(no);
plan.setCode(autoCodeUtil.genSerialCode("PLAN_CODE",null));
} }
if(plan.getProductId()==null && plan.getTaskDetailId()!=null){ if(plan.getProductId()==null && plan.getTaskDetailId()!=null){
TaskDetailDO taskDetailDO = taskService.getTaskDetail(plan.getTaskDetailId()); TaskDetailDO taskDetailDO = taskService.getTaskDetail(plan.getTaskDetailId());

Loading…
Cancel
Save