Browse Source

14.给开单表加一个关联表--修改记录表,存两条数据,修改前和修改后的,同时记录修改人姓名,id,修改时间

qiaohui 2 years ago
parent
commit
dc5fbc4c6e
  1. 32
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/controller/LogisticsOrderController.java
  2. 32
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/entity/LogisticsOrder.java
  3. 39
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/entity/LogisticsOrderChangeLog.java
  4. 19
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/mapper/LogisticsOrderMapper.java
  5. 19
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/service/LogisticsOrderService.java
  6. 42
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/service/impl/LogisticsOrderServiceImpl.java
  7. 18
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/vo/CompareField.java
  8. 89
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/vo/CompareObjectUtils.java
  9. 47
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/vo/DiffAttr.java
  10. 32
      hiver-core/src/main/java/cc/hiver/core/logisticsorder/vo/LogisticsOrderChangeLogVo.java
  11. 13
      hiver-core/src/main/resources/mapper/LogisticsOrderMapper.xml

32
hiver-core/src/main/java/cc/hiver/core/logisticsorder/controller/LogisticsOrderController.java

@ -5,10 +5,13 @@ import cc.hiver.core.common.utils.ResultUtil;
import cc.hiver.core.common.vo.Result; import cc.hiver.core.common.vo.Result;
import cc.hiver.core.logisticsaddressbook.service.LogisticsAddressBookService; import cc.hiver.core.logisticsaddressbook.service.LogisticsAddressBookService;
import cc.hiver.core.logisticsorder.entity.LogisticsOrder; import cc.hiver.core.logisticsorder.entity.LogisticsOrder;
import cc.hiver.core.logisticsorder.entity.LogisticsOrderChangeLog;
import cc.hiver.core.logisticsorder.service.LogisticsOrderService; import cc.hiver.core.logisticsorder.service.LogisticsOrderService;
import cc.hiver.core.logisticsorder.vo.LogisticsOrderChangeLogVo;
import cc.hiver.core.logisticsorder.vo.LogisticsOrderQueryVo; import cc.hiver.core.logisticsorder.vo.LogisticsOrderQueryVo;
import cc.hiver.core.utils.DateUtil; import cc.hiver.core.utils.DateUtil;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.google.gson.Gson;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -18,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date; import java.util.Date;
import java.util.List;
/** /**
* 物流订单控制器 * 物流订单控制器
@ -78,8 +82,23 @@ public class LogisticsOrderController {
if (StringUtils.isEmpty(logisticsOrder.getId())) { if (StringUtils.isEmpty(logisticsOrder.getId())) {
return ResultUtil.error("订单id不能为空!"); return ResultUtil.error("订单id不能为空!");
} }
//先查询出旧的数据
LogisticsOrder oldLogisticsOrder = logisticsOrderService.getById(logisticsOrder.getId());
final boolean b = logisticsOrderService.saveOrUpdate(logisticsOrder); final boolean b = logisticsOrderService.saveOrUpdate(logisticsOrder);
if (b) { if (b) {
//如果更新成功,把修改记录保存一下
Gson gson = new Gson();
LogisticsOrderChangeLog logisticsOrderChangeLog = new LogisticsOrderChangeLog();
logisticsOrderChangeLog.setOldData(gson.toJson(oldLogisticsOrder));
logisticsOrderChangeLog.setNewData(gson.toJson(logisticsOrder));
logisticsOrderChangeLog.setOrderId(logisticsOrder.getId());
logisticsOrderChangeLog.setCreateBy(logisticsOrder.getCreateBy());
logisticsOrderChangeLog.setCreateByName(logisticsOrder.getCreateByName());
logisticsOrderChangeLog.setCreateTime(new Date());
int status = logisticsOrderService.saveLogisticsOrderChangeLog(logisticsOrderChangeLog);
if(status == 0){
return ResultUtil.error("保存修改记录失败!");
}
return ResultUtil.success("保存成功!"); return ResultUtil.success("保存成功!");
} else { } else {
return ResultUtil.error("保存失败!"); return ResultUtil.error("保存失败!");
@ -122,4 +141,17 @@ public class LogisticsOrderController {
final IPage<LogisticsOrder> result = logisticsOrderService.getLogisticsOrderPageList(logisticsOrderQueryVo); final IPage<LogisticsOrder> result = logisticsOrderService.getLogisticsOrderPageList(logisticsOrderQueryVo);
return new ResultUtil<IPage<LogisticsOrder>>().setData(result); return new ResultUtil<IPage<LogisticsOrder>>().setData(result);
} }
/**
* 查询订单的修改记录
* @param
* @return
*/
@RequestMapping(value = "/getLogisticsOrderChangeLog", method = RequestMethod.GET)
@ApiOperation(value = "查询物流订单修改记录")
public Result<List<LogisticsOrderChangeLogVo>> getLogisticsOrderChangeLog(String orderId) {
return new ResultUtil<List<LogisticsOrderChangeLogVo>>().setData(logisticsOrderService.getLogisticsOrderChangeLog(orderId));
}
} }

