fix:修改配方库

plp
HuangHuiKang 3 months ago
parent 1e060796a0
commit 778fe392da

@ -56,4 +56,7 @@ public class RecipeRespVO {
// @ExcelProperty("关联设备ID") // @ExcelProperty("关联设备ID")
private Long deviceId; private Long deviceId;
@Schema(description = "设备Id")
private Long machineId;
} }

@ -37,4 +37,7 @@ public class RecipeSaveReqVO {
@Schema(description = "数据单位") @Schema(description = "数据单位")
private String dataUnit; private String dataUnit;
@Schema(description = "设备Id")
private Long machineId;
} }

@ -1,9 +1,15 @@
package cn.iocoder.yudao.module.iot.controller.admin.recipedevicerecord; package cn.iocoder.yudao.module.iot.controller.admin.recipedevicerecord;
import cn.iocoder.yudao.framework.common.util.opc.OpcUtils;
import cn.iocoder.yudao.module.iot.controller.admin.device.vo.DeviceRespVO;
import cn.iocoder.yudao.module.iot.dal.dataobject.devicecontactmodel.DeviceContactModelDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.recipe.RecipeDO;
import cn.iocoder.yudao.module.iot.dal.dataobject.recipeplandetail.RecipePlanDetailDO; import cn.iocoder.yudao.module.iot.dal.dataobject.recipeplandetail.RecipePlanDetailDO;
import cn.iocoder.yudao.module.iot.service.device.DeviceService; import cn.iocoder.yudao.module.iot.service.device.DeviceService;
import cn.iocoder.yudao.module.iot.service.devicecontactmodel.DeviceContactModelService;
import cn.iocoder.yudao.module.iot.service.recipe.RecipeService; import cn.iocoder.yudao.module.iot.service.recipe.RecipeService;
import cn.iocoder.yudao.module.iot.service.recipeplandetail.RecipePlanDetailService; import cn.iocoder.yudao.module.iot.service.recipeplandetail.RecipePlanDetailService;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -16,17 +22,23 @@ import javax.validation.*;
import javax.servlet.http.*; import javax.servlet.http.*;
import java.util.*; import java.util.*;
import java.io.IOException; import java.io.IOException;
import java.util.function.Function;
import java.util.stream.Collectors;
import cn.iocoder.yudao.framework.common.pojo.PageParam; 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.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.CommonResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils; import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog; import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*; import static cn.iocoder.yudao.framework.apilog.core.enums.OperateTypeEnum.*;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.DEVICE_NOT_EXISTS;
import static cn.iocoder.yudao.module.iot.enums.ErrorCodeConstants.RECIPE_NOT_EXISTS;
import cn.iocoder.yudao.module.iot.controller.admin.recipedevicerecord.vo.*; import cn.iocoder.yudao.module.iot.controller.admin.recipedevicerecord.vo.*;
import cn.iocoder.yudao.module.iot.dal.dataobject.recipedevicerecord.RecipeDeviceRecordDO; import cn.iocoder.yudao.module.iot.dal.dataobject.recipedevicerecord.RecipeDeviceRecordDO;
@ -73,6 +85,9 @@ public class RecipeDeviceRecordController {
@Resource @Resource
private DeviceService deviceService; private DeviceService deviceService;
@Resource
private DeviceContactModelService deviceContactModelService;
@PostMapping("/create") @PostMapping("/create")
@ -134,7 +149,6 @@ public class RecipeDeviceRecordController {
/** /**
* *
* @param recipeId ID * @param recipeId ID
* @param pointList [{id: 1, refer: "参考值1"}, {id: 2, refer: "参考值2"}]
* @return * @return
* @throws JsonProcessingException JSON * @throws JsonProcessingException JSON
*/ */
@ -152,29 +166,52 @@ public class RecipeDeviceRecordController {
// ========== 第一步:查询配方关联的点位属性信息 ========== // ========== 第一步:查询配方关联的点位属性信息 ==========
// 1.1 根据recipeId查询iot_recipe_device_attribute表记录 // 1.1 根据recipeId查询iot_recipe_device_attribute表记录
recipePlanDetailDO.setRecipeId(32L); recipePlanDetailDO.setRecipeId(recipeId);
List<RecipeDeviceAttributeDO> attributeList = recipeDeviceAttributeService.getByRecipeId(recipePlanDetailDO.getRecipeId()); List<RecipeDeviceAttributeDO> attributeList = recipeDeviceAttributeService.getByRecipeId(recipePlanDetailDO.getRecipeId());
// if (CollectionUtils.isEmpty(attributeList)) {
// return success(false); // 无关联属性,直接返回 //先删除在添加
// } List<RecipeDeviceRecordDO> recipeDeviceRecordDOS = recipeDeviceRecordService.getListByRecipeId(recipeId);
Map<Long, Map<String, Object>> deviceDataMap = deviceService.createDeviceDataMap(103L);//recipeRespVO.getDeviceId() if (!recipeDeviceRecordDOS.isEmpty()){
recipeDeviceRecordService.deleteByIds(recipeDeviceRecordDOS);
}
RecipeDO recipe = recipeService.getRecipe(recipeId);
if (recipe == null){
throw exception(RECIPE_NOT_EXISTS);
}
DeviceRespVO device = deviceService.getDevice(recipe.getMachineId());
if (device== null ){
throw exception(DEVICE_NOT_EXISTS);
}
Map<Long, DeviceContactModelDO> deviceContactModelMap = new HashMap<>();
List<DeviceContactModelDO> deviceContactModelDOS = deviceContactModelService.selectListByDeviceId(device.getId());
if (!deviceContactModelDOS.isEmpty()){
deviceContactModelMap = deviceContactModelDOS.stream()
.collect(Collectors.toMap(
DeviceContactModelDO::getId,
Function.identity()
));
}
OpcUtils.connect(device.getUrl(),device.getUsername(),device.getPassword(),10);
for (RecipeDeviceAttributeDO attributeDO : attributeList) { for (RecipeDeviceAttributeDO attributeDO : attributeList) {
Map<String, Object> data = deviceDataMap.get(attributeDO.getAttributeId()); DeviceContactModelDO deviceContactModelDO = deviceContactModelMap.get(attributeDO.getAttributeId());
if (data != null ) { if (deviceContactModelDO == null){
continue;
}
// 创建 // 创建
RecipeDeviceRecordDO recipeDeviceRecordDO = new RecipeDeviceRecordDO(); RecipeDeviceRecordDO recipeDeviceRecordDO = new RecipeDeviceRecordDO();
recipeDeviceRecordDO.setRecipeId(recipeId); recipeDeviceRecordDO.setRecipeId(recipeId);
recipeDeviceRecordDO.setAttributeCode(attributeDO.getAttributeName()); recipeDeviceRecordDO.setAttributeCode(deviceContactModelDO.getAttributeName());
recipeDeviceRecordDO.setDataType(attributeDO.getDataType()); recipeDeviceRecordDO.setDataType(deviceContactModelDO.getDataType());
recipeDeviceRecordDO.setDataUnit(attributeDO.getDataUnit()); recipeDeviceRecordDO.setDataUnit(deviceContactModelDO.getDataUnit());
if (data.get("addressValue") != null && data.get("addressValue").toString() != null) { recipeDeviceRecordDO.setValue((String) OpcUtils.readValue(deviceContactModelDO.getAddress()));
recipeDeviceRecordDO.setValue(data.get("addressValue").toString());
}
recipeDeviceRecordService.createRecipeDeviceRecord(BeanUtils.toBean(recipeDeviceRecordDO, RecipeDeviceRecordSaveReqVO.class)); recipeDeviceRecordService.createRecipeDeviceRecord(BeanUtils.toBean(recipeDeviceRecordDO, RecipeDeviceRecordSaveReqVO.class));
} }
}
return success(true); return success(true);
} }

