总包方
This commit is contained in:
@ -104,7 +104,7 @@ public class AppBgtMessageController extends BaseController {
|
|||||||
BigDecimal allPay = iWgzAttendanceService.getAllPay(userId, recruitApplyId, recruit.getRecruitAmount());
|
BigDecimal allPay = iWgzAttendanceService.getAllPay(userId, recruitApplyId, recruit.getRecruitAmount());
|
||||||
//获取个人已结算工资
|
//获取个人已结算工资
|
||||||
BigDecimal alreadyPay = iWgzPayCalculationService.getAlreadyPay(userId, recruitApplyId);
|
BigDecimal alreadyPay = iWgzPayCalculationService.getAlreadyPay(userId, recruitApplyId);
|
||||||
res.setIsPay(allPay.equals(alreadyPay));
|
res.setIsPay(allPay.compareTo(alreadyPay)==0);
|
||||||
}
|
}
|
||||||
return AjaxResult.success(res);
|
return AjaxResult.success(res);
|
||||||
}
|
}
|
||||||
@ -115,5 +115,9 @@ public class AppBgtMessageController extends BaseController {
|
|||||||
return iBgtMessageService.unAuditList(dto);
|
return iBgtMessageService.unAuditList(dto);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("消息详情")
|
||||||
|
@GetMapping("/detail/{id}")
|
||||||
|
public AjaxResult<BgtMessage> detail(@PathVariable(value = "id") Long id) {
|
||||||
|
return AjaxResult.success(iBgtMessageService.getById(id));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,10 +3,13 @@ package com.ruoyi.web.controller.fbs;
|
|||||||
import cn.hutool.core.bean.BeanUtil;
|
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.common.utils.SecurityUtils;
|
||||||
import com.ruoyi.fbs.domain.vo.FbsProjectSubcontractingDetailVO;
|
import com.ruoyi.fbs.domain.vo.FbsProjectSubcontractingDetailVO;
|
||||||
import com.ruoyi.zbf.domain.ZbfProjectSubcontracting;
|
import com.ruoyi.zbf.domain.ZbfProjectSubcontracting;
|
||||||
|
import com.ruoyi.zbf.domain.ZbfProjectSubcontractingApply;
|
||||||
import com.ruoyi.zbf.service.IZbfProjectSectionService;
|
import com.ruoyi.zbf.service.IZbfProjectSectionService;
|
||||||
import com.ruoyi.zbf.service.IZbfProjectService;
|
import com.ruoyi.zbf.service.IZbfProjectService;
|
||||||
|
import com.ruoyi.zbf.service.IZbfProjectSubcontractingApplyService;
|
||||||
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;
|
||||||
@ -34,6 +37,7 @@ public class AppFbsProjectSubcontractingController extends BaseController {
|
|||||||
private final IZbfProjectSubcontractingService iZbfProjectSubcontractingService;
|
private final IZbfProjectSubcontractingService iZbfProjectSubcontractingService;
|
||||||
private final IZbfProjectSectionService zbfProjectSectionService;
|
private final IZbfProjectSectionService zbfProjectSectionService;
|
||||||
private final IZbfProjectService zbfProjectService;
|
private final IZbfProjectService zbfProjectService;
|
||||||
|
private final IZbfProjectSubcontractingApplyService iZbfProjectSubcontractingApplyService;
|
||||||
|
|
||||||
@ApiOperation("分包商查询项目分包详细信息")
|
@ApiOperation("分包商查询项目分包详细信息")
|
||||||
@GetMapping("/{id}")
|
@GetMapping("/{id}")
|
||||||
@ -43,6 +47,10 @@ public class AppFbsProjectSubcontractingController extends BaseController {
|
|||||||
FbsProjectSubcontractingDetailVO vo = BeanUtil.copyProperties(zbfProjectSubcontracting, FbsProjectSubcontractingDetailVO.class);
|
FbsProjectSubcontractingDetailVO vo = BeanUtil.copyProperties(zbfProjectSubcontracting, FbsProjectSubcontractingDetailVO.class);
|
||||||
vo.setSectionName(zbfProjectSectionService.getById(vo.getSectionId()).getSectionName());
|
vo.setSectionName(zbfProjectSectionService.getById(vo.getSectionId()).getSectionName());
|
||||||
vo.setProjectImg(zbfProjectService.getById(vo.getProjectId()).getProjectImg());
|
vo.setProjectImg(zbfProjectService.getById(vo.getProjectId()).getProjectImg());
|
||||||
|
ZbfProjectSubcontractingApply subcontractingApply = iZbfProjectSubcontractingApplyService.queryBySubIdAndFbsUserId(id, SecurityUtils.getAppUserId());
|
||||||
|
if (subcontractingApply != null) {
|
||||||
|
vo.setApplyStatus(subcontractingApply.getApplyStatus());
|
||||||
|
}
|
||||||
return AjaxResult.success(vo);
|
return AjaxResult.success(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,4 +175,27 @@ public class AppFbsProjectTaskController extends BaseController {
|
|||||||
return AjaxResult.success(vo);
|
return AjaxResult.success(vo);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ApiOperation("分包商完成任务")
|
||||||
|
@Log(title = "分包商完成任务", businessType = BusinessType.UPDATE)
|
||||||
|
@RepeatSubmit
|
||||||
|
@PutMapping("/complete/{taskId}")
|
||||||
|
public AjaxResult<Boolean> complete(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable("taskId") Long taskId) {
|
||||||
|
return AjaxResult.success(iFbsProjectTaskService.complete(taskId));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("分包商完成任务前检查")
|
||||||
|
@GetMapping("/checkBeforeComplete/{taskId}")
|
||||||
|
public AjaxResult<Boolean> checkBeforeComplete(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable("taskId") Long taskId) {
|
||||||
|
return AjaxResult.success(iFbsProjectTaskService.checkBeforeComplete(taskId));
|
||||||
|
}
|
||||||
|
|
||||||
|
@ApiOperation("分包商完成任务提醒消息")
|
||||||
|
@PostMapping("/sendRemindMessage/{taskId}")
|
||||||
|
public AjaxResult<Boolean> sendRemindMessage(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable("taskId") Long taskId) {
|
||||||
|
return AjaxResult.success(iFbsProjectTaskService.sendRemindMessage(taskId));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import com.ruoyi.wgz.bo.rests.WgzAppUserAllRecruitmentTwo;
|
|||||||
import com.ruoyi.zbf.domain.dto.ZbfProjectTaskUserDTO;
|
import com.ruoyi.zbf.domain.dto.ZbfProjectTaskUserDTO;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
|
import java.time.LocalDate;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -156,7 +157,7 @@ public interface IBgtProjectRecruitApplyService extends IServicePlus<BgtProjectR
|
|||||||
/**
|
/**
|
||||||
* 批量退场
|
* 批量退场
|
||||||
*/
|
*/
|
||||||
void quitBatch(Long taskId);
|
void quitBatch(Long taskId, LocalDate leaveTime);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 评分
|
* 评分
|
||||||
|
@ -42,7 +42,6 @@ import com.ruoyi.wgz.service.*;
|
|||||||
import com.ruoyi.zbf.domain.dto.ZbfProjectTaskUserDTO;
|
import com.ruoyi.zbf.domain.dto.ZbfProjectTaskUserDTO;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.scheduling.annotation.Async;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
@ -567,9 +566,9 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl<BgtProjec
|
|||||||
return updateById(recruitApply);
|
return updateById(recruitApply);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Async
|
|
||||||
@Override
|
@Override
|
||||||
public void quitBatch(Long taskId) {
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public void quitBatch(Long taskId, LocalDate leaveTime) {
|
||||||
BgtProjectRecruitApplyQueryDTO dto = new BgtProjectRecruitApplyQueryDTO();
|
BgtProjectRecruitApplyQueryDTO dto = new BgtProjectRecruitApplyQueryDTO();
|
||||||
dto.setTaskId(taskId);
|
dto.setTaskId(taskId);
|
||||||
dto.setStatus(Collections.singletonList(RecruitApplyStatus.WORKING.getCode()));
|
dto.setStatus(Collections.singletonList(RecruitApplyStatus.WORKING.getCode()));
|
||||||
@ -580,10 +579,13 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl<BgtProjec
|
|||||||
List<WgzMessage> wgzMessages = new ArrayList<>();
|
List<WgzMessage> wgzMessages = new ArrayList<>();
|
||||||
List<Long> ids = new ArrayList<>();
|
List<Long> ids = new ArrayList<>();
|
||||||
for (BgtProjectRecruitApplyVO vo : bgtProjectRecruitApplyVOS) {
|
for (BgtProjectRecruitApplyVO vo : bgtProjectRecruitApplyVOS) {
|
||||||
|
// if(quitCheck(vo.getId())){
|
||||||
|
// throw new BaseException("务工者还有未审批的申请,无法完成!");
|
||||||
|
// }
|
||||||
ids.add(vo.getId());
|
ids.add(vo.getId());
|
||||||
HashMap<String, String> mp = new HashMap<>();
|
HashMap<String, String> mp = new HashMap<>();
|
||||||
mp.put("projectName", vo.getRecruitName());
|
mp.put("projectName", vo.getRecruitName());
|
||||||
mp.put("auditor", "系统");
|
mp.put("auditor", SecurityUtils.getUsername());
|
||||||
Map<String, String> map = bgtMessage(mp, BGT_TYPE_EXIT, false);
|
Map<String, String> map = bgtMessage(mp, BGT_TYPE_EXIT, false);
|
||||||
WgzMessage wgzMessage = new WgzMessage()
|
WgzMessage wgzMessage = new WgzMessage()
|
||||||
.setSenderType(USERTYPE_BGT)
|
.setSenderType(USERTYPE_BGT)
|
||||||
@ -601,7 +603,7 @@ public class BgtProjectRecruitApplyServiceImpl extends ServicePlusImpl<BgtProjec
|
|||||||
iWgzMessageService.saveBatch(wgzMessages);
|
iWgzMessageService.saveBatch(wgzMessages);
|
||||||
LambdaUpdateWrapper<BgtProjectRecruitApply> wrapper = new LambdaUpdateWrapper<>();
|
LambdaUpdateWrapper<BgtProjectRecruitApply> wrapper = new LambdaUpdateWrapper<>();
|
||||||
wrapper.in(BgtProjectRecruitApply::getId, ids)
|
wrapper.in(BgtProjectRecruitApply::getId, ids)
|
||||||
.set(BgtProjectRecruitApply::getLeaveTime, LocalDate.now())
|
.set(BgtProjectRecruitApply::getLeaveTime, leaveTime)
|
||||||
.set(BgtProjectRecruitApply::getStatus, RecruitApplyStatus.OUT_WORK.getCode());
|
.set(BgtProjectRecruitApply::getStatus, RecruitApplyStatus.OUT_WORK.getCode());
|
||||||
update(wrapper);
|
update(wrapper);
|
||||||
}
|
}
|
||||||
|
@ -15,11 +15,11 @@ 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.IBgtMessageService;
|
||||||
|
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
|
||||||
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;
|
||||||
import com.ruoyi.common.enums.AuditStatus;
|
import com.ruoyi.common.enums.AuditStatus;
|
||||||
import com.ruoyi.common.enums.ProjectTaskStatus;
|
|
||||||
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;
|
||||||
@ -54,6 +54,8 @@ public class BgtProjectTaskProgressServiceImpl extends ServicePlusImpl<BgtProjec
|
|||||||
private IFbsMessageService fbsMessageService;
|
private IFbsMessageService fbsMessageService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IBgtMessageService bgtMessageService;
|
private IBgtMessageService bgtMessageService;
|
||||||
|
@Autowired
|
||||||
|
private IBgtProjectRecruitApplyService recruitApplyService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BgtProjectTaskProgress queryById(Long id){
|
public BgtProjectTaskProgress queryById(Long id){
|
||||||
@ -176,14 +178,8 @@ public class BgtProjectTaskProgressServiceImpl extends ServicePlusImpl<BgtProjec
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Boolean fbsAudit(BgtProjectTaskProgress bo) {
|
public Boolean fbsAudit(BgtProjectTaskProgress bo) {
|
||||||
boolean b = updateById(bo);
|
|
||||||
FbsProjectTask task = taskService.getById(bo.getTaskId());
|
FbsProjectTask task = taskService.getById(bo.getTaskId());
|
||||||
|
boolean b = updateById(bo);
|
||||||
if(bo.getProgress() == 100){
|
|
||||||
//更改任务状态
|
|
||||||
taskService.lambdaUpdate().set(FbsProjectTask::getStatus, ProjectTaskStatus.COMPLETE.getCode())
|
|
||||||
.eq(FbsProjectTask::getId, bo.getTaskId()).update();
|
|
||||||
}
|
|
||||||
|
|
||||||
//分包商发消息到包工头
|
//分包商发消息到包工头
|
||||||
HashMap<String, String> mp = new HashMap<>();
|
HashMap<String, String> mp = new HashMap<>();
|
||||||
@ -203,9 +199,7 @@ public class BgtProjectTaskProgressServiceImpl extends ServicePlusImpl<BgtProjec
|
|||||||
.setMessageSmallType(BGT_SMALL_PROGRESS)
|
.setMessageSmallType(BGT_SMALL_PROGRESS)
|
||||||
.setIsOperation(OPERATION_NO);
|
.setIsOperation(OPERATION_NO);
|
||||||
bgtMessageService.sendAMessage(bgtMessage);
|
bgtMessageService.sendAMessage(bgtMessage);
|
||||||
|
|
||||||
fbsMessageService.operation(USERTYPE_BGT, bo.getUploaderId(), USERTYPE_FBS, SecurityUtils.getAppUserId(), bo.getId(), SqlHelper.table(BgtProjectTaskProgress.class).getTableName());
|
fbsMessageService.operation(USERTYPE_BGT, bo.getUploaderId(), USERTYPE_FBS, SecurityUtils.getAppUserId(), bo.getId(), SqlHelper.table(BgtProjectTaskProgress.class).getTableName());
|
||||||
|
|
||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -18,6 +18,7 @@ public class BgtMessageConstant {
|
|||||||
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 = "6"; //小类型-任务进度
|
public static final String BGT_SMALL_PROGRESS = "6"; //小类型-任务进度
|
||||||
|
public static final String BGT_SMALL_SYSTEM = "7"; //小类型-系统
|
||||||
|
|
||||||
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");
|
||||||
/**
|
/**
|
||||||
@ -75,11 +76,11 @@ public class BgtMessageConstant {
|
|||||||
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】元的工资结算操作,请耐心等待回复!";
|
||||||
|
|
||||||
|
|
||||||
//系统->包工头 消息类型
|
//系统->包工头 消息类型
|
||||||
public static final String BGT_TYPE_TASK = "6"; //任务报名
|
public static final String BGT_TYPE_TASK = "6"; //任务报名
|
||||||
public static final String BGT_TYPE_TASK_CANCEL = "7"; //任务取消
|
public static final String BGT_TYPE_TASK_CANCEL = "7"; //任务取消
|
||||||
public static final String BGT_TYPE_SETTLEMENT = "8"; //结算
|
public static final String BGT_TYPE_SETTLEMENT = "8"; //结算
|
||||||
|
//提醒
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -35,12 +35,16 @@ public class FbsMessageConstant {
|
|||||||
//进度审批
|
//进度审批
|
||||||
public static final String FBS_PROGRESS_HEADLINE = "您【%s】任务的上传进度已审批!";
|
public static final String FBS_PROGRESS_HEADLINE = "您【%s】任务的上传进度已审批!";
|
||||||
public static final String FBS_PROGRESS_SUBHEADING = "您【%s】任务的上传进度,审核人【%s】已%s!";
|
public static final String FBS_PROGRESS_SUBHEADING = "您【%s】任务的上传进度,审核人【%s】已%s!";
|
||||||
|
//审批提醒
|
||||||
|
public static final String FBS_REMIND_HEADLINE = "请尽快完成【%s】任务下的所有审批!";
|
||||||
|
public static final String FBS_REMIND_SUBHEADING = "分包商【%s】提醒您完成【%s】任务的所有审批!";
|
||||||
|
|
||||||
|
|
||||||
//分包商->包工头 消息类型
|
//分包商->包工头 消息类型
|
||||||
public static final String FBS_TYPE_SIGN_UP = "1"; //包工头报名
|
public static final String FBS_TYPE_SIGN_UP = "1"; //包工头报名
|
||||||
public static final String FBS_TYPE_PAY = "2"; //付款
|
public static final String FBS_TYPE_PAY = "2"; //付款
|
||||||
public static final String FBS_TYPE_PROGRESS = "3"; //进度
|
public static final String FBS_TYPE_PROGRESS = "3"; //进度
|
||||||
|
public static final String FBS_TYPE_REMIND = "9"; //提醒
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -130,6 +134,10 @@ public class FbsMessageConstant {
|
|||||||
map.put(HEADLINE, String.format(FBS_TO_ZBF_SETTLEMENT_APPLY_HEADLINE, auditor));
|
map.put(HEADLINE, String.format(FBS_TO_ZBF_SETTLEMENT_APPLY_HEADLINE, auditor));
|
||||||
map.put(SUBHEADING, String.format(FBS_TO_ZBF_SETTLEMENT_APPLY_SUBHEADING, auditor,amount));
|
map.put(SUBHEADING, String.format(FBS_TO_ZBF_SETTLEMENT_APPLY_SUBHEADING, auditor,amount));
|
||||||
break;
|
break;
|
||||||
|
case "9":
|
||||||
|
map.put(HEADLINE, String.format(FBS_REMIND_HEADLINE, projectName));
|
||||||
|
map.put(SUBHEADING, String.format(FBS_REMIND_SUBHEADING, auditor,projectName));
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,12 @@
|
|||||||
package com.ruoyi.common.service;
|
package com.ruoyi.common.service;
|
||||||
|
|
||||||
|
import com.ruoyi.bgt.domain.BgtMessage;
|
||||||
import com.ruoyi.bgt.domain.BgtProjectRecruit;
|
import com.ruoyi.bgt.domain.BgtProjectRecruit;
|
||||||
|
|
||||||
public interface IAsyncService {
|
public interface IAsyncService {
|
||||||
//异步修改招工状态为招满
|
//异步修改招工状态为招满
|
||||||
void updateRecruitStatus(BgtProjectRecruit recruit);
|
void updateRecruitStatus(BgtProjectRecruit recruit);
|
||||||
|
|
||||||
|
//异步发送提醒消息
|
||||||
|
void sendMessageToBgt(BgtMessage bgtMessage);
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
package com.ruoyi.common.service.impl;
|
package com.ruoyi.common.service.impl;
|
||||||
|
|
||||||
|
import com.ruoyi.bgt.domain.BgtMessage;
|
||||||
import com.ruoyi.bgt.domain.BgtProjectRecruit;
|
import com.ruoyi.bgt.domain.BgtProjectRecruit;
|
||||||
import com.ruoyi.bgt.service.IBgtProjectRecruitService;
|
import com.ruoyi.bgt.service.IBgtProjectRecruitService;
|
||||||
import com.ruoyi.common.service.IAsyncService;
|
import com.ruoyi.common.service.IAsyncService;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.context.annotation.Lazy;
|
|
||||||
import org.springframework.scheduling.annotation.Async;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
@ -19,4 +18,9 @@ public class AsyncServiceImpl implements IAsyncService {
|
|||||||
recruit.setStatus("2");
|
recruit.setStatus("2");
|
||||||
iBgtProjectRecruitService.updateById(recruit);
|
iBgtProjectRecruitService.updateById(recruit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void sendMessageToBgt(BgtMessage bgtMessage) {
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -71,4 +71,7 @@ public class FbsProjectSubcontractingDetailVO {
|
|||||||
@ApiModelProperty("备注")
|
@ApiModelProperty("备注")
|
||||||
private String remark;
|
private String remark;
|
||||||
|
|
||||||
|
@ApiModelProperty("申请状态(0=申请中,1=已同意,2=已拒绝,3=已取消)")
|
||||||
|
private String applyStatus;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -149,5 +149,18 @@ public interface IFbsProjectTaskService extends IServicePlus<FbsProjectTask> {
|
|||||||
*/
|
*/
|
||||||
TableDataInfo<FbsProjectTask> bgtTaskList(ZbfProjectTaskDTO dto);
|
TableDataInfo<FbsProjectTask> bgtTaskList(ZbfProjectTaskDTO dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分包商完成任务
|
||||||
|
*/
|
||||||
|
Boolean complete(Long taskId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分包商完成任务前检查
|
||||||
|
*/
|
||||||
|
Boolean checkBeforeComplete(Long taskId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 分包商完成任务提醒消息
|
||||||
|
*/
|
||||||
|
Boolean sendRemindMessage( Long taskId);
|
||||||
}
|
}
|
||||||
|
@ -6,13 +6,17 @@ 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.domain.BgtMessage;
|
||||||
import com.ruoyi.bgt.domain.BgtProjectRecruitApply;
|
import com.ruoyi.bgt.domain.BgtProjectRecruitApply;
|
||||||
import com.ruoyi.bgt.domain.BgtProjectTaskProgress;
|
import com.ruoyi.bgt.domain.BgtProjectTaskProgress;
|
||||||
import com.ruoyi.bgt.domain.BgtWageApplication;
|
import com.ruoyi.bgt.domain.BgtWageApplication;
|
||||||
|
import com.ruoyi.bgt.domain.dto.BgtProjectRecruitApplyQueryDTO;
|
||||||
import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO;
|
import com.ruoyi.bgt.domain.dto.BgtProjectTaskUserDTO;
|
||||||
import com.ruoyi.bgt.domain.dto.BgtTaskDTO;
|
import com.ruoyi.bgt.domain.dto.BgtTaskDTO;
|
||||||
import com.ruoyi.bgt.domain.dto.BgtWageApplicationQueryDTO;
|
import com.ruoyi.bgt.domain.dto.BgtWageApplicationQueryDTO;
|
||||||
import com.ruoyi.bgt.domain.vo.*;
|
import com.ruoyi.bgt.domain.vo.*;
|
||||||
|
import com.ruoyi.bgt.service.IBgtMessageService;
|
||||||
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
|
import com.ruoyi.bgt.service.IBgtProjectRecruitApplyService;
|
||||||
import com.ruoyi.bgt.service.IBgtProjectTaskProgressService;
|
import com.ruoyi.bgt.service.IBgtProjectTaskProgressService;
|
||||||
import com.ruoyi.bgt.service.IBgtWageApplicationService;
|
import com.ruoyi.bgt.service.IBgtWageApplicationService;
|
||||||
@ -46,16 +50,20 @@ 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;
|
||||||
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
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;
|
||||||
|
|
||||||
|
import static com.ruoyi.common.constants.BgtMessageConstant.*;
|
||||||
|
import static com.ruoyi.common.constants.FbsMessageConstant.FBS_TYPE_REMIND;
|
||||||
|
import static com.ruoyi.common.constants.FbsMessageConstant.fbsMessage;
|
||||||
|
import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.USERTYPE_BGT;
|
||||||
|
import static com.ruoyi.common.constants.WgzAndBgtMessageConstant.USERTYPE_FBS;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分包商项目任务Service业务层处理
|
* 分包商项目任务Service业务层处理
|
||||||
*
|
*
|
||||||
@ -83,6 +91,8 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
|
|||||||
private IZbfProjectSectionService zbfProjectSectionService;
|
private IZbfProjectSectionService zbfProjectSectionService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IFbsProjectTaskService fbsProjectTaskService;
|
private IFbsProjectTaskService fbsProjectTaskService;
|
||||||
|
@Autowired
|
||||||
|
private IBgtMessageService bgtMessageService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public FbsProjectTask queryById(Long id){
|
public FbsProjectTask queryById(Long id){
|
||||||
@ -121,10 +131,18 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean insert(FbsProjectTask bo) {
|
public Boolean insert(FbsProjectTask bo) {
|
||||||
FbsProjectTask add = BeanUtil.toBean(bo, FbsProjectTask.class);
|
FbsProjectTask add = BeanUtil.toBean(bo, FbsProjectTask.class);
|
||||||
validEntityBeforeSave(add);
|
validEntityBeforeSave(add);
|
||||||
return save(add);
|
|
||||||
|
//修改项目状态
|
||||||
|
ZbfProject byId = zbfProjectService.getById(add.getProjectId());
|
||||||
|
if(byId.getProjectStatus().equals(ProjectTaskStatus.COMPLETE.getCode())){
|
||||||
|
byId.setProjectStatus(ProjectTaskStatus.PROGRESS.getCode());
|
||||||
|
zbfProjectService.updateById(byId);
|
||||||
|
}
|
||||||
|
return save(add);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -454,4 +472,56 @@ public class FbsProjectTaskServiceImpl extends ServicePlusImpl<FbsProjectTaskMap
|
|||||||
Page<FbsProjectTask> page = page(PageUtils.buildPage(), wrapper);
|
Page<FbsProjectTask> page = page(PageUtils.buildPage(), wrapper);
|
||||||
return PageUtils.buildDataInfo(page);
|
return PageUtils.buildDataInfo(page);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public Boolean complete(Long taskId) {
|
||||||
|
//更改任务状态
|
||||||
|
FbsProjectTask task = getById(taskId);
|
||||||
|
task.setStatus(ProjectTaskStatus.COMPLETE.getCode());
|
||||||
|
//批量退场
|
||||||
|
recruitApplyService.quitBatch(taskId,LocalDate.now());
|
||||||
|
return updateById(task);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean checkBeforeComplete(Long taskId) {
|
||||||
|
boolean result = true;
|
||||||
|
BgtProjectRecruitApplyQueryDTO dto = new BgtProjectRecruitApplyQueryDTO();
|
||||||
|
dto.setTaskId(taskId);
|
||||||
|
dto.setStatus(Collections.singletonList(RecruitApplyStatus.WORKING.getCode()));
|
||||||
|
List<BgtProjectRecruitApplyVO> bgtProjectRecruitApplyVOS = recruitApplyService.appAllList(dto);
|
||||||
|
|
||||||
|
if (CollectionUtil.isNotEmpty(bgtProjectRecruitApplyVOS)) {
|
||||||
|
for (BgtProjectRecruitApplyVO vo : bgtProjectRecruitApplyVOS) {
|
||||||
|
if (recruitApplyService.quitCheck(vo.getId())) {
|
||||||
|
result= false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean sendRemindMessage(Long taskId) {
|
||||||
|
FbsProjectTask task = getById(taskId);
|
||||||
|
HashMap<String, String> mp = new HashMap<>();
|
||||||
|
mp.put("projectName", task.getTaskName());
|
||||||
|
mp.put("auditor", SecurityUtils.getUsername());
|
||||||
|
Map<String, String> map = fbsMessage(mp, FBS_TYPE_REMIND, true);
|
||||||
|
BgtMessage bgtMessage = new BgtMessage()
|
||||||
|
.setSenderId(SecurityUtils.getAppUserId())
|
||||||
|
.setSenderType(USERTYPE_FBS)
|
||||||
|
.setRecipientType(USERTYPE_BGT)
|
||||||
|
.setRecipientId(task.getUserId())
|
||||||
|
.setHeadline(map.get(HEADLINE))
|
||||||
|
.setSubheading(map.get(SUBHEADING))
|
||||||
|
.setTableId(task.getId())
|
||||||
|
.setTableName(SqlHelper.table(FbsProjectTask.class).getTableName())
|
||||||
|
.setMessageLargeType(BGT_LARGE_OTHER)
|
||||||
|
.setMessageSmallType(BGT_SMALL_SYSTEM);
|
||||||
|
return bgtMessageService.sendAMessage(bgtMessage);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,5 +65,9 @@ public interface IZbfProjectSubcontractingApplyService extends IServicePlus<ZbfP
|
|||||||
*/
|
*/
|
||||||
TableDataInfo<ZbfProjectSubcontractingApplyListVO> getFbsList(ZbfProjectSubApplyListDTO dto);
|
TableDataInfo<ZbfProjectSubcontractingApplyListVO> getFbsList(ZbfProjectSubApplyListDTO dto);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据分包商Id和分包ID查询申请
|
||||||
|
*/
|
||||||
|
ZbfProjectSubcontractingApply queryBySubIdAndFbsUserId(Long subId, Long fbsUserId);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -220,7 +220,8 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
|
|||||||
.eq(ZbfProjectSubcontractingApply::getProjectId, projectId)
|
.eq(ZbfProjectSubcontractingApply::getProjectId, projectId)
|
||||||
.eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId())
|
.eq(ZbfProjectSubcontractingApply::getFbsUserId, SecurityUtils.getAppUserId())
|
||||||
.in(ZbfProjectSubcontractingApply::getApplyStatus, SubcontractingApplyStatus.getApplyStatus()));
|
.in(ZbfProjectSubcontractingApply::getApplyStatus, SubcontractingApplyStatus.getApplyStatus()));
|
||||||
List<Long> applyIds = applyList.stream().map(ZbfProjectSubcontractingApply::getSubId).collect(Collectors.toList());
|
Map<Long, String> map = applyList.stream().collect(Collectors.toMap(ZbfProjectSubcontractingApply::getSubId, ZbfProjectSubcontractingApply::getApplyStatus));
|
||||||
|
|
||||||
|
|
||||||
//标段处理
|
//标段处理
|
||||||
List<FbsProjectSectionListVO> sectionListVO = new ArrayList<>();
|
List<FbsProjectSectionListVO> sectionListVO = new ArrayList<>();
|
||||||
@ -235,11 +236,12 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
|
|||||||
.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()));
|
.eq(ZbfProjectSubcontracting::getSectionId, zbfProjectSection.getId()));
|
||||||
//排除掉未申请和已同意的分包
|
//排除掉未申请和已同意的分包
|
||||||
for (ZbfProjectSubcontracting sub : subList) {
|
for (ZbfProjectSubcontracting sub : subList) {
|
||||||
if (!applyIds.contains(sub.getId())) {
|
if (map.get(sub.getId()) == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO();
|
FbsProjectSubcontractingListVO fbsProjectSubcontractingListVO = new FbsProjectSubcontractingListVO();
|
||||||
BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO);
|
BeanUtil.copyProperties(sub, fbsProjectSubcontractingListVO);
|
||||||
|
fbsProjectSubcontractingListVO.setApplyStatus(map.get(sub.getId()));
|
||||||
subListVO.add(fbsProjectSubcontractingListVO);
|
subListVO.add(fbsProjectSubcontractingListVO);
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isEmpty(subListVO)) {
|
if (CollectionUtil.isEmpty(subListVO)) {
|
||||||
@ -485,6 +487,8 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
|
|||||||
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.setApplyStatus(SubcontractingApplyStatus.PASS.getCode());
|
||||||
subListVO.add(fbsProjectSubcontractingListVO);
|
subListVO.add(fbsProjectSubcontractingListVO);
|
||||||
}
|
}
|
||||||
if (CollectionUtil.isEmpty(subListVO)) {
|
if (CollectionUtil.isEmpty(subListVO)) {
|
||||||
@ -617,14 +621,14 @@ public class ZbfProjectServiceImpl extends ServicePlusImpl<ZbfProjectMapper, Zbf
|
|||||||
.eq(ZbfProjectSection::getProjectId, zbfProjectListVO.getId()));
|
.eq(ZbfProjectSection::getProjectId, zbfProjectListVO.getId()));
|
||||||
for (ZbfProjectSection zbfProjectSection : sectionList) {
|
for (ZbfProjectSection zbfProjectSection : sectionList) {
|
||||||
//分包处理
|
//分包处理
|
||||||
List<ZbfProjectSubcontractingListVO> 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()));
|
||||||
|
List<ZbfProjectSubcontractingListVO> zbfProjectSubcontractingListVOS = BeanUtil.copyToList(subList, ZbfProjectSubcontractingListVO.class);
|
||||||
|
|
||||||
ZbfProjectSectionListVO zbfProjectSectionListVO = new ZbfProjectSectionListVO();
|
ZbfProjectSectionListVO zbfProjectSectionListVO = new ZbfProjectSectionListVO();
|
||||||
BeanUtil.copyProperties(zbfProjectSection, zbfProjectSectionListVO);
|
BeanUtil.copyProperties(zbfProjectSection, zbfProjectSectionListVO);
|
||||||
zbfProjectSectionListVO.setSubList(subListVO);
|
zbfProjectSectionListVO.setSubList(zbfProjectSubcontractingListVOS);
|
||||||
sectionListVO.add(zbfProjectSectionListVO);
|
sectionListVO.add(zbfProjectSectionListVO);
|
||||||
}
|
}
|
||||||
zbfProjectListVO.setSectionList(sectionListVO);
|
zbfProjectListVO.setSectionList(sectionListVO);
|
||||||
|
@ -251,4 +251,14 @@ public class ZbfProjectSubcontractingApplyServiceImpl extends ServicePlusImpl<Zb
|
|||||||
Page<ZbfProjectSubcontractingApplyListVO> fbsList = baseMapper.getFbsList(queryDTOPage, dto);
|
Page<ZbfProjectSubcontractingApplyListVO> fbsList = baseMapper.getFbsList(queryDTOPage, dto);
|
||||||
return PageUtils.buildDataInfo(fbsList);
|
return PageUtils.buildDataInfo(fbsList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ZbfProjectSubcontractingApply queryBySubIdAndFbsUserId(Long subId, Long fbsUserId) {
|
||||||
|
LambdaQueryWrapper<ZbfProjectSubcontractingApply> wrapper = new LambdaQueryWrapper<>();
|
||||||
|
wrapper.eq(ZbfProjectSubcontractingApply::getSubId, subId);
|
||||||
|
wrapper.eq(ZbfProjectSubcontractingApply::getFbsUserId, fbsUserId);
|
||||||
|
wrapper.orderByDesc(ZbfProjectSubcontractingApply::getId);
|
||||||
|
List<ZbfProjectSubcontractingApply> list = baseMapper.selectList(wrapper);
|
||||||
|
return CollectionUtil.getFirst(list);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user