32
hiver-core/src/main/java/cc/hiver/core/logisticsorder/entity/LogisticsOrder.java

@ -1,6 +1,7 @@
package cc.hiver.core.logisticsorder.entity; package cc.hiver.core.logisticsorder.entity;
import cc.hiver.core.base.HiverBaseEntity; import cc.hiver.core.base.HiverBaseEntity;
import cc.hiver.core.logisticsorder.vo.CompareField;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
@ -23,96 +24,127 @@ public class LogisticsOrder extends HiverBaseEntity {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
@CompareField(name = "操作人姓名")
@ApiModelProperty(value = "操作人姓名") @ApiModelProperty(value = "操作人姓名")
private String createByName; private String createByName;
@CompareField(name = "物流公司id")
@ApiModelProperty(value = "物流公司id") @ApiModelProperty(value = "物流公司id")
private String companyId; private String companyId;
@CompareField(name = "物流公司名称")
@ApiModelProperty(value = "物流公司名称") @ApiModelProperty(value = "物流公司名称")
private String companyName; private String companyName;
@CompareField(name = "线路id")
@ApiModelProperty(value = "线路id") @ApiModelProperty(value = "线路id")
private String circuitId; private String circuitId;
@CompareField(name = "线路名称")
@ApiModelProperty(value = "线路名称") @ApiModelProperty(value = "线路名称")
private String circuitName; private String circuitName;
@CompareField(name = "发货人名称")
@ApiModelProperty(value = "发货人名称") @ApiModelProperty(value = "发货人名称")
private String shipperName; private String shipperName;
@CompareField(name = "发货人联系方式")
@ApiModelProperty(value = "发货人联系方式") @ApiModelProperty(value = "发货人联系方式")
private String shipperMobile; private String shipperMobile;
@CompareField(name = "发货地址")
@ApiModelProperty(value = "发货地址") @ApiModelProperty(value = "发货地址")
private String shipperAddress; private String shipperAddress;
@CompareField(name = "收货人名称")
@ApiModelProperty(value = "收货人名称") @ApiModelProperty(value = "收货人名称")
private String receiverName; private String receiverName;
@CompareField(name = "收货人联系方式")
@ApiModelProperty(value = "收货人联系方式") @ApiModelProperty(value = "收货人联系方式")
private String receiverMobile; private String receiverMobile;
@CompareField(name = "收货地址")
@ApiModelProperty(value = "收货地址") @ApiModelProperty(value = "收货地址")
private String receiverAddress; private String receiverAddress;
@CompareField(name = "出发站id")
@ApiModelProperty(value = "出发站id") @ApiModelProperty(value = "出发站id")
private String goStationId; private String goStationId;
@CompareField(name = "出发站名称")
@ApiModelProperty(value = "出发站名称") @ApiModelProperty(value = "出发站名称")
private String goStationName; private String goStationName;
@CompareField(name = "到达站id")
@ApiModelProperty(value = "到达站id") @ApiModelProperty(value = "到达站id")
private String arrivalStationId; private String arrivalStationId;
@CompareField(name = "到达站名称")
@ApiModelProperty(value = "到达站名称") @ApiModelProperty(value = "到达站名称")
private String arrivalStationName; private String arrivalStationName;
@CompareField(name = "货物类型")
@ApiModelProperty(value = "重量") @ApiModelProperty(value = "重量")
private BigDecimal weight; private BigDecimal weight;
@CompareField(name = "件数")
@ApiModelProperty(value = "件数") @ApiModelProperty(value = "件数")
private Integer count; private Integer count;
@CompareField(name = "体积")
@ApiModelProperty(value = "运费") @ApiModelProperty(value = "运费")
private BigDecimal freight; private BigDecimal freight;
@CompareField(name = "保费")
@ApiModelProperty(value = "保费") @ApiModelProperty(value = "保费")
private BigDecimal premium; private BigDecimal premium;
@CompareField(name = "中转费")
@ApiModelProperty(value = "中转费") @ApiModelProperty(value = "中转费")
private BigDecimal transitFee; private BigDecimal transitFee;
@CompareField(name = "小费")
@ApiModelProperty(value = "小费") @ApiModelProperty(value = "小费")
private BigDecimal tips; private BigDecimal tips;
@CompareField(name = "结算方式")
@ApiModelProperty(value = "结算方式(0:现金、1:月付、2:提付)") @ApiModelProperty(value = "结算方式(0:现金、1:月付、2:提付)")
private String methodOfSettlement; private String methodOfSettlement;
@CompareField(name = "工本费")
@ApiModelProperty(value = "工本费") @ApiModelProperty(value = "工本费")
private BigDecimal cost; private BigDecimal cost;
@CompareField(name = "总费用")
@ApiModelProperty(value = "总费用") @ApiModelProperty(value = "总费用")
private BigDecimal allCost; private BigDecimal allCost;
@CompareField(name = "票号")
@ApiModelProperty(value = "票号") @ApiModelProperty(value = "票号")
private String orderNumber; private String orderNumber;
@CompareField(name = "物体名称")
@ApiModelProperty(value = "物体名称") @ApiModelProperty(value = "物体名称")
private String objectName; private String objectName;
@CompareField(name = "备注")
@ApiModelProperty(value = "备注") @ApiModelProperty(value = "备注")
private String remark; private String remark;
@CompareField(name = "收货站人id")
@ApiModelProperty(value = "收货站人id") @ApiModelProperty(value = "收货站人id")
private String receivingUserId; private String receivingUserId;
@CompareField(name = "收货站人姓名")
@ApiModelProperty(value = "收货站人姓名") @ApiModelProperty(value = "收货站人姓名")
private String receivingUserName; private String receivingUserName;
@CompareField(name = "图片路径")
@ApiModelProperty(value = "图片路径") @ApiModelProperty(value = "图片路径")
private String imagePath; private String imagePath;
@CompareField(name = "代收货款")
@ApiModelProperty(value = "代收货款") @ApiModelProperty(value = "代收货款")
private String paymentForGoods; private String paymentForGoods;

39
hiver-core/src/main/java/cc/hiver/core/logisticsorder/entity/LogisticsOrderChangeLog.java

@ -0,0 +1,39 @@
package cc.hiver.core.logisticsorder.entity;
import cc.hiver.core.base.HiverBaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.math.BigDecimal;
/**
* 物流中转实体
*
* @author 王富康
* @date 2024/8/24
*/
@EqualsAndHashCode(callSuper = true)
@Data
@ApiModel(value = "物流订单修改记录表")
@TableName(value = "t_logistics_order_change_log", autoResultMap = true)
public class LogisticsOrderChangeLog extends HiverBaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "订单ID")
private String orderId;
@ApiModelProperty(value = "修改前数据")
private String oldData;
@ApiModelProperty(value = "修改后数据")
private String newData;
@ApiModelProperty(value = "修改人姓名")
private String createByName;
}

