Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
2025-12-02 15:41:02 +08:00
56 changed files with 2626 additions and 27 deletions

View File

@ -0,0 +1,62 @@
package com.xjrsoft.module.dev.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
import com.pictc.annotations.datalog.LogField;
import com.pictc.annotations.datalog.LogTable;
/**
* @title: 测试流程
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@Data
@LogTable(source="testflow_001",name="测试流程")
public class AddTestflow001Dto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 客户
*/
@ApiModelProperty("客户")
@LogField(name="客户",index=0)
private String customer;
/**
* 客户编码
*/
@ApiModelProperty("客户编码")
@LogField(name="客户编码",index=0)
private String customerCode;
/**
* 名称
*/
@ApiModelProperty("名称")
@LogField(name="名称",index=0)
private String name;
/**
* 备注
*/
@ApiModelProperty("备注")
@LogField(name="备注",index=0)
private String note;
/**
*
*/
@ApiModelProperty("")
@LogField(name="",index=0)
private Long tenantId;
}

View File

@ -0,0 +1,45 @@
package com.xjrsoft.module.dev.dto;
import com.xjrsoft.common.page.PageInput;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
/**
* @title: 分页查询入参
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class Testflow001PageDto extends PageInput {
/**
* 客户
*/
@ApiModelProperty("客户")
private String customer;
/**
* 客户编码
*/
@ApiModelProperty("客户编码")
private String customerCode;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 备注
*/
@ApiModelProperty("备注")
private String note;
}

View File

@ -0,0 +1,79 @@
package com.xjrsoft.module.dev.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.List;
import com.pictc.annotations.datalog.LogTable;
import com.pictc.annotations.datalog.LogField;
import com.pictc.annotations.datalog.LogJoin;
import com.pictc.annotations.datalog.LogJoinColumn;
import com.pictc.annotations.datalog.JoinCaseType;
import com.pictc.annotations.datalog.JoinType;
import com.pictc.annotations.datalog.ValueDirectionType;
/**
* @title: 测试流程
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@Data
@LogTable(source="testflow_001",name="测试流程")
public class UpdateTestflow001Dto implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@LogField(name="",index=0)
@ApiModelProperty("")
private Long id;
/**
* 客户
*/
@LogField(name="客户",index=1)
@ApiModelProperty("客户")
private String customer;
/**
* 客户编码
*/
@LogField(name="客户编码",index=2)
@ApiModelProperty("客户编码")
private String customerCode;
/**
* 名称
*/
@LogField(name="名称",index=3)
@ApiModelProperty("名称")
private String name;
/**
* 备注
*/
@LogField(name="备注",index=4)
@ApiModelProperty("备注")
private String note;
/**
*
*/
@LogField(name="",index=5)
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -0,0 +1,48 @@
package com.xjrsoft.module.dev.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.xjrsoft.common.annotation.Trans;
import com.xjrsoft.common.enums.TransType;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
/**
* @title: 分页列表出参
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@Data
public class Testflow001PageVo {
/**
*
*/
@ApiModelProperty("")
private String id;
/**
* 客户
*/
@ApiModelProperty("客户")
private String customer;
/**
* 客户编码
*/
@ApiModelProperty("客户编码")
private String customerCode;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 备注
*/
@ApiModelProperty("备注")
private String note;
}

View File

@ -0,0 +1,100 @@
package com.xjrsoft.module.dev.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
/**
* @title: 表单出参
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@Data
public class Testflow001Vo {
/**
*
*/
@ApiModelProperty("")
private Long id;
/**
* 客户
*/
@ApiModelProperty("客户")
private String customer;
/**
* 客户编码
*/
@ApiModelProperty("客户编码")
private String customerCode;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 备注
*/
@ApiModelProperty("备注")
private String note;
/**
*
*/
@ApiModelProperty("")
private Long createUserId;
/**
*
*/
@ApiModelProperty("")
private LocalDateTime createDate;
/**
*
*/
@ApiModelProperty("")
private Long modifyUserId;
/**
*
*/
@ApiModelProperty("")
private LocalDateTime modifyDate;
/**
*
*/
@ApiModelProperty("")
private Integer enabledMark;
/**
*
*/
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -1,7 +1,5 @@
package com.xjrsoft.config; package com.xjrsoft.config;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor;

View File

