Browse Source

调整

contract
Yen 2 years ago
parent
commit
f3fe5bd5b6
  1. 6
      pom.xml
  2. 20
      src/main/java/com/qs/serve/common/model/annotation/BusinessDifference.java
  3. 17
      src/main/java/com/qs/serve/common/model/dto/DiffFieldVal.java
  4. 79
      src/main/java/com/qs/serve/common/util/BusinessDifferenceUtil.java
  5. 9
      src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java
  6. 2
      src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java
  7. 39
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierContactsController.java
  8. 23
      src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java
  9. 13
      src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java
  10. 12
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierContacts.java
  11. 14
      src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitAddress.java
  12. 1
      src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java
  13. 15
      src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java
  14. 19
      src/main/java/com/qs/serve/modules/sys/common/enums/BusinessLogOption.java
  15. 20
      src/main/java/com/qs/serve/modules/sys/common/enums/BusinessLogType.java
  16. 73
      src/main/java/com/qs/serve/modules/sys/controller/SysBusinessLogController.java
  17. 147
      src/main/java/com/qs/serve/modules/sys/entity/SysBusinessLog.java
  18. 14
      src/main/java/com/qs/serve/modules/sys/mapper/SysBusinessLogMapper.java
  19. 25
      src/main/java/com/qs/serve/modules/sys/service/SysBusinessLogService.java
  20. 82
      src/main/java/com/qs/serve/modules/sys/service/impl/SysBusinessLogServiceImpl.java
  21. 8
      src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityChannelPoint.java

6
pom.xml

@ -32,6 +32,12 @@
<dependencies>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>2.13.0</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>

20
src/main/java/com/qs/serve/common/model/annotation/BusinessDifference.java

@ -0,0 +1,20 @@
package com.qs.serve.common.model.annotation;
import java.lang.annotation.*;
/**
* @author YenHex
* @since 2023/4/25
*/
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface BusinessDifference {
/**
* 字段备注
* @return
*/
String value() default "";
}

17
src/main/java/com/qs/serve/common/model/dto/DiffFieldVal.java

@ -0,0 +1,17 @@
package com.qs.serve.common.model.dto;
import lombok.Data;
/**
* @author YenHex
* @since 2023/4/25
*/
@Data
public class DiffFieldVal {
String field;
String comment;
String orgValue;
String newValue;
}

79
src/main/java/com/qs/serve/common/util/BusinessDifferenceUtil.java

@ -0,0 +1,79 @@
package com.qs.serve.common.util;
import com.qs.serve.common.framework.mybatis.join.annotations.BindEntity;
import com.qs.serve.common.model.annotation.BusinessDifference;
import com.qs.serve.common.model.dto.DiffFieldVal;
import com.qs.serve.modules.bms.entity.BmsSupplierContacts;
import com.qs.serve.modules.sys.entity.SysBusinessLog;
import lombok.SneakyThrows;
import java.lang.annotation.Annotation;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
/**
* @author YenHex
* @since 2023/4/25
*/
public class BusinessDifferenceUtil {
@SneakyThrows
public static <T> List<DiffFieldVal> getDifferenceList(T orgVal, T newVal){
List<DiffFieldVal> diffFieldValList = new ArrayList<>();
if(orgVal==null||newVal==null){
return diffFieldValList;
}
Class<?> clazz = null;
try {
clazz = Class.forName(orgVal.getClass().getName());
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
if(clazz==null){return diffFieldValList;}
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
for (Annotation annotation : field.getAnnotations()) {
if(annotation instanceof BusinessDifference){
BusinessDifference busDiff = (BusinessDifference) annotation;
field.setAccessible(true);
Object orgValue = field.get(orgVal);
Object newValue = field.get(newVal);
if(newValue==null){
continue;
}
if(orgValue==null){
orgValue = "";
}
if(!orgValue.equals(newValue)){
DiffFieldVal fieldVal = new DiffFieldVal();
fieldVal.setField(field.getName());
fieldVal.setNewValue(newValue.toString());
fieldVal.setOrgValue(orgValue.toString());
fieldVal.setComment(busDiff.value());
diffFieldValList.add(fieldVal);
}
}
}
}
return diffFieldValList;
}
public static void main(String[] args) {
BmsSupplierContacts supplierContacts = new BmsSupplierContacts();
supplierContacts.setContactsName("名称1");
supplierContacts.setContactsPost("setContactsPost");
BmsSupplierContacts supplierContacts2 = new BmsSupplierContacts();
supplierContacts2.setContactsName("名称2");
supplierContacts2.setContactsNumber("123456");
supplierContacts2.setContactsPost("setContactsPost");
List<DiffFieldVal> diffFieldValList =BusinessDifferenceUtil.getDifferenceList(supplierContacts,supplierContacts2);
for (DiffFieldVal fieldVal : diffFieldValList) {
System.out.println(JsonUtil.objectToJson(fieldVal));
}
}
}

