分包公司、施工人员、项目班组、项目班组成员模块基本增删改查功能

This commit is contained in:
lcj
2025-03-07 15:04:01 +08:00
parent 86d6bc1d01
commit ceca1bf417
54 changed files with 4500 additions and 248 deletions

View File

@ -75,7 +75,7 @@ public interface IBusMaterialsInventoryService extends IService<BusMaterialsInve
* @param MaterialsInventory 材料出/入库对象
* @return 材料出/入库视图对象
*/
BusMaterialsInventoryVo getMaterialsInventoryVo(BusMaterialsInventory MaterialsInventory);
BusMaterialsInventoryVo getVo(BusMaterialsInventory MaterialsInventory);
/**
* 构建查询条件封装
@ -91,6 +91,6 @@ public interface IBusMaterialsInventoryService extends IService<BusMaterialsInve
* @param materialsInventoryPage 材料出/入库分页对象
* @return 材料出/入库分页对象视图
*/
Page<BusMaterialsInventoryVo> getMaterialsInventoryVoPage(Page<BusMaterialsInventory> materialsInventoryPage);
Page<BusMaterialsInventoryVo> getVoPage(Page<BusMaterialsInventory> materialsInventoryPage);
}

View File

@ -139,7 +139,7 @@ public class BusCompanyServiceImpl extends ServiceImpl<BusCompanyMapper, BusComp
queryWrapper.eq(BusCompany::getCompanyName, companyName);
long count = this.count(queryWrapper);
if (count > 0) {
throw new ServiceException("项目名重复", HttpStatus.BAD_REQUEST);
throw new ServiceException("公司名重复", HttpStatus.BAD_REQUEST);
}
if (projectId == null) {
throw new ServiceException("项目 id 不能为空", HttpStatus.BAD_REQUEST);

View File

@ -59,7 +59,7 @@ public class BusMaterialsInventoryServiceImpl extends ServiceImpl<BusMaterialsIn
if (materialsInventory == null) {
throw new ServiceException("材料出/入库信息不存在", HttpStatus.NOT_FOUND);
}
return this.getMaterialsInventoryVo(materialsInventory);
return this.getVo(materialsInventory);
}
/**
@ -74,7 +74,7 @@ public class BusMaterialsInventoryServiceImpl extends ServiceImpl<BusMaterialsIn
long size = req.getPageSize();
// 查询数据库
Page<BusMaterialsInventory> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
return this.getMaterialsInventoryVoPage(result);
return this.getVoPage(result);
}
/**
@ -87,7 +87,7 @@ public class BusMaterialsInventoryServiceImpl extends ServiceImpl<BusMaterialsIn
public List<BusMaterialsInventoryVo> queryList(MaterialsInventoryQueryReq req) {
QueryWrapper<BusMaterialsInventory> queryWrapper = this.getQueryWrapper(req);
List<BusMaterialsInventory> list = this.list(queryWrapper);
return list.stream().map(this::getMaterialsInventoryVo).toList();
return list.stream().map(this::getVo).toList();
}
/**
@ -176,19 +176,19 @@ public class BusMaterialsInventoryServiceImpl extends ServiceImpl<BusMaterialsIn
/**
* 获取材料出/入库视图对象
*
* @param MaterialsInventory 材料出/入库对象
* @param materialsInventory 材料出/入库对象
* @return 材料出/入库视图对象
*/
@Override
public BusMaterialsInventoryVo getMaterialsInventoryVo(BusMaterialsInventory MaterialsInventory) {
public BusMaterialsInventoryVo getVo(BusMaterialsInventory materialsInventory) {
// 对象转封装类
BusMaterialsInventoryVo materialsInventoryVo = new BusMaterialsInventoryVo();
if (MaterialsInventory == null) {
if (materialsInventory == null) {
return materialsInventoryVo;
}
BeanUtils.copyProperties(MaterialsInventory, materialsInventoryVo);
BeanUtils.copyProperties(materialsInventory, materialsInventoryVo);
// 关联查询项目信息
Long materialsId = MaterialsInventory.getMaterialsId();
Long materialsId = materialsInventory.getMaterialsId();
if (materialsId != null) {
materialsInventoryVo.setMaterialsVo(materialsService.queryById(materialsId));
}
@ -251,7 +251,7 @@ public class BusMaterialsInventoryServiceImpl extends ServiceImpl<BusMaterialsIn
* @return 材料出/入库分页对象视图
*/
@Override
public Page<BusMaterialsInventoryVo> getMaterialsInventoryVoPage(Page<BusMaterialsInventory> materialsInventoryPage) {
public Page<BusMaterialsInventoryVo> getVoPage(Page<BusMaterialsInventory> materialsInventoryPage) {
List<BusMaterialsInventory> materialsInventoryList = materialsInventoryPage.getRecords();
Page<BusMaterialsInventoryVo> materialsInventoryVoPage = new Page<>(
materialsInventoryPage.getCurrent(),
@ -261,7 +261,7 @@ public class BusMaterialsInventoryServiceImpl extends ServiceImpl<BusMaterialsIn
return materialsInventoryVoPage;
}
// 对象列表 => 封装对象列表
List<BusMaterialsInventoryVo> materialsInventoryVoList = materialsInventoryList.stream().map(this::getMaterialsInventoryVo).toList();
List<BusMaterialsInventoryVo> materialsInventoryVoList = materialsInventoryList.stream().map(this::getVo).toList();
materialsInventoryVoPage.setRecords(materialsInventoryVoList);
return materialsInventoryVoPage;
}

View File

@ -0,0 +1,107 @@
package org.dromara.project.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
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.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.project.domain.req.constructionuser.ConstructionUserCreateReq;
import org.dromara.project.domain.req.constructionuser.ConstructionUserQueryReq;
import org.dromara.project.domain.req.constructionuser.ConstructionUserUpdateReq;
import org.dromara.project.domain.vo.BusConstructionUserVo;
import org.dromara.project.service.IBusConstructionUserService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 施工人员
*
* @author lcj
* @date 2025-03-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/project/constructionUser")
public class BusConstructionUserController extends BaseController {
private final IBusConstructionUserService busConstructionUserService;
/**
* 查询施工人员列表
*/
@SaCheckPermission("project:constructionUser:list")
@GetMapping("/list")
public Page<BusConstructionUserVo> list(ConstructionUserQueryReq req) {
return busConstructionUserService.queryPageList(req);
}
/**
* 导出施工人员列表
*/
@SaCheckPermission("project:constructionUser:export")
@Log(title = "施工人员", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ConstructionUserQueryReq req, HttpServletResponse response) {
List<BusConstructionUserVo> list = busConstructionUserService.queryList(req);
ExcelUtil.exportExcel(list, "施工人员", BusConstructionUserVo.class, response);
}
/**
* 获取施工人员详细信息
*
* @param id 主键
*/
@SaCheckPermission("project:constructionUser:query")
@GetMapping("/{id}")
public R<BusConstructionUserVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busConstructionUserService.queryById(id));
}
/**
* 新增施工人员
*/
@SaCheckPermission("project:constructionUser:add")
@Log(title = "施工人员", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Long> add(@Validated(AddGroup.class) @RequestBody ConstructionUserCreateReq req) {
return R.ok(busConstructionUserService.insertByBo(req));
}
/**
* 修改施工人员
*/
@SaCheckPermission("project:constructionUser:edit")
@Log(title = "施工人员", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ConstructionUserUpdateReq req) {
return toAjax(busConstructionUserService.updateByBo(req));
}
/**
* 删除施工人员
*
* @param ids 主键串
*/
@SaCheckPermission("project:constructionUser:remove")
@Log(title = "施工人员", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busConstructionUserService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,107 @@
package org.dromara.project.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
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.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.project.domain.req.contractor.ContractorCreateReq;
import org.dromara.project.domain.req.contractor.ContractorQueryReq;
import org.dromara.project.domain.req.contractor.ContractorUpdateReq;
import org.dromara.project.domain.vo.BusContractorVo;
import org.dromara.project.service.IBusContractorService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 分包单位
*
* @author lcj
* @date 2025-03-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/project/contractor")
public class BusContractorController extends BaseController {
private final IBusContractorService busContractorService;
/**
* 查询分包单位列表
*/
@SaCheckPermission("project:contractor:list")
@GetMapping("/list")
public Page<BusContractorVo> list(ContractorQueryReq req) {
return busContractorService.queryPageList(req);
}
/**
* 导出分包单位列表
*/
@SaCheckPermission("project:contractor:export")
@Log(title = "分包单位", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ContractorQueryReq req, HttpServletResponse response) {
List<BusContractorVo> list = busContractorService.queryList(req);
ExcelUtil.exportExcel(list, "分包单位", BusContractorVo.class, response);
}
/**
* 获取分包单位详细信息
*
* @param id 主键
*/
@SaCheckPermission("project:contractor:query")
@GetMapping("/{id}")
public R<BusContractorVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busContractorService.queryById(id));
}
/**
* 新增分包单位
*/
@SaCheckPermission("project:contractor:add")
@Log(title = "分包单位", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Long> add(@Validated(AddGroup.class) @RequestBody ContractorCreateReq req) {
return R.ok(busContractorService.insertByBo(req));
}
/**
* 修改分包单位
*/
@SaCheckPermission("project:contractor:edit")
@Log(title = "分包单位", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ContractorUpdateReq req) {
return toAjax(busContractorService.updateByBo(req));
}
/**
* 删除分包单位
*
* @param ids 主键串
*/
@SaCheckPermission("project:contractor:remove")
@Log(title = "分包单位", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busContractorService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,107 @@
package org.dromara.project.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
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.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.project.domain.req.projectteam.ProjectTeamCreateReq;
import org.dromara.project.domain.req.projectteam.ProjectTeamQueryReq;
import org.dromara.project.domain.req.projectteam.ProjectTeamUpdateReq;
import org.dromara.project.domain.vo.BusProjectTeamVo;
import org.dromara.project.service.IBusProjectTeamService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 项目班组
*
* @author lcj
* @date 2025-03-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/project/projectTeam")
public class BusProjectTeamController extends BaseController {
private final IBusProjectTeamService busProjectTeamService;
/**
* 查询项目班组列表
*/
@SaCheckPermission("project:projectTeam:list")
@GetMapping("/list")
public Page<BusProjectTeamVo> list(ProjectTeamQueryReq req) {
return busProjectTeamService.queryPageList(req);
}
/**
* 导出项目班组列表
*/
@SaCheckPermission("project:projectTeam:export")
@Log(title = "项目班组", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ProjectTeamQueryReq req, HttpServletResponse response) {
List<BusProjectTeamVo> list = busProjectTeamService.queryList(req);
ExcelUtil.exportExcel(list, "项目班组", BusProjectTeamVo.class, response);
}
/**
* 获取项目班组详细信息
*
* @param id 主键
*/
@SaCheckPermission("project:projectTeam:query")
@GetMapping("/{id}")
public R<BusProjectTeamVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busProjectTeamService.queryById(id));
}
/**
* 新增项目班组
*/
@SaCheckPermission("project:projectTeam:add")
@Log(title = "项目班组", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Long> add(@Validated(AddGroup.class) @RequestBody ProjectTeamCreateReq req) {
return R.ok(busProjectTeamService.insertByBo(req));
}
/**
* 修改项目班组
*/
@SaCheckPermission("project:projectTeam:edit")
@Log(title = "项目班组", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProjectTeamUpdateReq req) {
return toAjax(busProjectTeamService.updateByBo(req));
}
/**
* 删除项目班组
*
* @param ids 主键串
*/
@SaCheckPermission("project:projectTeam:remove")
@Log(title = "项目班组", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busProjectTeamService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -0,0 +1,107 @@
package org.dromara.project.controller;
import cn.dev33.satoken.annotation.SaCheckPermission;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.RequiredArgsConstructor;
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.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.web.core.BaseController;
import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberCreateReq;
import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberQueryReq;
import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberUpdateReq;
import org.dromara.project.domain.vo.BusProjectTeamMemberVo;
import org.dromara.project.service.IBusProjectTeamMemberService;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 项目班组下的成员
*
* @author lcj
* @date 2025-03-07
*/
@Validated
@RequiredArgsConstructor
@RestController
@RequestMapping("/project/projectTeamMember")
public class BusProjectTeamMemberController extends BaseController {
private final IBusProjectTeamMemberService busProjectTeamMemberService;
/**
* 查询项目班组下的成员列表
*/
@SaCheckPermission("project:projectTeamMember:list")
@GetMapping("/list")
public Page<BusProjectTeamMemberVo> list(ProjectTeamMemberQueryReq req) {
return busProjectTeamMemberService.queryPageList(req);
}
/**
* 导出项目班组下的成员列表
*/
@SaCheckPermission("project:projectTeamMember:export")
@Log(title = "项目班组下的成员", businessType = BusinessType.EXPORT)
@PostMapping("/export")
public void export(ProjectTeamMemberQueryReq req, HttpServletResponse response) {
List<BusProjectTeamMemberVo> list = busProjectTeamMemberService.queryList(req);
ExcelUtil.exportExcel(list, "项目班组下的成员", BusProjectTeamMemberVo.class, response);
}
/**
* 获取项目班组下的成员详细信息
*
* @param id 主键
*/
@SaCheckPermission("project:projectTeamMember:query")
@GetMapping("/{id}")
public R<BusProjectTeamMemberVo> getInfo(@NotNull(message = "主键不能为空")
@PathVariable Long id) {
return R.ok(busProjectTeamMemberService.queryById(id));
}
/**
* 新增项目班组下的成员
*/
@SaCheckPermission("project:projectTeamMember:add")
@Log(title = "项目班组下的成员", businessType = BusinessType.INSERT)
@RepeatSubmit()
@PostMapping()
public R<Long> add(@Validated(AddGroup.class) @RequestBody ProjectTeamMemberCreateReq req) {
return R.ok(busProjectTeamMemberService.insertByBo(req));
}
/**
* 修改项目班组下的成员
*/
@SaCheckPermission("project:projectTeamMember:edit")
@Log(title = "项目班组下的成员", businessType = BusinessType.UPDATE)
@RepeatSubmit()
@PutMapping()
public R<Void> edit(@Validated(EditGroup.class) @RequestBody ProjectTeamMemberUpdateReq req) {
return toAjax(busProjectTeamMemberService.updateByBo(req));
}
/**
* 删除项目班组下的成员
*
* @param ids 主键串
*/
@SaCheckPermission("project:projectTeamMember:remove")
@Log(title = "项目班组下的成员", businessType = BusinessType.DELETE)
@DeleteMapping("/{ids}")
public R<Void> remove(@NotEmpty(message = "主键不能为空")
@PathVariable Long[] ids) {
return toAjax(busProjectTeamMemberService.deleteWithValidByIds(List.of(ids), true));
}
}

View File

@ -15,7 +15,6 @@ import org.dromara.common.excel.utils.ExcelUtil;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
import org.dromara.common.log.annotation.Log;
import org.dromara.common.log.enums.BusinessType;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.satoken.utils.LoginHelper;
import org.dromara.common.web.core.BaseController;
import org.dromara.project.domain.UserProjectRelevancy;

View File

@ -0,0 +1,179 @@
package org.dromara.project.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;
/**
* 施工人员对象 bus_construction_user
*
* @author lcj
* @date 2025-03-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_construction_user")
public class BusConstructionUser extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id")
private Long id;
/**
* 微信id
*/
private String openid;
/**
* 微信名称
*/
private String nickName;
/**
* 人脸照
*/
private String pacePhoto;
/**
* 人员姓名
*/
private String userName;
/**
* 项目id
*/
private Long projectId;
/**
* 分包公司id
*/
private Long contractorId;
/**
* 班组id
*/
private Long teamId;
/**
* 状态0在职 1离职
*/
private Long status;
/**
* 是否代打
*/
private Long isPinch;
/**
* 联系电话
*/
private String phone;
/**
* 0:保密 1:男 2女
*/
private Long sex;
/**
* 民族
*/
private String nation;
/**
* 身份证号码
*/
private String sfzNumber;
/**
* 身份证有效开始期
*/
private String sfzStart;
/**
* 身份证有效结束期
*/
private String sfzEnd;
/**
* 身份证地址
*/
private String sfzSite;
/**
* 身份证出生日期
*/
private String sfzBirth;
/**
* 籍贯
*/
private String nativePlace;
/**
* 银行卡号
*/
private String yhkNumber;
/**
* 开户行
*/
private String yhkOpeningBank;
/**
* 持卡人
*/
private String yhkCardholder;
/**
* 工种(字典type_of_work)
*/
private Long typeOfWork;
/**
* 打卡(0启用打卡 1禁止打卡)
*/
private Long clock;
/**
* 入场时间
*/
private String entryDate;
/**
* 离场时间
*/
private String leaveDate;
/**
* 薪水
*/
private Long salary;
/**
* 备注
*/
private String remark;
/**
* 删除时间
*/
private Date deletedAt;
/**
* 是否删除0正常 1删除
*/
@TableLogic
private Long isDelete;
}

View File

@ -0,0 +1,74 @@
package org.dromara.project.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;
/**
* 分包单位对象 bus_contractor
*
* @author lcj
* @date 2025-03-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_contractor")
public class BusContractor extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id")
private Long id;
/**
* 公司名称
*/
private String name;
/**
* 负责人
*/
private String principal;
/**
* 负责人联系电话
*/
private String principalPhone;
/**
* 管理人
*/
private String custodian;
/**
* 管理人联系电话
*/
private String custodianPhone;
/**
* 备注
*/
private String remark;
/**
* 删除时间
*/
private Date deletedAt;
/**
* 是否删除0正常 1删除
*/
@TableLogic
private Long isDelete;
}

View File

@ -0,0 +1,66 @@
package org.dromara.project.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;
/**
* 项目班组对象 bus_project_team
*
* @author lcj
* @date 2025-03-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_project_team")
public class BusProjectTeam extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id")
private Long id;
/**
* 项目id
*/
private Long projectId;
/**
* 班组名称
*/
private String teamName;
/**
* 范围内打卡0范围内打卡 1任何地点打卡默认为1
*/
private Long isClockIn;
/**
* 备注
*/
private String remark;
/**
* 删除时间
*/
private Date deletedAt;
/**
* 是否删除0正常 1删除
*/
@TableLogic
private Long isDelete;
}

View File

@ -0,0 +1,63 @@
package org.dromara.project.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;
/**
* 项目班组下的成员对象 bus_project_team_member
*
* @author lcj
* @date 2025-03-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("bus_project_team_member")
public class BusProjectTeamMember extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@TableId(value = "id")
private Long id;
/**
* 班组id
*/
private Long teamId;
/**
* 项目id
*/
private Long projectId;
/**
* 施工人员id
*/
private Long memberId;
/**
* 岗位默认为0普通员工1组长
*/
private Long postId;
/**
* 备注
*/
private String remark;
/**
* 删除时间
*/
private Date deletedAt;
}

View File

@ -0,0 +1,169 @@
package org.dromara.project.domain.bo;
import org.dromara.project.domain.BusConstructionUser;
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;
/**
* 施工人员业务对象 bus_construction_user
*
* @author lcj
* @date 2025-03-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusConstructionUser.class, reverseConvertGenerate = false)
public class BusConstructionUserBo extends BaseEntity {
/**
* 主键id
*/
@NotNull(message = "主键id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 微信id
*/
private String openid;
/**
* 微信名称
*/
private String nickName;
/**
* 人脸照
*/
private String pacePhoto;
/**
* 人员姓名
*/
private String userName;
/**
* 项目id
*/
private Long projectId;
/**
* 分包公司id
*/
private Long contractorId;
/**
* 班组id
*/
private Long teamId;
/**
* 状态0在职 1离职
*/
private Long status;
/**
* 是否代打
*/
private Long isPinch;
/**
* 联系电话
*/
private String phone;
/**
* 0:保密 1:男 2女
*/
@NotNull(message = "0:保密 1:男 2女不能为空", groups = { AddGroup.class, EditGroup.class })
private Long sex;
/**
* 民族
*/
private String nation;
/**
* 身份证号码
*/
private String sfzNumber;
/**
* 身份证有效开始期
*/
private String sfzStart;
/**
* 身份证有效结束期
*/
private String sfzEnd;
/**
* 身份证地址
*/
private String sfzSite;
/**
* 身份证出生日期
*/
private String sfzBirth;
/**
* 籍贯
*/
private String nativePlace;
/**
* 银行卡号
*/
private String yhkNumber;
/**
* 开户行
*/
private String yhkOpeningBank;
/**
* 持卡人
*/
private String yhkCardholder;
/**
* 工种(字典type_of_work)
*/
private Long typeOfWork;
/**
* 打卡(0启用打卡 1禁止打卡)
*/
@NotNull(message = "打卡(0启用打卡 1禁止打卡)不能为空", groups = { AddGroup.class, EditGroup.class })
private Long clock;
/**
* 入场时间
*/
private String entryDate;
/**
* 离场时间
*/
private String leaveDate;
/**
* 薪水
*/
private Long salary;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,62 @@
package org.dromara.project.domain.bo;
import org.dromara.project.domain.BusContractor;
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;
/**
* 分包单位业务对象 bus_contractor
*
* @author lcj
* @date 2025-03-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusContractor.class, reverseConvertGenerate = false)
public class BusContractorBo extends BaseEntity {
/**
* 主键id
*/
@NotNull(message = "主键id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 公司名称
*/
private String name;
/**
* 负责人
*/
private String principal;
/**
* 负责人联系电话
*/
private String principalPhone;
/**
* 管理人
*/
private String custodian;
/**
* 管理人联系电话
*/
private String custodianPhone;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,53 @@
package org.dromara.project.domain.bo;
import org.dromara.project.domain.BusProjectTeam;
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;
/**
* 项目班组业务对象 bus_project_team
*
* @author lcj
* @date 2025-03-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusProjectTeam.class, reverseConvertGenerate = false)
public class BusProjectTeamBo extends BaseEntity {
/**
* 主键id
*/
@NotNull(message = "主键id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 项目id
*/
private Long projectId;
/**
* 班组名称
*/
private String teamName;
/**
* 范围内打卡0范围内打卡 1任何地点打卡默认为1
*/
@NotNull(message = "范围内打卡0范围内打卡 1任何地点打卡默认为1不能为空", groups = { AddGroup.class, EditGroup.class })
private Long isClockIn;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,57 @@
package org.dromara.project.domain.bo;
import org.dromara.project.domain.BusProjectTeamMember;
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;
/**
* 项目班组下的成员业务对象 bus_project_team_member
*
* @author lcj
* @date 2025-03-07
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BusProjectTeamMember.class, reverseConvertGenerate = false)
public class BusProjectTeamMemberBo extends BaseEntity {
/**
* 主键id
*/
@NotNull(message = "主键id不能为空", groups = { EditGroup.class })
private Long id;
/**
* 班组id
*/
private Long teamId;
/**
* 项目id
*/
private Long projectId;
/**
* 施工人员id
*/
private Long memberId;
/**
* 岗位默认为0普通员工1组长
*/
private Long postId;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,153 @@
package org.dromara.project.domain.req.constructionuser;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lcj
* @date 2025/3/5 14:05
*/
@Data
public class ConstructionUserCreateReq implements Serializable {
@Serial
private static final long serialVersionUID = -7603153089205421154L;
/**
* 微信id
*/
private String openid;
/**
* 微信名称
*/
private String nickName;
/**
* 人脸照
*/
private String pacePhoto;
/**
* 人员姓名
*/
private String userName;
/**
* 项目id
*/
private Long projectId;
/**
* 分包公司id
*/
private Long contractorId;
/**
* 班组id
*/
private Long teamId;
/**
* 状态0在职 1离职
*/
private Long status;
/**
* 是否代打
*/
private Long isPinch;
/**
* 联系电话
*/
private String phone;
/**
* 0:保密 1:男 2女
*/
private Long sex;
/**
* 民族
*/
private String nation;
/**
* 身份证号码
*/
private String sfzNumber;
/**
* 身份证有效开始期
*/
private String sfzStart;
/**
* 身份证有效结束期
*/
private String sfzEnd;
/**
* 身份证地址
*/
private String sfzSite;
/**
* 身份证出生日期
*/
private String sfzBirth;
/**
* 籍贯
*/
private String nativePlace;
/**
* 银行卡号
*/
private String yhkNumber;
/**
* 开户行
*/
private String yhkOpeningBank;
/**
* 持卡人
*/
private String yhkCardholder;
/**
* 工种(字典type_of_work)
*/
private Long typeOfWork;
/**
* 打卡(0启用打卡 1禁止打卡)
*/
private Long clock;
/**
* 入场时间
*/
private String entryDate;
/**
* 离场时间
*/
private String leaveDate;
/**
* 薪水
*/
private Long salary;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,146 @@
package org.dromara.project.domain.req.constructionuser;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.common.PageRequest;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lcj
* @date 2025/3/5 14:31
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class ConstructionUserQueryReq extends PageRequest implements Serializable {
@Serial
private static final long serialVersionUID = 3252651952758479341L;
/**
* 主键id
*/
private Long id;
/**
* 微信id
*/
private String openid;
/**
* 微信名称
*/
private String nickName;
/**
* 人员姓名
*/
private String userName;
/**
* 项目id
*/
private Long projectId;
/**
* 分包公司id
*/
private Long contractorId;
/**
* 班组id
*/
private Long teamId;
/**
* 状态0在职 1离职
*/
private Long status;
/**
* 是否代打
*/
private Long isPinch;
/**
* 联系电话
*/
private String phone;
/**
* 0:保密 1:男 2女
*/
private Long sex;
/**
* 民族
*/
private String nation;
/**
* 身份证号码
*/
private String sfzNumber;
/**
* 身份证有效开始期
*/
private String sfzStart;
/**
* 身份证有效结束期
*/
private String sfzEnd;
/**
* 身份证地址
*/
private String sfzSite;
/**
* 身份证出生日期
*/
private String sfzBirth;
/**
* 籍贯
*/
private String nativePlace;
/**
* 银行卡号
*/
private String yhkNumber;
/**
* 开户行
*/
private String yhkOpeningBank;
/**
* 持卡人
*/
private String yhkCardholder;
/**
* 工种(字典type_of_work)
*/
private Long typeOfWork;
/**
* 打卡(0启用打卡 1禁止打卡)
*/
private Long clock;
/**
* 薪水
*/
private Long salary;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,158 @@
package org.dromara.project.domain.req.constructionuser;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lcj
* @date 2025/3/5 15:04
*/
@Data
public class ConstructionUserUpdateReq implements Serializable {
@Serial
private static final long serialVersionUID = -8022860866890925958L;
/**
* 主键id
*/
private Long id;
/**
* 微信id
*/
private String openid;
/**
* 微信名称
*/
private String nickName;
/**
* 人脸照
*/
private String pacePhoto;
/**
* 人员姓名
*/
private String userName;
/**
* 项目id
*/
private Long projectId;
/**
* 分包公司id
*/
private Long contractorId;
/**
* 班组id
*/
private Long teamId;
/**
* 状态0在职 1离职
*/
private Long status;
/**
* 是否代打
*/
private Long isPinch;
/**
* 联系电话
*/
private String phone;
/**
* 0:保密 1:男 2女
*/
private Long sex;
/**
* 民族
*/
private String nation;
/**
* 身份证号码
*/
private String sfzNumber;
/**
* 身份证有效开始期
*/
private String sfzStart;
/**
* 身份证有效结束期
*/
private String sfzEnd;
/**
* 身份证地址
*/
private String sfzSite;
/**
* 身份证出生日期
*/
private String sfzBirth;
/**
* 籍贯
*/
private String nativePlace;
/**
* 银行卡号
*/
private String yhkNumber;
/**
* 开户行
*/
private String yhkOpeningBank;
/**
* 持卡人
*/
private String yhkCardholder;
/**
* 工种(字典type_of_work)
*/
private Long typeOfWork;
/**
* 打卡(0启用打卡 1禁止打卡)
*/
private Long clock;
/**
* 入场时间
*/
private String entryDate;
/**
* 离场时间
*/
private String leaveDate;
/**
* 薪水
*/
private Long salary;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,48 @@
package org.dromara.project.domain.req.contractor;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lcj
* @date 2025/3/5 14:05
*/
@Data
public class ContractorCreateReq implements Serializable {
@Serial
private static final long serialVersionUID = -7603153089205421154L;
/**
* 公司名称
*/
private String name;
/**
* 负责人
*/
private String principal;
/**
* 负责人联系电话
*/
private String principalPhone;
/**
* 管理人
*/
private String custodian;
/**
* 管理人联系电话
*/
private String custodianPhone;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,56 @@
package org.dromara.project.domain.req.contractor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.common.PageRequest;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lcj
* @date 2025/3/5 14:31
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class ContractorQueryReq extends PageRequest implements Serializable {
@Serial
private static final long serialVersionUID = 3252651952758479341L;
/**
* 主键id
*/
private Long id;
/**
* 公司名称
*/
private String name;
/**
* 负责人
*/
private String principal;
/**
* 负责人联系电话
*/
private String principalPhone;
/**
* 管理人
*/
private String custodian;
/**
* 管理人联系电话
*/
private String custodianPhone;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,53 @@
package org.dromara.project.domain.req.contractor;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lcj
* @date 2025/3/5 15:04
*/
@Data
public class ContractorUpdateReq implements Serializable {
@Serial
private static final long serialVersionUID = -8022860866890925958L;
/**
* 主键id
*/
private Long id;
/**
* 公司名称
*/
private String name;
/**
* 负责人
*/
private String principal;
/**
* 负责人联系电话
*/
private String principalPhone;
/**
* 管理人
*/
private String custodian;
/**
* 管理人联系电话
*/
private String custodianPhone;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,38 @@
package org.dromara.project.domain.req.projectteam;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lcj
* @date 2025/3/5 14:05
*/
@Data
public class ProjectTeamCreateReq implements Serializable {
@Serial
private static final long serialVersionUID = -7603153089205421154L;
/**
* 项目id
*/
private Long projectId;
/**
* 班组名称
*/
private String teamName;
/**
* 范围内打卡0范围内打卡 1任何地点打卡默认为1
*/
private Long isClockIn;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,46 @@
package org.dromara.project.domain.req.projectteam;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.common.PageRequest;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lcj
* @date 2025/3/5 14:31
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class ProjectTeamQueryReq extends PageRequest implements Serializable {
@Serial
private static final long serialVersionUID = 3252651952758479341L;
/**
* 主键id
*/
private Long id;
/**
* 项目id
*/
private Long projectId;
/**
* 班组名称
*/
private String teamName;
/**
* 范围内打卡0范围内打卡 1任何地点打卡默认为1
*/
private Long isClockIn;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,43 @@
package org.dromara.project.domain.req.projectteam;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lcj
* @date 2025/3/5 15:04
*/
@Data
public class ProjectTeamUpdateReq implements Serializable {
@Serial
private static final long serialVersionUID = -8022860866890925958L;
/**
* 主键id
*/
private Long id;
/**
* 项目id
*/
private Long projectId;
/**
* 班组名称
*/
private String teamName;
/**
* 范围内打卡0范围内打卡 1任何地点打卡默认为1
*/
private Long isClockIn;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,43 @@
package org.dromara.project.domain.req.projectteammember;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lcj
* @date 2025/3/5 14:05
*/
@Data
public class ProjectTeamMemberCreateReq implements Serializable {
@Serial
private static final long serialVersionUID = -7603153089205421154L;
/**
* 班组id
*/
private Long teamId;
/**
* 项目id
*/
private Long projectId;
/**
* 施工人员id
*/
private Long memberId;
/**
* 岗位默认为0普通员工1组长
*/
private Long postId;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,51 @@
package org.dromara.project.domain.req.projectteammember;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.core.common.PageRequest;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lcj
* @date 2025/3/5 14:31
*/
@EqualsAndHashCode(callSuper = true)
@Data
public class ProjectTeamMemberQueryReq extends PageRequest implements Serializable {
@Serial
private static final long serialVersionUID = 3252651952758479341L;
/**
* 主键id
*/
private Long id;
/**
* 班组id
*/
private Long teamId;
/**
* 项目id
*/
private Long projectId;
/**
* 施工人员id
*/
private Long memberId;
/**
* 岗位默认为0普通员工1组长
*/
private Long postId;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,48 @@
package org.dromara.project.domain.req.projectteammember;
import lombok.Data;
import java.io.Serial;
import java.io.Serializable;
/**
* @author lcj
* @date 2025/3/5 15:04
*/
@Data
public class ProjectTeamMemberUpdateReq implements Serializable {
@Serial
private static final long serialVersionUID = -8022860866890925958L;
/**
* 主键id
*/
private Long id;
/**
* 班组id
*/
private Long teamId;
/**
* 项目id
*/
private Long projectId;
/**
* 施工人员id
*/
private Long memberId;
/**
* 岗位默认为0普通员工1组长
*/
private Long postId;
/**
* 备注
*/
private String remark;
}

View File

@ -0,0 +1,206 @@
package org.dromara.project.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.project.domain.BusConstructionUser;
import java.io.Serial;
import java.io.Serializable;
/**
* 施工人员视图对象 bus_construction_user
*
* @author lcj
* @date 2025-03-07
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusConstructionUser.class)
public class BusConstructionUserVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@ExcelProperty(value = "主键id")
private Long id;
/**
* 微信id
*/
@ExcelProperty(value = "微信id")
private String openid;
/**
* 微信名称
*/
@ExcelProperty(value = "微信名称")
private String nickName;
/**
* 人脸照
*/
@ExcelProperty(value = "人脸照")
private String pacePhoto;
/**
* 人员姓名
*/
@ExcelProperty(value = "人员姓名")
private String userName;
/**
* 项目id
*/
@ExcelProperty(value = "项目id")
private Long projectId;
/**
* 分包公司id
*/
@ExcelProperty(value = "分包公司id")
private Long contractorId;
/**
* 分包公司
*/
@ExcelProperty(value = "分包公司")
private BusContractorVo contractorVo;
/**
* 班组id
*/
@ExcelProperty(value = "班组id")
private Long teamId;
/**
* 状态0在职 1离职
*/
@ExcelProperty(value = "状态", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=在职,1=离职")
private Long status;
/**
* 是否代打
*/
@ExcelProperty(value = "是否代打")
private Long isPinch;
/**
* 联系电话
*/
@ExcelProperty(value = "联系电话")
private String phone;
/**
* 0:保密 1:男 2女
*/
@ExcelProperty(value = "0:保密 1:男 2女")
private Long sex;
/**
* 民族
*/
@ExcelProperty(value = "民族")
private String nation;
/**
* 身份证号码
*/
@ExcelProperty(value = "身份证号码")
private String sfzNumber;
/**
* 身份证有效开始期
*/
@ExcelProperty(value = "身份证有效开始期")
private String sfzStart;
/**
* 身份证有效结束期
*/
@ExcelProperty(value = "身份证有效结束期")
private String sfzEnd;
/**
* 身份证地址
*/
@ExcelProperty(value = "身份证地址")
private String sfzSite;
/**
* 身份证出生日期
*/
@ExcelProperty(value = "身份证出生日期")
private String sfzBirth;
/**
* 籍贯
*/
@ExcelProperty(value = "籍贯")
private String nativePlace;
/**
* 银行卡号
*/
@ExcelProperty(value = "银行卡号")
private String yhkNumber;
/**
* 开户行
*/
@ExcelProperty(value = "开户行")
private String yhkOpeningBank;
/**
* 持卡人
*/
@ExcelProperty(value = "持卡人")
private String yhkCardholder;
/**
* 工种(字典type_of_work)
*/
@ExcelProperty(value = "工种(字典type_of_work)", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "type_of_work")
private Long typeOfWork;
/**
* 打卡(0启用打卡 1禁止打卡)
*/
@ExcelProperty(value = "打卡(0启用打卡 1禁止打卡)")
private Long clock;
/**
* 入场时间
*/
@ExcelProperty(value = "入场时间")
private String entryDate;
/**
* 离场时间
*/
@ExcelProperty(value = "离场时间")
private String leaveDate;
/**
* 薪水
*/
@ExcelProperty(value = "薪水")
private Long salary;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,76 @@
package org.dromara.project.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.project.domain.BusContractor;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.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 java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 分包单位视图对象 bus_contractor
*
* @author lcj
* @date 2025-03-07
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusContractor.class)
public class BusContractorVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@ExcelProperty(value = "主键id")
private Long id;
/**
* 公司名称
*/
@ExcelProperty(value = "公司名称")
private String name;
/**
* 负责人
*/
@ExcelProperty(value = "负责人")
private String principal;
/**
* 负责人联系电话
*/
@ExcelProperty(value = "负责人联系电话")
private String principalPhone;
/**
* 管理人
*/
@ExcelProperty(value = "管理人")
private String custodian;
/**
* 管理人联系电话
*/
@ExcelProperty(value = "管理人联系电话")
private String custodianPhone;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,73 @@
package org.dromara.project.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import org.dromara.common.excel.annotation.ExcelDictFormat;
import org.dromara.common.excel.convert.ExcelDictConvert;
import org.dromara.project.domain.BusProjectTeamMember;
import java.io.Serial;
import java.io.Serializable;
/**
* 项目班组下的成员视图对象 bus_project_team_member
*
* @author lcj
* @date 2025-03-07
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusProjectTeamMember.class)
public class BusProjectTeamMemberVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@ExcelProperty(value = "主键id")
private Long id;
/**
* 班组id
*/
@ExcelProperty(value = "班组id")
private Long teamId;
/**
* 项目id
*/
@ExcelProperty(value = "项目id")
private Long projectId;
/**
* 施工人员id
*/
@ExcelProperty(value = "施工人员id")
private Long memberId;
/**
* 施工人员信息
*/
@ExcelProperty(value = "施工人员信息")
private BusConstructionUserVo constructionUserVo;
/**
* 岗位默认为0普通员工1组长
*/
@ExcelProperty(value = "岗位", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "默认为0普通员工1组长")
private Long postId;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,65 @@
package org.dromara.project.domain.vo;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.dromara.project.domain.BusProjectTeam;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.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 java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 项目班组视图对象 bus_project_team
*
* @author lcj
* @date 2025-03-07
*/
@Data
@ExcelIgnoreUnannotated
@AutoMapper(target = BusProjectTeam.class)
public class BusProjectTeamVo implements Serializable {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键id
*/
@ExcelProperty(value = "主键id")
private Long id;
/**
* 项目id
*/
@ExcelProperty(value = "项目id")
private Long projectId;
/**
* 班组名称
*/
@ExcelProperty(value = "班组名称")
private String teamName;
/**
* 范围内打卡0范围内打卡 1任何地点打卡默认为1
*/
@ExcelProperty(value = "范围内打卡", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "0=范围内打卡,1=任何地点打卡")
private Long isClockIn;
/**
* 备注
*/
@ExcelProperty(value = "备注")
private String remark;
}

View File

@ -0,0 +1,15 @@
package org.dromara.project.mapper;
import org.dromara.project.domain.BusConstructionUser;
import org.dromara.project.domain.vo.BusConstructionUserVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 施工人员Mapper接口
*
* @author lcj
* @date 2025-03-07
*/
public interface BusConstructionUserMapper extends BaseMapperPlus<BusConstructionUser, BusConstructionUserVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.project.mapper;
import org.dromara.project.domain.BusContractor;
import org.dromara.project.domain.vo.BusContractorVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 分包单位Mapper接口
*
* @author lcj
* @date 2025-03-07
*/
public interface BusContractorMapper extends BaseMapperPlus<BusContractor, BusContractorVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.project.mapper;
import org.dromara.project.domain.BusProjectTeam;
import org.dromara.project.domain.vo.BusProjectTeamVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 项目班组Mapper接口
*
* @author lcj
* @date 2025-03-07
*/
public interface BusProjectTeamMapper extends BaseMapperPlus<BusProjectTeam, BusProjectTeamVo> {
}

View File

@ -0,0 +1,15 @@
package org.dromara.project.mapper;
import org.dromara.project.domain.BusProjectTeamMember;
import org.dromara.project.domain.vo.BusProjectTeamMemberVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
/**
* 项目班组下的成员Mapper接口
*
* @author lcj
* @date 2025-03-07
*/
public interface BusProjectTeamMemberMapper extends BaseMapperPlus<BusProjectTeamMember, BusProjectTeamMemberVo> {
}

View File

@ -0,0 +1,95 @@
package org.dromara.project.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.project.domain.BusConstructionUser;
import org.dromara.project.domain.req.constructionuser.ConstructionUserCreateReq;
import org.dromara.project.domain.req.constructionuser.ConstructionUserQueryReq;
import org.dromara.project.domain.req.constructionuser.ConstructionUserUpdateReq;
import org.dromara.project.domain.vo.BusConstructionUserVo;
import java.util.Collection;
import java.util.List;
/**
* 施工人员Service接口
*
* @author lcj
* @date 2025-03-07
*/
public interface IBusConstructionUserService extends IService<BusConstructionUser> {
/**
* 查询施工人员
*
* @param id 主键
* @return 施工人员
*/
BusConstructionUserVo queryById(Long id);
/**
* 分页查询施工人员列表
*
* @param req 查询条件
* @return 施工人员分页列表
*/
Page<BusConstructionUserVo> queryPageList(ConstructionUserQueryReq req);
/**
* 查询符合条件的施工人员列表
*
* @param req 查询条件
* @return 施工人员列表
*/
List<BusConstructionUserVo> queryList(ConstructionUserQueryReq req);
/**
* 新增施工人员
*
* @param req 施工人员
* @return 是否新增成功
*/
Long insertByBo(ConstructionUserCreateReq req);
/**
* 修改施工人员
*
* @param req 施工人员
* @return 是否修改成功
*/
Boolean updateByBo(ConstructionUserUpdateReq req);
/**
* 校验并批量删除施工人员信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 获取施工人员视图对象
*
* @param constructionUser 施工人员对象
* @return 施工人员视图对象
*/
BusConstructionUserVo getVo(BusConstructionUser constructionUser);
/**
* 获取施工人员查询条件封装
*
* @param req 查询条件
* @return 查询条件封装
*/
QueryWrapper<BusConstructionUser> getQueryWrapper(ConstructionUserQueryReq req);
/**
* 获取施工人员分页对象视图
*
* @param constructionUserPage 施工人员分页对象
* @return 施工人员分页对象视图
*/
Page<BusConstructionUserVo> getVoPage(Page<BusConstructionUser> constructionUserPage);
}

View File

@ -0,0 +1,96 @@
package org.dromara.project.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.project.domain.BusContractor;
import org.dromara.project.domain.req.contractor.ContractorCreateReq;
import org.dromara.project.domain.req.contractor.ContractorQueryReq;
import org.dromara.project.domain.req.contractor.ContractorUpdateReq;
import org.dromara.project.domain.vo.BusContractorVo;
import java.util.Collection;
import java.util.List;
/**
* 分包单位Service接口
*
* @author lcj
* @date 2025-03-07
*/
public interface IBusContractorService extends IService<BusContractor> {
/**
* 查询分包单位
*
* @param id 主键
* @return 分包单位
*/
BusContractorVo queryById(Long id);
/**
* 分页查询分包单位列表
*
* @param req 查询条件
* @return 分包单位分页列表
*/
Page<BusContractorVo> queryPageList(ContractorQueryReq req);
/**
* 查询符合条件的分包单位列表
*
* @param req 查询条件
* @return 分包单位列表
*/
List<BusContractorVo> queryList(ContractorQueryReq req);
/**
* 新增分包单位
*
* @param req 分包单位
* @return 新增id
*/
Long insertByBo(ContractorCreateReq req);
/**
* 修改分包单位
*
* @param req 分包单位
* @return 是否修改成功
*/
Boolean updateByBo(ContractorUpdateReq req);
/**
* 校验并批量删除分包单位信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 获取分包公司视图对象
*
* @param contractor 分包公司对象
* @return 分包公司视图对象
*/
BusContractorVo getVo(BusContractor contractor);
/**
* 获取分包公司查询条件封装
*
* @param req 分包公司查询条件
* @return 分包公司查询条件封装
*/
QueryWrapper<BusContractor> getQueryWrapper(ContractorQueryReq req);
/**
* 获取分包公司分页对象视图
*
* @param contractorPage 分包公司分页对象
* @return 分包公司分页对象视图
*/
Page<BusContractorVo> getVoPage(Page<BusContractor> contractorPage);
}

View File

@ -0,0 +1,95 @@
package org.dromara.project.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.project.domain.BusProjectTeamMember;
import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberCreateReq;
import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberQueryReq;
import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberUpdateReq;
import org.dromara.project.domain.vo.BusProjectTeamMemberVo;
import java.util.Collection;
import java.util.List;
/**
* 项目班组下的成员Service接口
*
* @author lcj
* @date 2025-03-07
*/
public interface IBusProjectTeamMemberService extends IService<BusProjectTeamMember> {
/**
* 查询项目班组下的成员
*
* @param id 主键
* @return 项目班组下的成员
*/
BusProjectTeamMemberVo queryById(Long id);
/**
* 分页查询项目班组下的成员列表
*
* @param req 查询条件
* @return 项目班组下的成员分页列表
*/
Page<BusProjectTeamMemberVo> queryPageList(ProjectTeamMemberQueryReq req);
/**
* 查询符合条件的项目班组下的成员列表
*
* @param req 查询条件
* @return 项目班组下的成员列表
*/
List<BusProjectTeamMemberVo> queryList(ProjectTeamMemberQueryReq req);
/**
* 新增项目班组下的成员
*
* @param req 项目班组下的成员
* @return 是否新增成功
*/
Long insertByBo(ProjectTeamMemberCreateReq req);
/**
* 修改项目班组下的成员
*
* @param req 项目班组下的成员
* @return 是否修改成功
*/
Boolean updateByBo(ProjectTeamMemberUpdateReq req);
/**
* 校验并批量删除项目班组下的成员信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 获取项目班组成员视图对象
*
* @param projectTeamMember 项目班组成员对象
* @return 项目班组成员视图对象
*/
BusProjectTeamMemberVo getVo(BusProjectTeamMember projectTeamMember);
/**
* 获取项目班组成员查询条件封装
*
* @param req 项目班组成员查询条件
* @return 项目班组成员查询条件封装
*/
QueryWrapper<BusProjectTeamMember> getQueryWrapper(ProjectTeamMemberQueryReq req);
/**
* 获取项目班组成员分页对象视图
*
* @param projectTeamMemberPage 项目班组成员分页对象
* @return 项目班组成员分页对象视图
*/
Page<BusProjectTeamMemberVo> getVoPage(Page<BusProjectTeamMember> projectTeamMemberPage);
}

View File

@ -0,0 +1,95 @@
package org.dromara.project.service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import org.dromara.project.domain.BusProjectTeam;
import org.dromara.project.domain.req.projectteam.ProjectTeamCreateReq;
import org.dromara.project.domain.req.projectteam.ProjectTeamQueryReq;
import org.dromara.project.domain.req.projectteam.ProjectTeamUpdateReq;
import org.dromara.project.domain.vo.BusProjectTeamVo;
import java.util.Collection;
import java.util.List;
/**
* 项目班组Service接口
*
* @author lcj
* @date 2025-03-07
*/
public interface IBusProjectTeamService extends IService<BusProjectTeam> {
/**
* 查询项目班组
*
* @param id 主键
* @return 项目班组
*/
BusProjectTeamVo queryById(Long id);
/**
* 分页查询项目班组列表
*
* @param req 查询条件
* @return 项目班组分页列表
*/
Page<BusProjectTeamVo> queryPageList(ProjectTeamQueryReq req);
/**
* 查询符合条件的项目班组列表
*
* @param req 查询条件
* @return 项目班组列表
*/
List<BusProjectTeamVo> queryList(ProjectTeamQueryReq req);
/**
* 新增项目班组
*
* @param req 项目班组
* @return 是否新增成功
*/
Long insertByBo(ProjectTeamCreateReq req);
/**
* 修改项目班组
*
* @param req 项目班组
* @return 是否修改成功
*/
Boolean updateByBo(ProjectTeamUpdateReq req);
/**
* 校验并批量删除项目班组信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 获取项目班组视图对象
*
* @param projectTeam 项目班组对象
* @return 项目班组视图对象
*/
BusProjectTeamVo getVo(BusProjectTeam projectTeam);
/**
* 获取项目班组查询条件封装
*
* @param req 项目班组查询条件
* @return 项目班组查询条件封装
*/
QueryWrapper<BusProjectTeam> getQueryWrapper(ProjectTeamQueryReq req);
/**
* 获取项目班组分页对象视图
*
* @param projectTeamPage 项目班组分页对象
* @return 项目班组分页对象视图
*/
Page<BusProjectTeamVo> getVoPage(Page<BusProjectTeam> projectTeamPage);
}

View File

@ -28,14 +28,6 @@ public interface IProjectService extends IService<Project> {
*/
ProjectVo queryById(Long id);
/**
* 获取项目视图对象
*
* @param project 项目对象
* @return 项目视图对象
*/
ProjectVo getProjectVo(Project project);
/**
* 分页查询项目列表
*
@ -77,6 +69,14 @@ public interface IProjectService extends IService<Project> {
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
/**
* 获取项目视图对象
*
* @param project 项目对象
* @return 项目视图对象
*/
ProjectVo getProjectVo(Project project);
/**
* 获取项目查询条件封装
*
@ -91,6 +91,6 @@ public interface IProjectService extends IService<Project> {
* @param projectPage 项目分页对象
* @return 项目分页对象视图
*/
Page<ProjectVo> getProjectVoPage(Page<Project> projectPage);
Page<ProjectVo> getVoPage(Page<Project> projectPage);
}

View File

@ -22,22 +22,6 @@ import java.util.List;
*/
public interface IUserProjectRelevancyService extends IService<UserProjectRelevancy> {
/**
* 获取系统用户与项目关联视图
*
* @param userProjectRelevancy 系统用户与项目关联
* @return 系统用户与项目关联视图
*/
UserProjectRelevancyVo getUserProjectRelevancyVo(UserProjectRelevancy userProjectRelevancy);
/**
* 获取系统用户与项目关联分页视图
*
* @param userProjectRelevancyPage 系统用户与项目关联分页
* @return 系统用户与项目关联分页视图
*/
Page<UserProjectRelevancyVo> getUserProjectRelevancyVoPage(Page<UserProjectRelevancy> userProjectRelevancyPage);
/**
* 查询系统用户与项目关联
*
@ -104,6 +88,22 @@ public interface IUserProjectRelevancyService extends IService<UserProjectReleva
*/
Page<UserProjectRelevancyVo> queryPageByUserId(Long userId, UserProjectRelevancyQueryReq req);
/**
* 批量新增用户和项目关联
*
* @param req 新增参数
* @return 是否增加成功
*/
Boolean insertBatchByProjectList(ProjectBatchByProjectListReq req);
/**
* 获取系统用户与项目关联视图
*
* @param userProjectRelevancy 系统用户与项目关联
* @return 系统用户与项目关联视图
*/
UserProjectRelevancyVo getVo(UserProjectRelevancy userProjectRelevancy);
/**
* 获取用户和项目关联对象查询条件封装
*
@ -113,10 +113,11 @@ public interface IUserProjectRelevancyService extends IService<UserProjectReleva
QueryWrapper<UserProjectRelevancy> getQueryWrapper(UserProjectRelevancyQueryReq req);
/**
* 批量新增用户项目关联
* 获取系统用户项目关联分页视图
*
* @param req 新增参数
* @return 是否增加成功
* @param userProjectRelevancyPage 系统用户与项目关联分页
* @return 系统用户与项目关联分页视图
*/
Boolean insertBatchByProjectList(ProjectBatchByProjectListReq req);
Page<UserProjectRelevancyVo> getVoPage(Page<UserProjectRelevancy> userProjectRelevancyPage);
}

View File

@ -0,0 +1,310 @@
package org.dromara.project.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.dromara.common.core.constant.CommonConstant;
import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.sql.SqlUtil;
import org.dromara.project.domain.BusConstructionUser;
import org.dromara.project.domain.BusContractor;
import org.dromara.project.domain.req.constructionuser.ConstructionUserCreateReq;
import org.dromara.project.domain.req.constructionuser.ConstructionUserQueryReq;
import org.dromara.project.domain.req.constructionuser.ConstructionUserUpdateReq;
import org.dromara.project.domain.vo.BusConstructionUserVo;
import org.dromara.project.domain.vo.BusContractorVo;
import org.dromara.project.mapper.BusConstructionUserMapper;
import org.dromara.project.service.IBusConstructionUserService;
import org.dromara.project.service.IBusContractorService;
import org.dromara.project.service.IProjectService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 施工人员Service业务层处理
*
* @author lcj
* @date 2025-03-07
*/
@Service
public class BusConstructionUserServiceImpl extends ServiceImpl<BusConstructionUserMapper, BusConstructionUser>
implements IBusConstructionUserService {
@Resource
private IProjectService projectService;
@Resource
private IBusContractorService contractorService;
/**
* 查询施工人员
*
* @param id 主键
* @return 施工人员
*/
@Override
public BusConstructionUserVo queryById(Long id) {
BusConstructionUser constructionUser = this.getById(id);
if (constructionUser == null) {
throw new ServiceException("施工人员信息不存在", HttpStatus.NOT_FOUND);
}
return this.getVo(constructionUser);
}
/**
* 分页查询施工人员列表
*
* @param req 查询条件
* @return 施工人员分页列表
*/
@Override
public Page<BusConstructionUserVo> queryPageList(ConstructionUserQueryReq req) {
long current = req.getCurrent();
long size = req.getPageSize();
// 查询数据库
Page<BusConstructionUser> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
return this.getVoPage(result);
}
/**
* 查询符合条件的施工人员列表
*
* @param req 查询条件
* @return 施工人员列表
*/
@Override
public List<BusConstructionUserVo> queryList(ConstructionUserQueryReq req) {
QueryWrapper<BusConstructionUser> queryWrapper = this.getQueryWrapper(req);
List<BusConstructionUser> list = this.list(queryWrapper);
return list.stream().map(this::getVo).toList();
}
/**
* 新增施工人员
*
* @param req 施工人员
* @return 是否新增成功
*/
@Override
public Long insertByBo(ConstructionUserCreateReq req) {
// 将实体类和 DTO 进行转换
BusConstructionUser constructionUser = new BusConstructionUser();
BeanUtils.copyProperties(req, constructionUser);
// 数据校验
validEntityBeforeSave(constructionUser);
// 操作数据库
boolean save = this.save(constructionUser);
if (!save) {
throw new ServiceException("新增施工人员失败,数据库异常", HttpStatus.ERROR);
}
return constructionUser.getId();
}
/**
* 修改施工人员
*
* @param req 施工人员
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(ConstructionUserUpdateReq req) {
// 将实体类和 DTO 进行转换
BusConstructionUser constructionUser = new BusConstructionUser();
BeanUtils.copyProperties(req, constructionUser);
// 数据校验
validEntityBeforeSave(constructionUser);
// 判断是否存在
BusConstructionUser oldConstructionUser = this.getById(constructionUser.getId());
if (oldConstructionUser == null) {
throw new ServiceException("修改施工人员失败,数据不存在", HttpStatus.NOT_FOUND);
}
// 操作数据库
return this.updateById(constructionUser);
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusConstructionUser entity) {
// TODO 做一些数据校验,如唯一约束
// 校验项目id和对应项目是否存在
Long projectId = entity.getProjectId();
if (projectId == null) {
throw new ServiceException("项目 id 不能为空", HttpStatus.BAD_REQUEST);
}
if (projectService.getById(projectId) == null) {
throw new ServiceException("对应项目不存在", HttpStatus.NOT_FOUND);
}
// 校验分包公司id和对应项目是否存在
Long contractorId = entity.getContractorId();
if (contractorId == null) {
throw new ServiceException("分包公司 id 不能为空", HttpStatus.BAD_REQUEST);
}
if (contractorService.getById(contractorId) == null) {
throw new ServiceException("对应分包公司不存在", HttpStatus.NOT_FOUND);
}
}
/**
* 校验并批量删除施工人员信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
// TODO 做一些业务上的校验,判断是否需要校验
}
return this.removeBatchByIds(ids);
}
/**
* 获取施工人员视图对象
*
* @param constructionUser 施工人员对象
* @return 施工人员视图对象
*/
@Override
public BusConstructionUserVo getVo(BusConstructionUser constructionUser) {
// 对象转封装类
BusConstructionUserVo constructionUserVo = new BusConstructionUserVo();
if (constructionUser == null) {
return constructionUserVo;
}
BeanUtils.copyProperties(constructionUser, constructionUserVo);
// 关联查询分包公司信息信息
Long contractorId = constructionUser.getContractorId();
if (contractorId != null) {
constructionUserVo.setContractorVo(contractorService.queryById(contractorId));
}
return constructionUserVo;
}
/**
* 获取施工人员查询条件封装
*
* @param req 查询条件
* @return 查询条件封装
*/
@Override
public QueryWrapper<BusConstructionUser> getQueryWrapper(ConstructionUserQueryReq req) {
QueryWrapper<BusConstructionUser> queryWrapper = new QueryWrapper<>();
if (req == null) {
return queryWrapper;
}
// 从对象中取值
Long id = req.getId();
String openid = req.getOpenid();
String nickName = req.getNickName();
String userName = req.getUserName();
Long projectId = req.getProjectId();
Long contractorId = req.getContractorId();
Long teamId = req.getTeamId();
Long status = req.getStatus();
Long isPinch = req.getIsPinch();
String phone = req.getPhone();
Long sex = req.getSex();
String nation = req.getNation();
String sfzNumber = req.getSfzNumber();
String sfzStart = req.getSfzStart();
String sfzEnd = req.getSfzEnd();
String sfzSite = req.getSfzSite();
String sfzBirth = req.getSfzBirth();
String nativePlace = req.getNativePlace();
String yhkNumber = req.getYhkNumber();
String yhkOpeningBank = req.getYhkOpeningBank();
String yhkCardholder = req.getYhkCardholder();
Long typeOfWork = req.getTypeOfWork();
Long clock = req.getClock();
Long salary = req.getSalary();
String remark = req.getRemark();
String sortField = req.getSortField();
String sortOrder = req.getSortOrder();
String underlineSortField = StrUtil.toUnderlineCase(sortField);
// 模糊查询
queryWrapper.like(StringUtils.isNotBlank(nickName), "nick_name", nickName);
queryWrapper.like(StringUtils.isNotBlank(userName), "user_name", userName);
queryWrapper.like(StringUtils.isNotBlank(remark), "remark", remark);
queryWrapper.like(StringUtils.isNotBlank(phone), "phone", phone);
queryWrapper.like(StringUtils.isNotBlank(nation), "nation", nation);
queryWrapper.like(StringUtils.isNotBlank(sfzNumber), "sfz_number", sfzNumber);
queryWrapper.like(StringUtils.isNotBlank(sfzStart), "sfz_start", sfzStart);
queryWrapper.like(StringUtils.isNotBlank(sfzEnd), "sfz_end", sfzEnd);
queryWrapper.like(StringUtils.isNotBlank(sfzSite), "sfz_site", sfzSite);
queryWrapper.like(StringUtils.isNotBlank(sfzBirth), "sfz_birth", sfzBirth);
queryWrapper.like(StringUtils.isNotBlank(nativePlace), "native_place", nativePlace);
queryWrapper.like(StringUtils.isNotBlank(yhkNumber), "yhk_number", yhkNumber);
queryWrapper.like(StringUtils.isNotBlank(yhkOpeningBank), "yhk_opening_bank", yhkOpeningBank);
queryWrapper.like(StringUtils.isNotBlank(yhkCardholder), "yhk_cardholder", yhkCardholder);
// 精确查询
queryWrapper.eq(ObjectUtils.isNotEmpty(openid), "openid", openid);
queryWrapper.eq(ObjectUtils.isNotEmpty(status), "status", status);
queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id);
queryWrapper.eq(ObjectUtils.isNotEmpty(projectId), "project_id", projectId);
queryWrapper.eq(ObjectUtils.isNotEmpty(contractorId), "contractor_id", contractorId);
queryWrapper.eq(ObjectUtils.isNotEmpty(teamId), "team_id", teamId);
queryWrapper.eq(ObjectUtils.isNotEmpty(isPinch), "is_pinch", isPinch);
queryWrapper.eq(ObjectUtils.isNotEmpty(sex), "sex", sex);
queryWrapper.eq(ObjectUtils.isNotEmpty(typeOfWork), "type_of_work", typeOfWork);
queryWrapper.eq(ObjectUtils.isNotEmpty(clock), "clock", clock);
queryWrapper.eq(ObjectUtils.isNotEmpty(salary), "salary", salary);
// 排序规则
queryWrapper.orderBy(SqlUtil.validSortField(sortField),
sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
underlineSortField);
return queryWrapper;
}
/**
* 获取施工人员分页对象视图
*
* @param constructionUserPage 施工人员分页对象
* @return 施工人员分页对象视图
*/
@Override
public Page<BusConstructionUserVo> getVoPage(Page<BusConstructionUser> constructionUserPage) {
List<BusConstructionUser> constructionUserList = constructionUserPage.getRecords();
Page<BusConstructionUserVo> constructionUserVoPage = new Page<>(
constructionUserPage.getCurrent(),
constructionUserPage.getSize(),
constructionUserPage.getTotal());
if (CollUtil.isEmpty(constructionUserList)) {
return constructionUserVoPage;
}
// 关联查询分包公司信息
Set<Long> contractorIdSet = constructionUserList.stream().map(BusConstructionUser::getContractorId)
.collect(Collectors.toSet());
Map<Long, List<BusContractor>> contractorIdContractorList = contractorService.listByIds(contractorIdSet).stream()
.collect(Collectors.groupingBy(BusContractor::getId));
// 填充信息
List<BusConstructionUserVo> constructionUserVoList = constructionUserList.stream().map(constructionUser -> {
BusConstructionUserVo constructionUserVo = new BusConstructionUserVo();
BeanUtils.copyProperties(constructionUser, constructionUserVo);
Long contractorId = constructionUser.getContractorId();
BusContractorVo contractor = null;
if (contractorIdContractorList.containsKey(contractorId)) {
contractor = contractorService.getVo(contractorIdContractorList.get(contractorId).get(0));
}
constructionUserVo.setContractorVo(contractor);
return constructionUserVo;
}).toList();
constructionUserVoPage.setRecords(constructionUserVoList);
return constructionUserVoPage;
}
}

View File

@ -0,0 +1,231 @@
package org.dromara.project.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.dromara.common.core.constant.CommonConstant;
import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.sql.SqlUtil;
import org.dromara.project.domain.BusContractor;
import org.dromara.project.domain.req.contractor.ContractorCreateReq;
import org.dromara.project.domain.req.contractor.ContractorQueryReq;
import org.dromara.project.domain.req.contractor.ContractorUpdateReq;
import org.dromara.project.domain.vo.BusContractorVo;
import org.dromara.project.mapper.BusContractorMapper;
import org.dromara.project.service.IBusContractorService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
/**
* 分包单位Service业务层处理
*
* @author lcj
* @date 2025-03-07
*/
@Service
public class BusContractorServiceImpl extends ServiceImpl<BusContractorMapper, BusContractor>
implements IBusContractorService {
/**
* 查询分包单位
*
* @param id 主键
* @return 分包单位
*/
@Override
public BusContractorVo queryById(Long id) {
BusContractor contractor = this.getById(id);
if (contractor == null) {
throw new ServiceException("分包单位信息不存在", HttpStatus.NOT_FOUND);
}
return this.getVo(contractor);
}
/**
* 分页查询分包单位列表
*
* @param req 查询条件
* @return 分包单位分页列表
*/
@Override
public Page<BusContractorVo> queryPageList(ContractorQueryReq req) {
long current = req.getCurrent();
long size = req.getPageSize();
// 查询数据库
Page<BusContractor> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
return this.getVoPage(result);
}
/**
* 查询符合条件的分包单位列表
*
* @param req 查询条件
* @return 分包单位列表
*/
@Override
public List<BusContractorVo> queryList(ContractorQueryReq req) {
QueryWrapper<BusContractor> queryWrapper = this.getQueryWrapper(req);
List<BusContractor> list = this.list(queryWrapper);
return list.stream().map(this::getVo).toList();
}
/**
* 新增分包单位
*
* @param req 分包单位
* @return 新增id
*/
@Override
public Long insertByBo(ContractorCreateReq req) {
// 将实体类和 DTO 进行转换
BusContractor contractor = new BusContractor();
BeanUtils.copyProperties(req, contractor);
// 数据校验
validEntityBeforeSave(contractor);
// 操作数据库
boolean save = this.save(contractor);
if (!save) {
throw new ServiceException("新增施工人员失败,数据库异常", HttpStatus.ERROR);
}
return contractor.getId();
}
/**
* 修改分包单位
*
* @param req 分包单位
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(ContractorUpdateReq req) {
// 将实体类和 DTO 进行转换
BusContractor contractor = new BusContractor();
BeanUtils.copyProperties(req, contractor);
// 数据校验
validEntityBeforeSave(contractor);
// 判断是否存在
BusContractor oldContractor = this.getById(contractor.getId());
if (oldContractor == null) {
throw new ServiceException("修改施工人员失败,数据不存在", HttpStatus.NOT_FOUND);
}
// 操作数据库
return this.updateById(contractor);
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusContractor entity) {
// TODO 做一些数据校验,如唯一约束
String name = entity.getName();
if (StringUtils.isBlank(name)) {
throw new ServiceException("分包单位名称不能为空", HttpStatus.BAD_REQUEST);
}
String principal = entity.getPrincipal();
if (StringUtils.isBlank(principal)) {
throw new ServiceException("分包单位负责人不能为空", HttpStatus.BAD_REQUEST);
}
}
/**
* 校验并批量删除分包单位信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return this.removeBatchByIds(ids);
}
/**
* 获取分包公司视图对象
*
* @param contractor 分包公司对象
* @return 分包公司视图对象
*/
@Override
public BusContractorVo getVo(BusContractor contractor) {
// 对象转封装类
BusContractorVo contractorVo = new BusContractorVo();
if (contractor == null) {
return contractorVo;
}
BeanUtils.copyProperties(contractor, contractorVo);
return contractorVo;
}
/**
* 获取分包公司查询条件封装
*
* @param req 分包公司查询条件
* @return 分包公司查询条件封装
*/
@Override
public QueryWrapper<BusContractor> getQueryWrapper(ContractorQueryReq req) {
QueryWrapper<BusContractor> queryWrapper = new QueryWrapper<>();
if (req == null) {
return queryWrapper;
}
// 从对象中取值
Long id = req.getId();
String name = req.getName();
String principal = req.getPrincipal();
String principalPhone = req.getPrincipalPhone();
String custodian = req.getCustodian();
String custodianPhone = req.getCustodianPhone();
String remark = req.getRemark();
String sortField = req.getSortField();
String sortOrder = req.getSortOrder();
String underlineSortField = StrUtil.toUnderlineCase(sortField);
// 模糊查询
queryWrapper.like(StringUtils.isNotBlank(name), "name", name);
queryWrapper.like(StringUtils.isNotBlank(principal), "principal", principal);
queryWrapper.like(StringUtils.isNotBlank(principalPhone), "principal_phone", principalPhone);
queryWrapper.like(StringUtils.isNotBlank(custodian), "custodian", custodian);
queryWrapper.like(StringUtils.isNotBlank(custodianPhone), "custodian_phone", custodianPhone);
queryWrapper.like(StringUtils.isNotBlank(remark), "remark", remark);
// 精确查询
queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id);
// 排序规则
queryWrapper.orderBy(SqlUtil.validSortField(sortField),
sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
underlineSortField);
return queryWrapper;
}
/**
* 获取分包公司分页对象视图
*
* @param contractorPage 分包公司分页对象
* @return 分包公司分页对象视图
*/
@Override
public Page<BusContractorVo> getVoPage(Page<BusContractor> contractorPage) {
List<BusContractor> contractorList = contractorPage.getRecords();
Page<BusContractorVo> contractorVoPage = new Page<>(
contractorPage.getCurrent(),
contractorPage.getSize(),
contractorPage.getTotal());
if (CollUtil.isEmpty(contractorList)) {
return contractorVoPage;
}
List<BusContractorVo> contractorVoList = contractorList.stream().map(this::getVo).toList();
contractorVoPage.setRecords(contractorVoList);
return contractorVoPage;
}
}

View File

@ -0,0 +1,289 @@
package org.dromara.project.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.dromara.common.core.constant.CommonConstant;
import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.sql.SqlUtil;
import org.dromara.project.domain.BusConstructionUser;
import org.dromara.project.domain.BusProjectTeamMember;
import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberCreateReq;
import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberQueryReq;
import org.dromara.project.domain.req.projectteammember.ProjectTeamMemberUpdateReq;
import org.dromara.project.domain.vo.BusConstructionUserVo;
import org.dromara.project.domain.vo.BusProjectTeamMemberVo;
import org.dromara.project.mapper.BusProjectTeamMemberMapper;
import org.dromara.project.service.IBusConstructionUserService;
import org.dromara.project.service.IBusProjectTeamMemberService;
import org.dromara.project.service.IBusProjectTeamService;
import org.dromara.project.service.IProjectService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 项目班组下的成员Service业务层处理
*
* @author lcj
* @date 2025-03-07
*/
@Service
public class BusProjectTeamMemberServiceImpl extends ServiceImpl<BusProjectTeamMemberMapper, BusProjectTeamMember>
implements IBusProjectTeamMemberService {
@Resource
private IBusConstructionUserService constructionUserService;
@Resource
private IBusProjectTeamService projectTeamService;
@Resource
private IProjectService projectService;
/**
* 查询项目班组下的成员
*
* @param id 主键
* @return 项目班组下的成员
*/
@Override
public BusProjectTeamMemberVo queryById(Long id) {
BusProjectTeamMember projectTeamMember = this.getById(id);
if (projectTeamMember == null) {
throw new ServiceException("对应项目班组下的成员不存在", HttpStatus.NOT_FOUND);
}
return this.getVo(projectTeamMember);
}
/**
* 分页查询项目班组下的成员列表
*
* @param req 查询条件
* @return 项目班组下的成员分页列表
*/
@Override
public Page<BusProjectTeamMemberVo> queryPageList(ProjectTeamMemberQueryReq req) {
long current = req.getCurrent();
long size = req.getPageSize();
// 查询数据库
Page<BusProjectTeamMember> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
return this.getVoPage(result);
}
/**
* 查询符合条件的项目班组下的成员列表
*
* @param req 查询条件
* @return 项目班组下的成员列表
*/
@Override
public List<BusProjectTeamMemberVo> queryList(ProjectTeamMemberQueryReq req) {
QueryWrapper<BusProjectTeamMember> queryWrapper = this.getQueryWrapper(req);
List<BusProjectTeamMember> list = this.list(queryWrapper);
return list.stream().map(this::getVo).toList();
}
/**
* 新增项目班组下的成员
*
* @param req 项目班组下的成员
* @return 是否新增成功
*/
@Override
public Long insertByBo(ProjectTeamMemberCreateReq req) {
// 将实体类和 DTO 进行转换
BusProjectTeamMember projectTeamMember = new BusProjectTeamMember();
BeanUtils.copyProperties(req, projectTeamMember);
// 数据校验
validEntityBeforeSave(projectTeamMember);
// 判断对应的用户与项目关联是否存在
if (this.getOne(new LambdaQueryWrapper<BusProjectTeamMember>()
.eq(BusProjectTeamMember::getMemberId, projectTeamMember.getMemberId())
.eq(BusProjectTeamMember::getTeamId, projectTeamMember.getTeamId())) != null) {
throw new ServiceException("用户和项目班组关联已存在", HttpStatus.CONFLICT);
}
// 操作数据库
boolean save = this.save(projectTeamMember);
if (!save) {
throw new ServiceException("新增项目班组下的成员失败,数据库异常", HttpStatus.ERROR);
}
return projectTeamMember.getId();
}
/**
* 修改项目班组下的成员
*
* @param req 项目班组下的成员
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(ProjectTeamMemberUpdateReq req) {
// 将实体类和 DTO 进行转换
BusProjectTeamMember projectTeamMember = new BusProjectTeamMember();
BeanUtils.copyProperties(req, projectTeamMember);
// 数据校验
validEntityBeforeSave(projectTeamMember);
// 判断是否存在
BusProjectTeamMember oldProjectTeamMember = this.getById(projectTeamMember.getId());
if (oldProjectTeamMember == null) {
throw new ServiceException("修改项目班组下的成员,数据不存在", HttpStatus.NOT_FOUND);
}
// 操作数据库
return this.updateById(projectTeamMember);
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusProjectTeamMember entity) {
// TODO 做一些数据校验,如唯一约束
// 判断对应项目是否存在
Long projectId = entity.getProjectId();
if (projectId == null) {
throw new ServiceException("项目 id 不能为空", HttpStatus.BAD_REQUEST);
}
if (projectService.getById(projectId) == null) {
throw new ServiceException("对应项目不存在", HttpStatus.NOT_FOUND);
}
// 判断对应成员是否存在
Long memberId = entity.getMemberId();
if (memberId == null) {
throw new ServiceException("人员 id 不能为空", HttpStatus.BAD_REQUEST);
}
if (constructionUserService.getById(memberId) == null) {
throw new ServiceException("对应人员不存在", HttpStatus.NOT_FOUND);
}
// 判断对应班组是否存在
Long teamId = entity.getTeamId();
if (teamId == null) {
throw new ServiceException("班组 id 不能为空", HttpStatus.BAD_REQUEST);
}
if (projectTeamService.getById(teamId) == null) {
throw new ServiceException("对应班组不存在", HttpStatus.NOT_FOUND);
}
}
/**
* 校验并批量删除项目班组下的成员信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return this.removeBatchByIds(ids);
}
/**
* 获取项目班组成员视图对象
*
* @param projectTeamMember 项目班组成员对象
* @return 项目班组成员视图对象
*/
@Override
public BusProjectTeamMemberVo getVo(BusProjectTeamMember projectTeamMember) {
// 对象转封装类
BusProjectTeamMemberVo projectTeamMemberVo = new BusProjectTeamMemberVo();
if (projectTeamMember == null) {
return projectTeamMemberVo;
}
BeanUtils.copyProperties(projectTeamMember, projectTeamMemberVo);
// 关联获取施工人员信息
Long memberId = projectTeamMember.getMemberId();
projectTeamMemberVo.setConstructionUserVo(constructionUserService.queryById(memberId));
return projectTeamMemberVo;
}
/**
* 获取项目班组成员查询条件封装
*
* @param req 项目班组成员查询条件
* @return 项目班组成员查询条件封装
*/
@Override
public QueryWrapper<BusProjectTeamMember> getQueryWrapper(ProjectTeamMemberQueryReq req) {
QueryWrapper<BusProjectTeamMember> queryWrapper = new QueryWrapper<>();
if (req == null) {
return queryWrapper;
}
// 从对象中取值
Long id = req.getId();
Long teamId = req.getTeamId();
Long projectId = req.getProjectId();
Long memberId = req.getMemberId();
Long postId = req.getPostId();
String remark = req.getRemark();
String sortField = req.getSortField();
String sortOrder = req.getSortOrder();
String underlineSortField = StrUtil.toUnderlineCase(sortField);
// 模糊查询
queryWrapper.like(StringUtils.isNotBlank(remark), "remark", remark);
// 精确查询
queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id);
queryWrapper.eq(ObjectUtils.isNotEmpty(projectId), "project_id", projectId);
queryWrapper.eq(ObjectUtils.isNotEmpty(teamId), "team_id", teamId);
queryWrapper.eq(ObjectUtils.isNotEmpty(memberId), "member_id", memberId);
queryWrapper.eq(ObjectUtils.isNotEmpty(postId), "post_id", postId);
// 排序规则
queryWrapper.orderBy(SqlUtil.validSortField(sortField),
sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
underlineSortField);
return queryWrapper;
}
/**
* 获取项目班组成员分页对象视图
*
* @param projectTeamMemberPage 项目班组成员分页对象
* @return 项目班组成员分页对象视图
*/
@Override
public Page<BusProjectTeamMemberVo> getVoPage(Page<BusProjectTeamMember> projectTeamMemberPage) {
List<BusProjectTeamMember> projectTeamMemberList = projectTeamMemberPage.getRecords();
Page<BusProjectTeamMemberVo> projectTeamMemberVoPage = new Page<>(
projectTeamMemberPage.getCurrent(),
projectTeamMemberPage.getSize(),
projectTeamMemberPage.getTotal());
if (CollUtil.isEmpty(projectTeamMemberList)) {
return projectTeamMemberVoPage;
}
// 关联查询施工人员信息
Set<Long> teamMemberIdSet = projectTeamMemberList.stream().map(BusProjectTeamMember::getMemberId)
.collect(Collectors.toSet());
Map<Long, List<BusConstructionUser>> contractorIdContractorList = constructionUserService.listByIds(teamMemberIdSet).stream()
.collect(Collectors.groupingBy(BusConstructionUser::getId));
// 填充信息
List<BusProjectTeamMemberVo> projectTeamMemberVoList = projectTeamMemberList.stream().map(projectTeamMember -> {
BusProjectTeamMemberVo projectTeamMemberVo = new BusProjectTeamMemberVo();
BeanUtils.copyProperties(projectTeamMember, projectTeamMemberVo);
Long memberId = projectTeamMember.getMemberId();
BusConstructionUserVo constructionUserVo = null;
if (contractorIdContractorList.containsKey(memberId)) {
constructionUserVo = constructionUserService.getVo(contractorIdContractorList.get(memberId).get(0));
}
projectTeamMemberVo.setConstructionUserVo(constructionUserVo);
return projectTeamMemberVo;
}).toList();
projectTeamMemberVoPage.setRecords(projectTeamMemberVoList);
return projectTeamMemberVoPage;
}
}

View File

@ -0,0 +1,241 @@
package org.dromara.project.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import jakarta.annotation.Resource;
import org.dromara.common.core.constant.CommonConstant;
import org.dromara.common.core.constant.HttpStatus;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.ObjectUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.core.utils.sql.SqlUtil;
import org.dromara.project.domain.BusProjectTeam;
import org.dromara.project.domain.req.projectteam.ProjectTeamCreateReq;
import org.dromara.project.domain.req.projectteam.ProjectTeamQueryReq;
import org.dromara.project.domain.req.projectteam.ProjectTeamUpdateReq;
import org.dromara.project.domain.vo.BusProjectTeamVo;
import org.dromara.project.mapper.BusProjectTeamMapper;
import org.dromara.project.service.IBusProjectTeamService;
import org.dromara.project.service.IProjectService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
/**
* 项目班组Service业务层处理
*
* @author lcj
* @date 2025-03-07
*/
@Service
public class BusProjectTeamServiceImpl extends ServiceImpl<BusProjectTeamMapper, BusProjectTeam>
implements IBusProjectTeamService {
@Resource
private IProjectService projectService;
/**
* 查询项目班组
*
* @param id 主键
* @return 项目班组
*/
@Override
public BusProjectTeamVo queryById(Long id) {
BusProjectTeam projectTeam = this.getById(id);
if (projectTeam == null) {
throw new ServiceException("对应项目班组不存在", HttpStatus.NOT_FOUND);
}
return this.getVo(projectTeam);
}
/**
* 分页查询项目班组列表
*
* @param req 查询条件
* @return 项目班组分页列表
*/
@Override
public Page<BusProjectTeamVo> queryPageList(ProjectTeamQueryReq req) {
long current = req.getCurrent();
long size = req.getPageSize();
// 查询数据库
Page<BusProjectTeam> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
return this.getVoPage(result);
}
/**
* 查询符合条件的项目班组列表
*
* @param req 查询条件
* @return 项目班组列表
*/
@Override
public List<BusProjectTeamVo> queryList(ProjectTeamQueryReq req) {
QueryWrapper<BusProjectTeam> queryWrapper = this.getQueryWrapper(req);
List<BusProjectTeam> list = this.list(queryWrapper);
return list.stream().map(this::getVo).toList();
}
/**
* 新增项目班组
*
* @param req 项目班组
* @return 是否新增成功
*/
@Override
public Long insertByBo(ProjectTeamCreateReq req) {
// 将实体类和 DTO 进行转换
BusProjectTeam projectTeam = new BusProjectTeam();
BeanUtils.copyProperties(req, projectTeam);
// 数据校验
validEntityBeforeSave(projectTeam);
// 操作数据库
boolean save = this.save(projectTeam);
if (!save) {
throw new ServiceException("新增施工人员失败,数据库异常", HttpStatus.ERROR);
}
return projectTeam.getId();
}
/**
* 修改项目班组
*
* @param req 项目班组
* @return 是否修改成功
*/
@Override
public Boolean updateByBo(ProjectTeamUpdateReq req) {
// 将实体类和 DTO 进行转换
BusProjectTeam projectTeam = new BusProjectTeam();
BeanUtils.copyProperties(req, projectTeam);
// 数据校验
validEntityBeforeSave(projectTeam);
// 判断是否存在
BusProjectTeam oldProjectTeam = this.getById(projectTeam.getId());
if (oldProjectTeam == null) {
throw new ServiceException("修改项目班组失败,数据不存在", HttpStatus.NOT_FOUND);
}
// 操作数据库
return this.updateById(projectTeam);
}
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(BusProjectTeam entity) {
// TODO 做一些数据校验,如唯一约束
Long projectId = entity.getProjectId();
// 判断是否重名
String teamName = entity.getTeamName();
LambdaQueryWrapper<BusProjectTeam> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(BusProjectTeam::getTeamName, teamName);
long count = this.count(queryWrapper);
if (count > 0) {
throw new ServiceException("项目组名重复", HttpStatus.BAD_REQUEST);
}
if (projectId == null) {
throw new ServiceException("项目 id 不能为空", HttpStatus.BAD_REQUEST);
}
// 查询项目是否存在
if (projectService.getById(projectId) == null) {
throw new ServiceException("对应项目不存在", HttpStatus.NOT_FOUND);
}
}
/**
* 校验并批量删除项目班组信息
*
* @param ids 待删除的主键集合
* @param isValid 是否进行有效性校验
* @return 是否删除成功
*/
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return this.removeBatchByIds(ids);
}
/**
* 获取项目班组视图对象
*
* @param projectTeam 项目班组对象
* @return 项目班组视图对象
*/
@Override
public BusProjectTeamVo getVo(BusProjectTeam projectTeam) {
// 对象转封装类
BusProjectTeamVo projectTeamVo = new BusProjectTeamVo();
if (projectTeam == null) {
return projectTeamVo;
}
BeanUtils.copyProperties(projectTeam, projectTeamVo);
return projectTeamVo;
}
/**
* 获取项目班组查询条件封装
*
* @param req 项目班组查询条件
* @return 项目班组查询条件封装
*/
@Override
public QueryWrapper<BusProjectTeam> getQueryWrapper(ProjectTeamQueryReq req) {
QueryWrapper<BusProjectTeam> queryWrapper = new QueryWrapper<>();
if (req == null) {
return queryWrapper;
}
// 从对象中取值
Long id = req.getId();
Long projectId = req.getProjectId();
String teamName = req.getTeamName();
Long isClockIn = req.getIsClockIn();
String remark = req.getRemark();
String sortField = req.getSortField();
String sortOrder = req.getSortOrder();
String underlineSortField = StrUtil.toUnderlineCase(sortField);
// 模糊查询
queryWrapper.like(StringUtils.isNotBlank(teamName), "team_name", teamName);
queryWrapper.like(StringUtils.isNotBlank(remark), "remark", remark);
// 精确查询
queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id);
queryWrapper.eq(ObjectUtils.isNotEmpty(projectId), "project_id", projectId);
queryWrapper.eq(ObjectUtils.isNotEmpty(isClockIn), "is_clock_in", isClockIn);
// 排序规则
queryWrapper.orderBy(SqlUtil.validSortField(sortField),
sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
underlineSortField);
return queryWrapper;
}
/**
* 获取项目班组分页对象视图
*
* @param projectTeamPage 项目班组分页对象
* @return 项目班组分页对象视图
*/
@Override
public Page<BusProjectTeamVo> getVoPage(Page<BusProjectTeam> projectTeamPage) {
List<BusProjectTeam> projectTeamList = projectTeamPage.getRecords();
Page<BusProjectTeamVo> projectTeamVoPage = new Page<>(
projectTeamPage.getCurrent(),
projectTeamPage.getSize(),
projectTeamPage.getTotal());
if (CollUtil.isEmpty(projectTeamList)) {
return projectTeamVoPage;
}
List<BusProjectTeamVo> projectTeamVoList = projectTeamList.stream().map(this::getVo).toList();
projectTeamVoPage.setRecords(projectTeamVoList);
return projectTeamVoPage;
}
}

View File

@ -57,17 +57,6 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project>
return baseMapper.selectVoById(id);
}
@Override
public ProjectVo getProjectVo(Project project) {
if (project == null) {
return null;
}
// 对象转封装类
ProjectVo projectVo = new ProjectVo();
BeanUtils.copyProperties(project, projectVo);
return projectVo;
}
/**
* 分页查询项目列表
*
@ -80,7 +69,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project>
long size = req.getPageSize();
// 查询数据库
Page<Project> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
return this.getProjectVoPage(result);
return this.getVoPage(result);
}
/**
@ -194,6 +183,23 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project>
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 获取项目视图对象
*
* @param project 项目对象
* @return 项目视图对象
*/
@Override
public ProjectVo getProjectVo(Project project) {
if (project == null) {
return null;
}
// 对象转封装类
ProjectVo projectVo = new ProjectVo();
BeanUtils.copyProperties(project, projectVo);
return projectVo;
}
/**
* 获取项目查询条件封装
*
@ -255,7 +261,7 @@ public class ProjectServiceImpl extends ServiceImpl<ProjectMapper, Project>
@Override
public Page<ProjectVo> getProjectVoPage(Page<Project> projectPage) {
public Page<ProjectVo> getVoPage(Page<Project> projectPage) {
List<Project> projectList = projectPage.getRecords();
Page<ProjectVo> projectVoPage = new Page<>(projectPage.getCurrent(), projectPage.getSize(), projectPage.getTotal());
if (CollUtil.isEmpty(projectList)) {

View File

@ -24,6 +24,7 @@ import org.dromara.project.domain.vo.UserProjectRelevancyVo;
import org.dromara.project.mapper.UserProjectRelevancyMapper;
import org.dromara.project.service.IProjectService;
import org.dromara.project.service.IUserProjectRelevancyService;
import org.dromara.system.service.ISysUserService;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -49,37 +50,8 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
@Resource
private IProjectService projectService;
@Override
public UserProjectRelevancyVo getUserProjectRelevancyVo(UserProjectRelevancy userProjectRelevancy) {
// 对象转封装类
UserProjectRelevancyVo userProjectRelevancyVo = new UserProjectRelevancyVo();
if (userProjectRelevancy == null) {
return userProjectRelevancyVo;
}
BeanUtils.copyProperties(userProjectRelevancy, userProjectRelevancyVo);
// 关联查询项目信息
Long projectId = userProjectRelevancy.getProjectId();
if (projectId != null) {
userProjectRelevancyVo.setProject(projectService.queryById(projectId));
}
return userProjectRelevancyVo;
}
@Override
public Page<UserProjectRelevancyVo> getUserProjectRelevancyVoPage(Page<UserProjectRelevancy> userProjectRelevancyPage) {
List<UserProjectRelevancy> userProjectRelevancyList = userProjectRelevancyPage.getRecords();
Page<UserProjectRelevancyVo> userProjectRelevancyVoPage = new Page<>(
userProjectRelevancyPage.getCurrent(),
userProjectRelevancyPage.getSize(),
userProjectRelevancyPage.getTotal());
if (CollUtil.isEmpty(userProjectRelevancyList)) {
return userProjectRelevancyVoPage;
}
// 对象列表 => 封装对象列表
List<UserProjectRelevancyVo> userProjectRelevancyVoList = userProjectRelevancyList.stream().map(this::getUserProjectRelevancyVo).toList();
userProjectRelevancyVoPage.setRecords(userProjectRelevancyVoList);
return userProjectRelevancyVoPage;
}
@Resource
private ISysUserService userService;
/**
* 查询系统用户与项目关联
@ -92,7 +64,7 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
// 查询数据
UserProjectRelevancy userProjectRelevancy = this.getById(id);
// 封装并返回
return this.getUserProjectRelevancyVo(userProjectRelevancy);
return this.getVo(userProjectRelevancy);
}
/**
@ -108,7 +80,7 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
QueryWrapper<UserProjectRelevancy> queryWrapper = this.getQueryWrapper(req);
// 查询数据库
Page<UserProjectRelevancy> result = this.page(new Page<>(current, size), this.getQueryWrapper(req));
return this.getUserProjectRelevancyVoPage(result);
return this.getVoPage(result);
}
/**
@ -136,10 +108,6 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
BeanUtils.copyProperties(req, userProjectRelevancy);
// 数据校验
validEntityBeforeSave(userProjectRelevancy);
// 判断对应项目是否存在
if (projectService.getById(userProjectRelevancy.getProjectId()) == null) {
throw new ServiceException("项目不存在", HttpStatus.NOT_FOUND);
}
// 判断对应的用户与项目关联是否存在
if (this.getOne(new LambdaQueryWrapper<UserProjectRelevancy>()
.eq(UserProjectRelevancy::getUserId, userProjectRelevancy.getUserId())
@ -190,7 +158,14 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
if (userId == null) {
throw new ServiceException("用户 id 不能为空", HttpStatus.BAD_REQUEST);
}
// 判断对应项目是否存在
if (projectService.getById(projectId) == null) {
throw new ServiceException("项目不存在", HttpStatus.NOT_FOUND);
}
// 判断对应用户是否存在
if (userService.selectUserById(userId) == null) {
throw new ServiceException("用户不存在", HttpStatus.NOT_FOUND);
}
}
/**
@ -243,6 +218,13 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
.toList();
}
/**
* 获取当前登录用户项目分页
*
* @param userId 登录用户ID
* @param req 分页查询条件
* @return 当前登录用户项目分页
*/
@Override
public Page<UserProjectRelevancyVo> queryPageByUserId(Long userId, UserProjectRelevancyQueryReq req) {
long current = req.getCurrent();
@ -252,31 +234,7 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
QueryWrapper<UserProjectRelevancy> queryWrapper = this.getQueryWrapper(req);
// 查询数据库
Page<UserProjectRelevancy> result = this.page(new Page<>(current, size), queryWrapper);
return this.getUserProjectRelevancyVoPage(result);
}
@Override
public QueryWrapper<UserProjectRelevancy> getQueryWrapper(UserProjectRelevancyQueryReq req) {
QueryWrapper<UserProjectRelevancy> queryWrapper = new QueryWrapper<>();
if (req == null) {
return queryWrapper;
}
// 从对象中取值
Long id = req.getId();
Long userId = req.getUserId();
Long projectId = req.getProjectId();
String sortField = req.getSortField();
String sortOrder = req.getSortOrder();
String underlineSortField = StrUtil.toUnderlineCase(sortField);
// 精确查询
queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id);
queryWrapper.eq(ObjectUtils.isNotEmpty(userId), "user_id", userId);
queryWrapper.eq(ObjectUtils.isNotEmpty(projectId), "project_id", projectId);
// 排序规则
queryWrapper.orderBy(SqlUtil.validSortField(sortField),
sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
underlineSortField);
return queryWrapper;
return this.getVoPage(result);
}
/**
@ -315,4 +273,79 @@ public class UserProjectRelevancyServiceImpl extends ServiceImpl<UserProjectRele
// 当用户与项目关系存在时修改,不存在则保存
return this.saveOrUpdateBatch(userProjectRelevancyList);
}
/**
* 获取系统用户与项目关联视图
*
* @param userProjectRelevancy 系统用户与项目关联
* @return 系统用户与项目关联视图
*/
@Override
public UserProjectRelevancyVo getVo(UserProjectRelevancy userProjectRelevancy) {
// 对象转封装类
UserProjectRelevancyVo userProjectRelevancyVo = new UserProjectRelevancyVo();
if (userProjectRelevancy == null) {
return userProjectRelevancyVo;
}
BeanUtils.copyProperties(userProjectRelevancy, userProjectRelevancyVo);
// 关联查询项目信息
Long projectId = userProjectRelevancy.getProjectId();
if (projectId != null) {
userProjectRelevancyVo.setProject(projectService.queryById(projectId));
}
return userProjectRelevancyVo;
}
/**
* 获取用户和项目关联对象查询条件封装
*
* @param req 查询条件
* @return 查询条件封装
*/
@Override
public QueryWrapper<UserProjectRelevancy> getQueryWrapper(UserProjectRelevancyQueryReq req) {
QueryWrapper<UserProjectRelevancy> queryWrapper = new QueryWrapper<>();
if (req == null) {
return queryWrapper;
}
// 从对象中取值
Long id = req.getId();
Long userId = req.getUserId();
Long projectId = req.getProjectId();
String sortField = req.getSortField();
String sortOrder = req.getSortOrder();
String underlineSortField = StrUtil.toUnderlineCase(sortField);
// 精确查询
queryWrapper.eq(ObjectUtils.isNotEmpty(id), "id", id);
queryWrapper.eq(ObjectUtils.isNotEmpty(userId), "user_id", userId);
queryWrapper.eq(ObjectUtils.isNotEmpty(projectId), "project_id", projectId);
// 排序规则
queryWrapper.orderBy(SqlUtil.validSortField(sortField),
sortOrder.equals(CommonConstant.SORT_ORDER_ASC),
underlineSortField);
return queryWrapper;
}
/**
* 获取系统用户与项目关联分页视图
*
* @param userProjectRelevancyPage 系统用户与项目关联分页
* @return 系统用户与项目关联分页视图
*/
@Override
public Page<UserProjectRelevancyVo> getVoPage(Page<UserProjectRelevancy> userProjectRelevancyPage) {
List<UserProjectRelevancy> userProjectRelevancyList = userProjectRelevancyPage.getRecords();
Page<UserProjectRelevancyVo> userProjectRelevancyVoPage = new Page<>(
userProjectRelevancyPage.getCurrent(),
userProjectRelevancyPage.getSize(),
userProjectRelevancyPage.getTotal());
if (CollUtil.isEmpty(userProjectRelevancyList)) {
return userProjectRelevancyVoPage;
}
// 对象列表 => 封装对象列表
List<UserProjectRelevancyVo> userProjectRelevancyVoList = userProjectRelevancyList.stream().map(this::getVo).toList();
userProjectRelevancyVoPage.setRecords(userProjectRelevancyVoList);
return userProjectRelevancyVoPage;
}
}

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.project.mapper.BusConstructionUserMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.project.mapper.BusContractorMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.project.mapper.BusProjectTeamMapper">
</mapper>

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.project.mapper.BusProjectTeamMemberMapper">
</mapper>

View File

@ -0,0 +1,239 @@
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896943300447367169, '项目', '1', '1', 'project', 'project/project/index', 1, 0, 'C', '0', '0',
'project:project:list', '#', 103, 1, sysdate(), null, null, '项目菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896943300447367170, '项目查询', 1896943300447367169, '1', '#', '', 1, 0, 'F', '0', '0',
'project:project:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896943300447367171, '项目新增', 1896943300447367169, '2', '#', '', 1, 0, 'F', '0', '0', 'project:project:add',
'#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896943300447367172, '项目修改', 1896943300447367169, '3', '#', '', 1, 0, 'F', '0', '0', 'project:project:edit',
'#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896943300447367173, '项目删除', 1896943300447367169, '4', '#', '', 1, 0, 'F', '0', '0',
'project:project:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896943300447367174, '项目导出', 1896943300447367169, '5', '#', '', 1, 0, 'F', '0', '0',
'project:project:export', '#', 103, 1, sysdate(), null, null, '');
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896949180526047233, '系统用户与项目关联', '1', '1', 'projectRelevancy', 'project/projectRelevancy/index', 1, 0,
'C', '0', '0', 'project:projectRelevancy:list', '#', 103, 1, sysdate(), null, null, '系统用户与项目关联菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896949180526047234, '系统用户与项目关联查询', 1896949180526047233, '1', '#', '', 1, 0, 'F', '0', '0',
'project:projectRelevancy:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896949180526047235, '系统用户与项目关联新增', 1896949180526047233, '2', '#', '', 1, 0, 'F', '0', '0',
'project:projectRelevancy:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896949180526047236, '系统用户与项目关联修改', 1896949180526047233, '3', '#', '', 1, 0, 'F', '0', '0',
'project:projectRelevancy:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896949180526047237, '系统用户与项目关联删除', 1896949180526047233, '4', '#', '', 1, 0, 'F', '0', '0',
'project:projectRelevancy:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896949180526047238, '系统用户与项目关联导出', 1896949180526047233, '5', '#', '', 1, 0, 'F', '0', '0',
'project:projectRelevancy:export', '#', 103, 1, sysdate(), null, null, '');
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479771016716290, '公司', '1', '1', 'company', 'materials/company/index', 1, 0, 'C', '0', '0',
'materials:company:list', '#', 103, 1, sysdate(), null, null, '公司菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479771016716291, '公司查询', 1897479771016716290, '1', '#', '', 1, 0, 'F', '0', '0',
'materials:company:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479771016716292, '公司新增', 1897479771016716290, '2', '#', '', 1, 0, 'F', '0', '0',
'materials:company:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479771016716293, '公司修改', 1897479771016716290, '3', '#', '', 1, 0, 'F', '0', '0',
'materials:company:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479771016716294, '公司删除', 1897479771016716290, '4', '#', '', 1, 0, 'F', '0', '0',
'materials:company:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479771016716295, '公司导出', 1897479771016716290, '5', '#', '', 1, 0, 'F', '0', '0',
'materials:company:export', '#', 103, 1, sysdate(), null, null, '');
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479769502572546, '材料出/入库', '1', '1', 'materialsInventory', 'materials/materialsInventory/index', 1, 0,
'C', '0', '0', 'materials:materialsInventory:list', '#', 103, 1, sysdate(), null, null, '材料出/入库菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479769502572547, '材料出/入库查询', 1897479769502572546, '1', '#', '', 1, 0, 'F', '0', '0',
'materials:materialsInventory:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479769502572548, '材料出/入库新增', 1897479769502572546, '2', '#', '', 1, 0, 'F', '0', '0',
'materials:materialsInventory:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479769502572549, '材料出/入库修改', 1897479769502572546, '3', '#', '', 1, 0, 'F', '0', '0',
'materials:materialsInventory:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479769502572550, '材料出/入库删除', 1897479769502572546, '4', '#', '', 1, 0, 'F', '0', '0',
'materials:materialsInventory:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479769502572551, '材料出/入库导出', 1897479769502572546, '5', '#', '', 1, 0, 'F', '0', '0',
'materials:materialsInventory:export', '#', 103, 1, sysdate(), null, null, '');
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479770626646018, '材料名称', '1', '1', 'materials', 'materials/materials/index', 1, 0, 'C', '0', '0',
'materials:materials:list', '#', 103, 1, sysdate(), null, null, '材料名称菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479770626646019, '材料名称查询', 1897479770626646018, '1', '#', '', 1, 0, 'F', '0', '0',
'materials:materials:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479770626646020, '材料名称新增', 1897479770626646018, '2', '#', '', 1, 0, 'F', '0', '0',
'materials:materials:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479770626646021, '材料名称修改', 1897479770626646018, '3', '#', '', 1, 0, 'F', '0', '0',
'materials:materials:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479770626646022, '材料名称删除', 1897479770626646018, '4', '#', '', 1, 0, 'F', '0', '0',
'materials:materials:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1897479770626646023, '材料名称导出', 1897479770626646018, '5', '#', '', 1, 0, 'F', '0', '0',
'materials:materials:export', '#', 103, 1, sysdate(), null, null, '');
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844021656604674, '项目班组', '1897103538172985346', '1', 'projectTeam', 'project/projectTeam/index', 1, 0, 'C', '0', '0', 'project:projectTeam:list', '#', 103, 1, sysdate(), null, null, '项目班组菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844021656604675, '项目班组查询', 1897844021656604674, '1', '#', '', 1, 0, 'F', '0', '0', 'project:projectTeam:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844021656604676, '项目班组新增', 1897844021656604674, '2', '#', '', 1, 0, 'F', '0', '0', 'project:projectTeam:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844021656604677, '项目班组修改', 1897844021656604674, '3', '#', '', 1, 0, 'F', '0', '0', 'project:projectTeam:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844021656604678, '项目班组删除', 1897844021656604674, '4', '#', '', 1, 0, 'F', '0', '0', 'project:projectTeam:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844021656604679, '项目班组导出', 1897844021656604674, '5', '#', '', 1, 0, 'F', '0', '0', 'project:projectTeam:export', '#', 103, 1, sysdate(), null, null, '');
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844022982004737, '项目班组下的成员', '1897103538172985346', '1', 'projectTeamMember', 'project/projectTeamMember/index', 1, 0, 'C', '0', '0', 'project:projectTeamMember:list', '#', 103, 1, sysdate(), null, null, '项目班组下的成员菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844022982004738, '项目班组下的成员查询', 1897844022982004737, '1', '#', '', 1, 0, 'F', '0', '0', 'project:projectTeamMember:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844022982004739, '项目班组下的成员新增', 1897844022982004737, '2', '#', '', 1, 0, 'F', '0', '0', 'project:projectTeamMember:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844022982004740, '项目班组下的成员修改', 1897844022982004737, '3', '#', '', 1, 0, 'F', '0', '0', 'project:projectTeamMember:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844022982004741, '项目班组下的成员删除', 1897844022982004737, '4', '#', '', 1, 0, 'F', '0', '0', 'project:projectTeamMember:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844022982004742, '项目班组下的成员导出', 1897844022982004737, '5', '#', '', 1, 0, 'F', '0', '0', 'project:projectTeamMember:export', '#', 103, 1, sysdate(), null, null, '');
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844022721957889, '分包单位', '1897103538172985346', '1', 'contractor', 'project/contractor/index', 1, 0, 'C', '0', '0', 'project:contractor:list', '#', 103, 1, sysdate(), null, null, '分包单位菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844022721957890, '分包单位查询', 1897844022721957889, '1', '#', '', 1, 0, 'F', '0', '0', 'project:contractor:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844022721957891, '分包单位新增', 1897844022721957889, '2', '#', '', 1, 0, 'F', '0', '0', 'project:contractor:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844022721957892, '分包单位修改', 1897844022721957889, '3', '#', '', 1, 0, 'F', '0', '0', 'project:contractor:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844022721957893, '分包单位删除', 1897844022721957889, '4', '#', '', 1, 0, 'F', '0', '0', 'project:contractor:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844022721957894, '分包单位导出', 1897844022721957889, '5', '#', '', 1, 0, 'F', '0', '0', 'project:contractor:export', '#', 103, 1, sysdate(), null, null, '');
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844023242051586, '施工人员', '1897103538172985346', '1', 'constructionUser', 'project/constructionUser/index', 1, 0, 'C', '0', '0', 'project:constructionUser:list', '#', 103, 1, sysdate(), null, null, '施工人员菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844023242051587, '施工人员查询', 1897844023242051586, '1', '#', '', 1, 0, 'F', '0', '0', 'project:constructionUser:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844023242051588, '施工人员新增', 1897844023242051586, '2', '#', '', 1, 0, 'F', '0', '0', 'project:constructionUser:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844023242051589, '施工人员修改', 1897844023242051586, '3', '#', '', 1, 0, 'F', '0', '0', 'project:constructionUser:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844023242051590, '施工人员删除', 1897844023242051586, '4', '#', '', 1, 0, 'F', '0', '0', 'project:constructionUser:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897844023242051591, '施工人员导出', 1897844023242051586, '5', '#', '', 1, 0, 'F', '0', '0', 'project:constructionUser:export', '#', 103, 1, sysdate(), null, null, '');

View File

@ -33,7 +33,6 @@ create table `project`
`is_delete` tinyint(4) default 0 not null comment '是否删除0正常 1删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
AUTO_INCREMENT = 60
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci comment = '项目表'
ROW_FORMAT = DYNAMIC;
@ -52,7 +51,6 @@ CREATE TABLE `user_project_relevancy`
INDEX `idx_user_id` (`user_id` ASC) USING BTREE comment '用户id',
INDEX `idx_project_id` (`project_id` ASC) USING BTREE comment '项目id'
) ENGINE = InnoDB
AUTO_INCREMENT = 1365
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci comment = '系统用户与项目关联表'
ROW_FORMAT = DYNAMIC;
@ -63,7 +61,7 @@ CREATE TABLE `bus_company`
`id` bigint not null auto_increment,
`company_name` varchar(64) null comment '公司名称',
`project_id` bigint null comment '项目id',
`status` char(1) default 0 null comment '帐号状态0正常 1停用',
`status` tinyint(4) default 0 null comment '帐号状态0正常 1停用',
`remark` varchar(255) null comment '备注',
`qualification` varchar(255) null comment '资质情况',
`create_by` varchar(64) null comment '创建者',
@ -75,7 +73,6 @@ CREATE TABLE `bus_company`
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_project_id` (`project_id` ASC) USING BTREE comment '项目id'
) ENGINE = InnoDB
AUTO_INCREMENT = 52
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci comment = '公司表'
ROW_FORMAT = DYNAMIC;
@ -101,7 +98,7 @@ CREATE TABLE `bus_materials`
`weight_id` varchar(64) null comment '计量单位',
`remark` varchar(255) null comment '备注',
`quantity_count` varchar(64) null comment '预计材料数量',
`status` char(1) null comment '状态0正常 1停用',
`status` tinyint(4) default 0 null comment '状态0正常 1停用',
`create_by` varchar(64) null comment '创建者',
`update_by` varchar(64) null comment '更新者',
`create_time` datetime default CURRENT_TIMESTAMP null comment '创建时间',
@ -111,7 +108,6 @@ CREATE TABLE `bus_materials`
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_project_id` (`project_id` ASC) USING BTREE comment '项目id'
) ENGINE = InnoDB
AUTO_INCREMENT = 348
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci comment = '材料名称表'
ROW_FORMAT = DYNAMIC;
@ -122,7 +118,7 @@ CREATE TABLE `bus_materials_inventory`
`id` bigint not null auto_increment comment '主键id',
`materials_id` bigint not null comment '材料id',
`project_id` bigint null comment '项目id',
`out_put` char(1) null comment '出入库状态',
`out_put` tinyint(4) null comment '出入库状态',
`number` int default 0 null comment '出/入库的数量',
`out_put_time` datetime null comment '出/入库操作时间',
`residue` int default 0 null comment '剩余库存数量(记录最后一次操作留下的库存数)',
@ -141,132 +137,116 @@ CREATE TABLE `bus_materials_inventory`
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_project_id` (`project_id` ASC) USING BTREE comment '项目ID'
) ENGINE = InnoDB
AUTO_INCREMENT = 965
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci comment = '材料出/入库表'
ROW_FORMAT = DYNAMIC;
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896943300447367169, '项目', '1', '1', 'project', 'project/project/index', 1, 0, 'C', '0', '0',
'project:project:list', '#', 103, 1, sysdate(), null, null, '项目菜单');
DROP TABLE IF EXISTS `bus_contractor`;
CREATE TABLE `bus_contractor`
(
`id` bigint not null auto_increment comment '主键id',
`name` varchar(50) null comment '公司名称',
`principal` varchar(20) null comment '负责人',
`principal_phone` varchar(20) null comment '负责人联系电话',
`custodian` varchar(20) null comment '管理人',
`custodian_phone` varchar(20) null comment '管理人联系电话',
`remark` varchar(512) null comment '备注',
`create_by` varchar(64) null comment '创建人',
`update_by` varchar(64) null comment '更新人',
`create_time` datetime default CURRENT_TIMESTAMP null comment '创建时间',
`update_time` datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',
`deleted_at` datetime null comment '删除时间',
`is_delete` tinyint(4) default 0 not null comment '是否删除0正常 1删除',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci comment = '分包单位'
ROW_FORMAT = DYNAMIC;
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896943300447367170, '项目查询', 1896943300447367169, '1', '#', '', 1, 0, 'F', '0', '0',
'project:project:query', '#', 103, 1, sysdate(), null, null, '');
DROP TABLE IF EXISTS `bus_construction_user`;
CREATE TABLE `bus_construction_user`
(
`id` bigint not null auto_increment,
`openid` varchar(64) null comment '微信id',
`nick_name` varchar(64) null comment '微信名称',
`pace_photo` longtext null comment '人脸照',
`user_name` varchar(32) null comment '人员姓名',
`project_id` bigint null comment '项目id',
`contractor_id` bigint null comment '分包公司id',
`team_id` bigint null comment '班组id',
`status` tinyint null comment '状态0在职 1离职',
`is_pinch` tinyint null comment '是否代打',
`phone` varchar(24) null comment '联系电话',
`sex` tinyint default 0 not null comment '0:保密 1:男 2女',
`nation` varchar(20) null comment '民族',
`sfz_number` varchar(50) null comment '身份证号码',
`sfz_start` varchar(20) null comment '身份证有效开始期',
`sfz_end` varchar(20) null comment '身份证有效结束期',
`sfz_site` varchar(100) null comment '身份证地址',
`sfz_birth` varchar(255) null comment '身份证出生日期',
`native_place` varchar(20) null comment '籍贯',
`yhk_number` varchar(50) null comment '银行卡号',
`yhk_opening_bank` varchar(50) null comment '开户行',
`yhk_cardholder` varchar(255) null comment '持卡人',
`type_of_work` tinyint(4) null comment '工种(字典type_of_work)',
`clock` tinyint default 1 not null comment '打卡(0启用打卡 1禁止打卡)',
`entry_date` varchar(255) null comment '入场时间',
`leave_date` varchar(255) null comment '离场时间',
`salary` decimal(10, 2) default 0.00 null comment '薪水',
`remark` varchar(512) null comment '备注',
`create_by` varchar(64) null comment '创建者',
`update_by` varchar(64) null comment '更新者',
`create_time` datetime default CURRENT_TIMESTAMP null comment '创建时间',
`update_time` datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',
`deleted_at` datetime null comment '删除时间',
`is_delete` tinyint(4) default 0 not null comment '是否删除0正常 1删除',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_subcontractor_id` (`contractor_id` ASC) USING BTREE comment '劳务公司id',
INDEX `idx_openid` (`openid` ASC) USING BTREE comment '微信id',
INDEX `idx_phone` (`phone` ASC) USING BTREE comment '电话'
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci comment = '施工人员表'
ROW_FORMAT = DYNAMIC;
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896943300447367171, '项目新增', 1896943300447367169, '2', '#', '', 1, 0, 'F', '0', '0', 'project:project:add',
'#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896943300447367172, '项目修改', 1896943300447367169, '3', '#', '', 1, 0, 'F', '0', '0', 'project:project:edit',
'#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896943300447367173, '项目删除', 1896943300447367169, '4', '#', '', 1, 0, 'F', '0', '0',
'project:project:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896943300447367174, '项目导出', 1896943300447367169, '5', '#', '', 1, 0, 'F', '0', '0',
'project:project:export', '#', 103, 1, sysdate(), null, null, '');
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896949180526047233, '系统用户与项目关联', '1', '1', 'projectRelevancy', 'project/projectRelevancy/index', 1, 0,
'C', '0', '0', 'project:projectRelevancy:list', '#', 103, 1, sysdate(), null, null, '系统用户与项目关联菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896949180526047234, '系统用户与项目关联查询', 1896949180526047233, '1', '#', '', 1, 0, 'F', '0', '0',
'project:projectRelevancy:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896949180526047235, '系统用户与项目关联新增', 1896949180526047233, '2', '#', '', 1, 0, 'F', '0', '0',
'project:projectRelevancy:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896949180526047236, '系统用户与项目关联修改', 1896949180526047233, '3', '#', '', 1, 0, 'F', '0', '0',
'project:projectRelevancy:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896949180526047237, '系统用户与项目关联删除', 1896949180526047233, '4', '#', '', 1, 0, 'F', '0', '0',
'project:projectRelevancy:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible,
status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values (1896949180526047238, '系统用户与项目关联导出', 1896949180526047233, '5', '#', '', 1, 0, 'F', '0', '0',
'project:projectRelevancy:export', '#', 103, 1, sysdate(), null, null, '');
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479771016716290, '公司', '1', '1', 'company', 'materials/company/index', 1, 0, 'C', '0', '0', 'materials:company:list', '#', 103, 1, sysdate(), null, null, '公司菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479771016716291, '公司查询', 1897479771016716290, '1', '#', '', 1, 0, 'F', '0', '0', 'materials:company:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479771016716292, '公司新增', 1897479771016716290, '2', '#', '', 1, 0, 'F', '0', '0', 'materials:company:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479771016716293, '公司修改', 1897479771016716290, '3', '#', '', 1, 0, 'F', '0', '0', 'materials:company:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479771016716294, '公司删除', 1897479771016716290, '4', '#', '', 1, 0, 'F', '0', '0', 'materials:company:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479771016716295, '公司导出', 1897479771016716290, '5', '#', '', 1, 0, 'F', '0', '0', 'materials:company:export', '#', 103, 1, sysdate(), null, null, '');
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479769502572546, '材料出/入库', '1', '1', 'materialsInventory', 'materials/materialsInventory/index', 1, 0, 'C', '0', '0', 'materials:materialsInventory:list', '#', 103, 1, sysdate(), null, null, '材料出/入库菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479769502572547, '材料出/入库查询', 1897479769502572546, '1', '#', '', 1, 0, 'F', '0', '0', 'materials:materialsInventory:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479769502572548, '材料出/入库新增', 1897479769502572546, '2', '#', '', 1, 0, 'F', '0', '0', 'materials:materialsInventory:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479769502572549, '材料出/入库修改', 1897479769502572546, '3', '#', '', 1, 0, 'F', '0', '0', 'materials:materialsInventory:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479769502572550, '材料出/入库删除', 1897479769502572546, '4', '#', '', 1, 0, 'F', '0', '0', 'materials:materialsInventory:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479769502572551, '材料出/入库导出', 1897479769502572546, '5', '#', '', 1, 0, 'F', '0', '0', 'materials:materialsInventory:export', '#', 103, 1, sysdate(), null, null, '');
-- 菜单 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479770626646018, '材料名称', '1', '1', 'materials', 'materials/materials/index', 1, 0, 'C', '0', '0', 'materials:materials:list', '#', 103, 1, sysdate(), null, null, '材料名称菜单');
-- 按钮 SQL
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479770626646019, '材料名称查询', 1897479770626646018, '1', '#', '', 1, 0, 'F', '0', '0', 'materials:materials:query', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479770626646020, '材料名称新增', 1897479770626646018, '2', '#', '', 1, 0, 'F', '0', '0', 'materials:materials:add', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479770626646021, '材料名称修改', 1897479770626646018, '3', '#', '', 1, 0, 'F', '0', '0', 'materials:materials:edit', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479770626646022, '材料名称删除', 1897479770626646018, '4', '#', '', 1, 0, 'F', '0', '0', 'materials:materials:remove', '#', 103, 1, sysdate(), null, null, '');
insert into sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_dept, create_by, create_time, update_by, update_time, remark)
values(1897479770626646023, '材料名称导出', 1897479770626646018, '5', '#', '', 1, 0, 'F', '0', '0', 'materials:materials:export', '#', 103, 1, sysdate(), null, null, '');
DROP TABLE IF EXISTS `bus_project_team`;
CREATE TABLE `bus_project_team`
(
`id` bigint not null auto_increment comment '主键id',
`project_id` bigint null comment '项目id',
`team_name` varchar(50) null comment '班组名称',
`is_clock_in` tinyint(4) default 1 not null comment '范围内打卡0范围内打卡 1任何地点打卡默认为1',
`remark` varchar(512) null comment '备注',
`create_by` varchar(64) null comment '创建者',
`update_by` varchar(64) null comment '更新者',
`create_time` datetime default CURRENT_TIMESTAMP null comment '创建时间',
`update_time` datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',
`deleted_at` datetime null comment '删除时间',
`is_delete` tinyint(4) default 0 not null comment '是否删除0正常 1删除',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_project_id` (`project_id` ASC) USING BTREE comment '项目id'
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci comment = '项目班组'
ROW_FORMAT = DYNAMIC;
DROP TABLE IF EXISTS `bus_project_team_member`;
CREATE TABLE `bus_project_team_member`
(
`id` bigint not null auto_increment comment '主键id',
`team_id` bigint null comment '班组id',
`project_id` bigint null comment '项目id',
`member_id` bigint null comment '施工人员id',
`post_id` tinyint default 0 null comment '岗位默认为0普通员工1组长',
`remark` varchar(512) null comment '备注',
`create_time` datetime default CURRENT_TIMESTAMP null comment '创建时间',
`update_time` datetime default CURRENT_TIMESTAMP null on update CURRENT_TIMESTAMP comment '更新时间',
`deleted_at` datetime null comment '删除时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_team_id` (`team_id` ASC) USING BTREE COMMENT '班组id',
INDEX `idx_project_id` (`project_id` ASC) USING BTREE COMMENT '项目id',
INDEX `idx_member_id` (`member_id` ASC) USING BTREE COMMENT '施工人员id'
) ENGINE = InnoDB
CHARACTER SET = utf8mb4
COLLATE = utf8mb4_general_ci COMMENT = '项目班组下的成员'
ROW_FORMAT = DYNAMIC;