@ -0,0 +1,119 @@
package com.xjrsoft.module.dev.controller;
import java.util.List;
import javax.validation.Valid;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xjrsoft.common.model.result.R;
import com.xjrsoft.common.page.ConventPage;
import com.xjrsoft.common.page.PageOutput;
import com.xjrsoft.common.utils.VoToColumnUtil;
import com.xjrsoft.module.datalog.service.DatalogService;
import com.xjrsoft.module.datalog.vo.DataChangeLogVo;
import com.xjrsoft.module.dev.dto.Testflow001PageDto;
import com.xjrsoft.module.dev.dto.UpdateTestflow001Dto;
import com.xjrsoft.module.dev.entity.Testflow001;
import com.xjrsoft.module.dev.service.ITestflow001Service;
import com.xjrsoft.module.dev.vo.Testflow001PageVo;
import com.xjrsoft.module.dev.vo.Testflow001Vo;
import com.xjrsoft.module.system.client.ICodeRuleClient;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
/**
* @title: 测试流程
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@RestController
@RequestMapping("/dev" + "/testflow001")
@Api(value = "/dev" + "/testflow001",tags = "测试流程代码")
@AllArgsConstructor
public class Testflow001Controller {
private final ITestflow001Service testflow001Service;
private final ICodeRuleClient codeRuleClient;
private final DatalogService dataService;
@GetMapping(value = "/page")
@ApiOperation(value="Testflow001列表(分页)")
@SaCheckPermission("testflow001:list")
public R page(@Valid Testflow001PageDto dto){
LambdaQueryWrapper<Testflow001> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.like(StrUtil.isNotBlank(dto.getCustomer()),Testflow001::getCustomer,dto.getCustomer())
.like(StrUtil.isNotBlank(dto.getCustomerCode()),Testflow001::getCustomerCode,dto.getCustomerCode())
.like(StrUtil.isNotBlank(dto.getName()),Testflow001::getName,dto.getName())
.like(StrUtil.isNotBlank(dto.getNote()),Testflow001::getNote,dto.getNote())
.orderByDesc(Testflow001::getId)
.select(Testflow001.class,x -> VoToColumnUtil.fieldsToColumns(Testflow001PageVo.class).contains(x.getProperty()));
IPage<Testflow001> page = testflow001Service.page(ConventPage.getPage(dto), queryWrapper);
PageOutput<Testflow001PageVo> pageOutput = ConventPage.getPageOutput(page, Testflow001PageVo.class);
return R.ok(pageOutput);
}
@GetMapping(value = "/info")
@ApiOperation(value="根据id查询Testflow001信息")
@SaCheckPermission("testflow001:detail")
public R info(@RequestParam Long id){
Testflow001 testflow001 = testflow001Service.getById(id);
if (testflow001 == null) {
return R.error("找不到此数据!");
}
return R.ok(BeanUtil.toBean(testflow001, Testflow001Vo.class));
}
@GetMapping(value = "/datalog")
@ApiOperation(value="根据id查询Testflow001数据详细日志")
@SaCheckPermission("testflow001:datalog")
public R datalog(@RequestParam Long id){
List<DataChangeLogVo> logs = dataService.findLogsByEntityId(UpdateTestflow001Dto.class,id);
return R.ok(logs);
}
@PostMapping
@ApiOperation(value = "新增Testflow001")
@SaCheckPermission("testflow001:add")
public R add(@Valid @RequestBody UpdateTestflow001Dto dto){
codeRuleClient.useEncode("TestCode");
UpdateTestflow001Dto res = dataService.insert(dto);
return R.ok(res.getId());
}
@PutMapping
@ApiOperation(value = "修改Testflow001")
@SaCheckPermission("testflow001:edit")
public R update(@Valid @RequestBody UpdateTestflow001Dto dto){
return R.ok(dataService.updateById(dto));
}
@DeleteMapping
@ApiOperation(value = "删除")
@SaCheckPermission("testflow001:delete")
public R delete(@Valid @RequestBody List<Long> ids){
return R.ok(dataService.deleteByIds(UpdateTestflow001Dto.class, ids));
}
}

View File

@ -0,0 +1,115 @@
package com.xjrsoft.module.dev.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.Version;
import com.github.yulichang.annotation.EntityMapping;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
/**
* @title: 测试流程
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@Data
@TableName("testflow_001")
@ApiModel(value = "测试流程对象", description = "测试流程")
public class Testflow001 implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@ApiModelProperty("")
@TableId
private Long id;
/**
* 客户
*/
@ApiModelProperty("客户")
private String customer;
/**
* 客户编码
*/
@ApiModelProperty("客户编码")
private String customerCode;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 备注
*/
@ApiModelProperty("备注")
private String note;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private Long createUserId;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createDate;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.UPDATE)
private Long modifyUserId;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime modifyDate;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
@TableLogic
private Integer deleteMark;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private Integer enabledMark;
/**
*
*/
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -0,0 +1,17 @@
package com.xjrsoft.module.dev.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.xjrsoft.module.dev.entity.Testflow001;
import org.apache.ibatis.annotations.Mapper;
/**
* @title: mapper
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@Mapper
public interface Testflow001Mapper extends BaseMapper<Testflow001> {
}

View File

@ -0,0 +1,19 @@
package com.xjrsoft.module.dev.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import com.github.yulichang.extension.mapping.base.MPJDeepService;
import com.github.yulichang.extension.mapping.base.MPJRelationService;
import com.xjrsoft.module.dev.entity.Testflow001;
import lombok.Data;
import java.util.List;
/**
* @title: service
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
public interface ITestflow001Service extends IService<Testflow001> {
}

View File

@ -0,0 +1,25 @@
package com.xjrsoft.module.dev.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.xjrsoft.module.dev.entity.Testflow001;
import com.xjrsoft.module.dev.mapper.Testflow001Mapper;
import com.xjrsoft.module.dev.service.ITestflow001Service;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
/**
* @title: service
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@Service
@AllArgsConstructor
public class Testflow001ServiceImpl extends ServiceImpl<Testflow001Mapper, Testflow001> implements ITestflow001Service {
}

View File

@ -0,0 +1,59 @@
spring:
cloud:
nacos: #nacos监控
config:
server-addr: 10.10.2.101:8848 # nacos 配置中心地址
namespace: ITC-MS
group: DNE
username: nacos
password: Lng@123
extension-configs:
- data-id: global-local.yml
refresh: true
group: DNE
- data-id: discovery-local.yml
refresh: true
group: DNE
- data-id: datasource-local.yml
refresh: true
group: DNE
- data-id: seata-local.yml
refresh: true
group: DNE
- data-id: redis-local.yml
refresh: true
group: DNE
- data-id: magic-api.yml
refresh: true
group: DNE
- data-id: sa-token.yml
refresh: true
group: DNE
- data-id: camunda.yml
refresh: true
group: DNE
- data-id: sentinel-local.yml
refresh: true
group: DNE
discovery:
ip: 10.0.0.2
#network-interface: net7
xjrsoft:
generate:
apiJavaPath: F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-mdm\itc-pcitc-mdm-api
javaPath: F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-mdm\itc-pcitc-mdm-service
webPath: F:\ges-scm\code\dev\geg-gas-web
appPath: F:\ges-scm\code\dev\uniapp\xjrsoft-uni #前端app

View File

@ -1,5 +1,10 @@
package com.xjrsoft; package com.xjrsoft;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
@ -7,6 +12,8 @@ import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner; import org.springframework.test.context.junit4.SpringRunner;
import com.xjrsoft.module.common.db.service.CommonCallService; import com.xjrsoft.module.common.db.service.CommonCallService;
import cn.hutool.core.io.IoUtil;
@RunWith(SpringRunner.class) @RunWith(SpringRunner.class)
@SpringBootTest(classes = ITCDemoApplication.class) @SpringBootTest(classes = ITCDemoApplication.class)
public class CallTest { public class CallTest {
@ -21,5 +28,21 @@ public class CallTest {
String out = callService.saveAfter("Ing_b_price_term", 12); String out = callService.saveAfter("Ing_b_price_term", 12);
System.out.println(out); System.out.println(out);
} }
public static void main(String[] args) {
String filePath = "D:\\java\\conf\\cn-ips.txt";
boolean first = false;
// 2. 流式读取(适合大文件,逐行处理,不占内存)
try (Stream<String> lineStream = Files.lines(Paths.get(filePath))) {
lineStream.forEach(line -> {
// 逐行处理逻辑(如解析、过滤)
if (!line.isEmpty()) { // 跳过空行
System.out.print(";" + line);
}
});
} catch (IOException e) {
System.err.println("流式读取失败:" + e.getMessage());
}
}
} }

View File

@ -0,0 +1,29 @@
package com.pictc.config;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;
import com.pictc.listener.PEventListenerPublisher;
import com.pictc.listener.TNacosManager;
@Configuration
public class PEventListenerConfig {
@Bean
public PEventListenerPublisher pEventListenerPublisher() {
return new PEventListenerPublisher();
}
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
@Bean
public TNacosManager nacosManager() {
return new TNacosManager();
}
}

View File

@ -0,0 +1,31 @@
package com.pictc.listener;
import java.io.Serializable;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class ListenerParameterContext implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
/**
* 发送源
*/
private String source;
/**
* 数据
*/
private Object data;
/**
* 单个监听器执行成功,就算成功
*/
private boolean single;
}

View File

@ -0,0 +1,27 @@
package com.pictc.listener;
import java.lang.reflect.Method;
import lombok.Data;
@Data
public class MethodInfo {
private Object bean;
private Method method;
private PEventListener annotation;
public MethodInfo(Object bean, Method method, PEventListener annotation) {
super();
this.bean = bean;
this.method = method;
this.annotation = annotation;
}
public Object invoke(Object[] args) throws Exception {
return method.invoke(bean, args);
}
}

View File

@ -0,0 +1,19 @@
package com.pictc.listener;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD) // 标注在方法上
@Retention(RetentionPolicy.RUNTIME) // 运行时保留,反射可获取
public @interface PEventListener {
/**
* EL表达式内容
*/
String value() default "";
}

View File