@ -52,4 +52,5 @@ public class RecipeDeviceRecordPageReqVO extends PageParam {
@Schema(description = "配方id", example = "32535") @Schema(description = "配方id", example = "32535")
private Long recipeId; private Long recipeId;
} }

@ -25,7 +25,7 @@ public class RecipePlanDetailSaveReqVO {
private Long recipeId; private Long recipeId;
@Schema(description = "关联计划关联mes_plan表的id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28398") @Schema(description = "关联计划关联mes_plan表的id", requiredMode = Schema.RequiredMode.REQUIRED, example = "28398")
@NotNull(message = "关联计划关联mes_plan表的id不能为空") // @NotNull(message = "关联计划关联mes_plan表的id不能为空")
private Long planId; private Long planId;
@Schema(description = "来源(新增/生产中)") @Schema(description = "来源(新增/生产中)")

@ -60,4 +60,11 @@ public class RecipeDO extends BaseDO {
*/ */
private String dataUnit; private String dataUnit;
/**
*
*/
private Long machineId;
} }

@ -53,4 +53,6 @@ public interface DeviceContactModelService {
PageResult<DeviceContactModelDO> getDeviceContactModelPage(DeviceContactModelPageReqVO pageReqVO); PageResult<DeviceContactModelDO> getDeviceContactModelPage(DeviceContactModelPageReqVO pageReqVO);
List<DeviceContactModelDO> getDeviceContactModelList(Long id); List<DeviceContactModelDO> getDeviceContactModelList(Long id);
List<DeviceContactModelDO> selectListByDeviceId(Long id);
} }

