diff --git a/pom.xml b/pom.xml index a8f1afd..452442d 100644 --- a/pom.xml +++ b/pom.xml @@ -71,7 +71,7 @@ dev - 192.168.110.209:18848 + 192.168.110.149:18848 DEFAULT_GROUP DEFAULT_GROUP nacos diff --git a/ruoyi-modules/pom.xml b/ruoyi-modules/pom.xml index 9fb79ce..a97fd08 100644 --- a/ruoyi-modules/pom.xml +++ b/ruoyi-modules/pom.xml @@ -15,6 +15,7 @@ ruoyi-resource ruoyi-workflow ruoyi-synjinlangyun + xny-ops ruoyi-modules diff --git a/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/controller/GenController.java b/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/controller/GenController.java index 1603749..c87ef1f 100644 --- a/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/controller/GenController.java +++ b/ruoyi-modules/ruoyi-gen/src/main/java/org/dromara/gen/controller/GenController.java @@ -195,7 +195,7 @@ public class GenController extends BaseController { */ private void genCode(HttpServletResponse response, byte[] data) throws IOException { response.reset(); - response.addHeader("Access-Control-Allow-Origin", "*"); +// response.addHeader("Access-Control-Allow-Origin", "*"); response.addHeader("Access-Control-Expose-Headers", "Content-Disposition"); response.setHeader("Content-Disposition", "attachment; filename=\"ruoyi.zip\""); response.addHeader("Content-Length", "" + data.length); diff --git a/ruoyi-modules/xny-ops/Dockerfile b/ruoyi-modules/xny-ops/Dockerfile new file mode 100644 index 0000000..5c8e48e --- /dev/null +++ b/ruoyi-modules/xny-ops/Dockerfile @@ -0,0 +1,27 @@ +# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/ +FROM bellsoft/liberica-openjdk-rocky:17.0.15-cds +#FROM bellsoft/liberica-openjdk-rocky:21.0.7-cds +#FROM findepi/graalvm:java17-native + +LABEL maintainer="Lion Li" + +RUN mkdir -p /xny/ops/logs \ + /xny/ops/temp \ + /ruoyi/skywalking/agent + +WORKDIR /xny/ops + +ENV SERVER_PORT=19301 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS="" + +EXPOSE ${SERVER_PORT} + +ADD ./target/xny-ops.jar ./app.jar + +SHELL ["/bin/bash", "-c"] + +ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \ + #-Dskywalking.agent.service_name=xny-ops \ + #-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar \ + -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC ${JAVA_OPTS} \ + -jar app.jar + diff --git a/ruoyi-modules/xny-ops/pom.xml b/ruoyi-modules/xny-ops/pom.xml new file mode 100644 index 0000000..74ecadd --- /dev/null +++ b/ruoyi-modules/xny-ops/pom.xml @@ -0,0 +1,117 @@ + + + + org.dromara + ruoyi-modules + ${revision} + + 4.0.0 + + xny-ops + + + xny-ops模块 + + + + + + org.dromara + ruoyi-common-nacos + + + + org.dromara + ruoyi-common-sentinel + + + + + org.dromara + ruoyi-common-log + + + + org.dromara + ruoyi-common-service-impl + + + + org.dromara + ruoyi-common-doc + + + + org.dromara + ruoyi-common-web + + + + org.dromara + ruoyi-common-mybatis + + + + org.dromara + ruoyi-common-dubbo + + + + org.dromara + ruoyi-common-seata + + + + org.dromara + ruoyi-common-idempotent + + + + org.dromara + ruoyi-common-tenant + + + + org.dromara + ruoyi-common-security + + + + org.dromara + ruoyi-common-translation + + + + org.dromara + ruoyi-common-sensitive + + + + org.dromara + ruoyi-common-encrypt + + + + + + + ${project.artifactId} + + + org.springframework.boot + spring-boot-maven-plugin + ${spring-boot.version} + + + + repackage + + + + + + + + diff --git a/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/controller/SubConstructionUserController.java b/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/controller/SubConstructionUserController.java new file mode 100644 index 0000000..78d8ca2 --- /dev/null +++ b/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/controller/SubConstructionUserController.java @@ -0,0 +1,106 @@ +package org.dromara.ops.personnel.controller; + +import java.util.List; + +import lombok.RequiredArgsConstructor; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.validation.constraints.*; +import cn.dev33.satoken.annotation.SaCheckPermission; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import org.dromara.common.idempotent.annotation.RepeatSubmit; +import org.dromara.common.log.annotation.Log; +import org.dromara.common.web.core.BaseController; +import org.dromara.common.mybatis.core.page.PageQuery; +import org.dromara.common.core.domain.R; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import org.dromara.common.log.enums.BusinessType; +import org.dromara.common.excel.utils.ExcelUtil; +import org.dromara.ops.personnel.domain.vo.SubConstructionUserVo; +import org.dromara.ops.personnel.domain.bo.SubConstructionUserBo; +import org.dromara.ops.personnel.service.ISubConstructionUserService; +import org.dromara.common.mybatis.core.page.TableDataInfo; + +/** + * 运维人员 + * 前端访问路由地址为:/personnel/constructionUser + * + * @author LionLi + * @date 2025-09-16 + */ +@Validated +@RequiredArgsConstructor +@RestController +@RequestMapping("/constructionUser") +public class SubConstructionUserController extends BaseController { + + private final ISubConstructionUserService subConstructionUserService; + + /** + * 查询运维人员列表 + */ + @SaCheckPermission("personnel:constructionUser:list") + @GetMapping("/list") + public TableDataInfo list(SubConstructionUserBo bo, PageQuery pageQuery) { + return subConstructionUserService.queryPageList(bo, pageQuery); + } + + /** + * 导出运维人员列表 + */ + @SaCheckPermission("personnel:constructionUser:export") + @Log(title = "运维人员", businessType = BusinessType.EXPORT) + @PostMapping("/export") + public void export(SubConstructionUserBo bo, HttpServletResponse response) { + List list = subConstructionUserService.queryList(bo); + ExcelUtil.exportExcel(list, "运维人员", SubConstructionUserVo.class, response); + } + + /** + * 获取运维人员详细信息 + * + * @param id 主键 + */ + @SaCheckPermission("personnel:constructionUser:query") + @GetMapping("/{id}") + public R getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return R.ok(subConstructionUserService.queryById(id)); + } + + /** + * 新增运维人员 + */ + @SaCheckPermission("personnel:constructionUser:add") + @Log(title = "运维人员", businessType = BusinessType.INSERT) + @RepeatSubmit() + @PostMapping() + public R add(@Validated(AddGroup.class) @RequestBody SubConstructionUserBo bo) { + return toAjax(subConstructionUserService.insertByBo(bo)); + } + + /** + * 修改运维人员 + */ + @SaCheckPermission("personnel:constructionUser:edit") + @Log(title = "运维人员", businessType = BusinessType.UPDATE) + @RepeatSubmit() + @PutMapping() + public R edit(@Validated(EditGroup.class) @RequestBody SubConstructionUserBo bo) { + return toAjax(subConstructionUserService.updateByBo(bo)); + } + + /** + * 删除运维人员 + * + * @param ids 主键串 + */ + @SaCheckPermission("personnel:constructionUser:remove") + @Log(title = "运维人员", businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public R remove(@NotEmpty(message = "主键不能为空") + @PathVariable("ids") Long[] ids) { + return toAjax(subConstructionUserService.deleteWithValidByIds(List.of(ids), true)); + } +} diff --git a/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/domain/SubConstructionUser.java b/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/domain/SubConstructionUser.java new file mode 100644 index 0000000..41cb7f0 --- /dev/null +++ b/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/domain/SubConstructionUser.java @@ -0,0 +1,203 @@ +package org.dromara.ops.personnel.domain; + +import org.dromara.common.mybatis.core.domain.BaseEntity; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.EqualsAndHashCode; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import java.io.Serial; + +/** + * 运维人员对象 sub_construction_user + * + * @author LionLi + * @date 2025-09-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@TableName("sub_construction_user") +public class SubConstructionUser extends BaseEntity { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * + */ + @TableId(value = "id") + private Long id; + + /** + * 人脸照 + */ + private String facePic; + + /** + * 系统用户id + */ + private Long sysUserId; + + /** + * 人员姓名 + */ + private String userName; + + /** + * 项目id + */ + private Long projectId; + + /** + * 分包公司id + */ + private Long contractorId; + + /** + * 班组id + */ + private Long teamId; + + /** + * 班组名称 + */ + private String teamName; + + /** + * 状态(0在职 1离职) + */ + private String status; + + /** + * 联系电话 + */ + private String phone; + + /** + * 性别(0:保密 1:男 2女) + */ + private String sex; + + /** + * 民族 + */ + private String nation; + + /** + * 身份证正面图片 + */ + private String sfzFrontPic; + + /** + * 身份证背面图片 + */ + private String sfzBackPic; + + /** + * 身份证号码 + */ + private String sfzNumber; + + /** + * 身份证有效开始期 + */ + private Date sfzStart; + + /** + * 身份证有效结束期 + */ + private Date sfzEnd; + + /** + * 身份证地址 + */ + private String sfzSite; + + /** + * 身份证出生日期 + */ + private Date sfzBirth; + + /** + * 籍贯 + */ + private String nativePlace; + + /** + * 银行卡图片 + */ + private String yhkPic; + + /** + * 银行卡号 + */ + private String yhkNumber; + + /** + * 开户行 + */ + private String yhkOpeningBank; + + /** + * 持卡人 + */ + private String yhkCardholder; + + /** + * 工种(字典type_of_work) + */ + private String typeOfWork; + + /** + * 工资计量单位 + */ + private String wageMeasureUnit; + + /** + * 特种作业证图片 + */ + private String specialWorkPic; + + /** + * 打卡(0启用打卡 1禁止打卡) + */ + private String clock; + + /** + * 入场时间 + */ + private String entryDate; + + /** + * 离场时间 + */ + private String leaveDate; + + /** + * 薪水 + */ + private Long salary; + + /** + * 用户角色(1=普通用户,2=管理员) + */ + private String userRole; + + /** + * 退场状态(0未退场 1退场未提交材料 2已退场) + */ + private String exitStatus; + + /** + * 首次进入项目的时间 + */ + private Date firstDate; + + /** + * 备注 + */ + private String remark; + + +} diff --git a/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/domain/bo/SubConstructionUserBo.java b/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/domain/bo/SubConstructionUserBo.java new file mode 100644 index 0000000..7be69af --- /dev/null +++ b/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/domain/bo/SubConstructionUserBo.java @@ -0,0 +1,230 @@ +package org.dromara.ops.personnel.domain.bo; + +import org.dromara.ops.personnel.domain.SubConstructionUser; +import org.dromara.common.mybatis.core.domain.BaseEntity; +import org.dromara.common.core.validate.AddGroup; +import org.dromara.common.core.validate.EditGroup; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import lombok.EqualsAndHashCode; +import jakarta.validation.constraints.*; +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +/** + * 运维人员业务对象 sub_construction_user + * + * @author LionLi + * @date 2025-09-16 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@AutoMapper(target = SubConstructionUser.class, reverseConvertGenerate = false) +public class SubConstructionUserBo extends BaseEntity { + + /** + * + */ + private Long id; + + /** + * 人脸照 + */ + @NotBlank(message = "人脸照不能为空", groups = { AddGroup.class, EditGroup.class }) + private String facePic; + + /** + * 系统用户id + */ + @NotNull(message = "系统用户id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long sysUserId; + + /** + * 人员姓名 + */ + @NotBlank(message = "人员姓名不能为空", groups = { AddGroup.class, EditGroup.class }) + private String userName; + + /** + * 项目id + */ + @NotNull(message = "项目id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long projectId; + + /** + * 分包公司id + */ + @NotNull(message = "分包公司id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long contractorId; + + /** + * 班组id + */ + @NotNull(message = "班组id不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long teamId; + + /** + * 班组名称 + */ + @NotBlank(message = "班组名称不能为空", groups = { AddGroup.class, EditGroup.class }) + private String teamName; + + /** + * 状态(0在职 1离职) + */ + private String status; + + /** + * 联系电话 + */ + @NotBlank(message = "联系电话不能为空", groups = { AddGroup.class, EditGroup.class }) + private String phone; + + /** + * 性别(0:保密 1:男 2女) + */ + private String sex; + + /** + * 民族 + */ + @NotBlank(message = "民族不能为空", groups = { AddGroup.class, EditGroup.class }) + private String nation; + + /** + * 身份证正面图片 + */ + @NotBlank(message = "身份证正面图片不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sfzFrontPic; + + /** + * 身份证背面图片 + */ + @NotBlank(message = "身份证背面图片不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sfzBackPic; + + /** + * 身份证号码 + */ + @NotBlank(message = "身份证号码不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sfzNumber; + + /** + * 身份证有效开始期 + */ + @NotNull(message = "身份证有效开始期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date sfzStart; + + /** + * 身份证有效结束期 + */ + @NotNull(message = "身份证有效结束期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date sfzEnd; + + /** + * 身份证地址 + */ + @NotBlank(message = "身份证地址不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sfzSite; + + /** + * 身份证出生日期 + */ + @NotNull(message = "身份证出生日期不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date sfzBirth; + + /** + * 籍贯 + */ + @NotBlank(message = "籍贯不能为空", groups = { AddGroup.class, EditGroup.class }) + private String nativePlace; + + /** + * 银行卡图片 + */ + @NotBlank(message = "银行卡图片不能为空", groups = { AddGroup.class, EditGroup.class }) + private String yhkPic; + + /** + * 银行卡号 + */ + @NotBlank(message = "银行卡号不能为空", groups = { AddGroup.class, EditGroup.class }) + private String yhkNumber; + + /** + * 开户行 + */ + @NotBlank(message = "开户行不能为空", groups = { AddGroup.class, EditGroup.class }) + private String yhkOpeningBank; + + /** + * 持卡人 + */ + @NotBlank(message = "持卡人不能为空", groups = { AddGroup.class, EditGroup.class }) + private String yhkCardholder; + + /** + * 工种(字典type_of_work) + */ + @NotBlank(message = "工种(字典type_of_work)不能为空", groups = { AddGroup.class, EditGroup.class }) + private String typeOfWork; + + /** + * 工资计量单位 + */ + @NotBlank(message = "工资计量单位不能为空", groups = { AddGroup.class, EditGroup.class }) + private String wageMeasureUnit; + + /** + * 特种作业证图片 + */ + @NotBlank(message = "特种作业证图片不能为空", groups = { AddGroup.class, EditGroup.class }) + private String specialWorkPic; + + /** + * 打卡(0启用打卡 1禁止打卡) + */ + private String clock; + + /** + * 入场时间 + */ + @NotBlank(message = "入场时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private String entryDate; + + /** + * 离场时间 + */ + @NotBlank(message = "离场时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private String leaveDate; + + /** + * 薪水 + */ + @NotNull(message = "薪水不能为空", groups = { AddGroup.class, EditGroup.class }) + private Long salary; + + /** + * 用户角色(1=普通用户,2=管理员) + */ + private String userRole; + + /** + * 退场状态(0未退场 1退场未提交材料 2已退场) + */ + private String exitStatus; + + /** + * 首次进入项目的时间 + */ + @NotNull(message = "首次进入项目的时间不能为空", groups = { AddGroup.class, EditGroup.class }) + private Date firstDate; + + /** + * 备注 + */ + @NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class }) + private String remark; + + +} diff --git a/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/domain/vo/SubConstructionUserVo.java b/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/domain/vo/SubConstructionUserVo.java new file mode 100644 index 0000000..4740294 --- /dev/null +++ b/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/domain/vo/SubConstructionUserVo.java @@ -0,0 +1,246 @@ +package org.dromara.ops.personnel.domain.vo; + +import java.util.Date; +import com.fasterxml.jackson.annotation.JsonFormat; + +import cn.idev.excel.annotation.ExcelIgnoreUnannotated; +import cn.idev.excel.annotation.ExcelProperty; +import org.dromara.common.excel.annotation.ExcelDictFormat; +import org.dromara.common.excel.convert.ExcelDictConvert; +import io.github.linpeilie.annotations.AutoMapper; +import lombok.Data; +import org.dromara.ops.personnel.domain.SubConstructionUser; + +import java.io.Serial; +import java.io.Serializable; +import java.util.Date; + + + +/** + * 运维人员视图对象 sub_construction_user + * + * @author LionLi + * @date 2025-09-16 + */ +@Data +@ExcelIgnoreUnannotated +@AutoMapper(target = SubConstructionUser.class) +public class SubConstructionUserVo implements Serializable { + + @Serial + private static final long serialVersionUID = 1L; + + /** + * + */ + @ExcelProperty(value = "") + private Long id; + + /** + * 人脸照 + */ + @ExcelProperty(value = "人脸照") + private String facePic; + + /** + * 系统用户id + */ + @ExcelProperty(value = "系统用户id") + private Long sysUserId; + + /** + * 人员姓名 + */ + @ExcelProperty(value = "人员姓名") + private String userName; + + /** + * 项目id + */ + @ExcelProperty(value = "项目id") + private Long projectId; + + /** + * 分包公司id + */ + @ExcelProperty(value = "分包公司id") + private Long contractorId; + + /** + * 班组id + */ + @ExcelProperty(value = "班组id") + private Long teamId; + + /** + * 班组名称 + */ + @ExcelProperty(value = "班组名称") + private String teamName; + + /** + * 状态(0在职 1离职) + */ + @ExcelProperty(value = "状态", converter = ExcelDictConvert.class) + @ExcelDictFormat(readConverterExp = "0=在职,1=离职") + private String status; + + /** + * 联系电话 + */ + @ExcelProperty(value = "联系电话") + private String phone; + + /** + * 性别(0:保密 1:男 2女) + */ + @ExcelProperty(value = "性别(0:保密 1:男 2女)") + private String sex; + + /** + * 民族 + */ + @ExcelProperty(value = "民族") + private String nation; + + /** + * 身份证正面图片 + */ + @ExcelProperty(value = "身份证正面图片") + private String sfzFrontPic; + + /** + * 身份证背面图片 + */ + @ExcelProperty(value = "身份证背面图片") + private String sfzBackPic; + + /** + * 身份证号码 + */ + @ExcelProperty(value = "身份证号码") + private String sfzNumber; + + /** + * 身份证有效开始期 + */ + @ExcelProperty(value = "身份证有效开始期") + private Date sfzStart; + + /** + * 身份证有效结束期 + */ + @ExcelProperty(value = "身份证有效结束期") + private Date sfzEnd; + + /** + * 身份证地址 + */ + @ExcelProperty(value = "身份证地址") + private String sfzSite; + + /** + * 身份证出生日期 + */ + @ExcelProperty(value = "身份证出生日期") + private Date sfzBirth; + + /** + * 籍贯 + */ + @ExcelProperty(value = "籍贯") + private String nativePlace; + + /** + * 银行卡图片 + */ + @ExcelProperty(value = "银行卡图片") + private String yhkPic; + + /** + * 银行卡号 + */ + @ExcelProperty(value = "银行卡号") + private String yhkNumber; + + /** + * 开户行 + */ + @ExcelProperty(value = "开户行") + private String yhkOpeningBank; + + /** + * 持卡人 + */ + @ExcelProperty(value = "持卡人") + private String yhkCardholder; + + /** + * 工种(字典type_of_work) + */ + @ExcelProperty(value = "工种(字典type_of_work)") + private String typeOfWork; + + /** + * 工资计量单位 + */ + @ExcelProperty(value = "工资计量单位") + private String wageMeasureUnit; + + /** + * 特种作业证图片 + */ + @ExcelProperty(value = "特种作业证图片") + private String specialWorkPic; + + /** + * 打卡(0启用打卡 1禁止打卡) + */ + @ExcelProperty(value = "打卡(0启用打卡 1禁止打卡)") + private String clock; + + /** + * 入场时间 + */ + @ExcelProperty(value = "入场时间") + private String entryDate; + + /** + * 离场时间 + */ + @ExcelProperty(value = "离场时间") + private String leaveDate; + + /** + * 薪水 + */ + @ExcelProperty(value = "薪水") + private Long salary; + + /** + * 用户角色(1=普通用户,2=管理员) + */ + @ExcelProperty(value = "用户角色(1=普通用户,2=管理员)") + private String userRole; + + /** + * 退场状态(0未退场 1退场未提交材料 2已退场) + */ + @ExcelProperty(value = "退场状态(0未退场 1退场未提交材料 2已退场)") + private String exitStatus; + + /** + * 首次进入项目的时间 + */ + @ExcelProperty(value = "首次进入项目的时间") + private Date firstDate; + + /** + * 备注 + */ + @ExcelProperty(value = "备注") + private String remark; + + +} diff --git a/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/mapper/SubConstructionUserMapper.java b/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/mapper/SubConstructionUserMapper.java new file mode 100644 index 0000000..5774045 --- /dev/null +++ b/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/mapper/SubConstructionUserMapper.java @@ -0,0 +1,15 @@ +package org.dromara.ops.personnel.mapper; + +import org.dromara.ops.personnel.domain.SubConstructionUser; +import org.dromara.ops.personnel.domain.vo.SubConstructionUserVo; +import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; + +/** + * 运维人员Mapper接口 + * + * @author LionLi + * @date 2025-09-16 + */ +public interface SubConstructionUserMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/service/impl/SubConstructionUserServiceImpl.java b/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/service/impl/SubConstructionUserServiceImpl.java new file mode 100644 index 0000000..efd0b60 --- /dev/null +++ b/ruoyi-modules/xny-ops/src/main/java/org/dromara/ops/personnel/service/impl/SubConstructionUserServiceImpl.java @@ -0,0 +1,164 @@ +package org.dromara.ops.personnel.service.impl; + +import org.dromara.common.core.utils.MapstructUtils; +import org.dromara.common.core.utils.StringUtils; +import org.dromara.common.mybatis.core.page.TableDataInfo; +import org.dromara.common.mybatis.core.page.PageQuery; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.dromara.ops.personnel.domain.bo.SubConstructionUserBo; +import org.dromara.ops.personnel.domain.vo.SubConstructionUserVo; +import org.dromara.ops.personnel.domain.SubConstructionUser; +import org.dromara.ops.personnel.mapper.SubConstructionUserMapper; +import org.dromara.ops.personnel.service.ISubConstructionUserService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 运维人员Service业务层处理 + * + * @author LionLi + * @date 2025-09-16 + */ +@Slf4j +@RequiredArgsConstructor +@Service +public class SubConstructionUserServiceImpl implements ISubConstructionUserService { + + private final SubConstructionUserMapper baseMapper; + + /** + * 查询运维人员 + * + * @param id 主键 + * @return 运维人员 + */ + @Override + public SubConstructionUserVo queryById(Long id){ + return baseMapper.selectVoById(id); + } + + /** + * 分页查询运维人员列表 + * + * @param bo 查询条件 + * @param pageQuery 分页参数 + * @return 运维人员分页列表 + */ + @Override + public TableDataInfo queryPageList(SubConstructionUserBo bo, PageQuery pageQuery) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + return TableDataInfo.build(result); + } + + /** + * 查询符合条件的运维人员列表 + * + * @param bo 查询条件 + * @return 运维人员列表 + */ + @Override + public List queryList(SubConstructionUserBo bo) { + LambdaQueryWrapper lqw = buildQueryWrapper(bo); + return baseMapper.selectVoList(lqw); + } + + private LambdaQueryWrapper buildQueryWrapper(SubConstructionUserBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.orderByAsc(SubConstructionUser::getId); + lqw.eq(StringUtils.isNotBlank(bo.getFacePic()), SubConstructionUser::getFacePic, bo.getFacePic()); + lqw.eq(bo.getSysUserId() != null, SubConstructionUser::getSysUserId, bo.getSysUserId()); + lqw.like(StringUtils.isNotBlank(bo.getUserName()), SubConstructionUser::getUserName, bo.getUserName()); + lqw.eq(bo.getProjectId() != null, SubConstructionUser::getProjectId, bo.getProjectId()); + lqw.eq(bo.getContractorId() != null, SubConstructionUser::getContractorId, bo.getContractorId()); + lqw.eq(bo.getTeamId() != null, SubConstructionUser::getTeamId, bo.getTeamId()); + lqw.like(StringUtils.isNotBlank(bo.getTeamName()), SubConstructionUser::getTeamName, bo.getTeamName()); + lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SubConstructionUser::getStatus, bo.getStatus()); + lqw.eq(StringUtils.isNotBlank(bo.getPhone()), SubConstructionUser::getPhone, bo.getPhone()); + lqw.eq(StringUtils.isNotBlank(bo.getSex()), SubConstructionUser::getSex, bo.getSex()); + lqw.eq(StringUtils.isNotBlank(bo.getNation()), SubConstructionUser::getNation, bo.getNation()); + lqw.eq(StringUtils.isNotBlank(bo.getSfzFrontPic()), SubConstructionUser::getSfzFrontPic, bo.getSfzFrontPic()); + lqw.eq(StringUtils.isNotBlank(bo.getSfzBackPic()), SubConstructionUser::getSfzBackPic, bo.getSfzBackPic()); + lqw.eq(StringUtils.isNotBlank(bo.getSfzNumber()), SubConstructionUser::getSfzNumber, bo.getSfzNumber()); + lqw.eq(bo.getSfzStart() != null, SubConstructionUser::getSfzStart, bo.getSfzStart()); + lqw.eq(bo.getSfzEnd() != null, SubConstructionUser::getSfzEnd, bo.getSfzEnd()); + lqw.eq(StringUtils.isNotBlank(bo.getSfzSite()), SubConstructionUser::getSfzSite, bo.getSfzSite()); + lqw.eq(bo.getSfzBirth() != null, SubConstructionUser::getSfzBirth, bo.getSfzBirth()); + lqw.eq(StringUtils.isNotBlank(bo.getNativePlace()), SubConstructionUser::getNativePlace, bo.getNativePlace()); + lqw.eq(StringUtils.isNotBlank(bo.getYhkPic()), SubConstructionUser::getYhkPic, bo.getYhkPic()); + lqw.eq(StringUtils.isNotBlank(bo.getYhkNumber()), SubConstructionUser::getYhkNumber, bo.getYhkNumber()); + lqw.eq(StringUtils.isNotBlank(bo.getYhkOpeningBank()), SubConstructionUser::getYhkOpeningBank, bo.getYhkOpeningBank()); + lqw.eq(StringUtils.isNotBlank(bo.getYhkCardholder()), SubConstructionUser::getYhkCardholder, bo.getYhkCardholder()); + lqw.eq(StringUtils.isNotBlank(bo.getTypeOfWork()), SubConstructionUser::getTypeOfWork, bo.getTypeOfWork()); + lqw.eq(StringUtils.isNotBlank(bo.getWageMeasureUnit()), SubConstructionUser::getWageMeasureUnit, bo.getWageMeasureUnit()); + lqw.eq(StringUtils.isNotBlank(bo.getSpecialWorkPic()), SubConstructionUser::getSpecialWorkPic, bo.getSpecialWorkPic()); + lqw.eq(StringUtils.isNotBlank(bo.getClock()), SubConstructionUser::getClock, bo.getClock()); + lqw.eq(StringUtils.isNotBlank(bo.getEntryDate()), SubConstructionUser::getEntryDate, bo.getEntryDate()); + lqw.eq(StringUtils.isNotBlank(bo.getLeaveDate()), SubConstructionUser::getLeaveDate, bo.getLeaveDate()); + lqw.eq(bo.getSalary() != null, SubConstructionUser::getSalary, bo.getSalary()); + lqw.eq(StringUtils.isNotBlank(bo.getUserRole()), SubConstructionUser::getUserRole, bo.getUserRole()); + lqw.eq(StringUtils.isNotBlank(bo.getExitStatus()), SubConstructionUser::getExitStatus, bo.getExitStatus()); + lqw.eq(bo.getFirstDate() != null, SubConstructionUser::getFirstDate, bo.getFirstDate()); + return lqw; + } + + /** + * 新增运维人员 + * + * @param bo 运维人员 + * @return 是否新增成功 + */ + @Override + public Boolean insertByBo(SubConstructionUserBo bo) { + SubConstructionUser add = MapstructUtils.convert(bo, SubConstructionUser.class); + validEntityBeforeSave(add); + boolean flag = baseMapper.insert(add) > 0; + if (flag) { + bo.setId(add.getId()); + } + return flag; + } + + /** + * 修改运维人员 + * + * @param bo 运维人员 + * @return 是否修改成功 + */ + @Override + public Boolean updateByBo(SubConstructionUserBo bo) { + SubConstructionUser update = MapstructUtils.convert(bo, SubConstructionUser.class); + validEntityBeforeSave(update); + return baseMapper.updateById(update) > 0; + } + + /** + * 保存前的数据校验 + */ + private void validEntityBeforeSave(SubConstructionUser entity){ + //TODO 做一些数据校验,如唯一约束 + } + + /** + * 校验并批量删除运维人员信息 + * + * @param ids 待删除的主键集合 + * @param isValid 是否进行有效性校验 + * @return 是否删除成功 + */ + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return baseMapper.deleteByIds(ids) > 0; + } +} diff --git a/ruoyi-modules/xny-ops/src/main/resources/application.yml b/ruoyi-modules/xny-ops/src/main/resources/application.yml new file mode 100644 index 0000000..53ebc66 --- /dev/null +++ b/ruoyi-modules/xny-ops/src/main/resources/application.yml @@ -0,0 +1,34 @@ +# Tomcat +server: + port: 9203 + +# Spring +spring: + application: + # 应用名称 + name: xny-ops + profiles: + # 环境配置 + active: @profiles.active@ + +--- # nacos 配置 +spring: + cloud: + nacos: + # nacos 服务地址 + server-addr: @nacos.server@ + username: @nacos.username@ + password: @nacos.password@ + discovery: + # 注册组 + group: @nacos.discovery.group@ + namespace: ${spring.profiles.active} + config: + # 配置组 + group: @nacos.config.group@ + namespace: ${spring.profiles.active} + config: + import: + - optional:nacos:application-common.yml + - optional:nacos:datasource.yml + - optional:nacos:${spring.application.name}.yml diff --git a/ruoyi-modules/xny-ops/src/main/resources/banner.txt b/ruoyi-modules/xny-ops/src/main/resources/banner.txt new file mode 100644 index 0000000..fbd45f5 --- /dev/null +++ b/ruoyi-modules/xny-ops/src/main/resources/banner.txt @@ -0,0 +1,10 @@ +Spring Boot Version: ${spring-boot.version} +Spring Application Name: ${spring.application.name} + _ _ + (_) | | + _ __ _ _ ___ _ _ _ ______ ___ _ _ ___ | |_ ___ _ __ ___ +| '__|| | | | / _ \ | | | || ||______|/ __|| | | |/ __|| __| / _ \| '_ ` _ \ +| | | |_| || (_) || |_| || | \__ \| |_| |\__ \| |_ | __/| | | | | | +|_| \__,_| \___/ \__, ||_| |___/ \__, ||___/ \__| \___||_| |_| |_| + __/ | __/ | + |___/ |___/ \ No newline at end of file diff --git a/ruoyi-modules/xny-ops/src/main/resources/logback-plus.xml b/ruoyi-modules/xny-ops/src/main/resources/logback-plus.xml new file mode 100644 index 0000000..00d3089 --- /dev/null +++ b/ruoyi-modules/xny-ops/src/main/resources/logback-plus.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + ${console.log.pattern} + utf-8 + + + + + + + + + + + + + + +