@ -0,0 +1,62 @@
package com.pictc.listener;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.RequestEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;
import com.pictc.utils.CollectionUtils;
import com.pictc.utils.ObjectUtils;
import lombok.extern.slf4j.Slf4j;
@Slf4j
public class PEventListenerPublisher {
private static RestTemplate rest;
@Autowired
public void setRest(RestTemplate rest) {
PEventListenerPublisher.rest = rest;
}
public static boolean publish(Object source,Object data) {
return publish(source, data, false);
}
public static boolean publish(Object source,Object data,boolean single) {
ListenerParameterContext conetext = new ListenerParameterContext();
conetext.setSource(TNacosManager.getAppName()+":"+source.getClass().getCanonicalName());
conetext.setData(data);
conetext.setSingle(single);
Set<String> services = TNacosManager.getNotSelfServices();
boolean flag = single?false:true;
if(CollectionUtils.isNotEmpty(services)) {
for (String serviceId : services) {
try {
URI uri = TNacosManager.getServiceURI(serviceId);
if(uri!=null) {
HttpHeaders headers = TNacosManager.createNewHeaders();
byte[] bytes = ObjectUtils.toBytes(conetext);
RequestEntity<byte[]> request = new RequestEntity<byte[]>(bytes,headers,HttpMethod.POST,uri);
ResponseEntity<Boolean> responseEntity = rest.exchange(request,boolean.class);
if(single && responseEntity.hasBody() && responseEntity.getBody()) {
return true;
}
}
} catch (URISyntaxException e) {
e.printStackTrace();
log.info("客户端:{}调用失败!",serviceId);
}
}
}
return flag;
}
}

View File

@ -0,0 +1,214 @@
package com.pictc.listener;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.client.ServiceInstance;
import org.springframework.cloud.client.loadbalancer.LoadBalancerClient;
import org.springframework.http.HttpHeaders;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import com.alibaba.cloud.nacos.NacosDiscoveryProperties;
import com.alibaba.cloud.nacos.NacosServiceManager;
import com.alibaba.nacos.api.common.Constants;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.ListView;
import com.alibaba.nacos.client.naming.event.InstancesChangeEvent;
import com.alibaba.nacos.common.notify.Event;
import com.alibaba.nacos.common.notify.NotifyCenter;
import com.alibaba.nacos.common.notify.listener.Subscriber;
import com.pictc.utils.CollectionUtils;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Getter
public class TNacosManager extends Subscriber<InstancesChangeEvent> implements InitializingBean{
private static Set<String> services = CollectionUtils.newConcurrentSet();
private static Object lock = new Object();
private static NacosServiceManager nacosServiceManager;
private static NacosDiscoveryProperties properties;
private static NamingService nacos;
private static String appName;
private static String group;
private static LoadBalancerClient loadba;
@Autowired
public void setLoadbalancerClient(LoadBalancerClient loadbalancerClient) {
TNacosManager.loadba = loadbalancerClient;
}
@Value("${spring.application.name}")
public void setAppName(String appName) {
TNacosManager.appName = appName;
}
public static String getAppName() {
return appName;
}
public static boolean isSelf(String serviceId) {
return appName.equals(serviceId);
}
@Autowired
public void setNacosServiceManager(NacosServiceManager nacosServiceManager) {
TNacosManager.nacosServiceManager = nacosServiceManager;
}
@Autowired
public void setProperties(NacosDiscoveryProperties properties) {
TNacosManager.properties = properties;
}
public static Set<String> getServices() {
synchronized (lock) {
initServices();
return services;
}
}
public static Set<String> getNotSelfServices() {
return getServices().stream().filter(it->it.equals(appName)).collect(Collectors.toSet());
}
public static URI getServiceURI(String serviceId) throws URISyntaxException {
ServiceInstance instance = loadba.choose(serviceId);
if(instance==null) return null;
String url = instance.getUri().toString();
if(url.endsWith("/")) {
url = url.substring(0, url.length()-1);
}
return new URI(url+"/reception/listener");
}
public static HttpHeaders createNewHeaders() {
HttpHeaders source = getHeaders();
HttpHeaders headers = new HttpHeaders();
if(source!=null) {
for (String name : source.keySet()) {
if(HttpHeaders.CONTENT_TYPE.equalsIgnoreCase(name)
|| HttpHeaders.CONTENT_LENGTH.equalsIgnoreCase(name)
|| HttpHeaders.CONTENT_DISPOSITION.equalsIgnoreCase(name)
|| HttpHeaders.CONTENT_ENCODING.equalsIgnoreCase(name)
|| HttpHeaders.CONTENT_LANGUAGE.equalsIgnoreCase(name)
|| HttpHeaders.CONTENT_LOCATION.equalsIgnoreCase(name)
|| HttpHeaders.CONTENT_RANGE.equalsIgnoreCase(name)
) {
continue;
}
headers.addAll(name,source.get(name));
}
}
return headers;
}
@Override
public void afterPropertiesSet() throws Exception {
init();
NotifyCenter.registerSubscriber(this);
initServices();
}
@Override
public Class<? extends Event> subscribeType() {
return InstancesChangeEvent.class;
}
@Override
public void onEvent(InstancesChangeEvent event) {
String serviceName = event.getServiceName();
String split = Constants.SERVICE_INFO_SPLITER;
if (serviceName.contains(split)) {
serviceName = serviceName.substring(serviceName.indexOf(split) + split.length());
}
initServices();
}
private static void init() {
if(nacos==null) {
nacos = nacosServiceManager.getNamingService();
group = properties.getGroup();
}
}
private static void initServices() {
try {
init();
services.clear();
int index = 1;
while (true) {
ListView<String> listView = nacos.getServicesOfServer(index,20,group);
if(CollectionUtils.isEmpty(listView.getData())) {
break;
}else {
for (String name : listView.getData()) {
if(!services.contains(name)) {
services.add(name);
}
}
}
index++;
}
} catch (NacosException e) {
log.error("初始化服务名异常",e);
}
}
public static HttpHeaders getHeaders() {
HttpServletRequest request = getRequest();
HttpHeaders headers = null;
if(request!=null) {
headers = new HttpHeaders();
Enumeration<String> headerNames = request.getHeaderNames();
if (headerNames != null) {
while (headerNames.hasMoreElements()) {
String name = headerNames.nextElement();
headers.addAll(name, getValues(request.getHeaders(name)));
}
}
}
return headers;
}
private static List<String> getValues(Enumeration<String> sourcs){
List<String> values = new ArrayList<String>();
if (sourcs != null) {
while (sourcs.hasMoreElements()) {
values.add(sourcs.nextElement());
}
}
return values;
}
private static HttpServletRequest getRequest() {
ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();
if(servletRequestAttributes!=null) {
return servletRequestAttributes.getRequest();
}
return null;
}
}

View File

@ -777,7 +777,6 @@ public class DataLogTools {
change.setNewValue(parseValue(BeanUtils.getFieldValue(item.getField(),entity),item.getField().getType())); change.setNewValue(parseValue(BeanUtils.getFieldValue(item.getField(),entity),item.getField().getType()));
datalog.addFiledChnage(change); datalog.addFiledChnage(change);
} }
} }
} }
@ -891,7 +890,9 @@ public class DataLogTools {
// } // }
// executeBatch(sql, batchParams); // executeBatch(sql, batchParams);
for (DataChangeLog item : logs) { for (DataChangeLog item : logs) {
logDbService.insertDataLog(tableName,item); if(item.hasFieldChanges()) {
logDbService.insertDataLog(tableName,item);
}
} }
} }

View File