@ -99,4 +99,9 @@ public class DeviceContactModelServiceImpl implements DeviceContactModelService
.orderByDesc(DeviceContactModelDO::getCreateTime)); .orderByDesc(DeviceContactModelDO::getCreateTime));
} }
@Override
public List<DeviceContactModelDO> selectListByDeviceId(Long id) {
return deviceContactModelMapper.selectList(Wrappers.<DeviceContactModelDO>lambdaQuery().eq(DeviceContactModelDO::getDeviceId,id));
}
} }

@ -52,4 +52,7 @@ public interface RecipeDeviceRecordService {
*/ */
PageResult<RecipeDeviceRecordDO> getRecipeDeviceRecordPage(RecipeDeviceRecordPageReqVO pageReqVO); PageResult<RecipeDeviceRecordDO> getRecipeDeviceRecordPage(RecipeDeviceRecordPageReqVO pageReqVO);
List<RecipeDeviceRecordDO> getListByRecipeId(Long recipeId);
void deleteByIds(List<RecipeDeviceRecordDO> recipeDeviceRecordDOS);
} }

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.iot.service.recipedevicerecord; package cn.iocoder.yudao.module.iot.service.recipedevicerecord;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -31,6 +32,7 @@ public class RecipeDeviceRecordServiceImpl implements RecipeDeviceRecordService
@Override @Override
public Long createRecipeDeviceRecord(RecipeDeviceRecordSaveReqVO createReqVO) { public Long createRecipeDeviceRecord(RecipeDeviceRecordSaveReqVO createReqVO) {
// 插入 // 插入
RecipeDeviceRecordDO recipeDeviceRecord = BeanUtils.toBean(createReqVO, RecipeDeviceRecordDO.class); RecipeDeviceRecordDO recipeDeviceRecord = BeanUtils.toBean(createReqVO, RecipeDeviceRecordDO.class);
recipeDeviceRecordMapper.insert(recipeDeviceRecord); recipeDeviceRecordMapper.insert(recipeDeviceRecord);
@ -71,4 +73,16 @@ public class RecipeDeviceRecordServiceImpl implements RecipeDeviceRecordService
return recipeDeviceRecordMapper.selectPage(pageReqVO); return recipeDeviceRecordMapper.selectPage(pageReqVO);
} }
@Override
public List<RecipeDeviceRecordDO> getListByRecipeId(Long recipeId) {
return recipeDeviceRecordMapper.selectList(Wrappers.<RecipeDeviceRecordDO>lambdaQuery().eq(RecipeDeviceRecordDO::getRecipeId, recipeId));
}
@Override
public void deleteByIds(List<RecipeDeviceRecordDO> recipeDeviceRecordDOS) {
recipeDeviceRecordMapper.deleteByIds(recipeDeviceRecordDOS);
}
} }

@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.iot.service.recipepointrecord; package cn.iocoder.yudao.module.iot.service.recipepointrecord;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import javax.annotation.Resource; import javax.annotation.Resource;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
@ -31,6 +32,12 @@ public class RecipePointRecordServiceImpl implements RecipePointRecordService {
@Override @Override
public Long createRecipePointRecord(RecipePointRecordSaveReqVO createReqVO) { public Long createRecipePointRecord(RecipePointRecordSaveReqVO createReqVO) {
List<RecipePointRecordDO> recipePointRecordDOS = recipePointRecordMapper.selectList(Wrappers.<RecipePointRecordDO>lambdaQuery().eq(RecipePointRecordDO::getRecipeId, createReqVO.getRecipeId()));
if (!recipePointRecordDOS.isEmpty()){
recipePointRecordMapper.deleteByIds(recipePointRecordDOS);
}
// 插入 // 插入
RecipePointRecordDO recipePointRecord = BeanUtils.toBean(createReqVO, RecipePointRecordDO.class); RecipePointRecordDO recipePointRecord = BeanUtils.toBean(createReqVO, RecipePointRecordDO.class);
recipePointRecordMapper.insert(recipePointRecord); recipePointRecordMapper.insert(recipePointRecord);

Loading…
Cancel
Save