修改部分bug
This commit is contained in:
parent
e78bd59a1a
commit
e227639e8a
|
|
@ -97,6 +97,9 @@ public class SysDept extends BaseEntity
|
|||
/** 部门全路径名称 */
|
||||
private String fullPathName;
|
||||
|
||||
/** 组织关联项目数量 */
|
||||
private Integer projectCount;
|
||||
|
||||
public Long getDeptId()
|
||||
{
|
||||
return deptId;
|
||||
|
|
@ -323,6 +326,16 @@ public class SysDept extends BaseEntity
|
|||
this.fullPathName = fullPathName;
|
||||
}
|
||||
|
||||
public Integer getProjectCount()
|
||||
{
|
||||
return projectCount;
|
||||
}
|
||||
|
||||
public void setProjectCount(Integer projectCount)
|
||||
{
|
||||
this.projectCount = projectCount;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||
|
|
@ -347,6 +360,7 @@ public class SysDept extends BaseEntity
|
|||
.append("auditTime", getAuditTime())
|
||||
.append("companyScore", getCompanyScore())
|
||||
.append("fullPathName", getFullPathName())
|
||||
.append("projectCount", getProjectCount())
|
||||
.append("createBy", getCreateBy())
|
||||
.append("createTime", getCreateTime())
|
||||
.append("updateBy", getUpdateBy())
|
||||
|
|
|
|||
|
|
@ -113,6 +113,9 @@ public class SysUser extends BaseEntity
|
|||
/** 关键字(用于模糊查询用户名、昵称、手机号等) */
|
||||
private String keyword;
|
||||
|
||||
/** 签发人管理项目范围(逗号分隔项目名称) */
|
||||
private String issuerProjectScope;
|
||||
|
||||
/** 开始时间 */
|
||||
private String beginTime;
|
||||
|
||||
|
|
@ -392,6 +395,16 @@ public class SysUser extends BaseEntity
|
|||
this.keyword = keyword;
|
||||
}
|
||||
|
||||
public String getIssuerProjectScope()
|
||||
{
|
||||
return issuerProjectScope;
|
||||
}
|
||||
|
||||
public void setIssuerProjectScope(String issuerProjectScope)
|
||||
{
|
||||
this.issuerProjectScope = issuerProjectScope;
|
||||
}
|
||||
|
||||
public String getBeginTime()
|
||||
{
|
||||
return beginTime;
|
||||
|
|
@ -440,6 +453,7 @@ public class SysUser extends BaseEntity
|
|||
.append("remark", getRemark())
|
||||
.append("dept", getDept())
|
||||
.append("roleNames", getRoleNames())
|
||||
.append("issuerProjectScope", getIssuerProjectScope())
|
||||
.append("beginTime", getBeginTime())
|
||||
.append("endTime", getEndTime())
|
||||
.toString();
|
||||
|
|
|
|||
|
|
@ -54,10 +54,10 @@ public class ProjectImplementationController extends BaseController {
|
|||
if (workPlan == null) {
|
||||
return error("项目不存在");
|
||||
}
|
||||
// 验证项目是否已审批通过(允许查看未实施和实施中的项目)
|
||||
if (!"2".equals(workPlan.getProjectStatus()) || !"1".equals(workPlan.getApprovalStatus())) {
|
||||
return error("项目未进入实施阶段");
|
||||
}
|
||||
// // 验证项目是否已审批通过(允许查看未实施和实施中的项目)
|
||||
// if (!"2".equals(workPlan.getProjectStatus()) || !"1".equals(workPlan.getApprovalStatus())) {
|
||||
// return error("项目未进入实施阶段");
|
||||
// }
|
||||
return success(workPlan);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.admin.contractor.controller;
|
|||
|
||||
import com.admin.contractor.domain.WorkPlan;
|
||||
import com.admin.contractor.domain.dto.WorkPlanCompletionReviewDTO;
|
||||
import com.admin.contractor.domain.dto.WorkPlanPropertyCompletionReviewDTO;
|
||||
import com.admin.contractor.service.IWorkPlanService;
|
||||
import com.ruoyi.common.core.web.controller.BaseController;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
|
|
@ -161,4 +162,17 @@ public class WorkPlanController extends BaseController {
|
|||
}
|
||||
return error("现场完工复核失败");
|
||||
}
|
||||
/**
|
||||
* 物业完工复核(提交通过/驳回)
|
||||
*/
|
||||
@Operation(summary = "物业完工复核")
|
||||
@Log(title = "物业完工复核", businessType = BusinessType.UPDATE)
|
||||
@PutMapping("/propertyCompletionReview")
|
||||
public AjaxResult propertyCompletionReview(@Validated @RequestBody WorkPlanPropertyCompletionReviewDTO dto) {
|
||||
int rows = workPlanService.propertyCompletionReview(dto);
|
||||
if (rows > 0) {
|
||||
return success("物业完工复核处理成功");
|
||||
}
|
||||
return error("物业完工复核处理失败");
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -144,12 +144,11 @@ public class WorkTicketController extends BaseController {
|
|||
@PutMapping("/approve/{ticketId}")
|
||||
public AjaxResult approve(@Parameter(description = "工作票 ID") @PathVariable("ticketId") Long ticketId,
|
||||
@Parameter(description = "审核意见") @RequestParam(required = false) String reviewComment,
|
||||
@Parameter(description = "审批后状态:2已签发(默认)") @RequestParam(required = false, defaultValue = "2") String status,
|
||||
@Parameter(description = "施工作业必要性:0 不必要 1 必要") @RequestParam(required = false) String reviewNecessity,
|
||||
@Parameter(description = "施工作业可行性:0 不可行 1 可行") @RequestParam(required = false) String reviewFeasibility,
|
||||
@Parameter(description = "票证内容完整性(JSON 数组)") @RequestParam(required = false) String reviewCompleteness,
|
||||
@Parameter(description = "施工条件确认:0 不符合 1 符合") @RequestParam(required = false) String reviewCondition) {
|
||||
return toAjax(workTicketService.approveWorkTicket(ticketId, reviewComment, status, reviewNecessity, reviewFeasibility, reviewCompleteness, reviewCondition));
|
||||
return toAjax(workTicketService.approveWorkTicket(ticketId, reviewComment, reviewNecessity, reviewFeasibility, reviewCompleteness, reviewCondition));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -53,6 +53,9 @@ public class WorkPlan extends BaseEntity {
|
|||
|
||||
@Schema(description = "作业负责人职位")
|
||||
private String supervisorPosition;
|
||||
|
||||
@Schema(description = "施工负责人电话")
|
||||
private String supervisorPhone;
|
||||
|
||||
@Schema(description = "作业班成员用户ID(JSON数组,存储用户ID)")
|
||||
private String sysUsers;
|
||||
|
|
@ -143,6 +146,24 @@ public class WorkPlan extends BaseEntity {
|
|||
|
||||
@Schema(description = "物业复核状态(关联查询)")
|
||||
private String propertyReviewStatus;
|
||||
|
||||
@Schema(description = "物业完工复核-作业内容完成度:1-100%完成,2-部分完成,3-未完成")
|
||||
private String propertyWorkContentCompletion;
|
||||
|
||||
@Schema(description = "物业完工复核-现场清理情况:1-符合要求,0-不符合")
|
||||
private String propertySiteCleaningCondition;
|
||||
|
||||
@Schema(description = "物业完工复核-现场复核照片URL,多个逗号分隔")
|
||||
private String propertyReviewPhotos;
|
||||
|
||||
@Schema(description = "物业完工复核-复核意见")
|
||||
private String propertyReviewComment;
|
||||
|
||||
@Schema(description = "物业完工复核-复核人")
|
||||
private String propertyReviewBy;
|
||||
|
||||
@Schema(description = "物业完工复核-复核时间")
|
||||
private String propertyReviewTime;
|
||||
|
||||
@Schema(description = "作业周期(关联查询,格式:开始时间 至 结束时间)")
|
||||
private String workPeriod;
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
package com.admin.contractor.domain.dto;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 物业完工复核 DTO
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "物业完工复核请求")
|
||||
public class WorkPlanPropertyCompletionReviewDTO {
|
||||
|
||||
@Schema(description = "项目ID", required = true, example = "1001")
|
||||
private Long projectId;
|
||||
|
||||
@Schema(description = "物业复核动作:1-提交通过,2-驳回", required = true, example = "1")
|
||||
private String propertyReviewStatus;
|
||||
|
||||
@Schema(description = "作业内容完成度:1-100%完成,2-部分完成,3-未完成", required = true, example = "1")
|
||||
private String workContentCompletion;
|
||||
|
||||
@Schema(description = "现场清理情况:1-符合要求,0-不符合", required = true, example = "1")
|
||||
private String siteCleaningCondition;
|
||||
|
||||
@Schema(description = "现场复核照片URL,多个逗号分隔,至少3张", required = true)
|
||||
private String propertyReviewPhotos;
|
||||
|
||||
@Schema(description = "复核意见")
|
||||
private String propertyReviewComment;
|
||||
|
||||
@Schema(description = "复核人(后端自动填充)")
|
||||
private String propertyReviewBy;
|
||||
|
||||
@Schema(description = "复核时间(后端自动填充)")
|
||||
private String propertyReviewTime;
|
||||
}
|
||||
|
|
@ -2,6 +2,7 @@ package com.admin.contractor.mapper;
|
|||
|
||||
import com.admin.contractor.domain.WorkPlan;
|
||||
import com.admin.contractor.domain.dto.WorkPlanCompletionReviewDTO;
|
||||
import com.admin.contractor.domain.dto.WorkPlanPropertyCompletionReviewDTO;
|
||||
import org.apache.ibatis.annotations.Mapper;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
|
|
@ -133,5 +134,12 @@ public interface WorkPlanMapper {
|
|||
*/
|
||||
int updateCompletionReviewWithStatus(WorkPlanCompletionReviewDTO dto);
|
||||
|
||||
/**
|
||||
* 更新物业完工复核信息
|
||||
*
|
||||
* @param dto 物业完工复核请求参数
|
||||
* @return 结果
|
||||
*/
|
||||
int updatePropertyCompletionReview(WorkPlanPropertyCompletionReviewDTO dto);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@ package com.admin.contractor.service;
|
|||
|
||||
import com.admin.contractor.domain.WorkPlan;
|
||||
import com.admin.contractor.domain.dto.WorkPlanCompletionReviewDTO;
|
||||
import com.admin.contractor.domain.dto.WorkPlanPropertyCompletionReviewDTO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -126,4 +127,12 @@ public interface IWorkPlanService {
|
|||
* @return 结果
|
||||
*/
|
||||
int completionReview(WorkPlanCompletionReviewDTO dto);
|
||||
|
||||
/**
|
||||
* 物业完工复核
|
||||
*
|
||||
* @param dto 物业完工复核请求参数
|
||||
* @return 结果
|
||||
*/
|
||||
int propertyCompletionReview(WorkPlanPropertyCompletionReviewDTO dto);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -82,7 +82,7 @@ public interface IWorkTicketService {
|
|||
* @param reviewComment 审核意见
|
||||
* @return 结果
|
||||
*/
|
||||
int approveWorkTicket(Long ticketId, String reviewComment, String status, String reviewNecessity, String reviewFeasibility, String reviewCompleteness, String reviewCondition);
|
||||
int approveWorkTicket(Long ticketId, String reviewComment, String reviewNecessity, String reviewFeasibility, String reviewCompleteness, String reviewCondition);
|
||||
|
||||
/**
|
||||
* 审批工作票(驳回)
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ import com.admin.contractor.domain.RiskControlCard;
|
|||
import com.admin.contractor.domain.WorkPlan;
|
||||
import com.admin.contractor.domain.WorkTicket;
|
||||
import com.admin.contractor.domain.dto.WorkPlanCompletionReviewDTO;
|
||||
import com.admin.contractor.domain.dto.WorkPlanPropertyCompletionReviewDTO;
|
||||
import com.admin.contractor.mapper.AccessPermitMapper;
|
||||
import com.admin.contractor.mapper.ConstructionIssueFeedbackMapper;
|
||||
import com.admin.contractor.mapper.ConstructionIssueRectificationMapper;
|
||||
|
|
@ -749,4 +750,70 @@ public class WorkPlanServiceImpl implements IWorkPlanService {
|
|||
throw new ServiceException("现场完工复核失败:" + e.getMessage());
|
||||
}
|
||||
}
|
||||
/**
|
||||
* 物业完工复核(提交通过/驳回)
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int propertyCompletionReview(WorkPlanPropertyCompletionReviewDTO dto) {
|
||||
if (dto == null || dto.getProjectId() == null) {
|
||||
throw new ServiceException("项目ID不能为空");
|
||||
}
|
||||
|
||||
WorkPlan workPlan = workPlanMapper.selectWorkPlanById(dto.getProjectId());
|
||||
if (workPlan == null) {
|
||||
throw new ServiceException("工作计划不存在");
|
||||
}
|
||||
|
||||
String reviewStatus = dto.getPropertyReviewStatus();
|
||||
if (!"1".equals(reviewStatus) && !"2".equals(reviewStatus)) {
|
||||
throw new ServiceException("物业复核动作必须为 1(提交通过)或 2(驳回)");
|
||||
}
|
||||
|
||||
// 提交通过前校验:项目申请的球机必须全部归还入库
|
||||
if ("1".equals(reviewStatus) && pcCameraAllocMapper != null) {
|
||||
int notInboundCount = pcCameraAllocMapper.countNotInboundByProjectIds(new Long[]{dto.getProjectId()});
|
||||
if (notInboundCount > 0) {
|
||||
throw new ServiceException("当前项目仍有 " + notInboundCount + " 台球机未归还入库,不能提交通过");
|
||||
}
|
||||
}
|
||||
|
||||
String completion = dto.getWorkContentCompletion();
|
||||
if (!"1".equals(completion) && !"2".equals(completion) && !"3".equals(completion)) {
|
||||
throw new ServiceException("作业内容完成度必须为 1(100%完成)、2(部分完成)或 3(未完成)");
|
||||
}
|
||||
|
||||
String cleaning = dto.getSiteCleaningCondition();
|
||||
if (!"1".equals(cleaning) && !"0".equals(cleaning)) {
|
||||
throw new ServiceException("现场清理情况必须为 1(符合要求)或 0(不符合)");
|
||||
}
|
||||
|
||||
String photos = dto.getPropertyReviewPhotos();
|
||||
if (StringUtils.isEmpty(photos) || photos.trim().isEmpty()) {
|
||||
throw new ServiceException("现场复核照片不能为空");
|
||||
}
|
||||
String[] photoArray = photos.split(",");
|
||||
long validPhotoCount = 0;
|
||||
for (String photo : photoArray) {
|
||||
if (StringUtils.isNotEmpty(photo) && !photo.trim().isEmpty()) {
|
||||
validPhotoCount++;
|
||||
}
|
||||
}
|
||||
if (validPhotoCount < 3) {
|
||||
throw new ServiceException("现场复核照片至少需要上传 3 张,当前上传 " + validPhotoCount + " 张");
|
||||
}
|
||||
|
||||
if ("2".equals(reviewStatus) && (StringUtils.isEmpty(dto.getPropertyReviewComment()) || dto.getPropertyReviewComment().trim().isEmpty())) {
|
||||
throw new ServiceException("驳回时复核意见不能为空");
|
||||
}
|
||||
|
||||
String currentUsername = SecurityUtils.getUsername();
|
||||
if (StringUtils.isEmpty(currentUsername) || currentUsername.trim().isEmpty()) {
|
||||
throw new ServiceException("无法获取当前用户信息");
|
||||
}
|
||||
|
||||
dto.setPropertyReviewBy(currentUsername);
|
||||
dto.setPropertyReviewTime(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
||||
return workPlanMapper.updatePropertyCompletionReview(dto);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
|
|||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public int approveWorkTicket(Long ticketId, String reviewComment, String status, String reviewNecessity, String reviewFeasibility, String reviewCompleteness, String reviewCondition) {
|
||||
public int approveWorkTicket(Long ticketId, String reviewComment, String reviewNecessity, String reviewFeasibility, String reviewCompleteness, String reviewCondition) {
|
||||
WorkTicket ticket = workTicketMapper.selectWorkTicketById(ticketId);
|
||||
if (ticket == null) {
|
||||
throw new ServiceException("工作票申请不存在");
|
||||
|
|
@ -260,10 +260,8 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
|
|||
}
|
||||
}
|
||||
String reviewer = SecurityUtils.getUsername();
|
||||
// 默认审批通过后置为已签发
|
||||
if (StringUtils.isEmpty(status)) {
|
||||
status = "2";
|
||||
}
|
||||
// 审批通过后固定置为已签发
|
||||
String status = "2";
|
||||
// 更新状态为已签发,并保存审核确认信息
|
||||
WorkTicket updateTicket = new WorkTicket();
|
||||
updateTicket.setTicketId(ticketId);
|
||||
|
|
@ -313,6 +311,7 @@ public class WorkTicketServiceImpl implements IWorkTicketService {
|
|||
// 更新状态为已驳回,并保存审核确认信息
|
||||
WorkTicket updateTicket = new WorkTicket();
|
||||
updateTicket.setTicketId(ticketId);
|
||||
updateTicket.setStatus("3");
|
||||
updateTicket.setReviewer(reviewer);
|
||||
updateTicket.setReviewTime(new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
||||
updateTicket.setReviewComment(reviewComment);
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.admin.property.controller;
|
||||
|
||||
import com.admin.property.service.IPcRiskProjectService;
|
||||
import com.admin.property.domain.vo.PcRiskProjectAllocDetailVO;
|
||||
import com.ruoyi.common.core.web.controller.BaseController;
|
||||
import com.ruoyi.common.core.web.domain.AjaxResult;
|
||||
import com.ruoyi.common.core.web.page.TableDataInfo;
|
||||
|
|
@ -15,6 +16,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
|
|||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import static com.ruoyi.common.security.utils.SecurityUtils.getUsername;
|
||||
import java.util.List;
|
||||
|
||||
@Tag(name = "移动监控球机申领管理")
|
||||
@RestController
|
||||
|
|
@ -89,4 +91,13 @@ public class PcRiskProjectController extends BaseController {
|
|||
public AjaxResult getWorkPlanInfoByTicketId(@PathVariable Long ticketId) {
|
||||
return success(pcRiskProjectService.getWorkPlanInfoByTicketId(ticketId));
|
||||
}
|
||||
|
||||
/** 按项目ID查询球机申请单及球机申请记录 */
|
||||
@Operation(summary = "按项目ID查询球机申请及申请记录")
|
||||
@PreAuthorize("@ss.hasPermi('property:cameraApplication:query')")
|
||||
@GetMapping("/project/{projectId}/allocRecords")
|
||||
public AjaxResult getApplicationsWithAllocRecordsByProjectId(@PathVariable Long projectId) {
|
||||
List<PcRiskProjectAllocDetailVO> list = pcRiskProjectService.selectApplicationsWithAllocRecordsByProjectId(projectId);
|
||||
return success(list);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
package com.admin.property.domain.vo;
|
||||
|
||||
import com.admin.property.domain.PcCameraAlloc;
|
||||
import com.admin.property.domain.PcRiskProject;
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 项目球机申请及分配记录明细
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "项目球机申请及分配记录明细")
|
||||
public class PcRiskProjectAllocDetailVO {
|
||||
|
||||
@Schema(description = "球机申请单信息")
|
||||
private PcRiskProject application;
|
||||
|
||||
@Schema(description = "球机申请记录(分配/回收/入库记录)")
|
||||
private List<PcCameraAlloc> allocRecords;
|
||||
}
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
package com.admin.property.service;
|
||||
|
||||
import com.admin.property.domain.PcRiskProject;
|
||||
import com.admin.property.domain.vo.PcRiskProjectAllocDetailVO;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
|
@ -23,6 +24,14 @@ public interface IPcRiskProjectService {
|
|||
*/
|
||||
PcRiskProject getWorkPlanInfoByTicketId(Long ticketId);
|
||||
|
||||
/**
|
||||
* 按项目ID查询球机申请单及对应申请记录
|
||||
*
|
||||
* @param projectId 项目ID
|
||||
* @return 申请单及申请记录列表
|
||||
*/
|
||||
List<PcRiskProjectAllocDetailVO> selectApplicationsWithAllocRecordsByProjectId(Long projectId);
|
||||
|
||||
|
||||
public List<PcRiskProject> selectProjectCompletionReviewList(PcRiskProject pcRiskProject);
|
||||
|
||||
|
|
@ -43,4 +52,4 @@ public interface IPcRiskProjectService {
|
|||
*/
|
||||
int updateWorkTicketId(Long applicationId, Long workTicketId);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@ package com.admin.property.service.impl;
|
|||
|
||||
import com.ruoyi.common.core.exception.ServiceException;
|
||||
import com.ruoyi.common.core.utils.StringUtils;
|
||||
import com.admin.property.domain.PcCameraAlloc;
|
||||
import com.admin.property.domain.PcRiskProject;
|
||||
import com.admin.property.domain.vo.PcRiskProjectAllocDetailVO;
|
||||
import com.admin.property.mapper.PcRiskProjectMapper;
|
||||
import com.admin.property.mapper.PcCameraAllocMapper;
|
||||
import com.admin.property.service.IPcRiskProjectService;
|
||||
|
|
@ -316,6 +318,30 @@ public class PcRiskProjectServiceImpl implements IPcRiskProjectService {
|
|||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PcRiskProjectAllocDetailVO> selectApplicationsWithAllocRecordsByProjectId(Long projectId) {
|
||||
if (projectId == null) {
|
||||
throw new ServiceException("项目ID不能为空");
|
||||
}
|
||||
PcRiskProject query = new PcRiskProject();
|
||||
query.setProjectId(projectId);
|
||||
List<PcRiskProject> applications = pcRiskProjectMapper.selectPcRiskProjectList(query);
|
||||
List<PcRiskProjectAllocDetailVO> result = new ArrayList<>();
|
||||
if (applications == null || applications.isEmpty()) {
|
||||
return result;
|
||||
}
|
||||
for (PcRiskProject application : applications) {
|
||||
PcRiskProjectAllocDetailVO vo = new PcRiskProjectAllocDetailVO();
|
||||
vo.setApplication(application);
|
||||
List<PcCameraAlloc> allocRecords = pcCameraAllocMapper == null
|
||||
? new ArrayList<>()
|
||||
: pcCameraAllocMapper.selectAllocListByProjectId(application.getApplicationId());
|
||||
vo.setAllocRecords(allocRecords);
|
||||
result.add(vo);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public int updateWorkTicketId(Long applicationId, Long workTicketId) {
|
||||
|
|
|
|||
|
|
@ -250,6 +250,7 @@
|
|||
left join sys_dept d on d.dept_id = u.dept_id and d.del_flag = '0'
|
||||
left join work_ticket wt on wt.ticket_id = r.work_ticket_id and wt.del_flag = '0'
|
||||
where r.del_flag='0'
|
||||
and wp.approval_status = '1'
|
||||
<if test="projectName != null and projectName != ''">
|
||||
and wp.project_name like concat('%', #{projectName}, '%')
|
||||
</if>
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
<result property="supervisorId" column="supervisor_id" />
|
||||
<result property="supervisorName" column="supervisor_name" />
|
||||
<result property="supervisorPosition" column="supervisor_position" />
|
||||
<result property="supervisorPhone" column="supervisor_phone" />
|
||||
<result property="sysUsers" column="team_members" />
|
||||
<result property="constructionUnitId" column="construction_unit_id" />
|
||||
<result property="constructionUnitName" column="construction_unit_name" />
|
||||
|
|
@ -45,9 +46,19 @@
|
|||
<result property="accessPermitValidity" column="access_permit_validity" />
|
||||
<result property="accessPermitStatus" column="access_permit_status" />
|
||||
<result property="propertyReviewStatus" column="property_review_status" />
|
||||
<result property="propertyWorkContentCompletion" column="property_work_content_completion" />
|
||||
<result property="propertySiteCleaningCondition" column="property_site_cleaning_condition" />
|
||||
<result property="propertyReviewPhotos" column="property_review_photos" />
|
||||
<result property="propertyReviewComment" column="property_review_comment" />
|
||||
<result property="propertyReviewBy" column="property_review_by" />
|
||||
<result property="propertyReviewTime" column="property_review_time" />
|
||||
<result property="workPeriod" column="work_period" />
|
||||
<result property="aiIssueCount" column="ai_issue_count" />
|
||||
<result property="completionReviewResult" column="completion_review_result" />
|
||||
<result property="completionReviewPhotos" column="completion_review_photos" />
|
||||
<result property="completionReviewBy" column="completion_review_by" />
|
||||
<result property="completionReviewTime" column="completion_review_time" />
|
||||
<result property="completionReviewRemark" column="completion_review_remark" />
|
||||
</resultMap>
|
||||
|
||||
<select id="selectWorkPlanById" parameterType="Long" resultMap="WorkPlanResult">
|
||||
|
|
@ -213,6 +224,7 @@
|
|||
wp.supervisor_id,
|
||||
wp.supervisor_name,
|
||||
wp.supervisor_position,
|
||||
su.phonenumber as supervisor_phone,
|
||||
wp.team_members,
|
||||
wp.construction_unit_id,
|
||||
wp.construction_unit_name,
|
||||
|
|
@ -227,6 +239,10 @@
|
|||
wp.approval_time,
|
||||
wp.approval_comment,
|
||||
wp.completion_review_result,
|
||||
wp.completion_review_photos,
|
||||
wp.completion_review_by,
|
||||
wp.completion_review_time,
|
||||
wp.completion_review_remark,
|
||||
wp.current_progress,
|
||||
wp.remark,
|
||||
wp.del_flag,
|
||||
|
|
@ -234,14 +250,21 @@
|
|||
wp.create_time,
|
||||
wp.update_by,
|
||||
wp.update_time,
|
||||
wp.property_review_status,
|
||||
wp.property_work_content_completion,
|
||||
wp.property_site_cleaning_condition,
|
||||
wp.property_review_photos,
|
||||
wp.property_review_comment,
|
||||
wp.property_review_by,
|
||||
wp.property_review_time,
|
||||
wt_normal.status as work_ticket_status,
|
||||
wt_hazardous.status as hazardous_work_ticket_status,
|
||||
wt_normal.reviewer as issuer,
|
||||
ap.permit_number as access_permit_number,
|
||||
concat(ap.validity_start_time, ' 至 ', ap.validity_end_time) as access_permit_validity,
|
||||
ap.status as access_permit_status,
|
||||
'' as property_review_status
|
||||
ap.status as access_permit_status
|
||||
from work_plan wp
|
||||
left join sys_user su on su.user_id = wp.supervisor_id and su.del_flag = '0'
|
||||
left join (
|
||||
select project_id, status, ticket_type, reviewer,
|
||||
row_number() over (partition by project_id order by create_time desc) as rn
|
||||
|
|
@ -315,5 +338,31 @@
|
|||
where project_id = #{projectId}
|
||||
</update>
|
||||
|
||||
<!-- 更新物业完工复核信息(提交通过/驳回) -->
|
||||
<update id="updatePropertyCompletionReview" parameterType="com.admin.contractor.domain.dto.WorkPlanPropertyCompletionReviewDTO">
|
||||
update work_plan
|
||||
<set>
|
||||
property_review_status = #{propertyReviewStatus},
|
||||
property_work_content_completion = #{workContentCompletion},
|
||||
property_site_cleaning_condition = #{siteCleaningCondition},
|
||||
property_review_photos = #{propertyReviewPhotos},
|
||||
<if test="propertyReviewComment != null">property_review_comment = #{propertyReviewComment},</if>
|
||||
property_review_by = #{propertyReviewBy},
|
||||
property_review_time = #{propertyReviewTime},
|
||||
<choose>
|
||||
<when test='propertyReviewStatus == "1"'>
|
||||
project_status = '3',
|
||||
implementation_status = '4',
|
||||
</when>
|
||||
<otherwise>
|
||||
project_status = '2',
|
||||
implementation_status = '2',
|
||||
</otherwise>
|
||||
</choose>
|
||||
update_time = now()
|
||||
</set>
|
||||
where project_id = #{projectId}
|
||||
</update>
|
||||
|
||||
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -35,6 +35,7 @@ import com.ruoyi.system.api.domain.SysDept;
|
|||
import com.ruoyi.system.api.domain.SysRole;
|
||||
import com.ruoyi.system.api.domain.SysUser;
|
||||
import com.ruoyi.system.api.model.LoginUser;
|
||||
import com.ruoyi.system.mapper.SysIssuerProjectMapper;
|
||||
import com.ruoyi.system.service.ISysConfigService;
|
||||
import com.ruoyi.system.service.ISysDeptService;
|
||||
import com.ruoyi.system.service.ISysPermissionService;
|
||||
|
|
@ -76,6 +77,9 @@ public class SysUserController extends BaseController
|
|||
@Autowired
|
||||
private TokenService tokenService;
|
||||
|
||||
@Autowired(required = false)
|
||||
private SysIssuerProjectMapper issuerProjectMapper;
|
||||
|
||||
/**
|
||||
* 获取用户列表
|
||||
*/
|
||||
|
|
@ -131,6 +135,15 @@ public class SysUserController extends BaseController
|
|||
return R.fail("用户名或密码错误");
|
||||
}
|
||||
// 角色集合
|
||||
if (issuerProjectMapper != null)
|
||||
{
|
||||
// 回填签发人管理项目范围
|
||||
sysUser.setIssuerProjectScope(issuerProjectMapper.selectIssuerProjectScopeByUserId(sysUser.getUserId()));
|
||||
}
|
||||
if (issuerProjectMapper != null)
|
||||
{
|
||||
sysUser.setIssuerProjectScope(issuerProjectMapper.selectIssuerProjectScopeByUserId(sysUser.getUserId()));
|
||||
}
|
||||
Set<String> roles = permissionService.getRolePermission(sysUser);
|
||||
// 权限集合
|
||||
Set<String> permissions = permissionService.getMenuPermission(sysUser);
|
||||
|
|
@ -181,7 +194,16 @@ public class SysUserController extends BaseController
|
|||
{
|
||||
LoginUser loginUser = SecurityUtils.getLoginUser();
|
||||
SysUser user = loginUser.getSysUser();
|
||||
if (issuerProjectMapper != null)
|
||||
{
|
||||
// 回填签发人管理项目范围
|
||||
user.setIssuerProjectScope(issuerProjectMapper.selectIssuerProjectScopeByUserId(user.getUserId()));
|
||||
}
|
||||
// 角色集合
|
||||
if (issuerProjectMapper != null)
|
||||
{
|
||||
user.setIssuerProjectScope(issuerProjectMapper.selectIssuerProjectScopeByUserId(user.getUserId()));
|
||||
}
|
||||
Set<String> roles = permissionService.getRolePermission(user);
|
||||
// 权限集合
|
||||
Set<String> permissions = permissionService.getMenuPermission(user);
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
package com.ruoyi.system.mapper;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
/**
|
||||
* 签发人管理项目范围查询
|
||||
*/
|
||||
public interface SysIssuerProjectMapper
|
||||
{
|
||||
/**
|
||||
* 根据用户ID查询签发人管理项目范围(逗号分隔项目名)
|
||||
*
|
||||
* @param userId 用户ID
|
||||
* @return 项目范围
|
||||
*/
|
||||
String selectIssuerProjectScopeByUserId(@Param("userId") Long userId);
|
||||
}
|
||||
|
|
@ -26,6 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
<result property="auditOpinion" column="audit_opinion" />
|
||||
<result property="auditBy" column="audit_by" />
|
||||
<result property="auditTime" column="audit_time" />
|
||||
<result property="projectCount" column="project_count" />
|
||||
<result property="createBy" column="create_by" />
|
||||
<result property="createTime" column="create_time" />
|
||||
<result property="updateBy" column="update_by" />
|
||||
|
|
@ -33,10 +34,23 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
</resultMap>
|
||||
|
||||
<sql id="selectDeptVo">
|
||||
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.dept_type, d.region_id, d.credit_code, d.address, d.qual_file_url, d.remark, d.del_flag, d.audit_status, d.audit_opinion, d.audit_by, d.audit_time, d.create_by, d.create_time, d.update_by, d.update_time,
|
||||
select d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.phone, d.email, d.status, d.dept_type, d.region_id, d.credit_code, d.address, d.qual_file_url, d.remark, d.del_flag, d.audit_status, d.audit_opinion, d.audit_by, d.audit_time, ifnull(pc.project_count, 0) as project_count, d.create_by, d.create_time, d.update_by, d.update_time,
|
||||
p.dept_name as parent_name
|
||||
from sys_dept d
|
||||
left join sys_dept p on d.parent_id = p.dept_id
|
||||
left join (
|
||||
select t.dept_id, count(distinct t.project_id) as project_count
|
||||
from (
|
||||
select wp.construction_unit_id as dept_id, wp.project_id
|
||||
from work_plan wp
|
||||
where wp.del_flag = '0' and wp.construction_unit_id is not null
|
||||
union all
|
||||
select wp.supervision_unit_id as dept_id, wp.project_id
|
||||
from work_plan wp
|
||||
where wp.del_flag = '0' and wp.supervision_unit_id is not null
|
||||
) t
|
||||
group by t.dept_id
|
||||
) pc on pc.dept_id = d.dept_id
|
||||
</sql>
|
||||
|
||||
<select id="selectDeptList" parameterType="com.ruoyi.system.api.domain.SysDept" resultMap="SysDeptResult">
|
||||
|
|
@ -201,9 +215,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||
#{deptId}
|
||||
</foreach>
|
||||
</update>
|
||||
|
||||
|
||||
<delete id="deleteDeptById" parameterType="Long">
|
||||
delete from sys_dept where dept_id = #{deptId}
|
||||
</delete>
|
||||
|
||||
</mapper>
|
||||
</mapper>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
<?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.system.mapper.SysIssuerProjectMapper">
|
||||
|
||||
<select id="selectIssuerProjectScopeByUserId" resultType="java.lang.String">
|
||||
select group_concat(wp.project_name order by wp.project_id separator ',')
|
||||
from owner_issuer o
|
||||
left join owner_issuer_project oip on oip.issuer_id = o.id
|
||||
left join work_plan wp on wp.project_id = oip.project_id and wp.del_flag = '0'
|
||||
where o.user_id = #{userId}
|
||||
and (o.del_flag = '0' or o.del_flag is null)
|
||||
</select>
|
||||
|
||||
</mapper>
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
-- 业主端-准入事件审计:新增附件URL字段(逗号分隔)
|
||||
ALTER TABLE owner_access_audit_event
|
||||
ADD COLUMN attachment_urls VARCHAR(2000) NULL COMMENT '附件URL(多个用逗号分隔)' AFTER page_notes;
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
-- 为 work_plan 增加物业完工复核字段
|
||||
ALTER TABLE `work_plan`
|
||||
ADD COLUMN `property_review_status` varchar(1) DEFAULT NULL COMMENT '物业完工复核状态:1-通过,2-驳回' AFTER `completion_review_remark`,
|
||||
ADD COLUMN `property_work_content_completion` varchar(1) DEFAULT NULL COMMENT '作业内容完成度:1-100%完成,2-部分完成,3-未完成' AFTER `property_review_status`,
|
||||
ADD COLUMN `property_site_cleaning_condition` varchar(1) DEFAULT NULL COMMENT '现场清理情况:1-符合要求,0-不符合' AFTER `property_work_content_completion`,
|
||||
ADD COLUMN `property_review_photos` text COMMENT '物业完工复核现场照片URL,多个逗号分隔' AFTER `property_site_cleaning_condition`,
|
||||
ADD COLUMN `property_review_comment` varchar(1000) DEFAULT NULL COMMENT '物业完工复核意见' AFTER `property_review_photos`,
|
||||
ADD COLUMN `property_review_by` varchar(64) DEFAULT NULL COMMENT '物业完工复核人' AFTER `property_review_comment`,
|
||||
ADD COLUMN `property_review_time` varchar(30) DEFAULT NULL COMMENT '物业完工复核时间' AFTER `property_review_by`;
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
-- 工作票审批审核要点确认字段
|
||||
|
||||
ALTER TABLE `work_ticket`
|
||||
ADD COLUMN `review_necessity` char(1) DEFAULT NULL COMMENT '审核要点确认-施工作业必要性:0 不必要 1 必要' AFTER `review_comment`,
|
||||
ADD COLUMN `review_feasibility` char(1) DEFAULT NULL COMMENT '审核要点确认-施工作业可行性:0 不可行 1 可行' AFTER `review_necessity`,
|
||||
ADD COLUMN `review_completeness` varchar(500) DEFAULT NULL COMMENT '审核要点确认-票证内容完整性(JSON 数组:基础信息完整、风险描述清晰、安全措施完备、附件齐全)' AFTER `review_feasibility`,
|
||||
ADD COLUMN `review_condition` char(1) DEFAULT NULL COMMENT '审核要点确认-施工条件确认:0 不符合 1 符合' AFTER `review_completeness`;
|
||||
|
||||
ALTER TABLE `work_ticket_hazardous`
|
||||
ADD COLUMN `review_necessity` char(1) DEFAULT NULL COMMENT '审核要点确认-施工作业必要性:0 不必要 1 必要' AFTER `review_comment`,
|
||||
ADD COLUMN `review_feasibility` char(1) DEFAULT NULL COMMENT '审核要点确认-施工作业可行性:0 不可行 1 可行' AFTER `review_necessity`,
|
||||
ADD COLUMN `review_completeness` varchar(500) DEFAULT NULL COMMENT '审核要点确认-票证内容完整性(JSON 数组:基础信息完整、风险描述清晰、安全措施完备、附件齐全)' AFTER `review_feasibility`,
|
||||
ADD COLUMN `review_condition` char(1) DEFAULT NULL COMMENT '审核要点确认-施工条件确认:0 不符合 1 符合' AFTER `review_completeness`;
|
||||
Loading…
Reference in New Issue