@ -0,0 +1,70 @@
package com.pictc.utils;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import org.springframework.core.DefaultParameterNameDiscoverer;
import org.springframework.core.ParameterNameDiscoverer;
public class MethodUtils {
private static ParameterNameDiscoverer discoverer = new DefaultParameterNameDiscoverer();
private MethodUtils() {
super();
}
public static String toString(Method method) {
StringBuilder builder = new StringBuilder(method.getName());
builder.append("(");
String[] names = getArgNames(method);
Parameter[] parameters = method.getParameters();
if(parameters!=null) {
for (int i = 0; i < parameters.length; i++) {
if(i>0) {
builder.append(",");
}
if(names!=null) {
builder.append(names[i]);
}else {
builder.append("arg"+i);
}
Parameter parameter = parameters[i];
builder.append(":");
builder.append(typeToString(parameter.getParameterizedType()));
}
}
builder.append("):");
if(Void.class.equals(method.getReturnType())) {
builder.append("void");
}else {
builder.append(method.getReturnType().getName());
}
return builder.toString();
}
public static String[] getArgNames(Method method) {
return discoverer.getParameterNames(method);
}
public static String typeToString(Type type) {
if(type instanceof ParameterizedType) {
ParameterizedType gtype = ((ParameterizedType)type);
StringBuilder builder = new StringBuilder();
builder.append(gtype.getRawType().getTypeName());
Type[] generics = gtype.getActualTypeArguments();
builder.append("<");
for (int i = 0; i < generics.length; i++) {
if(i>0) {
builder.append(",");
}
builder.append(typeToString(generics[i]));
}
builder.append(">");
return builder.toString();
}
return type.getTypeName();
}
}

View File

@ -0,0 +1,96 @@
package com.pictc.utils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.Serializable;
/**
* @Description TODO(这里用一句话描述这个类的作用)
* @author zhangfucai
* @Date 2023年4月25日 上午12:49:14
* @version 1.0.0
*/
public class ObjectUtils {
private ObjectUtils() {
super();
}
public static byte[] toBytes(Object obj){
if(obj!=null) {
if(!(obj instanceof Serializable)) {
throw new RuntimeException(obj+"没有实现 Serializable");
}
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream oo=null;
try {
oo = new ObjectOutputStream(out);
oo.writeObject(obj);
oo.flush();
return out.toByteArray();
} catch (Exception e) {
throw new RuntimeException("对象序列化失败!",e);
}finally {
closeQuietly(oo,out);
}
}
return null;
}
public static void write(OutputStream out,Object obj) {
if(obj!=null) {
if(!(obj instanceof Serializable)) {
throw new RuntimeException(obj+"没有实现 Serializable");
}
ObjectOutputStream oo=null;
try {
oo = new ObjectOutputStream(out);
oo.writeObject(obj);
oo.flush();
} catch (Exception e) {
throw new RuntimeException("对象序列化失败!",e);
}finally {
closeQuietly(oo,out);
}
}
}
@SuppressWarnings("unchecked")
public static <T>T reader(InputStream in){
ObjectInputStream ois = null;
try {
ois = new ObjectInputStream(in);
return (T) ois.readObject();
} catch (Exception e) {
throw new RuntimeException("对象反序列化失败!",e);
}finally {
closeQuietly(ois,in);
}
}
public static <T>T reader(byte[] bytes){
return reader(new ByteArrayInputStream(bytes));
}
public static void closeQuietly(Closeable... closeables) {
if (closeables == null)
return;
for (Closeable closeable : closeables) {
if (closeable == null)
return;
try {
closeable.close();
} catch (IOException ignored) {
}
}
}
}

View File

@ -0,0 +1,119 @@
package com.xjrsoft.common;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Method;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.BeansException;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import com.alibaba.fastjson.JSON;
import com.pictc.listener.ListenerParameterContext;
import com.pictc.listener.MethodInfo;
import com.pictc.listener.PEventListener;
import com.pictc.utils.CollectionUtils;
import com.pictc.utils.ObjectUtils;
import com.pictc.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import springfox.documentation.annotations.ApiIgnore;
@Slf4j
@ApiIgnore
@RequestMapping("/reception")
public class ServiceListenerProvider implements ApplicationContextAware,ApplicationRunner{
private ApplicationContext context;
private List<MethodInfo> cmethods = CollectionUtils.newArrayList();
// SpEL解析器
private final ExpressionParser parser = new SpelExpressionParser();
private static byte[] FALSE;
private static byte[] TRUE;
static {
try {
FALSE = "false".getBytes("UTF-8");
TRUE = "true".getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.context = applicationContext;
}
@PostMapping("/listener")
public void reception(HttpServletRequest request,HttpServletResponse response) throws Exception {
boolean flag = false;
if(!cmethods.isEmpty()) {
ListenerParameterContext context = ObjectUtils.reader(request.getInputStream());
log.info("监听服务:{},调用{}->{},是否单例:{}",context.getSource(),JSON.toJSONString(context.getData()),context.isSingle());
StandardEvaluationContext elEContext = new StandardEvaluationContext();
elEContext.setVariable("source", context.getSource());
elEContext.setVariable("data", context.getData());
for (MethodInfo info : cmethods) {
PEventListener annotation = info.getAnnotation();
if(StringUtils.isNotEmpty(annotation.value())) {
Object result = parser.parseExpression(annotation.value()).getValue(elEContext);
System.out.println("EL表达式执行结果" + result);
if(result!=null && (boolean)result == false) {
continue;
}
}
flag = parseResult(info.invoke(new Object[] {context.getSource(),context.getData()}));
if(context.isSingle() && flag) {
break;
}
}
ServletOutputStream stream = response.getOutputStream();
stream.write(flag?TRUE:FALSE);
stream.flush();
}else {
log.info("没有注册监听器");
}
}
private boolean parseResult(Object val) {
if(val==null) return false;
if(Boolean.class.equals(val.getClass())) {
return Boolean.class.cast(val).booleanValue();
}else if(boolean.class.equals(val.getClass())) {
return (boolean)val;
}
return true;
}
// 项目启动后执行扫描
@Override
public void run(ApplicationArguments args) throws Exception {
String[] beanNames = context.getBeanDefinitionNames();
for (String beanName : beanNames) {
Object bean = context.getBean(beanName);
Method[] methods = bean.getClass().getDeclaredMethods();
for (Method method : methods) {
if (method.isAnnotationPresent(PEventListener.class)) {
cmethods.add(new MethodInfo(bean, method, method.getAnnotation(PEventListener.class)));
}
}
}
log.info("监听器客户端:{}",cmethods);
}
}

View File

@ -1,4 +1,5 @@
# src/main/resources/META-INF/spring.factories # src/main/resources/META-INF/spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.pictc.config.PcitcAutoConfig,\ com.pictc.config.PcitcAutoConfig,\
com.pictc.config.JdbcConfig com.pictc.config.JdbcConfig,\
com.pictc.config.PEventListenerConfig

View File

@ -1,4 +1,5 @@
# src/main/resources/META-INF/spring.factories # src/main/resources/META-INF/spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.pictc.config.PcitcAutoConfig,\ com.pictc.config.PcitcAutoConfig,\
com.pictc.config.JdbcConfig com.pictc.config.JdbcConfig,\
com.pictc.config.PEventListenerConfig

View File

@ -0,0 +1,62 @@
package com.xjrsoft.module.mdm.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
import com.pictc.annotations.datalog.LogField;
import com.pictc.annotations.datalog.LogTable;
/**
* @title: 测试流程1
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Data
@LogTable(source="testflow_001",name="测试流程1")
public class AddTestflow001Dto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 客户
*/
@ApiModelProperty("客户")
@LogField(name="客户",index=0)
private String customer;
/**
* 客户编码
*/
@ApiModelProperty("客户编码")
@LogField(name="客户编码",index=0)
private String customerCode;
/**
* 名称
*/
@ApiModelProperty("名称")
@LogField(name="名称",index=0)
private String name;
/**
* 备注
*/
@ApiModelProperty("备注")
@LogField(name="备注",index=0)
private String note;
/**
*
*/
@ApiModelProperty("")
@LogField(name="",index=0)
private Long tenantId;
}

