diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductUnitController.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductUnitController.java index 816e8828a..5c8f1a4be 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductUnitController.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/ErpProductUnitController.java @@ -115,4 +115,12 @@ public class ErpProductUnitController { } + @GetMapping("/flag-list") + @Operation(summary = "获得产品主单位列表") + public CommonResult> getProductUnitListByFlag() { + List productUnitDOList = productUnitService.getProductUnitListByFlag(); + return success(productUnitDOList); + + } + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitSaveReqVO.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitSaveReqVO.java index dd4547849..0f4aeb211 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitSaveReqVO.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/controller/admin/product/vo/unit/ErpProductUnitSaveReqVO.java @@ -24,4 +24,13 @@ public class ErpProductUnitSaveReqVO { @InEnum(CommonStatusEnum.class) private Integer status; + @Schema(description = "是否主单位", example = "芋艿") + private String primaryFlag; + + @Schema(description = "关联主单位id", example = "芋艿") + private Long primaryId; + + @Schema(description = "换算比例", example = "芋艿") + private Double changeRate; + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java index 10dcb3dbd..625118dab 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitService.java @@ -92,4 +92,11 @@ public interface ErpProductUnitService { */ List getProductUnitList(); + /** + * 获得产品主单位列表 + * + * @return 产品主单位列表 + */ + List getProductUnitListByFlag(); + } \ No newline at end of file diff --git a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java index 22b1eee5a..25ded606a 100644 --- a/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java +++ b/yudao-module-erp/yudao-module-erp-biz/src/main/java/cn/iocoder/yudao/module/erp/service/product/ErpProductUnitServiceImpl.java @@ -8,6 +8,7 @@ import cn.iocoder.yudao.module.erp.controller.admin.product.vo.unit.ErpProductUn 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.framework.bean.ProductUnitEnum; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.google.common.annotations.VisibleForTesting; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -52,7 +53,7 @@ public class ErpProductUnitServiceImpl implements ErpProductUnitService { updateReqVO.getId().equals(ProductUnitEnum.Kilogram.getUnitId()) || updateReqVO.getId().equals(ProductUnitEnum.Gram.getUnitId()) || updateReqVO.getId().equals(ProductUnitEnum.Each.getUnitId())){ - throw exception(new ErrorCode(500,"内置单位不允许更改")); + throw exception(new ErrorCode(40001,"内置单位不允许更改")); } // 1.1 校验存在 validateProductUnitExists(updateReqVO.getId()); @@ -125,4 +126,10 @@ public class ErpProductUnitServiceImpl implements ErpProductUnitService { return productUnitMapper.selectList(); } + @Override + public List getProductUnitListByFlag() { + QueryWrapper wrapper = new QueryWrapper<>(); + wrapper.eq("primary_flag", "Y"); + return productUnitMapper.selectList(wrapper); + } } \ No newline at end of file diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelattribute/vo/DeviceModelAttributeRespVO.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelattribute/vo/DeviceModelAttributeRespVO.java index 4d02dabfe..6d6d94cf1 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelattribute/vo/DeviceModelAttributeRespVO.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/controller/admin/devicemodelattribute/vo/DeviceModelAttributeRespVO.java @@ -42,9 +42,12 @@ public class DeviceModelAttributeRespVO { private String address; @Schema(description = "单位") - @ExcelProperty("单位") private String dataUnit; + @Schema(description = "单位") + @ExcelProperty("单位") + private String dataUnitName; + @Schema(description = "倍率") @ExcelProperty("倍率") private Double ratio; diff --git a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeServiceImpl.java b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeServiceImpl.java index 22fcbb05f..4bdec8264 100644 --- a/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeServiceImpl.java +++ b/yudao-module-iot/yudao-module-iot-biz/src/main/java/cn/iocoder/yudao/module/iot/service/devicemodelattribute/DeviceModelAttributeServiceImpl.java @@ -1,5 +1,8 @@ package cn.iocoder.yudao.module.iot.service.devicemodelattribute; +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 cn.iocoder.yudao.module.iot.dal.dataobject.deviceattributetype.DeviceAttributeTypeDO; import cn.iocoder.yudao.module.iot.dal.mysql.deviceattributetype.DeviceAttributeTypeMapper; import cn.iocoder.yudao.module.iot.service.device.TDengineService; @@ -26,6 +29,7 @@ import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.iot.dal.mysql.devicemodelattribute.DeviceModelAttributeMapper; 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.iot.enums.ErrorCodeConstants.*; /** @@ -47,6 +51,9 @@ public class DeviceModelAttributeServiceImpl implements DeviceModelAttributeServ @Resource private DeviceAttributeTypeMapper deviceAttributeTypeMapper; + @Resource + private ErpProductUnitService productUnitService; + @Override public Long createDeviceModelAttribute(DeviceModelAttributeSaveReqVO createReqVO) { @@ -109,9 +116,33 @@ public class DeviceModelAttributeServiceImpl implements DeviceModelAttributeServ // List attributeTypes = deviceAttributeTypeMapper.selectList(); // Map typeNameMap = attributeTypes.stream() // .collect(Collectors.toMap(DeviceAttributeTypeDO::getId, DeviceAttributeTypeDO::getName)); - + Map unitMap = productUnitService.getProductUnitMap( + pageResult.getList().stream() + .map(DeviceModelAttributeDO::getDataUnit) + .filter(StringUtils::isNotEmpty) + .map(str -> { + try { + return Long.valueOf(str.trim()); + } catch (NumberFormatException e) { + return null; + } + }) + .filter(Objects::nonNull) + .collect(Collectors.toSet()) + ); // 转换并设置类型名称 - PageResult respPageResult = BeanUtils.toBean(pageResult, DeviceModelAttributeRespVO.class); + PageResult respPageResult = BeanUtils.toBean(pageResult, DeviceModelAttributeRespVO.class, deviceModelAttribute -> { + String dataUnitStr = deviceModelAttribute.getDataUnit(); + if (StringUtils.isNotBlank(dataUnitStr)) { + try { + Long dataUnitId = Long.valueOf(dataUnitStr.trim()); + MapUtils.findAndThen(unitMap, dataUnitId, + unit -> deviceModelAttribute.setDataUnitName(unit.getName())); + } catch (NumberFormatException e) { + + } + } + }); // respPageResult.getList().forEach(item -> { // String typeName = typeNameMap.get(item.getAttributeType());