19
hiver-core/src/main/java/cc/hiver/core/logisticsorder/mapper/LogisticsOrderMapper.java

@ -1,12 +1,15 @@
package cc.hiver.core.logisticsorder.mapper; package cc.hiver.core.logisticsorder.mapper;
import cc.hiver.core.logisticsorder.entity.LogisticsOrder; import cc.hiver.core.logisticsorder.entity.LogisticsOrder;
import cc.hiver.core.logisticsorder.entity.LogisticsOrderChangeLog;
import cc.hiver.core.logisticsorder.vo.LogisticsOrderQueryVo; import cc.hiver.core.logisticsorder.vo.LogisticsOrderQueryVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface LogisticsOrderMapper extends BaseMapper<LogisticsOrder> { public interface LogisticsOrderMapper extends BaseMapper<LogisticsOrder> {
/** /**
@ -19,4 +22,20 @@ public interface LogisticsOrderMapper extends BaseMapper<LogisticsOrder> {
* @date 2024/8/24 * @date 2024/8/24
*/ */
IPage<LogisticsOrder> getLogisticsOrderPageList(Page<LogisticsOrder> page, @Param("queryParams") LogisticsOrderQueryVo logisticsOrderQueryVo); IPage<LogisticsOrder> getLogisticsOrderPageList(Page<LogisticsOrder> page, @Param("queryParams") LogisticsOrderQueryVo logisticsOrderQueryVo);
/**
*
* @param logisticsOrderChangeLog
* @return int
*/
int saveLogisticsOrderChangeLog(LogisticsOrderChangeLog logisticsOrderChangeLog);
/**
* 查询物流订单修改记录
* @param orderId
* @return int
*/
List<LogisticsOrderChangeLog> getLogisticsOrderChangeLog(@Param("orderId") String orderId);
} }