View File

@ -0,0 +1,56 @@
package com.xjrsoft.module.mdm.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
import com.pictc.annotations.datalog.LogField;
import com.pictc.annotations.datalog.LogTable;
/**
* @title: 测试流程3
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Data
@LogTable(source="testflow_003",name="测试流程3")
public class AddTestflow003Dto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 名称
*/
@ApiModelProperty("名称")
@LogField(name="名称",index=0)
private String name;
/**
* 编码
*/
@ApiModelProperty("编码")
@LogField(name="编码",index=0)
private String code;
/**
* 备注
*/
@ApiModelProperty("备注")
@LogField(name="备注",index=0)
private String note;
/**
*
*/
@ApiModelProperty("")
@LogField(name="",index=0)
private Long tenantId;
}

View File

@ -0,0 +1,45 @@
package com.xjrsoft.module.mdm.dto;
import com.xjrsoft.common.page.PageInput;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
/**
* @title: 分页查询入参
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class Testflow001PageDto extends PageInput {
/**
* 客户
*/
@ApiModelProperty("客户")
private String customer;
/**
* 客户编码
*/
@ApiModelProperty("客户编码")
private String customerCode;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 备注
*/
@ApiModelProperty("备注")
private String note;
}

View File

@ -0,0 +1,40 @@
package com.xjrsoft.module.mdm.dto;
import com.xjrsoft.common.page.PageInput;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
/**
* @title: 分页查询入参
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Data
@EqualsAndHashCode(callSuper = false)
public class Testflow003PageDto extends PageInput {
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 编码
*/
@ApiModelProperty("编码")
private String code;
/**
* 备注
*/
@ApiModelProperty("备注")
private String note;
}

View File

