diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java index 6ac593e..8626d47 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/bgt/AppBgtProjectRecruitApplyController.java @@ -63,8 +63,8 @@ public class AppBgtProjectRecruitApplyController extends BaseController { @ApiOperation("HTML务工者列表") @GetMapping("/htmlList") - public AjaxResult> htmlList(Long recruitId) { - return AjaxResult.success(iBgtProjectRecruitApplyService.htmlList(recruitId)); + public AjaxResult> htmlList(Long recruitId,Boolean isNotUpload) { + return AjaxResult.success(iBgtProjectRecruitApplyService.htmlList(recruitId,isNotUpload)); } @ApiOperation("App务工者个人详情") diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AnnexController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AnnexController.java index 4489fc2..5f32324 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AnnexController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AnnexController.java @@ -127,6 +127,7 @@ public class AnnexController extends BaseController { .eq(!notRecruitList.contains(annexType),Annex::getRecruitId, byId.getRecruitId()) .eq(Annex::getUserId, dto.getUserId()) .eq(Annex::getUserType, WGZ) + .eq(Annex::getRecruitApplyId, dto.getRecruitApplyId()) .eq(!"3".equals(annexType), Annex::getAnnexType, annexType) .in("3".equals(annexType), Annex::getAnnexType, list); Page result = iAnnexService.page(PageUtils.buildPage(), wrapper); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AppLoginController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AppLoginController.java index 27ece82..34ab2f7 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AppLoginController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/AppLoginController.java @@ -12,6 +12,7 @@ import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.util.DataUtil; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.ServletUtils; +import com.ruoyi.fbs.service.IFbsUserService; import com.ruoyi.framework.web.service.AppLoginService; import com.ruoyi.framework.web.service.SysPermissionService; import com.ruoyi.framework.web.service.TokenService; @@ -60,6 +61,9 @@ public class AppLoginController @Autowired private IWgzUserService wgzUserService; + @Autowired + private IFbsUserService fbsUserService; + @Autowired private ISysDictTypeService dictTypeService; @@ -103,6 +107,9 @@ public class AppLoginController case Constants.WGZ: ajax.put("user", wgzUserService.userLongIn(user.getPhonenumber())); break; + case Constants.FBS: + ajax.put("user", fbsUserService.selectUserByPhone(user.getPhonenumber())); + break; default: break; } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/UploadZipController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/UploadZipController.java index 69fa958..74eae86 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/UploadZipController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/UploadZipController.java @@ -2,6 +2,8 @@ package com.ruoyi.web.controller.common; import cn.hutool.core.collection.CollectionUtil; import com.ruoyi.bgt.domain.BgtProjectRecruit; +import com.ruoyi.bgt.domain.BgtProjectRecruitApply; +import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService; import com.ruoyi.bgt.service.IBgtProjectRecruitService; import com.ruoyi.bgt.service.IBgtUserService; import com.ruoyi.common.constant.Constants; @@ -52,6 +54,7 @@ public class UploadZipController { private final IAnnexService annexService; private final IAnnexRecordService annexRecordService; private final IBgtUserService bgtUserService; + private final IBgtProjectRecruitApplyService recruitApplyService; private static final String TEMP_DIR = "ruoyi/uploadPath/temporaryZip"; private static final String SAVE_DIR = "ruoyi/uploadPath/recruit"; @@ -201,9 +204,11 @@ public class UploadZipController { // 保险 2 List insurance = new ArrayList<>(); - // 劳务合同 1 List contract = new ArrayList<>(); + // 招工申请Id + List recruitApplyIds = new ArrayList<>(); + if (firstLevelFiles != null) { for (File firstLevelFile : firstLevelFiles) { @@ -215,6 +220,11 @@ public class UploadZipController { if(wgzUser == null){ throw new BaseException("文件格式错误"); } + BgtProjectRecruitApply oneByUserIdAndRecruitId = recruitApplyService.getOneByUserIdAndRecruitId(wgzUser.getUserId(), recruitId); + if(oneByUserIdAndRecruitId == null){ + throw new BaseException("状态不对"); + } + recruitApplyIds.add(oneByUserIdAndRecruitId.getId()); if (firstLevelFile.isDirectory()) { File[] secondLevelFiles = firstLevelFile.listFiles(); if (secondLevelFiles != null) { @@ -239,10 +249,10 @@ public class UploadZipController { } } if (CollectionUtil.isNotEmpty(insurance)) { - annexService.deleteByUserIdAndRecruitIdAndType(insurance, recruitId, "2"); + annexService.deleteByUserIdAndRecruitIdAndType(insurance, recruitId, "2",recruitApplyIds); } if (CollectionUtil.isNotEmpty(contract)) { - annexService.deleteByUserIdAndRecruitIdAndType(contract, recruitId, "1"); + annexService.deleteByUserIdAndRecruitIdAndType(contract, recruitId, "1",recruitApplyIds); } } @@ -307,6 +317,8 @@ public class UploadZipController { String card = split[1]; WgzUser wgzUser = wgzUserService.findByIdentityCard(card); + BgtProjectRecruitApply oneByUserIdAndRecruitId = recruitApplyService.getOneByUserIdAndRecruitId(wgzUser.getUserId(), recruitId); + String name = destination.getName(); System.out.println("上一级文件名: " + name); String type = ""; @@ -323,6 +335,7 @@ public class UploadZipController { annex.setUserType(Constants.WGZ); annex.setUserId(wgzUser.getUserId()); annex.setRecruitId(recruitId); + annex.setRecruitApplyId(oneByUserIdAndRecruitId.getId()); annex.setCreateBy(username); annex.setUpdateBy(username); annexList.add(annex); @@ -381,6 +394,8 @@ public class UploadZipController { String card = split[1]; WgzUser wgzUser = wgzUserService.findByIdentityCard(card); + BgtProjectRecruitApply oneByUserIdAndRecruitId = recruitApplyService.getOneByUserIdAndRecruitId(wgzUser.getUserId(), recruitId); + String name = destination.getName(); String type = ""; if ("保险".equals(name)) { @@ -397,6 +412,7 @@ public class UploadZipController { annexRecord.setUserType(Constants.WGZ); annexRecord.setUserId(wgzUser.getUserId()); annexRecord.setRecruitId(recruitId); + annexRecord.setRecruitApplyId(oneByUserIdAndRecruitId.getId()); annexRecord.setCreateBy(username); annexRecord.setUpdateBy(username); annexRecord.setCreateUserId(userId); diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectController.java new file mode 100644 index 0000000..b3a4a45 --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectController.java @@ -0,0 +1,140 @@ +package com.ruoyi.web.controller.fbs; + +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.fbs.domain.dto.FbsProjectListDTO; +import com.ruoyi.fbs.domain.vo.FbsProjectDetailVO; +import com.ruoyi.fbs.domain.vo.FbsProjectListVO; +import com.ruoyi.zbf.service.IZbfProjectService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.constraints.NotNull; + +/** + * 总包方项目Controller + * + * @author ruoyi + * @date 2025-02-17 + */ +@Api(value = "App分包商项目管理", tags = {"App分包商"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/app/fbs/project") +public class AppFbsProjectController extends BaseController { + + private final IZbfProjectService zbfProjectService; + + @ApiOperation("分包商查询可报名项目列表") + @GetMapping("/signUpList") + public TableDataInfo signUpList(FbsProjectListDTO dto) { + return zbfProjectService.signUpList(dto); + } + + @ApiOperation("分包商查询自己的项目列表") + @GetMapping("/myList") + public TableDataInfo applyList(FbsProjectListDTO dto) { + if(dto.getType()==0){ + return zbfProjectService.applyList(dto); + } else if (dto.getType()==1) { + return zbfProjectService.joinList(dto); + } else { + return zbfProjectService.completeList(dto); + } + } + + @ApiOperation("分包商查看可报名项目详情") + @GetMapping("/signUp/{id}") + public AjaxResult signUpDetail(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(zbfProjectService.signUpDetail(id)); + } + + @ApiOperation("分包商查看已申请项目详情") + @GetMapping("/apply/{id}") + public AjaxResult applyDetail(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(zbfProjectService.applyDetail(id)); + } + + @ApiOperation("分包商查看已加入或已竣工项目详情") + @GetMapping("/joinOrComplete/{id}") + public AjaxResult joinOrCompleteDetail(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(zbfProjectService.joinOrCompleteDetail(id)); + } + + + + + + + +// +// /** +// * 导出总包方项目分包列表 +// */ +// @ApiOperation("导出总包方项目分包列表") +// @PreAuthorize("@ss.hasPermi('common:subcontracting:export')") +// @Log(title = "总包方项目分包", businessType = BusinessType.EXPORT) +// @GetMapping("/export") +// public AjaxResult export(@Validated ZbfProjectSubcontractingQueryBo bo) { +// List list = iZbfProjectSubcontractingService.queryList(bo); +// ExcelUtil util = new ExcelUtil(ZbfProjectSubcontracting.class); +// return util.exportExcel(list, "总包方项目分包"); +// } +// +// /** +// * 获取总包方项目分包详细信息 +// */ +// @ApiOperation("获取总包方项目分包详细信息") +// @PreAuthorize("@ss.hasPermi('common:subcontracting:query')") +// @GetMapping("/{id}") +// public AjaxResult getInfo(@NotNull(message = "主键不能为空") +// @PathVariable("id") Long id) { +// return AjaxResult.success(iZbfProjectSubcontractingService.queryById(id)); +// } +// +// /** +// * 新增总包方项目分包 +// */ +// @ApiOperation("新增总包方项目分包") +// @PreAuthorize("@ss.hasPermi('common:subcontracting:add')") +// @Log(title = "总包方项目分包", businessType = BusinessType.INSERT) +// @RepeatSubmit +// @PostMapping() +// public AjaxResult add(@Validated @RequestBody ZbfProjectSubcontracting bo) { +// return toAjax(iZbfProjectSubcontractingService.insert(bo) ? 1 : 0); +// } +// +// /** +// * 修改总包方项目分包 +// */ +// @ApiOperation("修改总包方项目分包") +// @PreAuthorize("@ss.hasPermi('common:subcontracting:edit')") +// @Log(title = "总包方项目分包", businessType = BusinessType.UPDATE) +// @RepeatSubmit +// @PutMapping() +// public AjaxResult edit(@Validated @RequestBody ZbfProjectSubcontracting bo) { +// return toAjax(iZbfProjectSubcontractingService.update(bo) ? 1 : 0); +// } +// +// /** +// * 删除总包方项目分包 +// */ +// @ApiOperation("删除总包方项目分包") +// @PreAuthorize("@ss.hasPermi('common:subcontracting:remove')") +// @Log(title = "总包方项目分包" , businessType = BusinessType.DELETE) +// @DeleteMapping("/{ids}") +// public AjaxResult remove(@NotEmpty(message = "主键不能为空") +// @PathVariable Long[] ids) { +// return toAjax(iZbfProjectSubcontractingService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); +// } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectSubcontractingController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectSubcontractingController.java deleted file mode 100644 index b4c8a96..0000000 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectSubcontractingController.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.ruoyi.web.controller.fbs; - -import com.ruoyi.common.annotation.Log; -import com.ruoyi.common.annotation.RepeatSubmit; -import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.AjaxResult; -import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.common.enums.BusinessType; -import com.ruoyi.common.utils.poi.ExcelUtil; -import com.ruoyi.zbf.bo.ZbfProjectSubcontractingQueryBo; -import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; -import com.ruoyi.zbf.service.IZbfProjectSubcontractingService; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.*; - -import javax.validation.constraints.NotEmpty; -import javax.validation.constraints.NotNull; -import java.util.Arrays; -import java.util.List; - -/** - * 总包方项目分包Controller - * - * @author ruoyi - * @date 2025-02-17 - */ -@Api(value = "App分包商项目管理", tags = {"App分包商项目管理"}) -@RequiredArgsConstructor(onConstructor_ = @Autowired) -@RestController -@RequestMapping("/fbs/subcontracting") -public class AppFbsProjectSubcontractingController extends BaseController { - - private final IZbfProjectSubcontractingService iZbfProjectSubcontractingService; - - /** - * 查询总包方项目分包列表 - */ - @ApiOperation("查询总包方项目分包列表") - @GetMapping("/list") - public TableDataInfo list(@Validated ZbfProjectSubcontractingQueryBo bo) { - return iZbfProjectSubcontractingService.queryPageList(bo); - } - - /** - * 导出总包方项目分包列表 - */ - @ApiOperation("导出总包方项目分包列表") - @PreAuthorize("@ss.hasPermi('common:subcontracting:export')") - @Log(title = "总包方项目分包", businessType = BusinessType.EXPORT) - @GetMapping("/export") - public AjaxResult export(@Validated ZbfProjectSubcontractingQueryBo bo) { - List list = iZbfProjectSubcontractingService.queryList(bo); - ExcelUtil util = new ExcelUtil(ZbfProjectSubcontracting.class); - return util.exportExcel(list, "总包方项目分包"); - } - - /** - * 获取总包方项目分包详细信息 - */ - @ApiOperation("获取总包方项目分包详细信息") - @PreAuthorize("@ss.hasPermi('common:subcontracting:query')") - @GetMapping("/{id}") - public AjaxResult getInfo(@NotNull(message = "主键不能为空") - @PathVariable("id") Long id) { - return AjaxResult.success(iZbfProjectSubcontractingService.queryById(id)); - } - - /** - * 新增总包方项目分包 - */ - @ApiOperation("新增总包方项目分包") - @PreAuthorize("@ss.hasPermi('common:subcontracting:add')") - @Log(title = "总包方项目分包", businessType = BusinessType.INSERT) - @RepeatSubmit - @PostMapping() - public AjaxResult add(@Validated @RequestBody ZbfProjectSubcontracting bo) { - return toAjax(iZbfProjectSubcontractingService.insert(bo) ? 1 : 0); - } - - /** - * 修改总包方项目分包 - */ - @ApiOperation("修改总包方项目分包") - @PreAuthorize("@ss.hasPermi('common:subcontracting:edit')") - @Log(title = "总包方项目分包", businessType = BusinessType.UPDATE) - @RepeatSubmit - @PutMapping() - public AjaxResult edit(@Validated @RequestBody ZbfProjectSubcontracting bo) { - return toAjax(iZbfProjectSubcontractingService.update(bo) ? 1 : 0); - } - - /** - * 删除总包方项目分包 - */ - @ApiOperation("删除总包方项目分包") - @PreAuthorize("@ss.hasPermi('common:subcontracting:remove')") - @Log(title = "总包方项目分包" , businessType = BusinessType.DELETE) - @DeleteMapping("/{ids}") - public AjaxResult remove(@NotEmpty(message = "主键不能为空") - @PathVariable Long[] ids) { - return toAjax(iZbfProjectSubcontractingService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); - } -} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskController.java new file mode 100644 index 0000000..65c985a --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsProjectTaskController.java @@ -0,0 +1,49 @@ +package com.ruoyi.web.controller.fbs; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.fbs.domain.FbsProjectTask; +import com.ruoyi.fbs.service.IFbsProjectTaskService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * 分包商项目任务Controller + * + * @author ruoyi + * @date 2025-02-17 + */ +@Api(value = "分包商项目任务控制器", tags = {"App分包商"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/app/fbs/task") +public class AppFbsProjectTaskController extends BaseController { + + private final IFbsProjectTaskService iFbsProjectTaskService; + + @ApiOperation("分包商发布任务") + @Log(title = "分包商发布任务", businessType = BusinessType.INSERT) + @RepeatSubmit + @PostMapping() + public AjaxResult add(@Validated @RequestBody FbsProjectTask bo) { + + bo.setCreateId(SecurityUtils.getAppUserId()); + bo.setStatus("1"); +// BgtUser byId = bgtUserService.selectUserByUserId(SecurityUtils.getAppUserId()); +// if(byId == null || byId.getIdentityCard() == null){ +// throw new BaseException("当前用户还未实名认证!"); +// } + return AjaxResult.success(iFbsProjectTaskService.insert(bo)); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsUserController.java new file mode 100644 index 0000000..e2917dc --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsUserController.java @@ -0,0 +1,43 @@ +package com.ruoyi.web.controller.fbs; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.domain.dto.CompanyAuthenticateDTO; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.fbs.service.IFbsUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.PutMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * APP分包商用户Controller + * + * @author ruoyi + * @date 2025-03-26 + */ +@Api(value = "APP分包商用户控制器", tags = {"APP分包商"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/app/fbs/user") +public class AppFbsUserController extends BaseController { + + private final IFbsUserService iFbsUserService; + + + @ApiOperation("分包商企业认证") + @Log(title = "分包商企业认证", businessType = BusinessType.UPDATE) + @RepeatSubmit + @PutMapping() + public AjaxResult edit(@Validated @RequestBody CompanyAuthenticateDTO dto) { + return AjaxResult.success(iFbsUserService.authenticate(dto)); + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsWageApplicationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsWageApplicationController.java new file mode 100644 index 0000000..fac18ae --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppFbsWageApplicationController.java @@ -0,0 +1,57 @@ +package com.ruoyi.web.controller.fbs; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.fbs.domain.FbsWageApplication; +import com.ruoyi.fbs.domain.dto.FbsWageApplicationListDTO; +import com.ruoyi.fbs.service.IFbsWageApplicationService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotNull; + +/** + * 分包商工资申请Controller + * + * @author ruoyi + * @date 2025-03-26 + */ +@Api(value = "APP分包商工资申请控制器", tags = {"APP分包商"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/app/fbs/application") +public class AppFbsWageApplicationController extends BaseController { + + private final IFbsWageApplicationService iFbsWageApplicationService; + + @ApiOperation("分包商查询自己的工资申请列表") + @GetMapping("/list") + public TableDataInfo list(@Validated FbsWageApplicationListDTO dto) { + return iFbsWageApplicationService.record(dto); + } + + @ApiOperation("分包商获取自己的工资申请详细信息") + @GetMapping("/{id}") + public AjaxResult getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iFbsWageApplicationService.queryById(id)); + } + + @ApiOperation("分包商提交自己的工资申请") + @Log(title = "分包商工资申请", businessType = BusinessType.INSERT) + @RepeatSubmit + @PostMapping() + public AjaxResult add(@Validated @RequestBody FbsWageApplication bo) { + //todo: 插入审核人的名字 + return AjaxResult.success(iFbsWageApplicationService.insert(bo)); + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppProjectSubcontractingController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppProjectSubcontractingController.java new file mode 100644 index 0000000..2447bba --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/AppProjectSubcontractingController.java @@ -0,0 +1,39 @@ +package com.ruoyi.web.controller.fbs; + +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; +import com.ruoyi.zbf.service.IZbfProjectSubcontractingService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.constraints.NotNull; + +/** + * 总包方项目分包Controller + * + * @author ruoyi + * @date 2025-02-17 + */ +@Api(value = "App分包商项目分包管理", tags = {"App分包商"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/app/fbs/subcontracting") +public class AppProjectSubcontractingController extends BaseController { + + private final IZbfProjectSubcontractingService iZbfProjectSubcontractingService; + + @ApiOperation("分包商查询项目分包详细信息") + @GetMapping("/{id}") + public AjaxResult getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iZbfProjectSubcontractingService.queryById(id)); + } + +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/FbsUserController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/FbsUserController.java new file mode 100644 index 0000000..afe6d5a --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/FbsUserController.java @@ -0,0 +1,109 @@ +package com.ruoyi.web.controller.fbs; + +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.entity.FbsUser; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.fbs.bo.FbsUserQueryBo; +import com.ruoyi.fbs.service.IFbsUserService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.Arrays; +import java.util.List; + +/** + * APP分包商用户Controller + * + * @author ruoyi + * @date 2025-03-26 + */ +@Api(value = "分包商用户控制器", tags = {"分包商用户管理"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/fbs/user") +public class FbsUserController extends BaseController { + + private final IFbsUserService iFbsUserService; + + /** + * 查询APP分包商用户列表 + */ + @ApiOperation("查询APP分包商用户列表") + @PreAuthorize("@ss.hasPermi('fbs:user:list')") + @GetMapping("/list") + public TableDataInfo list(@Validated FbsUserQueryBo bo) { + return iFbsUserService.queryPageList(bo); + } + + /** + * 导出APP分包商用户列表 + */ + @ApiOperation("导出APP分包商用户列表") + @PreAuthorize("@ss.hasPermi('fbs:user:export')") + @Log(title = "APP分包商用户", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(@Validated FbsUserQueryBo bo) { + List list = iFbsUserService.queryList(bo); + ExcelUtil util = new ExcelUtil(FbsUser.class); + return util.exportExcel(list, "APP分包商用户"); + } + + /** + * 获取APP分包商用户详细信息 + */ + @ApiOperation("获取APP分包商用户详细信息") + @PreAuthorize("@ss.hasPermi('fbs:user:query')") + @GetMapping("/{id}") + public AjaxResult getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iFbsUserService.queryById(id)); + } + + /** + * 新增APP分包商用户 + */ + @ApiOperation("新增APP分包商用户") + @PreAuthorize("@ss.hasPermi('fbs:user:add')") + @Log(title = "APP分包商用户", businessType = BusinessType.INSERT) + @RepeatSubmit + @PostMapping() + public AjaxResult add(@Validated @RequestBody FbsUser bo) { + return toAjax(iFbsUserService.insert(bo) ? 1 : 0); + } + + /** + * 修改APP分包商用户 + */ + @ApiOperation("修改APP分包商用户") + @PreAuthorize("@ss.hasPermi('fbs:user:edit')") + @Log(title = "APP分包商用户", businessType = BusinessType.UPDATE) + @RepeatSubmit + @PutMapping() + public AjaxResult edit(@Validated @RequestBody FbsUser bo) { + return toAjax(iFbsUserService.update(bo) ? 1 : 0); + } + + /** + * 删除APP分包商用户 + */ + @ApiOperation("删除APP分包商用户") + @PreAuthorize("@ss.hasPermi('fbs:user:remove')") + @Log(title = "APP分包商用户" , businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iFbsUserService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); + } +} diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/FbsWageApplicationController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/FbsWageApplicationController.java new file mode 100644 index 0000000..2ca55ec --- /dev/null +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/fbs/FbsWageApplicationController.java @@ -0,0 +1,108 @@ +package com.ruoyi.web.controller.fbs; + +import java.util.List; +import java.util.Arrays; + +import com.ruoyi.fbs.domain.FbsWageApplication; +import lombok.RequiredArgsConstructor; +import javax.validation.constraints.*; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.fbs.bo.FbsWageApplicationQueryBo; +import com.ruoyi.fbs.service.IFbsWageApplicationService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +/** + * 分包商工资申请Controller + * + * @author ruoyi + * @date 2025-03-26 + */ +@Api(value = "分包商工资申请控制器", tags = {"分包商工资申请管理"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/fbs/application") +public class FbsWageApplicationController extends BaseController { + + private final IFbsWageApplicationService iFbsWageApplicationService; + + /** + * 查询分包商工资申请列表 + */ + @ApiOperation("查询分包商工资申请列表") + @PreAuthorize("@ss.hasPermi('fbs:application:list')") + @GetMapping("/list") + public TableDataInfo list(@Validated FbsWageApplicationQueryBo bo) { + return iFbsWageApplicationService.queryPageList(bo); + } + + /** + * 导出分包商工资申请列表 + */ + @ApiOperation("导出分包商工资申请列表") + @PreAuthorize("@ss.hasPermi('fbs:application:export')") + @Log(title = "分包商工资申请", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(@Validated FbsWageApplicationQueryBo bo) { + List list = iFbsWageApplicationService.queryList(bo); + ExcelUtil util = new ExcelUtil(FbsWageApplication.class); + return util.exportExcel(list, "分包商工资申请"); + } + + /** + * 获取分包商工资申请详细信息 + */ + @ApiOperation("获取分包商工资申请详细信息") + @PreAuthorize("@ss.hasPermi('fbs:application:query')") + @GetMapping("/{id}") + public AjaxResult getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iFbsWageApplicationService.queryById(id)); + } + + /** + * 新增分包商工资申请 + */ + @ApiOperation("新增分包商工资申请") + @PreAuthorize("@ss.hasPermi('fbs:application:add')") + @Log(title = "分包商工资申请", businessType = BusinessType.INSERT) + @RepeatSubmit + @PostMapping() + public AjaxResult add(@Validated @RequestBody FbsWageApplication bo) { + return toAjax(iFbsWageApplicationService.insert(bo) ? 1 : 0); + } + + /** + * 修改分包商工资申请 + */ + @ApiOperation("修改分包商工资申请") + @PreAuthorize("@ss.hasPermi('fbs:application:edit')") + @Log(title = "分包商工资申请", businessType = BusinessType.UPDATE) + @RepeatSubmit + @PutMapping() + public AjaxResult edit(@Validated @RequestBody FbsWageApplication bo) { + return toAjax(iFbsWageApplicationService.update(bo) ? 1 : 0); + } + + /** + * 删除分包商工资申请 + */ + @ApiOperation("删除分包商工资申请") + @PreAuthorize("@ss.hasPermi('fbs:application:remove')") + @Log(title = "分包商工资申请" , businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iFbsWageApplicationService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); + } +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java index d9f21c6..fb654ce 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java @@ -137,6 +137,10 @@ public class Constants */ public static final String REDIS_LOCK_KEY = "redis_lock:"; + /** + * 包工头用户标志 前缀 + */ + public static final String FBS = "fbs"; /** * 包工头用户标志 前缀 */ diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/FbsUser.java b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/FbsUser.java new file mode 100644 index 0000000..b352a80 --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/FbsUser.java @@ -0,0 +1,159 @@ +package com.ruoyi.common.core.domain.entity; + +import com.ruoyi.common.annotation.Excel; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import com.baomidou.mybatisplus.annotation.*; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; +import java.io.Serializable; + +import java.time.LocalDateTime; + +/** + * APP分包商用户对象 fbs_user + * + * @author ruoyi + * @date 2025-03-26 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@TableName("fbs_user") +@ApiModel("APP分包商用户视图对象") +public class FbsUser implements Serializable { + + private static final long serialVersionUID=1L; + + /** 主键ID */ + @ApiModelProperty("主键ID") + @TableId(value = "id") + private Long id; + + /** 唯一标识 */ + @Excel(name = "唯一标识") + @ApiModelProperty("唯一标识") + private Long userId; + + /** 联系电话 */ + @Excel(name = "联系电话") + @ApiModelProperty("联系电话") + private String phone; + + /** 姓名 */ + @Excel(name = "姓名") + @ApiModelProperty("姓名") + private String username; + + /** 性别(0男 1女 2未知) */ + @Excel(name = "性别" , readConverterExp = "0=男,1=女,2=未知") + @ApiModelProperty("性别(0男 1女 2未知)") + private String gender; + + /** 民族 */ + @Excel(name = "民族") + @ApiModelProperty("民族") + private String nation; + + /** 出生日期 */ + @Excel(name = "出生日期") + @ApiModelProperty("出生日期") + private String birthdate; + + /** 身份证号码 */ + @Excel(name = "身份证号码") + @ApiModelProperty("身份证号码") + private String identityCard; + + /** 所在区域 */ + @Excel(name = "所在区域") + @ApiModelProperty("所在区域") + private String area; + + /** 地址 */ + @Excel(name = "地址") + @ApiModelProperty("地址") + private String site; + + /** 银行 */ + @Excel(name = "银行") + @ApiModelProperty("银行") + private String bank; + + /** 银行卡号 */ + @Excel(name = "银行卡号") + @ApiModelProperty("银行卡号") + private String cardNo; + + /** 头像地址 */ + @Excel(name = "头像地址") + @ApiModelProperty("头像地址") + private String avatarName; + + /** 密码 */ + @Excel(name = "密码") + @ApiModelProperty("密码") + private String password; + + /** 身份证正面图路径 */ + @Excel(name = "身份证正面图路径") + @ApiModelProperty("身份证正面图路径") + private String frontPath; + + /** 身份证反面图路径 */ + @Excel(name = "身份证反面图路径") + @ApiModelProperty("身份证反面图路径") + private String reverseSidePath; + + /** 银行卡图路径 */ + @Excel(name = "银行卡图路径") + @ApiModelProperty("银行卡图路径") + private String bankCardPath; + + /** 关联公司Id */ + @Excel(name = "关联公司Id") + @ApiModelProperty("关联公司Id") + private Long companyId; + + /** 帐号状态(0正常 1停用) */ + @Excel(name = "帐号状态" , readConverterExp = "0=正常,1=停用") + @ApiModelProperty("帐号状态(0正常 1停用)") + private String status; + + /** 删除标志(0代表存在 2代表删除) */ + @Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除") + @ApiModelProperty("删除标志(0代表存在 2代表删除)") + private String delFlag; + + /** 创建者 */ + @Excel(name = "创建者") + @ApiModelProperty("创建者") + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 创建时间 */ + @Excel(name = "创建时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("创建时间") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 更新者 */ + @Excel(name = "更新者") + @ApiModelProperty("更新者") + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updateBy; + + /** 更新时间 */ + @Excel(name = "更新时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("更新时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + /** 备注 */ + @Excel(name = "备注") + @ApiModelProperty("备注") + private String remark; + +} diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java index 61de9f9..a9cc4d7 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/RecruitApplyStatus.java @@ -52,4 +52,9 @@ public enum RecruitApplyStatus public static List getFull(){ return Arrays.asList(WORKING.getCode(), WGZ_PASS.getCode()); } + + //上传资料 + public static List getFile(){ + return Arrays.asList(WORKING.getCode(), WGZ_PASS.getCode()); + } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/enums/SubcontractingApplyStatus.java b/ruoyi-common/src/main/java/com/ruoyi/common/enums/SubcontractingApplyStatus.java new file mode 100644 index 0000000..6dc17ce --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/enums/SubcontractingApplyStatus.java @@ -0,0 +1,42 @@ +package com.ruoyi.common.enums; + +import java.util.Arrays; +import java.util.List; + +/** + * 分包申请状态 + * + * @author ruoyi + */ +public enum SubcontractingApplyStatus +{ + APPLY("0", "申请中"), + PASS("1", "已同意"), + REFUSE("2", "已拒绝"), + ; + + private final String code; + private final String info; + + SubcontractingApplyStatus(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } + + //项目申请中的状态 + public static List getApplyStatus(){ + return Arrays.asList(APPLY.getCode(),REFUSE.getCode()); + } + +} diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AllUserDetailsServiceImpl.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AllUserDetailsServiceImpl.java index 50650b3..e9fd035 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AllUserDetailsServiceImpl.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AllUserDetailsServiceImpl.java @@ -29,7 +29,7 @@ public class AllUserDetailsServiceImpl implements UserDetailsService @Override public UserDetails loadUserByUsername(String var) throws UsernameNotFoundException { - if(var.contains(Constants.BGT)||var.contains(Constants.WGZ)){ + if(var.contains(Constants.BGT)||var.contains(Constants.WGZ) ||var.contains(Constants.FBS)){ return appUserDetailsService.loadUserByUsername(var); } else { return userDetailsService.loadUserByUsername(var); diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AppUserDetailsServiceImpl.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AppUserDetailsServiceImpl.java index 316c771..cce265c 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AppUserDetailsServiceImpl.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/AppUserDetailsServiceImpl.java @@ -1,16 +1,15 @@ package com.ruoyi.framework.web.service; import cn.hutool.core.lang.Validator; - import com.ruoyi.bgt.service.IBgtUserService; - import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.entity.BgtUser; +import com.ruoyi.common.core.domain.entity.FbsUser; import com.ruoyi.common.core.domain.entity.SysUser; - import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.UserStatus; import com.ruoyi.common.exception.BaseException; +import com.ruoyi.fbs.service.IFbsUserService; import com.ruoyi.wgz.domain.WgzUser; import com.ruoyi.wgz.service.IWgzUserService; import org.slf4j.Logger; @@ -39,6 +38,9 @@ public class AppUserDetailsServiceImpl implements UserDetailsService @Autowired private IBgtUserService userService; + @Autowired + private IFbsUserService fbsUserService; + @Autowired private SysPermissionService permissionService; @@ -54,6 +56,10 @@ public class AppUserDetailsServiceImpl implements UserDetailsService WgzUser wgzUser = wgzUserService.userLongIn(phone.replace(Constants.WGZ, "")); check(wgzUser,phone); userDetailsl = createLoginUser(wgzUser,Constants.WGZ); + }else if (phone.contains(Constants.FBS)) { + FbsUser fbsUser = fbsUserService.selectUserByPhone(phone.replace(Constants.FBS, "")); + check(fbsUser,phone); + userDetailsl = createLoginUser(fbsUser,Constants.FBS); } return userDetailsl; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java index f5674f9..534015c 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/mapper/BgtProjectRecruitApplyMapper.java @@ -31,7 +31,7 @@ public interface BgtProjectRecruitApplyMapper extends BaseMapperPlus appQueryList(@Param("dto") BgtProjectRecruitApplyQueryDTO dto); - List htmlList(@Param("recruitId") Long recruitId); + List htmlList(@Param("recruitId") Long recruitId,@Param("isNotUpload")Boolean isNotUpload); // Page dayAttendanceList(@Param("page")Page queryDTOPage,@Param("dto") BgtAttendanceDayDTO dto); diff --git a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java index dcee7f4..544f1d3 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/bgt/service/IBgtProjectRecruitApplyService.java @@ -81,7 +81,7 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus appAllList(BgtProjectRecruitApplyQueryDTO dto); - List htmlList(Long recruitId); + List htmlList(Long recruitId,Boolean isNotUpload); /** * LC-APP相关 @@ -170,8 +170,11 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus htmlList(Long recruitId) { - return baseMapper.htmlList(recruitId); + public List htmlList(Long recruitId,Boolean isNotUpload) { + return baseMapper.htmlList(recruitId,isNotUpload); } @Override @@ -789,13 +788,12 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl list = baseMapper.selectList(Wrappers.lambdaQuery() .eq(BgtProjectRecruitApply::getRecruitId, recruitId) .eq(BgtProjectRecruitApply::getUserId, userId) - .in(BgtProjectRecruitApply::getStatus, RecruitApplyStatus.getWorkStatus()) + .in(BgtProjectRecruitApply::getStatus, RecruitApplyStatus.getFile()) .orderByDesc(BgtProjectRecruitApply::getCreateTime)); - return list.get(0); + return CollectionUtil.isEmpty(list)?null:list.get(0); } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/bo/CompanyQueryBo.java b/ruoyi-system/src/main/java/com/ruoyi/common/bo/CompanyQueryBo.java new file mode 100644 index 0000000..1399926 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/common/bo/CompanyQueryBo.java @@ -0,0 +1,70 @@ +package com.ruoyi.common.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDate; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 企业认证分页查询对象 common_company + * + * @author ruoyi + * @date 2025-03-26 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("企业认证分页查询对象") +public class CompanyQueryBo extends BaseEntity { + + /** 分页大小 */ + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + /** 排序列 */ + @ApiModelProperty("排序列") + private String orderByColumn; + /** 排序的方向desc或者asc */ + @ApiModelProperty(value = "排序的方向", example = "asc,desc") + private String isAsc; + + + /** 企业名称 */ + @ApiModelProperty("企业名称") + private String companyName; + /** 统一社会信用代码 */ + @ApiModelProperty("统一社会信用代码") + private String creditCode; + /** 营业执照 */ + @ApiModelProperty("营业执照") + private String licenseImg; + /** 法人 */ + @ApiModelProperty("法人") + private String corporation; + /** 成立日期 */ + @ApiModelProperty("成立日期") + private LocalDate establishmentDate; + /** 注册资本 */ + @ApiModelProperty("注册资本") + private BigDecimal registrationAmount; + /** 企业简介 */ + @ApiModelProperty("企业简介") + private String introduce; + /** 项目经验 */ + @ApiModelProperty("项目经验") + private String experience; + /** 员工数量 */ + @ApiModelProperty("员工数量") + private Integer employeeNum; + /** 资质与荣誉 */ + @ApiModelProperty("资质与荣誉") + private String url; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/controller/CompanyController.java b/ruoyi-system/src/main/java/com/ruoyi/common/controller/CompanyController.java new file mode 100644 index 0000000..d5ebe14 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/common/controller/CompanyController.java @@ -0,0 +1,108 @@ +package com.ruoyi.common.controller; + +import java.util.List; +import java.util.Arrays; + +import com.ruoyi.common.domain.Company; +import lombok.RequiredArgsConstructor; +import javax.validation.constraints.*; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.bo.CompanyQueryBo; +import com.ruoyi.common.service.ICompanyService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +/** + * 企业认证Controller + * + * @author ruoyi + * @date 2025-03-26 + */ +@Api(value = "企业认证控制器", tags = {"企业认证管理"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/common/company") +public class CompanyController extends BaseController { + + private final ICompanyService iCommonCompanyService; + + /** + * 查询企业认证列表 + */ + @ApiOperation("查询企业认证列表") + @PreAuthorize("@ss.hasPermi('common:company:list')") + @GetMapping("/list") + public TableDataInfo list(@Validated CompanyQueryBo bo) { + return iCommonCompanyService.queryPageList(bo); + } + + /** + * 导出企业认证列表 + */ + @ApiOperation("导出企业认证列表") + @PreAuthorize("@ss.hasPermi('common:company:export')") + @Log(title = "企业认证", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(@Validated CompanyQueryBo bo) { + List list = iCommonCompanyService.queryList(bo); + ExcelUtil util = new ExcelUtil(Company.class); + return util.exportExcel(list, "企业认证"); + } + + /** + * 获取企业认证详细信息 + */ + @ApiOperation("获取企业认证详细信息") + @PreAuthorize("@ss.hasPermi('common:company:query')") + @GetMapping("/{id}") + public AjaxResult getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iCommonCompanyService.queryById(id)); + } + + /** + * 新增企业认证 + */ + @ApiOperation("新增企业认证") + @PreAuthorize("@ss.hasPermi('common:company:add')") + @Log(title = "企业认证", businessType = BusinessType.INSERT) + @RepeatSubmit + @PostMapping() + public AjaxResult add(@Validated @RequestBody Company bo) { + return toAjax(iCommonCompanyService.insert(bo) ? 1 : 0); + } + + /** + * 修改企业认证 + */ + @ApiOperation("修改企业认证") + @PreAuthorize("@ss.hasPermi('common:company:edit')") + @Log(title = "企业认证", businessType = BusinessType.UPDATE) + @RepeatSubmit + @PutMapping() + public AjaxResult edit(@Validated @RequestBody Company bo) { + return toAjax(iCommonCompanyService.update(bo) ? 1 : 0); + } + + /** + * 删除企业认证 + */ + @ApiOperation("删除企业认证") + @PreAuthorize("@ss.hasPermi('common:company:remove')") + @Log(title = "企业认证" , businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iCommonCompanyService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/domain/Annex.java b/ruoyi-system/src/main/java/com/ruoyi/common/domain/Annex.java index 2567daf..ccf4850 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/domain/Annex.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/domain/Annex.java @@ -44,6 +44,9 @@ public class Annex implements Serializable { @ApiModelProperty("招工任务ID") private Long recruitId; + @ApiModelProperty("招工任务申请Id") + private Long recruitApplyId; + /** 附件类型 */ @Excel(name = "附件类型") @ApiModelProperty("附件类型") diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/domain/AnnexRecord.java b/ruoyi-system/src/main/java/com/ruoyi/common/domain/AnnexRecord.java index 258e256..bb9d6b5 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/domain/AnnexRecord.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/domain/AnnexRecord.java @@ -49,6 +49,9 @@ public class AnnexRecord implements Serializable { @ApiModelProperty("招工任务ID") private Long recruitId; + @ApiModelProperty("招工任务申请Id") + private Long recruitApplyId; + /** 附件类型 */ @Excel(name = "附件类型") @ApiModelProperty("附件类型") diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/domain/Company.java b/ruoyi-system/src/main/java/com/ruoyi/common/domain/Company.java new file mode 100644 index 0000000..22dc617 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/common/domain/Company.java @@ -0,0 +1,123 @@ +package com.ruoyi.common.domain; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDate; +import java.time.LocalDateTime; + +/** + * 企业认证对象 common_company + * + * @author ruoyi + * @date 2025-03-26 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@TableName("common_company") +@ApiModel("企业认证视图对象") +public class Company implements Serializable { + + private static final long serialVersionUID=1L; + + /** 主键ID */ + @ApiModelProperty("主键ID") + @TableId(value = "id") + private Long id; + + /** 企业名称 */ + @Excel(name = "企业名称") + @ApiModelProperty("企业名称") + private String companyName; + + /** 统一社会信用代码 */ + @Excel(name = "统一社会信用代码") + @ApiModelProperty("统一社会信用代码") + private String creditCode; + + /** 营业执照 */ + @Excel(name = "营业执照") + @ApiModelProperty("营业执照") + private String licenseImg; + + /** 法人 */ + @Excel(name = "法人") + @ApiModelProperty("法人") + private String corporation; + + /** 成立日期 */ + @Excel(name = "成立日期") + @ApiModelProperty("成立日期") + private LocalDate establishmentDate; + + /** 注册资本 */ + @Excel(name = "注册资本") + @ApiModelProperty("注册资本") + private BigDecimal registrationAmount; + + /** 企业简介 */ + @Excel(name = "企业简介") + @ApiModelProperty("企业简介") + private String introduce; + + /** 项目经验 */ + @Excel(name = "项目经验") + @ApiModelProperty("项目经验") + private String experience; + + /** 员工数量 */ + @Excel(name = "员工数量") + @ApiModelProperty("员工数量") + private Integer employeeNum; + + /** 资质与荣誉 */ + @Excel(name = "资质与荣誉") + @ApiModelProperty("资质与荣誉") + private String url; + + /** 删除标志(0代表存在 2代表删除) */ + @Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除") + @ApiModelProperty("删除标志(0代表存在 2代表删除)") + private String delFlag; + + /** 创建者 */ + @Excel(name = "创建者") + @ApiModelProperty("创建者") + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 创建时间 */ + @Excel(name = "创建时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("创建时间") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 更新者 */ + @Excel(name = "更新者") + @ApiModelProperty("更新者") + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updateBy; + + /** 更新时间 */ + @Excel(name = "更新时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("更新时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + /** 备注 */ + @Excel(name = "备注") + @ApiModelProperty("备注") + private String remark; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/domain/dto/CompanyAuthenticateDTO.java b/ruoyi-system/src/main/java/com/ruoyi/common/domain/dto/CompanyAuthenticateDTO.java new file mode 100644 index 0000000..06fccd0 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/common/domain/dto/CompanyAuthenticateDTO.java @@ -0,0 +1,55 @@ +package com.ruoyi.common.domain.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.math.BigDecimal; +import java.time.LocalDate; + +/** + * 企业认证 + * + * @author ruoyi + * @date 2025-03-26 + */ + +@Data +@ApiModel("企业认证") +public class CompanyAuthenticateDTO { + + @ApiModelProperty("企业名称") + private String companyName; + + @ApiModelProperty("统一社会信用代码") + private String creditCode; + + @ApiModelProperty("营业执照") + private String licenseImg; + + @ApiModelProperty("法人") + private String corporation; + + @ApiModelProperty("成立日期") + @JsonFormat(pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + private LocalDate establishmentDate; + + @ApiModelProperty("注册资本") + private BigDecimal registrationAmount; + + @ApiModelProperty("企业简介") + private String introduce; + + @ApiModelProperty("项目经验") + private String experience; + + @ApiModelProperty("员工数量") + private Integer employeeNum; + + @ApiModelProperty("资质与荣誉") + private String url; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/mapper/CommonCompanyMapper.java b/ruoyi-system/src/main/java/com/ruoyi/common/mapper/CommonCompanyMapper.java new file mode 100644 index 0000000..ae488f5 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/common/mapper/CommonCompanyMapper.java @@ -0,0 +1,18 @@ +package com.ruoyi.common.mapper; + +import com.ruoyi.common.domain.Company; +import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; +import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; +import org.apache.ibatis.annotations.CacheNamespace; + +/** + * 企业认证Mapper接口 + * + * @author ruoyi + * @date 2025-03-26 + */ +// 如使需切换数据源 请勿使用缓存 会造成数据不一致现象 +@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) +public interface CommonCompanyMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/service/IAnnexService.java b/ruoyi-system/src/main/java/com/ruoyi/common/service/IAnnexService.java index f316450..329e6a4 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/service/IAnnexService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/service/IAnnexService.java @@ -82,9 +82,9 @@ public interface IAnnexService extends IServicePlus { List findByUserIdAndRecruitId(Long userId,Long recruitId,String[] types); /** - * 根据务工者唯一标识+招工标识+附件类型 删除文件 + * 根据务工者唯一标识+招工标识+附件类型+招工ID 删除文件 */ - void deleteByUserIdAndRecruitIdAndType(List userIds,Long recruitId,String type); + void deleteByUserIdAndRecruitIdAndType(List userIds,Long recruitId,String type,List recruitApplyIds); /** * 检查入场材料 diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/service/ICompanyService.java b/ruoyi-system/src/main/java/com/ruoyi/common/service/ICompanyService.java new file mode 100644 index 0000000..f32046e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/common/service/ICompanyService.java @@ -0,0 +1,55 @@ +package com.ruoyi.common.service; + +import com.ruoyi.common.domain.Company; +import com.ruoyi.common.bo.CompanyQueryBo; +import com.ruoyi.common.core.mybatisplus.core.IServicePlus; +import com.ruoyi.common.core.page.TableDataInfo; + +import java.util.Collection; +import java.util.List; + +/** + * 企业认证Service接口 + * + * @author ruoyi + * @date 2025-03-26 + */ +public interface ICompanyService extends IServicePlus { + /** + * 查询单个 + * @return + */ + Company queryById(Long id); + + /** + * 查询列表 + */ + TableDataInfo queryPageList(CompanyQueryBo bo); + + /** + * 查询列表 + */ + List queryList(CompanyQueryBo bo); + + /** + * 根据新增业务对象插入企业认证 + * @param bo 企业认证新增业务对象 + * @return + */ + Boolean insert(Company bo); + + /** + * 根据编辑业务对象修改企业认证 + * @param bo 企业认证编辑业务对象 + * @return + */ + Boolean update(Company bo); + + /** + * 校验并删除数据 + * @param ids 主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/AnnexServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/AnnexServiceImpl.java index 2d32e38..937a466 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/AnnexServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/AnnexServiceImpl.java @@ -158,9 +158,10 @@ public class AnnexServiceImpl extends ServicePlusImpl implem } @Override - public void deleteByUserIdAndRecruitIdAndType(List userIds, Long recruitId, String type) { + public void deleteByUserIdAndRecruitIdAndType(List userIds, Long recruitId, String type,List recruitApplyIds) { baseMapper.delete(Wrappers.lambdaUpdate().in(Annex::getUserId,userIds) - .eq(Annex::getRecruitId,recruitId).eq(Annex::getAnnexType,type).eq(Annex::getUserType,WGZ)); + .eq(Annex::getRecruitId,recruitId).eq(Annex::getAnnexType,type).eq(Annex::getUserType,WGZ) + .in(Annex::getRecruitApplyId,recruitApplyIds)); } @Override diff --git a/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/CompanyServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/CompanyServiceImpl.java new file mode 100644 index 0000000..a6136a5 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/common/service/impl/CompanyServiceImpl.java @@ -0,0 +1,92 @@ +package com.ruoyi.common.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.common.core.page.TableDataInfo; +import org.springframework.stereotype.Service; +import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.common.bo.CompanyQueryBo; +import com.ruoyi.common.domain.Company; +import com.ruoyi.common.mapper.CommonCompanyMapper; +import com.ruoyi.common.service.ICompanyService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 企业认证Service业务层处理 + * + * @author ruoyi + * @date 2025-03-26 + */ +@Service +public class CompanyServiceImpl extends ServicePlusImpl implements ICompanyService { + + @Override + public Company queryById(Long id){ + return getById(id); + } + + @Override + public TableDataInfo queryPageList(CompanyQueryBo bo) { + Page result = page(PageUtils.buildPage(), buildQueryWrapper(bo)); + return PageUtils.buildDataInfo(result); + } + + @Override + public List queryList(CompanyQueryBo bo) { + return list(buildQueryWrapper(bo)); + } + + private LambdaQueryWrapper buildQueryWrapper(CompanyQueryBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.like(StrUtil.isNotBlank(bo.getCompanyName()), Company::getCompanyName, bo.getCompanyName()); + lqw.eq(StrUtil.isNotBlank(bo.getCreditCode()), Company::getCreditCode, bo.getCreditCode()); + lqw.eq(StrUtil.isNotBlank(bo.getLicenseImg()), Company::getLicenseImg, bo.getLicenseImg()); + lqw.eq(StrUtil.isNotBlank(bo.getCorporation()), Company::getCorporation, bo.getCorporation()); + lqw.eq(bo.getEstablishmentDate() != null, Company::getEstablishmentDate, bo.getEstablishmentDate()); + lqw.eq(bo.getRegistrationAmount() != null, Company::getRegistrationAmount, bo.getRegistrationAmount()); + lqw.eq(StrUtil.isNotBlank(bo.getIntroduce()), Company::getIntroduce, bo.getIntroduce()); + lqw.eq(StrUtil.isNotBlank(bo.getExperience()), Company::getExperience, bo.getExperience()); + lqw.eq(bo.getEmployeeNum() != null, Company::getEmployeeNum, bo.getEmployeeNum()); + lqw.eq(StrUtil.isNotBlank(bo.getUrl()), Company::getUrl, bo.getUrl()); + return lqw; + } + + @Override + public Boolean insert(Company bo) { + Company add = BeanUtil.toBean(bo, Company.class); + validEntityBeforeSave(add); + return save(add); + } + + @Override + public Boolean update(Company bo) { + Company update = BeanUtil.toBean(bo, Company.class); + validEntityBeforeSave(update); + return updateById(update); + } + + /** + * 保存前的数据校验 + * + * @param entity 实体类数据 + */ + private void validEntityBeforeSave(Company entity){ + //TODO 做一些数据校验,如唯一约束 + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return removeByIds(ids); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/bo/FbsUserQueryBo.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/bo/FbsUserQueryBo.java new file mode 100644 index 0000000..5bf07d6 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/bo/FbsUserQueryBo.java @@ -0,0 +1,97 @@ +package com.ruoyi.fbs.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.LocalDate; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * APP分包商用户分页查询对象 fbs_user + * + * @author ruoyi + * @date 2025-03-26 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("APP分包商用户分页查询对象") +public class FbsUserQueryBo extends BaseEntity { + + /** 分页大小 */ + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + /** 排序列 */ + @ApiModelProperty("排序列") + private String orderByColumn; + /** 排序的方向desc或者asc */ + @ApiModelProperty(value = "排序的方向", example = "asc,desc") + private String isAsc; + + + /** 唯一标识 */ + @ApiModelProperty("唯一标识") + private Long userId; + /** 联系电话 */ + @ApiModelProperty("联系电话") + private String phone; + /** 姓名 */ + @ApiModelProperty("姓名") + private String username; + /** 性别(0男 1女 2未知) */ + @ApiModelProperty("性别(0男 1女 2未知)") + private String gender; + /** 民族 */ + @ApiModelProperty("民族") + private String nation; + /** 出生日期 */ + @ApiModelProperty("出生日期") + private String birthdate; + /** 身份证号码 */ + @ApiModelProperty("身份证号码") + private String identityCard; + /** 所在区域 */ + @ApiModelProperty("所在区域") + private String area; + /** 地址 */ + @ApiModelProperty("地址") + private String site; + /** 银行 */ + @ApiModelProperty("银行") + private String bank; + /** 银行卡号 */ + @ApiModelProperty("银行卡号") + private String cardNo; + /** 头像地址 */ + @ApiModelProperty("头像地址") + private String avatarName; + /** 密码 */ + @ApiModelProperty("密码") + private String password; + /** 身份证正面图路径 */ + @ApiModelProperty("身份证正面图路径") + private String frontPath; + /** 身份证反面图路径 */ + @ApiModelProperty("身份证反面图路径") + private String reverseSidePath; + /** 银行卡图路径 */ + @ApiModelProperty("银行卡图路径") + private String bankCardPath; + /** 关联公司Id */ + @ApiModelProperty("关联公司Id") + private Long companyId; + /** 帐号状态(0正常 1停用) */ + @ApiModelProperty("帐号状态(0正常 1停用)") + private String status; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/bo/FbsWageApplicationQueryBo.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/bo/FbsWageApplicationQueryBo.java new file mode 100644 index 0000000..637105b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/bo/FbsWageApplicationQueryBo.java @@ -0,0 +1,96 @@ +package com.ruoyi.fbs.bo; + +import com.ruoyi.common.core.domain.BaseEntity; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 分包商工资申请分页查询对象 fbs_wage_application + * + * @author ruoyi + * @date 2025-03-26 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("分包商工资申请分页查询对象") +public class FbsWageApplicationQueryBo extends BaseEntity { + + /** 分页大小 */ + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + /** 排序列 */ + @ApiModelProperty("排序列") + private String orderByColumn; + /** 排序的方向desc或者asc */ + @ApiModelProperty(value = "排序的方向", example = "asc,desc") + private String isAsc; + + + /** 项目ID */ + @ApiModelProperty("项目ID") + private Long projectId; + /** 项目名称 */ + @ApiModelProperty("项目名称") + private String projectName; + /** 标段ID */ + @ApiModelProperty("标段ID") + private Long sectionId; + /** 分包ID */ + @ApiModelProperty("分包ID") + private Long subId; + /** 分包主题 */ + @ApiModelProperty("分包主题") + private String subName; + /** 任务地址(项目地址) */ + @ApiModelProperty("任务地址(项目地址)") + private String projectAddress; + /** 申请人ID */ + @ApiModelProperty("申请人ID") + private Long userId; + /** 申请人 */ + @ApiModelProperty("申请人") + private String username; + /** 银行 */ + @ApiModelProperty("银行") + private String bank; + /** 银行卡号 */ + @ApiModelProperty("银行卡号") + private String cardNo; + /** 联系电话 */ + @ApiModelProperty("联系电话") + private String phone; + /** 申请金额 */ + @ApiModelProperty("申请金额") + private BigDecimal applicantAmount; + /** 申请时间 */ + @ApiModelProperty("申请时间") + private LocalDateTime applyTime; + /** 用工情况 */ + @ApiModelProperty("用工情况") + private String employmentSituation; + /** 完工情况 */ + @ApiModelProperty("完工情况") + private String completionSituation; + /** 任务情况 */ + @ApiModelProperty("任务情况") + private String taskSituation; + /** 审核状态(1审核中 2已审核 3未通过) */ + @ApiModelProperty("审核状态(1审核中 2已审核 3未通过)") + private String auditStatus; + /** 审核人Id */ + @ApiModelProperty("审核人Id") + private Long reviewerId; + /** 审核人名字 */ + @ApiModelProperty("审核人名字") + private String reviewerName; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/FbsWageApplication.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/FbsWageApplication.java new file mode 100644 index 0000000..d2d480b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/FbsWageApplication.java @@ -0,0 +1,167 @@ +package com.ruoyi.fbs.domain; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 分包商工资申请对象 fbs_wage_application + * + * @author ruoyi + * @date 2025-03-26 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@TableName("fbs_wage_application") +@ApiModel("分包商工资申请视图对象") +public class FbsWageApplication implements Serializable { + + private static final long serialVersionUID=1L; + + /** 主键ID */ + @ApiModelProperty("主键ID") + @TableId(value = "id") + private Long id; + + /** 项目ID */ + @Excel(name = "项目ID") + @ApiModelProperty("项目ID") + private Long projectId; + + /** 项目名称 */ + @Excel(name = "项目名称") + @ApiModelProperty("项目名称") + private String projectName; + + /** 标段ID */ + @Excel(name = "标段ID") + @ApiModelProperty("标段ID") + private Long sectionId; + + /** 分包ID */ + @Excel(name = "分包ID") + @ApiModelProperty("分包ID") + private Long subId; + + /** 分包主题 */ + @Excel(name = "分包主题") + @ApiModelProperty("分包主题") + private String subName; + + /** 任务地址(项目地址) */ + @Excel(name = "任务地址(项目地址)") + @ApiModelProperty("任务地址(项目地址)") + private String projectAddress; + + /** 申请人ID */ + @Excel(name = "申请人ID") + @ApiModelProperty("申请人ID") + private Long userId; + + /** 申请人 */ + @Excel(name = "申请人") + @ApiModelProperty("申请人") + private String username; + + /** 银行 */ + @Excel(name = "银行") + @ApiModelProperty("银行") + private String bank; + + /** 银行卡号 */ + @Excel(name = "银行卡号") + @ApiModelProperty("银行卡号") + private String cardNo; + + /** 联系电话 */ + @Excel(name = "联系电话") + @ApiModelProperty("联系电话") + private String phone; + + /** 申请金额 */ + @Excel(name = "申请金额") + @ApiModelProperty("申请金额") + private BigDecimal applicantAmount; + + /** 申请时间 */ + @Excel(name = "申请时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("申请时间") + private LocalDateTime applyTime; + + /** 用工情况 */ + @Excel(name = "用工情况") + @ApiModelProperty("用工情况") + private String employmentSituation; + + /** 完工情况 */ + @Excel(name = "完工情况") + @ApiModelProperty("完工情况") + private String completionSituation; + + /** 任务情况 */ + @Excel(name = "任务情况") + @ApiModelProperty("任务情况") + private String taskSituation; + + /** 审核状态(1审核中 2已审核 3未通过) */ + @Excel(name = "审核状态" , readConverterExp = "1=审核中,2=已审核,3=未通过") + @ApiModelProperty("审核状态(1审核中 2已审核 3未通过)") + private String auditStatus; + + /** 审核人Id */ + @Excel(name = "审核人Id") + @ApiModelProperty("审核人Id") + private Long reviewerId; + + /** 审核人名字 */ + @Excel(name = "审核人名字") + @ApiModelProperty("审核人名字") + private String reviewerName; + + /** 删除标志(0代表存在 2代表删除) */ + @Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除") + @ApiModelProperty("删除标志(0代表存在 2代表删除)") + private String delFlag; + + /** 创建者 */ + @Excel(name = "创建者") + @ApiModelProperty("创建者") + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 创建时间 */ + @Excel(name = "创建时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("创建时间") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 更新者 */ + @Excel(name = "更新者") + @ApiModelProperty("更新者") + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updateBy; + + /** 更新时间 */ + @Excel(name = "更新时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("更新时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + /** 备注 */ + @Excel(name = "备注") + @ApiModelProperty("备注") + private String remark; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsProjectListDTO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsProjectListDTO.java new file mode 100644 index 0000000..9980bd6 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsProjectListDTO.java @@ -0,0 +1,23 @@ +package com.ruoyi.fbs.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel("分包商项目列表查询条件") +public class FbsProjectListDTO { + + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + + @ApiModelProperty("类型:0申请中,1已加入,2已竣工") + private Integer type; + + @ApiModelProperty(value = "分包商Id",hidden = true) + private Long fbsUserId; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsWageApplicationListDTO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsWageApplicationListDTO.java new file mode 100644 index 0000000..a5c5662 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/dto/FbsWageApplicationListDTO.java @@ -0,0 +1,29 @@ +package com.ruoyi.fbs.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 分包商工资申请分页查询对象 fbs_wage_application + * + * @author ruoyi + * @date 2025-03-26 + */ + +@Data +@ApiModel("分包商工资分页查询对象") +public class FbsWageApplicationListDTO { + + /** 分页大小 */ + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + + @ApiModelProperty("类型:0-申请中 1-已结算") + private Integer type; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectDetailVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectDetailVO.java new file mode 100644 index 0000000..6d168fd --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectDetailVO.java @@ -0,0 +1,46 @@ +package com.ruoyi.fbs.domain.vo; + +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.util.List; + +@Data +@ApiModel("分包商项目详情") +public class FbsProjectDetailVO { + + @ApiModelProperty("主键ID") + private Long id; + + @ApiModelProperty("统一社会信用代码") + private String creditCode; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("单位名称") + private String unitName; + + @ApiModelProperty("项目地址") + private String projectAddress; + + @ApiModelProperty("项目状态(0-未开工,1-已开工,2已竣工,3已停工)") + private String projectStatus; + + @ApiModelProperty("联系人") + private String contactPerson; + + @ApiModelProperty("联系电话") + private String contactPhone; + + @ApiModelProperty("创建时间") + @JsonFormat(pattern = "yyyy-MM-dd") + private LocalDateTime createTime; + + @ApiModelProperty("标段列表") + private List sectionList; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectListVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectListVO.java new file mode 100644 index 0000000..65b368b --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectListVO.java @@ -0,0 +1,31 @@ +package com.ruoyi.fbs.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("分包商项目列表") +public class FbsProjectListVO { + + @ApiModelProperty("主键ID") + private Long id; + + @ApiModelProperty("项目名称") + private String projectName; + + @ApiModelProperty("单位名称") + private String unitName; + + @ApiModelProperty("项目地址") + private String projectAddress; + + @ApiModelProperty("项目状态(0-未开工,1-已开工,2已竣工,3已停工)") + private String projectStatus; + + @ApiModelProperty("标段列表") + private List sectionList; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectSectionListVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectSectionListVO.java new file mode 100644 index 0000000..500def1 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectSectionListVO.java @@ -0,0 +1,26 @@ +package com.ruoyi.fbs.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.List; + +@Data +@ApiModel("分包商项目标段列表") +public class FbsProjectSectionListVO { + + @ApiModelProperty("主键ID") + private Long id; + + @ApiModelProperty("项目ID") + private Long projectId; + /** 标段名称 */ + @ApiModelProperty("标段名称") + private String sectionName; + + @ApiModelProperty("分包列表") + private List subList; + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectSubcontractingListVO.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectSubcontractingListVO.java new file mode 100644 index 0000000..a9c0545 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/domain/vo/FbsProjectSubcontractingListVO.java @@ -0,0 +1,38 @@ +package com.ruoyi.fbs.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +@Data +@ApiModel("分包商项目分包列表") +public class FbsProjectSubcontractingListVO { + + + @ApiModelProperty("主键ID") + private Long id; + + @ApiModelProperty("项目ID") + private Long projectId; + /** 标段ID */ + @ApiModelProperty("标段ID") + private Long sectionId; + /** 分包主题 */ + @ApiModelProperty("分包主题") + private String subName; + /** 分包描述 */ + @ApiModelProperty("分包描述") + private String subDescribe; + /** 分包金额 */ + @ApiModelProperty("分包金额") + private BigDecimal subAmount; + /** 资质要求 */ + @ApiModelProperty("资质要求") + private String qualification; + + + + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/mapper/FbsUserMapper.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/mapper/FbsUserMapper.java new file mode 100644 index 0000000..7c0a50e --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/mapper/FbsUserMapper.java @@ -0,0 +1,18 @@ +package com.ruoyi.fbs.mapper; + +import com.ruoyi.common.core.domain.entity.FbsUser; +import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; +import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; +import org.apache.ibatis.annotations.CacheNamespace; + +/** + * APP分包商用户Mapper接口 + * + * @author ruoyi + * @date 2025-03-26 + */ +// 如使需切换数据源 请勿使用缓存 会造成数据不一致现象 +@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) +public interface FbsUserMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/mapper/FbsWageApplicationMapper.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/mapper/FbsWageApplicationMapper.java new file mode 100644 index 0000000..0174d91 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/mapper/FbsWageApplicationMapper.java @@ -0,0 +1,18 @@ +package com.ruoyi.fbs.mapper; + +import com.ruoyi.fbs.domain.FbsWageApplication; +import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; +import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; +import org.apache.ibatis.annotations.CacheNamespace; + +/** + * 分包商工资申请Mapper接口 + * + * @author ruoyi + * @date 2025-03-26 + */ +// 如使需切换数据源 请勿使用缓存 会造成数据不一致现象 +@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) +public interface FbsWageApplicationMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsUserService.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsUserService.java new file mode 100644 index 0000000..b0573d9 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsUserService.java @@ -0,0 +1,71 @@ +package com.ruoyi.fbs.service; + +import com.ruoyi.common.core.domain.entity.FbsUser; +import com.ruoyi.common.core.mybatisplus.core.IServicePlus; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.domain.dto.CompanyAuthenticateDTO; +import com.ruoyi.fbs.bo.FbsUserQueryBo; + +import java.util.Collection; +import java.util.List; + +/** + * APP分包商用户Service接口 + * + * @author ruoyi + * @date 2025-03-26 + */ +public interface IFbsUserService extends IServicePlus { + /** + * 查询单个 + * @return + */ + FbsUser queryById(Long id); + + /** + * 查询列表 + */ + TableDataInfo queryPageList(FbsUserQueryBo bo); + + /** + * 查询列表 + */ + List queryList(FbsUserQueryBo bo); + + /** + * 根据新增业务对象插入APP分包商用户 + * @param bo APP分包商用户新增业务对象 + * @return + */ + Boolean insert(FbsUser bo); + + /** + * 根据编辑业务对象修改APP分包商用户 + * @param bo APP分包商用户编辑业务对象 + * @return + */ + Boolean update(FbsUser bo); + + /** + * 校验并删除数据 + * @param ids 主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 通过电话查询用户 + */ + FbsUser selectUserByPhone(String phone); + + /** + * 企业认证 + */ + Boolean authenticate(CompanyAuthenticateDTO dto); + + /** + * 企业认证 + */ + FbsUser selectUserByUserId(Long userId); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsWageApplicationService.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsWageApplicationService.java new file mode 100644 index 0000000..e2683a1 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/IFbsWageApplicationService.java @@ -0,0 +1,61 @@ +package com.ruoyi.fbs.service; + +import com.ruoyi.fbs.domain.FbsWageApplication; +import com.ruoyi.fbs.bo.FbsWageApplicationQueryBo; +import com.ruoyi.common.core.mybatisplus.core.IServicePlus; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.fbs.domain.dto.FbsWageApplicationListDTO; + +import java.util.Collection; +import java.util.List; + +/** + * 分包商工资申请Service接口 + * + * @author ruoyi + * @date 2025-03-26 + */ +public interface IFbsWageApplicationService extends IServicePlus { + /** + * 查询单个 + * @return + */ + FbsWageApplication queryById(Long id); + + /** + * 查询列表 + */ + TableDataInfo queryPageList(FbsWageApplicationQueryBo bo); + + /** + * 查询列表 + */ + List queryList(FbsWageApplicationQueryBo bo); + + /** + * 根据新增业务对象插入分包商工资申请 + * @param bo 分包商工资申请新增业务对象 + * @return + */ + Boolean insert(FbsWageApplication bo); + + /** + * 根据编辑业务对象修改分包商工资申请 + * @param bo 分包商工资申请编辑业务对象 + * @return + */ + Boolean update(FbsWageApplication bo); + + /** + * 校验并删除数据 + * @param ids 主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 查询列表 + */ + TableDataInfo record(FbsWageApplicationListDTO dto); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsUserServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsUserServiceImpl.java new file mode 100644 index 0000000..b792931 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsUserServiceImpl.java @@ -0,0 +1,128 @@ +package com.ruoyi.fbs.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.domain.entity.FbsUser; +import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.domain.Company; +import com.ruoyi.common.domain.dto.CompanyAuthenticateDTO; +import com.ruoyi.common.service.ICompanyService; +import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.fbs.bo.FbsUserQueryBo; +import com.ruoyi.fbs.mapper.FbsUserMapper; +import com.ruoyi.fbs.service.IFbsUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * APP分包商用户Service业务层处理 + * + * @author ruoyi + * @date 2025-03-26 + */ +@Service +public class FbsUserServiceImpl extends ServicePlusImpl implements IFbsUserService { + + + @Autowired + private ICompanyService companyService; + + @Override + public FbsUser queryById(Long id){ + return getById(id); + } + + @Override + public TableDataInfo queryPageList(FbsUserQueryBo bo) { + Page result = page(PageUtils.buildPage(), buildQueryWrapper(bo)); + return PageUtils.buildDataInfo(result); + } + + @Override + public List queryList(FbsUserQueryBo bo) { + return list(buildQueryWrapper(bo)); + } + + private LambdaQueryWrapper buildQueryWrapper(FbsUserQueryBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getUserId() != null, FbsUser::getUserId, bo.getUserId()); + lqw.eq(StrUtil.isNotBlank(bo.getPhone()), FbsUser::getPhone, bo.getPhone()); + lqw.like(StrUtil.isNotBlank(bo.getUsername()), FbsUser::getUsername, bo.getUsername()); + lqw.eq(StrUtil.isNotBlank(bo.getGender()), FbsUser::getGender, bo.getGender()); + lqw.eq(StrUtil.isNotBlank(bo.getNation()), FbsUser::getNation, bo.getNation()); + lqw.eq(StrUtil.isNotBlank(bo.getBirthdate()), FbsUser::getBirthdate, bo.getBirthdate()); + lqw.eq(StrUtil.isNotBlank(bo.getIdentityCard()), FbsUser::getIdentityCard, bo.getIdentityCard()); + lqw.eq(StrUtil.isNotBlank(bo.getArea()), FbsUser::getArea, bo.getArea()); + lqw.eq(StrUtil.isNotBlank(bo.getSite()), FbsUser::getSite, bo.getSite()); + lqw.eq(StrUtil.isNotBlank(bo.getBank()), FbsUser::getBank, bo.getBank()); + lqw.eq(StrUtil.isNotBlank(bo.getCardNo()), FbsUser::getCardNo, bo.getCardNo()); + lqw.like(StrUtil.isNotBlank(bo.getAvatarName()), FbsUser::getAvatarName, bo.getAvatarName()); + lqw.eq(StrUtil.isNotBlank(bo.getPassword()), FbsUser::getPassword, bo.getPassword()); + lqw.eq(StrUtil.isNotBlank(bo.getFrontPath()), FbsUser::getFrontPath, bo.getFrontPath()); + lqw.eq(StrUtil.isNotBlank(bo.getReverseSidePath()), FbsUser::getReverseSidePath, bo.getReverseSidePath()); + lqw.eq(StrUtil.isNotBlank(bo.getBankCardPath()), FbsUser::getBankCardPath, bo.getBankCardPath()); + lqw.eq(bo.getCompanyId() != null, FbsUser::getCompanyId, bo.getCompanyId()); + lqw.eq(StrUtil.isNotBlank(bo.getStatus()), FbsUser::getStatus, bo.getStatus()); + return lqw; + } + + @Override + public Boolean insert(FbsUser bo) { + FbsUser add = BeanUtil.toBean(bo, FbsUser.class); + validEntityBeforeSave(add); + return save(add); + } + + @Override + public Boolean update(FbsUser bo) { + FbsUser update = BeanUtil.toBean(bo, FbsUser.class); + validEntityBeforeSave(update); + return updateById(update); + } + + /** + * 保存前的数据校验 + * + * @param entity 实体类数据 + */ + private void validEntityBeforeSave(FbsUser entity){ + //TODO 做一些数据校验,如唯一约束 + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return removeByIds(ids); + } + + @Override + public FbsUser selectUserByPhone(String phone) { + return baseMapper.selectOne(new LambdaQueryWrapper().eq(FbsUser::getPhone, phone)); + } + + @Override + public Boolean authenticate(CompanyAuthenticateDTO dto) { + Company company = BeanUtil.copyProperties(dto, Company.class); + companyService.insert(company); + FbsUser fbsUser = selectUserByUserId(SecurityUtils.getAppUserId()); + fbsUser.setCompanyId(company.getId()); + return updateById(fbsUser); + } + + @Override + public FbsUser selectUserByUserId(Long userId) { + return baseMapper.selectOne(new LambdaQueryWrapper().eq(FbsUser::getUserId, userId)); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsWageApplicationServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsWageApplicationServiceImpl.java new file mode 100644 index 0000000..8a2b35c --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/fbs/service/impl/FbsWageApplicationServiceImpl.java @@ -0,0 +1,114 @@ +package com.ruoyi.fbs.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; +import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.AuditStatus; +import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.fbs.bo.FbsWageApplicationQueryBo; +import com.ruoyi.fbs.domain.FbsWageApplication; +import com.ruoyi.fbs.domain.dto.FbsWageApplicationListDTO; +import com.ruoyi.fbs.mapper.FbsWageApplicationMapper; +import com.ruoyi.fbs.service.IFbsWageApplicationService; +import org.springframework.stereotype.Service; + +import java.util.Collection; +import java.util.List; +import java.util.Map; + +/** + * 分包商工资申请Service业务层处理 + * + * @author ruoyi + * @date 2025-03-26 + */ +@Service +public class FbsWageApplicationServiceImpl extends ServicePlusImpl implements IFbsWageApplicationService { + + @Override + public FbsWageApplication queryById(Long id){ + return getById(id); + } + + @Override + public TableDataInfo queryPageList(FbsWageApplicationQueryBo bo) { + Page result = page(PageUtils.buildPage(), buildQueryWrapper(bo)); + return PageUtils.buildDataInfo(result); + } + + @Override + public List queryList(FbsWageApplicationQueryBo bo) { + return list(buildQueryWrapper(bo)); + } + + private LambdaQueryWrapper buildQueryWrapper(FbsWageApplicationQueryBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getProjectId() != null, FbsWageApplication::getProjectId, bo.getProjectId()); + lqw.like(StrUtil.isNotBlank(bo.getProjectName()), FbsWageApplication::getProjectName, bo.getProjectName()); + lqw.eq(bo.getSectionId() != null, FbsWageApplication::getSectionId, bo.getSectionId()); + lqw.eq(bo.getSubId() != null, FbsWageApplication::getSubId, bo.getSubId()); + lqw.like(StrUtil.isNotBlank(bo.getSubName()), FbsWageApplication::getSubName, bo.getSubName()); + lqw.eq(StrUtil.isNotBlank(bo.getProjectAddress()), FbsWageApplication::getProjectAddress, bo.getProjectAddress()); + lqw.eq(bo.getUserId() != null, FbsWageApplication::getUserId, bo.getUserId()); + lqw.like(StrUtil.isNotBlank(bo.getUsername()), FbsWageApplication::getUsername, bo.getUsername()); + lqw.eq(StrUtil.isNotBlank(bo.getBank()), FbsWageApplication::getBank, bo.getBank()); + lqw.eq(StrUtil.isNotBlank(bo.getCardNo()), FbsWageApplication::getCardNo, bo.getCardNo()); + lqw.eq(StrUtil.isNotBlank(bo.getPhone()), FbsWageApplication::getPhone, bo.getPhone()); + lqw.eq(bo.getApplicantAmount() != null, FbsWageApplication::getApplicantAmount, bo.getApplicantAmount()); + lqw.eq(bo.getApplyTime() != null, FbsWageApplication::getApplyTime, bo.getApplyTime()); + lqw.eq(StrUtil.isNotBlank(bo.getEmploymentSituation()), FbsWageApplication::getEmploymentSituation, bo.getEmploymentSituation()); + lqw.eq(StrUtil.isNotBlank(bo.getCompletionSituation()), FbsWageApplication::getCompletionSituation, bo.getCompletionSituation()); + lqw.eq(StrUtil.isNotBlank(bo.getTaskSituation()), FbsWageApplication::getTaskSituation, bo.getTaskSituation()); + lqw.eq(StrUtil.isNotBlank(bo.getAuditStatus()), FbsWageApplication::getAuditStatus, bo.getAuditStatus()); + lqw.eq(bo.getReviewerId() != null, FbsWageApplication::getReviewerId, bo.getReviewerId()); + lqw.like(StrUtil.isNotBlank(bo.getReviewerName()), FbsWageApplication::getReviewerName, bo.getReviewerName()); + return lqw; + } + + @Override + public Boolean insert(FbsWageApplication bo) { + FbsWageApplication add = BeanUtil.toBean(bo, FbsWageApplication.class); + validEntityBeforeSave(add); + return save(add); + } + + @Override + public Boolean update(FbsWageApplication bo) { + FbsWageApplication update = BeanUtil.toBean(bo, FbsWageApplication.class); + validEntityBeforeSave(update); + return updateById(update); + } + + /** + * 保存前的数据校验 + * + * @param entity 实体类数据 + */ + private void validEntityBeforeSave(FbsWageApplication entity){ + //TODO 做一些数据校验,如唯一约束 + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return removeByIds(ids); + } + + @Override + public TableDataInfo record(FbsWageApplicationListDTO dto) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(FbsWageApplication::getUserId, SecurityUtils.getAppUserId()) + .eq(dto.getType() == 0, FbsWageApplication::getAuditStatus, AuditStatus.AUDIT.getCode()) + .in(dto.getType() == 1, FbsWageApplication::getAuditStatus, AuditStatus.getAudit()); + Page result = page(PageUtils.buildPage(), wrapper); + return PageUtils.buildDataInfo(result); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/bo/ZbfProjectSubcontractingApplyQueryBo.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/bo/ZbfProjectSubcontractingApplyQueryBo.java new file mode 100644 index 0000000..2dac0b0 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/bo/ZbfProjectSubcontractingApplyQueryBo.java @@ -0,0 +1,58 @@ +package com.ruoyi.zbf.bo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; +import java.time.LocalTime; +import java.time.LocalDate; +import lombok.EqualsAndHashCode; + +import java.util.Date; + +import com.ruoyi.common.core.domain.BaseEntity; + +/** + * 总包方项目分包申请分页查询对象 zbf_project_subcontracting_apply + * + * @author ruoyi + * @date 2025-03-26 + */ + +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel("总包方项目分包申请分页查询对象") +public class ZbfProjectSubcontractingApplyQueryBo extends BaseEntity { + + /** 分页大小 */ + @ApiModelProperty("分页大小") + private Integer pageSize; + /** 当前页数 */ + @ApiModelProperty("当前页数") + private Integer pageNum; + /** 排序列 */ + @ApiModelProperty("排序列") + private String orderByColumn; + /** 排序的方向desc或者asc */ + @ApiModelProperty(value = "排序的方向", example = "asc,desc") + private String isAsc; + + + /** 项目ID */ + @ApiModelProperty("项目ID") + private Long projectId; + /** 标段ID */ + @ApiModelProperty("标段ID") + private Long sectionId; + /** 分包ID */ + @ApiModelProperty("分包ID") + private Long subId; + /** 分包商用户ID */ + @ApiModelProperty("分包商用户ID") + private Long fbsUserId; + /** 申请状态(0申请中 1已同意 2已拒绝) */ + @ApiModelProperty("申请状态(0申请中 1已同意 2已拒绝)") + private String applyStatus; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/controller/ZbfProjectSubcontractingApplyController.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/controller/ZbfProjectSubcontractingApplyController.java new file mode 100644 index 0000000..f93b67a --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/controller/ZbfProjectSubcontractingApplyController.java @@ -0,0 +1,108 @@ +package com.ruoyi.zbf.controller; + +import java.util.List; +import java.util.Arrays; + +import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply; +import lombok.RequiredArgsConstructor; +import javax.validation.constraints.*; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import org.springframework.validation.annotation.Validated; +import com.ruoyi.common.annotation.RepeatSubmit; +import com.ruoyi.common.annotation.Log; +import com.ruoyi.common.core.controller.BaseController; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.zbf.bo.ZbfProjectSubcontractingApplyQueryBo; +import com.ruoyi.zbf.service.IZbfProjectSubcontractingApplyService; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.common.core.page.TableDataInfo; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; + +/** + * 总包方项目分包申请Controller + * + * @author ruoyi + * @date 2025-03-26 + */ +@Api(value = "总包方项目分包申请控制器", tags = {"总包方项目分包申请管理"}) +@RequiredArgsConstructor(onConstructor_ = @Autowired) +@RestController +@RequestMapping("/zbf/apply") +public class ZbfProjectSubcontractingApplyController extends BaseController { + + private final IZbfProjectSubcontractingApplyService iZbfProjectSubcontractingApplyService; + + /** + * 查询总包方项目分包申请列表 + */ + @ApiOperation("查询总包方项目分包申请列表") + @PreAuthorize("@ss.hasPermi('zbf:apply:list')") + @GetMapping("/list") + public TableDataInfo list(@Validated ZbfProjectSubcontractingApplyQueryBo bo) { + return iZbfProjectSubcontractingApplyService.queryPageList(bo); + } + + /** + * 导出总包方项目分包申请列表 + */ + @ApiOperation("导出总包方项目分包申请列表") + @PreAuthorize("@ss.hasPermi('zbf:apply:export')") + @Log(title = "总包方项目分包申请", businessType = BusinessType.EXPORT) + @GetMapping("/export") + public AjaxResult export(@Validated ZbfProjectSubcontractingApplyQueryBo bo) { + List list = iZbfProjectSubcontractingApplyService.queryList(bo); + ExcelUtil util = new ExcelUtil(ZbfProjectSubcontractingApply.class); + return util.exportExcel(list, "总包方项目分包申请"); + } + + /** + * 获取总包方项目分包申请详细信息 + */ + @ApiOperation("获取总包方项目分包申请详细信息") + @PreAuthorize("@ss.hasPermi('zbf:apply:query')") + @GetMapping("/{id}") + public AjaxResult getInfo(@NotNull(message = "主键不能为空") + @PathVariable("id") Long id) { + return AjaxResult.success(iZbfProjectSubcontractingApplyService.queryById(id)); + } + + /** + * 新增总包方项目分包申请 + */ + @ApiOperation("新增总包方项目分包申请") + @PreAuthorize("@ss.hasPermi('zbf:apply:add')") + @Log(title = "总包方项目分包申请", businessType = BusinessType.INSERT) + @RepeatSubmit + @PostMapping() + public AjaxResult add(@Validated @RequestBody ZbfProjectSubcontractingApply bo) { + return toAjax(iZbfProjectSubcontractingApplyService.insert(bo) ? 1 : 0); + } + + /** + * 修改总包方项目分包申请 + */ + @ApiOperation("修改总包方项目分包申请") + @PreAuthorize("@ss.hasPermi('zbf:apply:edit')") + @Log(title = "总包方项目分包申请", businessType = BusinessType.UPDATE) + @RepeatSubmit + @PutMapping() + public AjaxResult edit(@Validated @RequestBody ZbfProjectSubcontractingApply bo) { + return toAjax(iZbfProjectSubcontractingApplyService.update(bo) ? 1 : 0); + } + + /** + * 删除总包方项目分包申请 + */ + @ApiOperation("删除总包方项目分包申请") + @PreAuthorize("@ss.hasPermi('zbf:apply:remove')") + @Log(title = "总包方项目分包申请" , businessType = BusinessType.DELETE) + @DeleteMapping("/{ids}") + public AjaxResult remove(@NotEmpty(message = "主键不能为空") + @PathVariable Long[] ids) { + return toAjax(iZbfProjectSubcontractingApplyService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); + } +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/ZbfProject.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/ZbfProject.java index 8a5095d..4919d11 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/ZbfProject.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/ZbfProject.java @@ -71,6 +71,9 @@ public class ZbfProject implements Serializable { @ApiModelProperty("联系电话") private String contactPhone; + @ApiModelProperty("项目状态(0-未开工,1-已开工,2已竣工,3已停工)") + private String projectStatus; + /** 删除标志(0代表存在 2代表删除) */ @Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除") @ApiModelProperty("删除标志(0代表存在 2代表删除)") diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/ZbfProjectSubcontractingApply.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/ZbfProjectSubcontractingApply.java new file mode 100644 index 0000000..7b770a4 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/domain/ZbfProjectSubcontractingApply.java @@ -0,0 +1,96 @@ +package com.ruoyi.zbf.domain; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.ruoyi.common.annotation.Excel; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.time.LocalDateTime; + +/** + * 总包方项目分包申请对象 zbf_project_subcontracting_apply + * + * @author ruoyi + * @date 2025-03-26 + */ +@Data +@NoArgsConstructor +@Accessors(chain = true) +@TableName("zbf_project_subcontracting_apply") +@ApiModel("总包方项目分包申请视图对象") +public class ZbfProjectSubcontractingApply implements Serializable { + + private static final long serialVersionUID=1L; + + /** 主键ID */ + @ApiModelProperty("主键ID") + @TableId(value = "id") + private Long id; + + /** 项目ID */ + @Excel(name = "项目ID") + @ApiModelProperty("项目ID") + private Long projectId; + + /** 标段ID */ + @Excel(name = "标段ID") + @ApiModelProperty("标段ID") + private Long sectionId; + + /** 分包ID */ + @Excel(name = "分包ID") + @ApiModelProperty("分包ID") + private Long subId; + + /** 分包商用户ID */ + @Excel(name = "分包商用户ID") + @ApiModelProperty("分包商用户ID") + private Long fbsUserId; + + /** 申请状态(0申请中 1已同意 2已拒绝) */ + @Excel(name = "申请状态" , readConverterExp = "0=申请中,1=已同意,2=已拒绝") + @ApiModelProperty("申请状态(0申请中 1已同意 2已拒绝)") + private String applyStatus; + + /** 删除标志(0代表存在 2代表删除) */ + @Excel(name = "删除标志" , readConverterExp = "0=代表存在,2=代表删除") + @ApiModelProperty("删除标志(0代表存在 2代表删除)") + private String delFlag; + + /** 创建者 */ + @Excel(name = "创建者") + @ApiModelProperty("创建者") + @TableField(fill = FieldFill.INSERT) + private String createBy; + + /** 创建时间 */ + @Excel(name = "创建时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("创建时间") + @TableField(fill = FieldFill.INSERT) + private LocalDateTime createTime; + + /** 更新者 */ + @Excel(name = "更新者") + @ApiModelProperty("更新者") + @TableField(fill = FieldFill.INSERT_UPDATE) + private String updateBy; + + /** 更新时间 */ + @Excel(name = "更新时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss") + @ApiModelProperty("更新时间") + @TableField(fill = FieldFill.INSERT_UPDATE) + private LocalDateTime updateTime; + + /** 备注 */ + @Excel(name = "备注") + @ApiModelProperty("备注") + private String remark; + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/mapper/ZbfProjectMapper.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/mapper/ZbfProjectMapper.java index 59f8d2c..e0f54ef 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/mapper/ZbfProjectMapper.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/mapper/ZbfProjectMapper.java @@ -1,10 +1,14 @@ package com.ruoyi.zbf.mapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; +import com.ruoyi.fbs.domain.dto.FbsProjectListDTO; +import com.ruoyi.fbs.domain.vo.FbsProjectListVO; import com.ruoyi.zbf.domain.ZbfProject; import org.apache.ibatis.annotations.CacheNamespace; +import org.apache.ibatis.annotations.Param; /** * 总包方项目Mapper接口 @@ -16,4 +20,15 @@ import org.apache.ibatis.annotations.CacheNamespace; @CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) public interface ZbfProjectMapper extends BaseMapperPlus { + // 查询分包商可报名项目列表 + Page signUpList(@Param("page") Page page, @Param("dto") FbsProjectListDTO dto); + + // 查询分包商申请中的项目列表 + Page applyList(@Param("page") Page page, @Param("dto") FbsProjectListDTO dto); + + // 查询分包商已加入的项目列表 + Page joinList(@Param("page") Page page, @Param("dto") FbsProjectListDTO dto); + + // 查询分包商已竣工的项目列表 + Page completeList(@Param("page") Page page, @Param("dto") FbsProjectListDTO dto); } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/mapper/ZbfProjectSubcontractingApplyMapper.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/mapper/ZbfProjectSubcontractingApplyMapper.java new file mode 100644 index 0000000..5c59e74 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/mapper/ZbfProjectSubcontractingApplyMapper.java @@ -0,0 +1,18 @@ +package com.ruoyi.zbf.mapper; + +import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply; +import com.ruoyi.common.core.mybatisplus.core.BaseMapperPlus; +import com.ruoyi.common.core.mybatisplus.cache.MybatisPlusRedisCache; +import org.apache.ibatis.annotations.CacheNamespace; + +/** + * 总包方项目分包申请Mapper接口 + * + * @author ruoyi + * @date 2025-03-26 + */ +// 如使需切换数据源 请勿使用缓存 会造成数据不一致现象 +@CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) +public interface ZbfProjectSubcontractingApplyMapper extends BaseMapperPlus { + +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectService.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectService.java index 9dde82b..cc16e15 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectService.java @@ -3,6 +3,9 @@ package com.ruoyi.zbf.service; import com.ruoyi.common.core.mybatisplus.core.IServicePlus; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.fbs.domain.dto.FbsProjectListDTO; +import com.ruoyi.fbs.domain.vo.FbsProjectDetailVO; +import com.ruoyi.fbs.domain.vo.FbsProjectListVO; import com.ruoyi.zbf.bo.ZbfProjectQueryBo; import com.ruoyi.zbf.domain.ZbfProject; @@ -53,4 +56,40 @@ public interface IZbfProjectService extends IServicePlus { * @return */ Boolean deleteWithValidByIds(Collection ids, Boolean isValid); + + /** + * 查询分包商可报名项目列表 + */ + TableDataInfo signUpList(FbsProjectListDTO dto); + + /** + * 查询分包商申请中的项目列表 + */ + TableDataInfo applyList(FbsProjectListDTO dto); + + /** + * 查询分包商已加入的项目列表 + */ + TableDataInfo joinList(FbsProjectListDTO dto); + + /** + * 查询分包商已竣工的项目列表 + */ + TableDataInfo completeList(FbsProjectListDTO dto); + + /** + * 分包商查看可报名项目详情 + */ + FbsProjectDetailVO signUpDetail(Long projectId); + + /** + * 分包商查看已申请项目详情 + */ + FbsProjectDetailVO applyDetail(Long projectId); + + /** + * 分包商查看已加入或已竣工项目详情 + */ + FbsProjectDetailVO joinOrCompleteDetail(Long projectId); + } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectSubcontractingApplyService.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectSubcontractingApplyService.java new file mode 100644 index 0000000..803db0d --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/IZbfProjectSubcontractingApplyService.java @@ -0,0 +1,55 @@ +package com.ruoyi.zbf.service; + +import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply; +import com.ruoyi.zbf.bo.ZbfProjectSubcontractingApplyQueryBo; +import com.ruoyi.common.core.mybatisplus.core.IServicePlus; +import com.ruoyi.common.core.page.TableDataInfo; + +import java.util.Collection; +import java.util.List; + +/** + * 总包方项目分包申请Service接口 + * + * @author ruoyi + * @date 2025-03-26 + */ +public interface IZbfProjectSubcontractingApplyService extends IServicePlus { + /** + * 查询单个 + * @return + */ + ZbfProjectSubcontractingApply queryById(Long id); + + /** + * 查询列表 + */ + TableDataInfo queryPageList(ZbfProjectSubcontractingApplyQueryBo bo); + + /** + * 查询列表 + */ + List queryList(ZbfProjectSubcontractingApplyQueryBo bo); + + /** + * 根据新增业务对象插入总包方项目分包申请 + * @param bo 总包方项目分包申请新增业务对象 + * @return + */ + Boolean insert(ZbfProjectSubcontractingApply bo); + + /** + * 根据编辑业务对象修改总包方项目分包申请 + * @param bo 总包方项目分包申请编辑业务对象 + * @return + */ + Boolean update(ZbfProjectSubcontractingApply bo); + + /** + * 校验并删除数据 + * @param ids 主键集合 + * @param isValid 是否校验,true-删除前校验,false-不校验 + * @return + */ + Boolean deleteWithValidByIds(Collection ids, Boolean isValid); +} diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectServiceImpl.java index 2c27004..93c759a 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectServiceImpl.java @@ -1,22 +1,39 @@ package com.ruoyi.zbf.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; +import com.ruoyi.common.enums.SubcontractingApplyStatus; import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.fbs.domain.dto.FbsProjectListDTO; +import com.ruoyi.fbs.domain.vo.FbsProjectDetailVO; +import com.ruoyi.fbs.domain.vo.FbsProjectListVO; +import com.ruoyi.fbs.domain.vo.FbsProjectSectionListVO; +import com.ruoyi.fbs.domain.vo.FbsProjectSubcontractingListVO; import com.ruoyi.zbf.bo.ZbfProjectQueryBo; import com.ruoyi.zbf.domain.ZbfProject; +import com.ruoyi.zbf.domain.ZbfProjectSection; +import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; +import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply; import com.ruoyi.zbf.mapper.ZbfProjectMapper; +import com.ruoyi.zbf.service.IZbfProjectSectionService; import com.ruoyi.zbf.service.IZbfProjectService; +import com.ruoyi.zbf.service.IZbfProjectSubcontractingApplyService; +import com.ruoyi.zbf.service.IZbfProjectSubcontractingService; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.stream.Collectors; /** * 总包方项目Service业务层处理 @@ -27,6 +44,13 @@ import java.util.Map; @Service public class ZbfProjectServiceImpl extends ServicePlusImpl implements IZbfProjectService { + @Autowired + private IZbfProjectSectionService zbfProjectSectionService; + @Autowired + private IZbfProjectSubcontractingService zbfProjectSubcontractingService; + @Autowired + private IZbfProjectSubcontractingApplyService zbfProjectSubcontractingApplyService; + @Override public ZbfProject queryById(Long id){ return getById(id); @@ -87,4 +111,267 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl signUpList(FbsProjectListDTO dto) { + Page queryDTOPage = new Page<>(); + queryDTOPage.setCurrent(dto.getPageNum()); + queryDTOPage.setSize(dto.getPageSize()); + dto.setFbsUserId(SecurityUtils.getAppUserId()); + Page queryVOPage = baseMapper.signUpList(queryDTOPage, dto); + //处理标段和分包 + for (FbsProjectListVO fbsProjectListVO : queryVOPage.getRecords()) { + Long projectId = fbsProjectListVO.getId(); + //查询项目下的所有申请 + List applyList = zbfProjectSubcontractingApplyService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSubcontractingApply::getProjectId, projectId).eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId())); + List applyIds = applyList.stream().map(ZbfProjectSubcontractingApply::getSubId).collect(Collectors.toList()); + + //标段处理 + List sectionListVO = new ArrayList<>(); + //查询项目下的所有标段 + List sectionList = zbfProjectSectionService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSection::getProjectId, projectId)); + for (ZbfProjectSection zbfProjectSection : sectionList){ + //分包处理 + List subListVO = new ArrayList<>(); + //查询标段下的所有未承接的分包 + List subList = zbfProjectSubcontractingService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()) + .isNull(ZbfProjectSubcontracting::getUserId)); + //排除掉已申请的分包 + for (ZbfProjectSubcontracting sub : subList){ + if(applyIds.contains(sub.getId())){ + continue; + } + FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); + BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); + subListVO.add(fbsProjectSubcontractingListVO); + } + if(CollectionUtil.isEmpty(subListVO)){ + continue; + } + FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); + BeanUtil.copyProperties(zbfProjectSection, fbsProjectSectionListVO); + fbsProjectSectionListVO.setSubList(subListVO); + + sectionListVO.add(fbsProjectSectionListVO); + } + fbsProjectListVO.setSectionList(sectionListVO); + } + return PageUtils.buildDataInfo(queryVOPage); + } + + + @Override + public TableDataInfo applyList(FbsProjectListDTO dto) { + Page queryDTOPage = new Page<>(); + queryDTOPage.setCurrent(dto.getPageNum()); + queryDTOPage.setSize(dto.getPageSize()); + dto.setFbsUserId(SecurityUtils.getAppUserId()); + Page queryVOPage = baseMapper.applyList(queryDTOPage, dto); + //处理标段和分包 + for (FbsProjectListVO fbsProjectListVO : queryVOPage.getRecords()) { + Long projectId = fbsProjectListVO.getId(); + //查询项目下的所有已申请和已拒绝申请 + List applyList = zbfProjectSubcontractingApplyService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSubcontractingApply::getProjectId, projectId) + .eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId()) + .in(ZbfProjectSubcontractingApply::getApplyStatus, SubcontractingApplyStatus.getApplyStatus())); + List applyIds = applyList.stream().map(ZbfProjectSubcontractingApply::getSubId).collect(Collectors.toList()); + + //标段处理 + List sectionListVO = new ArrayList<>(); + //查询项目下的所有标段 + List sectionList = zbfProjectSectionService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSection::getProjectId, projectId)); + for (ZbfProjectSection zbfProjectSection : sectionList){ + //分包处理 + List subListVO = new ArrayList<>(); + //查询标段下的所有的分包 + List subList = zbfProjectSubcontractingService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId())); + //排除掉未申请和已同意的分包 + for (ZbfProjectSubcontracting sub : subList){ + if(!applyIds.contains(sub.getId())){ + continue; + } + FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); + BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); + subListVO.add(fbsProjectSubcontractingListVO); + } + if(CollectionUtil.isEmpty(subListVO)){ + continue; + } + FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); + BeanUtil.copyProperties(zbfProjectSection, fbsProjectSectionListVO); + fbsProjectSectionListVO.setSubList(subListVO); + + sectionListVO.add(fbsProjectSectionListVO); + } + fbsProjectListVO.setSectionList(sectionListVO); + } + return PageUtils.buildDataInfo(queryVOPage); + } + + @Override + public TableDataInfo joinList(FbsProjectListDTO dto) { + Page queryDTOPage = new Page<>(); + queryDTOPage.setCurrent(dto.getPageNum()); + queryDTOPage.setSize(dto.getPageSize()); + dto.setFbsUserId(SecurityUtils.getAppUserId()); + Page queryVOPage = baseMapper.joinList(queryDTOPage, dto); + //处理标段和分包 + for (FbsProjectListVO fbsProjectListVO : queryVOPage.getRecords()) { + Long projectId = fbsProjectListVO.getId(); + fbsProjectListVO.setSectionList(handleSection(projectId)); + } + return PageUtils.buildDataInfo(queryVOPage); + } + + @Override + public TableDataInfo completeList(FbsProjectListDTO dto) { + Page queryDTOPage = new Page<>(); + queryDTOPage.setCurrent(dto.getPageNum()); + queryDTOPage.setSize(dto.getPageSize()); + dto.setFbsUserId(SecurityUtils.getAppUserId()); + Page queryVOPage = baseMapper.completeList(queryDTOPage, dto); + //处理标段和分包 + for (FbsProjectListVO fbsProjectListVO : queryVOPage.getRecords()) { + Long projectId = fbsProjectListVO.getId(); + fbsProjectListVO.setSectionList(handleSection(projectId)); + } + return PageUtils.buildDataInfo(queryVOPage); + } + + @Override + public FbsProjectDetailVO signUpDetail(Long projectId) { + ZbfProject byId = getById(projectId); + FbsProjectDetailVO fbsProjectDetailVO = BeanUtil.copyProperties(byId, FbsProjectDetailVO.class); + + //查询项目下的所有申请 + List applyList = zbfProjectSubcontractingApplyService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSubcontractingApply::getProjectId, projectId).eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId())); + List applyIds = applyList.stream().map(ZbfProjectSubcontractingApply::getSubId).collect(Collectors.toList()); + + //标段处理 + List sectionListVO = new ArrayList<>(); + //查询项目下的所有标段 + List sectionList = zbfProjectSectionService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSection::getProjectId, projectId)); + for (ZbfProjectSection zbfProjectSection : sectionList){ + //分包处理 + List subListVO = new ArrayList<>(); + //查询标段下的所有未承接的分包 + List subList = zbfProjectSubcontractingService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()) + .isNull(ZbfProjectSubcontracting::getUserId)); + //排除掉已申请的分包 + for (ZbfProjectSubcontracting sub : subList){ + if(applyIds.contains(sub.getId())){ + continue; + } + FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); + BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); + subListVO.add(fbsProjectSubcontractingListVO); + } + if(CollectionUtil.isEmpty(subListVO)){ + continue; + } + FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); + BeanUtil.copyProperties(zbfProjectSection, fbsProjectSectionListVO); + fbsProjectSectionListVO.setSubList(subListVO); + + sectionListVO.add(fbsProjectSectionListVO); + } + fbsProjectDetailVO.setSectionList(sectionListVO); + return fbsProjectDetailVO; + } + + @Override + public FbsProjectDetailVO applyDetail(Long projectId) { + ZbfProject byId = getById(projectId); + FbsProjectDetailVO fbsProjectDetailVO = BeanUtil.copyProperties(byId, FbsProjectDetailVO.class); + //查询项目下的所有申请中的申请和已拒绝的申请 + List applyList = zbfProjectSubcontractingApplyService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSubcontractingApply::getProjectId, projectId) + .eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId()) + .in(ZbfProjectSubcontractingApply::getApplyStatus, SubcontractingApplyStatus.getApplyStatus())); + List applyIds = applyList.stream().map(ZbfProjectSubcontractingApply::getSubId).collect(Collectors.toList()); + + //标段处理 + List sectionListVO = new ArrayList<>(); + //查询项目下的所有标段 + List sectionList = zbfProjectSectionService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSection::getProjectId, projectId)); + for (ZbfProjectSection zbfProjectSection : sectionList){ + //分包处理 + List subListVO = new ArrayList<>(); + //查询标段下的所有的分包 + List subList = zbfProjectSubcontractingService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId())); + //排除掉未申请和已同意的分包 + for (ZbfProjectSubcontracting sub : subList){ + if(!applyIds.contains(sub.getId())){ + continue; + } + FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); + BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); + subListVO.add(fbsProjectSubcontractingListVO); + } + if(CollectionUtil.isEmpty(subListVO)){ + continue; + } + FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); + BeanUtil.copyProperties(zbfProjectSection, fbsProjectSectionListVO); + fbsProjectSectionListVO.setSubList(subListVO); + + sectionListVO.add(fbsProjectSectionListVO); + } + fbsProjectDetailVO.setSectionList(sectionListVO); + return fbsProjectDetailVO; + } + + + @Override + public FbsProjectDetailVO joinOrCompleteDetail(Long projectId) { + ZbfProject byId = getById(projectId); + FbsProjectDetailVO fbsProjectDetailVO = BeanUtil.copyProperties(byId, FbsProjectDetailVO.class); + fbsProjectDetailVO.setSectionList(handleSection(projectId)); + return fbsProjectDetailVO; + } + + /** + * 已加入和已竣工项目标段处理 + */ + private List handleSection(Long projectId) { + //标段处理 + List sectionListVO = new ArrayList<>(); + //查询项目下的所有标段 + List sectionList = zbfProjectSectionService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSection::getProjectId, projectId)); + for (ZbfProjectSection zbfProjectSection : sectionList){ + //分包处理 + List subListVO = new ArrayList<>(); + //查询标段下的所有已承接的分包 + List subList = zbfProjectSubcontractingService.list(Wrappers.lambdaQuery() + .eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()) + .eq(ZbfProjectSubcontracting::getUserId, SecurityUtils.getAppUserId())); + + for (ZbfProjectSubcontracting sub : subList){ + FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); + BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); + subListVO.add(fbsProjectSubcontractingListVO); + } + if(CollectionUtil.isEmpty(subListVO)){ + continue; + } + FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); + BeanUtil.copyProperties(zbfProjectSection, fbsProjectSectionListVO); + fbsProjectSectionListVO.setSubList(subListVO); + + sectionListVO.add(fbsProjectSectionListVO); + } + return sectionListVO; + } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectSubcontractingApplyServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectSubcontractingApplyServiceImpl.java new file mode 100644 index 0000000..3416cf1 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/zbf/service/impl/ZbfProjectSubcontractingApplyServiceImpl.java @@ -0,0 +1,88 @@ +package com.ruoyi.zbf.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.ruoyi.common.utils.PageUtils; +import com.ruoyi.common.core.page.PagePlus; +import com.ruoyi.common.core.page.TableDataInfo; +import org.springframework.stereotype.Service; +import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.ruoyi.zbf.bo.ZbfProjectSubcontractingApplyQueryBo; +import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply; +import com.ruoyi.zbf.mapper.ZbfProjectSubcontractingApplyMapper; +import com.ruoyi.zbf.service.IZbfProjectSubcontractingApplyService; + +import java.util.List; +import java.util.Map; +import java.util.Collection; + +/** + * 总包方项目分包申请Service业务层处理 + * + * @author ruoyi + * @date 2025-03-26 + */ +@Service +public class ZbfProjectSubcontractingApplyServiceImpl extends ServicePlusImpl implements IZbfProjectSubcontractingApplyService { + + @Override + public ZbfProjectSubcontractingApply queryById(Long id){ + return getById(id); + } + + @Override + public TableDataInfo queryPageList(ZbfProjectSubcontractingApplyQueryBo bo) { + Page result = page(PageUtils.buildPage(), buildQueryWrapper(bo)); + return PageUtils.buildDataInfo(result); + } + + @Override + public List queryList(ZbfProjectSubcontractingApplyQueryBo bo) { + return list(buildQueryWrapper(bo)); + } + + private LambdaQueryWrapper buildQueryWrapper(ZbfProjectSubcontractingApplyQueryBo bo) { + Map params = bo.getParams(); + LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); + lqw.eq(bo.getProjectId() != null, ZbfProjectSubcontractingApply::getProjectId, bo.getProjectId()); + lqw.eq(bo.getSectionId() != null, ZbfProjectSubcontractingApply::getSectionId, bo.getSectionId()); + lqw.eq(bo.getSubId() != null, ZbfProjectSubcontractingApply::getSubId, bo.getSubId()); + lqw.eq(bo.getFbsUserId() != null, ZbfProjectSubcontractingApply::getFbsUserId, bo.getFbsUserId()); + lqw.eq(StrUtil.isNotBlank(bo.getApplyStatus()), ZbfProjectSubcontractingApply::getApplyStatus, bo.getApplyStatus()); + return lqw; + } + + @Override + public Boolean insert(ZbfProjectSubcontractingApply bo) { + ZbfProjectSubcontractingApply add = BeanUtil.toBean(bo, ZbfProjectSubcontractingApply.class); + validEntityBeforeSave(add); + return save(add); + } + + @Override + public Boolean update(ZbfProjectSubcontractingApply bo) { + ZbfProjectSubcontractingApply update = BeanUtil.toBean(bo, ZbfProjectSubcontractingApply.class); + validEntityBeforeSave(update); + return updateById(update); + } + + /** + * 保存前的数据校验 + * + * @param entity 实体类数据 + */ + private void validEntityBeforeSave(ZbfProjectSubcontractingApply entity){ + //TODO 做一些数据校验,如唯一约束 + } + + @Override + public Boolean deleteWithValidByIds(Collection ids, Boolean isValid) { + if(isValid){ + //TODO 做一些业务上的校验,判断是否需要校验 + } + return removeByIds(ids); + } +} diff --git a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml index f739f18..b6789dc 100644 --- a/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/bgt/BgtProjectRecruitApplyMapper.xml @@ -72,7 +72,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" wu.username from bgt_project_recruit_apply bpra left join wgz_user wu on bpra.user_id = wu.user_id - where bpra.recruit_id = #{recruitId} and bpra.status = '3' + where bpra.recruit_id = #{recruitId} and bpra.status in('3','5') + + and wu.user_id not in (select ca.user_id from common_annex ca + where bpra.recruit_id = ca.recruit_id + and bpra.id = ca.recruit_apply_id + and ca.user_type = 'wgz' ) + order by bpra.create_time desc,bpra.status asc diff --git a/ruoyi-system/src/main/resources/mapper/common/CommonCompanyMapper.xml b/ruoyi-system/src/main/resources/mapper/common/CommonCompanyMapper.xml new file mode 100644 index 0000000..236e478 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/common/CommonCompanyMapper.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/fbs/FbsUserMapper.xml b/ruoyi-system/src/main/resources/mapper/fbs/FbsUserMapper.xml new file mode 100644 index 0000000..d963bb0 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/fbs/FbsUserMapper.xml @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/fbs/FbsWageApplicationMapper.xml b/ruoyi-system/src/main/resources/mapper/fbs/FbsWageApplicationMapper.xml new file mode 100644 index 0000000..1ee4a95 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/fbs/FbsWageApplicationMapper.xml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectMapper.xml b/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectMapper.xml index 000e018..30a479b 100644 --- a/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectMapper.xml +++ b/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectMapper.xml @@ -22,5 +22,68 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + + + + + + + diff --git a/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectSubcontractingApplyMapper.xml b/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectSubcontractingApplyMapper.xml new file mode 100644 index 0000000..97b5970 --- /dev/null +++ b/ruoyi-system/src/main/resources/mapper/zbf/ZbfProjectSubcontractingApplyMapper.xml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/ruoyi/uploadPath/appResource/html/upload.html b/ruoyi/uploadPath/appResource/html/upload.html index 188d95e..3ae2e27 100644 --- a/ruoyi/uploadPath/appResource/html/upload.html +++ b/ruoyi/uploadPath/appResource/html/upload.html @@ -32,7 +32,7 @@ .action-bar { display: flex; justify-content: space-between; - margin: 20px 0; + margin: 2px 0; } /* 拖拽上传区域样式 */ .upload-area { @@ -78,7 +78,6 @@ :value="item.value" /> -
全选({{ userIds.length }}) + + 筛选未上传的人员列表 + +
+
+
-