19
hiver-core/src/main/java/cc/hiver/core/logisticsorder/service/LogisticsOrderService.java

@ -1,10 +1,14 @@
package cc.hiver.core.logisticsorder.service; package cc.hiver.core.logisticsorder.service;
import cc.hiver.core.logisticsorder.entity.LogisticsOrder; import cc.hiver.core.logisticsorder.entity.LogisticsOrder;
import cc.hiver.core.logisticsorder.entity.LogisticsOrderChangeLog;
import cc.hiver.core.logisticsorder.vo.LogisticsOrderChangeLogVo;
import cc.hiver.core.logisticsorder.vo.LogisticsOrderQueryVo; import cc.hiver.core.logisticsorder.vo.LogisticsOrderQueryVo;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
public interface LogisticsOrderService extends IService<LogisticsOrder> { public interface LogisticsOrderService extends IService<LogisticsOrder> {
/** /**
@ -23,4 +27,19 @@ public interface LogisticsOrderService extends IService<LogisticsOrder> {
*/ */
LogisticsOrder getLogisticsOrderByCompanyId(LogisticsOrder logisticsOrder); LogisticsOrder getLogisticsOrderByCompanyId(LogisticsOrder logisticsOrder);
/**
* 保存物流订单修改记录
* @param logisticsOrderChangeLog
* @return int
*/
int saveLogisticsOrderChangeLog(LogisticsOrderChangeLog logisticsOrderChangeLog);
/**
* 查询物流订单修改记录
* @param orderId
* @return int
*/
List<LogisticsOrderChangeLogVo> getLogisticsOrderChangeLog(String orderId);
} }

42
hiver-core/src/main/java/cc/hiver/core/logisticsorder/service/impl/LogisticsOrderServiceImpl.java