@ -43,21 +43,21 @@ public class UpdateLngBPortDto implements Serializable {
/** /**
* 助记码(自动生成4位0001……) * 助记码(自动生成4位0001……)
*/ */
@LogField(name="助记码(自动生成4位0001……)",index=1) @LogField(name="助记码",index=1)
@ApiModelProperty("助记码(自动生成4位0001……)") @ApiModelProperty("助记码(自动生成4位0001……)")
private String code; private String code;
/** /**
* 名称(名称和简称都不能重复) * 名称(名称和简称都不能重复)
*/ */
@LogField(name="名称(名称和简称都不能重复)",index=2) @LogField(name="名称",index=2)
@ApiModelProperty("名称(名称和简称都不能重复)") @ApiModelProperty("名称(名称和简称都不能重复)")
private String fullName; private String fullName;
/** /**
* 简称(名称和简称都不能重复) * 简称(名称和简称都不能重复)
*/ */
@LogField(name="简称(名称和简称都不能重复)",index=3) @LogField(name="简称",index=3)
@ApiModelProperty("简称(名称和简称都不能重复)") @ApiModelProperty("简称(名称和简称都不能重复)")
private String shortName; private String shortName;
@ -127,7 +127,7 @@ public class UpdateLngBPortDto implements Serializable {
/** /**
* 有效标志(Y-有效N-无效) * 有效标志(Y-有效N-无效)
*/ */
@LogField(name="有效标志(Y-有效N-无效)",index=13) @LogField(name="有效标志",index=13)
@ApiModelProperty("有效标志(Y-有效N-无效)") @ApiModelProperty("有效标志(Y-有效N-无效)")
private String valid; private String valid;
@ -141,7 +141,7 @@ public class UpdateLngBPortDto implements Serializable {
/** /**
* 租户id * 租户id
*/ */
@LogField(name="租户id",index=15) @LogField(name="租户",index=15)
@ApiModelProperty("租户id") @ApiModelProperty("租户id")
private Long tenantId; private Long tenantId;

View File

@ -0,0 +1,79 @@
package com.xjrsoft.module.mdm.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.List;
import com.pictc.annotations.datalog.LogTable;
import com.pictc.annotations.datalog.LogField;
import com.pictc.annotations.datalog.LogJoin;
import com.pictc.annotations.datalog.LogJoinColumn;
import com.pictc.annotations.datalog.JoinCaseType;
import com.pictc.annotations.datalog.JoinType;
import com.pictc.annotations.datalog.ValueDirectionType;
/**
* @title: 测试流程1
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Data
@LogTable(source="testflow_001",name="测试流程1")
public class UpdateTestflow001Dto implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@LogField(name="",index=0)
@ApiModelProperty("")
private Long id;
/**
* 客户
*/
@LogField(name="客户",index=1)
@ApiModelProperty("客户")
private String customer;
/**
* 客户编码
*/
@LogField(name="客户编码",index=2)
@ApiModelProperty("客户编码")
private String customerCode;
/**
* 名称
*/
@LogField(name="名称",index=3)
@ApiModelProperty("名称")
private String name;
/**
* 备注
*/
@LogField(name="备注",index=4)
@ApiModelProperty("备注")
private String note;
/**
*
*/
@LogField(name="",index=5)
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -0,0 +1,72 @@
package com.xjrsoft.module.mdm.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.List;
import com.pictc.annotations.datalog.LogTable;
import com.pictc.annotations.datalog.LogField;
import com.pictc.annotations.datalog.LogJoin;
import com.pictc.annotations.datalog.LogJoinColumn;
import com.pictc.annotations.datalog.JoinCaseType;
import com.pictc.annotations.datalog.JoinType;
import com.pictc.annotations.datalog.ValueDirectionType;
/**
* @title: 测试流程3
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Data
@LogTable(source="testflow_003",name="测试流程3")
public class UpdateTestflow003Dto implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@LogField(name="",index=0)
@ApiModelProperty("")
private Long id;
/**
* 名称
*/
@LogField(name="名称",index=1)
@ApiModelProperty("名称")
private String name;
/**
* 编码
*/
@LogField(name="编码",index=2)
@ApiModelProperty("编码")
private String code;
/**
* 备注
*/
@LogField(name="备注",index=3)
@ApiModelProperty("备注")
private String note;
/**
*
*/
@LogField(name="",index=4)
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -0,0 +1,48 @@
package com.xjrsoft.module.mdm.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.xjrsoft.common.annotation.Trans;
import com.xjrsoft.common.enums.TransType;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
/**
* @title: 分页列表出参
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Data
public class Testflow001PageVo {
/**
*
*/
@ApiModelProperty("")
private String id;
/**
* 客户
*/
@ApiModelProperty("客户")
private String customer;
/**
* 客户编码
*/
@ApiModelProperty("客户编码")
private String customerCode;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 备注
*/
@ApiModelProperty("备注")
private String note;
}

View File

@ -0,0 +1,100 @@
package com.xjrsoft.module.mdm.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
/**
* @title: 表单出参
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Data
public class Testflow001Vo {
/**
*
*/
@ApiModelProperty("")
private Long id;
/**
* 客户
*/
@ApiModelProperty("客户")
private String customer;
/**
* 客户编码
*/
@ApiModelProperty("客户编码")
private String customerCode;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 备注
*/
@ApiModelProperty("备注")
private String note;
/**
*
*/
@ApiModelProperty("")
private Long createUserId;
/**
*
*/
@ApiModelProperty("")
private LocalDateTime createDate;
/**
*
*/
@ApiModelProperty("")
private Long modifyUserId;
/**
*
*/
@ApiModelProperty("")
private LocalDateTime modifyDate;
/**
*
*/
@ApiModelProperty("")
private Integer enabledMark;
/**
*
*/
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -0,0 +1,43 @@
package com.xjrsoft.module.mdm.vo;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import com.xjrsoft.common.annotation.Trans;
import com.xjrsoft.common.enums.TransType;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
/**
* @title: 分页列表出参
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Data
public class Testflow003PageVo {
/**
*
*/
@ApiModelProperty("")
private String id;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 编码
*/
@ApiModelProperty("编码")
private String code;
/**
* 备注
*/
@ApiModelProperty("备注")
private String note;
}

View File

@ -0,0 +1,93 @@
package com.xjrsoft.module.mdm.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
/**
* @title: 表单出参
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Data
public class Testflow003Vo {
/**
*
*/
@ApiModelProperty("")
private Long id;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 编码
*/
@ApiModelProperty("编码")
private String code;
/**
* 备注
*/
@ApiModelProperty("备注")
private String note;
/**
*
*/
@ApiModelProperty("")
private Long createUserId;
/**
*
*/
@ApiModelProperty("")
private LocalDateTime createDate;
/**
*
*/
@ApiModelProperty("")
private Long modifyUserId;
/**
*
*/
@ApiModelProperty("")
private LocalDateTime modifyDate;
/**
*
*/
@ApiModelProperty("")
private Integer enabledMark;
/**
*
*/
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -28,7 +28,7 @@ import com.pictc.annotations.datalog.ValueDirectionType;
* @Version 1.0 * @Version 1.0
*/ */
@Data @Data
@LogTable(source="lng_customer_attr_power",name="客户") @LogTable(source="lng_customer_attr_power",name="客户业务信息")
public class UpdateLngCustomerAttrPowerDto implements Serializable { public class UpdateLngCustomerAttrPowerDto implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@ -28,7 +28,7 @@ import com.pictc.annotations.datalog.ValueDirectionType;
* @Version 1.0 * @Version 1.0
*/ */
@Data @Data
@LogTable(source="lng_customer_bank",name="客户") @LogTable(source="lng_customer_bank",name="客户银行信息")
public class UpdateLngCustomerBankDto implements Serializable { public class UpdateLngCustomerBankDto implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@ -28,7 +28,7 @@ import com.pictc.annotations.datalog.ValueDirectionType;
* @Version 1.0 * @Version 1.0
*/ */
@Data @Data
@LogTable(source="lng_customer_contact",name="客户") @LogTable(source="lng_customer_contact",name="客户联系人信息")
public class UpdateLngCustomerContactDto implements Serializable { public class UpdateLngCustomerContactDto implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@ -28,7 +28,7 @@ import com.pictc.annotations.datalog.ValueDirectionType;
* @Version 1.0 * @Version 1.0
*/ */
@Data @Data
@LogTable(source="lng_customer_doc",name="客户") @LogTable(source="lng_customer_doc",name="客户证书信息")
public class UpdateLngCustomerDocDto implements Serializable { public class UpdateLngCustomerDocDto implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@ -252,7 +252,7 @@ public class UpdateLngCustomerDto implements Serializable {
* lngCustomerAttrPower * lngCustomerAttrPower
*/ */
@ApiModelProperty("lngCustomerAttrPower子表") @ApiModelProperty("lngCustomerAttrPower子表")
@LogJoin(name = "lngCustomerAttrPower子表", @LogJoin(name = "客户业务信息",
columns = { columns = {
@LogJoinColumn(field = "cuCode",relatedField = "cuCode", valueDirection = ValueDirectionType.RIGHT) @LogJoinColumn(field = "cuCode",relatedField = "cuCode", valueDirection = ValueDirectionType.RIGHT)
}, },
@ -262,7 +262,7 @@ public class UpdateLngCustomerDto implements Serializable {
* lngCustomerBank * lngCustomerBank
*/ */
@ApiModelProperty("lngCustomerBank子表") @ApiModelProperty("lngCustomerBank子表")
@LogJoin(name = "lngCustomerBank子表", @LogJoin(name = "客户银行信息",
columns = { columns = {
@LogJoinColumn(field = "cuCode",relatedField = "cuCode", valueDirection = ValueDirectionType.RIGHT) @LogJoinColumn(field = "cuCode",relatedField = "cuCode", valueDirection = ValueDirectionType.RIGHT)
}, },
@ -272,7 +272,7 @@ public class UpdateLngCustomerDto implements Serializable {
* lngCustomerDoc * lngCustomerDoc
*/ */
@ApiModelProperty("lngCustomerDoc子表") @ApiModelProperty("lngCustomerDoc子表")
@LogJoin(name = "lngCustomerDoc子表", @LogJoin(name = "客户证书信息",
columns = { columns = {
@LogJoinColumn(field = "cuCode",relatedField = "cuCode", valueDirection = ValueDirectionType.RIGHT) @LogJoinColumn(field = "cuCode",relatedField = "cuCode", valueDirection = ValueDirectionType.RIGHT)
}, },
@ -282,8 +282,7 @@ public class UpdateLngCustomerDto implements Serializable {
* lngCustomerContact * lngCustomerContact
*/ */
@ApiModelProperty("lngCustomerContact子表") @ApiModelProperty("lngCustomerContact子表")
@LogJoin(name = "lngCustomerContact子表", @LogJoin(name = "客户联系人信息",columns = {
columns = {
@LogJoinColumn(field = "cuCode",relatedField = "cuCode", valueDirection = ValueDirectionType.RIGHT) @LogJoinColumn(field = "cuCode",relatedField = "cuCode", valueDirection = ValueDirectionType.RIGHT)
}, },
caseType = JoinCaseType.FULL, target = UpdateLngCustomerContactDto.class, type = JoinType.MANY) caseType = JoinCaseType.FULL, target = UpdateLngCustomerContactDto.class, type = JoinType.MANY)

View File

@ -0,0 +1,119 @@
package com.xjrsoft.module.mdm.controller;
import java.util.List;
import javax.validation.Valid;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xjrsoft.common.model.result.R;
import com.xjrsoft.common.page.ConventPage;
import com.xjrsoft.common.page.PageOutput;
import com.xjrsoft.common.utils.VoToColumnUtil;
import com.xjrsoft.module.datalog.service.DatalogService;
import com.xjrsoft.module.datalog.vo.DataChangeLogVo;
import com.xjrsoft.module.mdm.dto.Testflow001PageDto;
import com.xjrsoft.module.mdm.dto.UpdateTestflow001Dto;
import com.xjrsoft.module.mdm.entity.Testflow001;
import com.xjrsoft.module.mdm.service.ITestflow001Service;
import com.xjrsoft.module.mdm.vo.Testflow001PageVo;
import com.xjrsoft.module.mdm.vo.Testflow001Vo;
import com.xjrsoft.module.system.client.ICodeRuleClient;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
/**
* @title: 测试流程
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@RestController
@RequestMapping("/mdm" + "/testflow001")
@Api(value = "/mdm" + "/testflow001",tags = "测试流程代码")
@AllArgsConstructor
public class Testflow001Controller {
private final ITestflow001Service testflow001Service;
private final ICodeRuleClient codeRuleClient;
private final DatalogService dataService;
@GetMapping(value = "/page")
@ApiOperation(value="Testflow001列表(分页)")
@SaCheckPermission("testflow001:list")
public R page(@Valid Testflow001PageDto dto){
LambdaQueryWrapper<Testflow001> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.like(StrUtil.isNotBlank(dto.getCustomer()),Testflow001::getCustomer,dto.getCustomer())
.like(StrUtil.isNotBlank(dto.getCustomerCode()),Testflow001::getCustomerCode,dto.getCustomerCode())
.like(StrUtil.isNotBlank(dto.getName()),Testflow001::getName,dto.getName())
.like(StrUtil.isNotBlank(dto.getNote()),Testflow001::getNote,dto.getNote())
.orderByDesc(Testflow001::getId)
.select(Testflow001.class,x -> VoToColumnUtil.fieldsToColumns(Testflow001PageVo.class).contains(x.getProperty()));
IPage<Testflow001> page = testflow001Service.page(ConventPage.getPage(dto), queryWrapper);
PageOutput<Testflow001PageVo> pageOutput = ConventPage.getPageOutput(page, Testflow001PageVo.class);
return R.ok(pageOutput);
}
@GetMapping(value = "/info")
@ApiOperation(value="根据id查询Testflow001信息")
@SaCheckPermission("testflow001:detail")
public R info(@RequestParam Long id){
Testflow001 testflow001 = testflow001Service.getById(id);
if (testflow001 == null) {
return R.error("找不到此数据!");
}
return R.ok(BeanUtil.toBean(testflow001, Testflow001Vo.class));
}
@GetMapping(value = "/datalog")
@ApiOperation(value="根据id查询Testflow001数据详细日志")
@SaCheckPermission("testflow001:datalog")
public R datalog(@RequestParam Long id){
List<DataChangeLogVo> logs = dataService.findLogsByEntityId(UpdateTestflow001Dto.class,id);
return R.ok(logs);
}
@PostMapping
@ApiOperation(value = "新增Testflow001")
@SaCheckPermission("testflow001:add")
public R add(@Valid @RequestBody UpdateTestflow001Dto dto){
codeRuleClient.useEncode("TestCode");
UpdateTestflow001Dto res = dataService.insert(dto);
return R.ok(res.getId());
}
@PutMapping
@ApiOperation(value = "修改Testflow001")
@SaCheckPermission("testflow001:edit")
public R update(@Valid @RequestBody UpdateTestflow001Dto dto){
return R.ok(dataService.updateById(dto));
}
@DeleteMapping
@ApiOperation(value = "删除")
@SaCheckPermission("testflow001:delete")
public R delete(@Valid @RequestBody List<Long> ids){
return R.ok(dataService.deleteByIds(UpdateTestflow001Dto.class, ids));
}
}

View File

@ -0,0 +1,118 @@
package com.xjrsoft.module.mdm.controller;
import java.util.List;
import javax.validation.Valid;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xjrsoft.common.model.result.R;
import com.xjrsoft.common.page.ConventPage;
import com.xjrsoft.common.page.PageOutput;
import com.xjrsoft.common.utils.VoToColumnUtil;
import com.xjrsoft.module.datalog.service.DatalogService;
import com.xjrsoft.module.datalog.vo.DataChangeLogVo;
import com.xjrsoft.module.mdm.dto.Testflow003PageDto;
import com.xjrsoft.module.mdm.dto.UpdateTestflow003Dto;
import com.xjrsoft.module.mdm.entity.Testflow003;
import com.xjrsoft.module.mdm.service.ITestflow003Service;
import com.xjrsoft.module.mdm.vo.Testflow003PageVo;
import com.xjrsoft.module.mdm.vo.Testflow003Vo;
import com.xjrsoft.module.system.client.ICodeRuleClient;
import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
/**
* @title: 测试流程3
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@RestController
@RequestMapping("/mdm" + "/testflow003")
@Api(value = "/mdm" + "/testflow003",tags = "测试流程3代码")
@AllArgsConstructor
public class Testflow003Controller {
private final ITestflow003Service testflow003Service;
private final ICodeRuleClient codeRuleService;
private final DatalogService dataService;
@GetMapping(value = "/page")
@ApiOperation(value="Testflow003列表(分页)")
@SaCheckPermission("testflow003:list")
public R page(@Valid Testflow003PageDto dto){
LambdaQueryWrapper<Testflow003> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper
.like(StrUtil.isNotBlank(dto.getName()),Testflow003::getName,dto.getName())
.like(StrUtil.isNotBlank(dto.getCode()),Testflow003::getCode,dto.getCode())
.like(StrUtil.isNotBlank(dto.getNote()),Testflow003::getNote,dto.getNote())
.orderByDesc(Testflow003::getId)
.select(Testflow003.class,x -> VoToColumnUtil.fieldsToColumns(Testflow003PageVo.class).contains(x.getProperty()));
IPage<Testflow003> page = testflow003Service.page(ConventPage.getPage(dto), queryWrapper);
PageOutput<Testflow003PageVo> pageOutput = ConventPage.getPageOutput(page, Testflow003PageVo.class);
return R.ok(pageOutput);
}
@GetMapping(value = "/info")
@ApiOperation(value="根据id查询Testflow003信息")
@SaCheckPermission("testflow003:detail")
public R info(@RequestParam Long id){
Testflow003 testflow003 = testflow003Service.getById(id);
if (testflow003 == null) {
return R.error("找不到此数据!");
}
return R.ok(BeanUtil.toBean(testflow003, Testflow003Vo.class));
}
@GetMapping(value = "/datalog")
@ApiOperation(value="根据id查询Testflow003数据详细日志")
@SaCheckPermission("testflow003:datalog")
public R datalog(@RequestParam Long id){
List<DataChangeLogVo> logs = dataService.findLogsByEntityId(UpdateTestflow003Dto.class,id);
return R.ok(logs);
}
@PostMapping
@ApiOperation(value = "新增Testflow003")
@SaCheckPermission("testflow003:add")
public R add(@Valid @RequestBody UpdateTestflow003Dto dto){
codeRuleService.useEncode("TestCode");
UpdateTestflow003Dto res = dataService.insert(dto,null);
return R.ok(res.getId());
}
@PutMapping
@ApiOperation(value = "修改Testflow003")
@SaCheckPermission("testflow003:edit")
public R update(@Valid @RequestBody UpdateTestflow003Dto dto){
return R.ok(dataService.updateById(dto));
}
@DeleteMapping
@ApiOperation(value = "删除")
@SaCheckPermission("testflow003:delete")
public R delete(@Valid @RequestBody List<Long> ids){
return R.ok(dataService.deleteByIds(UpdateTestflow003Dto.class, ids));
}
}

View File

@ -0,0 +1,115 @@
package com.xjrsoft.module.mdm.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.Version;
import com.github.yulichang.annotation.EntityMapping;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
/**
* @title: 测试流程
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@Data
@TableName("testflow_001")
@ApiModel(value = "测试流程对象", description = "测试流程")
public class Testflow001 implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@ApiModelProperty("")
@TableId
private Long id;
/**
* 客户
*/
@ApiModelProperty("客户")
private String customer;
/**
* 客户编码
*/
@ApiModelProperty("客户编码")
private String customerCode;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 备注
*/
@ApiModelProperty("备注")
private String note;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private Long createUserId;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createDate;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.UPDATE)
private Long modifyUserId;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime modifyDate;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
@TableLogic
private Integer deleteMark;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private Integer enabledMark;
/**
*
*/
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -0,0 +1,109 @@
package com.xjrsoft.module.mdm.entity;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.Version;
import com.github.yulichang.annotation.EntityMapping;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.io.Serializable;
import java.time.LocalTime;
import java.time.LocalDateTime;
import java.math.BigDecimal;
import java.util.List;
/**
* @title: 测试流程3
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Data
@TableName("testflow_003")
@ApiModel(value = "测试流程3对象", description = "测试流程3")
public class Testflow003 implements Serializable {
private static final long serialVersionUID = 1L;
/**
*
*/
@ApiModelProperty("")
@TableId
private Long id;
/**
* 名称
*/
@ApiModelProperty("名称")
private String name;
/**
* 编码
*/
@ApiModelProperty("编码")
private String code;
/**
* 备注
*/
@ApiModelProperty("备注")
private String note;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private Long createUserId;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createDate;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.UPDATE)
private Long modifyUserId;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime modifyDate;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
@TableLogic
private Integer deleteMark;
/**
*
*/
@ApiModelProperty("")
@TableField(fill = FieldFill.INSERT)
private Integer enabledMark;
/**
*
*/
@ApiModelProperty("")
private Long tenantId;
}

View File

@ -0,0 +1,17 @@
package com.xjrsoft.module.mdm.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.xjrsoft.module.mdm.entity.Testflow001;
import org.apache.ibatis.annotations.Mapper;
/**
* @title: mapper
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@Mapper
public interface Testflow001Mapper extends BaseMapper<Testflow001> {
}

View File

@ -0,0 +1,17 @@
package com.xjrsoft.module.mdm.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.github.yulichang.base.MPJBaseMapper;
import com.xjrsoft.module.mdm.entity.Testflow003;
import org.apache.ibatis.annotations.Mapper;
/**
* @title: mapper
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Mapper
public interface Testflow003Mapper extends BaseMapper<Testflow003> {
}

View File

@ -0,0 +1,19 @@
package com.xjrsoft.module.mdm.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import com.github.yulichang.extension.mapping.base.MPJDeepService;
import com.github.yulichang.extension.mapping.base.MPJRelationService;
import com.xjrsoft.module.mdm.entity.Testflow001;
import lombok.Data;
import java.util.List;
/**
* @title: service
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
public interface ITestflow001Service extends IService<Testflow001> {
}

View File

@ -0,0 +1,19 @@
package com.xjrsoft.module.mdm.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.yulichang.base.MPJBaseService;
import com.github.yulichang.extension.mapping.base.MPJDeepService;
import com.github.yulichang.extension.mapping.base.MPJRelationService;
import com.xjrsoft.module.mdm.entity.Testflow003;
import lombok.Data;
import java.util.List;
/**
* @title: service
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
public interface ITestflow003Service extends IService<Testflow003> {
}

View File

@ -0,0 +1,25 @@
package com.xjrsoft.module.mdm.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.xjrsoft.module.mdm.entity.Testflow001;
import com.xjrsoft.module.mdm.mapper.Testflow001Mapper;
import com.xjrsoft.module.mdm.service.ITestflow001Service;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
/**
* @title: service
* @Author 管理员
* @Date: 2025-11-25
* @Version 1.0
*/
@Service
@AllArgsConstructor
public class Testflow001ServiceImpl extends ServiceImpl<Testflow001Mapper, Testflow001> implements ITestflow001Service {
}

View File

@ -0,0 +1,25 @@
package com.xjrsoft.module.mdm.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.yulichang.base.MPJBaseServiceImpl;
import com.xjrsoft.module.mdm.entity.Testflow003;
import com.xjrsoft.module.mdm.mapper.Testflow003Mapper;
import com.xjrsoft.module.mdm.service.ITestflow003Service;
import lombok.AllArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
/**
* @title: service
* @Author 管理员
* @Date: 2025-11-26
* @Version 1.0
*/
@Service
@AllArgsConstructor
public class Testflow003ServiceImpl extends ServiceImpl<Testflow003Mapper, Testflow003> implements ITestflow003Service {
}

View File

@ -125,9 +125,9 @@ public class CustomerController {
@Override @Override
public UpdateLngCustomerDto after(DataOperationContent<UpdateLngCustomerDto> content) { public UpdateLngCustomerDto after(DataOperationContent<UpdateLngCustomerDto> content) {
String msg = CommonCallUtils.saveAfter(content.getTableName(),content.getIdValue()); String msg = CommonCallUtils.saveAfter(content.getTableName(),content.getIdValue());
if (StringUtils.isNotBlank(msg)) { if (StringUtils.isNotBlank(msg)) {
throw new BusinessException(BusinessCode.ofArgs(ExceptionCommonCode.DB_FUNCTION_EXEC_ERROR, msg)); throw new BusinessException(BusinessCode.ofArgs(ExceptionCommonCode.DB_FUNCTION_EXEC_ERROR, msg));
} }
codeRuleClient.useEncode(CUSTOMER_CODE); codeRuleClient.useEncode(CUSTOMER_CODE);
return content.getObj(); return content.getObj();
} }

View File

@ -22,7 +22,7 @@ import lombok.Data;
*/ */
@Data @Data
@TableName("lng_customer_attr_power") @TableName("lng_customer_attr_power")
@ApiModel(value = "客户对象", description = "客户") @ApiModel(value = "客户业务信息", description = "客户")
public class LngCustomerAttrPower implements Serializable { public class LngCustomerAttrPower implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@ -25,7 +25,7 @@ import java.util.List;
*/ */
@Data @Data
@TableName("lng_customer_bank") @TableName("lng_customer_bank")
@ApiModel(value = "客户对象", description = "客户") @ApiModel(value = "客户银行信息", description = "客户")
public class LngCustomerBank implements Serializable { public class LngCustomerBank implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@ -25,7 +25,7 @@ import java.util.List;
*/ */
@Data @Data
@TableName("lng_customer_contact") @TableName("lng_customer_contact")
@ApiModel(value = "客户对象", description = "客户") @ApiModel(value = "客户-联系人", description = "客户")
public class LngCustomerContact implements Serializable { public class LngCustomerContact implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;

View File

@ -29,7 +29,7 @@ import lombok.Data;
*/ */
@Data @Data
@TableName("lng_customer_doc") @TableName("lng_customer_doc")
@ApiModel(value = "客户对象", description = "客户") @ApiModel(value = "客户-资质证书", description = "客户")
public class LngCustomerDoc implements Serializable { public class LngCustomerDoc implements Serializable {
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;