分包
This commit is contained in:
		| @ -42,9 +42,9 @@ public class AppBgtProjectTaskApplyController extends BaseController { | |||||||
|  |  | ||||||
|  |  | ||||||
| 	@ApiOperation("App取消申请项目任务") | 	@ApiOperation("App取消申请项目任务") | ||||||
| 	@Log(title = "App取消申请项目任务" , businessType = BusinessType.DELETE) | 	@Log(title = "App取消申请项目任务" , businessType = BusinessType.UPDATE) | ||||||
| 	@DeleteMapping() | 	@PutMapping() | ||||||
| 	public AjaxResult<Boolean> cancelApply(BgtTaskApplyDTO dto) { | 	public AjaxResult<Boolean> cancelApply(@Validated @RequestBody BgtTaskApplyDTO dto) { | ||||||
| 		return AjaxResult.success(iFbsProjectTaskApplyService.cancelApply(dto)); | 		return AjaxResult.success(iFbsProjectTaskApplyService.cancelApply(dto)); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | |||||||
| @ -4,11 +4,10 @@ import cn.hutool.core.lang.Validator; | |||||||
| import com.ruoyi.bgt.service.IBgtUserService; | import com.ruoyi.bgt.service.IBgtUserService; | ||||||
| import com.ruoyi.common.constant.Constants; | import com.ruoyi.common.constant.Constants; | ||||||
| import com.ruoyi.common.core.domain.AjaxResult; | import com.ruoyi.common.core.domain.AjaxResult; | ||||||
| import com.ruoyi.common.core.domain.entity.BgtUser; | import com.ruoyi.common.core.domain.entity.*; | ||||||
| import com.ruoyi.common.core.domain.entity.SysDictData; |  | ||||||
| import com.ruoyi.common.core.domain.entity.SysUser; |  | ||||||
| import com.ruoyi.common.core.domain.model.BgtLoginBody; | import com.ruoyi.common.core.domain.model.BgtLoginBody; | ||||||
| import com.ruoyi.common.core.domain.model.LoginUser; | import com.ruoyi.common.core.domain.model.LoginUser; | ||||||
|  | import com.ruoyi.common.service.ICompanyService; | ||||||
| import com.ruoyi.common.util.DataUtil; | import com.ruoyi.common.util.DataUtil; | ||||||
| import com.ruoyi.common.utils.SecurityUtils; | import com.ruoyi.common.utils.SecurityUtils; | ||||||
| import com.ruoyi.common.utils.ServletUtils; | import com.ruoyi.common.utils.ServletUtils; | ||||||
| @ -19,6 +18,7 @@ import com.ruoyi.framework.web.service.TokenService; | |||||||
| import com.ruoyi.system.service.ISysDictTypeService; | import com.ruoyi.system.service.ISysDictTypeService; | ||||||
| import com.ruoyi.system.service.ISysMenuService; | import com.ruoyi.system.service.ISysMenuService; | ||||||
| import com.ruoyi.wgz.service.IWgzUserService; | import com.ruoyi.wgz.service.IWgzUserService; | ||||||
|  | import com.ruoyi.zbf.service.IZbfUserService; | ||||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
| @ -64,8 +64,13 @@ public class  AppLoginController | |||||||
| 	@Autowired | 	@Autowired | ||||||
| 	private IFbsUserService fbsUserService; | 	private IFbsUserService fbsUserService; | ||||||
|  |  | ||||||
|  | 	@Autowired | ||||||
|  | 	private IZbfUserService zbfUserService; | ||||||
|  |  | ||||||
| 	@Autowired | 	@Autowired | ||||||
| 	private ISysDictTypeService dictTypeService; | 	private ISysDictTypeService dictTypeService; | ||||||
|  | 	@Autowired | ||||||
|  | 	private ICompanyService companyService; | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 登录方法 |      * 登录方法 | ||||||
| @ -108,7 +113,14 @@ public class  AppLoginController | |||||||
| 				ajax.put("user", wgzUserService.userLongIn(user.getPhonenumber())); | 				ajax.put("user", wgzUserService.userLongIn(user.getPhonenumber())); | ||||||
| 				break; | 				break; | ||||||
| 			case Constants.FBS: | 			case Constants.FBS: | ||||||
| 				ajax.put("user", fbsUserService.selectUserByPhone(user.getPhonenumber())); | 				FbsUser fbsUser = fbsUserService.selectUserByPhone(user.getPhonenumber()); | ||||||
|  | 				fbsUser.setCompanyName(companyService.getCompanyNameById(fbsUser.getCompanyId())); | ||||||
|  | 				ajax.put("user", fbsUser); | ||||||
|  | 				break; | ||||||
|  | 			case Constants.ZBF: | ||||||
|  | 				ZbfUser zbfUser = zbfUserService.selectUserByPhone(user.getPhonenumber()); | ||||||
|  | 				zbfUser.setCompanyName(companyService.getCompanyNameById(zbfUser.getCompanyId())); | ||||||
|  | 				ajax.put("user", zbfUser); | ||||||
| 				break; | 				break; | ||||||
| 			default: | 			default: | ||||||
| 				break; | 				break; | ||||||
|  | |||||||
| @ -0,0 +1,52 @@ | |||||||
|  | package com.ruoyi.web.controller.common; | ||||||
|  |  | ||||||
|  | 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.Company; | ||||||
|  | import com.ruoyi.common.enums.BusinessType; | ||||||
|  | import com.ruoyi.common.service.ICompanyService; | ||||||
|  | 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 = "企业认证控制器", tags = {"企业认证管理"}) | ||||||
|  | @RequiredArgsConstructor(onConstructor_ = @Autowired) | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/common/company") | ||||||
|  | public class CompanyController extends BaseController { | ||||||
|  |  | ||||||
|  |     private final ICompanyService iCommonCompanyService; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取企业认证详细信息 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("获取企业认证详细信息") | ||||||
|  |     @GetMapping("/{id}") | ||||||
|  |     public AjaxResult<Company> getInfo(@NotNull(message = "主键不能为空") | ||||||
|  |                                                   @PathVariable("id") Long id) { | ||||||
|  |         return AjaxResult.success(iCommonCompanyService.queryById(id)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @ApiOperation("修改企业认证") | ||||||
|  |     @Log(title = "企业认证", businessType = BusinessType.UPDATE) | ||||||
|  |     @RepeatSubmit | ||||||
|  |     @PutMapping() | ||||||
|  |     public AjaxResult<Boolean> edit(@Validated @RequestBody Company bo) { | ||||||
|  |         return AjaxResult.success(iCommonCompanyService.update(bo)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -5,6 +5,7 @@ import com.ruoyi.common.core.domain.AjaxResult; | |||||||
| import com.ruoyi.common.core.page.TableDataInfo; | import com.ruoyi.common.core.page.TableDataInfo; | ||||||
| import com.ruoyi.fbs.domain.dto.FbsProjectListDTO; | import com.ruoyi.fbs.domain.dto.FbsProjectListDTO; | ||||||
| import com.ruoyi.fbs.domain.vo.FbsProjectDetailVO; | import com.ruoyi.fbs.domain.vo.FbsProjectDetailVO; | ||||||
|  | import com.ruoyi.fbs.domain.vo.FbsProjectListCountVO; | ||||||
| import com.ruoyi.fbs.domain.vo.FbsProjectListVO; | import com.ruoyi.fbs.domain.vo.FbsProjectListVO; | ||||||
| import com.ruoyi.zbf.service.IZbfProjectService; | import com.ruoyi.zbf.service.IZbfProjectService; | ||||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||||
| @ -40,7 +41,7 @@ public class AppFbsProjectController extends BaseController { | |||||||
|  |  | ||||||
| 	@ApiOperation("分包商查询自己的项目列表") | 	@ApiOperation("分包商查询自己的项目列表") | ||||||
| 	@GetMapping("/myList") | 	@GetMapping("/myList") | ||||||
| 	public TableDataInfo<FbsProjectListVO> applyList(FbsProjectListDTO dto) { | 	public TableDataInfo<FbsProjectListVO> myList(FbsProjectListDTO dto) { | ||||||
| 		if(dto.getType()==0){ | 		if(dto.getType()==0){ | ||||||
| 			return zbfProjectService.applyList(dto); | 			return zbfProjectService.applyList(dto); | ||||||
| 		} else if (dto.getType()==1) { | 		} else if (dto.getType()==1) { | ||||||
| @ -49,6 +50,11 @@ public class AppFbsProjectController extends BaseController { | |||||||
| 			return zbfProjectService.completeList(dto); | 			return zbfProjectService.completeList(dto); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | 	@ApiOperation("分包商查询自己的项目列表数量统计") | ||||||
|  | 	@GetMapping("/myListCount") | ||||||
|  | 	public AjaxResult<FbsProjectListCountVO> myListCount() { | ||||||
|  | 		return AjaxResult.success(zbfProjectService.myListCount()); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|     @ApiOperation("分包商查看可报名项目详情") |     @ApiOperation("分包商查看可报名项目详情") | ||||||
|     @GetMapping("/signUp/{id}") |     @GetMapping("/signUp/{id}") | ||||||
| @ -71,10 +77,11 @@ public class AppFbsProjectController extends BaseController { | |||||||
| 		return AjaxResult.success(zbfProjectService.joinOrCompleteDetail(id)); | 		return AjaxResult.success(zbfProjectService.joinOrCompleteDetail(id)); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	@ApiOperation("分包商查询我的项目列表-项目切换") | ||||||
|  | 	@GetMapping("/switchList") | ||||||
|  | 	public TableDataInfo<FbsProjectListVO> switchList(FbsProjectListDTO dto) { | ||||||
|  | 		return zbfProjectService.switchList(dto); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| // | // | ||||||
|  | |||||||
| @ -24,11 +24,11 @@ import org.springframework.web.bind.annotation.RestController; | |||||||
| @RequiredArgsConstructor(onConstructor_ = @Autowired) | @RequiredArgsConstructor(onConstructor_ = @Autowired) | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/app/fbs/section") | @RequestMapping("/app/fbs/section") | ||||||
| public class FbsProjectSectionController extends BaseController { | public class AppFbsProjectSectionController extends BaseController { | ||||||
| 
 | 
 | ||||||
|     private final IZbfProjectSectionService iZbfProjectSectionService; |     private final IZbfProjectSectionService iZbfProjectSectionService; | ||||||
| 
 | 
 | ||||||
| 	@ApiOperation("分包商查询自己的项目分包列表") | 	@ApiOperation("分包商查询自己的项目分包列表-分包切换") | ||||||
| 	@GetMapping("/fbsSubList") | 	@GetMapping("/fbsSubList") | ||||||
| 	public TableDataInfo<FbsProjectSectionListVO> fbsSubList(@Validated FbsProjectSectionListDTO dto) { | 	public TableDataInfo<FbsProjectSectionListVO> fbsSubList(@Validated FbsProjectSectionListDTO dto) { | ||||||
| 		return iZbfProjectSectionService.fbsSubList(dto); | 		return iZbfProjectSectionService.fbsSubList(dto); | ||||||
| @ -1,8 +1,11 @@ | |||||||
| package com.ruoyi.web.controller.fbs; | package com.ruoyi.web.controller.fbs; | ||||||
|  |  | ||||||
|  | import cn.hutool.core.bean.BeanUtil; | ||||||
| import com.ruoyi.common.core.controller.BaseController; | import com.ruoyi.common.core.controller.BaseController; | ||||||
| import com.ruoyi.common.core.domain.AjaxResult; | import com.ruoyi.common.core.domain.AjaxResult; | ||||||
|  | import com.ruoyi.fbs.domain.vo.FbsProjectSubcontractingDetailVO; | ||||||
| import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; | import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; | ||||||
|  | import com.ruoyi.zbf.service.IZbfProjectSectionService; | ||||||
| import com.ruoyi.zbf.service.IZbfProjectSubcontractingService; | import com.ruoyi.zbf.service.IZbfProjectSubcontractingService; | ||||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||||
| @ -28,12 +31,16 @@ import javax.validation.constraints.NotNull; | |||||||
| public class AppFbsProjectSubcontractingController extends BaseController { | public class AppFbsProjectSubcontractingController extends BaseController { | ||||||
|  |  | ||||||
|     private final IZbfProjectSubcontractingService iZbfProjectSubcontractingService; |     private final IZbfProjectSubcontractingService iZbfProjectSubcontractingService; | ||||||
|  | 	private final IZbfProjectSectionService zbfProjectSectionService; | ||||||
|  |  | ||||||
|     @ApiOperation("分包商查询项目分包详细信息") |     @ApiOperation("分包商查询项目分包详细信息") | ||||||
|     @GetMapping("/{id}") |     @GetMapping("/{id}") | ||||||
|     public AjaxResult<ZbfProjectSubcontracting> getInfo(@NotNull(message = "主键不能为空") |     public AjaxResult<FbsProjectSubcontractingDetailVO> getInfo(@NotNull(message = "主键不能为空") | ||||||
|                                                   @PathVariable("id") Long id) { |                                                   @PathVariable("id") Long id) { | ||||||
|         return AjaxResult.success(iZbfProjectSubcontractingService.queryById(id)); | 		ZbfProjectSubcontracting zbfProjectSubcontracting = iZbfProjectSubcontractingService.queryById(id); | ||||||
|  | 		FbsProjectSubcontractingDetailVO vo = BeanUtil.copyProperties(zbfProjectSubcontracting, FbsProjectSubcontractingDetailVO.class); | ||||||
|  | 		vo.setSectionName(zbfProjectSectionService.getById(vo.getSectionId()).getSectionName()); | ||||||
|  | 		return AjaxResult.success(vo); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,42 @@ | |||||||
|  | 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.fbs.service.IFbsProjectTaskApplyService; | ||||||
|  | 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.*; | ||||||
|  |  | ||||||
|  | import javax.validation.constraints.NotNull; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包商项目任务申请Controller | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-02-17 | ||||||
|  |  */ | ||||||
|  | @Api(value = "App分包商项目任务申请控制器", tags = {"App分包商"}) | ||||||
|  | @RequiredArgsConstructor(onConstructor_ = @Autowired) | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/app/fbs/apply") | ||||||
|  | public class AppFbsProjectTaskApplyController extends BaseController { | ||||||
|  |  | ||||||
|  |     private final IFbsProjectTaskApplyService iFbsProjectTaskApplyService; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @ApiOperation("分包商选择包工头") | ||||||
|  |     @Log(title = "分包商选择包工头", businessType = BusinessType.UPDATE) | ||||||
|  |     @RepeatSubmit | ||||||
|  |     @PutMapping("/{id}") | ||||||
|  |     public AjaxResult<Boolean> choose(@NotNull(message = "主键不能为空") | ||||||
|  | 										  @PathVariable("id") Long id) { | ||||||
|  |         return AjaxResult.success(iFbsProjectTaskApplyService.choose(id)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -71,6 +71,11 @@ public class AppFbsProjectTaskController extends BaseController { | |||||||
| 	public TableDataInfo<FbsProjectTaskListVO> list(@Validated FbsTaskListDTO dto) { | 	public TableDataInfo<FbsProjectTaskListVO> list(@Validated FbsTaskListDTO dto) { | ||||||
| 		return iFbsProjectTaskService.fbsPageList(dto); | 		return iFbsProjectTaskService.fbsPageList(dto); | ||||||
| 	} | 	} | ||||||
|  | 	@ApiOperation("分包商查询任务列表数量统计") | ||||||
|  | 	@GetMapping("/listCount") | ||||||
|  | 	public AjaxResult<FbsProjectTaskListCountVO> listCount() { | ||||||
|  | 		return AjaxResult.success(iFbsProjectTaskService.fbsListCount()); | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	@ApiOperation("分包商查询任务详情-基础信息") | 	@ApiOperation("分包商查询任务详情-基础信息") | ||||||
| 	@GetMapping("/base/{id}") | 	@GetMapping("/base/{id}") | ||||||
|  | |||||||
| @ -58,8 +58,9 @@ public class AppFbsProjectTaskProgressController extends BaseController { | |||||||
| 	@RepeatSubmit | 	@RepeatSubmit | ||||||
| 	@PutMapping() | 	@PutMapping() | ||||||
| 	public AjaxResult<Boolean> edit(@Validated @RequestBody FbsProjectTaskProgressAuditDTO dto) { | 	public AjaxResult<Boolean> edit(@Validated @RequestBody FbsProjectTaskProgressAuditDTO dto) { | ||||||
| 		BgtProjectTaskProgress bo = BeanUtil.copyProperties(dto, BgtProjectTaskProgress.class); | 		BgtProjectTaskProgress bo = iBgtProjectTaskProgressService.getById(dto.getId()); | ||||||
| 		return AjaxResult.success(iBgtProjectTaskProgressService.update(bo)); | 		BeanUtil.copyProperties(dto, bo); | ||||||
|  | 		return AjaxResult.success(iBgtProjectTaskProgressService.fbsAudit(bo)); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -23,7 +23,7 @@ import org.springframework.web.bind.annotation.RestController; | |||||||
|  * @author ruoyi |  * @author ruoyi | ||||||
|  * @date 2025-03-26 |  * @date 2025-03-26 | ||||||
|  */ |  */ | ||||||
| @Api(value = "APP分包商用户控制器", tags = {"APP分包商"}) | @Api(value = "App分包商用户控制器", tags = {"App分包商"}) | ||||||
| @RequiredArgsConstructor(onConstructor_ = @Autowired) | @RequiredArgsConstructor(onConstructor_ = @Autowired) | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/app/fbs/user") | @RequestMapping("/app/fbs/user") | ||||||
| @ -36,7 +36,7 @@ public class AppFbsUserController extends BaseController { | |||||||
|     @Log(title = "分包商企业认证", businessType = BusinessType.UPDATE) |     @Log(title = "分包商企业认证", businessType = BusinessType.UPDATE) | ||||||
|     @RepeatSubmit |     @RepeatSubmit | ||||||
|     @PutMapping() |     @PutMapping() | ||||||
|     public AjaxResult<Boolean> edit(@Validated @RequestBody CompanyAuthenticateDTO dto) { |     public AjaxResult<Long> edit(@Validated @RequestBody CompanyAuthenticateDTO dto) { | ||||||
|         return AjaxResult.success(iFbsUserService.authenticate(dto)); |         return AjaxResult.success(iFbsUserService.authenticate(dto)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | |||||||
| @ -16,7 +16,6 @@ import com.ruoyi.fbs.domain.dto.FbsWageApplicationListDTO; | |||||||
| import com.ruoyi.fbs.domain.dto.FbsWageAuditDTO; | import com.ruoyi.fbs.domain.dto.FbsWageAuditDTO; | ||||||
| import com.ruoyi.fbs.domain.dto.FbsWageAuditListDTO; | import com.ruoyi.fbs.domain.dto.FbsWageAuditListDTO; | ||||||
| import com.ruoyi.fbs.service.IFbsWageApplicationService; | import com.ruoyi.fbs.service.IFbsWageApplicationService; | ||||||
| import com.ruoyi.zbf.service.IZbfProjectService; |  | ||||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||||
| import lombok.RequiredArgsConstructor; | import lombok.RequiredArgsConstructor; | ||||||
| @ -40,7 +39,6 @@ public class AppFbsWageApplicationController extends BaseController { | |||||||
|  |  | ||||||
|     private final IFbsWageApplicationService iFbsWageApplicationService; |     private final IFbsWageApplicationService iFbsWageApplicationService; | ||||||
| 	private final IBgtWageApplicationService iBgtWageApplicationService; | 	private final IBgtWageApplicationService iBgtWageApplicationService; | ||||||
| 	private final IZbfProjectService iZbfProjectService; |  | ||||||
|  |  | ||||||
|     @ApiOperation("分包商查询自己的工资申请列表") |     @ApiOperation("分包商查询自己的工资申请列表") | ||||||
|     @GetMapping("/list") |     @GetMapping("/list") | ||||||
| @ -87,7 +85,7 @@ public class AppFbsWageApplicationController extends BaseController { | |||||||
| 	public AjaxResult<Boolean> audit(@Validated @RequestBody FbsWageAuditDTO dto) { | 	public AjaxResult<Boolean> audit(@Validated @RequestBody FbsWageAuditDTO dto) { | ||||||
| 		BgtWageApplication bo = iBgtWageApplicationService.getById(dto.getId()); | 		BgtWageApplication bo = iBgtWageApplicationService.getById(dto.getId()); | ||||||
| 		BeanUtil.copyProperties(dto, bo); | 		BeanUtil.copyProperties(dto, bo); | ||||||
| 		return AjaxResult.success(iBgtWageApplicationService.update(bo)); | 		return AjaxResult.success(iBgtWageApplicationService.fbsAudit(bo)); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | |||||||
| @ -0,0 +1,57 @@ | |||||||
|  | package com.ruoyi.web.controller.zbf; | ||||||
|  |  | ||||||
|  | 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.zbf.domain.dto.ZbfProjectAddDTO; | ||||||
|  | import com.ruoyi.zbf.domain.dto.ZbfProjectListDTO; | ||||||
|  | import com.ruoyi.zbf.domain.vo.ZbfProjectCountVO; | ||||||
|  | import com.ruoyi.zbf.domain.vo.ZbfProjectListVO; | ||||||
|  | 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.validation.annotation.Validated; | ||||||
|  | import org.springframework.web.bind.annotation.*; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 总包方项目Controller | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-02-17 | ||||||
|  |  */ | ||||||
|  | @Api(value = "App总包方项目控制器", tags = {"App总包方"}) | ||||||
|  | @RequiredArgsConstructor(onConstructor_ = @Autowired) | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/app/zbf/project") | ||||||
|  | public class AppZbfProjectController extends BaseController { | ||||||
|  |  | ||||||
|  |     private final IZbfProjectService iZbfProjectService; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @ApiOperation("总包方新增项目") | ||||||
|  |     @Log(title = "总包方新增项目", businessType = BusinessType.INSERT) | ||||||
|  |     @RepeatSubmit | ||||||
|  |     @PostMapping() | ||||||
|  |     public AjaxResult<Boolean> add(@Validated @RequestBody ZbfProjectAddDTO dto) { | ||||||
|  |         return AjaxResult.success(iZbfProjectService.add(dto)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | 	@ApiOperation("总包方查询我的项目列表") | ||||||
|  | 	@GetMapping("/list") | ||||||
|  | 	public TableDataInfo<ZbfProjectListVO> list(@Validated ZbfProjectListDTO dto) { | ||||||
|  | 		return iZbfProjectService.queryZbfList(dto); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	@ApiOperation("总包方查询自建项目统计") | ||||||
|  | 	@GetMapping("/count") | ||||||
|  | 	public AjaxResult<ZbfProjectCountVO> projectCount() { | ||||||
|  | 		return AjaxResult.success(iZbfProjectService.projectCount()); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,45 @@ | |||||||
|  | package com.ruoyi.web.controller.zbf; | ||||||
|  |  | ||||||
|  | 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.zbf.service.IZbfProjectSubcontractingApplyService; | ||||||
|  | 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.PathVariable; | ||||||
|  | import org.springframework.web.bind.annotation.PutMapping; | ||||||
|  | import org.springframework.web.bind.annotation.RequestMapping; | ||||||
|  | import org.springframework.web.bind.annotation.RestController; | ||||||
|  |  | ||||||
|  | import javax.validation.constraints.NotNull; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 总包方项目分包申请Controller | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-03-26 | ||||||
|  |  */ | ||||||
|  | @Api(value = "App总包方项目分包申请控制器", tags = {"App总包方"}) | ||||||
|  | @RequiredArgsConstructor(onConstructor_ = @Autowired) | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/app/zbf/apply") | ||||||
|  | public class AppZbfProjectSubcontractingApplyController extends BaseController { | ||||||
|  |  | ||||||
|  |     private final IZbfProjectSubcontractingApplyService iZbfProjectSubcontractingApplyService; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @ApiOperation("总包方选择分包商") | ||||||
|  |     @Log(title = "总包方选择分包商", businessType = BusinessType.UPDATE) | ||||||
|  |     @RepeatSubmit | ||||||
|  | 	@PutMapping("/{id}") | ||||||
|  |     public AjaxResult<Void> choose(@NotNull(message = "主键不能为空") | ||||||
|  | 									   @PathVariable("id") Long id) { | ||||||
|  |         return toAjax(iZbfProjectSubcontractingApplyService.choose(id)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,109 @@ | |||||||
|  | package com.ruoyi.web.controller.zbf; | ||||||
|  |  | ||||||
|  | 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.ZbfUser; | ||||||
|  | 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.ZbfUserQueryBo; | ||||||
|  | import com.ruoyi.zbf.service.IZbfUserService; | ||||||
|  | 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-31 | ||||||
|  |  */ | ||||||
|  | @Api(value = "总包方用户控制器", tags = {"总包方用户管理"}) | ||||||
|  | @RequiredArgsConstructor(onConstructor_ = @Autowired) | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/zbf/user") | ||||||
|  | public class ZbfUserController extends BaseController { | ||||||
|  |  | ||||||
|  |     private final IZbfUserService iZbfUserService; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询APP总包方用户列表 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("查询APP总包方用户列表") | ||||||
|  |     @PreAuthorize("@ss.hasPermi('zbf:user:list')") | ||||||
|  |     @GetMapping("/list") | ||||||
|  |     public TableDataInfo<ZbfUser> list(@Validated ZbfUserQueryBo bo) { | ||||||
|  |         return iZbfUserService.queryPageList(bo); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 导出APP总包方用户列表 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("导出APP总包方用户列表") | ||||||
|  |     @PreAuthorize("@ss.hasPermi('zbf:user:export')") | ||||||
|  |     @Log(title = "APP总包方用户", businessType = BusinessType.EXPORT) | ||||||
|  |     @GetMapping("/export") | ||||||
|  |     public AjaxResult<ZbfUser> export(@Validated ZbfUserQueryBo bo) { | ||||||
|  |         List<ZbfUser> list = iZbfUserService.queryList(bo); | ||||||
|  |         ExcelUtil<ZbfUser> util = new ExcelUtil<ZbfUser>(ZbfUser.class); | ||||||
|  |         return util.exportExcel(list, "APP总包方用户"); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取APP总包方用户详细信息 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("获取APP总包方用户详细信息") | ||||||
|  |     @PreAuthorize("@ss.hasPermi('zbf:user:query')") | ||||||
|  |     @GetMapping("/{id}") | ||||||
|  |     public AjaxResult<ZbfUser> getInfo(@NotNull(message = "主键不能为空") | ||||||
|  |                                                   @PathVariable("id") Long id) { | ||||||
|  |         return AjaxResult.success(iZbfUserService.queryById(id)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 新增APP总包方用户 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("新增APP总包方用户") | ||||||
|  |     @PreAuthorize("@ss.hasPermi('zbf:user:add')") | ||||||
|  |     @Log(title = "APP总包方用户", businessType = BusinessType.INSERT) | ||||||
|  |     @RepeatSubmit | ||||||
|  |     @PostMapping() | ||||||
|  |     public AjaxResult<Void> add(@Validated @RequestBody ZbfUser bo) { | ||||||
|  |         return toAjax(iZbfUserService.insert(bo) ? 1 : 0); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 修改APP总包方用户 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("修改APP总包方用户") | ||||||
|  |     @PreAuthorize("@ss.hasPermi('zbf:user:edit')") | ||||||
|  |     @Log(title = "APP总包方用户", businessType = BusinessType.UPDATE) | ||||||
|  |     @RepeatSubmit | ||||||
|  |     @PutMapping() | ||||||
|  |     public AjaxResult<Void> edit(@Validated @RequestBody ZbfUser bo) { | ||||||
|  |         return toAjax(iZbfUserService.update(bo) ? 1 : 0); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 删除APP总包方用户 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("删除APP总包方用户") | ||||||
|  |     @PreAuthorize("@ss.hasPermi('zbf:user:remove')") | ||||||
|  |     @Log(title = "APP总包方用户" , businessType = BusinessType.DELETE) | ||||||
|  |     @DeleteMapping("/{ids}") | ||||||
|  |     public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空") | ||||||
|  |                                        @PathVariable Long[] ids) { | ||||||
|  |         return toAjax(iZbfUserService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @ -138,9 +138,15 @@ public class Constants | |||||||
| 	public static final String REDIS_LOCK_KEY = "redis_lock:"; | 	public static final String REDIS_LOCK_KEY = "redis_lock:"; | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * 包工头用户标志 前缀 | 	 * 总包方用户标志 前缀 | ||||||
|  | 	 */ | ||||||
|  | 	public static final String ZBF = "zbf"; | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 分包商用户标志 前缀 | ||||||
| 	 */ | 	 */ | ||||||
| 	public static final String FBS = "fbs"; | 	public static final String FBS = "fbs"; | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * 包工头用户标志 前缀 | 	 * 包工头用户标志 前缀 | ||||||
| 	 */ | 	 */ | ||||||
|  | |||||||
| @ -156,4 +156,8 @@ public class FbsUser implements Serializable { | |||||||
|     @ApiModelProperty("备注") |     @ApiModelProperty("备注") | ||||||
|     private String remark; |     private String remark; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("公司名称") | ||||||
|  | 	@TableField(exist = false) | ||||||
|  | 	private String companyName; | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,163 @@ | |||||||
|  | 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总包方用户对象 zbf_user | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-03-31 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @NoArgsConstructor | ||||||
|  | @Accessors(chain = true) | ||||||
|  | @TableName("zbf_user") | ||||||
|  | @ApiModel("APP总包方用户视图对象") | ||||||
|  | public class ZbfUser 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; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("公司名称") | ||||||
|  | 	@TableField(exist = false) | ||||||
|  | 	private String companyName; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -39,12 +39,17 @@ public enum AuditStatus | |||||||
|  |  | ||||||
| 	// 获取审核状态列表 | 	// 获取审核状态列表 | ||||||
| 	public static List<String> getAudit(){ | 	public static List<String> getAudit(){ | ||||||
| 		// 将PASS和REFUSE的code值转换为List<String>类型 |  | ||||||
| 		return Arrays.asList(PASS.getCode(),REFUSE.getCode()); | 		return Arrays.asList(PASS.getCode(),REFUSE.getCode()); | ||||||
| 	} | 	} | ||||||
| 	// 获取待审核的列表 | 	// 获取待审核的列表 | ||||||
| 	public static List<String> getToAudit(){ | 	public static List<String> getToAudit(){ | ||||||
| 		// 将UNREAD和AUDIT的code值转换为List<String>类型 |  | ||||||
| 		return Arrays.asList(UNREAD.getCode(),AUDIT.getCode()); | 		return Arrays.asList(UNREAD.getCode(),AUDIT.getCode()); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	// 获取已使用的列表 | ||||||
|  | 	public static List<String> getUse(){ | ||||||
|  | 		return Arrays.asList(UNREAD.getCode(),AUDIT.getCode(),PASS.getCode()); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,36 @@ | |||||||
|  | package com.ruoyi.common.enums; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 项目状态 | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  */ | ||||||
|  | public enum ProjectStatus | ||||||
|  | { | ||||||
|  | 	NOT_START("0","未开工"), | ||||||
|  | 	START("1", "已开工"), | ||||||
|  | 	COMPLETE("2", "已竣工"), | ||||||
|  | 	; | ||||||
|  |  | ||||||
|  |     private final String code; | ||||||
|  |     private final String info; | ||||||
|  |  | ||||||
|  |     ProjectStatus(String code, String info) | ||||||
|  |     { | ||||||
|  |         this.code = code; | ||||||
|  |         this.info = info; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getCode() | ||||||
|  |     { | ||||||
|  |         return code; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getInfo() | ||||||
|  |     { | ||||||
|  |         return info; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -14,6 +14,7 @@ public enum SubcontractingApplyStatus | |||||||
| 	PASS("1", "已同意"), | 	PASS("1", "已同意"), | ||||||
| 	REFUSE("2", "已拒绝"), | 	REFUSE("2", "已拒绝"), | ||||||
| 	CANCEL("3", "已取消"), | 	CANCEL("3", "已取消"), | ||||||
|  | 	CHOOSE("4", "已被他人承接(只是拿来返回,不存进数据库)"), | ||||||
| 	; | 	; | ||||||
|  |  | ||||||
|     private final String code; |     private final String code; | ||||||
|  | |||||||
| @ -29,7 +29,7 @@ public class AllUserDetailsServiceImpl implements UserDetailsService | |||||||
|     @Override |     @Override | ||||||
|     public UserDetails loadUserByUsername(String var) throws UsernameNotFoundException |     public UserDetails loadUserByUsername(String var) throws UsernameNotFoundException | ||||||
|     { |     { | ||||||
|        if(var.contains(Constants.BGT)||var.contains(Constants.WGZ) ||var.contains(Constants.FBS)){ |        if(var.contains(Constants.BGT)||var.contains(Constants.WGZ) ||var.contains(Constants.FBS) || var.contains(Constants.ZBF)){ | ||||||
| 		   return appUserDetailsService.loadUserByUsername(var); | 		   return appUserDetailsService.loadUserByUsername(var); | ||||||
| 	   } else { | 	   } else { | ||||||
| 		   return userDetailsService.loadUserByUsername(var); | 		   return userDetailsService.loadUserByUsername(var); | ||||||
|  | |||||||
| @ -6,12 +6,14 @@ import com.ruoyi.common.constant.Constants; | |||||||
| import com.ruoyi.common.core.domain.entity.BgtUser; | import com.ruoyi.common.core.domain.entity.BgtUser; | ||||||
| import com.ruoyi.common.core.domain.entity.FbsUser; | import com.ruoyi.common.core.domain.entity.FbsUser; | ||||||
| import com.ruoyi.common.core.domain.entity.SysUser; | import com.ruoyi.common.core.domain.entity.SysUser; | ||||||
|  | import com.ruoyi.common.core.domain.entity.ZbfUser; | ||||||
| import com.ruoyi.common.core.domain.model.LoginUser; | import com.ruoyi.common.core.domain.model.LoginUser; | ||||||
| import com.ruoyi.common.enums.UserStatus; | import com.ruoyi.common.enums.UserStatus; | ||||||
| import com.ruoyi.common.exception.BaseException; | import com.ruoyi.common.exception.BaseException; | ||||||
| import com.ruoyi.fbs.service.IFbsUserService; | import com.ruoyi.fbs.service.IFbsUserService; | ||||||
| import com.ruoyi.wgz.domain.WgzUser; | import com.ruoyi.wgz.domain.WgzUser; | ||||||
| import com.ruoyi.wgz.service.IWgzUserService; | import com.ruoyi.wgz.service.IWgzUserService; | ||||||
|  | import com.ruoyi.zbf.service.IZbfUserService; | ||||||
| import org.slf4j.Logger; | import org.slf4j.Logger; | ||||||
| import org.slf4j.LoggerFactory; | import org.slf4j.LoggerFactory; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| @ -41,6 +43,9 @@ public class AppUserDetailsServiceImpl implements UserDetailsService | |||||||
| 	@Autowired | 	@Autowired | ||||||
| 	private IFbsUserService fbsUserService; | 	private IFbsUserService fbsUserService; | ||||||
|  |  | ||||||
|  | 	@Autowired | ||||||
|  | 	private IZbfUserService zbfUserService; | ||||||
|  |  | ||||||
|     @Autowired |     @Autowired | ||||||
|     private SysPermissionService permissionService; |     private SysPermissionService permissionService; | ||||||
|  |  | ||||||
| @ -60,6 +65,10 @@ public class AppUserDetailsServiceImpl implements UserDetailsService | |||||||
| 			FbsUser fbsUser = fbsUserService.selectUserByPhone(phone.replace(Constants.FBS, "")); | 			FbsUser fbsUser = fbsUserService.selectUserByPhone(phone.replace(Constants.FBS, "")); | ||||||
| 			check(fbsUser,phone); | 			check(fbsUser,phone); | ||||||
| 			userDetailsl = createLoginUser(fbsUser,Constants.FBS); | 			userDetailsl = createLoginUser(fbsUser,Constants.FBS); | ||||||
|  | 		}else if (phone.contains(Constants.ZBF)) { | ||||||
|  | 			ZbfUser zbfUser = zbfUserService.selectUserByPhone(phone.replace(Constants.ZBF, "")); | ||||||
|  | 			check(zbfUser,phone); | ||||||
|  | 			userDetailsl = createLoginUser(zbfUser,Constants.ZBF); | ||||||
| 		} | 		} | ||||||
|         return userDetailsl; |         return userDetailsl; | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -4,13 +4,16 @@ import io.swagger.annotations.ApiModel; | |||||||
| import io.swagger.annotations.ApiModelProperty; | import io.swagger.annotations.ApiModelProperty; | ||||||
| import lombok.Data; | import lombok.Data; | ||||||
|  |  | ||||||
|  | import javax.validation.constraints.NotNull; | ||||||
|  |  | ||||||
| @Data | @Data | ||||||
| @ApiModel("app申请/取消项目任务") | @ApiModel("包工头申请/取消项目任务") | ||||||
| public class BgtTaskApplyDTO { | public class BgtTaskApplyDTO { | ||||||
|  |  | ||||||
| 	@ApiModelProperty("任务ID") | 	@ApiModelProperty("任务ID") | ||||||
|  | 	@NotNull(message = "任务ID不能为空") | ||||||
| 	private Long taskId; | 	private Long taskId; | ||||||
|  |  | ||||||
| 	@ApiModelProperty("包工头用户ID") | //	@ApiModelProperty("包工头用户ID") | ||||||
| 	private Long userId; | //	private Long userId; | ||||||
| } | } | ||||||
|  | |||||||
| @ -92,7 +92,7 @@ public interface IBgtMessageService extends IServicePlus<BgtMessage> { | |||||||
| 	TableDataInfo<BgtMessageDetailVO> unAuditList(BgtMessageUnAuditDetailDTO dto); | 	TableDataInfo<BgtMessageDetailVO> unAuditList(BgtMessageUnAuditDetailDTO dto); | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * operation | 	 * 已操作 | ||||||
| 	 */ | 	 */ | ||||||
| 	void operation(String senderType,Long senderId,String recipientType,Long recipientId,Long tableId,String tableName); | 	void operation(String senderType,Long senderId,String recipientType,Long recipientId,Long tableId,String tableName); | ||||||
|  |  | ||||||
|  | |||||||
| @ -70,4 +70,8 @@ public interface IBgtProjectTaskProgressService extends IServicePlus<BgtProjectT | |||||||
| 	 * 获取最新项目进度 | 	 * 获取最新项目进度 | ||||||
| 	 */ | 	 */ | ||||||
| 	Integer getLastProgress(Long taskId); | 	Integer getLastProgress(Long taskId); | ||||||
|  | 	/** | ||||||
|  | 	 * 分包商审核 | ||||||
|  | 	 */ | ||||||
|  | 	Boolean fbsAudit(BgtProjectTaskProgress bo); | ||||||
| } | } | ||||||
|  | |||||||
| @ -73,10 +73,13 @@ public interface IBgtWageApplicationService extends IServicePlus<BgtWageApplicat | |||||||
| 	 */ | 	 */ | ||||||
| 	List<BgtWageApplicationListVO> appQueryList(BgtWageApplicationQueryDTO dto); | 	List<BgtWageApplicationListVO> appQueryList(BgtWageApplicationQueryDTO dto); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * 分包商查询审核列表 | 	 * 分包商查询审核列表 | ||||||
| 	 */ | 	 */ | ||||||
| 	TableDataInfo<BgtWageApplicationVO> fbsAuditPageList(FbsWageAuditListDTO dto); | 	TableDataInfo<BgtWageApplicationVO> fbsAuditPageList(FbsWageAuditListDTO dto); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 分包商审核 | ||||||
|  | 	 */ | ||||||
|  | 	Boolean fbsAudit(BgtWageApplication bo); | ||||||
| } | } | ||||||
|  | |||||||
| @ -8,8 +8,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
| import com.ruoyi.bgt.bo.BgtMessageQueryBo; | import com.ruoyi.bgt.bo.BgtMessageQueryBo; | ||||||
| import com.ruoyi.bgt.domain.BgtMessage; | import com.ruoyi.bgt.domain.BgtMessage; | ||||||
| import com.ruoyi.bgt.domain.BgtProjectRecruit; |  | ||||||
| import com.ruoyi.bgt.domain.BgtProjectRecruitApply; |  | ||||||
| import com.ruoyi.bgt.domain.BgtWageApplication; | import com.ruoyi.bgt.domain.BgtWageApplication; | ||||||
| import com.ruoyi.bgt.domain.dto.BgtMessageDetailDTO; | import com.ruoyi.bgt.domain.dto.BgtMessageDetailDTO; | ||||||
| import com.ruoyi.bgt.domain.dto.BgtMessageMyListDTO; | import com.ruoyi.bgt.domain.dto.BgtMessageMyListDTO; | ||||||
| @ -28,10 +26,11 @@ import com.ruoyi.common.enums.BgtMessageType; | |||||||
| import com.ruoyi.common.utils.PageUtils; | import com.ruoyi.common.utils.PageUtils; | ||||||
| import com.ruoyi.common.utils.SecurityUtils; | import com.ruoyi.common.utils.SecurityUtils; | ||||||
| import com.ruoyi.fbs.domain.FbsProjectTask; | import com.ruoyi.fbs.domain.FbsProjectTask; | ||||||
|  | import com.ruoyi.fbs.domain.FbsProjectTaskApply; | ||||||
|  | import com.ruoyi.fbs.service.IFbsProjectTaskApplyService; | ||||||
| import com.ruoyi.fbs.service.IFbsProjectTaskService; | import com.ruoyi.fbs.service.IFbsProjectTaskService; | ||||||
| import com.ruoyi.wgz.domain.WgzDailyClock; | import com.ruoyi.wgz.domain.WgzDailyClock; | ||||||
| import com.ruoyi.wgz.domain.WgzLeave; | import com.ruoyi.wgz.domain.WgzLeave; | ||||||
| import com.ruoyi.wgz.domain.WgzPayCalculation; |  | ||||||
| import com.ruoyi.wgz.domain.WgzReissueacard; | import com.ruoyi.wgz.domain.WgzReissueacard; | ||||||
| import com.ruoyi.wgz.service.*; | import com.ruoyi.wgz.service.*; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| @ -85,6 +84,10 @@ public class BgtMessageServiceImpl extends ServicePlusImpl<BgtMessageMapper, Bgt | |||||||
| 	@Lazy | 	@Lazy | ||||||
| 	private IFbsProjectTaskService taskService; | 	private IFbsProjectTaskService taskService; | ||||||
|  |  | ||||||
|  | 	@Autowired | ||||||
|  | 	@Lazy | ||||||
|  | 	private IFbsProjectTaskApplyService taskApplyService; | ||||||
|  |  | ||||||
| 	@Autowired | 	@Autowired | ||||||
| 	@Lazy | 	@Lazy | ||||||
| 	private IWgzDailyClockService dailyClockService; | 	private IWgzDailyClockService dailyClockService; | ||||||
| @ -220,48 +223,49 @@ public class BgtMessageServiceImpl extends ServicePlusImpl<BgtMessageMapper, Bgt | |||||||
|  |  | ||||||
| 		for (BgtMessage message : result.getRecords()) { | 		for (BgtMessage message : result.getRecords()) { | ||||||
| 			BgtMessageDetailVO bgtMessageDetailVO = BeanUtil.copyProperties(message, BgtMessageDetailVO.class); | 			BgtMessageDetailVO bgtMessageDetailVO = BeanUtil.copyProperties(message, BgtMessageDetailVO.class); | ||||||
| 			if (BGT_LARGE_TASK.equals(message.getMessageLargeType())) { | //			if (BGT_LARGE_TASK.equals(message.getMessageLargeType())) { | ||||||
| 				FbsProjectTask task = taskService.getById(message.getTableId()); | //				FbsProjectTaskApply taskApply = taskApplyService.getById(message.getTableId()); | ||||||
| 				bgtMessageDetailVO.setTaskName(task.getTaskName()); | //				FbsProjectTask task = taskService.getById(taskApply.getTaskId()); | ||||||
| 			} else if (BGT_LARGE_SETTLEMENT.equals(message.getMessageLargeType())) { | //				bgtMessageDetailVO.setTaskName(task.getTaskName()); | ||||||
| 				BgtWageApplication wageApplication = wageApplicationService.getById(message.getTableId()); | //			} else if (BGT_LARGE_SETTLEMENT.equals(message.getMessageLargeType())) { | ||||||
| 				FbsProjectTask task = taskService.getById(wageApplication.getTaskId()); | //				BgtWageApplication wageApplication = wageApplicationService.getById(message.getTableId()); | ||||||
| 				bgtMessageDetailVO.setTaskName(task.getTaskName()); | //				FbsProjectTask task = taskService.getById(wageApplication.getTaskId()); | ||||||
| 			} else if (BGT_LARGE_OTHER.equals(message.getMessageLargeType())) { | //				bgtMessageDetailVO.setTaskName(task.getTaskName()); | ||||||
| 				switch (message.getMessageSmallType()) { | //			} else if (BGT_LARGE_OTHER.equals(message.getMessageLargeType())) { | ||||||
| 					case BGT_SMALL_SIGN_UP: | //				switch (message.getMessageSmallType()) { | ||||||
| 						BgtProjectRecruitApply recruitApply = recruitApplyService.getById(message.getTableId()); | //					case BGT_SMALL_SIGN_UP: | ||||||
| 						BgtProjectRecruit recruit = recruitService.getById(recruitApply.getRecruitId()); | //						BgtProjectRecruitApply recruitApply = recruitApplyService.getById(message.getTableId()); | ||||||
| 						bgtMessageDetailVO.setRecruitName(recruit.getRecruitName()); | //						BgtProjectRecruit recruit = recruitService.getById(recruitApply.getRecruitId()); | ||||||
| 						break; | //						bgtMessageDetailVO.setRecruitName(recruit.getRecruitName()); | ||||||
| 					case BGT_SMALL_PAY: | //						break; | ||||||
| 						WgzPayCalculation payCalculation = payCalculationService.getById(message.getTableId()); | //					case BGT_SMALL_PAY: | ||||||
| 						BgtProjectRecruit recruitPay = recruitService.getById(payCalculation.getRecruitId()); | //						WgzPayCalculation payCalculation = payCalculationService.getById(message.getTableId()); | ||||||
| 						bgtMessageDetailVO.setRecruitName(recruitPay.getRecruitName()); | //						BgtProjectRecruit recruitPay = recruitService.getById(payCalculation.getRecruitId()); | ||||||
| 						break; | //						bgtMessageDetailVO.setRecruitName(recruitPay.getRecruitName()); | ||||||
| 					case BGT_SMALL_LEAVE: | //						break; | ||||||
| 						WgzLeave wgzLeave = leaveService.getById(message.getTableId()); | //					case BGT_SMALL_LEAVE: | ||||||
| 						bgtMessageDetailVO.setReason(wgzLeave.getReason()); | //						WgzLeave wgzLeave = leaveService.getById(message.getTableId()); | ||||||
| 						bgtMessageDetailVO.setUsername(wgzUserService.findByUserId(wgzLeave.getUserId()).getUsername()); | //						bgtMessageDetailVO.setReason(wgzLeave.getReason()); | ||||||
| 						bgtMessageDetailVO.setStartTime(wgzLeave.getStartTime()); | //						bgtMessageDetailVO.setUsername(wgzUserService.findByUserId(wgzLeave.getUserId()).getUsername()); | ||||||
| 						bgtMessageDetailVO.setEndTime(wgzLeave.getEndTime()); | //						bgtMessageDetailVO.setStartTime(wgzLeave.getStartTime()); | ||||||
| 						break; | //						bgtMessageDetailVO.setEndTime(wgzLeave.getEndTime()); | ||||||
| 					case BGT_SMALL_MAKE_UP: | //						break; | ||||||
| 						WgzReissueacard reissueCard = reissueacardService.getById(message.getTableId()); | //					case BGT_SMALL_MAKE_UP: | ||||||
| 						bgtMessageDetailVO.setReason(reissueCard.getReason()); | //						WgzReissueacard reissueCard = reissueacardService.getById(message.getTableId()); | ||||||
| 						bgtMessageDetailVO.setUsername(wgzUserService.findByUserId(reissueCard.getUserId()).getUsername()); | //						bgtMessageDetailVO.setReason(reissueCard.getReason()); | ||||||
| 						bgtMessageDetailVO.setNowTime(reissueCard.getNowTime()); | //						bgtMessageDetailVO.setUsername(wgzUserService.findByUserId(reissueCard.getUserId()).getUsername()); | ||||||
| 						break; | //						bgtMessageDetailVO.setNowTime(reissueCard.getNowTime()); | ||||||
| 					case BGT_SMALL_REPORT_MAKE_UP: | //						break; | ||||||
| 						WgzDailyClock dailyClock = dailyClockService.getById(message.getTableId()); | //					case BGT_SMALL_REPORT_MAKE_UP: | ||||||
| 						BgtProjectRecruit recruitClock = recruitService.getById(dailyClock.getRecruitId()); | //						WgzDailyClock dailyClock = dailyClockService.getById(message.getTableId()); | ||||||
| 						bgtMessageDetailVO.setUsername(wgzUserService.findByUserId(dailyClock.getUserId()).getUsername()); | //						BgtProjectRecruit recruitClock = recruitService.getById(dailyClock.getRecruitId()); | ||||||
| 						bgtMessageDetailVO.setRecruitName(recruitClock.getRecruitName()); | //						bgtMessageDetailVO.setUsername(wgzUserService.findByUserId(dailyClock.getUserId()).getUsername()); | ||||||
| 						break; | //						bgtMessageDetailVO.setRecruitName(recruitClock.getRecruitName()); | ||||||
| 					default: | //						break; | ||||||
| 						break; | //					default: | ||||||
| 				} | //						break; | ||||||
| 			} | //				} | ||||||
|  | //			} | ||||||
| 			bgtMessageVOS.add(bgtMessageDetailVO); | 			bgtMessageVOS.add(bgtMessageDetailVO); | ||||||
| 		} | 		} | ||||||
| 		bgtMessageVOPage.setRecords(bgtMessageVOS); | 		bgtMessageVOPage.setRecords(bgtMessageVOS); | ||||||
| @ -304,7 +308,8 @@ public class BgtMessageServiceImpl extends ServicePlusImpl<BgtMessageMapper, Bgt | |||||||
| 		for (BgtMessage message : result.getRecords()) { | 		for (BgtMessage message : result.getRecords()) { | ||||||
| 			BgtMessageDetailVO bgtMessageDetailVO = BeanUtil.copyProperties(message, BgtMessageDetailVO.class); | 			BgtMessageDetailVO bgtMessageDetailVO = BeanUtil.copyProperties(message, BgtMessageDetailVO.class); | ||||||
| 			if (BGT_LARGE_TASK.equals(message.getMessageLargeType())) { | 			if (BGT_LARGE_TASK.equals(message.getMessageLargeType())) { | ||||||
| 				FbsProjectTask task = taskService.getById(message.getTableId()); | 				FbsProjectTaskApply taskApply = taskApplyService.getById(message.getTableId()); | ||||||
|  | 				FbsProjectTask task = taskService.getById(taskApply.getTaskId()); | ||||||
| 				bgtMessageDetailVO.setTaskName(task.getTaskName()); | 				bgtMessageDetailVO.setTaskName(task.getTaskName()); | ||||||
| 			} else if (BGT_LARGE_SETTLEMENT.equals(message.getMessageLargeType())) { | 			} else if (BGT_LARGE_SETTLEMENT.equals(message.getMessageLargeType())) { | ||||||
| 				BgtWageApplication wageApplication = wageApplicationService.getById(message.getTableId()); | 				BgtWageApplication wageApplication = wageApplicationService.getById(message.getTableId()); | ||||||
|  | |||||||
| @ -6,12 +6,15 @@ import cn.hutool.core.util.StrUtil; | |||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
|  | import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; | ||||||
| import com.ruoyi.bgt.bo.BgtProjectTaskProgressQueryBo; | import com.ruoyi.bgt.bo.BgtProjectTaskProgressQueryBo; | ||||||
|  | import com.ruoyi.bgt.domain.BgtMessage; | ||||||
| import com.ruoyi.bgt.domain.BgtProjectTaskProgress; | import com.ruoyi.bgt.domain.BgtProjectTaskProgress; | ||||||
| import com.ruoyi.bgt.domain.dto.BgtProjectTaskProgressQueryDTO; | import com.ruoyi.bgt.domain.dto.BgtProjectTaskProgressQueryDTO; | ||||||
| import com.ruoyi.bgt.domain.vo.BgtProjectTaskProgressDetailVO; | import com.ruoyi.bgt.domain.vo.BgtProjectTaskProgressDetailVO; | ||||||
| import com.ruoyi.bgt.domain.vo.BgtProjectTaskProgressVO; | import com.ruoyi.bgt.domain.vo.BgtProjectTaskProgressVO; | ||||||
| import com.ruoyi.bgt.mapper.BgtProjectTaskProgressMapper; | import com.ruoyi.bgt.mapper.BgtProjectTaskProgressMapper; | ||||||
|  | import com.ruoyi.bgt.service.IBgtMessageService; | ||||||
| import com.ruoyi.bgt.service.IBgtProjectTaskProgressService; | import com.ruoyi.bgt.service.IBgtProjectTaskProgressService; | ||||||
| import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | ||||||
| import com.ruoyi.common.core.page.TableDataInfo; | import com.ruoyi.common.core.page.TableDataInfo; | ||||||
| @ -19,12 +22,22 @@ import com.ruoyi.common.enums.AuditStatus; | |||||||
| import com.ruoyi.common.exception.BaseException; | import com.ruoyi.common.exception.BaseException; | ||||||
| import com.ruoyi.common.utils.PageUtils; | import com.ruoyi.common.utils.PageUtils; | ||||||
| import com.ruoyi.common.utils.SecurityUtils; | import com.ruoyi.common.utils.SecurityUtils; | ||||||
|  | import com.ruoyi.fbs.domain.FbsMessage; | ||||||
|  | import com.ruoyi.fbs.domain.FbsProjectTask; | ||||||
|  | import com.ruoyi.fbs.service.IFbsMessageService; | ||||||
|  | import com.ruoyi.fbs.service.IFbsProjectTaskService; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
|  | import java.util.HashMap; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  |  | ||||||
|  | import static com.ruoyi.common.constants.BgtMessageConstant.*; | ||||||
|  | import static com.ruoyi.common.constants.FbsMessageConstant.*; | ||||||
|  | import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.*; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 包工头项目任务进度Service业务层处理 |  * 包工头项目任务进度Service业务层处理 | ||||||
|  * |  * | ||||||
| @ -34,6 +47,13 @@ import java.util.Map; | |||||||
| @Service | @Service | ||||||
| public class BgtProjectTaskProgressServiceImpl extends ServicePlusImpl<BgtProjectTaskProgressMapper, BgtProjectTaskProgress> implements IBgtProjectTaskProgressService { | public class BgtProjectTaskProgressServiceImpl extends ServicePlusImpl<BgtProjectTaskProgressMapper, BgtProjectTaskProgress> implements IBgtProjectTaskProgressService { | ||||||
|  |  | ||||||
|  | 	@Autowired | ||||||
|  | 	private IFbsProjectTaskService taskService; | ||||||
|  | 	@Autowired | ||||||
|  | 	private IFbsMessageService fbsMessageService; | ||||||
|  | 	@Autowired | ||||||
|  | 	private IBgtMessageService bgtMessageService; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public BgtProjectTaskProgress queryById(Long id){ |     public BgtProjectTaskProgress queryById(Long id){ | ||||||
|         return getById(id); |         return getById(id); | ||||||
| @ -79,8 +99,32 @@ public class BgtProjectTaskProgressServiceImpl extends ServicePlusImpl<BgtProjec | |||||||
| //			//批量退场 | //			//批量退场 | ||||||
| //			recruitApplyService.quitBatch(bo.getTaskId()); | //			recruitApplyService.quitBatch(bo.getTaskId()); | ||||||
| //		} | //		} | ||||||
|  |  | ||||||
| 		bo.setUploaderId(SecurityUtils.getAppUserId()); | 		bo.setUploaderId(SecurityUtils.getAppUserId()); | ||||||
|         return save(bo); | 		boolean save = save(bo); | ||||||
|  |  | ||||||
|  | 		FbsProjectTask task = taskService.getById(bo.getTaskId()); | ||||||
|  |  | ||||||
|  | 		//包工头发消息到分包商 | ||||||
|  | 		HashMap<String, String> fmp = new HashMap<>(); | ||||||
|  | 		fmp.put("projectName", task.getTaskName()); | ||||||
|  | 		fmp.put("auditor", SecurityUtils.getUsername()); | ||||||
|  | 		Map<String, String> fmap = bgtMessage(fmp, BGT_TYPE_PROGRESS_TO_FBS, true); | ||||||
|  | 		FbsMessage fbsMessage = new FbsMessage() | ||||||
|  | 			.setSenderType(USERTYPE_BGT) | ||||||
|  | 			.setSenderId(SecurityUtils.getAppUserId()) | ||||||
|  | 			.setRecipientType(USERTYPE_FBS) | ||||||
|  | 			.setRecipientId(task.getCreateId()) | ||||||
|  | 			.setHeadline(fmap.get(HEADLINE)) | ||||||
|  | 			.setSubheading(fmap.get(SUBHEADING)) | ||||||
|  | 			.setTableId(bo.getId()) | ||||||
|  | 			.setTableName(SqlHelper.table(BgtProjectTaskProgress.class).getTableName()) | ||||||
|  | 			.setMessageLargeType(FBS_LARGE_OTHER) | ||||||
|  | 			.setMessageSmallType(FBS_SMALL_PROGRESS) | ||||||
|  | 			.setIsOperation(OPERATION_NEED); | ||||||
|  | 		fbsMessageService.sendAMessage(fbsMessage); | ||||||
|  |  | ||||||
|  | 		return save; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| @ -129,9 +173,38 @@ public class BgtProjectTaskProgressServiceImpl extends ServicePlusImpl<BgtProjec | |||||||
| 	public Integer getLastProgress(Long taskId) { | 	public Integer getLastProgress(Long taskId) { | ||||||
| 		LambdaQueryWrapper<BgtProjectTaskProgress> wrapper = new LambdaQueryWrapper<>(); | 		LambdaQueryWrapper<BgtProjectTaskProgress> wrapper = new LambdaQueryWrapper<>(); | ||||||
| 		wrapper.eq(BgtProjectTaskProgress::getTaskId, taskId); | 		wrapper.eq(BgtProjectTaskProgress::getTaskId, taskId); | ||||||
| 		wrapper.eq(BgtProjectTaskProgress::getAuditStatus, AuditStatus.PASS.getCode()); |  | ||||||
| 		wrapper.orderByDesc(BgtProjectTaskProgress::getProgress); | 		wrapper.orderByDesc(BgtProjectTaskProgress::getProgress); | ||||||
| 		List<BgtProjectTaskProgress> list = baseMapper.selectList(wrapper); | 		List<BgtProjectTaskProgress> list = baseMapper.selectList(wrapper); | ||||||
| 		return CollectionUtil.isEmpty(list)?0:list.get(0).getProgress(); | 		return CollectionUtil.isEmpty(list)?0:list.get(0).getProgress(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	public Boolean fbsAudit(BgtProjectTaskProgress bo) { | ||||||
|  | 		boolean b = updateById(bo); | ||||||
|  |  | ||||||
|  | 		FbsProjectTask task = taskService.getById(bo.getTaskId()); | ||||||
|  |  | ||||||
|  | 		//分包商发消息到包工头 | ||||||
|  | 		HashMap<String, String> mp = new HashMap<>(); | ||||||
|  | 		mp.put("projectName", task.getTaskName()); | ||||||
|  | 		mp.put("auditor", SecurityUtils.getUsername()); | ||||||
|  | 		Map<String, String> map = fbsMessage(mp, FBS_TYPE_PROGRESS, AuditStatus.PASS.getCode().equals(bo.getAuditStatus())); | ||||||
|  | 		BgtMessage bgtMessage = new BgtMessage() | ||||||
|  | 			.setSenderType(USERTYPE_FBS) | ||||||
|  | 			.setSenderId(SecurityUtils.getAppUserId()) | ||||||
|  | 			.setRecipientType(USERTYPE_BGT) | ||||||
|  | 			.setRecipientId(bo.getUploaderId()) | ||||||
|  | 			.setHeadline(map.get(HEADLINE)) | ||||||
|  | 			.setSubheading(map.get(SUBHEADING)) | ||||||
|  | 			.setTableId(bo.getId()) | ||||||
|  | 			.setTableName(SqlHelper.table(BgtProjectTaskProgress.class).getTableName()) | ||||||
|  | 			.setMessageLargeType(BGT_LARGE_OTHER) | ||||||
|  | 			.setMessageSmallType(BGT_SMALL_PROGRESS) | ||||||
|  | 			.setIsOperation(OPERATION_NO); | ||||||
|  | 		bgtMessageService.sendAMessage(bgtMessage); | ||||||
|  |  | ||||||
|  | 		fbsMessageService.operation(USERTYPE_BGT, bo.getUploaderId(), USERTYPE_FBS, SecurityUtils.getAppUserId(), bo.getId(), SqlHelper.table(BgtProjectTaskProgress.class).getTableName()); | ||||||
|  |  | ||||||
|  | 		return b; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -8,6 +8,7 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | |||||||
| import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; | import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; | ||||||
| import com.ruoyi.bgt.bo.BgtWageApplicationQueryBo; | import com.ruoyi.bgt.bo.BgtWageApplicationQueryBo; | ||||||
| import com.ruoyi.bgt.domain.BgtMessage; | import com.ruoyi.bgt.domain.BgtMessage; | ||||||
|  | import com.ruoyi.bgt.domain.BgtProjectTaskProgress; | ||||||
| import com.ruoyi.bgt.domain.BgtWageApplication; | import com.ruoyi.bgt.domain.BgtWageApplication; | ||||||
| import com.ruoyi.bgt.domain.dto.BgtWageApplicationQueryDTO; | import com.ruoyi.bgt.domain.dto.BgtWageApplicationQueryDTO; | ||||||
| import com.ruoyi.bgt.domain.vo.BgtWageApplicationDetailVO; | import com.ruoyi.bgt.domain.vo.BgtWageApplicationDetailVO; | ||||||
| @ -18,23 +19,28 @@ import com.ruoyi.bgt.service.IBgtMessageService; | |||||||
| import com.ruoyi.bgt.service.IBgtWageApplicationService; | import com.ruoyi.bgt.service.IBgtWageApplicationService; | ||||||
| import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | ||||||
| import com.ruoyi.common.core.page.TableDataInfo; | import com.ruoyi.common.core.page.TableDataInfo; | ||||||
|  | import com.ruoyi.common.enums.AuditStatus; | ||||||
|  | import com.ruoyi.common.exception.BaseException; | ||||||
| import com.ruoyi.common.utils.PageUtils; | import com.ruoyi.common.utils.PageUtils; | ||||||
| import com.ruoyi.common.utils.SecurityUtils; | import com.ruoyi.common.utils.SecurityUtils; | ||||||
|  | import com.ruoyi.fbs.domain.FbsMessage; | ||||||
| import com.ruoyi.fbs.domain.FbsProjectTask; | import com.ruoyi.fbs.domain.FbsProjectTask; | ||||||
| import com.ruoyi.fbs.domain.dto.FbsWageAuditListDTO; | import com.ruoyi.fbs.domain.dto.FbsWageAuditListDTO; | ||||||
|  | import com.ruoyi.fbs.service.IFbsMessageService; | ||||||
| import com.ruoyi.fbs.service.IFbsProjectTaskService; | import com.ruoyi.fbs.service.IFbsProjectTaskService; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
|  | import java.math.BigDecimal; | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.HashMap; | import java.util.HashMap; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  |  | ||||||
| import static com.ruoyi.common.constants.BgtMessageConstant.*; | import static com.ruoyi.common.constants.BgtMessageConstant.*; | ||||||
| import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.USERTYPE_BGT; | import static com.ruoyi.common.constants.FbsMessageConstant.*; | ||||||
| import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.USERTYPE_SYSTEM; | import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.*; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 包工头工资申请Service业务层处理 |  * 包工头工资申请Service业务层处理 | ||||||
| @ -51,6 +57,9 @@ public class BgtWageApplicationServiceImpl extends ServicePlusImpl<BgtWageApplic | |||||||
| 	@Autowired | 	@Autowired | ||||||
| 	private IBgtMessageService bgtMessageService; | 	private IBgtMessageService bgtMessageService; | ||||||
|  |  | ||||||
|  | 	@Autowired | ||||||
|  | 	private IFbsMessageService fbsMessageService; | ||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public BgtWageApplication queryById(Long id){ |     public BgtWageApplication queryById(Long id){ | ||||||
| @ -88,25 +97,61 @@ public class BgtWageApplicationServiceImpl extends ServicePlusImpl<BgtWageApplic | |||||||
|     @Override |     @Override | ||||||
| 	@Transactional(rollbackFor = Exception.class) | 	@Transactional(rollbackFor = Exception.class) | ||||||
|     public Boolean insert(BgtWageApplication bo) { |     public Boolean insert(BgtWageApplication bo) { | ||||||
|  |         //判断申请金额 | ||||||
|  | 		List<BgtWageApplication> list = list(Wrappers.<BgtWageApplication>lambdaQuery().eq(BgtWageApplication::getTaskId, bo.getTaskId()) | ||||||
|  | 			.eq(BgtWageApplication::getUserId, SecurityUtils.getAppUserId()) | ||||||
|  | 			.eq(BgtWageApplication::getAuditStatus, AuditStatus.getUse())); | ||||||
|  | 		//收款金额 | ||||||
|  | 		int taskUseAmount = list.stream() | ||||||
|  | 			.map(BgtWageApplication::getApplicantAmount) | ||||||
|  | 			.reduce(BigDecimal.ZERO, BigDecimal::add).intValue(); | ||||||
|  |  | ||||||
|  | 		//任务金额单位是万元,工资申请金额单位是元 | ||||||
|  | 		FbsProjectTask task = taskService.getById(bo.getTaskId()); | ||||||
|  | 		BigDecimal taskAmount = task.getTaskAmount(); | ||||||
|  | 		taskAmount = taskAmount.multiply(new BigDecimal(10000)); | ||||||
|  |  | ||||||
|  | 		BigDecimal subtract = taskAmount.subtract(new BigDecimal(String.valueOf(taskUseAmount))); | ||||||
|  | 		if(subtract.compareTo(bo.getApplicantAmount()) < 0){ | ||||||
|  | 			throw new BaseException("申请金额已超出,剩余申请金额:"+subtract+"元"); | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		BgtWageApplication add = BeanUtil.toBean(bo, BgtWageApplication.class); | 		BgtWageApplication add = BeanUtil.toBean(bo, BgtWageApplication.class); | ||||||
|         validEntityBeforeSave(add); |  | ||||||
| 		boolean save = save(add); | 		boolean save = save(add); | ||||||
| 		//发消息 | 		//系统发消息到包工头 | ||||||
| 		FbsProjectTask task = taskService.getById(add.getTaskId()); | //		HashMap<String, String> mp = new HashMap<>(); | ||||||
| 		HashMap<String, String> mp = new HashMap<>(); | //		mp.put("projectName", task.getTaskName()); | ||||||
| 		mp.put("projectName", task.getTaskName()); | //		mp.put("amount", add.getApplicantAmount().toString()); | ||||||
| 		mp.put("amount", add.getApplicantAmount().toString()); | //		Map<String, String> map = bgtMessage(mp, BGT_TYPE_SETTLEMENT, true); | ||||||
| 		Map<String, String> map = bgtMessage(mp, BGT_TYPE_SETTLEMENT, true); | //		BgtMessage bgtMessage = new BgtMessage() | ||||||
| 		BgtMessage bgtMessage = new BgtMessage() | //			.setSenderType(USERTYPE_SYSTEM) | ||||||
| 			.setSenderType(USERTYPE_SYSTEM) | //			.setRecipientType(USERTYPE_BGT) | ||||||
| 			.setRecipientType(USERTYPE_BGT) | //			.setRecipientId(add.getUserId()) | ||||||
| 			.setRecipientId(add.getUserId()) | //			.setHeadline(map.get(HEADLINE)) | ||||||
| 			.setHeadline(map.get(HEADLINE)) | //			.setSubheading(map.get(SUBHEADING)) | ||||||
| 			.setSubheading(map.get(SUBHEADING)) | //			.setTableId(add.getId()) | ||||||
|  | //			.setTableName(SqlHelper.table(BgtWageApplication.class).getTableName()) | ||||||
|  | //			.setMessageLargeType(BGT_LARGE_SETTLEMENT); | ||||||
|  | //		bgtMessageService.sendAMessage(bgtMessage); | ||||||
|  |  | ||||||
|  | 		//包工头发消息到分包商 | ||||||
|  | 		HashMap<String, String> fmp = new HashMap<>(); | ||||||
|  | 		fmp.put("projectName", task.getTaskName()); | ||||||
|  | 		fmp.put("auditor", SecurityUtils.getUsername()); | ||||||
|  | 		Map<String, String> fmap = bgtMessage(fmp, BGT_TYPE_SETTLEMENT_TO_FBS, true); | ||||||
|  | 		FbsMessage fbsMessage = new FbsMessage() | ||||||
|  | 			.setSenderType(USERTYPE_BGT) | ||||||
|  | 			.setSenderId(SecurityUtils.getAppUserId()) | ||||||
|  | 			.setRecipientType(USERTYPE_FBS) | ||||||
|  | 			.setRecipientId(task.getCreateId()) | ||||||
|  | 			.setHeadline(fmap.get(HEADLINE)) | ||||||
|  | 			.setSubheading(fmap.get(SUBHEADING)) | ||||||
| 			.setTableId(add.getId()) | 			.setTableId(add.getId()) | ||||||
| 			.setTableName(SqlHelper.table(BgtWageApplication.class).getTableName()) | 			.setTableName(SqlHelper.table(BgtWageApplication.class).getTableName()) | ||||||
| 			.setMessageLargeType(BGT_LARGE_SETTLEMENT); | 			.setMessageLargeType(FBS_LARGE_OTHER) | ||||||
| 		bgtMessageService.sendAMessage(bgtMessage); | 			.setMessageSmallType(FBS_SMALL_PAY) | ||||||
|  | 			.setIsOperation(OPERATION_NEED); | ||||||
|  | 		fbsMessageService.sendAMessage(fbsMessage); | ||||||
|         return save; |         return save; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @ -163,4 +208,31 @@ public class BgtWageApplicationServiceImpl extends ServicePlusImpl<BgtWageApplic | |||||||
| 		Page<BgtWageApplicationVO> queryVOPage = baseMapper.fbsAuditPageList(queryDTOPage, dto); | 		Page<BgtWageApplicationVO> queryVOPage = baseMapper.fbsAuditPageList(queryDTOPage, dto); | ||||||
| 		return PageUtils.buildDataInfo(queryVOPage); | 		return PageUtils.buildDataInfo(queryVOPage); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	@Transactional(rollbackFor = Exception.class) | ||||||
|  | 	public Boolean fbsAudit(BgtWageApplication bo) { | ||||||
|  | 		boolean b = updateById(bo); | ||||||
|  | 		FbsProjectTask task = taskService.getById(bo.getTaskId()); | ||||||
|  |  | ||||||
|  | 		//分包商发消息到包工头 | ||||||
|  | 		HashMap<String, String> mp = new HashMap<>(); | ||||||
|  | 		mp.put("projectName", task.getTaskName()); | ||||||
|  | 		mp.put("auditor", SecurityUtils.getUsername()); | ||||||
|  | 		Map<String, String> map = fbsMessage(mp, FBS_TYPE_PAY,AuditStatus.PASS.getCode().equals(bo.getAuditStatus())); | ||||||
|  | 		BgtMessage bgtMessage = new BgtMessage() | ||||||
|  | 			.setSenderType(USERTYPE_FBS) | ||||||
|  | 			.setSenderId(SecurityUtils.getAppUserId()) | ||||||
|  | 			.setRecipientType(USERTYPE_BGT) | ||||||
|  | 			.setRecipientId(bo.getUserId()) | ||||||
|  | 			.setHeadline(map.get(HEADLINE)) | ||||||
|  | 			.setSubheading(map.get(SUBHEADING)) | ||||||
|  | 			.setTableId(bo.getId()) | ||||||
|  | 			.setTableName(SqlHelper.table(BgtWageApplication.class).getTableName()) | ||||||
|  | 			.setMessageLargeType(BGT_LARGE_SETTLEMENT) | ||||||
|  | 			.setIsOperation(OPERATION_NO); | ||||||
|  | 		bgtMessageService.sendAMessage(bgtMessage); | ||||||
|  | 		fbsMessageService.operation(USERTYPE_BGT, bo.getUserId(), USERTYPE_FBS, SecurityUtils.getAppUserId(), bo.getId(), SqlHelper.table(BgtProjectTaskProgress.class).getTableName()); | ||||||
|  | 		return b; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -17,6 +17,7 @@ public class BgtMessageConstant { | |||||||
| 	public static final String BGT_SMALL_LEAVE = "3";                //小类型-请假 | 	public static final String BGT_SMALL_LEAVE = "3";                //小类型-请假 | ||||||
| 	public static final String BGT_SMALL_MAKE_UP = "4";              //小类型-补卡 | 	public static final String BGT_SMALL_MAKE_UP = "4";              //小类型-补卡 | ||||||
| 	public static final String BGT_SMALL_REPORT_MAKE_UP = "5";       //小类型-日报补卡 | 	public static final String BGT_SMALL_REPORT_MAKE_UP = "5";       //小类型-日报补卡 | ||||||
|  | 	public static final String BGT_SMALL_PROGRESS = "5";       		 //小类型-任务进度 | ||||||
|  |  | ||||||
| 	public static final List<String> AUDIT_TYPE = Arrays.asList("2", "3", "4", "5"); | 	public static final List<String> AUDIT_TYPE = Arrays.asList("2", "3", "4", "5"); | ||||||
| 	/** | 	/** | ||||||
| @ -65,13 +66,13 @@ public class BgtMessageConstant { | |||||||
| 	 * ============================================系统->包工头 模板================================================== | 	 * ============================================系统->包工头 模板================================================== | ||||||
| 	 */ | 	 */ | ||||||
| 	//承接任务 | 	//承接任务 | ||||||
| 	public static final String BGT_TASK_APPLY_HEADLINE = "您已申请【%s】项目"; | 	public static final String BGT_TASK_APPLY_HEADLINE = "您已申请【%s】任务"; | ||||||
| 	public static final String BGT_TASK_APPLY_SUBHEADING = "您已成功申请到【%s】项目,请耐心等待回复!"; | 	public static final String BGT_TASK_APPLY_SUBHEADING = "您已成功申请到【%s】任务,请耐心等待回复!"; | ||||||
| 	//取消承接任务 | 	//取消承接任务 | ||||||
| 	public static final String BGT_TASK_APPLY_CANCEL_HEADLINE = "您已申请取消【%s】项目!"; | 	public static final String BGT_TASK_APPLY_CANCEL_HEADLINE = "您已取消【%s】任务申请!"; | ||||||
| 	public static final String BGT_TASK_APPLY_CANCEL_SUBHEADING = "您已成功取消【%s】项目"; | 	public static final String BGT_TASK_APPLY_CANCEL_SUBHEADING = "您已成功取消【%s】项目申请!"; | ||||||
| 	//工资结算 | 	//工资结算 | ||||||
| 	public static final String BGT_SETTLEMENT_APPLY_HEADLINE = "您正在申请【%s】项目,总共【%s】元的工资结算操作!"; | 	public static final String BGT_SETTLEMENT_APPLY_HEADLINE = "您正在申请【%s】任务,总共【%s】元的工资结算操作!"; | ||||||
| 	public static final String BGT_SETTLEMENT_APPLY_SUBHEADING = "您已成功发起金额为【%s】元的工资结算操作,请耐心等待回复!"; | 	public static final String BGT_SETTLEMENT_APPLY_SUBHEADING = "您已成功发起金额为【%s】元的工资结算操作,请耐心等待回复!"; | ||||||
|  |  | ||||||
|  |  | ||||||
| @ -92,10 +93,14 @@ public class BgtMessageConstant { | |||||||
| 	//工资结算 | 	//工资结算 | ||||||
| 	public static final String BGT_TO_FBG_SETTLEMENT_APPLY_HEADLINE = "包工头【%s】正在向你发起工资结算!"; | 	public static final String BGT_TO_FBG_SETTLEMENT_APPLY_HEADLINE = "包工头【%s】正在向你发起工资结算!"; | ||||||
| 	public static final String BGT_TO_FBG_SETTLEMENT_APPLY_SUBHEADING = "包工头【%s】向你发起金额为【%s】元的工资结算操作!"; | 	public static final String BGT_TO_FBG_SETTLEMENT_APPLY_SUBHEADING = "包工头【%s】向你发起金额为【%s】元的工资结算操作!"; | ||||||
|  | 	//任务进度 | ||||||
|  | 	public static final String BGT_TO_FBG_PROGRESS_HEADLINE = "包工头【%s】已提交【%s】任务的新进度!"; | ||||||
|  | 	public static final String BGT_TO_FBG_PROGRESS_SUBHEADING = "包工头【%s】已提交【%s】任务的新进度,请查看!"; | ||||||
|  |  | ||||||
| 	//包工头->分包商 消息类型 | 	//包工头->分包商 消息类型 | ||||||
| 	public static final String BGT_TYPE_TASK_TO_FBG = "9";          //任务 | 	public static final String BGT_TYPE_TASK_TO_FBS = "9";          //任务 | ||||||
| 	public static final String BGT_TYPE_SETTLEMEN_TO_FBGT = "10";   //结算 | 	public static final String BGT_TYPE_SETTLEMENT_TO_FBS = "10";   //结算 | ||||||
|  | 	public static final String BGT_TYPE_PROGRESS_TO_FBS = "13";   //结算 | ||||||
|  |  | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| @ -167,6 +172,10 @@ public class BgtMessageConstant { | |||||||
| 				map.put(HEADLINE, String.format(BGT_LEAVE_REPORT_MAKE_UP_HEADLINE, projectName)); | 				map.put(HEADLINE, String.format(BGT_LEAVE_REPORT_MAKE_UP_HEADLINE, projectName)); | ||||||
| 				map.put(SUBHEADING, String.format(BGT_LEAVE_REPORT_MAKE_UP_SUBHEADING_ONE, projectName,auditor,pass)); | 				map.put(SUBHEADING, String.format(BGT_LEAVE_REPORT_MAKE_UP_SUBHEADING_ONE, projectName,auditor,pass)); | ||||||
| 				break; | 				break; | ||||||
|  | 			case "13": | ||||||
|  | 				map.put(HEADLINE, String.format(BGT_TO_FBG_PROGRESS_HEADLINE,auditor, projectName)); | ||||||
|  | 				map.put(SUBHEADING, String.format(BGT_TO_FBG_PROGRESS_SUBHEADING, auditor,projectName)); | ||||||
|  | 				break; | ||||||
| 			default: | 			default: | ||||||
| 				break; | 				break; | ||||||
| 		} | 		} | ||||||
|  | |||||||
| @ -5,6 +5,9 @@ import java.util.HashMap; | |||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  |  | ||||||
|  | import static com.ruoyi.common.constants.BgtMessageConstant.HEADLINE; | ||||||
|  | import static com.ruoyi.common.constants.BgtMessageConstant.SUBHEADING; | ||||||
|  |  | ||||||
| public class FbsMessageConstant { | public class FbsMessageConstant { | ||||||
| 	// 公共常量 | 	// 公共常量 | ||||||
|  |  | ||||||
| @ -14,7 +17,7 @@ public class FbsMessageConstant { | |||||||
|  |  | ||||||
| 	public static final String FBS_SMALL_SIGN_UP = "1";              //小类型-包工头报名 | 	public static final String FBS_SMALL_SIGN_UP = "1";              //小类型-包工头报名 | ||||||
| 	public static final String FBS_SMALL_PAY = "2";                  //小类型-付款 | 	public static final String FBS_SMALL_PAY = "2";                  //小类型-付款 | ||||||
| 	public static final String FBS_SMALL_LEAVE = "3";                //小类型-进度 | 	public static final String FBS_SMALL_PROGRESS = "3";                //小类型-进度 | ||||||
|  |  | ||||||
| 	public static final List<String> AUDIT_TYPE = Arrays.asList("2", "3"); | 	public static final List<String> AUDIT_TYPE = Arrays.asList("2", "3"); | ||||||
| 	/** | 	/** | ||||||
| @ -77,7 +80,7 @@ public class FbsMessageConstant { | |||||||
|  |  | ||||||
| 	//分包商->总包方 消息类型 | 	//分包商->总包方 消息类型 | ||||||
| 	public static final String FBS_TYPE_SUB_TO_ZBF = "7";          //任务 | 	public static final String FBS_TYPE_SUB_TO_ZBF = "7";          //任务 | ||||||
| 	public static final String FBS_TYPE_SETTLEMEN_TO_FBGT = "8";   //结算 | 	public static final String FBS_TYPE_SETTLEMENT_TO_ZBF = "8";   //结算 | ||||||
|  |  | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| @ -85,12 +88,9 @@ public class FbsMessageConstant { | |||||||
| 	 * ============================================调用方法================================================== | 	 * ============================================调用方法================================================== | ||||||
| 	 * ============================================调用方法================================================== | 	 * ============================================调用方法================================================== | ||||||
| 	 */ | 	 */ | ||||||
| 	//主副标志 |  | ||||||
| 	public static final String HEADLINE = "headline";          //主标题 |  | ||||||
| 	public static final String SUBHEADING = "subheading";      //副标题 |  | ||||||
|  |  | ||||||
| 	//包工头消息返回 | 	//包工头消息返回 | ||||||
| 	public static Map<String, String> bgtMessage(Map<String, String> mp, String type, Boolean isPass) { | 	public static Map<String, String> fbsMessage(Map<String, String> mp, String type, Boolean isPass) { | ||||||
| 		Map<String, String> map = new HashMap<>(); | 		Map<String, String> map = new HashMap<>(); | ||||||
| 		String pass = isPass ? "通过" : "拒绝"; | 		String pass = isPass ? "通过" : "拒绝"; | ||||||
| 		String projectName = mp.get("projectName"); | 		String projectName = mp.get("projectName"); | ||||||
|  | |||||||
| @ -8,7 +8,10 @@ public class WgzAndBgtMessageConstant { | |||||||
| 	public static final  String USERTYPE_WGZ = "1"; //务工者 | 	public static final  String USERTYPE_WGZ = "1"; //务工者 | ||||||
| 	public static final  String USERTYPE_BGT = "2";	//包工头 | 	public static final  String USERTYPE_BGT = "2";	//包工头 | ||||||
| 	public static final String USERTYPE_FBS = "3"; //分包商 | 	public static final String USERTYPE_FBS = "3"; //分包商 | ||||||
|  | 	public static final String USERTYPE_ZBF = "4"; //分包商 | ||||||
|  |  | ||||||
|  | 	//系统ID | ||||||
|  | 	public static final Long SYSTEM_ID = 0L; | ||||||
|  |  | ||||||
| 	public static final String OPERATION_NO = "0"; //不需要操作 | 	public static final String OPERATION_NO = "0"; //不需要操作 | ||||||
| 	public static final String OPERATION_NEED = "1"; //需要操作 | 	public static final String OPERATION_NEED = "1"; //需要操作 | ||||||
|  | |||||||
| @ -0,0 +1,93 @@ | |||||||
|  | package com.ruoyi.common.constants; | ||||||
|  |  | ||||||
|  | import java.util.Arrays; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | import static com.ruoyi.common.constants.BgtMessageConstant.HEADLINE; | ||||||
|  | import static com.ruoyi.common.constants.BgtMessageConstant.SUBHEADING; | ||||||
|  |  | ||||||
|  | public class ZbfMessageConstant { | ||||||
|  | 	// 公共常量 | ||||||
|  |  | ||||||
|  | 	public static final String ZBF_LARGE_TASK = "1";                 //大类型-任务 | ||||||
|  | 	public static final String ZBF_LARGE_SETTLEMENT = "2";           //大类型-结算 | ||||||
|  | 	public static final String ZBF_LARGE_OTHER = "3";                //大类型-其它 | ||||||
|  |  | ||||||
|  | 	public static final String ZBF_SMALL_SIGN_UP = "1";              //小类型-分包商报名 | ||||||
|  | 	public static final String ZBF_SMALL_PAY = "2";                  //小类型-付款 | ||||||
|  | 	public static final String ZBF_SMALL_PROGRESS = "3";                //小类型-进度 | ||||||
|  |  | ||||||
|  | 	public static final List<String> AUDIT_TYPE = Arrays.asList("2", "3"); | ||||||
|  | 	/** | ||||||
|  | 	 * ============================================总包方->分包商 模板================================================== | ||||||
|  | 	 * ============================================总包方->分包商 模板================================================== | ||||||
|  | 	 * ============================================总包方->分包商 模板================================================== | ||||||
|  | 	 */ | ||||||
|  |  | ||||||
|  | 	//任务审批 | ||||||
|  | 	public static final String ZBF_SIGN_UP_APPLY_HEADLINE = "您申请的【%s】项目【%s】分包,已得到回复!"; | ||||||
|  | 	public static final String ZBF_SIGN_UP_APPLY_SUBHEADING = "您申请的【%s】任务【%s】分包,审核人【%s】已%s!"; | ||||||
|  | 	//工资审批 | ||||||
|  | 	public static final String ZBF_PAY_APPLY_HEADLINE = "您【%s】任务【%s】分包工资申请已审批!"; | ||||||
|  | 	public static final String ZBF_PAY_APPLY_SUBHEADING = "您申请的【%s】任务【%s】分包工资,审核人【%s】已%s!"; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	//分包商->包工头  消息类型 | ||||||
|  | 	public static final String ZBF_TYPE_SIGN_UP = "1";            //包工头报名 | ||||||
|  | 	public static final String ZBF_TYPE_PAY = "2";                //付款 | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * ============================================系统->分包商 模板================================================== | ||||||
|  | 	 * ============================================系统->分包商 模板================================================== | ||||||
|  | 	 * ============================================系统->分包商 模板================================================== | ||||||
|  | 	 */ | ||||||
|  | //	//承接任务 | ||||||
|  | //	public static final String FBS_SUB_APPLY_HEADLINE = "您已成功申请【%s】项目【%s】分包"; | ||||||
|  | //	public static final String FBS_SUB_APPLY_SUBHEADING = "您已成功申请到【%s】项目【%s】分包,请耐心等待回复!"; | ||||||
|  | //	//取消承接任务 | ||||||
|  | //	public static final String FBS_TASK_APPLY_CANCEL_HEADLINE = "您已成功取消【%s】项目【%s】分包申请!"; | ||||||
|  | //	public static final String FBS_TASK_APPLY_CANCEL_SUBHEADING = "您已成功取消【%s】项目【%s】分包申请"; | ||||||
|  | //	//工资结算 | ||||||
|  | //	public static final String FBS_SETTLEMENT_APPLY_HEADLINE = "您正在申请【%s】项目【%s】分包,总共【%s】元的工资结算操作!"; | ||||||
|  | //	public static final String FBS_SETTLEMENT_APPLY_SUBHEADING = "您已成功发起金额为【%s】元的工资结算操作,请耐心等待回复!"; | ||||||
|  | // | ||||||
|  | // | ||||||
|  | //	//系统->包工头 消息类型 | ||||||
|  | //	public static final String FBS_TYPE_TASK = "4";			//任务报名 | ||||||
|  | //	public static final String FBS_TYPE_TASK_CANCEL = "5";  //任务取消 | ||||||
|  | //	public static final String FBS_TYPE_SETTLEMENT = "6";   //结算 | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * ============================================调用方法================================================== | ||||||
|  | 	 * ============================================调用方法================================================== | ||||||
|  | 	 * ============================================调用方法================================================== | ||||||
|  | 	 */ | ||||||
|  |  | ||||||
|  | 	//包工头消息返回 | ||||||
|  | 	public static Map<String, String> zbfMessage(Map<String, String> mp, String type, Boolean isPass) { | ||||||
|  | 		Map<String, String> map = new HashMap<>(); | ||||||
|  | 		String pass = isPass ? "通过" : "拒绝"; | ||||||
|  | 		String projectName = mp.get("projectName"); | ||||||
|  | 		String subName = mp.get("subName"); | ||||||
|  | 		String auditor = mp.get("auditor"); | ||||||
|  | 		String amount = mp.get("amount"); | ||||||
|  | 		switch (type) { | ||||||
|  | 			case "1": | ||||||
|  | 				map.put(HEADLINE, String.format(ZBF_SIGN_UP_APPLY_HEADLINE, projectName,subName)); | ||||||
|  | 				map.put(SUBHEADING, String.format(ZBF_SIGN_UP_APPLY_SUBHEADING, projectName,subName, auditor, pass)); | ||||||
|  | 				break; | ||||||
|  | 			case "2": | ||||||
|  | 				map.put(HEADLINE, String.format(ZBF_PAY_APPLY_HEADLINE, projectName,subName)); | ||||||
|  | 				map.put(SUBHEADING, String.format(ZBF_PAY_APPLY_SUBHEADING, projectName,subName, auditor, pass)); | ||||||
|  | 				break; | ||||||
|  | 			default: | ||||||
|  | 				break; | ||||||
|  | 		} | ||||||
|  | 		return map; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -1,108 +0,0 @@ | |||||||
| 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<Company> list(@Validated CompanyQueryBo bo) { |  | ||||||
|         return iCommonCompanyService.queryPageList(bo); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 导出企业认证列表 |  | ||||||
|      */ |  | ||||||
|     @ApiOperation("导出企业认证列表") |  | ||||||
|     @PreAuthorize("@ss.hasPermi('common:company:export')") |  | ||||||
|     @Log(title = "企业认证", businessType = BusinessType.EXPORT) |  | ||||||
|     @GetMapping("/export") |  | ||||||
|     public AjaxResult<Company> export(@Validated CompanyQueryBo bo) { |  | ||||||
|         List<Company> list = iCommonCompanyService.queryList(bo); |  | ||||||
|         ExcelUtil<Company> util = new ExcelUtil<Company>(Company.class); |  | ||||||
|         return util.exportExcel(list, "企业认证"); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 获取企业认证详细信息 |  | ||||||
|      */ |  | ||||||
|     @ApiOperation("获取企业认证详细信息") |  | ||||||
|     @PreAuthorize("@ss.hasPermi('common:company:query')") |  | ||||||
|     @GetMapping("/{id}") |  | ||||||
|     public AjaxResult<Company> 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<Void> 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<Void> 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<Void> remove(@NotEmpty(message = "主键不能为空") |  | ||||||
|                                        @PathVariable Long[] ids) { |  | ||||||
|         return toAjax(iCommonCompanyService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| @ -1,9 +1,6 @@ | |||||||
| package com.ruoyi.common.domain; | package com.ruoyi.common.domain; | ||||||
|  |  | ||||||
| import com.baomidou.mybatisplus.annotation.FieldFill; | import com.baomidou.mybatisplus.annotation.*; | ||||||
| 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 com.ruoyi.common.annotation.Excel; | ||||||
| import io.swagger.annotations.ApiModel; | import io.swagger.annotations.ApiModel; | ||||||
| import io.swagger.annotations.ApiModelProperty; | import io.swagger.annotations.ApiModelProperty; | ||||||
| @ -33,7 +30,7 @@ public class Company implements Serializable { | |||||||
|  |  | ||||||
|     /** 主键ID */ |     /** 主键ID */ | ||||||
|     @ApiModelProperty("主键ID") |     @ApiModelProperty("主键ID") | ||||||
|     @TableId(value = "id") |     @TableId(value = "id", type = IdType.AUTO) | ||||||
|     private Long id; |     private Long id; | ||||||
|  |  | ||||||
|     /** 企业名称 */ |     /** 企业名称 */ | ||||||
| @ -66,6 +63,19 @@ public class Company implements Serializable { | |||||||
|     @ApiModelProperty("注册资本") |     @ApiModelProperty("注册资本") | ||||||
|     private BigDecimal registrationAmount; |     private BigDecimal registrationAmount; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("联系人") | ||||||
|  | 	private String contact; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("联系电话") | ||||||
|  | 	private String contactPhone; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("银行") | ||||||
|  | 	private String bank; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("银行卡号") | ||||||
|  | 	private String cardNo; | ||||||
|  |  | ||||||
|     /** 企业简介 */ |     /** 企业简介 */ | ||||||
|     @Excel(name = "企业简介") |     @Excel(name = "企业简介") | ||||||
|     @ApiModelProperty("企业简介") |     @ApiModelProperty("企业简介") | ||||||
|  | |||||||
| @ -40,6 +40,18 @@ public class CompanyAuthenticateDTO { | |||||||
| 	@ApiModelProperty("注册资本") | 	@ApiModelProperty("注册资本") | ||||||
| 	private BigDecimal registrationAmount; | 	private BigDecimal registrationAmount; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("联系人") | ||||||
|  | 	private String contact; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("联系电话") | ||||||
|  | 	private String contactPhone; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("银行") | ||||||
|  | 	private String bank; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("银行卡号") | ||||||
|  | 	private String cardNo; | ||||||
|  |  | ||||||
| 	@ApiModelProperty("企业简介") | 	@ApiModelProperty("企业简介") | ||||||
| 	private String introduce; | 	private String introduce; | ||||||
|  |  | ||||||
|  | |||||||
| @ -52,4 +52,9 @@ public interface ICompanyService extends IServicePlus<Company> { | |||||||
|      * @return |      * @return | ||||||
|      */ |      */ | ||||||
|     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); |     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 获取公司的名称 | ||||||
|  | 	 */ | ||||||
|  | 	String getCompanyNameById(Long id); | ||||||
| } | } | ||||||
|  | |||||||
| @ -89,4 +89,13 @@ public class CompanyServiceImpl extends ServicePlusImpl<CommonCompanyMapper, Com | |||||||
|         } |         } | ||||||
|         return removeByIds(ids); |         return removeByIds(ids); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	public String getCompanyNameById(Long id) { | ||||||
|  | 		if(id == null) { | ||||||
|  | 			return ""; | ||||||
|  | 		} | ||||||
|  | 		Company byId = getById(id); | ||||||
|  | 		return byId.getCompanyName(); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -53,4 +53,7 @@ public class FbsProjectTaskUpdateDTO { | |||||||
|  |  | ||||||
|     @ApiModelProperty("资质要求") |     @ApiModelProperty("资质要求") | ||||||
|     private String qualification; |     private String qualification; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("备注") | ||||||
|  | 	private String remark; | ||||||
| } | } | ||||||
|  | |||||||
| @ -23,12 +23,21 @@ public class AppTaskDetailVO { | |||||||
| 	@ApiModelProperty("项目ID") | 	@ApiModelProperty("项目ID") | ||||||
| 	private Long projectId; | 	private Long projectId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目名") | ||||||
|  | 	private String projectName; | ||||||
|  |  | ||||||
| 	@ApiModelProperty("标段ID") | 	@ApiModelProperty("标段ID") | ||||||
| 	private Long sectionId; | 	private Long sectionId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("标段名称") | ||||||
|  | 	private String sectionName; | ||||||
|  |  | ||||||
| 	@ApiModelProperty("分包ID") | 	@ApiModelProperty("分包ID") | ||||||
| 	private Long subId; | 	private Long subId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("分包主题") | ||||||
|  | 	private String subName; | ||||||
|  |  | ||||||
| 	/** 任务名称 */ | 	/** 任务名称 */ | ||||||
| 	@ApiModelProperty("任务名称") | 	@ApiModelProperty("任务名称") | ||||||
| 	private String taskName; | 	private String taskName; | ||||||
| @ -82,9 +91,6 @@ public class AppTaskDetailVO { | |||||||
| 	@ApiModelProperty("备注") | 	@ApiModelProperty("备注") | ||||||
| 	private String remark; | 	private String remark; | ||||||
|  |  | ||||||
| 	@ApiModelProperty("项目名") |  | ||||||
| 	private String projectName; |  | ||||||
|  |  | ||||||
| 	@ApiModelProperty("发布时间") | 	@ApiModelProperty("发布时间") | ||||||
| 	@JsonFormat(pattern = "yyyy-MM-dd") | 	@JsonFormat(pattern = "yyyy-MM-dd") | ||||||
| 	private LocalDateTime createTime; | 	private LocalDateTime createTime; | ||||||
|  | |||||||
| @ -0,0 +1,21 @@ | |||||||
|  | package com.ruoyi.fbs.domain.vo; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | @Data | ||||||
|  | @ApiModel("分包商项目列表统计") | ||||||
|  | public class FbsProjectListCountVO { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("申请中数量") | ||||||
|  | 	private Integer applyCount; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("已加入数量") | ||||||
|  | 	private Integer joinCount; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("已竣工数量") | ||||||
|  | 	private Integer completeCount; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -22,6 +22,9 @@ public class FbsProjectListVO { | |||||||
| 	@ApiModelProperty("项目地址") | 	@ApiModelProperty("项目地址") | ||||||
| 	private String projectAddress; | 	private String projectAddress; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目图片") | ||||||
|  | 	private String projectImg; | ||||||
|  |  | ||||||
| 	@ApiModelProperty("项目状态(0-未开工,1-已开工,2已竣工,3已停工)") | 	@ApiModelProperty("项目状态(0-未开工,1-已开工,2已竣工,3已停工)") | ||||||
| 	private String projectStatus; | 	private String projectStatus; | ||||||
|  |  | ||||||
|  | |||||||
| @ -19,6 +19,9 @@ public class FbsProjectSectionListVO { | |||||||
| 	@ApiModelProperty("标段名称") | 	@ApiModelProperty("标段名称") | ||||||
| 	private String sectionName; | 	private String sectionName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目地址") | ||||||
|  | 	private String projectAddress; | ||||||
|  |  | ||||||
| 	@ApiModelProperty("分包列表") | 	@ApiModelProperty("分包列表") | ||||||
| 	private List<FbsProjectSubcontractingListVO> subList; | 	private List<FbsProjectSubcontractingListVO> subList; | ||||||
|  |  | ||||||
|  | |||||||
| @ -0,0 +1,71 @@ | |||||||
|  | package com.ruoyi.fbs.domain.vo; | ||||||
|  |  | ||||||
|  | import com.baomidou.mybatisplus.annotation.IdType; | ||||||
|  | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.experimental.Accessors; | ||||||
|  |  | ||||||
|  | import java.math.BigDecimal; | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 总包方项目分包对象 zbf_project_subcontracting | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-02-17 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @Accessors(chain = true) | ||||||
|  | @ApiModel("分包商查询项目分包详情视图对象") | ||||||
|  | public class FbsProjectSubcontractingDetailVO  { | ||||||
|  |  | ||||||
|  |     /** 主键ID */ | ||||||
|  |     @ApiModelProperty("主键ID") | ||||||
|  | 	@TableId(value = "id", type = IdType.AUTO) | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("项目ID") | ||||||
|  |     private Long projectId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("标段ID") | ||||||
|  |     private Long sectionId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("标段名") | ||||||
|  | 	private String sectionName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("分包主题") | ||||||
|  |     private String subName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("分包描述") | ||||||
|  |     private String subDescribe; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("分包金额") | ||||||
|  |     private BigDecimal subAmount; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("资质要求") | ||||||
|  |     private String qualification; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("分包商用户ID") | ||||||
|  |     private Long userId; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("删除标志(0代表存在 2代表删除)") | ||||||
|  |     private String delFlag; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建者") | ||||||
|  |     private String createBy; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("创建时间") | ||||||
|  |     private LocalDateTime createTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新者") | ||||||
|  |     private String updateBy; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("更新时间") | ||||||
|  |     private LocalDateTime updateTime; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("备注") | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -16,6 +16,10 @@ public class FbsProjectSubcontractingListVO { | |||||||
|  |  | ||||||
| 	@ApiModelProperty("项目ID") | 	@ApiModelProperty("项目ID") | ||||||
| 	private Long projectId; | 	private Long projectId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目地址") | ||||||
|  | 	private String projectAddress; | ||||||
|  |  | ||||||
| 	/** 标段ID */ | 	/** 标段ID */ | ||||||
| 	@ApiModelProperty("标段ID") | 	@ApiModelProperty("标段ID") | ||||||
| 	private Long sectionId; | 	private Long sectionId; | ||||||
| @ -32,7 +36,7 @@ public class FbsProjectSubcontractingListVO { | |||||||
| 	@ApiModelProperty("资质要求") | 	@ApiModelProperty("资质要求") | ||||||
| 	private String qualification; | 	private String qualification; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("申请状态(0=申请中,1=已同意,2=已拒绝,3=已取消)") | ||||||
|  | 	private String applyStatus; | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,25 @@ | |||||||
|  | package com.ruoyi.fbs.domain.vo; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.NoArgsConstructor; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 分包商项目任务对象 fbs_project_task | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-02-17 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @NoArgsConstructor | ||||||
|  | @ApiModel("分包商任务列表数量统计视图对象") | ||||||
|  | public class FbsProjectTaskListCountVO { | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("已发布数量") | ||||||
|  |     private Integer releaseCount; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("已完成数量") | ||||||
|  |     private Integer completeCount; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -72,4 +72,23 @@ public interface IFbsMessageService extends IServicePlus<FbsMessage> { | |||||||
| 	 * 消息详情列表 | 	 * 消息详情列表 | ||||||
| 	 */ | 	 */ | ||||||
| 	TableDataInfo<FbsMessageDetailVO> queryDetailPageList(FbsMessageDetailDTO dto); | 	TableDataInfo<FbsMessageDetailVO> queryDetailPageList(FbsMessageDetailDTO dto); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 发送消息 | ||||||
|  | 	 */ | ||||||
|  | 	Boolean sendAMessage(FbsMessage bo); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 已操作 | ||||||
|  | 	 */ | ||||||
|  | 	void operation(String senderType,Long senderId,String recipientType,Long recipientId,Long tableId,String tableName); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 批量已操作 | ||||||
|  | 	 */ | ||||||
|  | 	void operationBatch(String recipientType,Long recipientId,List<Long> tableIds,String tableName); | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -75,4 +75,9 @@ public interface IFbsProjectTaskApplyService extends IServicePlus<FbsProjectTask | |||||||
| 	 * 查询任务下的包工头申请列表 | 	 * 查询任务下的包工头申请列表 | ||||||
| 	 */ | 	 */ | ||||||
| 	TableDataInfo<FbsProjectTaskApplyListVO> queryPageListByTaskId(FbsTaskApplyListDTO dto); | 	TableDataInfo<FbsProjectTaskApplyListVO> queryPageListByTaskId(FbsTaskApplyListDTO dto); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 分包商选择包工头 | ||||||
|  | 	 */ | ||||||
|  | 	Boolean choose(Long id); | ||||||
| } | } | ||||||
|  | |||||||
| @ -116,6 +116,11 @@ public interface IFbsProjectTaskService extends IServicePlus<FbsProjectTask> { | |||||||
| 	 */ | 	 */ | ||||||
| 	TableDataInfo<FbsProjectTaskListVO> fbsPageList(FbsTaskListDTO dto); | 	TableDataInfo<FbsProjectTaskListVO> fbsPageList(FbsTaskListDTO dto); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 分包商查询任务列表数量统计 | ||||||
|  | 	 */ | ||||||
|  | 	FbsProjectTaskListCountVO fbsListCount(); | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * 分包商查询任务详情-工资结算审批 | 	 * 分包商查询任务详情-工资结算审批 | ||||||
| 	 */ | 	 */ | ||||||
|  | |||||||
| @ -62,7 +62,7 @@ public interface IFbsUserService extends IServicePlus<FbsUser> { | |||||||
| 	/** | 	/** | ||||||
| 	 * 企业认证 | 	 * 企业认证 | ||||||
| 	 */ | 	 */ | ||||||
| 	Boolean authenticate(CompanyAuthenticateDTO dto); | 	Long authenticate(CompanyAuthenticateDTO dto); | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * 企业认证 | 	 * 企业认证 | ||||||
|  | |||||||
| @ -3,6 +3,7 @@ package com.ruoyi.fbs.service.impl; | |||||||
| import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||||
| import cn.hutool.core.util.StrUtil; | import cn.hutool.core.util.StrUtil; | ||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
|  | import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; | ||||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
| import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | ||||||
| @ -28,6 +29,7 @@ import java.util.List; | |||||||
| import java.util.Map; | import java.util.Map; | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
|  | import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.OPERATION_ALREADY; | ||||||
| import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.OPERATION_NEED; | import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.OPERATION_NEED; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @ -204,4 +206,32 @@ public class FbsMessageServiceImpl extends ServicePlusImpl<FbsMessageMapper, Fbs | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	public Boolean sendAMessage(FbsMessage bo) { | ||||||
|  | 		return save(bo); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	public void operation(String senderType, Long senderId, String recipientType, Long recipientId, Long tableId, String tableName) { | ||||||
|  | 		LambdaUpdateWrapper<FbsMessage> wrapper = new LambdaUpdateWrapper<>(); | ||||||
|  | 		wrapper.eq(FbsMessage::getRecipientId, recipientId); | ||||||
|  | 		wrapper.eq(FbsMessage::getRecipientType, recipientType); | ||||||
|  | 		wrapper.eq(FbsMessage::getSenderId, senderId); | ||||||
|  | 		wrapper.eq(FbsMessage::getSenderType, senderType); | ||||||
|  | 		wrapper.eq(FbsMessage::getTableId, tableId); | ||||||
|  | 		wrapper.eq(FbsMessage::getTableName, tableName); | ||||||
|  | 		wrapper.set(FbsMessage::getIsOperation, OPERATION_ALREADY); | ||||||
|  | 		update(wrapper); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	public void operationBatch(String recipientType, Long recipientId, List<Long> tableIds, String tableName) { | ||||||
|  | 		LambdaUpdateWrapper<FbsMessage> wrapper = new LambdaUpdateWrapper<>(); | ||||||
|  | 		wrapper.eq(FbsMessage::getRecipientId, recipientId); | ||||||
|  | 		wrapper.eq(FbsMessage::getRecipientType, recipientType); | ||||||
|  | 		wrapper.in(FbsMessage::getTableId, tableIds); | ||||||
|  | 		wrapper.eq(FbsMessage::getTableName, tableName); | ||||||
|  | 		wrapper.set(FbsMessage::getIsOperation, OPERATION_ALREADY); | ||||||
|  | 		update(wrapper); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -11,30 +11,30 @@ import com.ruoyi.bgt.domain.dto.BgtTaskApplyDTO; | |||||||
| import com.ruoyi.bgt.service.IBgtMessageService; | import com.ruoyi.bgt.service.IBgtMessageService; | ||||||
| import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | ||||||
| import com.ruoyi.common.core.page.TableDataInfo; | import com.ruoyi.common.core.page.TableDataInfo; | ||||||
|  | import com.ruoyi.common.enums.TaskApplyStatus; | ||||||
| import com.ruoyi.common.exception.BaseException; | import com.ruoyi.common.exception.BaseException; | ||||||
| import com.ruoyi.common.utils.PageUtils; | import com.ruoyi.common.utils.PageUtils; | ||||||
| import com.ruoyi.common.utils.SecurityUtils; | import com.ruoyi.common.utils.SecurityUtils; | ||||||
| import com.ruoyi.fbs.bo.FbsProjectTaskApplyQueryBo; | import com.ruoyi.fbs.bo.FbsProjectTaskApplyQueryBo; | ||||||
|  | import com.ruoyi.fbs.domain.FbsMessage; | ||||||
| import com.ruoyi.fbs.domain.FbsProjectTask; | import com.ruoyi.fbs.domain.FbsProjectTask; | ||||||
| import com.ruoyi.fbs.domain.FbsProjectTaskApply; | import com.ruoyi.fbs.domain.FbsProjectTaskApply; | ||||||
| import com.ruoyi.fbs.domain.dto.FbsTaskApplyListDTO; | import com.ruoyi.fbs.domain.dto.FbsTaskApplyListDTO; | ||||||
| import com.ruoyi.fbs.domain.vo.FbsProjectTaskApplyListVO; | import com.ruoyi.fbs.domain.vo.FbsProjectTaskApplyListVO; | ||||||
| import com.ruoyi.fbs.mapper.FbsProjectTaskApplyMapper; | import com.ruoyi.fbs.mapper.FbsProjectTaskApplyMapper; | ||||||
|  | import com.ruoyi.fbs.service.IFbsMessageService; | ||||||
| import com.ruoyi.fbs.service.IFbsProjectTaskApplyService; | import com.ruoyi.fbs.service.IFbsProjectTaskApplyService; | ||||||
| import com.ruoyi.fbs.service.IFbsProjectTaskService; | import com.ruoyi.fbs.service.IFbsProjectTaskService; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| import org.springframework.transaction.annotation.Transactional; | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
| import java.util.Collection; | import java.util.*; | ||||||
| import java.util.HashMap; |  | ||||||
| import java.util.List; |  | ||||||
| import java.util.Map; |  | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
| import static com.ruoyi.common.constants.BgtMessageConstant.*; | import static com.ruoyi.common.constants.BgtMessageConstant.*; | ||||||
| import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.USERTYPE_BGT; | import static com.ruoyi.common.constants.FbsMessageConstant.*; | ||||||
| import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.USERTYPE_SYSTEM; | import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.*; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 分包商项目任务申请Service业务层处理 |  * 分包商项目任务申请Service业务层处理 | ||||||
| @ -49,7 +49,8 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl<FbsProjectTa | |||||||
| 	private IBgtMessageService bgtMessageService; | 	private IBgtMessageService bgtMessageService; | ||||||
| 	@Autowired | 	@Autowired | ||||||
| 	private IFbsProjectTaskService taskService; | 	private IFbsProjectTaskService taskService; | ||||||
|  | 	@Autowired | ||||||
|  | 	private IFbsMessageService fbsMessageService; | ||||||
|     @Override |     @Override | ||||||
|     public FbsProjectTaskApply queryById(Long id){ |     public FbsProjectTaskApply queryById(Long id){ | ||||||
|         return getById(id); |         return getById(id); | ||||||
| @ -84,7 +85,7 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl<FbsProjectTa | |||||||
|     @Override |     @Override | ||||||
|     public Boolean update(FbsProjectTaskApply bo) { |     public Boolean update(FbsProjectTaskApply bo) { | ||||||
|         FbsProjectTaskApply update = BeanUtil.toBean(bo, FbsProjectTaskApply.class); |         FbsProjectTaskApply update = BeanUtil.toBean(bo, FbsProjectTaskApply.class); | ||||||
|         validEntityBeforeSave(update); | //        validEntityBeforeSave(update); | ||||||
|         return updateById(update); |         return updateById(update); | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @ -97,6 +98,7 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl<FbsProjectTa | |||||||
| 		LambdaQueryWrapper<FbsProjectTaskApply> wrapper = new LambdaQueryWrapper<>(); | 		LambdaQueryWrapper<FbsProjectTaskApply> wrapper = new LambdaQueryWrapper<>(); | ||||||
| 		wrapper.eq(FbsProjectTaskApply::getTaskId, entity.getTaskId()); | 		wrapper.eq(FbsProjectTaskApply::getTaskId, entity.getTaskId()); | ||||||
| 		wrapper.eq(FbsProjectTaskApply::getUserId, entity.getUserId()); | 		wrapper.eq(FbsProjectTaskApply::getUserId, entity.getUserId()); | ||||||
|  | 		wrapper.eq(FbsProjectTaskApply::getApplyStatus, TaskApplyStatus.APPLY.getCode()); | ||||||
| 		List<FbsProjectTaskApply> list = baseMapper.selectList(wrapper); | 		List<FbsProjectTaskApply> list = baseMapper.selectList(wrapper); | ||||||
| 		if (CollUtil.isNotEmpty(list)) { | 		if (CollUtil.isNotEmpty(list)) { | ||||||
| 			throw new BaseException("该任务已申请"); | 			throw new BaseException("该任务已申请"); | ||||||
| @ -115,24 +117,46 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl<FbsProjectTa | |||||||
| 	@Transactional(rollbackFor = Exception.class) | 	@Transactional(rollbackFor = Exception.class) | ||||||
| 	public Boolean appTaskApply(BgtTaskApplyDTO dto) { | 	public Boolean appTaskApply(BgtTaskApplyDTO dto) { | ||||||
| 		FbsProjectTaskApply fbsProjectTaskApply = BeanUtil.copyProperties(dto, FbsProjectTaskApply.class); | 		FbsProjectTaskApply fbsProjectTaskApply = BeanUtil.copyProperties(dto, FbsProjectTaskApply.class); | ||||||
|  | 		fbsProjectTaskApply.setUserId(SecurityUtils.getAppUserId()); | ||||||
| 		validEntityBeforeSave(fbsProjectTaskApply); | 		validEntityBeforeSave(fbsProjectTaskApply); | ||||||
|  |  | ||||||
| 		//发消息 | 		//系统发消息到包工头 | ||||||
| 		FbsProjectTask task = taskService.getById(dto.getTaskId()); | 		FbsProjectTask task = taskService.getById(dto.getTaskId()); | ||||||
| 		HashMap<String, String> mp = new HashMap<>(); | //		HashMap<String, String> mp = new HashMap<>(); | ||||||
| 		mp.put("projectName", task.getTaskName()); | //		mp.put("projectName", task.getTaskName()); | ||||||
| 		mp.put("auditor", SecurityUtils.getUsername()); | //		mp.put("auditor", SecurityUtils.getUsername()); | ||||||
| 		Map<String, String> map = bgtMessage(mp, BGT_TYPE_TASK, true); | //		Map<String, String> map = bgtMessage(mp, BGT_TYPE_TASK, true); | ||||||
| 		BgtMessage bgtMessage = new BgtMessage() | //		BgtMessage bgtMessage = new BgtMessage() | ||||||
| 			.setSenderType(USERTYPE_SYSTEM) | //			.setSenderType(USERTYPE_SYSTEM) | ||||||
| 			.setRecipientType(USERTYPE_BGT) | //			.setSenderId(SYSTEM_ID) | ||||||
| 			.setRecipientId(dto.getUserId()) | //			.setRecipientType(USERTYPE_BGT) | ||||||
| 			.setHeadline(map.get(HEADLINE)) | //			.setRecipientId(dto.getUserId()) | ||||||
| 			.setSubheading(map.get(SUBHEADING)) | //			.setHeadline(map.get(HEADLINE)) | ||||||
| 			.setTableId(task.getId()) | //			.setSubheading(map.get(SUBHEADING)) | ||||||
| 			.setTableName(SqlHelper.table(FbsProjectTask.class).getTableName()) | //			.setTableId(fbsProjectTaskApply.getId()) | ||||||
| 			.setMessageLargeType(BGT_LARGE_TASK); | //			.setTableName(SqlHelper.table(FbsProjectTaskApply.class).getTableName()) | ||||||
| 		bgtMessageService.sendAMessage(bgtMessage); | //			.setMessageLargeType(BGT_LARGE_TASK); | ||||||
|  | //		bgtMessageService.sendAMessage(bgtMessage); | ||||||
|  |  | ||||||
|  | 		//包工头发消息到分包商 | ||||||
|  | 		HashMap<String, String> fmp = new HashMap<>(); | ||||||
|  | 		fmp.put("projectName", task.getTaskName()); | ||||||
|  | 		fmp.put("auditor", SecurityUtils.getUsername()); | ||||||
|  | 		Map<String, String> fmap = bgtMessage(fmp, BGT_TYPE_TASK_TO_FBS, true); | ||||||
|  | 		FbsMessage fbsMessage = new FbsMessage() | ||||||
|  | 			.setSenderType(USERTYPE_BGT) | ||||||
|  | 			.setSenderId(SecurityUtils.getAppUserId()) | ||||||
|  | 			.setRecipientType(USERTYPE_FBS) | ||||||
|  | 			.setRecipientId(task.getCreateId()) | ||||||
|  | 			.setHeadline(fmap.get(HEADLINE)) | ||||||
|  | 			.setSubheading(fmap.get(SUBHEADING)) | ||||||
|  | 			.setTableId(fbsProjectTaskApply.getId()) | ||||||
|  | 			.setTableName(SqlHelper.table(FbsProjectTaskApply.class).getTableName()) | ||||||
|  | 			.setMessageLargeType(FBS_LARGE_OTHER) | ||||||
|  | 			.setMessageSmallType(FBS_SMALL_SIGN_UP) | ||||||
|  | 			.setIsOperation(OPERATION_NEED); | ||||||
|  | 		fbsMessageService.sendAMessage(fbsMessage); | ||||||
|  |  | ||||||
| 		return save(fbsProjectTaskApply); | 		return save(fbsProjectTaskApply); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @ -144,25 +168,42 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl<FbsProjectTa | |||||||
|  |  | ||||||
| 	@Override | 	@Override | ||||||
| 	public Boolean cancelApply(BgtTaskApplyDTO dto) { | 	public Boolean cancelApply(BgtTaskApplyDTO dto) { | ||||||
| 		int delete = baseMapper.delete(Wrappers.<FbsProjectTaskApply>lambdaQuery().eq(FbsProjectTaskApply::getTaskId, dto.getTaskId()) |  | ||||||
| 			.eq(FbsProjectTaskApply::getUserId, dto.getUserId())); | 		LambdaQueryWrapper<FbsProjectTaskApply> wrapper = new LambdaQueryWrapper<>(); | ||||||
| 		//发消息 | 		wrapper.eq(FbsProjectTaskApply::getTaskId, dto.getTaskId()); | ||||||
|  | 		wrapper.eq(FbsProjectTaskApply::getUserId, SecurityUtils.getAppUserId()); | ||||||
|  | 		wrapper.eq(FbsProjectTaskApply::getApplyStatus, TaskApplyStatus.APPLY.getCode()); | ||||||
|  | 		List<FbsProjectTaskApply> list = baseMapper.selectList(wrapper); | ||||||
|  | 		if (CollUtil.isEmpty(list)) { | ||||||
|  | 			throw new BaseException("该任务尚未申请"); | ||||||
|  | 		} | ||||||
|  | 		FbsProjectTaskApply fbsProjectTaskApply = list.get(0); | ||||||
|  | 		fbsProjectTaskApply.setApplyStatus(TaskApplyStatus.CANCEL.getCode()); | ||||||
|  | 		boolean update = updateById(fbsProjectTaskApply); | ||||||
|  |  | ||||||
| 		FbsProjectTask task = taskService.getById(dto.getTaskId()); | 		FbsProjectTask task = taskService.getById(dto.getTaskId()); | ||||||
| 		HashMap<String, String> mp = new HashMap<>(); |  | ||||||
| 		mp.put("projectName", task.getTaskName()); | 		//修改消息操作 | ||||||
| 		mp.put("auditor", SecurityUtils.getUsername()); | 		fbsMessageService.operation(USERTYPE_BGT,SecurityUtils.getAppUserId(),USERTYPE_FBS,task.getCreateId() | ||||||
| 		Map<String, String> map = bgtMessage(mp, BGT_TYPE_TASK_CANCEL, true); | 			,fbsProjectTaskApply.getId(),SqlHelper.table(FbsProjectTaskApply.class).getTableName()); | ||||||
| 		BgtMessage bgtMessage = new BgtMessage() |  | ||||||
| 			.setSenderType(USERTYPE_SYSTEM) | 		//发消息 | ||||||
| 			.setRecipientType(USERTYPE_BGT) | //		FbsProjectTask task = taskService.getById(dto.getTaskId()); | ||||||
| 			.setRecipientId(dto.getUserId()) | //		HashMap<String, String> mp = new HashMap<>(); | ||||||
| 			.setHeadline(map.get(HEADLINE)) | //		mp.put("projectName", task.getTaskName()); | ||||||
| 			.setSubheading(map.get(SUBHEADING)) | //		mp.put("auditor", SecurityUtils.getUsername()); | ||||||
| 			.setTableId(task.getId()) | //		Map<String, String> map = bgtMessage(mp, BGT_TYPE_TASK_CANCEL, true); | ||||||
| 			.setTableName(SqlHelper.table(FbsProjectTask.class).getTableName()) | //		BgtMessage bgtMessage = new BgtMessage() | ||||||
| 			.setMessageLargeType(BGT_LARGE_TASK); | //			.setSenderType(USERTYPE_SYSTEM) | ||||||
| 		bgtMessageService.sendAMessage(bgtMessage); | //			.setRecipientType(USERTYPE_BGT) | ||||||
| 		return delete>0; | //			.setRecipientId(dto.getUserId()) | ||||||
|  | //			.setHeadline(map.get(HEADLINE)) | ||||||
|  | //			.setSubheading(map.get(SUBHEADING)) | ||||||
|  | //			.setTableId(task.getId()) | ||||||
|  | //			.setTableName(SqlHelper.table(FbsProjectTask.class).getTableName()) | ||||||
|  | //			.setMessageLargeType(BGT_LARGE_TASK); | ||||||
|  | //		bgtMessageService.sendAMessage(bgtMessage); | ||||||
|  | 		return update; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	@Override | 	@Override | ||||||
| @ -173,4 +214,57 @@ public class FbsProjectTaskApplyServiceImpl extends ServicePlusImpl<FbsProjectTa | |||||||
| 		Page<FbsProjectTaskApplyListVO> voPage = baseMapper.queryPageListByTaskId(page, dto); | 		Page<FbsProjectTaskApplyListVO> voPage = baseMapper.queryPageListByTaskId(page, dto); | ||||||
| 		return PageUtils.buildDataInfo(voPage); | 		return PageUtils.buildDataInfo(voPage); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	@Transactional(rollbackFor = Exception.class) | ||||||
|  | 	public Boolean choose(Long id) { | ||||||
|  | 		FbsProjectTaskApply taskApply = getById(id); | ||||||
|  | 		if(taskApply == null || TaskApplyStatus.CANCEL.getCode().equals(taskApply.getApplyStatus())){ | ||||||
|  | 			throw new BaseException("该申请已取消"); | ||||||
|  | 		} | ||||||
|  | 		FbsProjectTask task = taskService.getById(taskApply.getTaskId()); | ||||||
|  | 		if(task!=null && task.getUserId()!=null){ | ||||||
|  | 			throw new BaseException("该任务已被承接"); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		//拒绝其余包工头 | ||||||
|  | 		LambdaQueryWrapper<FbsProjectTaskApply> wrapper = new LambdaQueryWrapper<>(); | ||||||
|  | 		wrapper.eq(FbsProjectTaskApply::getTaskId, taskApply.getTaskId()); | ||||||
|  | 		wrapper.eq(FbsProjectTaskApply::getApplyStatus, TaskApplyStatus.APPLY.getCode()); | ||||||
|  | 		List<FbsProjectTaskApply> list = baseMapper.selectList(wrapper); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 		ArrayList<BgtMessage> bgtMessages = new ArrayList<>(); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 		for (FbsProjectTaskApply fbsProjectTaskApply : list){ | ||||||
|  | 			boolean equals = fbsProjectTaskApply.getId().equals(id); | ||||||
|  | 			if (equals){ | ||||||
|  | 				fbsProjectTaskApply.setApplyStatus(TaskApplyStatus.PASS.getCode()); | ||||||
|  | 			}else{ | ||||||
|  | 				fbsProjectTaskApply.setApplyStatus(TaskApplyStatus.REFUSE.getCode()); | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			//分包商发消息到包工头 | ||||||
|  | 			HashMap<String, String> mp = new HashMap<>(); | ||||||
|  | 			mp.put("projectName", task.getTaskName()); | ||||||
|  | 			mp.put("auditor", SecurityUtils.getUsername()); | ||||||
|  | 			Map<String, String> map = fbsMessage(mp, FBS_TYPE_SIGN_UP, equals); | ||||||
|  | 			BgtMessage bgtMessage = new BgtMessage() | ||||||
|  | 				.setSenderType(USERTYPE_FBS) | ||||||
|  | 				.setSenderId(SecurityUtils.getAppUserId()) | ||||||
|  | 				.setRecipientType(USERTYPE_BGT) | ||||||
|  | 				.setRecipientId(fbsProjectTaskApply.getUserId()) | ||||||
|  | 				.setHeadline(map.get(HEADLINE)) | ||||||
|  | 				.setSubheading(map.get(SUBHEADING)) | ||||||
|  | 				.setTableId(fbsProjectTaskApply.getId()) | ||||||
|  | 				.setTableName(SqlHelper.table(FbsProjectTaskApply.class).getTableName()) | ||||||
|  | 				.setMessageLargeType(BGT_LARGE_TASK) | ||||||
|  | 				.setIsOperation(OPERATION_NO); | ||||||
|  | 			bgtMessages.add(bgtMessage); | ||||||
|  | 		} | ||||||
|  | 		bgtMessageService.saveBatch(bgtMessages); | ||||||
|  | 		fbsMessageService.operationBatch(USERTYPE_FBS,SecurityUtils.getAppUserId(),list.stream().map(FbsProjectTaskApply::getId).collect(Collectors.toList()),SqlHelper.table(FbsProjectTaskApply.class).getTableName()); | ||||||
|  | 		return super.updateBatchById(list); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -37,6 +37,8 @@ import com.ruoyi.fbs.service.IFbsProjectTaskService; | |||||||
| import com.ruoyi.wgz.service.IWgzAttendanceService; | import com.ruoyi.wgz.service.IWgzAttendanceService; | ||||||
| import com.ruoyi.wgz.service.IWgzPayCalculationService; | import com.ruoyi.wgz.service.IWgzPayCalculationService; | ||||||
| import com.ruoyi.zbf.domain.ZbfProject; | import com.ruoyi.zbf.domain.ZbfProject; | ||||||
|  | import com.ruoyi.zbf.domain.ZbfProjectSection; | ||||||
|  | import com.ruoyi.zbf.service.IZbfProjectSectionService; | ||||||
| import com.ruoyi.zbf.service.IZbfProjectService; | import com.ruoyi.zbf.service.IZbfProjectService; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| @ -72,6 +74,8 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap | |||||||
| 	private IWgzPayCalculationService payCalculationService; | 	private IWgzPayCalculationService payCalculationService; | ||||||
| 	@Autowired | 	@Autowired | ||||||
| 	private IFbsProjectTaskApplyService fbsProjectTaskApplyService; | 	private IFbsProjectTaskApplyService fbsProjectTaskApplyService; | ||||||
|  | 	@Autowired | ||||||
|  | 	private IZbfProjectSectionService zbfProjectSectionService; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public FbsProjectTask queryById(Long id){ |     public FbsProjectTask queryById(Long id){ | ||||||
| @ -163,34 +167,22 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap | |||||||
|  |  | ||||||
| 	@Override | 	@Override | ||||||
| 	public AppTaskDetailVO appQueryById(Long id) { | 	public AppTaskDetailVO appQueryById(Long id) { | ||||||
| 		FbsProjectTask byId = getById(id); | 		FbsProjectTask projectTask =  getById(id); | ||||||
| 		AppTaskDetailVO appTaskDetailVO = BeanUtil.copyProperties(byId, AppTaskDetailVO.class); | 		AppTaskDetailVO appTaskDetailVO = BeanUtil.copyProperties(projectTask, AppTaskDetailVO.class); | ||||||
| 		//项目信息 | 		//项目信息 | ||||||
| 		ZbfProject project = zbfProjectService.getById(byId.getProjectId()); | 		ZbfProject project = zbfProjectService.getById(projectTask.getProjectId()); | ||||||
| 		appTaskDetailVO.setProjectName(project.getProjectName()); | 		appTaskDetailVO.setProjectName(project.getProjectName()); | ||||||
|  | 		//标段信息 | ||||||
|  | 		ZbfProjectSection projectSection = zbfProjectSectionService.getById(projectTask.getSectionId()); | ||||||
|  | 		appTaskDetailVO.setSectionName(projectSection.getSectionName()); | ||||||
|  |  | ||||||
| 		if(ProjectTaskStatus.PROGRESS.getCode().equals(byId.getStatus()) | 		if(ProjectTaskStatus.PROGRESS.getCode().equals(projectTask.getStatus()) | ||||||
| 			|| ProjectTaskStatus.COMPLETE.getCode().equals(byId.getStatus())){ | 			|| ProjectTaskStatus.COMPLETE.getCode().equals(projectTask.getStatus())){ | ||||||
| 			//任务进度 | 			//任务进度 | ||||||
| 			Integer lastProgress = progressService.getLastProgress(id); | 			Integer lastProgress = progressService.getLastProgress(id); | ||||||
| 			appTaskDetailVO.setProgress(lastProgress); | 			appTaskDetailVO.setProgress(lastProgress); | ||||||
| 			BigDecimal bd = new BigDecimal(lastProgress).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP); | 			BigDecimal bd = new BigDecimal(lastProgress).divide(new BigDecimal(100), 2, RoundingMode.HALF_UP); | ||||||
| 			appTaskDetailVO.setProgressDouble(bd.doubleValue()); | 			appTaskDetailVO.setProgressDouble(bd.doubleValue()); | ||||||
| //			//结算情况 |  | ||||||
| //			//收款申请列表 |  | ||||||
| //			BgtWageApplicationQueryDTO wageDTO = new BgtWageApplicationQueryDTO(); |  | ||||||
| //			wageDTO.setTaskId(id); |  | ||||||
| //			List<BgtWageApplicationListVO> wageList = wageApplicationService.appQueryList(wageDTO); |  | ||||||
| //			appTaskDetailVO.setWageApplication(CollectionUtil.isEmpty(wageList)?null:wageList.get(0)); |  | ||||||
| //			//收款金额 |  | ||||||
| //			Integer taskReceiveAmount = wageList.stream().filter(wage -> AuditStatus.PASS.getCode().equals(wage.getAuditStatus())) |  | ||||||
| //				.map(BgtWageApplicationListVO::getApplicantAmount) |  | ||||||
| //				.reduce(BigDecimal.ZERO, BigDecimal::add).intValue(); |  | ||||||
| //			appTaskDetailVO.setTaskReceiveAmount(taskReceiveAmount); |  | ||||||
| //			//付款金额 |  | ||||||
| //			BigDecimal payByTaskAndBgt = payCalculationService.getPayByTaskAndBgt(byId.getId(), byId.getUserId()); |  | ||||||
| //			appTaskDetailVO.setTaskPaymentAmount(payByTaskAndBgt); |  | ||||||
|  |  | ||||||
| 		} | 		} | ||||||
| 		return appTaskDetailVO; | 		return appTaskDetailVO; | ||||||
| 	} | 	} | ||||||
| @ -198,7 +190,7 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap | |||||||
| 	@Override | 	@Override | ||||||
| 	public AppTaskDetailAttendanceVO attendance(Long id) { | 	public AppTaskDetailAttendanceVO attendance(Long id) { | ||||||
| 		FbsProjectTask task = getById(id); | 		FbsProjectTask task = getById(id); | ||||||
| 		LocalDate taskBeginTime = DateUtils.str2Localdate(task.getTaskBeginTime(), DateUtils.YYYY_MM_DD); | //		LocalDate taskBeginTime = DateUtils.str2Localdate(task.getTaskBeginTime(), DateUtils.YYYY_MM_DD); | ||||||
| 		LocalDate taskEndTime = DateUtils.str2Localdate(task.getTaskEndTime(), DateUtils.YYYY_MM_DD); | 		LocalDate taskEndTime = DateUtils.str2Localdate(task.getTaskEndTime(), DateUtils.YYYY_MM_DD); | ||||||
| 		//考勤情况 | 		//考勤情况 | ||||||
| 		AppTaskDetailAttendanceVO appTaskDetailVO = new AppTaskDetailAttendanceVO(); | 		AppTaskDetailAttendanceVO appTaskDetailVO = new AppTaskDetailAttendanceVO(); | ||||||
| @ -310,6 +302,7 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap | |||||||
| 	public TableDataInfo<FbsProjectTaskListVO> fbsPageList(FbsTaskListDTO dto) { | 	public TableDataInfo<FbsProjectTaskListVO> fbsPageList(FbsTaskListDTO dto) { | ||||||
|  |  | ||||||
| 		LambdaQueryWrapper<FbsProjectTask> wrapper =  new LambdaQueryWrapper<>(); | 		LambdaQueryWrapper<FbsProjectTask> wrapper =  new LambdaQueryWrapper<>(); | ||||||
|  | 		wrapper.eq(FbsProjectTask::getCreateId,SecurityUtils.getAppUserId()); | ||||||
| 		wrapper.in(dto.getType()==0,FbsProjectTask::getStatus,ProjectTaskStatus.getRelease()); | 		wrapper.in(dto.getType()==0,FbsProjectTask::getStatus,ProjectTaskStatus.getRelease()); | ||||||
| 		wrapper.eq(dto.getType()==1,FbsProjectTask::getStatus,ProjectTaskStatus.COMPLETE.getCode()); | 		wrapper.eq(dto.getType()==1,FbsProjectTask::getStatus,ProjectTaskStatus.COMPLETE.getCode()); | ||||||
| 		wrapper.orderByDesc(FbsProjectTask::getId); | 		wrapper.orderByDesc(FbsProjectTask::getId); | ||||||
| @ -339,6 +332,24 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap | |||||||
| 		return PageUtils.buildDataInfo(fbsProjectTaskListVOPage); | 		return PageUtils.buildDataInfo(fbsProjectTaskListVOPage); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	public FbsProjectTaskListCountVO fbsListCount() { | ||||||
|  | 		LambdaQueryWrapper<FbsProjectTask> releaseWrapper =  new LambdaQueryWrapper<>(); | ||||||
|  | 		releaseWrapper.eq(FbsProjectTask::getCreateId,SecurityUtils.getAppUserId()); | ||||||
|  | 		releaseWrapper.in(FbsProjectTask::getStatus,ProjectTaskStatus.getRelease()); | ||||||
|  | 		Integer releaseCount = baseMapper.selectCount(releaseWrapper); | ||||||
|  |  | ||||||
|  | 		LambdaQueryWrapper<FbsProjectTask> completeWrapper =  new LambdaQueryWrapper<>(); | ||||||
|  | 		completeWrapper.eq(FbsProjectTask::getCreateId,SecurityUtils.getAppUserId()); | ||||||
|  | 		completeWrapper.eq(FbsProjectTask::getStatus,ProjectTaskStatus.COMPLETE.getCode()); | ||||||
|  | 		Integer completeCount =  baseMapper.selectCount(completeWrapper); | ||||||
|  |  | ||||||
|  | 		FbsProjectTaskListCountVO fbsProjectTaskListCountVO = new FbsProjectTaskListCountVO(); | ||||||
|  | 		fbsProjectTaskListCountVO.setReleaseCount(releaseCount); | ||||||
|  | 		fbsProjectTaskListCountVO.setCompleteCount(completeCount); | ||||||
|  | 		return fbsProjectTaskListCountVO; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	@Override | 	@Override | ||||||
| 	public FbsTaskDetailWageVO fbsWage(Long id) { | 	public FbsTaskDetailWageVO fbsWage(Long id) { | ||||||
| 		FbsTaskDetailWageVO fbsTaskDetailWageVO = new FbsTaskDetailWageVO(); | 		FbsTaskDetailWageVO fbsTaskDetailWageVO = new FbsTaskDetailWageVO(); | ||||||
|  | |||||||
| @ -18,6 +18,7 @@ import com.ruoyi.fbs.mapper.FbsUserMapper; | |||||||
| import com.ruoyi.fbs.service.IFbsUserService; | import com.ruoyi.fbs.service.IFbsUserService; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -113,12 +114,14 @@ public class FbsUserServiceImpl extends ServicePlusImpl<FbsUserMapper, FbsUser> | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	@Override | 	@Override | ||||||
| 	public Boolean authenticate(CompanyAuthenticateDTO dto) { | 	@Transactional(rollbackFor = Exception.class) | ||||||
|  | 	public Long authenticate(CompanyAuthenticateDTO dto) { | ||||||
| 		Company company = BeanUtil.copyProperties(dto, Company.class); | 		Company company = BeanUtil.copyProperties(dto, Company.class); | ||||||
| 		companyService.insert(company); | 		companyService.save(company); | ||||||
| 		FbsUser fbsUser = selectUserByUserId(SecurityUtils.getAppUserId()); | 		FbsUser fbsUser = selectUserByUserId(SecurityUtils.getAppUserId()); | ||||||
| 		fbsUser.setCompanyId(company.getId()); | 		fbsUser.setCompanyId(company.getId()); | ||||||
| 		return updateById(fbsUser); | 		updateById(fbsUser); | ||||||
|  | 		return company.getId(); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	@Override | 	@Override | ||||||
|  | |||||||
| @ -5,6 +5,7 @@ import cn.hutool.core.util.StrUtil; | |||||||
| import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; | ||||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
|  | import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; | ||||||
| import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | ||||||
| import com.ruoyi.common.core.page.TableDataInfo; | import com.ruoyi.common.core.page.TableDataInfo; | ||||||
| import com.ruoyi.common.enums.AuditStatus; | import com.ruoyi.common.enums.AuditStatus; | ||||||
| @ -15,12 +16,26 @@ import com.ruoyi.fbs.domain.FbsWageApplication; | |||||||
| import com.ruoyi.fbs.domain.dto.FbsWageApplicationListDTO; | import com.ruoyi.fbs.domain.dto.FbsWageApplicationListDTO; | ||||||
| import com.ruoyi.fbs.mapper.FbsWageApplicationMapper; | import com.ruoyi.fbs.mapper.FbsWageApplicationMapper; | ||||||
| import com.ruoyi.fbs.service.IFbsWageApplicationService; | import com.ruoyi.fbs.service.IFbsWageApplicationService; | ||||||
|  | import com.ruoyi.zbf.domain.ZbfMessage; | ||||||
|  | import com.ruoyi.zbf.service.IZbfMessageService; | ||||||
|  | import com.ruoyi.zbf.service.IZbfProjectService; | ||||||
|  | import com.ruoyi.zbf.service.IZbfProjectSubcontractingService; | ||||||
|  | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
|  | import java.util.HashMap; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
|  |  | ||||||
|  | import static com.ruoyi.common.constants.BgtMessageConstant.HEADLINE; | ||||||
|  | import static com.ruoyi.common.constants.BgtMessageConstant.SUBHEADING; | ||||||
|  | import static com.ruoyi.common.constants.FbsMessageConstant.FBS_TYPE_SETTLEMENT_TO_ZBF; | ||||||
|  | import static com.ruoyi.common.constants.FbsMessageConstant.fbsMessage; | ||||||
|  | import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.*; | ||||||
|  | import static com.ruoyi.common.constants.ZbfMessageConstant.ZBF_LARGE_SETTLEMENT; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 分包商工资申请Service业务层处理 |  * 分包商工资申请Service业务层处理 | ||||||
|  * |  * | ||||||
| @ -30,6 +45,13 @@ import java.util.Map; | |||||||
| @Service | @Service | ||||||
| public class FbsWageApplicationServiceImpl extends ServicePlusImpl<FbsWageApplicationMapper, FbsWageApplication> implements IFbsWageApplicationService { | public class FbsWageApplicationServiceImpl extends ServicePlusImpl<FbsWageApplicationMapper, FbsWageApplication> implements IFbsWageApplicationService { | ||||||
|  |  | ||||||
|  | 	@Autowired | ||||||
|  | 	private IZbfMessageService zbfMessageService; | ||||||
|  | 	@Autowired | ||||||
|  | 	private IZbfProjectService projectService; | ||||||
|  | 	@Autowired | ||||||
|  | 	private IZbfProjectSubcontractingService projectSubcontractingService; | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public FbsWageApplication queryById(Long id){ |     public FbsWageApplication queryById(Long id){ | ||||||
|         return getById(id); |         return getById(id); | ||||||
| @ -72,10 +94,30 @@ public class FbsWageApplicationServiceImpl extends ServicePlusImpl<FbsWageApplic | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|  | 	@Transactional(rollbackFor = Exception.class) | ||||||
|     public Boolean insert(FbsWageApplication bo) { |     public Boolean insert(FbsWageApplication bo) { | ||||||
|         FbsWageApplication add = BeanUtil.toBean(bo, FbsWageApplication.class); |         FbsWageApplication add = BeanUtil.toBean(bo, FbsWageApplication.class); | ||||||
|         validEntityBeforeSave(add); |         validEntityBeforeSave(add); | ||||||
|         return save(add); | 		boolean save = save(add); | ||||||
|  |  | ||||||
|  | 		//分包商发消息到总包方 | ||||||
|  | 		HashMap<String, String> fmp = new HashMap<>(); | ||||||
|  | 		fmp.put("auditor", SecurityUtils.getUsername()); | ||||||
|  | 		fmp.put("amount", bo.getApplicantAmount().toString()); | ||||||
|  | 		Map<String, String> fmap = fbsMessage(fmp, FBS_TYPE_SETTLEMENT_TO_ZBF, true); | ||||||
|  | 		ZbfMessage zbfMessage =  new ZbfMessage() | ||||||
|  | 			.setSenderType(USERTYPE_FBS) | ||||||
|  | 			.setSenderId(SecurityUtils.getAppUserId()) | ||||||
|  | 			.setRecipientType(USERTYPE_ZBF) | ||||||
|  | 			.setRecipientId(add.getReviewerId()) | ||||||
|  | 			.setHeadline(fmap.get(HEADLINE)) | ||||||
|  | 			.setSubheading(fmap.get(SUBHEADING)) | ||||||
|  | 			.setTableId(add.getId()) | ||||||
|  | 			.setTableName(SqlHelper.table(FbsWageApplication.class).getTableName()) | ||||||
|  | 			.setMessageLargeType(ZBF_LARGE_SETTLEMENT) | ||||||
|  | 			.setIsOperation(OPERATION_NEED); | ||||||
|  | 		zbfMessageService.sendAMessage(zbfMessage); | ||||||
|  |         return save; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|  | |||||||
| @ -0,0 +1,79 @@ | |||||||
|  | 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_message | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-03-31 | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | @Data | ||||||
|  | @EqualsAndHashCode(callSuper = true) | ||||||
|  | @ApiModel("消息分页查询对象") | ||||||
|  | public class ZbfMessageQueryBo extends BaseEntity { | ||||||
|  |  | ||||||
|  | 	/** 分页大小 */ | ||||||
|  | 	@ApiModelProperty("分页大小") | ||||||
|  | 	private Integer pageSize; | ||||||
|  | 	/** 当前页数 */ | ||||||
|  | 	@ApiModelProperty("当前页数") | ||||||
|  | 	private Integer pageNum; | ||||||
|  | 	/** 排序列 */ | ||||||
|  | 	@ApiModelProperty("排序列") | ||||||
|  | 	private String orderByColumn; | ||||||
|  | 	/** 排序的方向desc或者asc */ | ||||||
|  | 	@ApiModelProperty(value = "排序的方向", example = "asc,desc") | ||||||
|  | 	private String isAsc; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	/** 发送类型(0系统 1务工者 2包工头 3分包商 4总包方) */ | ||||||
|  | 	@ApiModelProperty("发送类型(0系统 1务工者 2包工头 3分包商 4总包方)") | ||||||
|  | 	private String senderType; | ||||||
|  | 	/** 发送人 */ | ||||||
|  | 	@ApiModelProperty("发送人") | ||||||
|  | 	private Long senderId; | ||||||
|  | 	/** 接收类型(1务工者 2包工头 3分包商 4总包方) */ | ||||||
|  | 	@ApiModelProperty("接收类型(1务工者 2包工头 3分包商 4总包方)") | ||||||
|  | 	private String recipientType; | ||||||
|  | 	/** 接收人 */ | ||||||
|  | 	@ApiModelProperty("接收人") | ||||||
|  | 	private Long recipientId; | ||||||
|  | 	/** 标题 */ | ||||||
|  | 	@ApiModelProperty("标题") | ||||||
|  | 	private String headline; | ||||||
|  | 	/** 副标题 */ | ||||||
|  | 	@ApiModelProperty("副标题") | ||||||
|  | 	private String subheading; | ||||||
|  | 	/** 表ID */ | ||||||
|  | 	@ApiModelProperty("表ID") | ||||||
|  | 	private Long tableId; | ||||||
|  | 	/** 表名 */ | ||||||
|  | 	@ApiModelProperty("表名") | ||||||
|  | 	private String tableName; | ||||||
|  | 	/** 大类型(字典bgt_message_large_type) */ | ||||||
|  | 	@ApiModelProperty("大类型(字典bgt_message_large_type)") | ||||||
|  | 	private String messageLargeType; | ||||||
|  | 	/** 小类型(字典bgt_message_small_type) */ | ||||||
|  | 	@ApiModelProperty("小类型(字典bgt_message_small_type)") | ||||||
|  | 	private String messageSmallType; | ||||||
|  | 	/** 读状态(0未读 1已读) */ | ||||||
|  | 	@ApiModelProperty("读状态(0未读 1已读)") | ||||||
|  | 	private String readStatus; | ||||||
|  | 	/** 是否需要操作(0不需要 1需要 2已操作) */ | ||||||
|  | 	@ApiModelProperty("是否需要操作(0不需要 1需要 2已操作)") | ||||||
|  | 	private String isOperation; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,97 @@ | |||||||
|  | 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; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * APP总包方用户分页查询对象 zbf_user | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-03-31 | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | @Data | ||||||
|  | @EqualsAndHashCode(callSuper = true) | ||||||
|  | @ApiModel("APP总包方用户分页查询对象") | ||||||
|  | public class ZbfUserQueryBo 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; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,108 @@ | |||||||
|  | package com.ruoyi.zbf.controller; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Arrays; | ||||||
|  |  | ||||||
|  | import com.ruoyi.zbf.domain.ZbfMessage; | ||||||
|  | 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.ZbfMessageQueryBo; | ||||||
|  | import com.ruoyi.zbf.service.IZbfMessageService; | ||||||
|  | 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-31 | ||||||
|  |  */ | ||||||
|  | @Api(value = "消息控制器", tags = {"消息管理"}) | ||||||
|  | @RequiredArgsConstructor(onConstructor_ = @Autowired) | ||||||
|  | @RestController | ||||||
|  | @RequestMapping("/zbf/message") | ||||||
|  | public class ZbfMessageController extends BaseController { | ||||||
|  |  | ||||||
|  |     private final IZbfMessageService iZbfMessageService; | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询消息列表 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("查询消息列表") | ||||||
|  |     @PreAuthorize("@ss.hasPermi('zbf:message:list')") | ||||||
|  |     @GetMapping("/list") | ||||||
|  |     public TableDataInfo<ZbfMessage> list(@Validated ZbfMessageQueryBo bo) { | ||||||
|  |         return iZbfMessageService.queryPageList(bo); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 导出消息列表 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("导出消息列表") | ||||||
|  |     @PreAuthorize("@ss.hasPermi('zbf:message:export')") | ||||||
|  |     @Log(title = "消息", businessType = BusinessType.EXPORT) | ||||||
|  |     @GetMapping("/export") | ||||||
|  |     public AjaxResult<ZbfMessage> export(@Validated ZbfMessageQueryBo bo) { | ||||||
|  |         List<ZbfMessage> list = iZbfMessageService.queryList(bo); | ||||||
|  |         ExcelUtil<ZbfMessage> util = new ExcelUtil<ZbfMessage>(ZbfMessage.class); | ||||||
|  |         return util.exportExcel(list, "消息"); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 获取消息详细信息 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("获取消息详细信息") | ||||||
|  |     @PreAuthorize("@ss.hasPermi('zbf:message:query')") | ||||||
|  |     @GetMapping("/{id}") | ||||||
|  |     public AjaxResult<ZbfMessage> getInfo(@NotNull(message = "主键不能为空") | ||||||
|  |                                                   @PathVariable("id") Long id) { | ||||||
|  |         return AjaxResult.success(iZbfMessageService.queryById(id)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 新增消息 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("新增消息") | ||||||
|  |     @PreAuthorize("@ss.hasPermi('zbf:message:add')") | ||||||
|  |     @Log(title = "消息", businessType = BusinessType.INSERT) | ||||||
|  |     @RepeatSubmit | ||||||
|  |     @PostMapping() | ||||||
|  |     public AjaxResult<Void> add(@Validated @RequestBody ZbfMessage bo) { | ||||||
|  |         return toAjax(iZbfMessageService.insert(bo) ? 1 : 0); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 修改消息 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("修改消息") | ||||||
|  |     @PreAuthorize("@ss.hasPermi('zbf:message:edit')") | ||||||
|  |     @Log(title = "消息", businessType = BusinessType.UPDATE) | ||||||
|  |     @RepeatSubmit | ||||||
|  |     @PutMapping() | ||||||
|  |     public AjaxResult<Void> edit(@Validated @RequestBody ZbfMessage bo) { | ||||||
|  |         return toAjax(iZbfMessageService.update(bo) ? 1 : 0); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 删除消息 | ||||||
|  |      */ | ||||||
|  |     @ApiOperation("删除消息") | ||||||
|  |     @PreAuthorize("@ss.hasPermi('zbf:message:remove')") | ||||||
|  |     @Log(title = "消息" , businessType = BusinessType.DELETE) | ||||||
|  |     @DeleteMapping("/{ids}") | ||||||
|  |     public AjaxResult<Void> remove(@NotEmpty(message = "主键不能为空") | ||||||
|  |                                        @PathVariable Long[] ids) { | ||||||
|  |         return toAjax(iZbfMessageService.deleteWithValidByIds(Arrays.asList(ids), true) ? 1 : 0); | ||||||
|  |     } | ||||||
|  | } | ||||||
							
								
								
									
										133
									
								
								ruoyi-system/src/main/java/com/ruoyi/zbf/domain/ZbfMessage.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										133
									
								
								ruoyi-system/src/main/java/com/ruoyi/zbf/domain/ZbfMessage.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,133 @@ | |||||||
|  | package com.ruoyi.zbf.domain; | ||||||
|  |  | ||||||
|  | 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.util.Date; | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  | import java.time.LocalDateTime; | ||||||
|  | import java.time.LocalTime; | ||||||
|  | import java.time.LocalDate; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 消息对象 zbf_message | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-03-31 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @NoArgsConstructor | ||||||
|  | @Accessors(chain = true) | ||||||
|  | @TableName("zbf_message") | ||||||
|  | @ApiModel("消息视图对象") | ||||||
|  | public class ZbfMessage implements Serializable { | ||||||
|  |  | ||||||
|  |     private static final long serialVersionUID=1L; | ||||||
|  |  | ||||||
|  |     /** 主键自增ID */ | ||||||
|  |     @ApiModelProperty("主键自增ID") | ||||||
|  |     @TableId(value = "id") | ||||||
|  |     private Long id; | ||||||
|  |  | ||||||
|  |     /** 发送类型(0系统 1务工者 2包工头 3分包商 4总包方) */ | ||||||
|  |     @Excel(name = "发送类型" , readConverterExp = "0=系统,1=务工者,2=包工头,3=分包商,4=总包方") | ||||||
|  |     @ApiModelProperty("发送类型(0系统 1务工者 2包工头 3分包商 4总包方)") | ||||||
|  |     private String senderType; | ||||||
|  |  | ||||||
|  |     /** 发送人 */ | ||||||
|  |     @Excel(name = "发送人") | ||||||
|  |     @ApiModelProperty("发送人") | ||||||
|  |     private Long senderId; | ||||||
|  |  | ||||||
|  |     /** 接收类型(1务工者 2包工头 3分包商 4总包方) */ | ||||||
|  |     @Excel(name = "接收类型" , readConverterExp = "1=务工者,2=包工头,3=分包商,4=总包方") | ||||||
|  |     @ApiModelProperty("接收类型(1务工者 2包工头 3分包商 4总包方)") | ||||||
|  |     private String recipientType; | ||||||
|  |  | ||||||
|  |     /** 接收人 */ | ||||||
|  |     @Excel(name = "接收人") | ||||||
|  |     @ApiModelProperty("接收人") | ||||||
|  |     private Long recipientId; | ||||||
|  |  | ||||||
|  |     /** 标题 */ | ||||||
|  |     @Excel(name = "标题") | ||||||
|  |     @ApiModelProperty("标题") | ||||||
|  |     private String headline; | ||||||
|  |  | ||||||
|  |     /** 副标题 */ | ||||||
|  |     @Excel(name = "副标题") | ||||||
|  |     @ApiModelProperty("副标题") | ||||||
|  |     private String subheading; | ||||||
|  |  | ||||||
|  |     /** 表ID */ | ||||||
|  |     @Excel(name = "表ID") | ||||||
|  |     @ApiModelProperty("表ID") | ||||||
|  |     private Long tableId; | ||||||
|  |  | ||||||
|  |     /** 表名 */ | ||||||
|  |     @Excel(name = "表名") | ||||||
|  |     @ApiModelProperty("表名") | ||||||
|  |     private String tableName; | ||||||
|  |  | ||||||
|  |     /** 大类型(字典bgt_message_large_type) */ | ||||||
|  |     @Excel(name = "大类型" , readConverterExp = "字=典bgt_message_large_type") | ||||||
|  |     @ApiModelProperty("大类型(字典bgt_message_large_type)") | ||||||
|  |     private String messageLargeType; | ||||||
|  |  | ||||||
|  |     /** 小类型(字典bgt_message_small_type) */ | ||||||
|  |     @Excel(name = "小类型" , readConverterExp = "字=典bgt_message_small_type") | ||||||
|  |     @ApiModelProperty("小类型(字典bgt_message_small_type)") | ||||||
|  |     private String messageSmallType; | ||||||
|  |  | ||||||
|  |     /** 读状态(0未读 1已读) */ | ||||||
|  |     @Excel(name = "读状态" , readConverterExp = "0=未读,1=已读") | ||||||
|  |     @ApiModelProperty("读状态(0未读 1已读)") | ||||||
|  |     private String readStatus; | ||||||
|  |  | ||||||
|  |     /** 删除标志(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; | ||||||
|  |  | ||||||
|  |     /** 是否需要操作(0不需要 1需要 2已操作) */ | ||||||
|  |     @Excel(name = "是否需要操作" , readConverterExp = "0=不需要,1=需要,2=已操作") | ||||||
|  |     @ApiModelProperty("是否需要操作(0不需要 1需要 2已操作)") | ||||||
|  |     private String isOperation; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,48 @@ | |||||||
|  | package com.ruoyi.zbf.domain.dto; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.experimental.Accessors; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 总包方项目对象 zbf_project | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-02-17 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @Accessors(chain = true) | ||||||
|  | @ApiModel("总包方项目新增视图对象") | ||||||
|  | public class ZbfProjectAddDTO { | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("单位名称") | ||||||
|  |     private String unitName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("统一社会信用代码") | ||||||
|  |     private String creditCode; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("项目名称") | ||||||
|  |     private String projectName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("项目图片") | ||||||
|  |     private String projectImg; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("项目地址") | ||||||
|  |     private String projectAddress; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("联系人") | ||||||
|  |     private String contactPerson; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("联系电话") | ||||||
|  |     private String contactPhone; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("备注") | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("标段列表") | ||||||
|  | 	private List<ZbfProjectSectionAddDTO> sectionList; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,32 @@ | |||||||
|  | package com.ruoyi.zbf.domain.dto; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.experimental.Accessors; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 总包方项目对象 zbf_project | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-02-17 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @Accessors(chain = true) | ||||||
|  | @ApiModel("总包方项目列表视图对象") | ||||||
|  | public class ZbfProjectListDTO { | ||||||
|  |  | ||||||
|  | 	/** 分页大小 */ | ||||||
|  | 	@ApiModelProperty("分页大小") | ||||||
|  | 	private Integer pageSize; | ||||||
|  | 	/** 当前页数 */ | ||||||
|  | 	@ApiModelProperty("当前页数") | ||||||
|  | 	private Integer pageNum; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("项目名称") | ||||||
|  |     private String projectName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目状态(0-未开工,1-已开工,2已竣工,3已停工)") | ||||||
|  | 	private String projectStatus; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,30 @@ | |||||||
|  | package com.ruoyi.zbf.domain.dto; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.experimental.Accessors; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 总包方项目标段对象 zbf_project_section | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-02-17 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @Accessors(chain = true) | ||||||
|  | @ApiModel("总包方项目标段新增视图对象") | ||||||
|  | public class ZbfProjectSectionAddDTO { | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("标段名称") | ||||||
|  |     private String sectionName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("标段描述") | ||||||
|  |     private String sectionDescribe; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("分包列表") | ||||||
|  | 	private List<ZbfProjectSubcontractingAddDTO> subList; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,37 @@ | |||||||
|  | package com.ruoyi.zbf.domain.dto; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  | import lombok.experimental.Accessors; | ||||||
|  |  | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 总包方项目分包对象 zbf_project_subcontracting | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-02-17 | ||||||
|  |  */ | ||||||
|  | @Data | ||||||
|  | @Accessors(chain = true) | ||||||
|  | @ApiModel("总包方项目分包新增视图对象") | ||||||
|  | public class ZbfProjectSubcontractingAddDTO { | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("分包主题") | ||||||
|  |     private String subName; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("分包描述") | ||||||
|  |     private String subDescribe; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("分包金额") | ||||||
|  |     private BigDecimal subAmount; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("资质要求") | ||||||
|  |     private String qualification; | ||||||
|  |  | ||||||
|  |     @ApiModelProperty("备注") | ||||||
|  |     private String remark; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,22 @@ | |||||||
|  | package com.ruoyi.zbf.domain.vo; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | @Data | ||||||
|  | @ApiModel("包工头项目统计") | ||||||
|  | public class ZbfProjectCountVO { | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目总数") | ||||||
|  | 	private Integer allCount; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("在建总数") | ||||||
|  | 	private Integer startCount; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("完成总数") | ||||||
|  | 	private Integer completeCount; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,34 @@ | |||||||
|  | package com.ruoyi.zbf.domain.vo; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | @Data | ||||||
|  | @ApiModel("分包商项目列表") | ||||||
|  | public class ZbfProjectListVO { | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("主键ID") | ||||||
|  | 	private Long id; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目名称") | ||||||
|  | 	private String projectName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("单位名称") | ||||||
|  | 	private String unitName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目地址") | ||||||
|  | 	private String projectAddress; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目图片") | ||||||
|  | 	private String projectImg; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目状态(0-未开工,1-已开工,2已竣工,3已停工)") | ||||||
|  | 	private String projectStatus; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("标段列表") | ||||||
|  | 	private List<ZbfProjectSectionListVO> sectionList; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,29 @@ | |||||||
|  | package com.ruoyi.zbf.domain.vo; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | @Data | ||||||
|  | @ApiModel("分包商项目标段列表") | ||||||
|  | public class ZbfProjectSectionListVO { | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("主键ID") | ||||||
|  | 	private Long id; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目ID") | ||||||
|  | 	private Long projectId; | ||||||
|  | 	/** 标段名称 */ | ||||||
|  | 	@ApiModelProperty("标段名称") | ||||||
|  | 	private String sectionName; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目地址") | ||||||
|  | 	private String projectAddress; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("分包列表") | ||||||
|  | 	private List<ZbfProjectSubcontractingListVO> subList; | ||||||
|  |  | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,42 @@ | |||||||
|  | package com.ruoyi.zbf.domain.vo; | ||||||
|  |  | ||||||
|  | import io.swagger.annotations.ApiModel; | ||||||
|  | import io.swagger.annotations.ApiModelProperty; | ||||||
|  | import lombok.Data; | ||||||
|  |  | ||||||
|  | import java.math.BigDecimal; | ||||||
|  |  | ||||||
|  | @Data | ||||||
|  | @ApiModel("分包商项目分包列表") | ||||||
|  | public class ZbfProjectSubcontractingListVO { | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("主键ID") | ||||||
|  | 	private Long id; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目ID") | ||||||
|  | 	private Long projectId; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("项目地址") | ||||||
|  | 	private String projectAddress; | ||||||
|  |  | ||||||
|  | 	/** 标段ID */ | ||||||
|  | 	@ApiModelProperty("标段ID") | ||||||
|  | 	private Long sectionId; | ||||||
|  | 	/** 分包主题 */ | ||||||
|  | 	@ApiModelProperty("分包主题") | ||||||
|  | 	private String subName; | ||||||
|  | 	/** 分包描述 */ | ||||||
|  | 	@ApiModelProperty("分包描述") | ||||||
|  | 	private String subDescribe; | ||||||
|  | 	/** 分包金额 */ | ||||||
|  | 	@ApiModelProperty("分包金额") | ||||||
|  | 	private BigDecimal subAmount; | ||||||
|  | 	/** 资质要求 */ | ||||||
|  | 	@ApiModelProperty("资质要求") | ||||||
|  | 	private String qualification; | ||||||
|  |  | ||||||
|  | 	@ApiModelProperty("申请状态(0=申请中,1=已同意,2=已拒绝,3=已取消)") | ||||||
|  | 	private String applyStatus; | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,18 @@ | |||||||
|  | package com.ruoyi.zbf.mapper; | ||||||
|  |  | ||||||
|  | import com.ruoyi.zbf.domain.ZbfMessage; | ||||||
|  | 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-31 | ||||||
|  |  */ | ||||||
|  | // 如使需切换数据源 请勿使用缓存 会造成数据不一致现象 | ||||||
|  | @CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) | ||||||
|  | public interface ZbfMessageMapper extends BaseMapperPlus<ZbfMessage> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -31,4 +31,18 @@ public interface ZbfProjectMapper extends BaseMapperPlus<ZbfProject> { | |||||||
|  |  | ||||||
| 	// 查询分包商已竣工的项目列表 | 	// 查询分包商已竣工的项目列表 | ||||||
| 	Page<FbsProjectListVO> completeList(@Param("page") Page<FbsProjectListDTO> page, @Param("dto") FbsProjectListDTO dto); | 	Page<FbsProjectListVO> completeList(@Param("page") Page<FbsProjectListDTO> page, @Param("dto") FbsProjectListDTO dto); | ||||||
|  |  | ||||||
|  | 	// 查询分包商项目切换列表 | ||||||
|  | 	Page<FbsProjectListVO> switchList(@Param("page") Page<FbsProjectListDTO> page, @Param("dto") FbsProjectListDTO dto); | ||||||
|  |  | ||||||
|  | 	// 申请中的项目列表统计 | ||||||
|  | 	Integer applyCount(@Param("fbsUserId") Long fbsUserId); | ||||||
|  |  | ||||||
|  | 	// 已加入的项目列表统计 | ||||||
|  | 	Integer joinCount(@Param("fbsUserId") Long fbsUserId); | ||||||
|  |  | ||||||
|  | 	// 已竣工的项目列表统计 | ||||||
|  | 	Integer completeCount(@Param("fbsUserId") Long fbsUserId); | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,18 @@ | |||||||
|  | package com.ruoyi.zbf.mapper; | ||||||
|  |  | ||||||
|  | import com.ruoyi.common.core.domain.entity.ZbfUser; | ||||||
|  | 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-31 | ||||||
|  |  */ | ||||||
|  | // 如使需切换数据源 请勿使用缓存 会造成数据不一致现象 | ||||||
|  | @CacheNamespace(implementation = MybatisPlusRedisCache.class, eviction = MybatisPlusRedisCache.class) | ||||||
|  | public interface ZbfUserMapper extends BaseMapperPlus<ZbfUser> { | ||||||
|  |  | ||||||
|  | } | ||||||
| @ -0,0 +1,60 @@ | |||||||
|  | package com.ruoyi.zbf.service; | ||||||
|  |  | ||||||
|  | import com.ruoyi.common.core.mybatisplus.core.IServicePlus; | ||||||
|  | import com.ruoyi.common.core.page.TableDataInfo; | ||||||
|  | import com.ruoyi.zbf.bo.ZbfMessageQueryBo; | ||||||
|  | import com.ruoyi.zbf.domain.ZbfMessage; | ||||||
|  |  | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 消息Service接口 | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-03-31 | ||||||
|  |  */ | ||||||
|  | public interface IZbfMessageService extends IServicePlus<ZbfMessage> { | ||||||
|  |     /** | ||||||
|  |      * 查询单个 | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     ZbfMessage queryById(Long id); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询列表 | ||||||
|  |      */ | ||||||
|  |     TableDataInfo<ZbfMessage> queryPageList(ZbfMessageQueryBo bo); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询列表 | ||||||
|  |      */ | ||||||
|  |     List<ZbfMessage> queryList(ZbfMessageQueryBo bo); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 根据新增业务对象插入消息 | ||||||
|  |      * @param bo 消息新增业务对象 | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     Boolean insert(ZbfMessage bo); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 根据编辑业务对象修改消息 | ||||||
|  |      * @param bo 消息编辑业务对象 | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     Boolean update(ZbfMessage bo); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 校验并删除数据 | ||||||
|  |      * @param ids 主键集合 | ||||||
|  |      * @param isValid 是否校验,true-删除前校验,false-不校验 | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 发送消息 | ||||||
|  | 	 */ | ||||||
|  | 	Boolean sendAMessage(ZbfMessage bo); | ||||||
|  | } | ||||||
| @ -5,9 +5,14 @@ import com.ruoyi.common.core.mybatisplus.core.IServicePlus; | |||||||
| import com.ruoyi.common.core.page.TableDataInfo; | import com.ruoyi.common.core.page.TableDataInfo; | ||||||
| import com.ruoyi.fbs.domain.dto.FbsProjectListDTO; | import com.ruoyi.fbs.domain.dto.FbsProjectListDTO; | ||||||
| import com.ruoyi.fbs.domain.vo.FbsProjectDetailVO; | import com.ruoyi.fbs.domain.vo.FbsProjectDetailVO; | ||||||
|  | import com.ruoyi.fbs.domain.vo.FbsProjectListCountVO; | ||||||
| import com.ruoyi.fbs.domain.vo.FbsProjectListVO; | import com.ruoyi.fbs.domain.vo.FbsProjectListVO; | ||||||
| import com.ruoyi.zbf.bo.ZbfProjectQueryBo; | import com.ruoyi.zbf.bo.ZbfProjectQueryBo; | ||||||
| import com.ruoyi.zbf.domain.ZbfProject; | import com.ruoyi.zbf.domain.ZbfProject; | ||||||
|  | import com.ruoyi.zbf.domain.dto.ZbfProjectAddDTO; | ||||||
|  | import com.ruoyi.zbf.domain.dto.ZbfProjectListDTO; | ||||||
|  | import com.ruoyi.zbf.domain.vo.ZbfProjectCountVO; | ||||||
|  | import com.ruoyi.zbf.domain.vo.ZbfProjectListVO; | ||||||
|  |  | ||||||
| import java.util.Collection; | import java.util.Collection; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| @ -77,6 +82,16 @@ public interface IZbfProjectService extends IServicePlus<ZbfProject> { | |||||||
| 	 */ | 	 */ | ||||||
| 	TableDataInfo<FbsProjectListVO> completeList(FbsProjectListDTO dto); | 	TableDataInfo<FbsProjectListVO> completeList(FbsProjectListDTO dto); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 分包商查询我的项目列表-项目切换 | ||||||
|  | 	 */ | ||||||
|  | 	TableDataInfo<FbsProjectListVO> switchList(FbsProjectListDTO dto); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 分包商查询自己的项目列表数量统计 | ||||||
|  | 	 */ | ||||||
|  | 	FbsProjectListCountVO myListCount(); | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * 分包商查看可报名项目详情 | 	 * 分包商查看可报名项目详情 | ||||||
| 	 */ | 	 */ | ||||||
| @ -92,4 +107,18 @@ public interface IZbfProjectService extends IServicePlus<ZbfProject> { | |||||||
| 	 */ | 	 */ | ||||||
| 	FbsProjectDetailVO joinOrCompleteDetail(Long projectId); | 	FbsProjectDetailVO joinOrCompleteDetail(Long projectId); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 总包方新增项目 | ||||||
|  | 	 */ | ||||||
|  | 	Boolean add(ZbfProjectAddDTO dto); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 总包方查询我的项目列表 | ||||||
|  | 	 */ | ||||||
|  | 	TableDataInfo<ZbfProjectListVO> queryZbfList(ZbfProjectListDTO dto); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 总包方查询自建项目统计 | ||||||
|  | 	 */ | ||||||
|  | 	ZbfProjectCountVO projectCount(); | ||||||
| } | } | ||||||
|  | |||||||
| @ -52,4 +52,9 @@ public interface IZbfProjectSubcontractingApplyService extends IServicePlus<ZbfP | |||||||
|      * @return |      * @return | ||||||
|      */ |      */ | ||||||
|     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); |     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 总包方选择分包商 | ||||||
|  | 	 */ | ||||||
|  | 	Boolean choose(Long id); | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,60 @@ | |||||||
|  | package com.ruoyi.zbf.service; | ||||||
|  |  | ||||||
|  | import com.ruoyi.common.core.domain.entity.ZbfUser; | ||||||
|  | import com.ruoyi.common.core.mybatisplus.core.IServicePlus; | ||||||
|  | import com.ruoyi.common.core.page.TableDataInfo; | ||||||
|  | import com.ruoyi.zbf.bo.ZbfUserQueryBo; | ||||||
|  |  | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * APP总包方用户Service接口 | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-03-31 | ||||||
|  |  */ | ||||||
|  | public interface IZbfUserService extends IServicePlus<ZbfUser> { | ||||||
|  |     /** | ||||||
|  |      * 查询单个 | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     ZbfUser queryById(Long id); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询列表 | ||||||
|  |      */ | ||||||
|  |     TableDataInfo<ZbfUser> queryPageList(ZbfUserQueryBo bo); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 查询列表 | ||||||
|  |      */ | ||||||
|  |     List<ZbfUser> queryList(ZbfUserQueryBo bo); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 根据新增业务对象插入APP总包方用户 | ||||||
|  |      * @param bo APP总包方用户新增业务对象 | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     Boolean insert(ZbfUser bo); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 根据编辑业务对象修改APP总包方用户 | ||||||
|  |      * @param bo APP总包方用户编辑业务对象 | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     Boolean update(ZbfUser bo); | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 校验并删除数据 | ||||||
|  |      * @param ids 主键集合 | ||||||
|  |      * @param isValid 是否校验,true-删除前校验,false-不校验 | ||||||
|  |      * @return | ||||||
|  |      */ | ||||||
|  |     Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid); | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * 通过电话查询用户 | ||||||
|  | 	 */ | ||||||
|  | 	ZbfUser selectUserByPhone(String phone); | ||||||
|  | } | ||||||
| @ -0,0 +1,99 @@ | |||||||
|  | package com.ruoyi.zbf.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.utils.PageUtils; | ||||||
|  | import com.ruoyi.zbf.bo.ZbfMessageQueryBo; | ||||||
|  | import com.ruoyi.zbf.domain.ZbfMessage; | ||||||
|  | import com.ruoyi.zbf.mapper.ZbfMessageMapper; | ||||||
|  | import com.ruoyi.zbf.service.IZbfMessageService; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 消息Service业务层处理 | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-03-31 | ||||||
|  |  */ | ||||||
|  | @Service | ||||||
|  | public class ZbfMessageServiceImpl extends ServicePlusImpl<ZbfMessageMapper, ZbfMessage> implements IZbfMessageService { | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public ZbfMessage queryById(Long id){ | ||||||
|  |         return getById(id); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public TableDataInfo<ZbfMessage> queryPageList(ZbfMessageQueryBo bo) { | ||||||
|  |         Page<ZbfMessage> result = page(PageUtils.buildPage(), buildQueryWrapper(bo)); | ||||||
|  |         return PageUtils.buildDataInfo(result); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public List<ZbfMessage> queryList(ZbfMessageQueryBo bo) { | ||||||
|  |         return list(buildQueryWrapper(bo)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private LambdaQueryWrapper<ZbfMessage> buildQueryWrapper(ZbfMessageQueryBo bo) { | ||||||
|  |         Map<String, Object> params = bo.getParams(); | ||||||
|  |         LambdaQueryWrapper<ZbfMessage> lqw = Wrappers.lambdaQuery(); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getSenderType()), ZbfMessage::getSenderType, bo.getSenderType()); | ||||||
|  |         lqw.eq(bo.getSenderId() != null, ZbfMessage::getSenderId, bo.getSenderId()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getRecipientType()), ZbfMessage::getRecipientType, bo.getRecipientType()); | ||||||
|  |         lqw.eq(bo.getRecipientId() != null, ZbfMessage::getRecipientId, bo.getRecipientId()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getHeadline()), ZbfMessage::getHeadline, bo.getHeadline()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getSubheading()), ZbfMessage::getSubheading, bo.getSubheading()); | ||||||
|  |         lqw.eq(bo.getTableId() != null, ZbfMessage::getTableId, bo.getTableId()); | ||||||
|  |         lqw.like(StrUtil.isNotBlank(bo.getTableName()), ZbfMessage::getTableName, bo.getTableName()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getMessageLargeType()), ZbfMessage::getMessageLargeType, bo.getMessageLargeType()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getMessageSmallType()), ZbfMessage::getMessageSmallType, bo.getMessageSmallType()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getReadStatus()), ZbfMessage::getReadStatus, bo.getReadStatus()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getIsOperation()), ZbfMessage::getIsOperation, bo.getIsOperation()); | ||||||
|  |         return lqw; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Boolean insert(ZbfMessage bo) { | ||||||
|  |         ZbfMessage add = BeanUtil.toBean(bo, ZbfMessage.class); | ||||||
|  |         validEntityBeforeSave(add); | ||||||
|  |         return save(add); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Boolean update(ZbfMessage bo) { | ||||||
|  |         ZbfMessage update = BeanUtil.toBean(bo, ZbfMessage.class); | ||||||
|  |         validEntityBeforeSave(update); | ||||||
|  |         return updateById(update); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 保存前的数据校验 | ||||||
|  |      * | ||||||
|  |      * @param entity 实体类数据 | ||||||
|  |      */ | ||||||
|  |     private void validEntityBeforeSave(ZbfMessage entity){ | ||||||
|  |         //TODO 做一些数据校验,如唯一约束 | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | ||||||
|  |         if(isValid){ | ||||||
|  |             //TODO 做一些业务上的校验,判断是否需要校验 | ||||||
|  |         } | ||||||
|  |         return removeByIds(ids); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	public Boolean sendAMessage(ZbfMessage bo) { | ||||||
|  | 		return save(bo); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @ -113,6 +113,7 @@ public class ZbfProjectSectionServiceImpl extends ServicePlusImpl<ZbfProjectSect | |||||||
| 			for (ZbfProjectSubcontracting sub : subList){ | 			for (ZbfProjectSubcontracting sub : subList){ | ||||||
| 				FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); | 				FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); | ||||||
| 				BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); | 				BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); | ||||||
|  | 				fbsProjectSubcontractingListVO.setProjectAddress(sectionListVO.getProjectAddress()); | ||||||
| 				subListVO.add(fbsProjectSubcontractingListVO); | 				subListVO.add(fbsProjectSubcontractingListVO); | ||||||
| 			} | 			} | ||||||
| 			sectionListVO.setSubList(subListVO); | 			sectionListVO.setSubList(subListVO); | ||||||
|  | |||||||
| @ -8,19 +8,25 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; | |||||||
| import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
| import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | ||||||
| import com.ruoyi.common.core.page.TableDataInfo; | import com.ruoyi.common.core.page.TableDataInfo; | ||||||
|  | import com.ruoyi.common.enums.ProjectStatus; | ||||||
| import com.ruoyi.common.enums.SubcontractingApplyStatus; | import com.ruoyi.common.enums.SubcontractingApplyStatus; | ||||||
| import com.ruoyi.common.utils.PageUtils; | import com.ruoyi.common.utils.PageUtils; | ||||||
| import com.ruoyi.common.utils.SecurityUtils; | import com.ruoyi.common.utils.SecurityUtils; | ||||||
| import com.ruoyi.fbs.domain.dto.FbsProjectListDTO; | import com.ruoyi.fbs.domain.dto.FbsProjectListDTO; | ||||||
| import com.ruoyi.fbs.domain.vo.FbsProjectDetailVO; | import com.ruoyi.fbs.domain.vo.*; | ||||||
| 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.bo.ZbfProjectQueryBo; | ||||||
| import com.ruoyi.zbf.domain.ZbfProject; | import com.ruoyi.zbf.domain.ZbfProject; | ||||||
| import com.ruoyi.zbf.domain.ZbfProjectSection; | import com.ruoyi.zbf.domain.ZbfProjectSection; | ||||||
| import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; | import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; | ||||||
| import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply; | import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply; | ||||||
|  | import com.ruoyi.zbf.domain.dto.ZbfProjectAddDTO; | ||||||
|  | import com.ruoyi.zbf.domain.dto.ZbfProjectListDTO; | ||||||
|  | import com.ruoyi.zbf.domain.dto.ZbfProjectSectionAddDTO; | ||||||
|  | import com.ruoyi.zbf.domain.dto.ZbfProjectSubcontractingAddDTO; | ||||||
|  | import com.ruoyi.zbf.domain.vo.ZbfProjectCountVO; | ||||||
|  | import com.ruoyi.zbf.domain.vo.ZbfProjectListVO; | ||||||
|  | import com.ruoyi.zbf.domain.vo.ZbfProjectSectionListVO; | ||||||
|  | import com.ruoyi.zbf.domain.vo.ZbfProjectSubcontractingListVO; | ||||||
| import com.ruoyi.zbf.mapper.ZbfProjectMapper; | import com.ruoyi.zbf.mapper.ZbfProjectMapper; | ||||||
| import com.ruoyi.zbf.service.IZbfProjectSectionService; | import com.ruoyi.zbf.service.IZbfProjectSectionService; | ||||||
| import com.ruoyi.zbf.service.IZbfProjectService; | import com.ruoyi.zbf.service.IZbfProjectService; | ||||||
| @ -28,11 +34,9 @@ import com.ruoyi.zbf.service.IZbfProjectSubcontractingApplyService; | |||||||
| import com.ruoyi.zbf.service.IZbfProjectSubcontractingService; | import com.ruoyi.zbf.service.IZbfProjectSubcontractingService; | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|  | import org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
| import java.util.ArrayList; | import java.util.*; | ||||||
| import java.util.Collection; |  | ||||||
| import java.util.List; |  | ||||||
| import java.util.Map; |  | ||||||
| import java.util.stream.Collectors; | import java.util.stream.Collectors; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @ -52,7 +56,7 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf | |||||||
| 	private IZbfProjectSubcontractingApplyService zbfProjectSubcontractingApplyService; | 	private IZbfProjectSubcontractingApplyService zbfProjectSubcontractingApplyService; | ||||||
|  |  | ||||||
| 	@Override | 	@Override | ||||||
|     public ZbfProject queryById(Long id){ | 	public ZbfProject queryById(Long id) { | ||||||
| 		return getById(id); | 		return getById(id); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @ -100,13 +104,13 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf | |||||||
| 	 * | 	 * | ||||||
| 	 * @param entity 实体类数据 | 	 * @param entity 实体类数据 | ||||||
| 	 */ | 	 */ | ||||||
|     private void validEntityBeforeSave(ZbfProject entity){ | 	private void validEntityBeforeSave(ZbfProject entity) { | ||||||
| 		//TODO 做一些数据校验,如唯一约束 | 		//TODO 做一些数据校验,如唯一约束 | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	@Override | 	@Override | ||||||
| 	public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | 	public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | ||||||
|         if(isValid){ | 		if (isValid) { | ||||||
| 			//TODO 做一些业务上的校验,判断是否需要校验 | 			//TODO 做一些业务上的校验,判断是否需要校验 | ||||||
| 		} | 		} | ||||||
| 		return removeByIds(ids); | 		return removeByIds(ids); | ||||||
| @ -124,31 +128,41 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf | |||||||
| 			Long projectId = fbsProjectListVO.getId(); | 			Long projectId = fbsProjectListVO.getId(); | ||||||
| 			//查询项目下的所有申请 | 			//查询项目下的所有申请 | ||||||
| 			List<ZbfProjectSubcontractingApply> applyList = zbfProjectSubcontractingApplyService.list(Wrappers.<ZbfProjectSubcontractingApply>lambdaQuery() | 			List<ZbfProjectSubcontractingApply> applyList = zbfProjectSubcontractingApplyService.list(Wrappers.<ZbfProjectSubcontractingApply>lambdaQuery() | ||||||
| 				.eq(ZbfProjectSubcontractingApply::getProjectId, projectId).eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId())); | 				.eq(ZbfProjectSubcontractingApply::getProjectId, projectId) | ||||||
| 			List<Long> applyIds = applyList.stream().map(ZbfProjectSubcontractingApply::getSubId).collect(Collectors.toList()); | 				.eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId())); | ||||||
|  | 			HashMap<Long, String> map = applyList.stream() | ||||||
|  | 				.collect(Collectors.toMap( | ||||||
|  | 					ZbfProjectSubcontractingApply::getSubId, | ||||||
|  | 					ZbfProjectSubcontractingApply::getApplyStatus, | ||||||
|  | 					(existing, replacement) -> replacement, | ||||||
|  | 					HashMap::new | ||||||
|  | 				)); | ||||||
|  |  | ||||||
| 			//标段处理 | 			//标段处理 | ||||||
| 			List<FbsProjectSectionListVO> sectionListVO = new ArrayList<>(); | 			List<FbsProjectSectionListVO> sectionListVO = new ArrayList<>(); | ||||||
| 			//查询项目下的所有标段 | 			//查询项目下的所有标段 | ||||||
| 			List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery() | 			List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery() | ||||||
| 				.eq(ZbfProjectSection::getProjectId, projectId)); | 				.eq(ZbfProjectSection::getProjectId, projectId)); | ||||||
| 			for (ZbfProjectSection zbfProjectSection : sectionList){ | 			for (ZbfProjectSection zbfProjectSection : sectionList) { | ||||||
| 				//分包处理 | 				//分包处理 | ||||||
| 				List<FbsProjectSubcontractingListVO> subListVO = new ArrayList<>(); | 				List<FbsProjectSubcontractingListVO> subListVO = new ArrayList<>(); | ||||||
| 				//查询标段下的所有未承接的分包 | 				//查询标段下的所有的分包 | ||||||
| 				List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery() | 				List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery() | ||||||
| 						.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()) | 						.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()) | ||||||
| 					.isNull(ZbfProjectSubcontracting::getUserId)); | 					//.isNull(ZbfProjectSubcontracting::getUserId) | ||||||
|  | 				); | ||||||
| 				//排除掉已申请的分包 | 				//排除掉已申请的分包 | ||||||
| 				for (ZbfProjectSubcontracting sub : subList){ | 				for (ZbfProjectSubcontracting sub : subList) { | ||||||
| 					if(applyIds.contains(sub.getId())){ |  | ||||||
| 						continue; |  | ||||||
| 					} |  | ||||||
| 					FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); | 					FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); | ||||||
| 					BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); | 					BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); | ||||||
|  | 					String applyStatus = map.get(sub.getId()); | ||||||
|  | 					fbsProjectSubcontractingListVO.setApplyStatus(applyStatus); | ||||||
|  | 					if (sub.getUserId() != null && !sub.getUserId().equals(SecurityUtils.getAppUserId())) { | ||||||
|  | 						fbsProjectSubcontractingListVO.setApplyStatus(SubcontractingApplyStatus.CHOOSE.getCode()); | ||||||
|  | 					} | ||||||
| 					subListVO.add(fbsProjectSubcontractingListVO); | 					subListVO.add(fbsProjectSubcontractingListVO); | ||||||
| 				} | 				} | ||||||
| 				if(CollectionUtil.isEmpty(subListVO)){ | 				if (CollectionUtil.isEmpty(subListVO)) { | ||||||
| 					continue; | 					continue; | ||||||
| 				} | 				} | ||||||
| 				FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); | 				FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); | ||||||
| @ -185,22 +199,22 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf | |||||||
| 			//查询项目下的所有标段 | 			//查询项目下的所有标段 | ||||||
| 			List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery() | 			List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery() | ||||||
| 				.eq(ZbfProjectSection::getProjectId, projectId)); | 				.eq(ZbfProjectSection::getProjectId, projectId)); | ||||||
| 			for (ZbfProjectSection zbfProjectSection : sectionList){ | 			for (ZbfProjectSection zbfProjectSection : sectionList) { | ||||||
| 				//分包处理 | 				//分包处理 | ||||||
| 				List<FbsProjectSubcontractingListVO> subListVO = new ArrayList<>(); | 				List<FbsProjectSubcontractingListVO> subListVO = new ArrayList<>(); | ||||||
| 				//查询标段下的所有的分包 | 				//查询标段下的所有的分包 | ||||||
| 				List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery() | 				List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery() | ||||||
| 					.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId())); | 					.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId())); | ||||||
| 				//排除掉未申请和已同意的分包 | 				//排除掉未申请和已同意的分包 | ||||||
| 				for (ZbfProjectSubcontracting sub : subList){ | 				for (ZbfProjectSubcontracting sub : subList) { | ||||||
| 					if(!applyIds.contains(sub.getId())){ | 					if (!applyIds.contains(sub.getId())) { | ||||||
| 						continue; | 						continue; | ||||||
| 					} | 					} | ||||||
| 					FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); | 					FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); | ||||||
| 					BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); | 					BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); | ||||||
| 					subListVO.add(fbsProjectSubcontractingListVO); | 					subListVO.add(fbsProjectSubcontractingListVO); | ||||||
| 				} | 				} | ||||||
| 				if(CollectionUtil.isEmpty(subListVO)){ | 				if (CollectionUtil.isEmpty(subListVO)) { | ||||||
| 					continue; | 					continue; | ||||||
| 				} | 				} | ||||||
| 				FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); | 				FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); | ||||||
| @ -244,6 +258,26 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf | |||||||
| 		return PageUtils.buildDataInfo(queryVOPage); | 		return PageUtils.buildDataInfo(queryVOPage); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	public TableDataInfo<FbsProjectListVO> switchList(FbsProjectListDTO dto) { | ||||||
|  | 		Page<FbsProjectListDTO> queryDTOPage = new Page<>(); | ||||||
|  | 		queryDTOPage.setCurrent(dto.getPageNum()); | ||||||
|  | 		queryDTOPage.setSize(dto.getPageSize()); | ||||||
|  | 		dto.setFbsUserId(SecurityUtils.getAppUserId()); | ||||||
|  | 		Page<FbsProjectListVO> queryVOPage = baseMapper.switchList(queryDTOPage, dto); | ||||||
|  | 		return PageUtils.buildDataInfo(queryVOPage); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	public FbsProjectListCountVO myListCount() { | ||||||
|  | 		FbsProjectListCountVO fbsProjectListCountVO = new FbsProjectListCountVO(); | ||||||
|  | 		Long appUserId = SecurityUtils.getAppUserId(); | ||||||
|  | 		fbsProjectListCountVO.setApplyCount(baseMapper.applyCount(appUserId)); | ||||||
|  | 		fbsProjectListCountVO.setJoinCount(baseMapper.joinCount(appUserId)); | ||||||
|  | 		fbsProjectListCountVO.setCompleteCount(baseMapper.completeCount(appUserId)); | ||||||
|  | 		return fbsProjectListCountVO; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	@Override | 	@Override | ||||||
| 	public FbsProjectDetailVO signUpDetail(Long projectId) { | 	public FbsProjectDetailVO signUpDetail(Long projectId) { | ||||||
| 		ZbfProject byId = getById(projectId); | 		ZbfProject byId = getById(projectId); | ||||||
| @ -251,31 +285,41 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf | |||||||
|  |  | ||||||
| 		//查询项目下的所有申请 | 		//查询项目下的所有申请 | ||||||
| 		List<ZbfProjectSubcontractingApply> applyList = zbfProjectSubcontractingApplyService.list(Wrappers.<ZbfProjectSubcontractingApply>lambdaQuery() | 		List<ZbfProjectSubcontractingApply> applyList = zbfProjectSubcontractingApplyService.list(Wrappers.<ZbfProjectSubcontractingApply>lambdaQuery() | ||||||
| 			.eq(ZbfProjectSubcontractingApply::getProjectId, projectId).eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId())); | 			.eq(ZbfProjectSubcontractingApply::getProjectId, projectId) | ||||||
| 		List<Long> applyIds = applyList.stream().map(ZbfProjectSubcontractingApply::getSubId).collect(Collectors.toList()); | 			.eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId())); | ||||||
|  | 		HashMap<Long, String> map = applyList.stream() | ||||||
|  | 			.collect(Collectors.toMap( | ||||||
|  | 				ZbfProjectSubcontractingApply::getSubId, | ||||||
|  | 				ZbfProjectSubcontractingApply::getApplyStatus, | ||||||
|  | 				(existing, replacement) -> replacement, | ||||||
|  | 				HashMap::new | ||||||
|  | 			)); | ||||||
| 		//标段处理 | 		//标段处理 | ||||||
| 		List<FbsProjectSectionListVO> sectionListVO = new ArrayList<>(); | 		List<FbsProjectSectionListVO> sectionListVO = new ArrayList<>(); | ||||||
| 		//查询项目下的所有标段 | 		//查询项目下的所有标段 | ||||||
| 		List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery() | 		List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery() | ||||||
| 			.eq(ZbfProjectSection::getProjectId, projectId)); | 			.eq(ZbfProjectSection::getProjectId, projectId)); | ||||||
| 		for (ZbfProjectSection zbfProjectSection : sectionList){ | 		for (ZbfProjectSection zbfProjectSection : sectionList) { | ||||||
| 			//分包处理 | 			//分包处理 | ||||||
| 			List<FbsProjectSubcontractingListVO> subListVO = new ArrayList<>(); | 			List<FbsProjectSubcontractingListVO> subListVO = new ArrayList<>(); | ||||||
| 			//查询标段下的所有未承接的分包 | 			//查询标段下的所有的分包 | ||||||
| 			List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery() | 			List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery() | ||||||
| 					.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()) | 					.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()) | ||||||
| 				.isNull(ZbfProjectSubcontracting::getUserId)); | 				//.isNull(ZbfProjectSubcontracting::getUserId) | ||||||
|  | 			); | ||||||
| 			//排除掉已申请的分包 | 			//排除掉已申请的分包 | ||||||
| 			for (ZbfProjectSubcontracting sub : subList){ | 			for (ZbfProjectSubcontracting sub : subList) { | ||||||
| 				if(applyIds.contains(sub.getId())){ |  | ||||||
| 					continue; |  | ||||||
| 				} |  | ||||||
| 				FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); | 				FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); | ||||||
| 				BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); | 				BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); | ||||||
|  | 				String applyStatus = map.get(sub.getId()); | ||||||
|  | 				fbsProjectSubcontractingListVO.setApplyStatus(applyStatus); | ||||||
|  | 				if (sub.getUserId() != null && !sub.getUserId().equals(SecurityUtils.getAppUserId())) { | ||||||
|  | 					fbsProjectSubcontractingListVO.setApplyStatus(SubcontractingApplyStatus.CHOOSE.getCode()); | ||||||
|  | 				} | ||||||
| 				subListVO.add(fbsProjectSubcontractingListVO); | 				subListVO.add(fbsProjectSubcontractingListVO); | ||||||
| 			} | 			} | ||||||
| 			if(CollectionUtil.isEmpty(subListVO)){ | 			if (CollectionUtil.isEmpty(subListVO)) { | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 			FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); | 			FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); | ||||||
| @ -304,22 +348,22 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf | |||||||
| 		//查询项目下的所有标段 | 		//查询项目下的所有标段 | ||||||
| 		List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery() | 		List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery() | ||||||
| 			.eq(ZbfProjectSection::getProjectId, projectId)); | 			.eq(ZbfProjectSection::getProjectId, projectId)); | ||||||
| 		for (ZbfProjectSection zbfProjectSection : sectionList){ | 		for (ZbfProjectSection zbfProjectSection : sectionList) { | ||||||
| 			//分包处理 | 			//分包处理 | ||||||
| 			List<FbsProjectSubcontractingListVO> subListVO = new ArrayList<>(); | 			List<FbsProjectSubcontractingListVO> subListVO = new ArrayList<>(); | ||||||
| 			//查询标段下的所有的分包 | 			//查询标段下的所有的分包 | ||||||
| 			List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery() | 			List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery() | ||||||
| 				.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId())); | 				.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId())); | ||||||
| 			//排除掉未申请和已同意的分包 | 			//排除掉未申请和已同意的分包 | ||||||
| 			for (ZbfProjectSubcontracting sub : subList){ | 			for (ZbfProjectSubcontracting sub : subList) { | ||||||
| 				if(!applyIds.contains(sub.getId())){ | 				if (!applyIds.contains(sub.getId())) { | ||||||
| 					continue; | 					continue; | ||||||
| 				} | 				} | ||||||
| 				FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); | 				FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); | ||||||
| 				BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); | 				BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); | ||||||
| 				subListVO.add(fbsProjectSubcontractingListVO); | 				subListVO.add(fbsProjectSubcontractingListVO); | ||||||
| 			} | 			} | ||||||
| 			if(CollectionUtil.isEmpty(subListVO)){ | 			if (CollectionUtil.isEmpty(subListVO)) { | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 			FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); | 			FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); | ||||||
| @ -350,7 +394,7 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf | |||||||
| 		//查询项目下的所有标段 | 		//查询项目下的所有标段 | ||||||
| 		List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery() | 		List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery() | ||||||
| 			.eq(ZbfProjectSection::getProjectId, projectId)); | 			.eq(ZbfProjectSection::getProjectId, projectId)); | ||||||
| 		for (ZbfProjectSection zbfProjectSection : sectionList){ | 		for (ZbfProjectSection zbfProjectSection : sectionList) { | ||||||
| 			//分包处理 | 			//分包处理 | ||||||
| 			List<FbsProjectSubcontractingListVO> subListVO = new ArrayList<>(); | 			List<FbsProjectSubcontractingListVO> subListVO = new ArrayList<>(); | ||||||
| 			//查询标段下的所有已承接的分包 | 			//查询标段下的所有已承接的分包 | ||||||
| @ -358,12 +402,12 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf | |||||||
| 				.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()) | 				.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()) | ||||||
| 				.eq(ZbfProjectSubcontracting::getUserId, SecurityUtils.getAppUserId())); | 				.eq(ZbfProjectSubcontracting::getUserId, SecurityUtils.getAppUserId())); | ||||||
|  |  | ||||||
| 			for (ZbfProjectSubcontracting sub : subList){ | 			for (ZbfProjectSubcontracting sub : subList) { | ||||||
| 				FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); | 				FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO(); | ||||||
| 				BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); | 				BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO); | ||||||
| 				subListVO.add(fbsProjectSubcontractingListVO); | 				subListVO.add(fbsProjectSubcontractingListVO); | ||||||
| 			} | 			} | ||||||
| 			if(CollectionUtil.isEmpty(subListVO)){ | 			if (CollectionUtil.isEmpty(subListVO)) { | ||||||
| 				continue; | 				continue; | ||||||
| 			} | 			} | ||||||
| 			FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); | 			FbsProjectSectionListVO fbsProjectSectionListVO = new FbsProjectSectionListVO(); | ||||||
| @ -374,4 +418,79 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf | |||||||
| 		} | 		} | ||||||
| 		return sectionListVO; | 		return sectionListVO; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	@Transactional(rollbackFor = Exception.class) | ||||||
|  | 	public Boolean add(ZbfProjectAddDTO dto) { | ||||||
|  | 		ZbfProject project = BeanUtil.copyProperties(dto, ZbfProject.class); | ||||||
|  | 		project.setUserId(SecurityUtils.getAppUserId()); | ||||||
|  | 		boolean save = save(project); | ||||||
|  |  | ||||||
|  | 		for (ZbfProjectSectionAddDTO section : dto.getSectionList()) { | ||||||
|  | 			ZbfProjectSection projectSection = BeanUtil.copyProperties(section, ZbfProjectSection.class); | ||||||
|  | 			projectSection.setProjectId(project.getId()); | ||||||
|  | 			zbfProjectSectionService.save(projectSection); | ||||||
|  | 			List<ZbfProjectSubcontracting> addList = new ArrayList<>(); | ||||||
|  | 			for (ZbfProjectSubcontractingAddDTO sub : section.getSubList()) { | ||||||
|  | 				ZbfProjectSubcontracting projectSubcontracting = BeanUtil.copyProperties(sub, ZbfProjectSubcontracting.class); | ||||||
|  | 				projectSubcontracting.setProjectId(project.getId()); | ||||||
|  | 				projectSubcontracting.setSectionId(projectSection.getId()); | ||||||
|  | 				addList.add(projectSubcontracting); | ||||||
|  | 			} | ||||||
|  | 			zbfProjectSubcontractingService.saveBatch(addList); | ||||||
|  | 		} | ||||||
|  | 		return save; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	public TableDataInfo<ZbfProjectListVO> queryZbfList(ZbfProjectListDTO dto) { | ||||||
|  | 		LambdaQueryWrapper<ZbfProject> wrapper =  new LambdaQueryWrapper<>(); | ||||||
|  | 		wrapper.eq(ZbfProject::getUserId, SecurityUtils.getAppUserId()); | ||||||
|  | 		wrapper.like(StrUtil.isNotBlank(dto.getProjectName()), ZbfProject::getProjectName, dto.getProjectName()); | ||||||
|  |  | ||||||
|  | 		Page<ZbfProject> result = page(PageUtils.buildPage(), wrapper); | ||||||
|  | 		List<ZbfProjectListVO> zbfProjectListVOS = BeanUtil.copyToList(result.getRecords(), ZbfProjectListVO.class); | ||||||
|  |  | ||||||
|  | 		for (ZbfProjectListVO zbfProjectListVO : zbfProjectListVOS){ | ||||||
|  | 			//标段处理 | ||||||
|  | 			List<ZbfProjectSectionListVO> sectionListVO = new ArrayList<>(); | ||||||
|  | 			//查询项目下的所有标段 | ||||||
|  | 			List<ZbfProjectSection> sectionList = zbfProjectSectionService.list(Wrappers.<ZbfProjectSection>lambdaQuery() | ||||||
|  | 				.eq(ZbfProjectSection::getProjectId, zbfProjectListVO.getId())); | ||||||
|  | 			for (ZbfProjectSection zbfProjectSection : sectionList) { | ||||||
|  | 				//分包处理 | ||||||
|  | 				List<ZbfProjectSubcontractingListVO> subListVO = new ArrayList<>(); | ||||||
|  | 				//查询标段下的所有的分包 | ||||||
|  | 				List<ZbfProjectSubcontracting> subList = zbfProjectSubcontractingService.list(Wrappers.<ZbfProjectSubcontracting>lambdaQuery() | ||||||
|  | 					.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId())); | ||||||
|  |  | ||||||
|  | 				ZbfProjectSectionListVO zbfProjectSectionListVO = new ZbfProjectSectionListVO(); | ||||||
|  | 				BeanUtil.copyProperties(zbfProjectSection, zbfProjectSectionListVO); | ||||||
|  | 				zbfProjectSectionListVO.setSubList(subListVO); | ||||||
|  | 				sectionListVO.add(zbfProjectSectionListVO); | ||||||
|  | 			} | ||||||
|  | 			zbfProjectListVO.setSectionList(sectionListVO); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		Page<ZbfProjectListVO> zbfProjectListVOPage = new Page<>(); | ||||||
|  | 		zbfProjectListVOPage.setTotal(result.getTotal()); | ||||||
|  | 		zbfProjectListVOPage.setRecords(zbfProjectListVOS); | ||||||
|  |  | ||||||
|  | 		return PageUtils.buildDataInfo(zbfProjectListVOPage); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	public ZbfProjectCountVO projectCount() { | ||||||
|  | 		ZbfProjectCountVO zbfProjectCountVO = new ZbfProjectCountVO(); | ||||||
|  |  | ||||||
|  | 		LambdaQueryWrapper<ZbfProject> wrapper =  new LambdaQueryWrapper<>(); | ||||||
|  | 		wrapper.eq(ZbfProject::getUserId, SecurityUtils.getAppUserId()); | ||||||
|  | 		List<ZbfProject> list = list(wrapper); | ||||||
|  | 		zbfProjectCountVO.setAllCount(list.size()); | ||||||
|  | 		long startCount = list.stream().filter(zbfProject -> StrUtil.equals(zbfProject.getProjectStatus(), ProjectStatus.START.getCode())).count(); | ||||||
|  | 		long completeCcount = list.stream().filter(zbfProject -> StrUtil.equals(zbfProject.getProjectStatus(), ProjectStatus.COMPLETE.getCode())).count(); | ||||||
|  | 		zbfProjectCountVO.setStartCount((int) startCount); | ||||||
|  | 		zbfProjectCountVO.setCompleteCount((int) completeCcount); | ||||||
|  | 		return zbfProjectCountVO; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,23 +1,43 @@ | |||||||
| package com.ruoyi.zbf.service.impl; | package com.ruoyi.zbf.service.impl; | ||||||
|  |  | ||||||
| import cn.hutool.core.bean.BeanUtil; | import cn.hutool.core.bean.BeanUtil; | ||||||
|  | import cn.hutool.core.collection.CollectionUtil; | ||||||
| import cn.hutool.core.util.StrUtil; | 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.conditions.query.LambdaQueryWrapper; | ||||||
| import com.baomidou.mybatisplus.core.toolkit.Wrappers; | import com.baomidou.mybatisplus.core.toolkit.Wrappers; | ||||||
|  | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; | ||||||
|  | import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; | ||||||
|  | import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | ||||||
|  | import com.ruoyi.common.core.page.TableDataInfo; | ||||||
|  | import com.ruoyi.common.enums.ProjectStatus; | ||||||
|  | import com.ruoyi.common.enums.SubcontractingApplyStatus; | ||||||
|  | import com.ruoyi.common.enums.TaskApplyStatus; | ||||||
|  | import com.ruoyi.common.exception.BaseException; | ||||||
|  | import com.ruoyi.common.utils.PageUtils; | ||||||
|  | import com.ruoyi.common.utils.SecurityUtils; | ||||||
|  | import com.ruoyi.fbs.domain.FbsMessage; | ||||||
|  | import com.ruoyi.fbs.service.IFbsMessageService; | ||||||
| import com.ruoyi.zbf.bo.ZbfProjectSubcontractingApplyQueryBo; | import com.ruoyi.zbf.bo.ZbfProjectSubcontractingApplyQueryBo; | ||||||
|  | import com.ruoyi.zbf.domain.ZbfMessage; | ||||||
|  | import com.ruoyi.zbf.domain.ZbfProject; | ||||||
|  | import com.ruoyi.zbf.domain.ZbfProjectSubcontracting; | ||||||
| import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply; | import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply; | ||||||
| import com.ruoyi.zbf.mapper.ZbfProjectSubcontractingApplyMapper; | import com.ruoyi.zbf.mapper.ZbfProjectSubcontractingApplyMapper; | ||||||
|  | import com.ruoyi.zbf.service.IZbfMessageService; | ||||||
|  | import com.ruoyi.zbf.service.IZbfProjectService; | ||||||
| import com.ruoyi.zbf.service.IZbfProjectSubcontractingApplyService; | 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 org.springframework.transaction.annotation.Transactional; | ||||||
|  |  | ||||||
| import java.util.List; | import java.util.*; | ||||||
| import java.util.Map; |  | ||||||
| import java.util.Collection; | import static com.ruoyi.common.constants.BgtMessageConstant.HEADLINE; | ||||||
|  | import static com.ruoyi.common.constants.BgtMessageConstant.SUBHEADING; | ||||||
|  | import static com.ruoyi.common.constants.FbsMessageConstant.*; | ||||||
|  | import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.*; | ||||||
|  | import static com.ruoyi.common.constants.ZbfMessageConstant.*; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 总包方项目分包申请Service业务层处理 |  * 总包方项目分包申请Service业务层处理 | ||||||
| @ -28,6 +48,16 @@ import java.util.Collection; | |||||||
| @Service | @Service | ||||||
| public class ZbfProjectSubcontractingApplyServiceImpl extends ServicePlusImpl<ZbfProjectSubcontractingApplyMapper, ZbfProjectSubcontractingApply> implements IZbfProjectSubcontractingApplyService { | public class ZbfProjectSubcontractingApplyServiceImpl extends ServicePlusImpl<ZbfProjectSubcontractingApplyMapper, ZbfProjectSubcontractingApply> implements IZbfProjectSubcontractingApplyService { | ||||||
|  |  | ||||||
|  | 	@Autowired | ||||||
|  | 	private IZbfProjectService projectService; | ||||||
|  | 	@Autowired | ||||||
|  | 	private IZbfProjectSubcontractingService projectSubcontractingService; | ||||||
|  | 	@Autowired | ||||||
|  | 	private IFbsMessageService fbsMessageService; | ||||||
|  | 	@Autowired | ||||||
|  | 	private IZbfMessageService zbfMessageService; | ||||||
|  |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public ZbfProjectSubcontractingApply queryById(Long id){ |     public ZbfProjectSubcontractingApply queryById(Long id){ | ||||||
|         return getById(id); |         return getById(id); | ||||||
| @ -56,10 +86,65 @@ public class ZbfProjectSubcontractingApplyServiceImpl extends ServicePlusImpl<Zb | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|  | 	@Transactional(rollbackFor = Exception.class) | ||||||
|     public Boolean insert(ZbfProjectSubcontractingApply bo) { |     public Boolean insert(ZbfProjectSubcontractingApply bo) { | ||||||
|         ZbfProjectSubcontractingApply add = BeanUtil.toBean(bo, ZbfProjectSubcontractingApply.class); |         ZbfProjectSubcontractingApply add = BeanUtil.toBean(bo, ZbfProjectSubcontractingApply.class); | ||||||
|  | 		Long appUserId = SecurityUtils.getAppUserId(); | ||||||
|  | 		add.setFbsUserId(appUserId); | ||||||
|         validEntityBeforeSave(add); |         validEntityBeforeSave(add); | ||||||
|         return save(add); | 		ZbfProjectSubcontracting sub = projectSubcontractingService.getById(bo.getSubId()); | ||||||
|  | 		if(sub!=null && sub.getUserId()!=null){ | ||||||
|  | 			throw new BaseException("该分包已被承接"); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		List<ZbfProjectSubcontractingApply> list = list(Wrappers.<ZbfProjectSubcontractingApply>lambdaQuery() | ||||||
|  | 			.eq(ZbfProjectSubcontractingApply::getSubId, bo.getSubId()) | ||||||
|  | 			.eq(ZbfProjectSubcontractingApply::getApplyStatus, SubcontractingApplyStatus.APPLY.getCode()) | ||||||
|  | 			.eq(ZbfProjectSubcontractingApply::getFbsUserId, appUserId) | ||||||
|  | 		); | ||||||
|  | 		if(CollectionUtil.isNotEmpty(list)){ | ||||||
|  | 			throw new BaseException("您已经申请过该分包"); | ||||||
|  | 		} | ||||||
|  | 		boolean save = save(add); | ||||||
|  | 		//给分包商自己发消息 | ||||||
|  | //		HashMap<String, String> mp = new HashMap<>(); | ||||||
|  | //		mp.put("projectName", projectService.getById(bo.getProjectId()).getProjectName()); | ||||||
|  | //		mp.put("subName", projectSubcontractingService.getById(bo.getSubId()).getSubName()); | ||||||
|  | //		mp.put("auditor", SecurityUtils.getUsername()); | ||||||
|  | //		Map<String, String> map = fbsMessage(mp, FBS_TYPE_TASK, true); | ||||||
|  | //		FbsMessage fbsMessage = new FbsMessage() | ||||||
|  | //			.setSenderType(USERTYPE_SYSTEM) | ||||||
|  | //			.setSenderId(SYSTEM_ID) | ||||||
|  | //			.setRecipientType(USERTYPE_FBS) | ||||||
|  | //			.setRecipientId(SecurityUtils.getAppUserId()) | ||||||
|  | //			.setHeadline(map.get(HEADLINE)) | ||||||
|  | //			.setSubheading(map.get(SUBHEADING)) | ||||||
|  | //			.setTableId(add.getId()) | ||||||
|  | //			.setTableName(SqlHelper.table(ZbfProjectSubcontractingApply.class).getTableName()) | ||||||
|  | //			.setMessageLargeType(FBS_LARGE_TASK) | ||||||
|  | //			.setIsOperation(OPERATION_NO); | ||||||
|  | //		fbsMessageService.sendAMessage(fbsMessage); | ||||||
|  |  | ||||||
|  | 		ZbfProject project = projectService.getById(sub.getProjectId()); | ||||||
|  | 		//分包商发消息到总包方 | ||||||
|  | 		HashMap<String, String> fmp = new HashMap<>(); | ||||||
|  | 		fmp.put("projectName", project.getProjectName()); | ||||||
|  | 		fmp.put("subName", sub.getSubName()); | ||||||
|  | 		fmp.put("auditor", SecurityUtils.getUsername()); | ||||||
|  | 		Map<String, String> fmap = fbsMessage(fmp, FBS_TYPE_SUB_TO_ZBF, true); | ||||||
|  | 		ZbfMessage zbfMessage =  new ZbfMessage() | ||||||
|  | 			.setSenderType(USERTYPE_FBS) | ||||||
|  | 			.setSenderId(SecurityUtils.getAppUserId()) | ||||||
|  | 			.setRecipientType(USERTYPE_ZBF) | ||||||
|  | 			.setRecipientId(project.getUserId()) | ||||||
|  | 			.setHeadline(fmap.get(HEADLINE)) | ||||||
|  | 			.setSubheading(fmap.get(SUBHEADING)) | ||||||
|  | 			.setTableId(add.getId()) | ||||||
|  | 			.setTableName(SqlHelper.table(ZbfProjectSubcontractingApply.class).getTableName()) | ||||||
|  | 			.setMessageLargeType(ZBF_LARGE_TASK) | ||||||
|  | 			.setIsOperation(OPERATION_NEED); | ||||||
|  | 		zbfMessageService.sendAMessage(zbfMessage); | ||||||
|  |         return save; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
| @ -85,4 +170,65 @@ public class ZbfProjectSubcontractingApplyServiceImpl extends ServicePlusImpl<Zb | |||||||
|         } |         } | ||||||
|         return removeByIds(ids); |         return removeByIds(ids); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	@Transactional(rollbackFor = Exception.class) | ||||||
|  | 	public Boolean choose(Long id) { | ||||||
|  | 		ZbfProjectSubcontractingApply subApply = getById(id); | ||||||
|  | 		if(subApply == null || TaskApplyStatus.CANCEL.getCode().equals(subApply.getApplyStatus())){ | ||||||
|  | 			throw new BaseException("该申请已取消"); | ||||||
|  | 		} | ||||||
|  | 		ZbfProjectSubcontracting sub = projectSubcontractingService.getById(subApply.getSubId()); | ||||||
|  | 		if(sub!=null && sub.getUserId()!=null){ | ||||||
|  | 			throw new BaseException("该分包已被承接"); | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		ZbfProject project = projectService.getById(sub.getProjectId()); | ||||||
|  |  | ||||||
|  | 		//修改分包 | ||||||
|  | 		sub.setUserId(subApply.getFbsUserId()); | ||||||
|  | 		projectSubcontractingService.updateById(sub); | ||||||
|  | 		//修改项目状态 | ||||||
|  | 		if(ProjectStatus.NOT_START.getCode().equals(project.getProjectStatus())){ | ||||||
|  | 			project.setProjectStatus(ProjectStatus.START.getCode()); | ||||||
|  | 			projectService.updateById(project); | ||||||
|  | 		} | ||||||
|  | 		//拒绝其余分包商 | ||||||
|  | 		LambdaQueryWrapper<ZbfProjectSubcontractingApply> wrapper = new LambdaQueryWrapper<>(); | ||||||
|  | 		wrapper.eq(ZbfProjectSubcontractingApply::getSubId, subApply.getSubId()); | ||||||
|  | 		wrapper.eq(ZbfProjectSubcontractingApply::getApplyStatus, TaskApplyStatus.APPLY.getCode()); | ||||||
|  | 		List<ZbfProjectSubcontractingApply> list = baseMapper.selectList(wrapper); | ||||||
|  |  | ||||||
|  | 		ArrayList<FbsMessage> fbsMessages = new ArrayList<>(); | ||||||
|  | 		for (ZbfProjectSubcontractingApply subcontractApply : list){ | ||||||
|  | 			boolean equals = subcontractApply.getId().equals(id); | ||||||
|  | 			if (equals){ | ||||||
|  | 				subcontractApply.setApplyStatus(TaskApplyStatus.PASS.getCode()); | ||||||
|  | 			}else{ | ||||||
|  | 				subcontractApply.setApplyStatus(TaskApplyStatus.REFUSE.getCode()); | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			//总包方发消息到分包商 | ||||||
|  | 			HashMap<String, String> zmp = new HashMap<>(); | ||||||
|  | 			zmp.put("projectName", project.getProjectName()); | ||||||
|  | 			zmp.put("subName", sub.getSubName()); | ||||||
|  | 			zmp.put("auditor", SecurityUtils.getUsername()); | ||||||
|  | 			Map<String, String> zmap = zbfMessage(zmp, ZBF_TYPE_SIGN_UP, equals); | ||||||
|  | 			FbsMessage fbsMessage = new FbsMessage() | ||||||
|  | 				.setSenderType(USERTYPE_ZBF) | ||||||
|  | 				.setSenderId(SecurityUtils.getAppUserId()) | ||||||
|  | 				.setRecipientType(USERTYPE_FBS) | ||||||
|  | 				.setRecipientId(subcontractApply.getFbsUserId()) | ||||||
|  | 				.setHeadline(zmap.get(HEADLINE)) | ||||||
|  | 				.setSubheading(zmap.get(SUBHEADING)) | ||||||
|  | 				.setTableId(subcontractApply.getId()) | ||||||
|  | 				.setTableName(SqlHelper.table(ZbfProjectSubcontractingApply.class).getTableName()) | ||||||
|  | 				.setMessageLargeType(FBS_LARGE_TASK) | ||||||
|  | 				.setIsOperation(OPERATION_NO); | ||||||
|  | 			fbsMessages.add(fbsMessage); | ||||||
|  | 		} | ||||||
|  | 		fbsMessageService.saveBatch(fbsMessages); | ||||||
|  | //		fbsMessageService.operationBatch(USERTYPE_FBS,SecurityUtils.getAppUserId(),list.stream().map(FbsProjectTaskApply::getId).collect(Collectors.toList()),SqlHelper.table(FbsProjectTaskApply.class).getTableName()); | ||||||
|  | 		return super.updateBatchById(list); | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -0,0 +1,105 @@ | |||||||
|  | package com.ruoyi.zbf.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.ZbfUser; | ||||||
|  | import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; | ||||||
|  | import com.ruoyi.common.core.page.TableDataInfo; | ||||||
|  | import com.ruoyi.common.utils.PageUtils; | ||||||
|  | import com.ruoyi.zbf.bo.ZbfUserQueryBo; | ||||||
|  | import com.ruoyi.zbf.mapper.ZbfUserMapper; | ||||||
|  | import com.ruoyi.zbf.service.IZbfUserService; | ||||||
|  | import org.springframework.stereotype.Service; | ||||||
|  |  | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  | import java.util.Map; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * APP总包方用户Service业务层处理 | ||||||
|  |  * | ||||||
|  |  * @author ruoyi | ||||||
|  |  * @date 2025-03-31 | ||||||
|  |  */ | ||||||
|  | @Service | ||||||
|  | public class ZbfUserServiceImpl extends ServicePlusImpl<ZbfUserMapper, ZbfUser> implements IZbfUserService { | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public ZbfUser queryById(Long id){ | ||||||
|  |         return getById(id); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public TableDataInfo<ZbfUser> queryPageList(ZbfUserQueryBo bo) { | ||||||
|  |         Page<ZbfUser> result = page(PageUtils.buildPage(), buildQueryWrapper(bo)); | ||||||
|  |         return PageUtils.buildDataInfo(result); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public List<ZbfUser> queryList(ZbfUserQueryBo bo) { | ||||||
|  |         return list(buildQueryWrapper(bo)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     private LambdaQueryWrapper<ZbfUser> buildQueryWrapper(ZbfUserQueryBo bo) { | ||||||
|  |         Map<String, Object> params = bo.getParams(); | ||||||
|  |         LambdaQueryWrapper<ZbfUser> lqw = Wrappers.lambdaQuery(); | ||||||
|  |         lqw.eq(bo.getUserId() != null, ZbfUser::getUserId, bo.getUserId()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getPhone()), ZbfUser::getPhone, bo.getPhone()); | ||||||
|  |         lqw.like(StrUtil.isNotBlank(bo.getUsername()), ZbfUser::getUsername, bo.getUsername()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getGender()), ZbfUser::getGender, bo.getGender()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getNation()), ZbfUser::getNation, bo.getNation()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getBirthdate()), ZbfUser::getBirthdate, bo.getBirthdate()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getIdentityCard()), ZbfUser::getIdentityCard, bo.getIdentityCard()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getArea()), ZbfUser::getArea, bo.getArea()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getSite()), ZbfUser::getSite, bo.getSite()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getBank()), ZbfUser::getBank, bo.getBank()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getCardNo()), ZbfUser::getCardNo, bo.getCardNo()); | ||||||
|  |         lqw.like(StrUtil.isNotBlank(bo.getAvatarName()), ZbfUser::getAvatarName, bo.getAvatarName()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getPassword()), ZbfUser::getPassword, bo.getPassword()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getFrontPath()), ZbfUser::getFrontPath, bo.getFrontPath()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getReverseSidePath()), ZbfUser::getReverseSidePath, bo.getReverseSidePath()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getBankCardPath()), ZbfUser::getBankCardPath, bo.getBankCardPath()); | ||||||
|  |         lqw.eq(bo.getCompanyId() != null, ZbfUser::getCompanyId, bo.getCompanyId()); | ||||||
|  |         lqw.eq(StrUtil.isNotBlank(bo.getStatus()), ZbfUser::getStatus, bo.getStatus()); | ||||||
|  |         return lqw; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Boolean insert(ZbfUser bo) { | ||||||
|  |         ZbfUser add = BeanUtil.toBean(bo, ZbfUser.class); | ||||||
|  |         validEntityBeforeSave(add); | ||||||
|  |         return save(add); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Boolean update(ZbfUser bo) { | ||||||
|  |         ZbfUser update = BeanUtil.toBean(bo, ZbfUser.class); | ||||||
|  |         validEntityBeforeSave(update); | ||||||
|  |         return updateById(update); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * 保存前的数据校验 | ||||||
|  |      * | ||||||
|  |      * @param entity 实体类数据 | ||||||
|  |      */ | ||||||
|  |     private void validEntityBeforeSave(ZbfUser entity){ | ||||||
|  |         //TODO 做一些数据校验,如唯一约束 | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) { | ||||||
|  |         if(isValid){ | ||||||
|  |             //TODO 做一些业务上的校验,判断是否需要校验 | ||||||
|  |         } | ||||||
|  |         return removeByIds(ids); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | 	@Override | ||||||
|  | 	public ZbfUser selectUserByPhone(String phone) { | ||||||
|  | 		return baseMapper.selectOne(new LambdaQueryWrapper<ZbfUser>().eq(ZbfUser::getPhone, phone)); | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @ -0,0 +1,30 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||||
|  | <!DOCTYPE mapper | ||||||
|  | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||||||
|  | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||||
|  | <mapper namespace="com.ruoyi.zbf.mapper.ZbfMessageMapper"> | ||||||
|  |  | ||||||
|  |     <resultMap type="com.ruoyi.zbf.domain.ZbfMessage" id="ZbfMessageResult"> | ||||||
|  |         <result property="id" column="id"/> | ||||||
|  |         <result property="senderType" column="sender_type"/> | ||||||
|  |         <result property="senderId" column="sender_id"/> | ||||||
|  |         <result property="recipientType" column="recipient_type"/> | ||||||
|  |         <result property="recipientId" column="recipient_id"/> | ||||||
|  |         <result property="headline" column="headline"/> | ||||||
|  |         <result property="subheading" column="subheading"/> | ||||||
|  |         <result property="tableId" column="table_id"/> | ||||||
|  |         <result property="tableName" column="table_name"/> | ||||||
|  |         <result property="messageLargeType" column="message_large_type"/> | ||||||
|  |         <result property="messageSmallType" column="message_small_type"/> | ||||||
|  |         <result property="readStatus" column="read_status"/> | ||||||
|  |         <result property="delFlag" column="del_flag"/> | ||||||
|  |         <result property="createBy" column="create_by"/> | ||||||
|  |         <result property="createTime" column="create_time"/> | ||||||
|  |         <result property="updateBy" column="update_by"/> | ||||||
|  |         <result property="updateTime" column="update_time"/> | ||||||
|  |         <result property="remark" column="remark"/> | ||||||
|  |         <result property="isOperation" column="is_operation"/> | ||||||
|  |     </resultMap> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | </mapper> | ||||||
| @ -27,15 +27,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||||
|                unit_name, |                unit_name, | ||||||
|                project_name, |                project_name, | ||||||
|                project_address, |                project_address, | ||||||
|  |                project_img, | ||||||
|                project_status |                project_status | ||||||
|         FROM zbf_project zp |         FROM zbf_project zp | ||||||
|         WHERE EXISTS ( |  | ||||||
|             SELECT 1 |  | ||||||
|             FROM zbf_project_subcontracting zps |  | ||||||
|             WHERE zps.user_id IS NULL |  | ||||||
|               AND zp.id = zps.project_id |  | ||||||
|               and zps.id NOT EXISTS(select zpsa.sub_id from zbf_project_subcontracting_apply zpsa where zpsa.fbs_user_id = #{dto.fbsUserId}) |  | ||||||
|                   ) |  | ||||||
|         order by zp.id desc |         order by zp.id desc | ||||||
|     </select> |     </select> | ||||||
|  |  | ||||||
| @ -44,12 +38,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||||
|                unit_name, |                unit_name, | ||||||
|                project_name, |                project_name, | ||||||
|                project_address, |                project_address, | ||||||
|  |                project_img, | ||||||
|                project_status |                project_status | ||||||
|         FROM zbf_project zp |         FROM zbf_project zp | ||||||
|         WHERE  EXISTS ( |         WHERE  EXISTS ( | ||||||
|             SELECT 1 |             SELECT 1 | ||||||
|             FROM zbf_project_subcontracting_apply zpsa |             FROM zbf_project_subcontracting_apply zpsa | ||||||
|             WHERE zpsa.fbs_user_id = #{dto.fbsUserId} and zpsa.apply_status in('0','2') |             WHERE zpsa.fbs_user_id = #{dto.fbsUserId} and zpsa.apply_status ='0' | ||||||
|                 AND zp.id = zpsa.project_id |                 AND zp.id = zpsa.project_id | ||||||
|         ) order by zp.id desc |         ) order by zp.id desc | ||||||
|     </select> |     </select> | ||||||
| @ -59,13 +54,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||||
|                unit_name, |                unit_name, | ||||||
|                project_name, |                project_name, | ||||||
|                project_address, |                project_address, | ||||||
|  |                project_img, | ||||||
|                project_status |                project_status | ||||||
|         FROM zbf_project zp |         FROM zbf_project zp | ||||||
|         WHERE  zp.project_status = '1' and |         WHERE  zp.project_status = '1' and | ||||||
|             EXISTS ( |             EXISTS ( | ||||||
|                 SELECT 1 |                 SELECT 1 | ||||||
|                 FROM zbf_project_subcontracting zps |                 FROM zbf_project_subcontracting zps | ||||||
|                 WHERE zps.user_id = 1 AND zp.id = zps.project_id |                 WHERE zps.user_id = #{dto.fbsUserId} AND zp.id = zps.project_id | ||||||
|             ) |             ) | ||||||
|         order by zp.id desc |         order by zp.id desc | ||||||
|     </select> |     </select> | ||||||
| @ -75,15 +71,66 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||||
|                unit_name, |                unit_name, | ||||||
|                project_name, |                project_name, | ||||||
|                project_address, |                project_address, | ||||||
|  |                project_img, | ||||||
|                project_status |                project_status | ||||||
|         FROM zbf_project zp |         FROM zbf_project zp | ||||||
|         WHERE  zp.project_status = '2' and |         WHERE  zp.project_status = '2' and | ||||||
|             EXISTS ( |             EXISTS ( | ||||||
|                 SELECT 1 |                 SELECT 1 | ||||||
|                 FROM zbf_project_subcontracting zps |                 FROM zbf_project_subcontracting zps | ||||||
|                 WHERE zps.user_id = 1 AND zp.id = zps.project_id |                 WHERE zps.user_id = #{dto.fbsUserId} AND zp.id = zps.project_id | ||||||
|  |             ) | ||||||
|  |         order by zp.id desc | ||||||
|  |     </select> | ||||||
|  |  | ||||||
|  |     <select id="switchList" resultType="com.ruoyi.fbs.domain.vo.FbsProjectListVO"> | ||||||
|  |         SELECT zp.id, | ||||||
|  |                unit_name, | ||||||
|  |                project_name, | ||||||
|  |                project_address, | ||||||
|  |                project_img, | ||||||
|  |                project_status | ||||||
|  |         FROM zbf_project zp | ||||||
|  |             zp.id in (select zpsa.project_id from zbf_project_subcontracting_apply zpsa where zpsa.fbs_user_id  = #{dto.fbsUserId}) | ||||||
|  |         order by zp.id desc | ||||||
|  |     </select> | ||||||
|  |  | ||||||
|  |     <select id="applyCount" resultType="integer"> | ||||||
|  |         SELECT count(1) | ||||||
|  |         FROM zbf_project zp | ||||||
|  |         WHERE  EXISTS ( | ||||||
|  |             SELECT 1 | ||||||
|  |             FROM zbf_project_subcontracting_apply zpsa | ||||||
|  |             WHERE zpsa.fbs_user_id = #{fbsUserId} and zpsa.apply_status ='0' | ||||||
|  |               AND zp.id = zpsa.project_id | ||||||
|  |         ) | ||||||
|  |     </select> | ||||||
|  |  | ||||||
|  |     <select id="joinCount" resultType="integer"> | ||||||
|  |         SELECT count(1) | ||||||
|  |         FROM zbf_project zp | ||||||
|  |         WHERE  zp.project_status = '1' and | ||||||
|  |             EXISTS ( | ||||||
|  |                 SELECT 1 | ||||||
|  |                 FROM zbf_project_subcontracting zps | ||||||
|  |                 WHERE zps.user_id = #{fbsUserId} AND zp.id = zps.project_id | ||||||
|  |             ) | ||||||
|  |     </select> | ||||||
|  |  | ||||||
|  |     <select id="completeCount" resultType="integer"> | ||||||
|  |         SELECT zp.id, | ||||||
|  |                unit_name, | ||||||
|  |                project_name, | ||||||
|  |                project_address, | ||||||
|  |                project_img, | ||||||
|  |                project_status | ||||||
|  |         FROM zbf_project zp | ||||||
|  |         WHERE  zp.project_status = '2' and | ||||||
|  |             EXISTS ( | ||||||
|  |                 SELECT 1 | ||||||
|  |                 FROM zbf_project_subcontracting zps | ||||||
|  |                 WHERE zps.user_id = #{fbsUserId} AND zp.id = zps.project_id | ||||||
|             ) |             ) | ||||||
|         order by zp.id desc; |  | ||||||
|     </select> |     </select> | ||||||
|  |  | ||||||
| </mapper> | </mapper> | ||||||
|  | |||||||
| @ -18,7 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | |||||||
|     </resultMap> |     </resultMap> | ||||||
|  |  | ||||||
|     <select id="joinSectionList" resultType="com.ruoyi.fbs.domain.vo.FbsProjectSectionListVO"> |     <select id="joinSectionList" resultType="com.ruoyi.fbs.domain.vo.FbsProjectSectionListVO"> | ||||||
|         SELECT zps.id, zps.project_id, zps.section_name |         SELECT zps.id, zps.project_id, zps.section_name,zp.project_address | ||||||
|         from zbf_project_section zps |         from zbf_project_section zps | ||||||
|                  left join zbf_project zp on zps.project_id = zp.id |                  left join zbf_project zp on zps.project_id = zp.id | ||||||
|         where  EXISTS (SELECT 1 |         where  EXISTS (SELECT 1 | ||||||
|  | |||||||
							
								
								
									
										36
									
								
								ruoyi-system/src/main/resources/mapper/zbf/ZbfUserMapper.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								ruoyi-system/src/main/resources/mapper/zbf/ZbfUserMapper.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,36 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8" ?> | ||||||
|  | <!DOCTYPE mapper | ||||||
|  | PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" | ||||||
|  | "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> | ||||||
|  | <mapper namespace="com.ruoyi.zbf.mapper.ZbfUserMapper"> | ||||||
|  |  | ||||||
|  |     <resultMap type="com.ruoyi.common.core.domain.entity.ZbfUser" id="ZbfUserResult"> | ||||||
|  |         <result property="id" column="id"/> | ||||||
|  |         <result property="userId" column="user_id"/> | ||||||
|  |         <result property="phone" column="phone"/> | ||||||
|  |         <result property="username" column="username"/> | ||||||
|  |         <result property="gender" column="gender"/> | ||||||
|  |         <result property="nation" column="nation"/> | ||||||
|  |         <result property="birthdate" column="birthdate"/> | ||||||
|  |         <result property="identityCard" column="identity_card"/> | ||||||
|  |         <result property="area" column="area"/> | ||||||
|  |         <result property="site" column="site"/> | ||||||
|  |         <result property="bank" column="bank"/> | ||||||
|  |         <result property="cardNo" column="card_no"/> | ||||||
|  |         <result property="avatarName" column="avatar_name"/> | ||||||
|  |         <result property="password" column="password"/> | ||||||
|  |         <result property="frontPath" column="front_path"/> | ||||||
|  |         <result property="reverseSidePath" column="reverse_side_path"/> | ||||||
|  |         <result property="bankCardPath" column="bank_card_path"/> | ||||||
|  |         <result property="companyId" column="company_id"/> | ||||||
|  |         <result property="status" column="status"/> | ||||||
|  |         <result property="delFlag" column="del_flag"/> | ||||||
|  |         <result property="createBy" column="create_by"/> | ||||||
|  |         <result property="createTime" column="create_time"/> | ||||||
|  |         <result property="updateBy" column="update_by"/> | ||||||
|  |         <result property="updateTime" column="update_time"/> | ||||||
|  |         <result property="remark" column="remark"/> | ||||||
|  |     </resultMap> | ||||||
|  |  | ||||||
|  |  | ||||||
|  | </mapper> | ||||||
		Reference in New Issue
	
	Block a user
	 zt
					zt