@ -1,19 +1,27 @@
package cc.hiver.core.logisticsorder.service.impl; package cc.hiver.core.logisticsorder.service.impl;
import cc.hiver.core.logisticsorder.entity.LogisticsOrder; import cc.hiver.core.logisticsorder.entity.LogisticsOrder;
import cc.hiver.core.logisticsorder.entity.LogisticsOrderChangeLog;
import cc.hiver.core.logisticsorder.mapper.LogisticsOrderMapper; import cc.hiver.core.logisticsorder.mapper.LogisticsOrderMapper;
import cc.hiver.core.logisticsorder.service.LogisticsOrderService; import cc.hiver.core.logisticsorder.service.LogisticsOrderService;
import cc.hiver.core.logisticsorder.vo.CompareObjectUtils;
import cc.hiver.core.logisticsorder.vo.DiffAttr;
import cc.hiver.core.logisticsorder.vo.LogisticsOrderChangeLogVo;
import cc.hiver.core.logisticsorder.vo.LogisticsOrderQueryVo; import cc.hiver.core.logisticsorder.vo.LogisticsOrderQueryVo;
import cc.hiver.core.utils.DateUtil; import cc.hiver.core.utils.DateUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.google.gson.Gson;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List;
@Service @Service
public class LogisticsOrderServiceImpl extends ServiceImpl<LogisticsOrderMapper, LogisticsOrder> implements LogisticsOrderService { public class LogisticsOrderServiceImpl extends ServiceImpl<LogisticsOrderMapper, LogisticsOrder> implements LogisticsOrderService {
@ -55,4 +63,38 @@ public class LogisticsOrderServiceImpl extends ServiceImpl<LogisticsOrderMapper,
return getBaseMapper().selectOne(stuQuery); return getBaseMapper().selectOne(stuQuery);
} }
@Override
public int saveLogisticsOrderChangeLog(LogisticsOrderChangeLog logisticsOrderChangeLog){
return logisticsOrderMapper.saveLogisticsOrderChangeLog(logisticsOrderChangeLog);
}
/**
* 查询物流订单修改记录
* @param orderId
* @return int
*/
@Override
public List<LogisticsOrderChangeLogVo> getLogisticsOrderChangeLog(String orderId){
List<LogisticsOrderChangeLog> list = logisticsOrderMapper.getLogisticsOrderChangeLog(orderId);
List<LogisticsOrderChangeLogVo> logisticsOrderChangeLogVoList = new ArrayList<>();
if(CollectionUtils.isNotEmpty(list)){
Gson gson = new Gson();
for (LogisticsOrderChangeLog logisticsOrderChangeLog : list){
LogisticsOrderChangeLogVo logisticsOrderChangeLogVo = new LogisticsOrderChangeLogVo();
LogisticsOrder oldData = gson.fromJson(logisticsOrderChangeLog.getOldData(), LogisticsOrder.class);
LogisticsOrder newData = gson.fromJson(logisticsOrderChangeLog.getNewData(), LogisticsOrder.class);
CompareObjectUtils<LogisticsOrder> compareObjectUtils = new CompareObjectUtils<>();
List<DiffAttr> diffAttrs = compareObjectUtils.CompareObjWithAnnotation(oldData, newData);
logisticsOrderChangeLogVo.setOrderId(oldData.getId());
logisticsOrderChangeLogVo.setCreateBy(logisticsOrderChangeLog.getCreateBy());
logisticsOrderChangeLogVo.setCreateByName(logisticsOrderChangeLog.getCreateByName());
logisticsOrderChangeLogVo.setCreateTime(logisticsOrderChangeLog.getCreateTime());
logisticsOrderChangeLogVo.setDiffAttrList(diffAttrs);
logisticsOrderChangeLogVoList.add(logisticsOrderChangeLogVo);
}
}
return logisticsOrderChangeLogVoList;
}
} }

18
hiver-core/src/main/java/cc/hiver/core/logisticsorder/vo/CompareField.java

@ -0,0 +1,18 @@
package cc.hiver.core.logisticsorder.vo;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 对比属性
*
* @author qiaohui
* @createTime 2024-09-09 22:49:15
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
public @interface CompareField {
String name() default "";
}

89
hiver-core/src/main/java/cc/hiver/core/logisticsorder/vo/CompareObjectUtils.java

