fix(设备主数据):修改自定义字段

This commit is contained in:
chengzhaofeng 2024-12-25 13:45:24 +08:00
parent 14d9dab509
commit 1d2e3d1ffe
4 changed files with 130 additions and 1 deletions

View File

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.foreverwin.iep.common.model.CustomValue;
import com.foreverwin.iep.common.utils.HandleBoProcessor;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import io.swagger.annotations.ApiModel;
@ -16,6 +17,7 @@ import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
import java.time.YearMonth;
import java.util.List;
/**
* 资源主数据
@ -273,6 +275,11 @@ public class ResrceExt extends Model<ResrceExt> {
*/
@ApiModelProperty(value="扩展5")
private String ext5;
@TableField(
exist = false
)
private List<CustomValue> customFields;
public static String genHandle(String site, String resrce) {
return HandleBoProcessor.genHandle(RESRCE_BO, site, resrce);

View File

@ -4,13 +4,21 @@ import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.foreverwin.iep.common.model.CustomValue;
import com.foreverwin.iep.prd.entity.CustomFields;
import com.foreverwin.iep.prd.feign.RemoteCustomFieldsService;
import com.foreverwin.mom.common.security.util.SecurityUtils;
import com.foreverwin.mom.pms.dto.CommonAttachmentDTO;
import com.foreverwin.mom.pms.dto.ErrorMsgDTO;
import com.foreverwin.mom.pms.dto.ResrceExtDTO;
import com.foreverwin.mom.pms.entity.PmsResrceExtUpload;
import com.foreverwin.mom.pms.entity.ResrceExt;
import com.foreverwin.mom.pms.mapper.CustomFieldsByCustomMapper;
import com.foreverwin.mom.pms.mapper.CustomFieldsByIepMapper;
import com.foreverwin.mom.pms.mapper.ResrceExtMapper;
import com.foreverwin.mom.pms.service.PmsResrceExtUploadService;
import com.foreverwin.mom.pms.service.ResrceExtService;
@ -31,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.net.URLEncoder;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@ -51,6 +60,7 @@ public class ResrceExtServiceImpl extends ServiceImpl<ResrceExtMapper, ResrceExt
private final ResrceExtMapper resrceExtMapper;
private final PmsEquipMapper pmsEquipMapper;
private final PmsResrceExtUploadService pmsResrceExtUploadService;
private final CustomFieldsByIepMapper customFieldsByIepMapper;
@Override
public String uploadFile(CommonAttachmentDTO commonAttachmentDTO, String handle) {
@ -210,6 +220,9 @@ public class ResrceExtServiceImpl extends ServiceImpl<ResrceExtMapper, ResrceExt
byId.setZPmsResrceExtBo(resrce.getHandle());
pmsResrceExtUploadService.updateById(byId);
}
List<CustomValue> customFields = resrce.getCustomFields();
// 更新自定义字段
updateCustomField(customFields, resrce.getHandle());
return updateById(resrce);
}
@ -219,5 +232,41 @@ public class ResrceExtServiceImpl extends ServiceImpl<ResrceExtMapper, ResrceExt
errors.add("设备【" + resrce + "】在系统中已存在!");
}
}
/**
* 自定义字段更新
* @param customFields
*/
@Transactional(rollbackFor = Exception.class)
public void updateCustomField(List<CustomValue> customFields, String resourceBo) {
String site = TenantContextHolder.getTenantId();
String user = SecurityUtils.getUserName();
LocalDateTime now = LocalDateTime.now();
for (CustomValue customField : customFields) {
String key = customField.getFieldName();
String value = customField.getFieldValue();
LambdaQueryWrapper<CustomFields> queryWrapper = Wrappers.lambdaQuery(CustomFields.class)
.eq(CustomFields::getHandle, resourceBo).eq(CustomFields::getFieldName, key);
CustomFields customFieldsByFind = customFieldsByIepMapper.selectOne(queryWrapper);
if (ObjectUtil.isNotNull(customFieldsByFind)) {
customFieldsByFind.setFieldValue(value);
customFieldsByFind.setDateUpdate(now);
customFieldsByFind.setUpdater(user);
customFieldsByIepMapper.update(customFieldsByFind, queryWrapper);
return;
}
customFieldsByFind = new CustomFields();
customFieldsByFind.setHandle(resourceBo);
customFieldsByFind.setSite(site);
customFieldsByFind.setTableName(TableInfoHelper.getTableInfo(Resrce.class).getTableName().toUpperCase());
customFieldsByFind.setFieldName(key);
customFieldsByFind.setFieldValue(value);
customFieldsByFind.setDateCreate(now);
customFieldsByFind.setCreator(user);
customFieldsByIepMapper.insert(customFieldsByFind);
}
}
}

View File

@ -0,0 +1,15 @@
package com.foreverwin.mom.pms.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.foreverwin.iep.prd.entity.CustomFields;
import org.apache.ibatis.annotations.Mapper;
/**
* @author zhaofeng_cheng
* @date 2024/12/25 13:34
* @description
*/
@Mapper
public interface CustomFieldsByIepMapper extends BaseMapper<CustomFields> {
}

View File

@ -0,0 +1,58 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.foreverwin.mom.pms.mapper.CustomFieldsByIepMapper">
<resultMap id="customFieldsMap" type="com.foreverwin.iep.prd.entity.CustomFields">
<id property="sid" column="SID"/>
<result property="handle" column="HANDLE"/>
<result property="site" column="SITE"/>
<result property="tableName" column="TABLE_NAME"/>
<result property="fieldName" column="FIELD_NAME"/>
<result property="fieldValue" column="FIELD_VALUE"/>
<result property="dateCreate" column="DATE_CREATE"/>
<result property="dateUpdate" column="DATE_UPDATE"/>
<result property="creator" column="CREATOR"/>
<result property="updater" column="UPDATER"/>
</resultMap>
<select id="selectDistinct" resultMap="customFieldsMap">
select distinct FIELD_VALUE
from custom_fields
<where>
<if test="dto.site != null and dto.site != ''">
AND SITE = #{dto.site}
</if>
<if test="dto.handle != null and dto.handle != ''">
AND HANDLE = #{dto.handle}
</if>
<if test="dto.tableName != null and dto.tableName != ''">
AND TABLE_NAME = #{dto.tableName}
</if>
<if test="dto.fieldName != null and dto.fieldName != ''">
AND FIELD_NAME = #{dto.fieldName}
</if>
<if test="dto.fieldValue != null and dto.fieldValue != ''">
AND FIELD_VALUE = #{dto.fieldValue}
</if>
</where>
</select>
<select id="selectDistinctByPage" resultMap="customFieldsMap">
select distinct FIELD_VALUE
from custom_fields
<where>
AND SITE = #{dto.site}
<if test="dto.tableName != null and dto.tableName != ''">
AND TABLE_NAME = #{dto.tableName}
</if>
<if test="dto.fieldName != null and dto.fieldName != ''">
AND FIELD_NAME = #{dto.fieldName}
</if>
<if test="dto.fieldValue != null and dto.fieldValue != ''">
AND FIELD_VALUE like concat('%', concat(#{dto.fieldValue}, '%'))
</if>
</where>
</select>
</mapper>