diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java index 5ea14f5..0f1aa70 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java @@ -1,8 +1,20 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.model.business.BizBusinessDeviceMeasureModifyRecord; +import com.casic.missiles.service.business.IBizBusinessDeviceMeasureModifyRecordService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; +import java.util.HashMap; +import java.util.List; /** *

@@ -16,5 +28,14 @@ @RestController @RequestMapping("/business/device/measureModifyRecord") public class BizBusinessDeviceMeasureModifyRecordController { + @Autowired + private IBizBusinessDeviceMeasureModifyRecordService measureModifyRecordService; + @ApiOperation("列表(根据检定数据基本信息表id查询)") + @PostMapping("/list") + public ReturnDTO> itemCategoryListPage(@RequestBody @Valid IdDTO idDTO) { + HashMap map = new HashMap<>(); + map.put("data_id", idDTO.getId()); + return ReturnUtil.success(measureModifyRecordService.listByMap(map)); + } } diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java index 5ea14f5..0f1aa70 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java @@ -1,8 +1,20 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.model.business.BizBusinessDeviceMeasureModifyRecord; +import com.casic.missiles.service.business.IBizBusinessDeviceMeasureModifyRecordService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; +import java.util.HashMap; +import java.util.List; /** *

@@ -16,5 +28,14 @@ @RestController @RequestMapping("/business/device/measureModifyRecord") public class BizBusinessDeviceMeasureModifyRecordController { + @Autowired + private IBizBusinessDeviceMeasureModifyRecordService measureModifyRecordService; + @ApiOperation("列表(根据检定数据基本信息表id查询)") + @PostMapping("/list") + public ReturnDTO> itemCategoryListPage(@RequestBody @Valid IdDTO idDTO) { + HashMap map = new HashMap<>(); + map.put("data_id", idDTO.getId()); + return ReturnUtil.success(measureModifyRecordService.listByMap(map)); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..3e6654f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,105 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * @param dataDesc 该条数据描述,如:DCV 量程 500 + * @param beforeObj + * @param afterObj + * @return 全部相同返回空字符串,有不相同的返回原属性值和更新后的属性值字符串拼接 + */ + public static List fieldCompare(String dataDesc, Object beforeObj, Object afterObj, List fields) { + List beforeFieldList = Arrays.asList(beforeObj.getClass().getDeclaredFields()); + List superBeforeFileList = Arrays.asList(beforeObj.getClass().getSuperclass().getDeclaredFields()); + beforeFieldList.addAll(new ArrayList<>(superBeforeFileList)); + Field[] beforeFields = beforeFieldList.toArray(new Field[beforeFieldList.size()]); + + List afterFieldList = new ArrayList<>(Arrays.asList(afterObj.getClass().getDeclaredFields())); + List superAfterFieldList = new ArrayList<>(Arrays.asList(afterObj.getClass().getSuperclass().getDeclaredFields())); + afterFieldList.addAll(superAfterFieldList); + Field[] afterFields = afterFieldList.toArray(new Field[beforeFieldList.size()]); + + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + List changeList = new ArrayList<>(); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = null; + for (int j = 0; j < afterFields.length; j++) { + if(afterFields[j].getName().equals(beforeFields[i].getName())){ + afterValue = afterFields[j].get(afterObj); //取出对应的属性值 + break; + } + } + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null && !"".equals(afterValue))) { + //属性 从 原始值 修改为 更新值 + // TODO: 2023/10/2 beforeFields[i].getName()需要获取对应的中文名 + changeList.add(dataDesc + beforeFields[i].getName() + "从 " + beforeValue + "修改为 " + afterValue); + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + } + } + } + return changeList; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java index 5ea14f5..0f1aa70 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java @@ -1,8 +1,20 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.model.business.BizBusinessDeviceMeasureModifyRecord; +import com.casic.missiles.service.business.IBizBusinessDeviceMeasureModifyRecordService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; +import java.util.HashMap; +import java.util.List; /** *

@@ -16,5 +28,14 @@ @RestController @RequestMapping("/business/device/measureModifyRecord") public class BizBusinessDeviceMeasureModifyRecordController { + @Autowired + private IBizBusinessDeviceMeasureModifyRecordService measureModifyRecordService; + @ApiOperation("列表(根据检定数据基本信息表id查询)") + @PostMapping("/list") + public ReturnDTO> itemCategoryListPage(@RequestBody @Valid IdDTO idDTO) { + HashMap map = new HashMap<>(); + map.put("data_id", idDTO.getId()); + return ReturnUtil.success(measureModifyRecordService.listByMap(map)); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..3e6654f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,105 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * @param dataDesc 该条数据描述,如:DCV 量程 500 + * @param beforeObj + * @param afterObj + * @return 全部相同返回空字符串,有不相同的返回原属性值和更新后的属性值字符串拼接 + */ + public static List fieldCompare(String dataDesc, Object beforeObj, Object afterObj, List fields) { + List beforeFieldList = Arrays.asList(beforeObj.getClass().getDeclaredFields()); + List superBeforeFileList = Arrays.asList(beforeObj.getClass().getSuperclass().getDeclaredFields()); + beforeFieldList.addAll(new ArrayList<>(superBeforeFileList)); + Field[] beforeFields = beforeFieldList.toArray(new Field[beforeFieldList.size()]); + + List afterFieldList = new ArrayList<>(Arrays.asList(afterObj.getClass().getDeclaredFields())); + List superAfterFieldList = new ArrayList<>(Arrays.asList(afterObj.getClass().getSuperclass().getDeclaredFields())); + afterFieldList.addAll(superAfterFieldList); + Field[] afterFields = afterFieldList.toArray(new Field[beforeFieldList.size()]); + + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + List changeList = new ArrayList<>(); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = null; + for (int j = 0; j < afterFields.length; j++) { + if(afterFields[j].getName().equals(beforeFields[i].getName())){ + afterValue = afterFields[j].get(afterObj); //取出对应的属性值 + break; + } + } + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null && !"".equals(afterValue))) { + //属性 从 原始值 修改为 更新值 + // TODO: 2023/10/2 beforeFields[i].getName()需要获取对应的中文名 + changeList.add(dataDesc + beforeFields[i].getName() + "从 " + beforeValue + "修改为 " + afterValue); + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + } + } + } + return changeList; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java index 22351ac..e04e087 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.math.BigDecimal; @@ -23,6 +24,7 @@ private static final long serialVersionUID = 1L; + @NotNull(message = "id不能为空") @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") @TableId("id") private Long id; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java index 5ea14f5..0f1aa70 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java @@ -1,8 +1,20 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.model.business.BizBusinessDeviceMeasureModifyRecord; +import com.casic.missiles.service.business.IBizBusinessDeviceMeasureModifyRecordService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; +import java.util.HashMap; +import java.util.List; /** *

@@ -16,5 +28,14 @@ @RestController @RequestMapping("/business/device/measureModifyRecord") public class BizBusinessDeviceMeasureModifyRecordController { + @Autowired + private IBizBusinessDeviceMeasureModifyRecordService measureModifyRecordService; + @ApiOperation("列表(根据检定数据基本信息表id查询)") + @PostMapping("/list") + public ReturnDTO> itemCategoryListPage(@RequestBody @Valid IdDTO idDTO) { + HashMap map = new HashMap<>(); + map.put("data_id", idDTO.getId()); + return ReturnUtil.success(measureModifyRecordService.listByMap(map)); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..3e6654f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,105 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * @param dataDesc 该条数据描述,如:DCV 量程 500 + * @param beforeObj + * @param afterObj + * @return 全部相同返回空字符串,有不相同的返回原属性值和更新后的属性值字符串拼接 + */ + public static List fieldCompare(String dataDesc, Object beforeObj, Object afterObj, List fields) { + List beforeFieldList = Arrays.asList(beforeObj.getClass().getDeclaredFields()); + List superBeforeFileList = Arrays.asList(beforeObj.getClass().getSuperclass().getDeclaredFields()); + beforeFieldList.addAll(new ArrayList<>(superBeforeFileList)); + Field[] beforeFields = beforeFieldList.toArray(new Field[beforeFieldList.size()]); + + List afterFieldList = new ArrayList<>(Arrays.asList(afterObj.getClass().getDeclaredFields())); + List superAfterFieldList = new ArrayList<>(Arrays.asList(afterObj.getClass().getSuperclass().getDeclaredFields())); + afterFieldList.addAll(superAfterFieldList); + Field[] afterFields = afterFieldList.toArray(new Field[beforeFieldList.size()]); + + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + List changeList = new ArrayList<>(); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = null; + for (int j = 0; j < afterFields.length; j++) { + if(afterFields[j].getName().equals(beforeFields[i].getName())){ + afterValue = afterFields[j].get(afterObj); //取出对应的属性值 + break; + } + } + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null && !"".equals(afterValue))) { + //属性 从 原始值 修改为 更新值 + // TODO: 2023/10/2 beforeFields[i].getName()需要获取对应的中文名 + changeList.add(dataDesc + beforeFields[i].getName() + "从 " + beforeValue + "修改为 " + afterValue); + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + } + } + } + return changeList; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java index 22351ac..e04e087 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.math.BigDecimal; @@ -23,6 +24,7 @@ private static final long serialVersionUID = 1L; + @NotNull(message = "id不能为空") @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") @TableId("id") private Long id; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureInfo.java index 7fbe4af..eef81f9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureInfo.java @@ -261,7 +261,7 @@ private List equipmentIds; @NotEmpty(message = "检定数据不能为空") - @ApiModelProperty(value = "检定数据(新增/更新参数)", dataType = "List") + @ApiModelProperty(value = "检定数据(新增/更新/详情参数)", dataType = "List") @TableField(exist = false) private List measureDataCalibratorList; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java index 5ea14f5..0f1aa70 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java @@ -1,8 +1,20 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.model.business.BizBusinessDeviceMeasureModifyRecord; +import com.casic.missiles.service.business.IBizBusinessDeviceMeasureModifyRecordService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; +import java.util.HashMap; +import java.util.List; /** *

@@ -16,5 +28,14 @@ @RestController @RequestMapping("/business/device/measureModifyRecord") public class BizBusinessDeviceMeasureModifyRecordController { + @Autowired + private IBizBusinessDeviceMeasureModifyRecordService measureModifyRecordService; + @ApiOperation("列表(根据检定数据基本信息表id查询)") + @PostMapping("/list") + public ReturnDTO> itemCategoryListPage(@RequestBody @Valid IdDTO idDTO) { + HashMap map = new HashMap<>(); + map.put("data_id", idDTO.getId()); + return ReturnUtil.success(measureModifyRecordService.listByMap(map)); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..3e6654f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,105 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * @param dataDesc 该条数据描述,如:DCV 量程 500 + * @param beforeObj + * @param afterObj + * @return 全部相同返回空字符串,有不相同的返回原属性值和更新后的属性值字符串拼接 + */ + public static List fieldCompare(String dataDesc, Object beforeObj, Object afterObj, List fields) { + List beforeFieldList = Arrays.asList(beforeObj.getClass().getDeclaredFields()); + List superBeforeFileList = Arrays.asList(beforeObj.getClass().getSuperclass().getDeclaredFields()); + beforeFieldList.addAll(new ArrayList<>(superBeforeFileList)); + Field[] beforeFields = beforeFieldList.toArray(new Field[beforeFieldList.size()]); + + List afterFieldList = new ArrayList<>(Arrays.asList(afterObj.getClass().getDeclaredFields())); + List superAfterFieldList = new ArrayList<>(Arrays.asList(afterObj.getClass().getSuperclass().getDeclaredFields())); + afterFieldList.addAll(superAfterFieldList); + Field[] afterFields = afterFieldList.toArray(new Field[beforeFieldList.size()]); + + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + List changeList = new ArrayList<>(); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = null; + for (int j = 0; j < afterFields.length; j++) { + if(afterFields[j].getName().equals(beforeFields[i].getName())){ + afterValue = afterFields[j].get(afterObj); //取出对应的属性值 + break; + } + } + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null && !"".equals(afterValue))) { + //属性 从 原始值 修改为 更新值 + // TODO: 2023/10/2 beforeFields[i].getName()需要获取对应的中文名 + changeList.add(dataDesc + beforeFields[i].getName() + "从 " + beforeValue + "修改为 " + afterValue); + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + } + } + } + return changeList; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java index 22351ac..e04e087 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.math.BigDecimal; @@ -23,6 +24,7 @@ private static final long serialVersionUID = 1L; + @NotNull(message = "id不能为空") @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") @TableId("id") private Long id; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureInfo.java index 7fbe4af..eef81f9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureInfo.java @@ -261,7 +261,7 @@ private List equipmentIds; @NotEmpty(message = "检定数据不能为空") - @ApiModelProperty(value = "检定数据(新增/更新参数)", dataType = "List") + @ApiModelProperty(value = "检定数据(新增/更新/详情参数)", dataType = "List") @TableField(exist = false) private List measureDataCalibratorList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureModifyRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureModifyRecord.java index 3fd086c..bcc90ee 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureModifyRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureModifyRecord.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -27,42 +28,49 @@ /** * 检定数据管理基础信息表id */ + @ApiModelProperty(value = "检定数据管理基础信息表id", dataType = "String") @TableField("data_id") private Long dataId; /** * 计量业务管理系统/自动检定系统 */ + @ApiModelProperty(value = "计量业务管理系统/自动检定系统", dataType = "String") @TableField("source_system") private String sourceSystem; /** * 修改内容 */ + @ApiModelProperty(value = "修改内容", dataType = "String") @TableField("modify_content") private String modifyContent; /** * 创建用户id */ + @ApiModelProperty(value = "创建用户id", dataType = "String") @TableField("create_user_id") private Long createUserId; /** * 创建用户名 */ + @ApiModelProperty(value = "创建用户名", dataType = "String") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty(value = "创建时间", dataType = "String") @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(value = "更新时间", dataType = "String") @TableField("update_time") private String updateTime; diff --git a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java index 5ea14f5..0f1aa70 100644 --- a/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java +++ b/casic-metering-api/src/main/java/com/casic/missiles/controller/business/BizBusinessDeviceMeasureModifyRecordController.java @@ -1,8 +1,20 @@ package com.casic.missiles.controller.business; +import com.casic.missiles.dto.IdDTO; +import com.casic.missiles.dto.ReturnDTO; +import com.casic.missiles.dto.ReturnUtil; +import com.casic.missiles.model.business.BizBusinessDeviceMeasureModifyRecord; +import com.casic.missiles.service.business.IBizBusinessDeviceMeasureModifyRecordService; import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; +import java.util.HashMap; +import java.util.List; /** *

@@ -16,5 +28,14 @@ @RestController @RequestMapping("/business/device/measureModifyRecord") public class BizBusinessDeviceMeasureModifyRecordController { + @Autowired + private IBizBusinessDeviceMeasureModifyRecordService measureModifyRecordService; + @ApiOperation("列表(根据检定数据基本信息表id查询)") + @PostMapping("/list") + public ReturnDTO> itemCategoryListPage(@RequestBody @Valid IdDTO idDTO) { + HashMap map = new HashMap<>(); + map.put("data_id", idDTO.getId()); + return ReturnUtil.success(measureModifyRecordService.listByMap(map)); + } } diff --git a/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java new file mode 100644 index 0000000..3e6654f --- /dev/null +++ b/casic-metering-common/src/main/java/com/casic/missiles/utils/CasicBeanUtil.java @@ -0,0 +1,105 @@ +package com.casic.missiles.utils; + +import cn.hutool.core.util.ObjectUtil; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.BeansException; +import org.springframework.beans.FatalBeanException; +import org.springframework.util.Assert; +import org.springframework.util.ClassUtils; + +import java.beans.PropertyDescriptor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +@Slf4j +public class CasicBeanUtil { + + /** + * 对象属性比较 + * @param dataDesc 该条数据描述,如:DCV 量程 500 + * @param beforeObj + * @param afterObj + * @return 全部相同返回空字符串,有不相同的返回原属性值和更新后的属性值字符串拼接 + */ + public static List fieldCompare(String dataDesc, Object beforeObj, Object afterObj, List fields) { + List beforeFieldList = Arrays.asList(beforeObj.getClass().getDeclaredFields()); + List superBeforeFileList = Arrays.asList(beforeObj.getClass().getSuperclass().getDeclaredFields()); + beforeFieldList.addAll(new ArrayList<>(superBeforeFileList)); + Field[] beforeFields = beforeFieldList.toArray(new Field[beforeFieldList.size()]); + + List afterFieldList = new ArrayList<>(Arrays.asList(afterObj.getClass().getDeclaredFields())); + List superAfterFieldList = new ArrayList<>(Arrays.asList(afterObj.getClass().getSuperclass().getDeclaredFields())); + afterFieldList.addAll(superAfterFieldList); + Field[] afterFields = afterFieldList.toArray(new Field[beforeFieldList.size()]); + + Field.setAccessible(beforeFields, true); //设置私有属性可以访问到 + Field.setAccessible(afterFields, true); + List changeList = new ArrayList<>(); + //循环遍历比较属性 + if (beforeFields.length > 0) { + for (int i = 0; i < beforeFields.length; i++) { + if (ObjectUtil.isNotEmpty(fields) && fields.contains(beforeFields[i].getName())) { + try { + Object beforeValue = beforeFields[i].get(beforeObj); //取出对应的属性值 + Object afterValue = null; + for (int j = 0; j < afterFields.length; j++) { + if(afterFields[j].getName().equals(beforeFields[i].getName())){ + afterValue = afterFields[j].get(afterObj); //取出对应的属性值 + break; + } + } + if ((beforeValue != null && !"".equals(beforeValue) && !beforeValue.equals(afterValue)) || ((beforeValue == null || "".equals(beforeValue)) && afterValue != null && !"".equals(afterValue))) { + //属性 从 原始值 修改为 更新值 + // TODO: 2023/10/2 beforeFields[i].getName()需要获取对应的中文名 + changeList.add(dataDesc + beforeFields[i].getName() + "从 " + beforeValue + "修改为 " + afterValue); + } + } catch (IllegalAccessException e) { + log.error(e.getMessage()); + } + } + } + } + return changeList; + } + + public static void copySpecifyProperties(Object source, Object target, String... copyProperties) throws BeansException { + Assert.notNull(source, "Source must not be null"); + Assert.notNull(target, "Target must not be null"); + + Class actualEditable = target.getClass(); + + PropertyDescriptor[] targetPds = BeanUtils.getPropertyDescriptors(actualEditable); + List ignoreList = (copyProperties != null ? Arrays.asList(copyProperties) : null); + + for (PropertyDescriptor targetPd : targetPds) { + Method writeMethod = targetPd.getWriteMethod(); + if (writeMethod != null && ignoreList != null && ignoreList.contains(targetPd.getName())) { + PropertyDescriptor sourcePd = BeanUtils.getPropertyDescriptor(source.getClass(), targetPd.getName()); + if (sourcePd != null) { + Method readMethod = sourcePd.getReadMethod(); + if (readMethod != null && + ClassUtils.isAssignable(writeMethod.getParameterTypes()[0], readMethod.getReturnType())) { + try { + if (!Modifier.isPublic(readMethod.getDeclaringClass().getModifiers())) { + readMethod.setAccessible(true); + } + Object value = readMethod.invoke(source); + if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) { + writeMethod.setAccessible(true); + } + writeMethod.invoke(target, value); + } catch (Throwable ex) { + throw new FatalBeanException( + "Could not copy property '" + targetPd.getName() + "' from source to target", ex); + } + } + } + } + } + } +} diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java index 22351ac..e04e087 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureDataCalibrator.java @@ -6,6 +6,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import javax.validation.constraints.NotNull; import java.io.Serializable; import java.math.BigDecimal; @@ -23,6 +24,7 @@ private static final long serialVersionUID = 1L; + @NotNull(message = "id不能为空") @ApiModelProperty(value = "id,更新/删除使用参数", dataType = "Long") @TableId("id") private Long id; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureInfo.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureInfo.java index 7fbe4af..eef81f9 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureInfo.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureInfo.java @@ -261,7 +261,7 @@ private List equipmentIds; @NotEmpty(message = "检定数据不能为空") - @ApiModelProperty(value = "检定数据(新增/更新参数)", dataType = "List") + @ApiModelProperty(value = "检定数据(新增/更新/详情参数)", dataType = "List") @TableField(exist = false) private List measureDataCalibratorList; diff --git a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureModifyRecord.java b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureModifyRecord.java index 3fd086c..bcc90ee 100644 --- a/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureModifyRecord.java +++ b/casic-metering-model/src/main/java/com/casic/missiles/model/business/BizBusinessDeviceMeasureModifyRecord.java @@ -3,6 +3,7 @@ import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.io.Serializable; @@ -27,42 +28,49 @@ /** * 检定数据管理基础信息表id */ + @ApiModelProperty(value = "检定数据管理基础信息表id", dataType = "String") @TableField("data_id") private Long dataId; /** * 计量业务管理系统/自动检定系统 */ + @ApiModelProperty(value = "计量业务管理系统/自动检定系统", dataType = "String") @TableField("source_system") private String sourceSystem; /** * 修改内容 */ + @ApiModelProperty(value = "修改内容", dataType = "String") @TableField("modify_content") private String modifyContent; /** * 创建用户id */ + @ApiModelProperty(value = "创建用户id", dataType = "String") @TableField("create_user_id") private Long createUserId; /** * 创建用户名 */ + @ApiModelProperty(value = "创建用户名", dataType = "String") @TableField("create_user_name") private String createUserName; /** * 创建时间 */ + @ApiModelProperty(value = "创建时间", dataType = "String") @TableField("create_time") private String createTime; /** * 更新时间 */ + @ApiModelProperty(value = "更新时间", dataType = "String") @TableField("update_time") private String updateTime; diff --git a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureInfoServiceImpl.java b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureInfoServiceImpl.java index eaab206..176b815 100644 --- a/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureInfoServiceImpl.java +++ b/casic-metering-service/src/main/java/com/casic/missiles/service/Impl/business/BizBusinessDeviceMeasureInfoServiceImpl.java @@ -11,18 +11,17 @@ import com.casic.missiles.enums.BusinessExceptionEnum; import com.casic.missiles.enums.PrefixCodeEnum; import com.casic.missiles.exception.BusinessException; -import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureDataCalibratorMapper; -import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureEquipmentMapper; -import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureInfoMapper; -import com.casic.missiles.mapper.business.BizBusinessDeviceMeasureItemInfoMapper; +import com.casic.missiles.mapper.business.*; import com.casic.missiles.mapper.equipment.BizEquipmentTechnicalTargetMapper; import com.casic.missiles.model.business.BizBusinessDeviceMeasureDataCalibrator; import com.casic.missiles.model.business.BizBusinessDeviceMeasureEquipment; import com.casic.missiles.model.business.BizBusinessDeviceMeasureInfo; +import com.casic.missiles.model.business.BizBusinessDeviceMeasureModifyRecord; import com.casic.missiles.model.equipment.BizEquipmentTechnicalTarget; import com.casic.missiles.service.business.IBizBusinessDeviceMeasureDataCalibratorService; import com.casic.missiles.service.business.IBizBusinessDeviceMeasureEquipmentService; import com.casic.missiles.service.business.IBizBusinessDeviceMeasureInfoService; +import com.casic.missiles.utils.CasicBeanUtil; import com.casic.missiles.utils.DictCodeUtils; import com.casic.missiles.utils.NumberGeneratorUtil; import com.google.common.base.Joiner; @@ -32,6 +31,7 @@ import org.springframework.util.CollectionUtils; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; @@ -59,6 +59,8 @@ private BizBusinessDeviceMeasureItemInfoMapper measureItemInfoMapper; @Autowired private BizEquipmentTechnicalTargetMapper technicalTargetMapper; + @Autowired + private BizBusinessDeviceMeasureModifyRecordMapper measureModifyRecordMapper; @Override public Page listPage(Page page, MeasureInfoListRequest request) throws Exception { @@ -99,10 +101,13 @@ if(!addStandardEquipmentTypeHandle(measureInfo, belongStandardEquipment)) { throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } + //保存修改记录 + saveMeasureModifyRecord(measureInfo, "新建"); return ReturnUtil.success(); } @Override + @Transactional public ReturnDTO updateMeasureInfo(BizBusinessDeviceMeasureInfo measureInfo) { if(this.baseMapper.updateById(measureInfo) <= 0){ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); @@ -114,6 +119,20 @@ throw new BusinessException(BusinessExceptionEnum.HANDLE_FAILED); } saveMeasureEquipment(measureInfo); + + // TODO: 2023/10/2 若19套标准装置修改记录不同,则将保存修改记录放置各case处理 + //保存检定数据修改记录,在删除前保证可以查到原数据 + List measureDataList = measureInfo.getMeasureDataCalibratorList(); + List modifyList = new ArrayList<>(); + measureDataList.forEach(measureData -> { + BizBusinessDeviceMeasureDataCalibrator dataCalibrator = measureDataCalibratorMapper.selectById(measureData.getId()); + String dataDesc = measureData.getParams()+" "+"量程"+measureData.getRangeRange(); + modifyList.addAll(CasicBeanUtil.fieldCompare(dataDesc, dataCalibrator, measureData, Arrays.asList("indicatingValue"))); + }); + if(!CollectionUtils.isEmpty(modifyList)){ + saveMeasureModifyRecord(measureInfo, Joiner.on("\n").join(modifyList)); + } + //关联表-检定数据删除、新增 String belongStandardEquipment = measureItemInfoMapper.selectBelongStandardEquipmentByItemId(measureInfo.getItemId()); if(!deleteStandardEquipmentTypeHandle(measureInfo, belongStandardEquipment)) { @@ -129,6 +148,10 @@ public ReturnDTO detail(Long id) throws Exception { BizBusinessDeviceMeasureInfo measureItemInfo = this.baseMapper.selectDetailById(id); DictCodeUtils.convertDictCodeToName(measureItemInfo); + //检定数据 + QueryWrapper queryWrapper = new QueryWrapper<>(); + queryWrapper.eq("data_id", measureItemInfo.getId()); + measureItemInfo.setMeasureDataCalibratorList(measureDataCalibratorMapper.selectList(queryWrapper)); Long dataId = measureItemInfo.getId(); List equipmentList = measureEquipmentMapper.selectEquipmentListByDataId(dataId); //不确定度 @@ -182,6 +205,16 @@ } } + private void saveMeasureModifyRecord(BizBusinessDeviceMeasureInfo measureInfo, String modifyContent) { + BizBusinessDeviceMeasureModifyRecord measureModifyRecord = new BizBusinessDeviceMeasureModifyRecord(); + measureModifyRecord.setDataId(measureInfo.getId()); + measureModifyRecord.setCreateUserId(measureInfo.getUserId()); + measureModifyRecord.setCreateUserName(measureInfo.getUserName()); + measureModifyRecord.setSourceSystem("计量业务系统"); + measureModifyRecord.setModifyContent(modifyContent); + measureModifyRecordMapper.insert(measureModifyRecord); + } + private boolean addStandardEquipmentTypeHandle(BizBusinessDeviceMeasureInfo measureInfo, String belongStandardEquipment) { //19套标准装置判断,获取对应检定数据列表 switch (belongStandardEquipment) {