9
src/main/java/com/qs/serve/modules/bms/controller/BmsChannelPointController.java

@ -25,6 +25,8 @@ import com.qs.serve.modules.bms.service.BmsChannelService;
import com.qs.serve.modules.bms.service.BmsRegion2Service;
import com.qs.serve.modules.bms.service.BmsRegionService;
import com.qs.serve.modules.his.service.HisUserChannelPointService;
import com.qs.serve.modules.sys.common.enums.BusinessLogType;
import com.qs.serve.modules.sys.service.SysBusinessLogService;
import com.qs.serve.modules.tbs.entity.TbsActivityChannelPoint;
import com.qs.serve.modules.tbs.service.TbsActivityChannelPointService;
import lombok.AllArgsConstructor;
@ -50,6 +52,7 @@ import java.util.stream.Collectors;
@RequestMapping("bms/channelPoint")
public class BmsChannelPointController {
private SysBusinessLogService businessLogService;
private BazVisitInfoService bazVisitInfoService;
private BmsChannelPointService bmsChannelPointService;
private BmsRegionService bmsRegionService;
@ -149,7 +152,10 @@ public class BmsChannelPointController {
@PostMapping("/updateMapInfo")
public R<?> updateById(@RequestBody BmsChannelPointMapInfoBo param){
BmsChannelPoint channelPoint = CopierUtil.copy(param,new BmsChannelPoint());
BmsChannelPoint orgData = bmsChannelPointService.getById(channelPoint.getId());
bmsChannelPointService.updateById(channelPoint);
businessLogService.buildLog4Change(BusinessLogType.Point,
channelPoint.getId()+"",channelPoint.getPointCode(),channelPoint.getPointName(),null,orgData,channelPoint);
if(!StringUtils.hasText(param.getLocalX())||!StringUtils.hasText(param.getLocalY())){
channelPointMapper.updateSetNullOfMapInfo(param.getId());
}
@ -183,8 +189,11 @@ public class BmsChannelPointController {
if(activityChannelPointService.count(lqw)>0){
return R.error("活动含当前站点,删除失败");
}
BmsChannelPoint point = bmsChannelPointService.getById(id);
boolean result = bmsChannelPointService.removeById(id);
hisUserChannelPointService.removeByPointId(id);
//添加日志
businessLogService.buildLog4Delete(BusinessLogType.Point,id+"",point.getPointCode(),point.getPointName(),null);
return R.isTrue(result);
}

2
src/main/java/com/qs/serve/modules/bms/controller/BmsRegionController.java

@ -75,7 +75,7 @@ public class BmsRegionController {
/**
* 树查询
* @param listUserFlag 加载我负责的用户所属的区域
* @param loadByCurrent =1过滤当前用户负责数据
* @param loadByCurrent =1过滤当前用户负责数据(优先级最高)
* @return
*/
@GetMapping("/tree")

39
src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierContactsController.java

@ -7,12 +7,13 @@ import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.Assert;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import com.qs.serve.common.util.*;
import com.qs.serve.modules.bms.entity.BmsSupplier;
import com.qs.serve.modules.bms.service.BmsSupplierService;
import com.qs.serve.modules.sys.common.enums.BusinessLogOption;
import com.qs.serve.modules.sys.common.enums.BusinessLogType;
import com.qs.serve.modules.sys.entity.SysBusinessLog;
import com.qs.serve.modules.sys.service.SysBusinessLogService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
@ -38,6 +39,7 @@ import java.util.List;
public class BmsSupplierContactsController {
private BmsSupplierContactsService bmsSupplierContactsService;
private SysBusinessLogService businessLogService;
private BmsSupplierService bmsSupplierService;
/**
@ -95,7 +97,17 @@ public class BmsSupplierContactsController {
BmsSupplier supplier = bmsSupplierService.getById(param.getSupplierId());
entity.setSupplierCode(supplier.getCode());
entity.setSupplierName(supplier.getName());
BmsSupplierContacts orgContacts = bmsSupplierContactsService.getById(param.getId());
boolean result = bmsSupplierContactsService.updateById(entity);
//记录变更人
businessLogService.buildLog4Change(
BusinessLogType.SupplierContacts,
supplier.getId(),
supplier.getCode(),
supplier.getName(),
param.getId()+"",
orgContacts,
entity);
return R.isTrue(result);
}
@ -115,6 +127,14 @@ public class BmsSupplierContactsController {
entity.setSupplierCode(supplier.getCode());
entity.setSupplierName(supplier.getName());
bmsSupplierContactsService.save(entity);
//记录变更人
businessLogService.buildLog4Save(
BusinessLogType.SupplierContacts,
supplier.getId(),
supplier.getCode(),
supplier.getName(),
param.getId()+"",
entity);
return R.ok(entity);
}
@ -127,6 +147,17 @@ public class BmsSupplierContactsController {
@SysLog(module = SystemModule.BASE, title = "供应商联系人", biz = BizType.DELETE)
public R<?> deleteById(@PathVariable("ids") String ids){
List<Long> idsLong = StringUtils.splitIdLong(ids);
assert idsLong != null;
for (Long id : idsLong) {
BmsSupplierContacts supplierContacts = bmsSupplierContactsService.getById(id);
BmsSupplier supplier = bmsSupplierService.getById(supplierContacts.getSupplierId());
businessLogService.buildLog4Delete(
BusinessLogType.SupplierContacts,
supplier.getId(),
supplier.getCode(),
supplier.getName(),
id+"");
}
boolean result = bmsSupplierContactsService.removeByIds(idsLong);
return R.isTrue(result);
}

23
src/main/java/com/qs/serve/modules/bms/controller/BmsSupplierVisitAddressController.java

@ -23,6 +23,8 @@ import com.qs.serve.modules.his.entity.HisUserSupplier;
import com.qs.serve.modules.his.entity.dto.HisUserSupplierAddressVo;
import com.qs.serve.modules.his.mapper.HisUserSupplierMapper;
import com.qs.serve.modules.his.service.HisUserSupplierService;
import com.qs.serve.modules.sys.common.enums.BusinessLogType;
import com.qs.serve.modules.sys.service.SysBusinessLogService;
import com.qs.serve.modules.sys.service.SysUserService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -47,6 +49,7 @@ import java.util.stream.Collectors;
@RequestMapping("bms/supplierVisitAddress")
public class BmsSupplierVisitAddressController {
private SysBusinessLogService businessLogService;
private BazVisitInfoService bazVisitInfoService;
private BmsSupplierVisitAddressService bmsSupplierVisitAddressService;
private BmsSupplierService bmsSupplierService;
@ -210,7 +213,10 @@ public class BmsSupplierVisitAddressController {
@SysLog(module = SystemModule.BASE, title = "供应商拜访地址", biz = BizType.UPDATE)
@PreAuthorize("hasRole('bms:supplierVisitAddress:update')")
public R<?> updateById(@RequestBody @Valid BmsSupplierVisitAddress param){
BmsSupplierVisitAddress dbData = bmsSupplierVisitAddressService.getById(param.getId());
boolean result = bmsSupplierVisitAddressService.updateById(param);
businessLogService.buildLog4Change(BusinessLogType.SupplierAddress,dbData.getSupplierId().toString(),
dbData.getSupplierCode(),dbData.getSupplierName(),dbData.getId(),dbData,param);
return R.isTrue(result);
}
@ -223,6 +229,8 @@ public class BmsSupplierVisitAddressController {
@SysLog(module = SystemModule.BASE, title = "供应商拜访地址", biz = BizType.INSERT)
@PreAuthorize("hasRole('bms:supplierVisitAddress:insert')")
public R<?> save(@RequestBody @Valid BmsSupplierVisitAddress param){
businessLogService.buildLog4Save(BusinessLogType.SupplierAddress,param.getSupplierId().toString(),
param.getSupplierCode(),param.getSupplierName(),param.getId(),param);
bmsSupplierVisitAddressService.save(param);
return R.ok(param);
}
@ -237,11 +245,16 @@ public class BmsSupplierVisitAddressController {
@PreAuthorize("hasRole('bms:supplierVisitAddress:delete')")
public R<?> deleteById(@PathVariable("ids") String ids){
List<String> idsLong = StringUtils.splitIdString(ids);
LambdaQueryWrapper<BazVisitFlow> lqw = new LambdaQueryWrapper<>();
lqw.in(BazVisitFlow::getFormId,idsLong);
long count = bazVisitFlowService.count(lqw);
if(count>0){
return R.error("含有使用表单的业务,无法删除");
// LambdaQueryWrapper<BazVisitFlow> lqw = new LambdaQueryWrapper<>();
// lqw.in(BazVisitFlow::getFormId,idsLong);
// long count = bazVisitFlowService.count(lqw);
// if(count>0){
// return R.error("含有使用表单的业务,无法删除");
// }
List<BmsSupplierVisitAddress> visitAddressList = bmsSupplierVisitAddressService.listByIds(idsLong);
for (BmsSupplierVisitAddress visitAddress : visitAddressList) {
businessLogService.buildLog4Delete(BusinessLogType.SupplierAddress,visitAddress.getSupplierId().toString(),
visitAddress.getSupplierCode(),visitAddress.getSupplierName(),visitAddress.getId());
}
boolean result = bmsSupplierVisitAddressService.removeByIds(idsLong);
return R.isTrue(result);

13
src/main/java/com/qs/serve/modules/bms/entity/BmsChannelPoint.java

@ -7,7 +7,12 @@ import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler;
import com.qs.serve.common.model.annotation.BusinessDifference;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;
import org.hibernate.validator.constraints.Length;
@ -48,6 +53,7 @@ public class BmsChannelPoint implements Serializable {
@NotBlank(message = "站点名称不能为空")
@Length(max = 30,message = "站点名称长度不能超过30字")
@TableField(condition = SqlCondition.LIKE)
@BusinessDifference("网点名称")
private String pointName;
/** 店铺面积 */
@ -68,6 +74,7 @@ public class BmsChannelPoint implements Serializable {
/** 详细地址 */
@Length(max = 255,message = "详细地址长度不能超过255字")
@BusinessDifference("详细地址")
private String address;
/** 销售区域id */
@ -77,6 +84,7 @@ public class BmsChannelPoint implements Serializable {
/** 销售区域 */
@NotBlank(message = "销售区域不能为空")
@Length(max = 255,message = "销售区域长度不能超过255字")
@BusinessDifference("销售区域")
private String saleRegionPath;
private String saleRegionPathIds;
@ -88,6 +96,7 @@ public class BmsChannelPoint implements Serializable {
/** 行政区域 */
@NotBlank(message = "行政区域不能为空")
@Length(max = 255,message = "行政区域长度不能超过255字")
@BusinessDifference("行政区域")
private String bizRegionPath;
private String bizRegionPathIds;
@ -115,12 +124,16 @@ public class BmsChannelPoint implements Serializable {
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;

12
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierContacts.java

@ -9,6 +9,11 @@ import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.qs.serve.common.model.annotation.BusinessDifference;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
@ -47,16 +52,19 @@ public class BmsSupplierContacts implements Serializable {
/** 联系号码 */
@Length(max = 255,message = "联系号码长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
@BusinessDifference("联系号码")
private String contactsNumber;
/** 联系名称 */
@Length(max = 255,message = "联系名称长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
@BusinessDifference("联系名称")
private String contactsName;
/** 联系岗位 */
@Length(max = 255,message = "联系岗位长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
@BusinessDifference("联系岗位")
private String contactsPost;
/** 备注 */
@ -65,6 +73,8 @@ public class BmsSupplierContacts implements Serializable {
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@ -75,6 +85,8 @@ public class BmsSupplierContacts implements Serializable {
/** 更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;

14
src/main/java/com/qs/serve/modules/bms/entity/BmsSupplierVisitAddress.java

@ -9,7 +9,12 @@ import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import com.qs.serve.common.framework.mybatis.handler.meta.SplitStringTypeHandler;
import com.qs.serve.common.model.annotation.BusinessDifference;
import lombok.Data;
import org.apache.ibatis.type.JdbcType;
import org.hibernate.validator.constraints.Length;
@ -44,21 +49,26 @@ public class BmsSupplierVisitAddress implements Serializable {
/** 详细地址 */
@NotBlank(message = "详细地址不能为空")
@Length(max = 255,message = "详细地址长度不能超过255字")
@BusinessDifference("详细地址")
private String addressDetail;
/** 地址类型 */
@BusinessDifference("地址类型")
private String addressType;
@BusinessDifference("定位地址")
private String localAddress;
private Integer defaultFlag;
/** 纬度 */
@Length(max = 255,message = "纬度长度不能超过255字")
@BusinessDifference("纬度")
private String localX;
/** 经度 */
@Length(max = 255,message = "经度长度不能超过255字")
@BusinessDifference("经度")
private String localY;
/** 备注 */
@ -69,12 +79,16 @@ public class BmsSupplierVisitAddress implements Serializable {
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
private LocalDateTime updateTime;
/** 所属租户 */

1
src/main/java/com/qs/serve/modules/bms/entity/bo/BmsChannelPointBo.java

@ -84,7 +84,6 @@ public class BmsChannelPointBo {
private String mapAddress;
/** 行政区域 */
@NotBlank(message = "行政区域不能为空")
@Length(max = 255,message = "行政区域长度不能超过255字")
private String bizRegionPath;

15
src/main/java/com/qs/serve/modules/bms/service/impl/BmsChannelPointServiceImpl.java

@ -12,11 +12,14 @@ import com.qs.serve.modules.bms.service.BmsChannelService;
import com.qs.serve.modules.bms.service.BmsRegion2Service;
import com.qs.serve.modules.bms.service.BmsRegionService;
import com.qs.serve.modules.his.service.HisUserChannelPointService;
import com.qs.serve.modules.sys.common.enums.BusinessLogType;
import com.qs.serve.modules.sys.service.SysBusinessLogService;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.bms.service.BmsChannelPointService;
import com.qs.serve.modules.bms.mapper.BmsChannelPointMapper;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
@ -34,11 +37,13 @@ public class BmsChannelPointServiceImpl extends ServiceImpl<BmsChannelPointMappe
private BmsRegion2Service bmsRegion2Service;
private BmsChannelService bmsChannelService;
private HisUserChannelPointService hisUserChannelPointService;
private SysBusinessLogService sysBusinessLogService;
private BmsMasterUserMapper bmsMasterUserMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public boolean modify(BmsChannelPointBo param) {
BmsChannelPoint channelPoint = CopierUtil.copy(param,new BmsChannelPoint());
if(channelPoint.getChannelId()!=null){
@ -60,7 +65,15 @@ public class BmsChannelPointServiceImpl extends ServiceImpl<BmsChannelPointMappe
channelPoint.setBizRegionPath(bmsRegion2.getPathNames());
channelPoint.setBizRegionPathIds(bmsRegion2.getPathIds());
}
this.saveOrUpdate(channelPoint);
if(channelPoint.getId()==null){
this.save(channelPoint);
sysBusinessLogService.buildLog4Save(BusinessLogType.Point,channelPoint.getId()+"",channelPoint.getPointCode(),channelPoint.getPointName(),null,channelPoint);
}else {
BmsChannelPoint orgData = this.getById(channelPoint.getId());
sysBusinessLogService.buildLog4Change(BusinessLogType.Point,
channelPoint.getId()+"",channelPoint.getPointCode(),channelPoint.getPointName(),null,orgData,channelPoint);
this.updateById(channelPoint);
}
LambdaQueryWrapper<BmsMasterUser> mgrLqw = new LambdaQueryWrapper<>();
mgrLqw.eq(BmsMasterUser::getType, MasterUserType.Point);
mgrLqw.eq(BmsMasterUser::getTargetId,channelPoint.getId());

19
src/main/java/com/qs/serve/modules/sys/common/enums/BusinessLogOption.java

@ -0,0 +1,19 @@
package com.qs.serve.modules.sys.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author YenHex
* @since 2023/4/25
*/
@Getter
@AllArgsConstructor
public enum BusinessLogOption {
SAVE("新增"),
UPDATE("修改"),
DELETE("删除");
String label;
}

20
src/main/java/com/qs/serve/modules/sys/common/enums/BusinessLogType.java

@ -0,0 +1,20 @@
package com.qs.serve.modules.sys.common.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author YenHex
* @since 2023/4/25
*/
@Getter
@AllArgsConstructor
public enum BusinessLogType {
SupplierContacts("客户联系人"),
SupplierAddress("客户地址"),
Point("网点信息");
String label;
}

73
src/main/java/com/qs/serve/modules/sys/controller/SysBusinessLogController.java

@ -0,0 +1,73 @@
package com.qs.serve.modules.sys.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.model.enums.BizType;
import com.qs.serve.common.model.enums.SystemModule;
import com.qs.serve.common.util.PageUtil;
import com.qs.serve.common.util.CopierUtil;
import com.qs.serve.common.util.StringUtils;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.*;
import com.qs.serve.modules.sys.entity.SysBusinessLog;
import com.qs.serve.modules.sys.service.SysBusinessLogService;
import java.util.List;
/**
* 系统 系统业务日志
* @author YenHex
* @since 2023-04-25
*/
@Slf4j
@AllArgsConstructor
@RestController
@RequestMapping("sys/businessLog")
public class SysBusinessLogController {
private SysBusinessLogService sysBusinessLogService;
/**
* 翻页
* @param param
* @return
*/
@GetMapping("/page")
public R<PageVo<SysBusinessLog>> getPage(SysBusinessLog param){
LambdaQueryWrapper<SysBusinessLog> lqw = new LambdaQueryWrapper<>(param);
PageUtil.startPage();
List<SysBusinessLog> list = sysBusinessLogService.list(lqw);
return R.byPageHelperList(list);
}
/**
* ID查询
* @param id
* @return
*/
@GetMapping("/getById/{id}")
public R<SysBusinessLog> getById(@PathVariable("id") String id){
SysBusinessLog sysBusinessLog = sysBusinessLogService.getById(id);
return R.ok(sysBusinessLog);
}
/**
* 删除
* @param ids
* @return
*/
@DeleteMapping("/deleteById/{ids}")
public R<?> deleteById(@PathVariable("ids") String ids){
List<Long> idsLong = StringUtils.splitIdLong(ids);
boolean result = sysBusinessLogService.removeByIds(idsLong);
return R.isTrue(result);
}
}

147
src/main/java/com/qs/serve/modules/sys/entity/SysBusinessLog.java

@ -0,0 +1,147 @@
package com.qs.serve.modules.sys.entity;
import java.time.LocalDate;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.NotBlank;
/**
* 实体类
* @author YenHex
* @since 2023-04-25
*/
@Data
@TableName("sys_business_log")
public class SysBusinessLog implements Serializable {
private static final long serialVersionUID = 1L;
/** id */
@TableId(type = IdType.AUTO)
private Long id;
/** 用户id */
@Length(max = 255,message = "用户id长度不能超过255字")
private String userId;
/** 用户编码 */
@Length(max = 255,message = "用户编码长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
private String userCode;
/** 用户 */
@Length(max = 255,message = "用户长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
private String userName;
/** 目标类型 */
@Length(max = 255,message = "目标类型长度不能超过255字")
private String targetType;
/** 目标id */
@Length(max = 255,message = "目标id长度不能超过255字")
private String targetId;
/** 目标 */
@Length(max = 255,message = "目标长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
private String targetCode;
/** 目标 */
@Length(max = 255,message = "目标长度不能超过255字")
@TableField(condition = SqlCondition.LIKE)
private String targetName;
/** 目标关联id */
@Length(max = 255,message = "目标关联id长度不能超过255字")
private String targetRelateId;
/** 操作类型 */
@Length(max = 255,message = "操作类型长度不能超过255字")
private String optType;
/** 原来值 */
@Length(max = 255,message = "原来值长度不能超过255字")
private String orgJson;
/** 新值 */
@Length(max = 255,message = "新值长度不能超过255字")
private String newJson;
/** 差异值 */
@Length(max = 255,message = "差异值长度不能超过255字")
private String diffJson;
/** 备注 */
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;
/** 所属租户 */
@JsonIgnore
@JsonProperty
private String tenantId;
/** 逻辑删除标记(0:显示;1:隐藏) */
@JsonIgnore
@JsonProperty
private String delFlag;
/** 创建人 */
@TableField(fill = FieldFill.INSERT)
private String createBy;
/** 更新人 */
@TableField(fill = FieldFill.UPDATE)
private String updateBy;
public static SysBusinessLog toNewObject(SysBusinessLog source){
SysBusinessLog businessLog = new SysBusinessLog();
businessLog.setId(source.getId());
businessLog.setUserId(source.getUserId());
businessLog.setUserCode(source.getUserCode());
businessLog.setUserName(source.getUserName());
businessLog.setTargetType(source.getTargetType());
businessLog.setTargetId(source.getTargetId());
businessLog.setTargetCode(source.getTargetCode());
businessLog.setTargetName(source.getTargetName());
businessLog.setTargetRelateId(source.getTargetRelateId());
businessLog.setOptType(source.getOptType());
businessLog.setOrgJson(source.getOrgJson());
businessLog.setNewJson(source.getNewJson());
businessLog.setDiffJson(source.getDiffJson());
businessLog.setRemark(source.getRemark());
businessLog.setCreateTime(source.getCreateTime());
businessLog.setUpdateTime(source.getUpdateTime());
businessLog.setTenantId(source.getTenantId());
businessLog.setDelFlag(source.getDelFlag());
businessLog.setCreateBy(source.getCreateBy());
businessLog.setUpdateBy(source.getUpdateBy());
return businessLog;
}
}

14
src/main/java/com/qs/serve/modules/sys/mapper/SysBusinessLogMapper.java

@ -0,0 +1,14 @@
package com.qs.serve.modules.sys.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.qs.serve.modules.sys.entity.SysBusinessLog;
/**
* Mapper
* @author YenHex
* @date 2023-04-25
*/
public interface SysBusinessLogMapper extends BaseMapper<SysBusinessLog> {
}

25
src/main/java/com/qs/serve/modules/sys/service/SysBusinessLogService.java

@ -0,0 +1,25 @@
package com.qs.serve.modules.sys.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qs.serve.modules.sys.common.enums.BusinessLogOption;
import com.qs.serve.modules.sys.common.enums.BusinessLogType;
import com.qs.serve.modules.sys.entity.SysBusinessLog;
/**
* 服务接口
* @author YenHex
* @date 2023-04-25
*/
public interface SysBusinessLogService extends IService<SysBusinessLog> {
void buildLog4Save(BusinessLogType logType, String targetId,String targetCode,String targetName, String targetRelateId,Object newVal);
void buildLog4Delete(BusinessLogType logType, String targetId,String targetCode,String targetName,String targetRelateId);
void buildLog4Change(BusinessLogType logType, String targetId,String targetCode,String targetName,String targetRelateId, Object orgVal, Object newVal);
void baseBuildLog(BusinessLogType logType, String targetId,String targetCode,String targetName,String targetRelateId, Object orgVal, Object newVal,BusinessLogOption option);
}

82
src/main/java/com/qs/serve/modules/sys/service/impl/SysBusinessLogServiceImpl.java

@ -0,0 +1,82 @@
package com.qs.serve.modules.sys.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.dto.DiffFieldVal;
import com.qs.serve.common.util.AuthContextUtils;
import com.qs.serve.common.util.BusinessDifferenceUtil;
import com.qs.serve.common.util.JsonUtil;
import com.qs.serve.modules.sys.common.enums.BusinessLogOption;
import com.qs.serve.modules.sys.common.enums.BusinessLogType;
import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.mapper.SysUserMapper;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import com.qs.serve.modules.sys.entity.SysBusinessLog;
import com.qs.serve.modules.sys.service.SysBusinessLogService;
import com.qs.serve.modules.sys.mapper.SysBusinessLogMapper;
import java.util.List;
/**
* 服务实现类
* @author YenHex
* @since 2023-04-25
*/
@Slf4j
@Service
@AllArgsConstructor
public class SysBusinessLogServiceImpl extends ServiceImpl<SysBusinessLogMapper,SysBusinessLog> implements SysBusinessLogService {
SysUserMapper sysUserMapper;
@Override
public void buildLog4Save(BusinessLogType logType, String targetId,String targetCode,String targetName,String targetRelateId, Object newVal) {
BusinessLogOption option = BusinessLogOption.SAVE;
this.baseBuildLog(logType,targetId,targetCode,targetName,targetRelateId,null,newVal,option);
}
@Override
public void buildLog4Delete(BusinessLogType logType, String targetId,String targetCode,String targetName,String targetRelateId) {
BusinessLogOption option = BusinessLogOption.DELETE;
this.baseBuildLog(logType,targetId,targetCode,targetName,targetRelateId,null,null,option);
}
@Override
public void buildLog4Change(BusinessLogType logType, String targetId,String targetCode,String targetName,String targetRelateId, Object orgVal, Object newVal) {
BusinessLogOption option = BusinessLogOption.UPDATE;
this.baseBuildLog(logType,targetId,targetCode,targetName,targetRelateId,orgVal,newVal,option);
}
@Override
public void baseBuildLog(BusinessLogType logType, String targetId,String targetCode,String targetName, String targetRelateId,Object orgVal, Object newVal, BusinessLogOption option) {
try {
List<DiffFieldVal> diffFieldValList = BusinessDifferenceUtil.getDifferenceList(orgVal,newVal);
if(option.equals(BusinessLogOption.UPDATE)&&diffFieldValList.size()<1){
return;
}
SysBusinessLog businessLog = new SysBusinessLog();
SysUser sysUser = sysUserMapper.selectById(AuthContextUtils.getSysUserId());
businessLog.setUserId(sysUser.getId());
businessLog.setUserCode(sysUser.getCode());
businessLog.setUserName(sysUser.getName());
businessLog.setTargetType(logType.getLabel());
businessLog.setTargetId(targetId);
businessLog.setOptType(option.getLabel());
if(orgVal!=null){
businessLog.setOrgJson(JsonUtil.objectToJson(orgVal));
}
if(newVal!=null){
businessLog.setNewJson(JsonUtil.objectToJson(newVal));
}
businessLog.setDiffJson(JsonUtil.objectToJson(diffFieldValList));
businessLog.setTargetCode(targetCode);
businessLog.setTargetName(targetName);
businessLog.setTargetRelateId(targetRelateId);
this.save(businessLog);
} catch (Exception e) {
e.printStackTrace();
}
}
}

8
src/main/java/com/qs/serve/modules/tbs/entity/TbsActivityChannelPoint.java

@ -9,6 +9,10 @@ import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.springframework.format.annotation.DateTimeFormat;
@ -78,12 +82,16 @@ public class TbsActivityChannelPoint implements Serializable {
/** 创建时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
/** 最后更新时间 */
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
@JsonDeserialize(using = LocalDateTimeDeserializer.class)
@JsonSerialize(using = LocalDateTimeSerializer.class)
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime;

Loading…
Cancel
Save