Compare commits

...

3 Commits

Author SHA1 Message Date
HuangHuiKang 8668c40dfc Merge branch 'main' into hhk 2 days ago
kkk-ops aed851fbc5 清除import 3 days ago
kkk-ops 307ba2b509 配方保存bug 3 days ago

@ -176,4 +176,6 @@ public interface ErrorCodeConstants {
ErrorCode AUTOCODE_RULE_NOT_EXISTS = new ErrorCode(1_111_004, "编码规则不存在");
ErrorCode AUTOCODE_PART_NOT_EXISTS = new ErrorCode(1_111_005, "编码规则组成不存在");
ErrorCode AUTOCODE_GEN_NOT_UNIQUE = new ErrorCode(1_111_006, "编码已存在");
ErrorCode PRODUCT_REFERENCES_EXIST = new ErrorCode(1_003_000_000, "存在产品已被引用,请先删除引用。");
}

@ -36,6 +36,11 @@ public interface ErpStockMapper extends BaseMapperX<ErpStockDO> {
ErpStockDO::getWarehouseId, warehouseId);
}
default List<ErpStockDO> selectByProductId(Long productId) {
return selectList(new QueryWrapper<ErpStockDO>()
.eq("product_id", productId));
}
default int updateCountIncrement(Long id, BigDecimal count, boolean negativeEnable) {
LambdaUpdateWrapper<ErpStockDO> updateWrapper = new LambdaUpdateWrapper<ErpStockDO>()
.eq(ErpStockDO::getId, id);

@ -11,8 +11,12 @@ import cn.iocoder.yudao.module.erp.controller.admin.product.vo.product.ProductSa
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.ErpStockDO;
import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductCategoryMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.product.ErpProductMapper;
import cn.iocoder.yudao.module.erp.dal.mysql.stock.ErpStockMapper;
import cn.iocoder.yudao.module.erp.service.stock.ErpStockService;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
@ -25,8 +29,7 @@ import java.util.Map;
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.module.erp.enums.ErrorCodeConstants.PRODUCT_NOT_ENABLE;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.PRODUCT_NOT_EXISTS;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.*;
/**
* ERP Service
@ -48,6 +51,15 @@ public class ErpProductServiceImpl implements ErpProductService {
@Resource
private ErpProductUnitService productUnitService;
@Resource
private ErpStockMapper erpStockMapper;
@Resource
@Lazy // 延迟注入
private ErpStockService erpStockService;
@Override
public Long createProduct(ProductSaveReqVO createReqVO) {
// TODO 芋艿:校验分类
@ -90,6 +102,16 @@ public class ErpProductServiceImpl implements ErpProductService {
public void deleteProduct(Long id) {
// 校验存在
validateProductExists(id);
//throw exception(PRODUCT_REFERENCES_EXIST);
ErpProductDO erpProductDO = productMapper.selectById(id);
List<ErpStockDO> list = erpStockService.getStockByProductId(erpProductDO.getId());
if(list != null && !list.isEmpty()){
for(ErpStockDO erpStockDO : list){
erpStockMapper.deleteById(erpStockDO.getId());
}
}
// 删除
productMapper.deleteById(id);
}

@ -5,6 +5,7 @@ import cn.iocoder.yudao.module.erp.controller.admin.stock.vo.stock.ErpStockPageR
import cn.iocoder.yudao.module.erp.dal.dataobject.stock.ErpStockDO;
import java.math.BigDecimal;
import java.util.List;
/**
* ERP Service
@ -21,6 +22,14 @@ public interface ErpStockService {
*/
ErpStockDO getStock(Long id);
/**
* +
*
* @param productId
* @return
*/
List<ErpStockDO> getStockByProductId(Long productId);
/**
* +
*
@ -32,7 +41,6 @@ public interface ErpStockService {
/**
*
*
* 0
*
* @param productId

@ -10,6 +10,7 @@ import org.springframework.validation.annotation.Validated;
import javax.annotation.Resource;
import java.math.BigDecimal;
import java.util.List;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.erp.enums.ErrorCodeConstants.STOCK_COUNT_NEGATIVE;
@ -26,7 +27,6 @@ public class ErpStockServiceImpl implements ErpStockService {
/**
*
*
* TODO db
*/
private static final Boolean NEGATIVE_STOCK_COUNT_ENABLE = false;
@ -48,6 +48,10 @@ public class ErpStockServiceImpl implements ErpStockService {
public ErpStockDO getStock(Long productId, Long warehouseId) {
return stockMapper.selectByProductIdAndWarehouseId(productId, warehouseId);
}
@Override
public List<ErpStockDO> getStockByProductId(Long productId) {
return stockMapper.selectByProductId(productId);
}
@Override
public BigDecimal getStockCount(Long productId) {

@ -93,6 +93,12 @@
<version>2.3.0-jdk8-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.iocoder.boot</groupId>
<artifactId>yudao-module-erp-biz</artifactId>
<version>2.3.0-jdk8-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>

@ -2,9 +2,7 @@ package cn.iocoder.yudao.module.iot.controller.admin.recipepoint.vo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import com.alibaba.excel.annotation.*;
@ -38,9 +36,12 @@ public class RecipePointRespVO {
private String dataType;
@Schema(description = "单位")
@ExcelProperty("单位")
private String dataUnit;
@Schema(description = "单位")
@ExcelProperty("单位")
private String dataUnitName;
@Schema(description = "备注", example = "你说的对")
@ExcelProperty("备注")
private String remark;

@ -1,11 +1,7 @@
package cn.iocoder.yudao.module.iot.dal.dataobject.recipepoint;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
@ -53,6 +49,11 @@ public class RecipePointDO extends BaseDO {
*
*/
private String dataUnit;
/**
*
*/
@TableField(exist = false)
private String dataUnitName;
/**
*
*/

@ -1,15 +1,18 @@
package cn.iocoder.yudao.module.iot.service.recipepoint;
import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
import cn.iocoder.yudao.module.erp.dal.dataobject.product.ErpProductUnitDO;
import cn.iocoder.yudao.module.erp.service.product.ErpProductUnitService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
import cn.iocoder.yudao.module.iot.controller.admin.recipepoint.vo.*;
import cn.iocoder.yudao.module.iot.dal.dataobject.recipepoint.RecipePointDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.iot.dal.mysql.recipepoint.RecipePointMapper;
@ -28,6 +31,8 @@ public class RecipePointServiceImpl implements RecipePointService {
@Resource
private RecipePointMapper recipePointMapper;
@Resource
private ErpProductUnitService productUnitService;
@Override
public Long createRecipePoint(RecipePointSaveReqVO createReqVO) {
@ -63,7 +68,26 @@ public class RecipePointServiceImpl implements RecipePointService {
@Override
public PageResult<RecipePointDO> getRecipePointPage(RecipePointPageReqVO pageReqVO) {
return recipePointMapper.selectPage(pageReqVO);
PageResult<RecipePointDO> pageResult = recipePointMapper.selectPage(pageReqVO);
Set<Long> unitIds = pageResult.getList().stream()
.filter(Objects::nonNull)
.map(RecipePointDO::getDataUnit)
.filter(dataUnit -> dataUnit != null && !dataUnit.trim().isEmpty())
.filter(dataUnit -> dataUnit.matches("\\d+")) // 确保是纯数字
.map(Long::valueOf)
.collect(Collectors.toSet());
Map<Long, ErpProductUnitDO> unitMap = productUnitService.getProductUnitMap(unitIds);
List<RecipePointDO> recipePointDOList = BeanUtils.toBean(pageResult.getList(), RecipePointDO.class, recipePoint -> {
Long unitId = null;
try {
unitId = Long.valueOf(recipePoint.getDataUnit());
} catch (NumberFormatException e) {
return;
}
MapUtils.findAndThen(unitMap, unitId,
unit -> recipePoint.setDataUnitName(unit.getName()));
});
return new PageResult<>(recipePointDOList, pageResult.getTotal());
}
@Override

@ -2,21 +2,14 @@ package cn.iocoder.yudao.module.mes.service.dvrepair;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.framework.security.core.LoginUser;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicemodel.DeviceModelDO;
import cn.iocoder.yudao.module.erp.controller.admin.autocode.util.AutoCodeUtil;
import cn.iocoder.yudao.module.mes.controller.admin.dashboard.vo.dashboard.EventStatisticsVO;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.enums.RepairResultEnum;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.enums.RepairStatusEnum;
import cn.iocoder.yudao.module.mes.controller.admin.dvrepair.vo.*;
import cn.iocoder.yudao.module.mes.controller.admin.ticketresults.enums.JobResultEnum;
import cn.iocoder.yudao.module.mes.controller.admin.ticketresults.vo.TicketResultsSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.devicetype.DeviceTypeDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairLineDO;
import cn.iocoder.yudao.module.common.dal.dataobject.moldrepair.MoldRepairDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.ticketmanagement.TicketManagementDO;
import cn.iocoder.yudao.module.mes.dal.dataobject.ticketresults.TicketResultsDO;
import cn.iocoder.yudao.module.mes.dal.mysql.dvrepair.DvRepairLineMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.dvrepair.DvRepairMapper;
import com.alibaba.excel.util.StringUtils;
@ -36,7 +29,6 @@ import java.util.*;
import java.util.stream.Collectors;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_CODE_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
/**
@ -54,17 +46,23 @@ public class DvRepairServiceImpl implements DvRepairService {
@Resource
private DvRepairLineMapper dvRepairLineMapper;
@Resource
private AutoCodeUtil autoCodeUtil;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createDvRepair(DvRepairSaveReqVO createReqVO) {
if (StringUtils.isEmpty(createReqVO.getRepairCode())) {
createReqVO.setRepairCode(autoCodeUtil.genSerialCode("DVR_CODE",null));
} else {
//编码重复判断
Long count = dvRepairMapper.selectCount(new LambdaQueryWrapper<DvRepairDO>()
.eq(DvRepairDO::getRepairCode, createReqVO.getRepairCode())
);
//编码重复判断
Long count = dvRepairMapper.selectCount(new LambdaQueryWrapper<DvRepairDO>()
.eq(DvRepairDO::getRepairCode, createReqVO.getRepairCode())
);
if (count > 0) {
throw exception(DV_REPAIR_CODE_EXISTS);
if (count > 0) {
throw exception(DV_REPAIR_CODE_EXISTS);
}
}
// 插入
DvRepairDO dvRepair = BeanUtils.toBean(createReqVO, DvRepairDO.class);

@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.service.moldrepair;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
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.mes.controller.admin.dashboard.vo.dashboard.EventStatisticsVO;
import cn.iocoder.yudao.module.common.controller.admin.moldrepair.enums.RepairResultEnum;
import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairLineRespVO;
@ -10,12 +11,10 @@ import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairU
import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairPageReqVO;
import cn.iocoder.yudao.module.common.controller.admin.moldrepair.vo.MoldRepairSaveReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.ticketresults.enums.JobResultEnum;
import cn.iocoder.yudao.module.mes.dal.dataobject.dvrepair.DvRepairDO;
import cn.iocoder.yudao.module.common.dal.dataobject.moldrepair.MoldRepairDO;
import cn.iocoder.yudao.module.common.dal.dataobject.moldrepair.MoldRepairLineDO;
import cn.iocoder.yudao.module.common.dal.mysql.moldrepair.MoldRepairLineMapper;
import cn.iocoder.yudao.module.common.dal.mysql.moldrepair.MoldRepairMapper;
import cn.iocoder.yudao.module.mes.service.moldrepair.MoldRepairService;
import com.alibaba.excel.util.StringUtils;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@ -33,7 +32,6 @@ import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_MODEL_CODE_EXISTS;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
import org.springframework.util.CollectionUtils;
@ -55,17 +53,23 @@ public class MoldRepairServiceImpl implements MoldRepairService {
@Resource
private MoldRepairLineMapper moldRepairLineMapper;
@Resource
private AutoCodeUtil autoCodeUtil;
@Override
@Transactional(rollbackFor = Exception.class)
public Long createMoldRepair(MoldRepairSaveReqVO createReqVO) {
if (StringUtils.isEmpty(createReqVO.getRepairCode())) {
createReqVO.setRepairCode(autoCodeUtil.genSerialCode("MR_CODE",null));
} else {
//编码重复判断
Long count = moldRepairMapper.selectCount(new LambdaQueryWrapper<MoldRepairDO>()
.eq(MoldRepairDO::getRepairCode, createReqVO.getRepairCode())
);
//编码重复判断
Long count = moldRepairMapper.selectCount(new LambdaQueryWrapper<MoldRepairDO>()
.eq(MoldRepairDO::getRepairCode, createReqVO.getRepairCode())
);
if (count > 0) {
throw exception(MOLD_REPAIR_CODE_EXISTS);
if (count > 0) {
throw exception(MOLD_REPAIR_CODE_EXISTS);
}
}
// 插入
MoldRepairDO moldRepair = BeanUtils.toBean(createReqVO, MoldRepairDO.class);

@ -25,7 +25,6 @@ import cn.iocoder.yudao.module.mes.dal.mysql.task.TaskMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.task.ViewTaskProductSummaryMapper;
import cn.iocoder.yudao.module.mes.dal.redis.no.MesNoRedisDAO;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
@ -35,7 +34,6 @@ import java.util.*;
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.*;
/**
@ -54,7 +52,7 @@ public class TaskServiceImpl implements TaskService {
@Resource
private MesNoRedisDAO noRedisDAO;
@Autowired
@Resource
private AutoCodeUtil autoCodeUtil;
@Override

Loading…
Cancel
Save