@ -0,0 +1,89 @@
package cc.hiver.core.logisticsorder.vo;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
/**
* 比较对象的不同属性值
*
* @author qiaohui
* @createTime 2024-09-09 22:49:26
*/
public class CompareObjectUtils<T> {
public List<DiffAttr> CompareObjWithAnnotation(Object oldBean, Object newBean) {
List<DiffAttr> attrList = new ArrayList<>();
T pojo1 = (T) oldBean;
T pojo2 = (T) newBean;
try {
Class clazz = pojo1.getClass();
Field[] fields = pojo1.getClass().getDeclaredFields();
for (Field field : fields) {
boolean hasAnnotion = field.isAnnotationPresent(CompareField.class);
if (!hasAnnotion) {
continue;
}
PropertyDescriptor pd = new PropertyDescriptor(field.getName(), clazz);
Method getMethod = pd.getReadMethod();
Object o1 = getMethod.invoke(pojo1);
Object o2 = getMethod.invoke(pojo2);
if (Objects.isNull(o1) && Objects.isNull(o2)) {
continue;
}
String oldVal = Objects.nonNull(o1) ? o1.toString() : "";
String newVal = Objects.nonNull(o2) ? o2.toString() : "";
if(isBigDecimal(oldVal) && isBigDecimal(newVal)){
if(new BigDecimal(oldVal).compareTo(new BigDecimal(newVal)) == 0){
continue;
}
}
if (oldVal.equals(newVal)) {
continue;
}
CompareField compareField = field.getAnnotation(CompareField.class);
DiffAttr diffAttr = new DiffAttr(compareField.name(), oldVal, newVal);
attrList.add(diffAttr);
}
} catch (Exception e) {
attrList = null;
} finally {
return attrList;
}
}
public static boolean isBigDecimal(String str){
if(str==null || str.trim().length() == 0){
return false;
}
char[] chars = str.toCharArray();
int sz = chars.length;
int i = (chars[0] == '-') ? 1 : 0;
if(i == sz) return false;
if(chars[i] == '.') return false;//除了负号,第一位不能为'小数点'
boolean radixPoint = false;
for(; i < sz; i++){
if(chars[i] == '.'){
if(radixPoint) return false;
radixPoint = true;
}else if(!(chars[i] >= '0' && chars[i] <= '9')){
return false;
}
}
return true;
}
}

47
hiver-core/src/main/java/cc/hiver/core/logisticsorder/vo/DiffAttr.java

@ -0,0 +1,47 @@
package cc.hiver.core.logisticsorder.vo;
import java.io.Serializable;
/**
*
* @author qiaohui
* @createTime 2024-09-09 22:50:45
*/
public class DiffAttr implements Serializable {
private String name;
private String oldVal;
private String newVal;
public DiffAttr() {
}
public DiffAttr(String name, String oldVal, String newVal) {
this.name = name;
this.oldVal = oldVal;
this.newVal = newVal;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOldVal() {
return oldVal;
}
public void setOldVal(String oldVal) {
this.oldVal = oldVal;
}
public String getNewVal() {
return newVal;
}
public void setNewVal(String newVal) {
this.newVal = newVal;
}
}

32
hiver-core/src/main/java/cc/hiver/core/logisticsorder/vo/LogisticsOrderChangeLogVo.java

@ -0,0 +1,32 @@
package cc.hiver.core.logisticsorder.vo;
import cc.hiver.core.base.HiverBaseEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.List;
/**
* 返回给前端修改记录
*
* @author qiaohui
* @date 2024-09-09 22:55:25
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class LogisticsOrderChangeLogVo extends HiverBaseEntity {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "订单ID")
private String orderId;
@ApiModelProperty(value = "修改人姓名")
private String createByName;
@ApiModelProperty(value = "修改内容")
private List<DiffAttr> diffAttrList;
}

13
hiver-core/src/main/resources/mapper/LogisticsOrderMapper.xml

@ -137,4 +137,17 @@
ORDER BY ORDER BY
create_time desc create_time desc
</select> </select>
<insert id="saveLogisticsOrderChangeLog" parameterType="cc.hiver.core.logisticsorder.entity.LogisticsOrderChangeLog">
insert into t_logistics_order_change_log(id, order_id, old_data, new_data, create_by, create_by_name, create_time)
values (#{id,jdbcType=VARCHAR}, #{orderId,jdbcType=VARCHAR}, #{oldData,jdbcType=VARCHAR}, #{newData,jdbcType=VARCHAR}, #{createBy,jdbcType=VARCHAR},
#{createByName,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP});
</insert>
<select id="getLogisticsOrderChangeLog" resultType="cc.hiver.core.logisticsorder.entity.LogisticsOrderChangeLog">
select * from t_logistics_order_change_log where order_id = #{orderId} order by create_time desc;
</select>
</mapper> </mapper>
Loading…
Cancel
Save