diff --git a/.gitignore b/.gitignore index 3df9a13..60a30de 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ # Compiled class file *.class +**/.flattened-pom.xml + # Log file *.log @@ -68,7 +70,13 @@ local.properties .texlipse # STS (Spring Tool Suite) +.apt_generated +.classpath +.factorypath +.project +.settings .springBeans +.sts4-cache # Code Recommenders .recommenders/ @@ -86,3 +94,24 @@ local.properties # Typically, this file would be tracked if it contains build/dependency configurations: #.project +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr +*.log + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + + + diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/pom.xml b/itc-pcitc-demo/itc-pcitc-demo-api/pom.xml new file mode 100644 index 0000000..8f8713f --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/pom.xml @@ -0,0 +1,82 @@ + + + 4.0.0 + + + com.geg + itc-pcitc-demo + ${revision} + + + itc-pcitc-demo-api + itc-pcitc-demo-api + itc-pcitc-demo-api + + + ${java.version} + ${java.version} + + + + + com.geg + itc-pcitc-dependencies-api + ${revision} + + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + + + + + + src/main/java + + **/*.xml + + + + src/main/java + + **/*.yml + **/*.properties + **/*.xml + + false + + + src/main/resources + + **/*.yml + **/*.properties + **/*.xml + **/*.vm + **/*.ftl + **/*.jpg + **/*.png + **/*.xls + **/*.xlsx + + false + + + + \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/client/IDemoApplianceClient.java b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/client/IDemoApplianceClient.java new file mode 100644 index 0000000..e6df9c1 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/client/IDemoApplianceClient.java @@ -0,0 +1,22 @@ +package com.xjrsoft.module.prdManage.client; + +import com.xjrsoft.common.constant.GlobalConstant; +import com.xjrsoft.module.prdManage.dto.DemoAppliancePageDto; +import com.xjrsoft.module.prdManage.vo.DemoApplianceVo; +import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; + +import java.util.List; + +/** + * @author: yjw + * @since: 2025/3/4 + */ +@FeignClient(value = "demo-service", + path = GlobalConstant.CLIENT_API_PRE + "prdManage/demoAppliance") +public interface IDemoApplianceClient { + + @PostMapping("/getListByQuery") + List getListByQuery(@RequestBody DemoAppliancePageDto dto); +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/dto/AddDemoApplianceDto.java b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/dto/AddDemoApplianceDto.java new file mode 100644 index 0000000..a164172 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/dto/AddDemoApplianceDto.java @@ -0,0 +1,67 @@ +package com.xjrsoft.module.prdManage.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** +* @title: 示例-家电管理 +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@Data +public class AddDemoApplianceDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String serialNumber; + /** + * + */ + @ApiModelProperty("") + private String category; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime purchaseDate; + /** + * + */ + @ApiModelProperty("") + private Integer warrantyPeriod; + /** + * + */ + @ApiModelProperty("") + private Integer powerRating; + /** + * + */ + @ApiModelProperty("") + private String brand; + /** + * + */ + @ApiModelProperty("") + private Double sellingPrice; + /** + * + */ + @ApiModelProperty("") + private String status; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/dto/DemoAppliancePageDto.java b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/dto/DemoAppliancePageDto.java new file mode 100644 index 0000000..5a65f25 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/dto/DemoAppliancePageDto.java @@ -0,0 +1,35 @@ +package com.xjrsoft.module.prdManage.dto; + +import com.xjrsoft.common.page.PageInput; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** +* @title: 分页查询入参 +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@Data +@EqualsAndHashCode(callSuper = false) +public class DemoAppliancePageDto extends PageInput { + + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String serialNumber; + /** + * + */ + @ApiModelProperty("") + private String category; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/dto/UpdateDemoApplianceDto.java b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/dto/UpdateDemoApplianceDto.java new file mode 100644 index 0000000..99ee8f3 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/dto/UpdateDemoApplianceDto.java @@ -0,0 +1,72 @@ +package com.xjrsoft.module.prdManage.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** +* @title: 示例-家电管理 +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@Data +public class UpdateDemoApplianceDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + private Integer id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String serialNumber; + /** + * + */ + @ApiModelProperty("") + private String category; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime purchaseDate; + /** + * + */ + @ApiModelProperty("") + private Integer warrantyPeriod; + /** + * + */ + @ApiModelProperty("") + private Integer powerRating; + /** + * + */ + @ApiModelProperty("") + private String brand; + /** + * + */ + @ApiModelProperty("") + private Double sellingPrice; + /** + * + */ + @ApiModelProperty("") + private String status; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/vo/DemoAppliancePageVo.java b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/vo/DemoAppliancePageVo.java new file mode 100644 index 0000000..64f0b81 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/vo/DemoAppliancePageVo.java @@ -0,0 +1,68 @@ +package com.xjrsoft.module.prdManage.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** +* @title: 分页列表出参 +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@Data +public class DemoAppliancePageVo { + + /** + * + */ + @ApiModelProperty("") + private String id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String serialNumber; + /** + * + */ + @ApiModelProperty("") + private String category; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime purchaseDate; + /** + * + */ + @ApiModelProperty("") + private Integer warrantyPeriod; + /** + * + */ + @ApiModelProperty("") + private Integer powerRating; + /** + * + */ + @ApiModelProperty("") + private String brand; + /** + * + */ + @ApiModelProperty("") + private Double sellingPrice; + /** + * + */ + @ApiModelProperty("") + private String status; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/vo/DemoApplianceVo.java b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/vo/DemoApplianceVo.java new file mode 100644 index 0000000..7afe8c0 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/prdManage/vo/DemoApplianceVo.java @@ -0,0 +1,70 @@ +package com.xjrsoft.module.prdManage.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** +* @title: 表单出参 +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@Data +public class DemoApplianceVo { + + /** + * + */ + @ApiModelProperty("") + private Integer id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String serialNumber; + /** + * + */ + @ApiModelProperty("") + private String category; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime purchaseDate; + /** + * + */ + @ApiModelProperty("") + private Integer warrantyPeriod; + /** + * + */ + @ApiModelProperty("") + private Integer powerRating; + /** + * + */ + @ApiModelProperty("") + private String brand; + /** + * + */ + @ApiModelProperty("") + private Double sellingPrice; + /** + * + */ + @ApiModelProperty("") + private String status; + + + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/dto/AddDemoCustomerDto.java b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/dto/AddDemoCustomerDto.java new file mode 100644 index 0000000..54b0ee7 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/dto/AddDemoCustomerDto.java @@ -0,0 +1,57 @@ +package com.xjrsoft.module.relationManage.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** +* @title: demo_客户管理 +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Data +public class AddDemoCustomerDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String gender; + /** + * + */ + @ApiModelProperty("") + private String phone; + /** + * + */ + @ApiModelProperty("") + private String email; + /** + * + */ + @ApiModelProperty("") + private String address; + /** + * + */ + @ApiModelProperty("") + private String company; + /** + * + */ + @ApiModelProperty("") + private String position; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/dto/DemoCustomerPageDto.java b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/dto/DemoCustomerPageDto.java new file mode 100644 index 0000000..c9c63cd --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/dto/DemoCustomerPageDto.java @@ -0,0 +1,40 @@ +package com.xjrsoft.module.relationManage.dto; + +import com.xjrsoft.common.page.PageInput; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** +* @title: 分页查询入参 +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Data +@EqualsAndHashCode(callSuper = false) +public class DemoCustomerPageDto extends PageInput { + + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String gender; + /** + * + */ + @ApiModelProperty("") + private String phone; + /** + * + */ + @ApiModelProperty("") + private String email; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/dto/UpdateDemoCustomerDto.java b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/dto/UpdateDemoCustomerDto.java new file mode 100644 index 0000000..db65601 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/dto/UpdateDemoCustomerDto.java @@ -0,0 +1,61 @@ +package com.xjrsoft.module.relationManage.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** +* @title: demo_客户管理 +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Data +public class UpdateDemoCustomerDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + private Long id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String gender; + /** + * + */ + @ApiModelProperty("") + private String phone; + /** + * + */ + @ApiModelProperty("") + private String email; + /** + * + */ + @ApiModelProperty("") + private String address; + /** + * + */ + @ApiModelProperty("") + private String company; + /** + * + */ + @ApiModelProperty("") + private String position; +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/vo/DemoCustomerPageVo.java b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/vo/DemoCustomerPageVo.java new file mode 100644 index 0000000..7f3e1a1 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/vo/DemoCustomerPageVo.java @@ -0,0 +1,56 @@ +package com.xjrsoft.module.relationManage.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** +* @title: 分页列表出参 +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Data +public class DemoCustomerPageVo { + + /** + * + */ + @ApiModelProperty("") + private String id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String gender; + /** + * + */ + @ApiModelProperty("") + private String phone; + /** + * + */ + @ApiModelProperty("") + private String email; + /** + * + */ + @ApiModelProperty("") + private String address; + /** + * + */ + @ApiModelProperty("") + private String company; + /** + * + */ + @ApiModelProperty("") + private String position; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/vo/DemoCustomerVo.java b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/vo/DemoCustomerVo.java new file mode 100644 index 0000000..2aa1ce7 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/src/main/java/com/xjrsoft/module/relationManage/vo/DemoCustomerVo.java @@ -0,0 +1,74 @@ +package com.xjrsoft.module.relationManage.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** +* @title: 表单出参 +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Data +public class DemoCustomerVo { + + /** + * + */ + @ApiModelProperty("") + private Long id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String gender; + /** + * + */ + @ApiModelProperty("") + private String phone; + /** + * + */ + @ApiModelProperty("") + private String email; + /** + * + */ + @ApiModelProperty("") + private String address; + /** + * + */ + @ApiModelProperty("") + private String company; + /** + * + */ + @ApiModelProperty("") + private String position; + + @ApiModelProperty("") + private LocalDateTime createDate; + + /** + * + */ + @ApiModelProperty("") + private Long createUserId; + + /** + * + */ + @ApiModelProperty("") + private Long deptId; + + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/target/maven-archiver/pom.properties b/itc-pcitc-demo/itc-pcitc-demo-api/target/maven-archiver/pom.properties new file mode 100644 index 0000000..a62939d --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Wed Sep 24 16:46:40 CST 2025 +version=2.0.4 +groupId=com.geg +artifactId=itc-pcitc-demo-api diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/itc-pcitc-demo/itc-pcitc-demo-api/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/itc-pcitc-demo/itc-pcitc-demo-api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/itc-pcitc-demo/itc-pcitc-demo-api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..d74fd7f --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,11 @@ +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api\src\main\java\com\xjrsoft\module\prdManage\dto\AddDemoApplianceDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api\src\main\java\com\xjrsoft\module\prdManage\vo\DemoApplianceVo.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api\src\main\java\com\xjrsoft\module\prdManage\client\IDemoApplianceClient.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api\src\main\java\com\xjrsoft\module\relationManage\vo\DemoCustomerVo.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api\src\main\java\com\xjrsoft\module\prdManage\dto\DemoAppliancePageDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api\src\main\java\com\xjrsoft\module\relationManage\dto\DemoCustomerPageDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api\src\main\java\com\xjrsoft\module\prdManage\vo\DemoAppliancePageVo.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api\src\main\java\com\xjrsoft\module\relationManage\dto\AddDemoCustomerDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api\src\main\java\com\xjrsoft\module\relationManage\dto\UpdateDemoCustomerDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api\src\main\java\com\xjrsoft\module\relationManage\vo\DemoCustomerPageVo.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-api\src\main\java\com\xjrsoft\module\prdManage\dto\UpdateDemoApplianceDto.java diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/pom.xml b/itc-pcitc-demo/itc-pcitc-demo-service/pom.xml new file mode 100644 index 0000000..bb3976d --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/pom.xml @@ -0,0 +1,118 @@ + + + 4.0.0 + + + com.geg + itc-pcitc-demo + ${revision} + + + itc-pcitc-demo-service + itc-pcitc-demo-service + itc-pcitc-demo-service + + + ${java.version} + ${java.version} + pcitc/itc-pcitc-demo + + + + + + com.geg + itc-pcitc-dependencies-service + ${revision} + + + + app + + + org.springframework.boot + spring-boot-maven-plugin + 2.7.6 + + + + repackage + + + + false + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + + + + + com.spotify + docker-maven-plugin + 1.0.0 + + ${docker-registry} + 600000 + ${docker-image-name}:${maven.build.timestamp} + java + ${dockerDirectory} + ${docker-image-name}:${maven.build.timestamp} + false + + ${docker-jar-name} + linux/arm64 + + linux/arm64 + + + / + ${project.build.directory} + ${docker-jar-name} + + + + + + + + src/main/java + + **/*.xml + + + + src/main/java + + **/*.yml + **/*.properties + **/*.xml + + false + + + src/main/resources + + **/* + + false + + + + \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/Dockerfile b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/Dockerfile new file mode 100644 index 0000000..1cc66f3 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/Dockerfile @@ -0,0 +1,39 @@ +#FROM --platform=linux/arm64 docker.xuanyuan.run/library/openjdk:8-jre +FROM harbor.kubesphere.com/public/jar8u112:v1 + + +RUN mkdir -p /root/logs/java/ \ + && mkdir -p /scm/logs/ \ + && mkdir -p /opt/app/ \ + && mkdir -p /uploadFile/ \ + && mkdir -p /var/log/app \ + && mkdir -p /opt/app/logs \ + && mkdir -p /opt/agent/config + +ENV TZ "Asia/Shanghai" + +ADD ./skywalking-agent.jar /opt/agent/skywalking-agent.jar +ADD ./agent.config /opt/agent/config/agent.config + +RUN echo "set fileencodings=utf-8,gbk,gb2312,gb18030,cp936,latin1 \n set fenc=utf-8 \n set tenc=utf-8 \n set enc=utf-8 \n" |tee ~/.vimrc + + +ARG JAR_FILE +ARG PRO_FILE +ARG SOURCE_NAME + +ADD ./startApp.sh /opt/app/ +RUN chmod u+x /opt/app/*.sh +ADD ./${SOURCE_NAME} /opt/app/app.jar +RUN test -f /opt/app/app.jar || { echo "Error: JAR file not found at ${SOURCE_NAME}"; exit 1; } + +#应用名称 +ENV APP_NAME=itc-pcitc-demo +#skywalking-oap-server地址 +ENV SKYWALKING_SERVER=172.20.0.12:11800 +ENV ENV_APP_FILE_PATH=/opt/app/app.jar +ENV ENV_APP_PRO_FILE=test + +EXPOSE 8090 5005 + +ENTRYPOINT ["/opt/app/startApp.sh"] \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/agent.config b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/agent.config new file mode 100644 index 0000000..ed3fb29 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/agent.config @@ -0,0 +1,4 @@ +# 应用名称(在 SkyWalking UI 中显示的服务名) +agent.service_name=your-springboot-app +# SkyWalking OAP 服务地址(默认本地) +collector.backend_service=localhost:11800 \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/docker-system.sh b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/docker-system.sh new file mode 100644 index 0000000..788312d --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/docker-system.sh @@ -0,0 +1,126 @@ +#!/bin/bash + +# 定义变量 +CONTAINER_NAME="itc-ms-system" +IMAGE_NAME="pcitc/itc-ms-system" +IMAGE_VERSION="2025-08-04-0940" +IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION" +PORT=8091 # 服务暴露端口 +CONTAINER_PORT=8091 # 服务暴露端口 +TZ="Asia/Shanghai" # 时区设置 +# 环境变量配置 +ENV_APP_PRO_FILE="test" +file="$CONTAINER_NAME-version.txt" + +# 检查文件是否存在(假设 $file 是目标文件变量,已在别处定义) +if [ ! -f "$file" ]; then + echo "文件 $file 不存在" + touch "$file" # 变量加引号,处理含空格的文件名 + echo "$IMAGE_FULL" >> "$file" + echo "记录版本【$IMAGE_FULL】到 $file" +else + # 检查参数数量(建议移到脚本开头统一检查) + if [ $# -eq 2 ]; then + IMAGE_FULL="$IMAGE_NAME:$2" + echo "$IMAGE_FULL" >> "$file" + echo "记录版本【$IMAGE_FULL】到 $file" + else + # 修正赋值语法:等号两侧无空格 + last_version=$(tail -n 1 "$file") + IMAGE_FULL="$last_version" + # 建议添加对 $IMAGE_FULL 的后续处理(如使用该变量) + fi +fi + +# 显示帮助信息 +show_help() { + echo "使用方法: $0 [操作类型]" + echo "操作类型:" + echo " deploy - 部署并启动服务容器" + echo " remove - 停止并删除容器及数据/日志目录" + echo " logs - 查看容器日志" + echo " help - 显示帮助信息" +} + + + +# 部署服务 +deploy_service() { + echo "部署镜像【$IMAGE_FULL】" + # 检查容器是否已存在,存在则停止并删除 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "停止并删除现有容器: $CONTAINER_NAME" + docker stop $CONTAINER_NAME >/dev/null + docker rm $CONTAINER_NAME >/dev/null + fi + + # 启动服务容器 + echo "启动服务容器..." + docker run -d --privileged --restart always \ + --name $CONTAINER_NAME \ + -p $PORT:$CONTAINER_PORT \ + -e ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE \ + $IMAGE_FULL + + # 检查启动状态 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then + echo "服务启动成功!" + echo "容器名称: $CONTAINER_NAME" + echo "访问地址: http://localhost:$PORT" + echo "环境变量: ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE" + else + echo "服务启动失败,日志如下:" + docker logs $CONTAINER_NAME + exit 1 + fi +} + +# 删除服务 +remove_service() { + # 检查容器是否存在 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "停止容器: $CONTAINER_NAME" + docker stop $CONTAINER_NAME >/dev/null + + echo "删除容器: $CONTAINER_NAME" + docker rm $CONTAINER_NAME >/dev/null + else + echo "容器 $CONTAINER_NAME 不存在" + fi +} + +# 查看日志 +show_logs() { + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "查看 $CONTAINER_NAME 容器日志 (按 Ctrl+C 退出)..." + docker logs -f $CONTAINER_NAME + else + echo "容器 $CONTAINER_NAME 不存在" + fi +} + +# 主逻辑 +if [ $# -lt 1 ]; then + show_help + exit 1 +fi + +case "$1" in + deploy) + deploy_service + ;; + remove) + remove_service + ;; + logs) + show_logs + ;; + help) + show_help + ;; + *) + echo "无效的操作类型: $1" + show_help + exit 1 + ;; +esac diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/docker-user.sh b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/docker-user.sh new file mode 100644 index 0000000..2cc8222 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/docker-user.sh @@ -0,0 +1,126 @@ +#!/bin/bash + +# 定义变量 +CONTAINER_NAME="itc-ms-user" +IMAGE_NAME="pcitc/itc-ms-user" +IMAGE_VERSION="2025-08-04-0954" +IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION" +PORT=8092 # 服务暴露端口 +CONTAINER_PORT=8092 # 服务暴露端口 +TZ="Asia/Shanghai" # 时区设置 +# 环境变量配置 +ENV_APP_PRO_FILE="test" +file="$CONTAINER_NAME-version.txt" + +# 检查文件是否存在(假设 $file 是目标文件变量,已在别处定义) +if [ ! -f "$file" ]; then + echo "文件 $file 不存在" + touch "$file" # 变量加引号,处理含空格的文件名 + echo "$IMAGE_FULL" >> "$file" + echo "记录版本【$IMAGE_FULL】到 $file" +else + # 检查参数数量(建议移到脚本开头统一检查) + if [ $# -eq 2 ]; then + IMAGE_FULL="$IMAGE_NAME:$2" + echo "$IMAGE_FULL" >> "$file" + echo "记录版本【$IMAGE_FULL】到 $file" + else + # 修正赋值语法:等号两侧无空格 + last_version=$(tail -n 1 "$file") + IMAGE_FULL="$last_version" + # 建议添加对 $IMAGE_FULL 的后续处理(如使用该变量) + fi +fi + +# 显示帮助信息 +show_help() { + echo "使用方法: $0 [操作类型]" + echo "操作类型:" + echo " deploy - 部署并启动服务容器" + echo " remove - 停止并删除容器及数据/日志目录" + echo " logs - 查看容器日志" + echo " help - 显示帮助信息" +} + + + +# 部署服务 +deploy_service() { + echo "部署镜像【$IMAGE_FULL】" + # 检查容器是否已存在,存在则停止并删除 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "停止并删除现有容器: $CONTAINER_NAME" + docker stop $CONTAINER_NAME >/dev/null + docker rm $CONTAINER_NAME >/dev/null + fi + + # 启动服务容器 + echo "启动服务容器..." + docker run -d --privileged --restart always \ + --name $CONTAINER_NAME \ + -p $PORT:$CONTAINER_PORT \ + -e ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE \ + $IMAGE_FULL + + # 检查启动状态 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then + echo "服务启动成功!" + echo "容器名称: $CONTAINER_NAME" + echo "访问地址: http://localhost:$PORT" + echo "环境变量: ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE" + else + echo "服务启动失败,日志如下:" + docker logs $CONTAINER_NAME + exit 1 + fi +} + +# 删除服务 +remove_service() { + # 检查容器是否存在 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "停止容器: $CONTAINER_NAME" + docker stop $CONTAINER_NAME >/dev/null + + echo "删除容器: $CONTAINER_NAME" + docker rm $CONTAINER_NAME >/dev/null + else + echo "容器 $CONTAINER_NAME 不存在" + fi +} + +# 查看日志 +show_logs() { + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "查看 $CONTAINER_NAME 容器日志 (按 Ctrl+C 退出)..." + docker logs -f $CONTAINER_NAME + else + echo "容器 $CONTAINER_NAME 不存在" + fi +} + +# 主逻辑 +if [ $# -lt 1 ]; then + show_help + exit 1 +fi + +case "$1" in + deploy) + deploy_service + ;; + remove) + remove_service + ;; + logs) + show_logs + ;; + help) + show_help + ;; + *) + echo "无效的操作类型: $1" + show_help + exit 1 + ;; +esac diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/startApp.sh b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/startApp.sh new file mode 100644 index 0000000..adef435 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/docker/startApp.sh @@ -0,0 +1,50 @@ +#!/bin/sh +#cp /etc/hosts /etc/hosts.temp + +# 初始化环境变量(设置默认值,避免空变量) +APP_NAME=${APP_NAME:-"default-springboot-app"} # 默认服务名 +SKYWALKING_SERVER=${SKYWALKING_SERVER:-"localhost:11800"} # 默认SkyWalking服务地址 +ENV_APP_PRO_FILE=${ENV_APP_PRO_FILE:-"test"} # 默认环境为test + +# 初始化Java启动参数(包含是否使用-server模式) +java_base="java -javaagent:/opt/agent/skywalking-agent.jar -Dskywalking.agent.service_name=$APP_NAME" +export java_base="$java_base -Dskywalking.collector.backend_service=$SKYWALKING_SERVER" + +java_start="$java_base -jar" + +# 根据环境变量区分开发/生产环境配置 +if [ "$ENV_APP_PRO_FILE" = "prod" ]; then + # 生产环境JVM参数 + export JAVA_OPTS="-Xms1024m -Xmx4096m -Xmn512m -Xss512k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m" + export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:G1HeapRegionSize=32m -XX:G1ReservePercent=20" + export JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=500 -XX:G1MixedGCCountTarget=10" + + export JAVA_OPTS="$JAVA_OPTS -verbose:gc -Xloggc:/var/log/app/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps" + export JAVA_OPTS="$JAVA_OPTS -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M" + + # 生产环境使用-server模式 + java_start="$java_base -jar -server" +else + # 开发环境JVM参数 + export JAVA_OPTS="-Xms512m -Xmx1024m -Xmn256m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m" + export JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+UseParNewGC" + export JAVA_OPTS="$JAVA_OPTS -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:CMSMaxAbortablePrecleanTime=5000" + export JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly" + export JAVA_OPTS="$JAVA_OPTS -verbose:gc -Xloggc:./logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps" + # 开发环境开启远程调试 + export JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005" +fi + +# 公共配置(编码、时区等) +export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8" +export JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" +export JAVA_OPTS="$JAVA_OPTS -Duser.language=zh -Duser.country=CN -Duser.timezone=Asia/Shanghai" + +# SpringBoot 环境配置 +export JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=$ENV_APP_PRO_FILE" + +# 输出启动参数 +echo "启动参数:$java_start $JAVA_OPTS $ENV_APP_FILE_PATH" + +# 执行启动命令(用双引号包裹每个变量) +exec $java_start $JAVA_OPTS $ENV_APP_FILE_PATH \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/ITCDemoApplication.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/ITCDemoApplication.java new file mode 100644 index 0000000..42109db --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/ITCDemoApplication.java @@ -0,0 +1,26 @@ +package com.xjrsoft; + +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.EnableAspectJAutoProxy; + +import com.pictc.utils.SpringTools; +import com.xjrsoft.common.annotation.UniqueNameGenerator; + +/** + * @author Zexy + */ +@SpringBootApplication +@EnableAspectJAutoProxy(exposeProxy = true) +@ComponentScan(nameGenerator = UniqueNameGenerator.class) +@EnableFeignClients +@EnableDiscoveryClient +public class ITCDemoApplication { + + public static void main(String[] args) { + SpringTools.logStarter(ITCDemoApplication.class, args); + } + +} \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/common/TransactionConfig.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/common/TransactionConfig.java new file mode 100644 index 0000000..40e08b4 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/common/TransactionConfig.java @@ -0,0 +1,25 @@ +package com.xjrsoft.common; + +import javax.sql.DataSource; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; +import org.springframework.jdbc.datasource.DataSourceTransactionManager; +import org.springframework.transaction.PlatformTransactionManager; + +//@Configuration +//public class TransactionConfig { +// +// @Primary // 指定为主要的事务管理器 +// @Bean +// public PlatformTransactionManager camundaTransactionManager(DataSource camundaDataSource) { +// return new DataSourceTransactionManager(camundaDataSource); +// } +// +// // 其他数据源的事务管理器 +// @Bean +// public PlatformTransactionManager businessTransactionManager(DataSource businessDataSource) { +// return new DataSourceTransactionManager(businessDataSource); +// } +//} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/common/schedule/DemoSysncTask.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/common/schedule/DemoSysncTask.java new file mode 100644 index 0000000..8ddb939 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/common/schedule/DemoSysncTask.java @@ -0,0 +1,30 @@ +package com.xjrsoft.common.schedule; + +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; +import org.springframework.stereotype.Component; + +import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; + +@RequiredArgsConstructor +@Component +@ConditionalOnProperty(name = {"schedule.enabled","schedule.sync-xx.enabled"}, havingValue = "true") +@Slf4j +@EnableScheduling +public class DemoSysncTask { + +// +// @Scheduled(cron = "${schedule.sync-xx.cron:0 0/60 * * * *}") //60分钟跑一次 +// public void sync(){ +// log.info("同步XX数据 => " + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"))); +// try{ +// //todo 任务具体实现 +// } catch (Exception e){ +// log.error("同步XX数据失败:" + e); +// } +// } +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/common/util/SpringContextUtil.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/common/util/SpringContextUtil.java new file mode 100644 index 0000000..744614b --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/common/util/SpringContextUtil.java @@ -0,0 +1,28 @@ +package com.xjrsoft.common.util; + +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +@Component +public class SpringContextUtil implements ApplicationContextAware { + + private static ApplicationContext context; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) { + SpringContextUtil.context = applicationContext; + } + + public static ApplicationContext getApplicationContext() { + return context; + } + + public static T getBean(Class beanClass) { + return context.getBean(beanClass); + } + + public static Object getBean(String beanName) { + return context.getBean(beanName); + } +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/controller/Testfrom3Controller.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/controller/Testfrom3Controller.java new file mode 100644 index 0000000..2721ffe --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/controller/Testfrom3Controller.java @@ -0,0 +1,132 @@ +package com.xjrsoft.module.dev.controller; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.xjrsoft.common.constant.GlobalConstant; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.xjrsoft.common.page.ConventPage; +import com.xjrsoft.common.page.PageOutput; +import com.xjrsoft.common.model.result.R; +import com.xjrsoft.common.utils.VoToColumnUtil; +import com.xjrsoft.module.dev.dto.AddTestfrom3Dto; +import com.xjrsoft.module.dev.dto.UpdateTestfrom3Dto; +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.alibaba.excel.EasyExcel; +import com.xjrsoft.common.utils.ExcelUtil; +import org.springframework.web.multipart.MultipartFile; +import java.io.IOException; +import com.alibaba.excel.support.ExcelTypeEnum; +import org.springframework.http.ResponseEntity; +import java.io.ByteArrayOutputStream; +import java.util.ArrayList; + +import com.xjrsoft.module.dev.dto.Testfrom3PageDto; +import com.xjrsoft.module.dev.entity.Testfrom3; +import com.xjrsoft.module.dev.service.ITestfrom3Service; +import com.xjrsoft.module.dev.vo.Testfrom3PageVo; + +import com.xjrsoft.module.datalog.service.DatalogService; +import com.xjrsoft.module.dev.vo.Testfrom3Vo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import javax.validation.constraints.NotNull; +import java.util.List; + +/** +* @title: 测试3 +* @Author 管理员 +* @Date: 2025-09-25 +* @Version 1.0 +*/ +@RestController +@RequestMapping("/dev" + "/testfrom3") +@Api(value = "/dev" + "/testfrom3",tags = "测试3代码") +@AllArgsConstructor +public class Testfrom3Controller { + + + private final ITestfrom3Service testfrom3Service; + private final DatalogService dataService; + + @GetMapping(value = "/page") + @ApiOperation(value="Testfrom3列表(分页)") + @SaCheckPermission("testfrom3:list") + public R page(@Valid Testfrom3PageDto dto){ + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper + .like(StrUtil.isNotBlank(dto.getDanXingWenBen8163()),Testfrom3::getDanXingWenBen8163,dto.getDanXingWenBen8163()) + .like(StrUtil.isNotBlank(dto.getDanXingWenBen3634()),Testfrom3::getDanXingWenBen3634,dto.getDanXingWenBen3634()) + .like(StrUtil.isNotBlank(dto.getDanXingWenBen5097()),Testfrom3::getDanXingWenBen5097,dto.getDanXingWenBen5097()) + .orderByDesc(Testfrom3::getId) + .select(Testfrom3.class,x -> VoToColumnUtil.fieldsToColumns(Testfrom3PageVo.class).contains(x.getProperty())); + IPage page = testfrom3Service.page(ConventPage.getPage(dto), queryWrapper); + PageOutput pageOutput = ConventPage.getPageOutput(page, Testfrom3PageVo.class); + return R.ok(pageOutput); + } + + @GetMapping(value = "/info") + @ApiOperation(value="根据id查询Testfrom3信息") + @SaCheckPermission("testfrom3:detail") + public R info(@RequestParam Long id){ + Testfrom3 testfrom3 = testfrom3Service.getById(id); + if (testfrom3 == null) { + return R.error("找不到此数据!"); + } + return R.ok(BeanUtil.toBean(testfrom3, Testfrom3Vo.class)); + } + + + @PostMapping + @ApiOperation(value = "新增Testfrom3") + @SaCheckPermission("testfrom3:add") + public R add(@Valid @RequestBody UpdateTestfrom3Dto dto){ + UpdateTestfrom3Dto res = dataService.insert(dto); + return R.ok(res.getId()); + } + + @PutMapping + @ApiOperation(value = "修改Testfrom3") + @SaCheckPermission("testfrom3:edit") + public R update(@Valid @RequestBody UpdateTestfrom3Dto dto){ + return R.ok(dataService.updateById(dto)); + } + + @DeleteMapping + @ApiOperation(value = "删除") + @SaCheckPermission("testfrom3:delete") + public R delete(@Valid @RequestBody List ids){ + return R.ok(dataService.deleteByIds(UpdateTestfrom3Dto.class, ids)); + + } + @PostMapping("/import") + @ApiOperation(value = "导入") + @SaCheckPermission("testfrom3:import") + public R importData(@RequestParam MultipartFile file) throws IOException { + List savedDataList = EasyExcel.read(file.getInputStream()).head(Testfrom3PageVo.class).sheet().doReadSync(); + ExcelUtil.transExcelData(savedDataList, true); + dataService.insertBatch(BeanUtil.copyToList(savedDataList,UpdateTestfrom3Dto.class)); + return R.ok(); + } + + @GetMapping("/export") + @ApiOperation(value = "导出") + @SaCheckPermission("testfrom3:export") + public ResponseEntity exportData(@Valid Testfrom3PageDto dto, @RequestParam(defaultValue = "false") Boolean isTemplate) { + List customerList = isTemplate != null && isTemplate ? new ArrayList<>() : ((PageOutput) page(dto).getData()).getList(); + ExcelUtil.transExcelData(customerList, false); + ByteArrayOutputStream bot = new ByteArrayOutputStream(); + EasyExcel.write(bot, Testfrom3PageVo.class).automaticMergeHead(false).excelType(ExcelTypeEnum.XLSX).sheet().doWrite(customerList); + ByteArrayOutputStream resultBot = ExcelUtil.renderExportRequiredHead(bot); + + return R.fileStream(resultBot.toByteArray(), "Testfrom3" + ExcelTypeEnum.XLSX.getValue()); + } +} \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/dto/AddTestfrom3Dto.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/dto/AddTestfrom3Dto.java new file mode 100644 index 0000000..1f691fa --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/dto/AddTestfrom3Dto.java @@ -0,0 +1,56 @@ +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: 测试3 +* @Author 管理员 +* @Date: 2025-09-25 +* @Version 1.0 +*/ +@Data +@LogTable(source="testfrom_3",name="测试3") +public class AddTestfrom3Dto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + @LogField(name="单行文本",index=0) + private String danXingWenBen8163; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + @LogField(name="单行文本",index=0) + private String danXingWenBen3634; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + @LogField(name="单行文本",index=0) + private String danXingWenBen5097; + /** + * + */ + @ApiModelProperty("") + @LogField(name="",index=0) + private Long tenantId; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/dto/Testfrom3PageDto.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/dto/Testfrom3PageDto.java new file mode 100644 index 0000000..4c72b93 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/dto/Testfrom3PageDto.java @@ -0,0 +1,40 @@ +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-09-25 +* @Version 1.0 +*/ +@Data +@EqualsAndHashCode(callSuper = false) +public class Testfrom3PageDto extends PageInput { + + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen8163; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen3634; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen5097; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/dto/UpdateTestfrom3Dto.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/dto/UpdateTestfrom3Dto.java new file mode 100644 index 0000000..4e38411 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/dto/UpdateTestfrom3Dto.java @@ -0,0 +1,68 @@ +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: 测试3 +* @Author 管理员 +* @Date: 2025-09-25 +* @Version 1.0 +*/ +@Data +@LogTable(source="testfrom_3",name="测试3") +public class UpdateTestfrom3Dto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @LogField(name="",index=0) + @ApiModelProperty("") + private Long id; + /** + * 单行文本 + */ + @LogField(name="单行文本",index=1) + @ApiModelProperty("单行文本") + private String danXingWenBen8163; + /** + * 单行文本 + */ + @LogField(name="单行文本",index=2) + @ApiModelProperty("单行文本") + private String danXingWenBen3634; + /** + * 单行文本 + */ + @LogField(name="单行文本",index=3) + @ApiModelProperty("单行文本") + private String danXingWenBen5097; + /** + * + */ + @LogField(name="",index=4) + @ApiModelProperty("") + private Long tenantId; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/entity/Testfrom3.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/entity/Testfrom3.java new file mode 100644 index 0000000..e918df2 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/entity/Testfrom3.java @@ -0,0 +1,97 @@ +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.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-09-25 +* @Version 1.0 +*/ +@Data +@TableName("testfrom_3") +@ApiModel(value = "测试3对象", description = "测试3") +public class Testfrom3 implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + @TableId + private Long id; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen8163; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen3634; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen5097; + /** + * + */ + @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; + + +} \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/mapper/Testfrom3Mapper.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/mapper/Testfrom3Mapper.java new file mode 100644 index 0000000..0444824 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/mapper/Testfrom3Mapper.java @@ -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.Testfrom3; +import org.apache.ibatis.annotations.Mapper; + +/** +* @title: mapper +* @Author 管理员 +* @Date: 2025-09-25 +* @Version 1.0 +*/ +@Mapper +public interface Testfrom3Mapper extends BaseMapper { + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/service/ITestfrom3Service.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/service/ITestfrom3Service.java new file mode 100644 index 0000000..4e02909 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/service/ITestfrom3Service.java @@ -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.Testfrom3; +import lombok.Data; +import java.util.List; + +/** +* @title: service +* @Author 管理员 +* @Date: 2025-09-25 +* @Version 1.0 +*/ + +public interface ITestfrom3Service extends IService { +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/service/impl/Testfrom3ServiceImpl.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/service/impl/Testfrom3ServiceImpl.java new file mode 100644 index 0000000..37a5514 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/service/impl/Testfrom3ServiceImpl.java @@ -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.Testfrom3; +import com.xjrsoft.module.dev.mapper.Testfrom3Mapper; +import com.xjrsoft.module.dev.service.ITestfrom3Service; +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-09-25 +* @Version 1.0 +*/ +@Service +@AllArgsConstructor +public class Testfrom3ServiceImpl extends ServiceImpl implements ITestfrom3Service { +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/vo/Testfrom3PageVo.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/vo/Testfrom3PageVo.java new file mode 100644 index 0000000..4e046d9 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/vo/Testfrom3PageVo.java @@ -0,0 +1,53 @@ +package com.xjrsoft.module.dev.vo; + +import com.alibaba.excel.annotation.ExcelProperty; +import com.alibaba.excel.annotation.ExcelIgnore; +import com.alibaba.excel.annotation.write.style.ContentStyle; +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-09-25 +* @Version 1.0 +*/ +@Data +public class Testfrom3PageVo { + + /** + * + */ + @ExcelIgnore + @ApiModelProperty("") + private String id; + /** + * 单行文本 + */ + @ContentStyle(dataFormat = 49) + @ExcelProperty("单行文本") + @ApiModelProperty("单行文本") + private String danXingWenBen8163; + /** + * 单行文本 + */ + @ContentStyle(dataFormat = 49) + @ExcelProperty("单行文本") + @ApiModelProperty("单行文本") + private String danXingWenBen3634; + /** + * 单行文本 + */ + @ContentStyle(dataFormat = 49) + @ExcelProperty("单行文本") + @ApiModelProperty("单行文本") + private String danXingWenBen5097; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/vo/Testfrom3Vo.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/vo/Testfrom3Vo.java new file mode 100644 index 0000000..dbc5c09 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/dev/vo/Testfrom3Vo.java @@ -0,0 +1,73 @@ +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-09-25 +* @Version 1.0 +*/ +@Data +public class Testfrom3Vo { + + /** + * + */ + @ApiModelProperty("") + private Long id; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen8163; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen3634; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen5097; + /** + * + */ + @ApiModelProperty("") + private Long createUserId; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime createDate; + /** + * + */ + @ApiModelProperty("") + private Long modifyUserId; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime modifyDate; + /** + * + */ + @ApiModelProperty("") + private Integer enabledMark; + /** + * + */ + @ApiModelProperty("") + private Long tenantId; + + + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/controller/DemoApplianceController.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/controller/DemoApplianceController.java new file mode 100644 index 0000000..233bfb9 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/controller/DemoApplianceController.java @@ -0,0 +1,98 @@ +package com.xjrsoft.module.prdManage.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +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.prdManage.dto.AddDemoApplianceDto; +import com.xjrsoft.module.prdManage.dto.DemoAppliancePageDto; +import com.xjrsoft.module.prdManage.dto.UpdateDemoApplianceDto; +import com.xjrsoft.module.prdManage.entity.DemoAppliance; +import com.xjrsoft.module.prdManage.service.IDemoApplianceService; +import com.xjrsoft.module.prdManage.vo.DemoAppliancePageVo; +import com.xjrsoft.module.prdManage.vo.DemoApplianceVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +/** +* @title: 示例-家电管理 +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@RestController +@RequestMapping("/prdManage" + "/demoAppliance") +@Api(value = "/prdManage" + "/demoAppliance",tags = "示例-家电管理代码") +@AllArgsConstructor +public class DemoApplianceController { + + +private final IDemoApplianceService demoApplianceService; + + @GetMapping(value = "/page") + @ApiOperation(value="DemoAppliance列表(分页)") + @SaCheckPermission("demoAppliance:list") + public R page(@Valid DemoAppliancePageDto dto){ + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper + .like(StrUtil.isNotBlank(dto.getName()),DemoAppliance::getName,dto.getName()) + .like(StrUtil.isNotBlank(dto.getSerialNumber()),DemoAppliance::getSerialNumber,dto.getSerialNumber()) + .like(StrUtil.isNotBlank(dto.getCategory()),DemoAppliance::getCategory,dto.getCategory()) + .orderByDesc(DemoAppliance::getId) + .select(DemoAppliance.class,x -> VoToColumnUtil.fieldsToColumns(DemoAppliancePageVo.class).contains(x.getProperty())); + IPage page = demoApplianceService.page(ConventPage.getPage(dto), queryWrapper); + PageOutput pageOutput = ConventPage.getPageOutput(page, DemoAppliancePageVo.class); + return R.ok(pageOutput); + } + + @GetMapping(value = "/info") + @ApiOperation(value="根据id查询DemoAppliance信息") + @SaCheckPermission("demoAppliance:detail") + public R info(@RequestParam Integer id){ + DemoAppliance demoAppliance = demoApplianceService.getById(id); + if (demoAppliance == null) { + return R.error("找不到此数据!"); + } + return R.ok(BeanUtil.toBean(demoAppliance, DemoApplianceVo.class)); + } + + + @PostMapping + @ApiOperation(value = "新增DemoAppliance") + @SaCheckPermission("demoAppliance:add") + public R add(@Valid @RequestBody AddDemoApplianceDto dto){ + DemoAppliance demoAppliance = BeanUtil.toBean(dto, DemoAppliance.class); + boolean isSuccess = demoApplianceService.save(demoAppliance); + return R.ok(demoAppliance.getId()); + } + + @PutMapping + @ApiOperation(value = "修改DemoAppliance") + @SaCheckPermission("demoAppliance:edit") + public R update(@Valid @RequestBody UpdateDemoApplianceDto dto){ + + DemoAppliance demoAppliance = BeanUtil.toBean(dto, DemoAppliance.class); + return R.ok(demoApplianceService.updateById(demoAppliance)); + + } + + @DeleteMapping + @ApiOperation(value = "删除") + @SaCheckPermission("demoAppliance:delete") + public R delete(@Valid @RequestBody List ids){ + return R.ok(demoApplianceService.removeBatchByIds(ids)); + + } + + } \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/controller/Testfrom2Controller.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/controller/Testfrom2Controller.java new file mode 100644 index 0000000..f881948 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/controller/Testfrom2Controller.java @@ -0,0 +1,113 @@ +package com.xjrsoft.module.prdManage.controller; + +import java.util.List; + +import javax.validation.Valid; + +import org.springframework.beans.factory.annotation.Autowired; +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.prdManage.dto.AddTestfrom2Dto; +import com.xjrsoft.module.prdManage.dto.Testfrom2PageDto; +import com.xjrsoft.module.prdManage.dto.UpdateTestfrom2Dto; +import com.xjrsoft.module.prdManage.entity.Testfrom2; +import com.xjrsoft.module.prdManage.service.ITestfrom2Service; +import com.xjrsoft.module.prdManage.vo.Testfrom2PageVo; +import com.xjrsoft.module.prdManage.vo.Testfrom2Vo; + +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-08-20 +* @Version 1.0 +*/ +@RestController +@RequestMapping("/dev" + "/testfrom2") +@Api(value = "/dev" + "/testfrom2",tags = "测试代码") +@AllArgsConstructor +public class Testfrom2Controller { + + + private final ITestfrom2Service testfrom2Service; + + private final DatalogService dataService; + + + @GetMapping(value = "/page") + @ApiOperation(value="Testfrom2列表(分页)") + @SaCheckPermission("testfrom2:list") + public R page(@Valid Testfrom2PageDto dto){ + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper + .like(StrUtil.isNotBlank(dto.getDanXingWenBen7818()),Testfrom2::getDanXingWenBen7818,dto.getDanXingWenBen7818()) + .like(StrUtil.isNotBlank(dto.getDanXingWenBen9043()),Testfrom2::getDanXingWenBen9043,dto.getDanXingWenBen9043()) + .orderByDesc(Testfrom2::getId) + .select(Testfrom2.class,x -> VoToColumnUtil.fieldsToColumns(Testfrom2PageVo.class).contains(x.getProperty())); + IPage page = testfrom2Service.page(ConventPage.getPage(dto), queryWrapper); + PageOutput pageOutput = ConventPage.getPageOutput(page, Testfrom2PageVo.class); + return R.ok(pageOutput); + } + + @GetMapping(value = "/info") + @ApiOperation(value="根据id查询Testfrom2信息") + @SaCheckPermission("testfrom2:detail") + public R info(@RequestParam Long id){ + Testfrom2 testfrom2 = testfrom2Service.getById(id); + if (testfrom2 == null) { + return R.error("找不到此数据!"); + } + return R.ok(BeanUtil.toBean(testfrom2, Testfrom2Vo.class)); + } + + + @PostMapping + @ApiOperation(value = "新增Testfrom2") + @SaCheckPermission("testfrom2:add") + public R add(@Valid @RequestBody AddTestfrom2Dto dto){ + // Testfrom2 testfrom2 = BeanUtil.toBean(dto, Testfrom2.class); + //boolean isSuccess = testfrom2Service.save(testfrom2); + AddTestfrom2Dto res = dataService.insert(dto); + return R.ok(res.getId()); + } + + @PutMapping + @ApiOperation(value = "修改Testfrom2") + @SaCheckPermission("testfrom2:edit") + public R update(@Valid @RequestBody AddTestfrom2Dto dto){ + + // Testfrom2 testfrom2 = BeanUtil.toBean(dto, Testfrom2.class); + return R.ok(dataService.updateById(dto)); + + } + + @DeleteMapping + @ApiOperation(value = "删除") + @SaCheckPermission("testfrom2:delete") + public R delete(@Valid @RequestBody List ids){ + //return R.ok(testfrom2Service.removeBatchByIds(ids)); + return R.ok(dataService.deleteByIds(AddTestfrom2Dto.class, ids)); + } + +} \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/AddDemoApplianceDto.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/AddDemoApplianceDto.java new file mode 100644 index 0000000..01f2d6d --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/AddDemoApplianceDto.java @@ -0,0 +1,70 @@ +package com.xjrsoft.module.prdManage.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + +import com.pictc.annotations.datalog.LogTable; + + +/** +* @title: 示例-家电管理 +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@LogTable(name="家电管理",source = "") +@Data +public class AddDemoApplianceDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String serialNumber; + /** + * + */ + @ApiModelProperty("") + private String category; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime purchaseDate; + /** + * + */ + @ApiModelProperty("") + private Integer warrantyPeriod; + /** + * + */ + @ApiModelProperty("") + private Integer powerRating; + /** + * + */ + @ApiModelProperty("") + private String brand; + /** + * + */ + @ApiModelProperty("") + private Double sellingPrice; + /** + * + */ + @ApiModelProperty("") + private String status; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/AddTestfrom2Dto.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/AddTestfrom2Dto.java new file mode 100644 index 0000000..60434d1 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/AddTestfrom2Dto.java @@ -0,0 +1,56 @@ +package com.xjrsoft.module.prdManage.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-09-15 +* @Version 1.0 +*/ +@Data +@LogTable(source="testfrom_2",name="测试") +public class AddTestfrom2Dto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + private Long id; + + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + @LogField(name="单行文本",index=0) + private String danXingWenBen7818; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + @LogField(name="单行文本",index=0) + private String danXingWenBen9043; + /** + * + */ + @ApiModelProperty("") + @LogField(name="",index=0) + private Long tenantId; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/DemoAppliancePageDto.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/DemoAppliancePageDto.java new file mode 100644 index 0000000..5a65f25 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/DemoAppliancePageDto.java @@ -0,0 +1,35 @@ +package com.xjrsoft.module.prdManage.dto; + +import com.xjrsoft.common.page.PageInput; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** +* @title: 分页查询入参 +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@Data +@EqualsAndHashCode(callSuper = false) +public class DemoAppliancePageDto extends PageInput { + + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String serialNumber; + /** + * + */ + @ApiModelProperty("") + private String category; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/Testfrom2PageDto.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/Testfrom2PageDto.java new file mode 100644 index 0000000..e78f858 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/Testfrom2PageDto.java @@ -0,0 +1,35 @@ +package com.xjrsoft.module.prdManage.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-09-15 +* @Version 1.0 +*/ +@Data +@EqualsAndHashCode(callSuper = false) +public class Testfrom2PageDto extends PageInput { + + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen7818; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen9043; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/UpdateDemoApplianceDto.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/UpdateDemoApplianceDto.java new file mode 100644 index 0000000..99ee8f3 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/UpdateDemoApplianceDto.java @@ -0,0 +1,72 @@ +package com.xjrsoft.module.prdManage.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** +* @title: 示例-家电管理 +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@Data +public class UpdateDemoApplianceDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + private Integer id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String serialNumber; + /** + * + */ + @ApiModelProperty("") + private String category; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime purchaseDate; + /** + * + */ + @ApiModelProperty("") + private Integer warrantyPeriod; + /** + * + */ + @ApiModelProperty("") + private Integer powerRating; + /** + * + */ + @ApiModelProperty("") + private String brand; + /** + * + */ + @ApiModelProperty("") + private Double sellingPrice; + /** + * + */ + @ApiModelProperty("") + private String status; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/UpdateTestfrom2Dto.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/UpdateTestfrom2Dto.java new file mode 100644 index 0000000..a86c37c --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/dto/UpdateTestfrom2Dto.java @@ -0,0 +1,47 @@ +package com.xjrsoft.module.prdManage.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; + + + +/** +* @title: 测试 +* @Author 管理员 +* @Date: 2025-09-15 +* @Version 1.0 +*/ +@Data +public class UpdateTestfrom2Dto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + private Long id; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen7818; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen9043; + /** + * + */ + @ApiModelProperty("") + private Long tenantId; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/entity/DemoAppliance.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/entity/DemoAppliance.java new file mode 100644 index 0000000..22dce8f --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/entity/DemoAppliance.java @@ -0,0 +1,80 @@ +package com.xjrsoft.module.prdManage.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** +* @title: 示例-家电管理 +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@Data +@TableName("demo_appliance") +@ApiModel(value = "示例-家电管理对象", description = "示例-家电管理") +public class DemoAppliance implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + @TableId(type = IdType.ASSIGN_ID) + private Integer id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String serialNumber; + /** + * + */ + @ApiModelProperty("") + private String category; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime purchaseDate; + /** + * + */ + @ApiModelProperty("") + private Integer warrantyPeriod; + /** + * + */ + @ApiModelProperty("") + private Integer powerRating; + /** + * + */ + @ApiModelProperty("") + private String brand; + /** + * + */ + @ApiModelProperty("") + private Double sellingPrice; + /** + * + */ + @ApiModelProperty("") + private String status; + + +} \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/entity/Testfrom2.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/entity/Testfrom2.java new file mode 100644 index 0000000..55d432a --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/entity/Testfrom2.java @@ -0,0 +1,47 @@ +package com.xjrsoft.module.prdManage.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.github.yulichang.autoconfigure.conditional.JoinSqlInjectorCondition; +import com.pictc.annotations.datalog.JoinCaseType; +import com.pictc.annotations.datalog.JoinType; +import com.pictc.annotations.datalog.LogJoin; +import com.pictc.annotations.datalog.LogJoinColumn; +import com.pictc.annotations.datalog.ValueDirectionType; +import com.pictc.orm.BaseMasterEntity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + + +/** +* @title: 测试 +* @Author 管理员 +* @Date: 2025-09-15 +* @Version 1.0 +*/ +@Data +@TableName("testfrom_2") +@ApiModel(value = "测试对象", description = "测试") +public class Testfrom2 extends BaseMasterEntity { + + private static final long serialVersionUID = 1L; + + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen7818; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen9043; + + @LogJoin(name = "", + columns = { + @LogJoinColumn(field = "",relatedField = "", valueDirection = ValueDirectionType.RIGHT) + }, caseType = JoinCaseType.FULL, target = DemoAppliance.class, type = JoinType.MANY) + private DemoAppliance appliance; + +} \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/mapper/DemoApplianceMapper.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/mapper/DemoApplianceMapper.java new file mode 100644 index 0000000..7993209 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/mapper/DemoApplianceMapper.java @@ -0,0 +1,16 @@ +package com.xjrsoft.module.prdManage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xjrsoft.module.prdManage.entity.DemoAppliance; +import org.apache.ibatis.annotations.Mapper; + +/** +* @title: mapper +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@Mapper +public interface DemoApplianceMapper extends BaseMapper { + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/mapper/Testfrom2Mapper.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/mapper/Testfrom2Mapper.java new file mode 100644 index 0000000..2c93c8d --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/mapper/Testfrom2Mapper.java @@ -0,0 +1,17 @@ +package com.xjrsoft.module.prdManage.mapper; + +import org.apache.ibatis.annotations.Mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xjrsoft.module.prdManage.entity.Testfrom2; + +/** +* @title: mapper +* @Author 管理员 +* @Date: 2025-08-20 +* @Version 1.0 +*/ +@Mapper +public interface Testfrom2Mapper extends BaseMapper { + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/service/IDemoApplianceService.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/service/IDemoApplianceService.java new file mode 100644 index 0000000..97832d3 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/service/IDemoApplianceService.java @@ -0,0 +1,14 @@ +package com.xjrsoft.module.prdManage.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xjrsoft.module.prdManage.entity.DemoAppliance; + +/** +* @title: service +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ + +public interface IDemoApplianceService extends IService { +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/service/ITestfrom2Service.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/service/ITestfrom2Service.java new file mode 100644 index 0000000..de4972e --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/service/ITestfrom2Service.java @@ -0,0 +1,14 @@ +package com.xjrsoft.module.prdManage.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xjrsoft.module.prdManage.entity.Testfrom2; + +/** +* @title: service +* @Author 管理员 +* @Date: 2025-08-20 +* @Version 1.0 +*/ + +public interface ITestfrom2Service extends IService { +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/service/impl/DemoApplianceServiceImpl.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/service/impl/DemoApplianceServiceImpl.java new file mode 100644 index 0000000..2962646 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/service/impl/DemoApplianceServiceImpl.java @@ -0,0 +1,19 @@ +package com.xjrsoft.module.prdManage.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xjrsoft.module.prdManage.entity.DemoAppliance; +import com.xjrsoft.module.prdManage.mapper.DemoApplianceMapper; +import com.xjrsoft.module.prdManage.service.IDemoApplianceService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +/** +* @title: service +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@Service +@AllArgsConstructor +public class DemoApplianceServiceImpl extends ServiceImpl implements IDemoApplianceService { +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/service/impl/Testfrom2ServiceImpl.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/service/impl/Testfrom2ServiceImpl.java new file mode 100644 index 0000000..10a102d --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/service/impl/Testfrom2ServiceImpl.java @@ -0,0 +1,21 @@ +package com.xjrsoft.module.prdManage.service.impl; + +import org.springframework.stereotype.Service; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xjrsoft.module.prdManage.entity.Testfrom2; +import com.xjrsoft.module.prdManage.mapper.Testfrom2Mapper; +import com.xjrsoft.module.prdManage.service.ITestfrom2Service; + +import lombok.AllArgsConstructor; + +/** +* @title: service +* @Author 管理员 +* @Date: 2025-08-20 +* @Version 1.0 +*/ +@Service +@AllArgsConstructor +public class Testfrom2ServiceImpl extends ServiceImpl implements ITestfrom2Service { +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/vo/DemoAppliancePageVo.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/vo/DemoAppliancePageVo.java new file mode 100644 index 0000000..64f0b81 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/vo/DemoAppliancePageVo.java @@ -0,0 +1,68 @@ +package com.xjrsoft.module.prdManage.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** +* @title: 分页列表出参 +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@Data +public class DemoAppliancePageVo { + + /** + * + */ + @ApiModelProperty("") + private String id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String serialNumber; + /** + * + */ + @ApiModelProperty("") + private String category; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime purchaseDate; + /** + * + */ + @ApiModelProperty("") + private Integer warrantyPeriod; + /** + * + */ + @ApiModelProperty("") + private Integer powerRating; + /** + * + */ + @ApiModelProperty("") + private String brand; + /** + * + */ + @ApiModelProperty("") + private Double sellingPrice; + /** + * + */ + @ApiModelProperty("") + private String status; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/vo/DemoApplianceVo.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/vo/DemoApplianceVo.java new file mode 100644 index 0000000..7afe8c0 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/vo/DemoApplianceVo.java @@ -0,0 +1,70 @@ +package com.xjrsoft.module.prdManage.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** +* @title: 表单出参 +* @Author 管理员 +* @Date: 2025-03-12 +* @Version 1.0 +*/ +@Data +public class DemoApplianceVo { + + /** + * + */ + @ApiModelProperty("") + private Integer id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String serialNumber; + /** + * + */ + @ApiModelProperty("") + private String category; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime purchaseDate; + /** + * + */ + @ApiModelProperty("") + private Integer warrantyPeriod; + /** + * + */ + @ApiModelProperty("") + private Integer powerRating; + /** + * + */ + @ApiModelProperty("") + private String brand; + /** + * + */ + @ApiModelProperty("") + private Double sellingPrice; + /** + * + */ + @ApiModelProperty("") + private String status; + + + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/vo/Testfrom2PageVo.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/vo/Testfrom2PageVo.java new file mode 100644 index 0000000..af29450 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/vo/Testfrom2PageVo.java @@ -0,0 +1,38 @@ +package com.xjrsoft.module.prdManage.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-08-20 +* @Version 1.0 +*/ +@Data +public class Testfrom2PageVo { + + /** + * + */ + @ApiModelProperty("") + private String id; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen1620; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen1247; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/vo/Testfrom2Vo.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/vo/Testfrom2Vo.java new file mode 100644 index 0000000..de86f33 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/prdManage/vo/Testfrom2Vo.java @@ -0,0 +1,68 @@ +package com.xjrsoft.module.prdManage.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-08-20 +* @Version 1.0 +*/ +@Data +public class Testfrom2Vo { + + /** + * + */ + @ApiModelProperty("") + private Long id; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen1620; + /** + * 单行文本 + */ + @ApiModelProperty("单行文本") + private String danXingWenBen1247; + /** + * + */ + @ApiModelProperty("") + private Long createUserId; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime createDate; + /** + * + */ + @ApiModelProperty("") + private Long modifyUserId; + /** + * + */ + @ApiModelProperty("") + private LocalDateTime modifyDate; + /** + * + */ + @ApiModelProperty("") + private Integer enabledMark; + /** + * + */ + @ApiModelProperty("") + private Long tenantId; + + + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/controller/DemoCustomerManageController.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/controller/DemoCustomerManageController.java new file mode 100644 index 0000000..d9f6d92 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/controller/DemoCustomerManageController.java @@ -0,0 +1,99 @@ +package com.xjrsoft.module.relationManage.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +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.relationManage.dto.AddDemoCustomerDto; +import com.xjrsoft.module.relationManage.dto.DemoCustomerPageDto; +import com.xjrsoft.module.relationManage.dto.UpdateDemoCustomerDto; +import com.xjrsoft.module.relationManage.entity.DemoCustomer; +import com.xjrsoft.module.relationManage.service.IDemoCustomerManageService; +import com.xjrsoft.module.relationManage.vo.DemoCustomerPageVo; +import com.xjrsoft.module.relationManage.vo.DemoCustomerVo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.AllArgsConstructor; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +/** +* @title: demo_客户管理 +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@RestController +@RequestMapping("/relationManage" + "/demoCustomerManage") +@Api(value = "/relationManage" + "/demoCustomerManage",tags = "demo_客户管理代码") +@AllArgsConstructor +public class DemoCustomerManageController { + + +private final IDemoCustomerManageService demoCustomerManageService; + + @GetMapping(value = "/page") + @ApiOperation(value="DemoCustomer列表(分页)") + @SaCheckPermission("demoCustomerManage:list") + public R page(@Valid DemoCustomerPageDto dto){ + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper + .like(StrUtil.isNotBlank(dto.getName()),DemoCustomer::getName,dto.getName()) + .like(StrUtil.isNotBlank(dto.getGender()),DemoCustomer::getGender,dto.getGender()) + .like(StrUtil.isNotBlank(dto.getPhone()),DemoCustomer::getPhone,dto.getPhone()) + .like(StrUtil.isNotBlank(dto.getEmail()),DemoCustomer::getEmail,dto.getEmail()) + .orderByDesc(DemoCustomer::getId) + .select(DemoCustomer.class,x -> VoToColumnUtil.fieldsToColumns(DemoCustomerPageVo.class).contains(x.getProperty())); + IPage page = demoCustomerManageService.page(ConventPage.getPage(dto), queryWrapper); + PageOutput pageOutput = ConventPage.getPageOutput(page, DemoCustomerPageVo.class); + return R.ok(pageOutput); + } + + @GetMapping(value = "/info") + @ApiOperation(value="根据id查询DemoCustomer信息") + @SaCheckPermission("demoCustomerManage:detail") + public R info(@RequestParam Long id){ + DemoCustomer demoCustomer = demoCustomerManageService.getById(id); + if (demoCustomer == null) { + return R.error("找不到此数据!"); + } + return R.ok(BeanUtil.toBean(demoCustomer, DemoCustomerVo.class)); + } + + + @PostMapping + @ApiOperation(value = "新增DemoCustomer") + @SaCheckPermission("demoCustomerManage:add") + public R add(@Valid @RequestBody AddDemoCustomerDto dto){ + DemoCustomer demoCustomer = BeanUtil.toBean(dto, DemoCustomer.class); + boolean isSuccess = demoCustomerManageService.save(demoCustomer); + return R.ok(demoCustomer.getId()); + } + + @PutMapping + @ApiOperation(value = "修改DemoCustomer") + @SaCheckPermission("demoCustomerManage:edit") + public R update(@Valid @RequestBody UpdateDemoCustomerDto dto){ + + DemoCustomer demoCustomer = BeanUtil.toBean(dto, DemoCustomer.class); + return R.ok(demoCustomerManageService.updateById(demoCustomer)); + + } + + @DeleteMapping + @ApiOperation(value = "删除") + @SaCheckPermission("demoCustomerManage:delete") + public R delete(@Valid @RequestBody List ids){ + return R.ok(demoCustomerManageService.removeBatchByIds(ids)); + + } + + } \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/dto/AddDemoCustomerDto.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/dto/AddDemoCustomerDto.java new file mode 100644 index 0000000..54b0ee7 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/dto/AddDemoCustomerDto.java @@ -0,0 +1,57 @@ +package com.xjrsoft.module.relationManage.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** +* @title: demo_客户管理 +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Data +public class AddDemoCustomerDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String gender; + /** + * + */ + @ApiModelProperty("") + private String phone; + /** + * + */ + @ApiModelProperty("") + private String email; + /** + * + */ + @ApiModelProperty("") + private String address; + /** + * + */ + @ApiModelProperty("") + private String company; + /** + * + */ + @ApiModelProperty("") + private String position; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/dto/DemoCustomerPageDto.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/dto/DemoCustomerPageDto.java new file mode 100644 index 0000000..c9c63cd --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/dto/DemoCustomerPageDto.java @@ -0,0 +1,40 @@ +package com.xjrsoft.module.relationManage.dto; + +import com.xjrsoft.common.page.PageInput; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + + +/** +* @title: 分页查询入参 +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Data +@EqualsAndHashCode(callSuper = false) +public class DemoCustomerPageDto extends PageInput { + + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String gender; + /** + * + */ + @ApiModelProperty("") + private String phone; + /** + * + */ + @ApiModelProperty("") + private String email; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/dto/UpdateDemoCustomerDto.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/dto/UpdateDemoCustomerDto.java new file mode 100644 index 0000000..db65601 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/dto/UpdateDemoCustomerDto.java @@ -0,0 +1,61 @@ +package com.xjrsoft.module.relationManage.dto; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** +* @title: demo_客户管理 +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Data +public class UpdateDemoCustomerDto implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + private Long id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String gender; + /** + * + */ + @ApiModelProperty("") + private String phone; + /** + * + */ + @ApiModelProperty("") + private String email; + /** + * + */ + @ApiModelProperty("") + private String address; + /** + * + */ + @ApiModelProperty("") + private String company; + /** + * + */ + @ApiModelProperty("") + private String position; +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/entity/DemoCustomer.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/entity/DemoCustomer.java new file mode 100644 index 0000000..51941c1 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/entity/DemoCustomer.java @@ -0,0 +1,90 @@ +package com.xjrsoft.module.relationManage.entity; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.time.LocalDateTime; + + +/** +* @title: demo_客户管理 +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Data +@TableName("demo_customer") +@ApiModel(value = "demo_客户管理对象", description = "demo_客户管理") +public class DemoCustomer implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * + */ + @ApiModelProperty("") + @TableId + private Long id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String gender; + /** + * + */ + @ApiModelProperty("") + private String phone; + /** + * + */ + @ApiModelProperty("") + private String email; + /** + * + */ + @ApiModelProperty("") + private String address; + /** + * + */ + @ApiModelProperty("") + private String company; + /** + * + */ + @ApiModelProperty("") + private String position; + /** + * + */ + @ApiModelProperty("") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createDate; + + /** + * + */ + @ApiModelProperty("") + @TableField(fill = FieldFill.INSERT) + private Long createUserId; + + /** + * + */ + @ApiModelProperty("") + @TableField(fill = FieldFill.INSERT) + private Long deptId; + +} \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/mapper/DemoCustomerMapper.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/mapper/DemoCustomerMapper.java new file mode 100644 index 0000000..74eab06 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/mapper/DemoCustomerMapper.java @@ -0,0 +1,16 @@ +package com.xjrsoft.module.relationManage.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.xjrsoft.module.relationManage.entity.DemoCustomer; +import org.apache.ibatis.annotations.Mapper; + +/** +* @title: mapper +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Mapper +public interface DemoCustomerMapper extends BaseMapper { + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/service/IDemoCustomerManageService.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/service/IDemoCustomerManageService.java new file mode 100644 index 0000000..853866a --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/service/IDemoCustomerManageService.java @@ -0,0 +1,14 @@ +package com.xjrsoft.module.relationManage.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import com.xjrsoft.module.relationManage.entity.DemoCustomer; + +/** +* @title: service +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ + +public interface IDemoCustomerManageService extends IService { +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/service/impl/DemoCustomerManageServiceImpl.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/service/impl/DemoCustomerManageServiceImpl.java new file mode 100644 index 0000000..0fced8c --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/service/impl/DemoCustomerManageServiceImpl.java @@ -0,0 +1,19 @@ +package com.xjrsoft.module.relationManage.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.xjrsoft.module.relationManage.entity.DemoCustomer; +import com.xjrsoft.module.relationManage.mapper.DemoCustomerMapper; +import com.xjrsoft.module.relationManage.service.IDemoCustomerManageService; +import lombok.AllArgsConstructor; +import org.springframework.stereotype.Service; + +/** +* @title: service +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Service +@AllArgsConstructor +public class DemoCustomerManageServiceImpl extends ServiceImpl implements IDemoCustomerManageService { +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/vo/DemoCustomerPageVo.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/vo/DemoCustomerPageVo.java new file mode 100644 index 0000000..7f3e1a1 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/vo/DemoCustomerPageVo.java @@ -0,0 +1,56 @@ +package com.xjrsoft.module.relationManage.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** +* @title: 分页列表出参 +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Data +public class DemoCustomerPageVo { + + /** + * + */ + @ApiModelProperty("") + private String id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String gender; + /** + * + */ + @ApiModelProperty("") + private String phone; + /** + * + */ + @ApiModelProperty("") + private String email; + /** + * + */ + @ApiModelProperty("") + private String address; + /** + * + */ + @ApiModelProperty("") + private String company; + /** + * + */ + @ApiModelProperty("") + private String position; + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/vo/DemoCustomerVo.java b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/vo/DemoCustomerVo.java new file mode 100644 index 0000000..2aa1ce7 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/java/com/xjrsoft/module/relationManage/vo/DemoCustomerVo.java @@ -0,0 +1,74 @@ +package com.xjrsoft.module.relationManage.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** +* @title: 表单出参 +* @Author 管理员 +* @Date: 2025-03-11 +* @Version 1.0 +*/ +@Data +public class DemoCustomerVo { + + /** + * + */ + @ApiModelProperty("") + private Long id; + /** + * + */ + @ApiModelProperty("") + private String name; + /** + * + */ + @ApiModelProperty("") + private String gender; + /** + * + */ + @ApiModelProperty("") + private String phone; + /** + * + */ + @ApiModelProperty("") + private String email; + /** + * + */ + @ApiModelProperty("") + private String address; + /** + * + */ + @ApiModelProperty("") + private String company; + /** + * + */ + @ApiModelProperty("") + private String position; + + @ApiModelProperty("") + private LocalDateTime createDate; + + /** + * + */ + @ApiModelProperty("") + private Long createUserId; + + /** + * + */ + @ApiModelProperty("") + private Long deptId; + + +} diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/resources/banner.txt b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/resources/banner.txt new file mode 100644 index 0000000..f0052df --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/resources/banner.txt @@ -0,0 +1,6 @@ + ██████╗ ███████╗ ██████╗ ██╗████████╗ ██████╗ +██╔════╝ ██╔════╝██╔════╝ ██║╚══██╔══╝██╔════╝ +██║ ███╗█████╗ ██║ ███╗█████╗██║ ██║ ██║ +██║ ██║██╔══╝ ██║ ██║╚════╝██║ ██║ ██║ +╚██████╔╝███████╗╚██████╔╝ ██║ ██║ ╚██████╗ + ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/resources/bootstrap-local.yml b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/resources/bootstrap-local.yml new file mode 100644 index 0000000..f75a2a3 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/resources/bootstrap-local.yml @@ -0,0 +1,49 @@ +spring: + cloud: + nacos: #nacos监控 + config: + server-addr: 127.0.0.1:8848 # nacos 配置中心地址 + namespace: ITC-MS + group: DNE + username: nacos + password: nacos + 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 + +datalog: + db: + url: jdbc:kingbase8://127.0.0.1:54321/itc?currentSchema=dne_log_sit \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/src/main/resources/bootstrap.yml b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/resources/bootstrap.yml new file mode 100644 index 0000000..58e6e70 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/src/main/resources/bootstrap.yml @@ -0,0 +1,56 @@ +server: + port: 8099 + +spring: + application: + name: demo-service + main: + allow-bean-definition-overriding: true + profiles: + active: local + cloud: + nacos: #nacos监控 + config: + server-addr: 10.0.252.1:8848 # nacos 配置中心地址 + namespace: ITC-MS + group: DNE + username: nacos + password: Yudean@2025 + file-extension: yml # 默认配置 ${spring.application.name}-${spring.profiles.active}.${file-extension} + refresh-enabled: true + extension-configs: + - data-id: global.yml + refresh: true + group: DNE + + - data-id: discovery.yml + refresh: true + group: DNE + + - data-id: datasource.yml + refresh: true + group: DNE + + - data-id: seata.yml + refresh: true + group: DNE + + - data-id: redis.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.yml + refresh: true + group: DNE diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/target/app.jar.original b/itc-pcitc-demo/itc-pcitc-demo-service/target/app.jar.original new file mode 100644 index 0000000..310fe81 Binary files /dev/null and b/itc-pcitc-demo/itc-pcitc-demo-service/target/app.jar.original differ diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/Dockerfile b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/Dockerfile new file mode 100644 index 0000000..1cc66f3 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/Dockerfile @@ -0,0 +1,39 @@ +#FROM --platform=linux/arm64 docker.xuanyuan.run/library/openjdk:8-jre +FROM harbor.kubesphere.com/public/jar8u112:v1 + + +RUN mkdir -p /root/logs/java/ \ + && mkdir -p /scm/logs/ \ + && mkdir -p /opt/app/ \ + && mkdir -p /uploadFile/ \ + && mkdir -p /var/log/app \ + && mkdir -p /opt/app/logs \ + && mkdir -p /opt/agent/config + +ENV TZ "Asia/Shanghai" + +ADD ./skywalking-agent.jar /opt/agent/skywalking-agent.jar +ADD ./agent.config /opt/agent/config/agent.config + +RUN echo "set fileencodings=utf-8,gbk,gb2312,gb18030,cp936,latin1 \n set fenc=utf-8 \n set tenc=utf-8 \n set enc=utf-8 \n" |tee ~/.vimrc + + +ARG JAR_FILE +ARG PRO_FILE +ARG SOURCE_NAME + +ADD ./startApp.sh /opt/app/ +RUN chmod u+x /opt/app/*.sh +ADD ./${SOURCE_NAME} /opt/app/app.jar +RUN test -f /opt/app/app.jar || { echo "Error: JAR file not found at ${SOURCE_NAME}"; exit 1; } + +#应用名称 +ENV APP_NAME=itc-pcitc-demo +#skywalking-oap-server地址 +ENV SKYWALKING_SERVER=172.20.0.12:11800 +ENV ENV_APP_FILE_PATH=/opt/app/app.jar +ENV ENV_APP_PRO_FILE=test + +EXPOSE 8090 5005 + +ENTRYPOINT ["/opt/app/startApp.sh"] \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/agent.config b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/agent.config new file mode 100644 index 0000000..ed3fb29 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/agent.config @@ -0,0 +1,4 @@ +# 应用名称(在 SkyWalking UI 中显示的服务名) +agent.service_name=your-springboot-app +# SkyWalking OAP 服务地址(默认本地) +collector.backend_service=localhost:11800 \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/banner.txt b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/banner.txt new file mode 100644 index 0000000..f0052df --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/banner.txt @@ -0,0 +1,6 @@ + ██████╗ ███████╗ ██████╗ ██╗████████╗ ██████╗ +██╔════╝ ██╔════╝██╔════╝ ██║╚══██╔══╝██╔════╝ +██║ ███╗█████╗ ██║ ███╗█████╗██║ ██║ ██║ +██║ ██║██╔══╝ ██║ ██║╚════╝██║ ██║ ██║ +╚██████╔╝███████╗╚██████╔╝ ██║ ██║ ╚██████╗ + ╚═════╝ ╚══════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝ \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/bootstrap-local.yml b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/bootstrap-local.yml new file mode 100644 index 0000000..f75a2a3 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/bootstrap-local.yml @@ -0,0 +1,49 @@ +spring: + cloud: + nacos: #nacos监控 + config: + server-addr: 127.0.0.1:8848 # nacos 配置中心地址 + namespace: ITC-MS + group: DNE + username: nacos + password: nacos + 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 + +datalog: + db: + url: jdbc:kingbase8://127.0.0.1:54321/itc?currentSchema=dne_log_sit \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/bootstrap.yml b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/bootstrap.yml new file mode 100644 index 0000000..58e6e70 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/bootstrap.yml @@ -0,0 +1,56 @@ +server: + port: 8099 + +spring: + application: + name: demo-service + main: + allow-bean-definition-overriding: true + profiles: + active: local + cloud: + nacos: #nacos监控 + config: + server-addr: 10.0.252.1:8848 # nacos 配置中心地址 + namespace: ITC-MS + group: DNE + username: nacos + password: Yudean@2025 + file-extension: yml # 默认配置 ${spring.application.name}-${spring.profiles.active}.${file-extension} + refresh-enabled: true + extension-configs: + - data-id: global.yml + refresh: true + group: DNE + + - data-id: discovery.yml + refresh: true + group: DNE + + - data-id: datasource.yml + refresh: true + group: DNE + + - data-id: seata.yml + refresh: true + group: DNE + + - data-id: redis.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.yml + refresh: true + group: DNE diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/docker-system.sh b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/docker-system.sh new file mode 100644 index 0000000..788312d --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/docker-system.sh @@ -0,0 +1,126 @@ +#!/bin/bash + +# 定义变量 +CONTAINER_NAME="itc-ms-system" +IMAGE_NAME="pcitc/itc-ms-system" +IMAGE_VERSION="2025-08-04-0940" +IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION" +PORT=8091 # 服务暴露端口 +CONTAINER_PORT=8091 # 服务暴露端口 +TZ="Asia/Shanghai" # 时区设置 +# 环境变量配置 +ENV_APP_PRO_FILE="test" +file="$CONTAINER_NAME-version.txt" + +# 检查文件是否存在(假设 $file 是目标文件变量,已在别处定义) +if [ ! -f "$file" ]; then + echo "文件 $file 不存在" + touch "$file" # 变量加引号,处理含空格的文件名 + echo "$IMAGE_FULL" >> "$file" + echo "记录版本【$IMAGE_FULL】到 $file" +else + # 检查参数数量(建议移到脚本开头统一检查) + if [ $# -eq 2 ]; then + IMAGE_FULL="$IMAGE_NAME:$2" + echo "$IMAGE_FULL" >> "$file" + echo "记录版本【$IMAGE_FULL】到 $file" + else + # 修正赋值语法:等号两侧无空格 + last_version=$(tail -n 1 "$file") + IMAGE_FULL="$last_version" + # 建议添加对 $IMAGE_FULL 的后续处理(如使用该变量) + fi +fi + +# 显示帮助信息 +show_help() { + echo "使用方法: $0 [操作类型]" + echo "操作类型:" + echo " deploy - 部署并启动服务容器" + echo " remove - 停止并删除容器及数据/日志目录" + echo " logs - 查看容器日志" + echo " help - 显示帮助信息" +} + + + +# 部署服务 +deploy_service() { + echo "部署镜像【$IMAGE_FULL】" + # 检查容器是否已存在,存在则停止并删除 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "停止并删除现有容器: $CONTAINER_NAME" + docker stop $CONTAINER_NAME >/dev/null + docker rm $CONTAINER_NAME >/dev/null + fi + + # 启动服务容器 + echo "启动服务容器..." + docker run -d --privileged --restart always \ + --name $CONTAINER_NAME \ + -p $PORT:$CONTAINER_PORT \ + -e ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE \ + $IMAGE_FULL + + # 检查启动状态 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then + echo "服务启动成功!" + echo "容器名称: $CONTAINER_NAME" + echo "访问地址: http://localhost:$PORT" + echo "环境变量: ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE" + else + echo "服务启动失败,日志如下:" + docker logs $CONTAINER_NAME + exit 1 + fi +} + +# 删除服务 +remove_service() { + # 检查容器是否存在 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "停止容器: $CONTAINER_NAME" + docker stop $CONTAINER_NAME >/dev/null + + echo "删除容器: $CONTAINER_NAME" + docker rm $CONTAINER_NAME >/dev/null + else + echo "容器 $CONTAINER_NAME 不存在" + fi +} + +# 查看日志 +show_logs() { + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "查看 $CONTAINER_NAME 容器日志 (按 Ctrl+C 退出)..." + docker logs -f $CONTAINER_NAME + else + echo "容器 $CONTAINER_NAME 不存在" + fi +} + +# 主逻辑 +if [ $# -lt 1 ]; then + show_help + exit 1 +fi + +case "$1" in + deploy) + deploy_service + ;; + remove) + remove_service + ;; + logs) + show_logs + ;; + help) + show_help + ;; + *) + echo "无效的操作类型: $1" + show_help + exit 1 + ;; +esac diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/docker-user.sh b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/docker-user.sh new file mode 100644 index 0000000..2cc8222 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/docker-user.sh @@ -0,0 +1,126 @@ +#!/bin/bash + +# 定义变量 +CONTAINER_NAME="itc-ms-user" +IMAGE_NAME="pcitc/itc-ms-user" +IMAGE_VERSION="2025-08-04-0954" +IMAGE_FULL="$IMAGE_NAME:$IMAGE_VERSION" +PORT=8092 # 服务暴露端口 +CONTAINER_PORT=8092 # 服务暴露端口 +TZ="Asia/Shanghai" # 时区设置 +# 环境变量配置 +ENV_APP_PRO_FILE="test" +file="$CONTAINER_NAME-version.txt" + +# 检查文件是否存在(假设 $file 是目标文件变量,已在别处定义) +if [ ! -f "$file" ]; then + echo "文件 $file 不存在" + touch "$file" # 变量加引号,处理含空格的文件名 + echo "$IMAGE_FULL" >> "$file" + echo "记录版本【$IMAGE_FULL】到 $file" +else + # 检查参数数量(建议移到脚本开头统一检查) + if [ $# -eq 2 ]; then + IMAGE_FULL="$IMAGE_NAME:$2" + echo "$IMAGE_FULL" >> "$file" + echo "记录版本【$IMAGE_FULL】到 $file" + else + # 修正赋值语法:等号两侧无空格 + last_version=$(tail -n 1 "$file") + IMAGE_FULL="$last_version" + # 建议添加对 $IMAGE_FULL 的后续处理(如使用该变量) + fi +fi + +# 显示帮助信息 +show_help() { + echo "使用方法: $0 [操作类型]" + echo "操作类型:" + echo " deploy - 部署并启动服务容器" + echo " remove - 停止并删除容器及数据/日志目录" + echo " logs - 查看容器日志" + echo " help - 显示帮助信息" +} + + + +# 部署服务 +deploy_service() { + echo "部署镜像【$IMAGE_FULL】" + # 检查容器是否已存在,存在则停止并删除 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "停止并删除现有容器: $CONTAINER_NAME" + docker stop $CONTAINER_NAME >/dev/null + docker rm $CONTAINER_NAME >/dev/null + fi + + # 启动服务容器 + echo "启动服务容器..." + docker run -d --privileged --restart always \ + --name $CONTAINER_NAME \ + -p $PORT:$CONTAINER_PORT \ + -e ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE \ + $IMAGE_FULL + + # 检查启动状态 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME -f status=running)" ]; then + echo "服务启动成功!" + echo "容器名称: $CONTAINER_NAME" + echo "访问地址: http://localhost:$PORT" + echo "环境变量: ENV_APP_PRO_FILE=$ENV_APP_PRO_FILE" + else + echo "服务启动失败,日志如下:" + docker logs $CONTAINER_NAME + exit 1 + fi +} + +# 删除服务 +remove_service() { + # 检查容器是否存在 + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "停止容器: $CONTAINER_NAME" + docker stop $CONTAINER_NAME >/dev/null + + echo "删除容器: $CONTAINER_NAME" + docker rm $CONTAINER_NAME >/dev/null + else + echo "容器 $CONTAINER_NAME 不存在" + fi +} + +# 查看日志 +show_logs() { + if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then + echo "查看 $CONTAINER_NAME 容器日志 (按 Ctrl+C 退出)..." + docker logs -f $CONTAINER_NAME + else + echo "容器 $CONTAINER_NAME 不存在" + fi +} + +# 主逻辑 +if [ $# -lt 1 ]; then + show_help + exit 1 +fi + +case "$1" in + deploy) + deploy_service + ;; + remove) + remove_service + ;; + logs) + show_logs + ;; + help) + show_help + ;; + *) + echo "无效的操作类型: $1" + show_help + exit 1 + ;; +esac diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/startApp.sh b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/startApp.sh new file mode 100644 index 0000000..adef435 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/target/classes/startApp.sh @@ -0,0 +1,50 @@ +#!/bin/sh +#cp /etc/hosts /etc/hosts.temp + +# 初始化环境变量(设置默认值,避免空变量) +APP_NAME=${APP_NAME:-"default-springboot-app"} # 默认服务名 +SKYWALKING_SERVER=${SKYWALKING_SERVER:-"localhost:11800"} # 默认SkyWalking服务地址 +ENV_APP_PRO_FILE=${ENV_APP_PRO_FILE:-"test"} # 默认环境为test + +# 初始化Java启动参数(包含是否使用-server模式) +java_base="java -javaagent:/opt/agent/skywalking-agent.jar -Dskywalking.agent.service_name=$APP_NAME" +export java_base="$java_base -Dskywalking.collector.backend_service=$SKYWALKING_SERVER" + +java_start="$java_base -jar" + +# 根据环境变量区分开发/生产环境配置 +if [ "$ENV_APP_PRO_FILE" = "prod" ]; then + # 生产环境JVM参数 + export JAVA_OPTS="-Xms1024m -Xmx4096m -Xmn512m -Xss512k -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m" + export JAVA_OPTS="$JAVA_OPTS -XX:+UseG1GC -XX:G1HeapRegionSize=32m -XX:G1ReservePercent=20" + export JAVA_OPTS="$JAVA_OPTS -XX:MaxGCPauseMillis=500 -XX:G1MixedGCCountTarget=10" + + export JAVA_OPTS="$JAVA_OPTS -verbose:gc -Xloggc:/var/log/app/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps" + export JAVA_OPTS="$JAVA_OPTS -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M" + + # 生产环境使用-server模式 + java_start="$java_base -jar -server" +else + # 开发环境JVM参数 + export JAVA_OPTS="-Xms512m -Xmx1024m -Xmn256m -Xss256k -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m" + export JAVA_OPTS="$JAVA_OPTS -XX:+UseConcMarkSweepGC -XX:+UseParNewGC" + export JAVA_OPTS="$JAVA_OPTS -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:CMSMaxAbortablePrecleanTime=5000" + export JAVA_OPTS="$JAVA_OPTS -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly" + export JAVA_OPTS="$JAVA_OPTS -verbose:gc -Xloggc:./logs/gc.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps" + # 开发环境开启远程调试 + export JAVA_OPTS="$JAVA_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005" +fi + +# 公共配置(编码、时区等) +export JAVA_OPTS="$JAVA_OPTS -Dfile.encoding=UTF-8 -Dconsole.encoding=UTF-8" +export JAVA_OPTS="$JAVA_OPTS -Djava.awt.headless=true" +export JAVA_OPTS="$JAVA_OPTS -Duser.language=zh -Duser.country=CN -Duser.timezone=Asia/Shanghai" + +# SpringBoot 环境配置 +export JAVA_OPTS="$JAVA_OPTS -Dspring.profiles.active=$ENV_APP_PRO_FILE" + +# 输出启动参数 +echo "启动参数:$java_start $JAVA_OPTS $ENV_APP_FILE_PATH" + +# 执行启动命令(用双引号包裹每个变量) +exec $java_start $JAVA_OPTS $ENV_APP_FILE_PATH \ No newline at end of file diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/target/maven-archiver/pom.properties b/itc-pcitc-demo/itc-pcitc-demo-service/target/maven-archiver/pom.properties new file mode 100644 index 0000000..1f99e1c --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Wed Sep 24 16:46:33 CST 2025 +version=2.0.4 +groupId=com.geg +artifactId=itc-pcitc-demo-service diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/itc-pcitc-demo/itc-pcitc-demo-service/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/itc-pcitc-demo/itc-pcitc-demo-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/itc-pcitc-demo/itc-pcitc-demo-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..df34b25 --- /dev/null +++ b/itc-pcitc-demo/itc-pcitc-demo-service/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,34 @@ +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\vo\DemoAppliancePageVo.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\relationManage\dto\UpdateDemoCustomerDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\service\impl\DemoApplianceServiceImpl.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\relationManage\service\impl\DemoCustomerManageServiceImpl.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\dto\UpdateTestfrom2Dto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\mapper\DemoApplianceMapper.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\common\TransactionConfig.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\dto\DemoAppliancePageDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\entity\Testfrom2.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\common\schedule\DemoSysncTask.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\relationManage\entity\DemoCustomer.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\dto\UpdateDemoApplianceDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\relationManage\vo\DemoCustomerPageVo.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\controller\Testfrom2Controller.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\vo\Testfrom2PageVo.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\relationManage\controller\DemoCustomerManageController.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\relationManage\service\IDemoCustomerManageService.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\service\IDemoApplianceService.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\service\ITestfrom2Service.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\relationManage\mapper\DemoCustomerMapper.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\vo\Testfrom2Vo.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\dto\Testfrom2PageDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\entity\DemoAppliance.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\service\impl\Testfrom2ServiceImpl.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\relationManage\dto\AddDemoCustomerDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\relationManage\vo\DemoCustomerVo.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\ITCDemoApplication.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\common\util\SpringContextUtil.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\mapper\Testfrom2Mapper.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\dto\AddTestfrom2Dto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\dto\AddDemoApplianceDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\controller\DemoApplianceController.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\prdManage\vo\DemoApplianceVo.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-demo\itc-pcitc-demo-service\src\main\java\com\xjrsoft\module\relationManage\dto\DemoCustomerPageDto.java diff --git a/itc-pcitc-demo/pom.xml b/itc-pcitc-demo/pom.xml new file mode 100644 index 0000000..3bb6309 --- /dev/null +++ b/itc-pcitc-demo/pom.xml @@ -0,0 +1,28 @@ + + + 4.0.0 + + + com.geg + itc-pcitc-back + ${revision} + + + itc-pcitc-demo + itc-pcitc-demo + itc-pcitc-demo + pom + + + itc-pcitc-demo-service + itc-pcitc-demo-api + + + + ${java.version} + ${java.version} + UTF-8 + + \ No newline at end of file diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/pom.xml b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/pom.xml new file mode 100644 index 0000000..196ebf9 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/pom.xml @@ -0,0 +1,118 @@ + + + 4.0.0 + + + com.geg + itc-pcitc-dependencies + ${revision} + + + itc-pcitc-dependencies-api + itc-pcitc-dependencies-api + + + ${java.version} + ${java.version} + 2.0.4 + + + + + com.geg + itc-ms-common-api + ${revision} + + + + com.geg + itc-ms-user-api + ${revision} + + + + com.geg + itc-ms-workflow-api + ${revision} + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + com.alibaba + easyexcel + + + + org.ssssssss + magic-api-spring-boot-starter + + + + com.alibaba + fastjson + + + + me.zhyd.oauth + JustAuth + + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + + + + + + src/main/java + + **/*.xml + + + + src/main/java + + **/*.yml + **/*.properties + **/*.xml + + false + + + src/main/resources + + **/*.yml + **/*.properties + **/*.xml + **/*.vm + **/*.ftl + **/*.jpg + **/*.png + **/*.xls + **/*.xlsx + + false + + + + \ No newline at end of file diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/JoinCaseType.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/JoinCaseType.java new file mode 100644 index 0000000..65e992a --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/JoinCaseType.java @@ -0,0 +1,7 @@ +package com.pictc.annotations.datalog; + +public enum JoinCaseType { + + FULL,NONE + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/JoinType.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/JoinType.java new file mode 100644 index 0000000..268e81a --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/JoinType.java @@ -0,0 +1,13 @@ +package com.pictc.annotations.datalog; + +/** + * @author 张福财 + * @date 2025年8月28日 下午6:00:10 + * @Description: 关联类型 ONE_ONE ONE_MANY + */ +public enum JoinType { + + ONE, + MANY + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/JoinValueType.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/JoinValueType.java new file mode 100644 index 0000000..597f3b9 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/JoinValueType.java @@ -0,0 +1,13 @@ +package com.pictc.annotations.datalog; + +/** + * @author 张福财 + * @date 2025年8月26日 上午9:18:35 + * @Description: 关联值类型 + */ +public enum JoinValueType { + + FEILD, //字段关联 + STATIC //字段等于静态值 + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/LogField.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/LogField.java new file mode 100644 index 0000000..f6de151 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/LogField.java @@ -0,0 +1,41 @@ +package com.pictc.annotations.datalog; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.springframework.core.annotation.AliasFor; + +/** + * @author 张福财 + * @date 2025年8月26日 下午5:33:01 + * @Description: 数据日志属性配置 + */ +@Target({ElementType.METHOD, ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +public @interface LogField { + + @AliasFor("name") + String value() default ""; + + /** + * @Description: 业务名称 + * @return String 返回类型 + */ + @AliasFor("value") + String name() default ""; + + /** + * @Description: 数据库字段 + * @return String 返回类型 + */ + String column() default ""; + + /** + * @Description: 位置 + * @return int 返回类型 + */ + int index() default 0; + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/LogJoin.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/LogJoin.java new file mode 100644 index 0000000..7b03ee5 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/LogJoin.java @@ -0,0 +1,63 @@ +package com.pictc.annotations.datalog; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author 张福财 + * @date 2025年8月26日 上午9:37:23 + * @Description: 关联关系 + */ +@Target({ElementType.METHOD, ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Inherited +public @interface LogJoin { + + /** + * @Description: 业务名称 + * @return String 返回类型 + */ + String name(); + + /** + * @Description: 关联对象 + * @return Class 返回类型 + */ + Class target(); + + /** + * @Description: 关联类型 + * @return JoinType 返回类型 + */ + JoinType type(); + + /** + * @Description: 级联类型:DEL(删除)、UPD(修改)、FULL(全部); + * @return JoinType 返回类型 + */ + JoinCaseType caseType() default JoinCaseType.FULL; + + /** + * @Description: 关联列 + * @return DataLogJoinColumn[] 返回类型 + */ + LogJoinColumn[] columns() default {}; + + /** + * @Description: 数据来源:默认通过target配置的表名去关联查询;如果sourceType = TQ 时配置查询ID + * @return String 返回类型 + */ + String source() default ""; + + /** + * @Description: TODO(这里用一句话描述这个方法的作用) + * @return + * @return QJoinSource 返回类型 + */ + SourceType sourceType() default SourceType.TABLE; + + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/LogJoinColumn.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/LogJoinColumn.java new file mode 100644 index 0000000..1b83476 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/LogJoinColumn.java @@ -0,0 +1,48 @@ +package com.pictc.annotations.datalog; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author 张福财 + * @date 2025年8月26日 上午9:37:45 + * @Description: 关联属性配置 + */ +@Target({ElementType.METHOD, ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Inherited +public @interface LogJoinColumn { + + /** + * @Description: 属性 + * @return String 返回类型 + */ + String field() default ""; + + /** + * @Description: 关联属性 + * @return String 返回类型 + */ + String relatedField() default ""; + + + /** + * @Description: 赋值方向 + * @return ValueDirectionType 返回类型 + */ + ValueDirectionType valueDirection() default ValueDirectionType.LEFT; + + /** + * @Description: 关联值类型:JoinValueType: FEILD【字段关联】、STATIC【字段等于静态值】 + * @return String 返回类型 + */ + JoinValueType valueType() default JoinValueType.FEILD; + + String staticValue() default ""; + + Class staticType() default String.class; + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/LogTable.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/LogTable.java new file mode 100644 index 0000000..cfb2884 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/LogTable.java @@ -0,0 +1,48 @@ +package com.pictc.annotations.datalog; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Inherited; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +import org.springframework.core.annotation.AliasFor; + +/** + * @author 张福财 + * @date 2025年8月25日 下午6:09:03 + * @Description: TODO(这里用一句话描述这个类的作用) + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Inherited +public @interface LogTable { + + /** + * @Description: 业务名称 + * @return String 返回类型 + */ + @AliasFor("name") + String value() default ""; + + + /** + * @Description: 业务名称 + * @return String 返回类型 + */ + @AliasFor("value") + String name() default ""; + + /** + * @Description: 表名或者查询ID + * @return String 返回类型 + */ + String source(); + + /** + * @Description: + * @return QJoinSource 返回类型 + */ + SourceType sourceType() default SourceType.TABLE; + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/SourceType.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/SourceType.java new file mode 100644 index 0000000..781e4c7 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/SourceType.java @@ -0,0 +1,13 @@ +package com.pictc.annotations.datalog; + +/** + * @author 张福财 + * @date 2025年8月28日 下午4:24:27 + * @Description: 数据来源,默认从关联表,获取从SQL配置表 + */ +public enum SourceType { + + TABLE, + TSQL + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/ValueDirectionType.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/ValueDirectionType.java new file mode 100644 index 0000000..75f6cc7 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/annotations/datalog/ValueDirectionType.java @@ -0,0 +1,13 @@ +package com.pictc.annotations.datalog; + +/** + * @author 张福财 + * @date 2025年8月28日 下午2:40:03 + * @Description: 赋值方向 + * 左边为主表 + * 右边为子表 + */ +public enum ValueDirectionType { + LEFT, //向左 + RIGHT +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/common/mybatis/JsonTypeHandler.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/common/mybatis/JsonTypeHandler.java new file mode 100644 index 0000000..d0c00f8 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/pictc/common/mybatis/JsonTypeHandler.java @@ -0,0 +1,115 @@ +package com.pictc.common.mybatis; + +import java.lang.reflect.Field; +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.List; +import org.apache.ibatis.type.JdbcType; +import org.apache.ibatis.type.MappedJdbcTypes; +import org.apache.ibatis.type.MappedTypes; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.serializer.SerializerFeature; +import com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler; + + +@MappedTypes({Object.class}) +@MappedJdbcTypes(JdbcType.VARCHAR) +public class JsonTypeHandler extends AbstractJsonTypeHandler { + + private boolean list; + + private Class entityClass; + + public JsonTypeHandler(Class type) { + list = isList(type); + } + + public JsonTypeHandler(Class type, Field field) { + list = isList(type); + try { + entityClass = getFeildFanClass(field, 0); + } catch (ClassNotFoundException e) { + e.printStackTrace(); + } + } + + @Override + public Object parse(String json) { + if(list) { + return JSON.parseArray(json,entityClass); + } + return JSON.parseObject(json,entityClass); + } + + @Override + public String toJson(Object obj) { + if(obj==null) return null; + return JSON.toJSONString(obj, SerializerFeature.WriteMapNullValue, + SerializerFeature.WriteNullListAsEmpty, SerializerFeature.WriteNullStringAsEmpty); + } + + /** + * 是否是list集合 + * */ + private boolean isList(Class klass) { + return hashClass(klass, List.class); + } + + /** + * klass是否实现了face类或接口 + * @author tanuki + * @param klass 要判断的类型 + * @param face 指定的类型 + * */ + private boolean hashClass(Class klass, Class face) { + if (klass.equals(face)) { + return true; + } else { + if (Object.class.equals(klass)) { + return false; + } + Class[] cls = klass.getInterfaces(); + for (int i = 0; i < cls.length; i++) { + if (hashClass(cls[i], face)) { + return true; + } + } + if (!klass.isInterface()) { + if (hashClass(klass.getSuperclass(), face)) { + return true; + } + } + } + return false; + } + + private Class getFeildFanClass(Field field,int index) throws ClassNotFoundException { + return getClass(getFeildFan(field, index)); + } + + /** + * Type 类型转 class + * */ + private Class getClass(Type type) throws ClassNotFoundException{ + String cStr=type.toString(); + if(cStr.indexOf("class ")==0){ + return Class.forName(cStr.substring(6, cStr.length())); + }else if(cStr.indexOf("interface ")==0){ + return Class.forName(cStr.substring(10, cStr.length())); + }else{ + if(cStr.indexOf("<")!=-1){ + return Class.forName(cStr.substring(0, cStr.indexOf("<"))); + } + return Class.forName(cStr.substring(0, cStr.length())); + } + } + + private Type getFeildFan(Field field,int index) { + Type type = field.getGenericType(); + if(type instanceof ParameterizedType){ + return ((ParameterizedType)type).getActualTypeArguments()[index]; + } + return field.getType(); + } + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/DataChangeLogDto.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/DataChangeLogDto.java new file mode 100644 index 0000000..10cd55b --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/DataChangeLogDto.java @@ -0,0 +1,100 @@ +package com.xjrsoft.module.datalog.vo; + +import java.io.Serializable; +import java.time.LocalDateTime; +import java.util.List; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.pictc.common.mybatis.JsonTypeHandler; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +/** + * 数据变更日志实体类 + * 用于记录数据库字段修改和实体删除操作 + */ +@ApiModel(value = "DataChangeLogDto对象", description = "数据变更日志") +@Data +@Accessors(chain = true) +public class DataChangeLogDto implements Serializable{ + + /** + * @Fields {todo}(用一句话描述这个变量表示什么) + */ + private static final long serialVersionUID = 1L; + + /** + * 日志ID(主键) + */ + @ApiModelProperty("主键") + private Long id; + + /** + * 父表ID,根节点# + */ + @ApiModelProperty("父表ID") + private String pid = "#"; + + /** + * 实体类名称(全类名) + */ + @ApiModelProperty("实体类名称(全类名)") + private String entityClassName; + + /** + * 实体类简称(简单类名) + */ + @ApiModelProperty("实体类简称(简单类名)") + private String entitySimpleName; + + /** + * 操作的实体ID(主键值) + */ + @ApiModelProperty("操作的实体ID(主键值)") + private Long entityId; + + /** + * 字段变更详情 + * key: 字段名 + * value: 包含旧值和新值的Map + */ + @TableField(typeHandler = JsonTypeHandler.class) + @ApiModelProperty("属性值记录") + private List fieldChanges; + + /** + * 操作类型:INSERT-新增,UPDATE-修改,DELETE-删除 + */ + @ApiModelProperty("操作类型:INSERT-新增,UPDATE-修改,DELETE-删除") + private OperationType operationType; + + /** + * 操作人ID + */ + @ApiModelProperty("操作人ID") + private String operatorId; + + /** + * 操作人姓名 + */ + @ApiModelProperty("操作人姓名") + private String operatorName; + + /** + * 操作时间 + */ + @ApiModelProperty("操作时间") + private LocalDateTime operationTime; + + /** + * 操作IP地址 + */ + @ApiModelProperty("操作IP地址") + private String operationIp; + + +} + diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/FieldChangeDto.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/FieldChangeDto.java new file mode 100644 index 0000000..ce61a06 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/FieldChangeDto.java @@ -0,0 +1,39 @@ +package com.xjrsoft.module.datalog.vo; + +import java.io.Serializable; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +@ApiModel(value = "FieldChangeDto对象", description = "数据变更字段记录") +@Data +@Accessors(chain = true) +public class FieldChangeDto implements Serializable{ + + private static final long serialVersionUID = 1L; + + + @ApiModelProperty("属性名称") + private String name; + + @ApiModelProperty("属性") + private String field; + + /** + * 旧值 + */ + @ApiModelProperty("旧值") + private Object oldValue; + + /** + * 新值 + */ + @ApiModelProperty("新值") + private Object newValue; + + + + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/OperationType.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/OperationType.java new file mode 100644 index 0000000..089993f --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/src/main/java/com/xjrsoft/module/datalog/vo/OperationType.java @@ -0,0 +1,8 @@ +package com.xjrsoft.module.datalog.vo; + +/** + * 操作类型枚举 + */ +public enum OperationType { + INSERT, UPDATE, DELETE +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/target/maven-archiver/pom.properties b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/target/maven-archiver/pom.properties new file mode 100644 index 0000000..c28db51 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Wed Sep 24 16:43:44 CST 2025 +version=2.0.4 +groupId=com.geg +artifactId=itc-pcitc-dependencies-api diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..fcb5d86 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-api/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,13 @@ +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\xjrsoft\module\datalog\vo\FieldChangeDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\xjrsoft\module\datalog\vo\OperationType.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\JoinCaseType.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\LogField.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\JoinValueType.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\LogJoin.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\JoinType.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\common\mybatis\JsonTypeHandler.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\xjrsoft\module\datalog\vo\DataChangeLogDto.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\ValueDirectionType.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\SourceType.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\LogTable.java +F:\ges-scm\code\dev\geg-gas-pcitc\itc-pcitc-dependencies\itc-pcitc-dependencies-api\src\main\java\com\pictc\annotations\datalog\LogJoinColumn.java diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/pom.xml b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/pom.xml new file mode 100644 index 0000000..53cc0a2 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/pom.xml @@ -0,0 +1,217 @@ + + + 4.0.0 + + + com.geg + itc-pcitc-dependencies + ${revision} + + + itc-pcitc-dependencies-service + itc-pcitc-dependencies-service + itc-pcitc-dependencies-service + + + ${java.version} + ${java.version} + + + + + com.geg + itc-ms-common-service + ${revision} + + + + com.geg + itc-pcitc-dependencies-api + ${revision} + + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + org.springframework.cloud + spring-cloud-starter-loadbalancer + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + org.springframework.boot + spring-boot-starter-jdbc + + + + redis.clients + jedis + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-config + + + + + org.springframework.cloud + spring-cloud-starter-bootstrap + + + + + com.alibaba.cloud + spring-cloud-starter-alibaba-sentinel + + + com.fasterxml.jackson.dataformat + jackson-dataformat-xml + + + + + + com.alibaba.csp + sentinel-datasource-nacos + + + + + com.github.yulichang + mybatis-plus-join + + + + com.cloud.govern + service-invoke-sdk + + + + org.freemarker + freemarker + + + + com.unfbx + chatgpt-java + + + org.slf4j + slf4j-simple + + + + + + tech.powerjob + powerjob-worker-spring-boot-starter + + + + me.zhyd.oauth + JustAuth + + + + org.keycloak + keycloak-authz-client + + + + com.microsoft.ews-java-api + ews-java-api + + + + tech.powerjob + powerjob-official-processors + + + + tech.powerjob + powerjob-worker + + + + org.springframework.boot + spring-boot-starter-test + test + + + + cn.smallbun.screw + screw-core + + + + io.github.openfeign + feign-okhttp + + + + com.belerweb + pinyin4j + + + + + + org.apache.maven.plugins + maven-surefire-plugin + + true + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + + + + + + src/main/java + + **/*.xml + + + + src/main/java + + **/*.yml + **/*.properties + **/*.xml + + false + + + src/main/resources + + **/* + + false + + + + \ No newline at end of file diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/cache/AbstractCache.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/cache/AbstractCache.java new file mode 100644 index 0000000..95f375f --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/cache/AbstractCache.java @@ -0,0 +1,16 @@ +package com.pictc.cache; + +public abstract class AbstractCache implements TanukiCache{ + + private final String cache_name; + + public AbstractCache(String name) { + this.cache_name=name; + } + + @Override + public String getCacheName() { + return cache_name; + } + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/cache/CacheFactory.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/cache/CacheFactory.java new file mode 100644 index 0000000..58b7bd1 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/cache/CacheFactory.java @@ -0,0 +1,13 @@ +package com.pictc.cache; + +public class CacheFactory{ + + public static final String PROVIDER="provider-name"; + + public static final String PROVIDER_CLASS="provider-classpath"; + + public static TanukiCache factory(String cacheName) { + return new DefaultCacheProvider(cacheName); + } + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/cache/DefaultCacheProvider.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/cache/DefaultCacheProvider.java new file mode 100644 index 0000000..982f95f --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/cache/DefaultCacheProvider.java @@ -0,0 +1,109 @@ +package com.pictc.cache; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.locks.Lock; +import java.util.concurrent.locks.ReadWriteLock; +import java.util.concurrent.locks.ReentrantReadWriteLock; + +public class DefaultCacheProvider extends AbstractCache implements TanukiCache{ + + private final HashMap cache; + + private final ReadWriteLock lock = new ReentrantReadWriteLock(); + + private final Lock readLock = lock.readLock(); + + private final Lock writeLock = lock.writeLock(); + + public DefaultCacheProvider(String cache_name) { + super(cache_name); + cache = new HashMap(); + } + + + @Override + public void save(K key, V value) { + writeLock.lock(); + try { + if(cache.containsKey(key)) cache.remove(key); + cache.put(key, value); + } finally { + writeLock.unlock(); + } + } + + + @Override + public void remove(K key) { + writeLock.lock(); + try { + cache.remove(key); + } finally { + writeLock.unlock(); + } + } + + + @Override + public V get(K key) { + readLock.lock(); + try { + return cache.get(key); + } finally { + readLock.unlock(); + } + } + + + @Override + public boolean containsKey(K key) { + readLock.lock(); + try { + return cache.containsKey(key); + } finally { + readLock.unlock(); + } + } + + + @Override + public void clear() { + writeLock.lock(); + try { + cache.clear(); + } finally { + writeLock.unlock(); + } + } + + @Override + public List values() { + return new ArrayList(cache.values()); + } + + @Override + public void save(K key, V value, long time, TimeUnit unit) { + writeLock.lock(); + try { + cache.put(key, value); + setExpire(key, time, unit); + } finally { + writeLock.unlock(); + } + } + + @Override + public Set keys() { + return cache.keySet(); + } + + @Override + public boolean setExpire(K key, long time, TimeUnit unit) { + // TODO Auto-generated method stub + return false; + } +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/cache/TanukiCache.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/cache/TanukiCache.java new file mode 100644 index 0000000..3f2e19b --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/cache/TanukiCache.java @@ -0,0 +1,29 @@ +package com.pictc.cache; + +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +public interface TanukiCache{ + + String getCacheName(); + + void save(K key,V value); + + void save(K key,V value,long time,TimeUnit unit); + + boolean setExpire(K key,long time,TimeUnit unit); + + void remove(K key); + + V get(K key); + + boolean containsKey(K key); + + List values(); + + Set keys(); + + void clear(); + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/DataLogDbConfig.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/DataLogDbConfig.java new file mode 100644 index 0000000..6afbba6 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/DataLogDbConfig.java @@ -0,0 +1,19 @@ +package com.pictc.config; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +import lombok.Data; + +@ConfigurationProperties("datalog.db") +@Data +public class DataLogDbConfig { + + private String url; + + private String username; + + private String password; + + private String driverClassName; + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/JdbcConfig.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/JdbcConfig.java new file mode 100644 index 0000000..1735923 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/JdbcConfig.java @@ -0,0 +1,66 @@ +package com.pictc.config; + +import java.sql.SQLException; +import javax.sql.DataSource; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import com.alibaba.druid.pool.DruidDataSource; +import com.pictc.jdbc.JdbcContextUtils; +import com.pictc.utils.StringUtils; + +@Configuration +public class JdbcConfig { + + @Value("${spring.datasource.dynamic.datasource.master.username:itc_dne}") + private String globalUsername; + + @Value("${spring.datasource.dynamic.datasource.master.password:itc_dne}") + private String globalPassword; + + @Value("${spring.datasource.dynamic.datasource.master.driver-class-name:com.kingbase8.Driver}") + private String globalDriver; + + @Bean + public JdbcContextUtils jdbcContextUtils() throws SQLException { + JdbcContextUtils contextUtils = new JdbcContextUtils(); + contextUtils.setLogSource(logDataSource()); + return contextUtils; + } + + @Bean + public DataLogDbConfig logDataDbConfig() { + return new DataLogDbConfig(); + } + + /** + * 额外的日志数据源配置 + */ + public DataSource logDataSource() throws SQLException { + DruidDataSource dataSource = new DruidDataSource(); + DataLogDbConfig dbConfig = logDataDbConfig(); + // 日志数据库连接信息 + dataSource.setUrl(dbConfig.getUrl()); + dataSource.setUsername(StringUtils.opt(dbConfig.getUsername(),globalUsername)); + dataSource.setPassword(StringUtils.opt(dbConfig.getPassword(),globalPassword)); + dataSource.setDriverClassName(StringUtils.opt(dbConfig.getDriverClassName(),globalDriver)); + + // 日志库连接池参数(可独立配置) + dataSource.setInitialSize(5); + dataSource.setMinIdle(3); + dataSource.setMaxActive(20); + dataSource.setMaxWait(20000); + dataSource.setTimeBetweenEvictionRunsMillis(45000); + dataSource.setMinEvictableIdleTimeMillis(1200000); + + // 连接验证 + dataSource.setValidationQuery("SELECT 1"); + dataSource.setTestWhileIdle(true); + + return dataSource; + } + + + + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/PcitcAutoConfig.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/PcitcAutoConfig.java new file mode 100644 index 0000000..b8cf565 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/PcitcAutoConfig.java @@ -0,0 +1,30 @@ +package com.pictc.config; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import com.pictc.utils.DataLogTools; +import com.pictc.utils.MybatisTools; +import com.pictc.utils.SpringTools; + +@Configuration +public class PcitcAutoConfig { + + @Bean + public SpringTools springTools() { + return new SpringTools(); + } + + @Bean + public MybatisTools mapperManager() { + return new MybatisTools(); + } + + + @Bean + public DataLogTools dataLogTools() { + return new DataLogTools(); + } + + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/ScanConfig.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/ScanConfig.java new file mode 100644 index 0000000..9ae2267 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/ScanConfig.java @@ -0,0 +1,87 @@ +package com.pictc.config; + +import java.io.IOException; +import java.io.InputStream; +import java.net.JarURLConnection; +import java.net.URL; +import java.util.Enumeration; +import java.util.Properties; +import java.util.jar.JarFile; +import java.util.zip.ZipEntry; + +import lombok.extern.slf4j.Slf4j; + +@Slf4j +public class ScanConfig { + + + public static final String AUTO_FILE_NAME="auto-scan.txt"; + + private static final String FILE_PROCOTOL="file"; + + private static final String JAR_PROCOTOL="jar"; + + private static ClassLoader getDefaultClassLoader() { + ClassLoader cl = null; + try { + cl = Thread.currentThread().getContextClassLoader(); + } + catch (Throwable ex) {} + if (cl == null) { + cl = ScanConfig.class.getClassLoader(); + if (cl == null) { + try { + cl = ClassLoader.getSystemClassLoader(); + } + catch (Throwable ex) {} + } + } + return cl; + } + + public static void scan(String name,ScanFilter filter) { + try { + Enumeration dirs = getDefaultClassLoader().getResources(name); + if(dirs!=null) { + while(dirs.hasMoreElements()) { + URL url = dirs.nextElement(); + if(FILE_PROCOTOL.equals(url.getProtocol())) { + filter.accept(readConf(url.openStream())); + }else if(JAR_PROCOTOL.equals(url.getProtocol())) { + JarFile jarFile = ((JarURLConnection)url.openConnection()).getJarFile(); + ZipEntry entry = jarFile.getEntry(name); + if(entry!=null) { + filter.accept(readConf(jarFile.getInputStream(entry))); + } + } + } + }else { + log.info("没有扫描到任何东西!"); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + private static Properties readConf(InputStream in) { + Properties pro = new Properties(); + try { + pro.load(in); + } catch (IOException e) { + e.printStackTrace(); + log.info("读取配置文件错误"); + } + return pro; + } + + public static void scanConfig(ScanFilter filter) { + scan(AUTO_FILE_NAME,filter); + } + + + public interface ScanFilter{ + + public void accept(Properties conf); + } + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/UniqueNameGenerator.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/UniqueNameGenerator.java new file mode 100644 index 0000000..55ab6e9 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/config/UniqueNameGenerator.java @@ -0,0 +1,12 @@ +package com.pictc.config; + +import org.springframework.beans.factory.config.BeanDefinition; +import org.springframework.context.annotation.AnnotationBeanNameGenerator; + +public class UniqueNameGenerator extends AnnotationBeanNameGenerator { + + @Override + protected String buildDefaultBeanName(BeanDefinition definition) { + return definition.getBeanClassName(); + } +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/ConverUtil.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/ConverUtil.java new file mode 100644 index 0000000..027ca6c --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/ConverUtil.java @@ -0,0 +1,105 @@ +package com.pictc.converts; + +import java.util.HashMap; +import java.util.Map; + +import com.pictc.converts.date.DateHandler; +import com.pictc.converts.date.LocalDateHandler; +import com.pictc.converts.date.LocalDateTimeHandler; +import com.pictc.converts.date.LocalTimeHandler; +import com.pictc.converts.date.TimeHandler; +import com.pictc.converts.date.TimestampHandler; +import com.pictc.converts.primitive.BigDecimalHandler; +import com.pictc.converts.primitive.BigIntegerHandler; +import com.pictc.converts.primitive.BooleanHandler; +import com.pictc.converts.primitive.ByteHandler; +import com.pictc.converts.primitive.CharacterHandler; +import com.pictc.converts.primitive.DoubleHandler; +import com.pictc.converts.primitive.EnumHandler; +import com.pictc.converts.primitive.FloatHandler; +import com.pictc.converts.primitive.IntegerHandler; +import com.pictc.converts.primitive.LongHandler; +import com.pictc.converts.primitive.ShortHandler; +import com.pictc.converts.primitive.StringHandler; +import com.pictc.utils.BeanUtils; +import com.pictc.utils.ClassUtils; + +import lombok.AccessLevel; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +@Slf4j +@NoArgsConstructor(access = AccessLevel.PRIVATE) +public class ConverUtil { + + private static Map, SuperHandler> handlers = new HashMap,SuperHandler>(); + + static { + Class[] hcls = new Class[] { DateHandler.class,TimestampHandler.class,TimeHandler.class, + LocalDateTimeHandler.class,LocalDateHandler.class,LocalTimeHandler.class, + BooleanHandler.class, ByteHandler.class, + DoubleHandler.class, FloatHandler.class, + IntegerHandler.class, LongHandler.class, ShortHandler.class, + StringHandler.class,CharacterHandler.class, + BigIntegerHandler.class,BigDecimalHandler.class }; + for (int i = 0; i < hcls.length; i++) { + try { + SuperHandler handler = BeanUtils.newInstance(hcls[i]); + Class[] classes = handler.getConverts(); + for (int j = 0; j < classes.length; j++) { + handlers.put(classes[j], handler); + } + } catch (Exception e) { + log.error("类型转换器初始化异常",e); + } + } + } + + + public static void register(Class cls) { + if (handlers.containsKey(cls)) { + return; + } + if(cls.isEnum()) { + handlers.put(cls, new EnumHandler(cls)); + return; + } + if (!ClassUtils.hashClass(cls, SuperHandler.class)) { + return; + } + TypeHandler handler; + try { + handler = BeanUtils.newInstance(cls); + handlers.put(cls, handler); + } catch (Exception e) { + log.error("注册类型转换器异常",e); + } + } + + + @SuppressWarnings("unchecked") + public static TypeHandler geTypeHandler(Class cls) { + if (!handlers.containsKey(cls)) { + register(cls); + } + return (TypeHandler) handlers.get(cls); + } + + //字符串 + @SuppressWarnings({ "rawtypes", "unchecked" }) + public static Object toJsonValue(Class klass,Object val){ + TypeHandler handler = geTypeHandler(klass); + return handler!=null?handler.convert(val):val; + } + + //字符串 + @SuppressWarnings("unchecked") + public static T jsonToValue(Class klass,Object val){ + TypeHandler handler = geTypeHandler(klass); + return handler!=null?handler.valueToObject(val):(T) val; + } + + +} + + diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/ConvertException.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/ConvertException.java new file mode 100644 index 0000000..f6a1a5d --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/ConvertException.java @@ -0,0 +1,22 @@ +package com.pictc.converts; + +public class ConvertException extends RuntimeException { + + /** + * + */ + private static final long serialVersionUID = 1L; + + public ConvertException(String message) { + super(message); + } + + public ConvertException(Class from,Object val,Class to) { + super(from.getName() + "类型 "+(val==null?"null":val.toString())+" 无法转换至-->" + to.getName()); + } + + public ConvertException(Throwable cause) { + super(cause); + } + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/ObjectHandler.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/ObjectHandler.java new file mode 100644 index 0000000..62787fc --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/ObjectHandler.java @@ -0,0 +1,30 @@ +package com.pictc.converts; + +public class ObjectHandler implements TypeHandler { + + private Class[] converts = new Class[] { Object.class }; + + @Override + public Object convert(Object value) { + return value; + } + + @Override + public Object valueToObject(Object val) { + if (val == null) { + return null; + } + return val; + } + + @Override + public boolean isType(Class type) { + return Object.class.equals(type); + } + + @Override + public Class[] getConverts() { + return converts; + } + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/SuperHandler.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/SuperHandler.java new file mode 100644 index 0000000..55f3f2e --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/SuperHandler.java @@ -0,0 +1,10 @@ +package com.pictc.converts; + + +public interface SuperHandler { + + boolean isType(Class type); + + Class[] getConverts(); + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/TypeHandler.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/TypeHandler.java new file mode 100644 index 0000000..a7d6ba4 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/TypeHandler.java @@ -0,0 +1,23 @@ +package com.pictc.converts; + +public interface TypeHandler extends SuperHandler{ + + boolean isType(Class type); + + Class[] getConverts(); + + /** + * 转换json时调用 + * @param + */ + Object convert(T value); + + /** + * json转换对象是调用 + * @param + */ + T valueToObject(Object val); + + public abstract class TypeHandlerVoid implements TypeHandler{} + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/DateHandler.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/DateHandler.java new file mode 100644 index 0000000..efc0ac7 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/DateHandler.java @@ -0,0 +1,49 @@ +package com.pictc.converts.date; + +import java.util.Date; + +import com.pictc.converts.ConvertException; +import com.pictc.converts.TypeHandler; + +public class DateHandler implements TypeHandler{ + + private Class[] converts=new Class[] {Date.class}; + + + @Override + public boolean isType(Class type) { + return Date.class.equals(type); + } + + @Override + public Class[] getConverts() { + return converts; + } + + @Override + public Object convert(Date value) { + if(value==null) { + return null; + } + return value.getTime(); + } + + @Override + public Date valueToObject(Object val) { + if(val==null) { + return null; + } + Class vcs=val.getClass(); + if(isType(vcs)) { + return Date.class.cast(val); + }else { + try { + return new Date(Long.valueOf(val.toString())); + } catch (Exception e) { + throw new ConvertException(vcs,val,Date.class); + } + } + } + + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/LocalDateHandler.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/LocalDateHandler.java new file mode 100644 index 0000000..b67dfc4 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/LocalDateHandler.java @@ -0,0 +1,50 @@ +package com.pictc.converts.date; + +import java.time.LocalDate; + +import com.pictc.converts.ConvertException; +import com.pictc.converts.TypeHandler; +import com.pictc.utils.DateUtils; + +public class LocalDateHandler implements TypeHandler{ + + private Class[] converts=new Class[] {LocalDate.class}; + + @Override + public boolean isType(Class type) { + return LocalDate.class.equals(type); + } + + @Override + public Class[] getConverts() { + return converts; + } + + @Override + public Object convert(LocalDate value) { + if(value==null) { + return null; + } + return DateUtils.format(value); + } + + @Override + public LocalDate valueToObject(Object val) { + if(val==null) { + return null; + } + Class vcs=val.getClass(); + if(isType(vcs)) { + return LocalDate.class.cast(val); + }else { + try { + return DateUtils.toLocalDate(val.toString()); + } catch (Exception e) { + throw new ConvertException(vcs,val,LocalDate.class); + } + } + } + + + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/LocalDateTimeHandler.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/LocalDateTimeHandler.java new file mode 100644 index 0000000..d4891ae --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/LocalDateTimeHandler.java @@ -0,0 +1,50 @@ +package com.pictc.converts.date; + +import java.time.LocalDateTime; + +import com.pictc.converts.ConvertException; +import com.pictc.converts.TypeHandler; +import com.pictc.utils.DateUtils; + +public class LocalDateTimeHandler implements TypeHandler{ + + private Class[] converts=new Class[] {LocalDateTime.class}; + + @Override + public boolean isType(Class type) { + return LocalDateTime.class.equals(type); + } + + @Override + public Class[] getConverts() { + return converts; + } + + @Override + public Object convert(LocalDateTime value) { + if(value==null) { + return null; + } + return DateUtils.format(value); + } + + @Override + public LocalDateTime valueToObject(Object val) { + if(val==null) { + return null; + } + Class vcs=val.getClass(); + if(isType(vcs)) { + return LocalDateTime.class.cast(val); + }else { + try { + return DateUtils.toLocalDateTime(val.toString()); + } catch (Exception e) { + throw new ConvertException(vcs,val,LocalDateTime.class); + } + } + } + + + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/LocalTimeHandler.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/LocalTimeHandler.java new file mode 100644 index 0000000..ca92993 --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/LocalTimeHandler.java @@ -0,0 +1,50 @@ +package com.pictc.converts.date; + +import java.time.LocalTime; + +import com.pictc.converts.ConvertException; +import com.pictc.converts.TypeHandler; +import com.pictc.utils.DateUtils; + +public class LocalTimeHandler implements TypeHandler{ + + private Class[] converts=new Class[] {LocalTime.class}; + + @Override + public boolean isType(Class type) { + return LocalTime.class.equals(type); + } + + @Override + public Class[] getConverts() { + return converts; + } + + @Override + public Object convert(LocalTime value) { + if(value==null) { + return null; + } + return DateUtils.format(value); + } + + @Override + public LocalTime valueToObject(Object val) { + if(val==null) { + return null; + } + Class vcs=val.getClass(); + if(isType(vcs)) { + return LocalTime.class.cast(val); + }else { + try { + return DateUtils.toLocalTime(val.toString()); + } catch (Exception e) { + throw new ConvertException(vcs,val,LocalTime.class); + } + } + } + + + +} diff --git a/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/TimeHandler.java b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/TimeHandler.java new file mode 100644 index 0000000..439087d --- /dev/null +++ b/itc-pcitc-dependencies/itc-pcitc-dependencies-service/src/main/java/com/pictc/converts/date/TimeHandler.java @@ -0,0 +1,43 @@ +package com.pictc.converts.date; + +import java.sql.Time; + +import com.pictc.converts.ConvertException; +import com.pictc.converts.TypeHandler; + +public class TimeHandler implements TypeHandler